Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
V
vest
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rank
vest
Commits
e3560c64
Commit
e3560c64
authored
Mar 27, 2020
by
lixiaofang
Browse files
Options
Browse Files
Download
Plain Diff
add
parents
237e8e1c
90ff242b
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
9915 additions
and
5284 deletions
+9915
-5284
auto_click.py
click/views/auto_click.py
+0
-1
click_fun.py
click/views/click_fun.py
+48
-31
auto_comment.py
comment/views/auto_comment.py
+2
-4
comment_fun.py
comment/views/comment_fun.py
+51
-47
auto_follow.py
follow/views/auto_follow.py
+0
-1
follow_fun.py
follow/views/follow_fun.py
+51
-30
bak_vest_ids.txt
moment/views/bak_vest_ids.txt
+5001
-0
consum.py
moment/views/consum.py
+36
-65
irrigation.py
moment/views/irrigation.py
+16
-14
process_time.py
moment/views/process_time.py
+215
-90
save_group_comment.py
moment/views/save_group_comment.py
+0
-0
vest_ids.txt
moment/views/vest_ids.txt
+4495
-5001
__init__.cpython-36.pyc
...s/management/commands/__pycache__/__init__.cpython-36.pyc
+0
-0
trans2es_data2es_redis.cpython-36.pyc
...ommands/__pycache__/trans2es_data2es_redis.cpython-36.pyc
+0
-0
No files found.
click/views/auto_click.py
View file @
e3560c64
...
...
@@ -90,7 +90,6 @@ def auto_click_user(card_info, after_day=False):
card_info
[
"have_pust_num"
]
=
card_info
[
"have_pust_num"
]
+
1
save_data_to_kafka
(
card_info
)
# 存储数据
logging
.
info
(
"get--------click--------------card_info:
%
s"
%
card_info
)
except
:
logging_exception
()
...
...
click/views/click_fun.py
View file @
e3560c64
...
...
@@ -3,54 +3,71 @@ import traceback
from
libs.error
import
logging_exception
import
logging
from
libs.cache
import
redis_client
import
json
import
json
,
time
from
moment.views.send_email
import
send_email_tome
from
moment.views.process_time
import
get_vest_userid
import
datetime
def
click
(
card_info
):
try
:
key
=
'have_reply_answer_click:'
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
get
(
key
)
if
redis_data
:
datas
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf-8"
))
if
card_info
[
'current_user_id'
]
in
datas
:
return
False
else
:
datas
.
append
(
card_info
[
'current_user_id'
])
redis_client
.
set
(
key
,
json
.
dumps
(
datas
))
else
:
conent
=
[
card_info
[
'current_user_id'
]]
redis_client
.
set
(
key
,
json
.
dumps
(
conent
))
today
=
datetime
.
datetime
.
now
()
str_today
=
str
(
today
.
year
)
+
str
(
today
.
month
)
+
str
(
today
.
day
)
key
=
"auto_vest_
one_user_action
_answer:"
+
str
(
card_info
[
'card_id'
])
key
=
"auto_vest_
action_click
_answer:"
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
hget
(
key
,
str_today
)
if
redis_data
:
redis_data
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf8"
))
click_num
=
int
(
redis_data
.
get
(
"click"
))
+
1
redis_data
[
'click'
]
=
click_num
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
have_pust_num
=
int
(
redis_data
.
get
(
'click_have_pust_num'
,
card_info
[
'have_pust_num'
]))
need_pust_num
=
int
(
redis_data
.
get
(
'click_need_pust_num'
,
card_info
[
'need_pust_num'
]))
if
have_pust_num
>
need_pust_num
:
return
True
else
:
redis_data
[
'click_have_pust_num'
]
=
have_pust_num
+
1
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
else
:
##代表还没有存储或者是已经过去一天了 需要清掉数据 从新的一天开始
redis_client
.
delete
(
key
)
redis_data
=
{
"click"
:
1
,
"follow"
:
0
,
"comment"
:
0
}
redis_data
=
{
"click_have_pust_num"
:
card_info
[
'have_pust_num'
],
"click_need_pust_num"
:
card_info
[
'need_pust_num'
]}
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
logging
.
info
(
"get action:click,card_id:
%
s,redis_data:
%
s"
%
(
card_info
[
'card_id'
],
redis_data
))
click_num
=
redis_data
[
"click"
]
rpc_invoker
=
get_rpc_invoker
()
try
:
begin
=
time
.
time
()
current_user_id
=
get_vest_userid
(
need_comment_num
=
1
)[
0
]
status
=
rpc_invoker
[
'qa/irrigation/create_answer_vote'
](
user_id
=
current_user_id
,
answer_id
=
card_info
[
'card_id'
])
.
unwrap
()
logging
.
info
(
'get_create_answer_vote_status:
%
s,card_id:
%
s,create_time:
%
s,耗时:
%
s'
%
(
status
,
card_info
[
'card_id'
],
card_info
[
'create_time'
],
time
.
time
()
-
begin
))
error
=
status
.
get
(
'error'
,
1
)
if
error
==
0
:
return
True
else
:
send_email_tome
(
str
(
card_info
)
+
str
(
status
))
return
False
except
:
logging_exception
()
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
if
click_num
>
12
:
logging
.
info
(
"今天已经消费到最大次数了,不能再消费"
)
return
True
,
False
else
:
rpc_invoker
=
get_rpc_invoker
()
try
:
status
=
rpc_invoker
[
'qa/irrigation/create_answer_vote'
](
user_id
=
card_info
[
'current_user_id'
],
answer_id
=
card_info
[
'card_id'
])
.
unwrap
()
logging
.
info
(
"get_card_info:
%
s,create_answer_vote:
%
s"
%
(
card_info
,
status
))
error
=
status
.
get
(
'error'
,
1
)
if
error
==
0
:
return
True
,
True
else
:
send_email_tome
(
str
(
card_info
)
+
str
(
status
))
return
False
,
True
except
:
logging_exception
()
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
,
True
except
:
logging_exception
()
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
,
False
return
False
comment/views/auto_comment.py
View file @
e3560c64
...
...
@@ -50,6 +50,7 @@ def auto_comment_user(card_info, after_day=False):
content_level
=
card_info
[
"content_level"
]
card_info
[
"action_type"
]
=
"comment"
tag_names
=
card_info
[
'tag_names'
]
tagv3_names
=
card_info
[
'tagv3_names'
]
# 当满足这些条件的时候 代表已经完成了下发的所有的时间或者还没有下发过时间 需要给予新的时间
if
(
"all_follow_id"
in
card_info
and
"all_push_time"
in
card_info
and
len
(
...
...
@@ -71,8 +72,7 @@ def auto_comment_user(card_info, after_day=False):
if
len
(
get_time
)
>
0
and
time_region
!=
3
:
###拿到下发时间后根据下发的时间个数去拿对应个数的马甲账号
all_content
=
get_vest_userid_and_comment
(
need_comment_num
=
len
(
get_time
),
tag_names
=
tag_names
,
card_id
=
card_info
[
'card_id'
])
tag_names
=
tag_names
,
tagv3_names
=
tagv3_names
)
userids
=
get_vest_userid
(
need_comment_num
=
len
(
get_time
))
for
i
in
range
(
0
,
len
(
userids
)):
...
...
@@ -93,7 +93,6 @@ def auto_comment_user(card_info, after_day=False):
break
repeat_time
+=
1
logging
.
info
(
"get comment_have_get_after__time:
%
s"
%
card_info
)
else
:
# 代表还有push好的时间没有下发完成 需要继续使用这些
current_user_id
=
card_info
[
"current_user_id"
]
card_info
[
"all_follow_id"
]
.
remove
(
current_user_id
)
...
...
@@ -114,7 +113,6 @@ def auto_comment_user(card_info, after_day=False):
card_info
[
'current_push_time'
]
=
card_info
[
'all_push_time'
][
0
]
save_data_to_kafka
(
card_info
)
# 存储数据
logging
.
info
(
"get-------comment---------------card_info:
%
s"
%
card_info
)
except
:
logging_exception
()
...
...
comment/views/comment_fun.py
View file @
e3560c64
...
...
@@ -3,10 +3,10 @@ import traceback
from
libs.error
import
logging_exception
import
logging
from
libs.cache
import
redis_client
import
json
import
json
,
time
from
moment.views.send_email
import
send_email_tome
import
datetime
from
moment.views.process_time
import
get_vest_userid_and_comment
from
moment.views.process_time
import
get_vest_userid_and_comment
,
get_vest_userid
def
comment
(
card_info
):
...
...
@@ -33,7 +33,6 @@ def comment(card_info):
redis_data
=
{
"comment"
:
1
}
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
logging
.
info
(
"get action:comment,card_id:
%
s,redis_data:
%
s"
%
(
card_info
[
'card_id'
],
redis_data
))
comment_num
=
redis_data
[
"comment"
]
if
comment_num
>
12
:
...
...
@@ -45,7 +44,6 @@ def comment(card_info):
answer_id
=
card_info
[
'card_id'
],
content
=
card_info
[
'comment_content'
])
.
unwrap
()
logging
.
info
(
"get_card_info:
%
s,have_answer_reply:
%
s"
%
(
card_info
,
status
))
error
=
status
.
get
(
'error'
,
1
)
if
error
==
0
and
comment_num
<=
11
:
return
True
,
True
...
...
@@ -74,7 +72,6 @@ def comment(card_info):
redis_data
=
{
"comment"
:
1
}
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
logging
.
info
(
"get action:comment,card_id:
%
s,redis_data:
%
s"
%
(
card_info
[
'card_id'
],
redis_data
))
comment_num
=
redis_data
[
"comment"
]
if
comment_num
>
12
:
...
...
@@ -86,7 +83,6 @@ def comment(card_info):
answer_id
=
card_info
[
'card_id'
],
content
=
card_info
[
'comment_content'
])
.
unwrap
()
logging
.
info
(
"get_card_info:
%
s,have_answer_reply:
%
s"
%
(
card_info
,
status
))
error
=
status
.
get
(
'error'
,
1
)
if
error
==
0
:
return
True
...
...
@@ -98,27 +94,11 @@ def comment(card_info):
return
False
else
:
today
=
datetime
.
datetime
.
now
()
str_today
=
str
(
today
.
year
)
+
str
(
today
.
month
)
+
str
(
today
.
day
)
key
=
"auto_vest_one_user_action_answer:"
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
hget
(
key
,
str_today
)
if
redis_data
:
redis_data
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf8"
))
click_num
=
int
(
redis_data
.
get
(
"comment"
))
+
1
redis_data
[
'comment'
]
=
click_num
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
else
:
redis_client
.
delete
(
key
)
redis_data
=
{
"click"
:
0
,
"follow"
:
0
,
"comment"
:
1
}
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
logging
.
info
(
"get action:comment,card_id:
%
s,redis_data:
%
s"
%
(
card_info
[
'card_id'
],
redis_data
))
comment_num
=
redis_data
[
"comment"
]
###判断一下如果评论为空就重新拿一个
if
not
card_info
[
'comment_content'
]:
comment
=
get_vest_userid_and_comment
(
need_comment_num
=
1
,
tag_names
=
card_info
[
'tag_names'
])[
0
]
comment
=
get_vest_userid_and_comment
(
need_comment_num
=
1
,
tag_names
=
card_info
[
'tag_names'
],
tagv3_names
=
card_info
[
'tagv3_names'
])[
0
]
card_info
[
'comment_content'
]
=
comment
##在这里加一个判断 如果当前的评论的user_id和评论内容已经在这个评论下了就不再下发给同一个回答ID
...
...
@@ -126,10 +106,9 @@ def comment(card_info):
key
=
'have_reply_answer_comment:'
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
hget
(
key
,
card_info
[
'current_user_id'
])
if
redis_data
:
datas
=
json
.
loads
(
redis_data
,
encoding
=
"utf-8"
)
datas
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf-8"
)
)
if
card_info
[
'comment_content'
]
in
datas
:
logging
.
info
(
"当前评论和当前的用户已经存在了"
)
pass
return
False
else
:
datas
.
append
(
card_info
[
'comment_content'
])
redis_client
.
hset
(
key
,
card_info
[
'current_user_id'
],
json
.
dumps
(
datas
))
...
...
@@ -137,28 +116,53 @@ def comment(card_info):
conent
=
[
card_info
[
'comment_content'
]]
redis_client
.
hset
(
key
,
card_info
[
'current_user_id'
],
json
.
dumps
(
conent
))
if
comment_num
>
12
:
logging
.
info
(
"今天已经消费到最大次数了,不能再消费"
)
return
True
,
False
###当天下发的次数存起来,每次下发判断已经下发了多少个 如果当前下发相等不再下发
today
=
datetime
.
datetime
.
now
()
str_today
=
str
(
today
.
year
)
+
str
(
today
.
month
)
+
str
(
today
.
day
)
key
=
"auto_vest_action_comment_answer:"
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
hget
(
key
,
str_today
)
if
redis_data
:
redis_data
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf8"
))
have_pust_num
=
int
(
redis_data
.
get
(
'comment_have_pust_num'
,
card_info
[
'have_pust_num'
]))
need_pust_num
=
int
(
redis_data
.
get
(
'comment_need_pust_num'
,
card_info
[
'need_pust_num'
]))
if
have_pust_num
>
need_pust_num
:
return
True
else
:
redis_data
[
'comment_have_pust_num'
]
=
have_pust_num
+
1
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
else
:
rpc_invoker
=
get_rpc_invoker
()
try
:
status
=
rpc_invoker
[
'qa/irrigation/create_answer_reply'
](
user_id
=
card_info
[
'current_user_id'
],
answer_id
=
card_info
[
'card_id'
],
content
=
card_info
[
'comment_content'
])
.
unwrap
()
logging
.
info
(
"get_card_info:
%
s,have_answer_reply:
%
s"
%
(
card_info
,
status
))
error
=
status
.
get
(
'error'
,
1
)
if
error
==
0
:
return
True
,
True
else
:
send_email_tome
(
str
(
card_info
)
+
str
(
status
))
return
False
,
True
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
,
True
redis_data
=
{
"comment_have_pust_num"
:
card_info
[
'have_pust_num'
],
"comment_need_pust_num"
:
card_info
[
'need_pust_num'
]}
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
rpc_invoker
=
get_rpc_invoker
()
try
:
begin
=
time
.
time
()
current_user_id
=
get_vest_userid
(
need_comment_num
=
1
)[
0
]
status
=
rpc_invoker
[
'qa/irrigation/create_answer_reply'
](
user_id
=
current_user_id
,
answer_id
=
card_info
[
'card_id'
],
content
=
card_info
[
'comment_content'
])
.
unwrap
()
logging
.
info
(
'get_create_answer_reply_status:
%
s,card_id:
%
s,create_time:
%
s,耗时:
%
s'
%
(
status
,
card_info
[
'card_id'
],
card_info
[
'create_time'
],
time
.
time
()
-
begin
))
error
=
status
.
get
(
'error'
,
1
)
if
error
==
0
:
return
True
else
:
send_email_tome
(
str
(
card_info
)
+
str
(
status
))
return
False
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
except
:
logging_exception
()
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
,
False
return
False
follow/views/auto_follow.py
View file @
e3560c64
...
...
@@ -93,7 +93,6 @@ def auto_follow_user(card_info, after_day=False):
card_info
[
'current_push_time'
]
=
card_info
[
'all_push_time'
][
0
]
save_data_to_kafka
(
card_info
)
# 存储数据
logging
.
info
(
"get-------follow---------------card_info:
%
s"
%
card_info
)
except
:
logging_exception
()
...
...
follow/views/follow_fun.py
View file @
e3560c64
...
...
@@ -3,52 +3,73 @@ import traceback
from
libs.error
import
logging_exception
import
logging
from
libs.cache
import
redis_client
import
json
import
json
,
time
from
moment.views.send_email
import
send_email_tome
from
moment.views.process_time
import
get_vest_userid
import
datetime
def
follow
(
card_info
):
try
:
key
=
'have_reply_answer_follow:'
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
get
(
key
)
if
redis_data
:
datas
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf-8"
))
if
card_info
[
'current_user_id'
]
in
datas
:
return
False
else
:
datas
.
append
(
card_info
[
'current_user_id'
])
redis_client
.
set
(
key
,
json
.
dumps
(
datas
))
else
:
conent
=
[
card_info
[
'current_user_id'
]]
redis_client
.
set
(
key
,
json
.
dumps
(
conent
))
today
=
datetime
.
datetime
.
now
()
str_today
=
str
(
today
.
year
)
+
str
(
today
.
month
)
+
str
(
today
.
day
)
key
=
"auto_vest_
one_user_action
_answer:"
+
str
(
card_info
[
'card_id'
])
key
=
"auto_vest_
action_follow
_answer:"
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
hget
(
key
,
str_today
)
if
redis_data
:
redis_data
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf8"
))
click_num
=
int
(
redis_data
.
get
(
"follow"
))
+
1
redis_data
[
'follow'
]
=
click_num
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
have_pust_num
=
int
(
redis_data
.
get
(
'follow_have_pust_num'
,
card_info
[
'have_pust_num'
]))
need_pust_num
=
int
(
redis_data
.
get
(
'follow_need_pust_num'
,
card_info
[
'need_pust_num'
]))
if
have_pust_num
>
need_pust_num
:
return
True
else
:
redis_data
[
'follow_have_pust_num'
]
=
have_pust_num
+
1
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
else
:
redis_client
.
delete
(
key
)
redis_data
=
{
"click"
:
0
,
"follow"
:
1
,
"comment"
:
0
}
redis_data
=
{
"follow_have_pust_num"
:
card_info
[
'have_pust_num'
],
"follow_need_pust_num"
:
card_info
[
'need_pust_num'
]}
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
logging
.
info
(
"get action:follow,card_id:
%
s,redis_data:
%
s"
%
(
card_info
[
'card_id'
],
redis_data
))
follow_num
=
redis_data
[
"follow"
]
rpc_invoker
=
get_rpc_invoker
()
try
:
begin
=
time
.
time
()
current_user_id
=
get_vest_userid
(
need_comment_num
=
1
)[
0
]
status
=
rpc_invoker
[
'api/irrigation/user_add_follow'
](
follow_user_id
=
current_user_id
,
followed_user_id
=
card_info
[
'card_user_id'
])
.
unwrap
()
logging
.
info
(
'get_user_add_follow_status:
%
s,card_id:
%
s,create_time:
%
s,耗时:
%
s'
%
(
status
,
card_info
[
'card_id'
],
card_info
[
'create_time'
],
time
.
time
()
-
begin
))
if
follow_num
>
11
:
logging
.
info
(
"今天已经消费到最大次数了,不能再消费"
)
return
True
,
False
error
=
status
.
get
(
'error'
,
1
)
if
error
==
0
:
return
True
else
:
send_email_tome
(
str
(
card_info
)
+
str
(
status
))
return
False
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
else
:
rpc_invoker
=
get_rpc_invoker
()
try
:
status
=
rpc_invoker
[
'api/irrigation/user_add_follow'
](
follow_user_id
=
card_info
[
'current_user_id'
],
followed_user_id
=
card_info
[
'card_user_id'
])
.
unwrap
()
logging
.
info
(
"get_card_info:
%
s,user_add_follow:
%
s"
%
(
card_info
,
status
))
error
=
status
.
get
(
'error'
,
1
)
if
error
==
0
:
return
True
,
True
else
:
send_email_tome
(
str
(
card_info
)
+
str
(
status
))
return
False
,
True
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
,
True
except
:
logging_exception
()
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
,
False
return
False
moment/views/bak_vest_ids.txt
0 → 100644
View file @
e3560c64
Changes suppressed. Click to show.
32333819
32333811
32283128
32283127
32283126
32283125
32283124
32283123
32283122
32283121
32283120
32283119
32283118
32283117
32283116
32283115
32283114
32283113
32283112
32283111
32283110
32283109
32283108
32283107
32283106
32283105
32283104
32283103
32283102
32283101
32283100
32283099
32283098
32283097
32283096
32283095
32283094
32283093
32283092
32283091
32283090
32283089
32283088
32283087
32283086
32283085
32283084
32283083
32283082
32283081
32283080
32283079
32283078
32283077
32283076
32283075
32283074
32283073
32283072
32283071
32283070
32283069
32283068
32283067
32283066
32283065
32283064
32283063
32283062
32283061
32283060
32283059
32283058
32283057
32283056
32283055
32283054
32283053
32283052
32283051
32283050
32283049
32283048
32283047
32283046
32283045
32283044
32283043
32283042
32283041
32283040
32283039
32283038
32283037
32283036
32283035
32283034
32283033
32283032
32283031
32283030
32283029
32283028
32283027
32283026
32283025
32283024
32283023
32283022
32283021
32283020
32283019
32283018
32283017
32283016
32283015
32283014
32283013
32283012
32283011
32283010
32283009
32283008
32283007
32283006
32283005
32283004
32283003
32283002
32283001
32283000
32282999
32282998
32282997
32282996
32282995
32282994
32282993
32282992
32282991
32282990
32282989
32282988
32282987
32282986
32282985
32282984
32282983
32282982
32282981
32282980
32282979
32282978
32282977
32282976
32282975
32282974
32282973
32282972
32282971
32282970
32282969
32282968
32282967
32282966
32282965
32282964
32282963
32282962
32282961
32282960
32282959
32282958
32282957
32282956
32282955
32282954
32282953
32282952
32282951
32282950
32282949
32282948
32282947
32282946
32282945
32282944
32282943
32282942
32282941
32282940
32282939
32282938
32282937
32282936
32282935
32282934
32282933
32282932
32282931
32282930
32282929
32282928
32282927
32282926
32282925
32282924
32282923
32282922
32282921
32282920
32282919
32282918
32282917
32282916
32282915
32282914
32282913
32282912
32282911
32282910
32282909
32282908
32282907
32282906
32282905
32282904
32282903
32282902
32282901
32282900
32282899
32282898
32282897
32282896
32282895
32282894
32282893
32282892
32282891
32282890
32282889
32282888
32282887
32282886
32282885
32282884
32282883
32282882
32282881
32282880
32282879
32282878
32282877
32282876
32282875
32282874
32282873
32282872
32282871
32282870
32282869
32282868
32282867
32282866
32282865
32282864
32282863
32282862
32282861
32282860
32282859
32282858
32282857
32282856
32282855
32282854
32282853
32282852
32282851
32282850
32282849
32282848
32282847
32282846
32282845
32282844
32282843
32282842
32282841
32282840
32282839
32282838
32282837
32282836
32282835
32282834
32282833
32282832
32282831
32282830
32282829
32282828
32282827
32282824
32282823
32282822
32282821
32282820
32282819
32282818
32282817
32282816
32282815
32282814
32282813
32282812
32282811
32282810
32282809
32282808
32282807
32282806
32282805
32282804
32282803
32282802
32282801
32282800
32282799
32282798
32282797
32282796
32282795
32282794
32282793
32282792
32282791
32282790
32282789
32282788
32282787
32282786
32282785
32282783
32282782
32282781
32282780
32282779
32282778
32282777
32282776
32282775
32282774
32282773
32282772
32282771
32282770
32282769
32282768
32282767
32282765
32282764
32282763
32282762
32282761
32282760
32282759
32282758
32282757
32282756
32282755
32282754
32282753
32282752
32282751
32282750
32282749
32282748
32282747
32282746
32282745
32282744
32282743
32282742
32282740
32282739
32282738
32282737
32282736
32282735
32282734
32282733
32282732
32282731
32282730
32282729
32282728
32282727
32282726
32282725
32282724
32282723
32282722
32282721
32282720
32282719
32282718
32282717
32282716
32282715
32282714
32282713
32282712
32282711
32282710
32282709
32282708
32282707
32282706
32282705
32282704
32282703
32282702
32282701
32282700
32282699
32282698
32282697
32282696
32282695
32282694
32282693
32282692
32282691
32282690
32282689
32282688
32282687
32282686
32282685
32282684
32282683
32282682
32282681
32282680
32282679
32282678
32282677
32282676
32282675
32282674
32282673
32282672
32282671
32282670
32282669
32282668
32282667
32282666
32282665
32282664
32282663
32282662
32282661
32282660
32282659
32282658
32282657
32282656
32282655
32282654
32282653
32282652
32282651
32282650
32282649
32282648
32282647
32282646
32282645
32282644
32282643
32282642
32282641
32282640
32282639
32282638
32282637
32282636
32282635
32282634
32282633
32282632
32282631
32282630
32282629
32282628
32282626
32282625
32282624
32282623
32282622
32282621
32282620
32282619
32282618
32282617
32282616
32282615
32282614
32282613
32282612
32282611
32282610
32282609
32282608
32282607
32282606
32282605
32282604
32282603
32282602
32282601
32282600
32282599
32282598
32282597
32282596
32282595
32282594
32282593
32282592
32282591
32282590
32282589
32282588
32282587
32282586
32282585
32282584
32282583
32282582
32282581
32282580
32282579
32282578
32282577
32282576
32282575
32282574
32282573
32282572
32282571
32282570
32282569
32282568
32282567
32282566
32282565
32282564
32282563
32282562
32282561
32282560
32282559
32282558
32282557
32282556
32282555
32282554
32282552
32282551
32282550
32282549
32282547
32282546
32282545
32282544
32282543
32282542
32282541
32282540
32282539
32282538
32282537
32282536
32282535
32282534
32282533
32282532
32282531
32282530
32282529
32282528
32282527
32282526
32282525
32282524
32282523
32282522
32282521
32282520
32282519
32282518
32282517
32282516
32282515
32282514
32282513
32282512
32282511
32282510
32282509
32282508
32282507
32282506
32282505
32282504
32282503
32282502
32282501
32282499
32282498
32282497
32282496
32282495
32282494
32282493
32282492
32282491
32282490
32282489
32282488
32282487
32282485
32282484
32282483
32282482
32282481
32282480
32282479
32282478
32282476
32282475
32282474
32282473
32282472
32282471
32282470
32282469
32282468
32282467
32282466
32282465
32282464
32282463
32282462
32282461
32282460
32282459
32282458
32282457
32282456
32282455
32282454
32282453
32282452
32282451
32282450
32282449
32282448
32282447
32282446
32282445
32282444
32282443
32282442
32282441
32282440
32282439
32282438
32282437
32282436
32282435
32282434
32282433
32282432
32282431
32282430
32282429
32282428
32282427
32282426
32282425
32282424
32282423
32282422
32282421
32282420
32282419
32282418
32282417
32282416
32282415
32282414
32282413
32282412
32282411
32282410
32282409
32282408
32282407
32282406
32282405
32282404
32282403
32282402
32282401
32282400
32282399
32282398
32282397
32282396
32282395
32282394
32282393
32282392
32282391
32282390
32282389
32282388
32282387
32282386
32282385
32282384
32282383
32282382
32282381
32282380
32282379
32282378
32282377
32282376
32282375
32282374
32282373
32282372
32282371
32282370
32282369
32282367
32282366
32282365
32282364
32282363
32282362
32282361
32282360
32282359
32282358
32282357
32282356
32282355
32282354
32282353
32282352
32282351
32282350
32282349
32282348
32282347
32282346
32282345
32282344
32282343
32282342
32282341
32282340
32282339
32282338
32282337
32282336
32282335
32282334
32282333
32282332
32282331
32282330
32282329
32282328
32282327
32282326
32282325
32282324
32282323
32282322
32282321
32282320
32282319
32282318
32282317
32282316
32282315
32282314
32282313
32282312
32282311
32282310
32282309
32282308
32282307
32282306
32282305
32282304
32282303
32282302
32282301
32282300
32282299
32282298
32282297
32282296
32282295
32282294
32282293
32282292
32282291
32282290
32282289
32282288
32282287
32282286
32282285
32282284
32282283
32282282
32282281
32282280
32282279
32282278
32282277
32282276
32282275
32282274
32282273
32282272
32282271
32282270
32282269
32282268
32282267
32282266
32282265
32282264
32282263
32282262
32282261
32282260
32282259
32282258
32282256
32282255
32282254
32282253
32282252
32282251
32282250
32282249
32282248
32282247
32282246
32282245
32282244
32282243
32282242
32282241
32282240
32282239
32282238
32282237
32282236
32282235
32282234
32282233
32282232
32282231
32282230
32282229
32282228
32282227
32282226
32282225
32282224
32282223
32282222
32282221
32282220
32282219
32282218
32282217
32282216
32282215
32282214
32282213
32282212
32282211
32282210
32282209
32282208
32282207
32282206
32282205
32282204
32282203
32282202
32282201
32282200
32282199
32282198
32282197
32282196
32282195
32282194
32282193
32282192
32282191
32282190
32282189
32282188
32282187
32282186
32282185
32282184
32282183
32282182
32282181
32282180
32282179
32282178
32282177
32282176
32282175
32282174
32282173
32282172
32282171
32282170
32282169
32282168
32282167
32282166
32282165
32282164
32282163
32282162
32282161
32282160
32282159
32282158
32282157
32282156
32282155
32282154
32282153
32282152
32282151
32282150
32282149
32282148
32282147
32282146
32282145
32282144
32282143
32282142
32282141
32282140
32282139
32282138
32282137
32282136
32282135
32282134
32282133
32282132
32282131
32282130
32282129
32282128
32282127
32282126
32282125
32282124
32282123
32282122
32282121
32282120
32282119
32282118
32282117
32282116
32282115
32282114
32282113
32282112
32282111
32282110
32282109
32282108
32282107
32282106
32282104
32282103
32282102
32282101
32282100
32282098
32282097
32282096
32282095
32282094
32282093
32282092
32282091
32282090
32282089
32282088
32282087
32282086
32282085
32282084
32282083
32282082
32282081
32282080
32282079
32282078
32282077
32282076
32282075
32282074
32282073
32282071
32282069
32282068
32282067
32282066
32282065
32282064
32282063
32282062
32282061
32282060
32282059
32282058
32282057
32282056
32282055
32282054
32282053
32282052
32282051
32282050
32282049
32282048
32282047
32282046
32282045
32282044
32282043
32282042
32282041
32282040
32282039
32282037
32282036
32282035
32282034
32282033
32282032
32282031
32282030
32282029
32282028
32282027
32282026
32282025
32282024
32282023
32282022
32282021
32282020
32282019
32282018
32282017
32282016
32282015
32282014
32282013
32282012
32282011
32282010
32282009
32282008
32282007
32282006
32282005
32282004
32282003
32282002
32282001
32282000
32281999
32281998
32281997
32281996
32281995
32281994
32281993
32281992
32281991
32281990
32281989
32281988
32281987
32281986
32281985
32281983
32281982
32281981
32281980
32281979
32281978
32281977
32281976
32281975
32281974
32281973
32281972
32281971
32281970
32281969
32281968
32281967
32281966
32281965
32281964
32281963
32281962
32281961
32281960
32281959
32281958
32281957
32281956
32281955
32281954
32281953
32281952
32281951
32281950
32281949
32281948
32281947
32281946
32281945
32281944
32281943
32281942
32281941
32281940
32281939
32281938
32281937
32281936
32281935
32281934
32281933
32281932
32281931
32281930
32281929
32281928
32281927
32281926
32281925
32281924
32281923
32281922
32281921
32281920
32281919
32281918
32281917
32281916
32281915
32281914
32281913
32281912
32281911
32281910
32281909
32281908
32281907
32281906
32281905
32281904
32281903
32281902
32281901
32281900
32281899
32281898
32281897
32281896
32281895
32281894
32281893
32281892
32281891
32281890
32281889
32281888
32281887
32281886
32281885
32281884
32281883
32281882
32281881
32281880
32281879
32281878
32281877
32281876
32281875
32281874
32281873
32281872
32281871
32281870
32281869
32281868
32281867
32281866
32281865
32281864
32281863
32281862
32281861
32281860
32281859
32281858
32281857
32281856
32281855
32281854
32281853
32281852
32281851
32281850
32281849
32281848
32281847
32281846
32281845
32281844
32281843
32281842
32281841
32281840
32281839
32281838
32281837
32281836
32281835
32281834
32281833
32281832
32281831
32281830
32281829
32281828
32281827
32281826
32281825
32281824
32281823
32281822
32281821
32281820
32281819
32281818
32281817
32281816
32281815
32281814
32281813
32281812
32281811
32281810
32281809
32281808
32281807
32281806
32281805
32281804
32281803
32281802
32281801
32281800
32281799
32281798
32281797
32281796
32281795
32281794
32281793
32281792
32281791
32281790
32281789
32281788
32281787
32281786
32281784
32281782
32281781
32281780
32281779
32281778
32281777
32281776
32281775
32281774
32281773
32281772
32281771
32281770
32281769
32281768
32281767
32281766
32281765
32281764
32281763
32281762
32281761
32281760
32281759
32281758
32281757
32281756
32281755
32281754
32281753
32281752
32281751
32281750
32281749
32281748
32281747
32281746
32281745
32281744
32281743
32281742
32281741
32281740
32281739
32281738
32281737
32281736
32281735
32281734
32281733
32281732
32281731
32281730
32281729
32281728
32281727
32281726
32281725
32281724
32281723
32281722
32281721
32281720
32281719
32281718
32281717
32281716
32281715
32281714
32281713
32281712
32281711
32281710
32281709
32281708
32281707
32281706
32281704
32281703
32281702
32281701
32281700
32281699
32281698
32281697
32281696
32281695
32281694
32281693
32281692
32281691
32281690
32281689
32281688
32281687
32281686
32281685
32281684
32281683
32281682
32281681
32281680
32281679
32281678
32281677
32281676
32281675
32281674
32281673
32281672
32281671
32281670
32281669
32281668
32281667
32281666
32281665
32281664
32281663
32281662
32281661
32281660
32281659
32281658
32281657
32281656
32281655
32281654
32281653
32281652
32281651
32281650
32281649
32281648
32281647
32281646
32281645
32281644
32281643
32281642
32281641
32281640
32281639
32281638
32281637
32281636
32281635
32281634
32281633
32281632
32281631
32281630
32281629
32281628
32281627
32281626
32281625
32281624
32281623
32281622
32281621
32281620
32281619
32281618
32281617
32281616
32281615
32281614
32281613
32281612
32281611
32281610
32281609
32281608
32281607
32281606
32281605
32281604
32281603
32281602
32281601
32281600
32281599
32281597
32281596
32281595
32281594
32281593
32281592
32281591
32281590
32281589
32281588
32281587
32281586
32281585
32281584
32281583
32281582
32281581
32281580
32281579
32281578
32281577
32281576
32281575
32281574
32281573
32281572
32281571
32281570
32281569
32281568
32281567
32281566
32281565
32281564
32281563
32281562
32281561
32281560
32281559
32281558
32281557
32281556
32281555
32281554
32281553
32281552
32281551
32281550
32281549
32281548
32281547
32281545
32281544
32281543
32281542
32281541
32281539
32281538
32281537
32281536
32281535
32281534
32281533
32281532
32281531
32281530
32281529
32281528
32281527
32281526
32281525
32281524
32281523
32281522
32281521
32281520
32281519
32281518
32281517
32281516
32281515
32281514
32281513
32281512
32281511
32281510
32281509
32281508
32281507
32281506
32281505
32281504
32281503
32281502
32281501
32281500
32281499
32281498
32281497
32281496
32281495
32281494
32281493
32281492
32281491
32281490
32281489
32281488
32281487
32281486
32281485
32281484
32281483
32281482
32281481
32281480
32281479
32281478
32281477
32281476
32281475
32281474
32281473
32281472
32281471
32281470
32281469
32281468
32281467
32281466
32281465
32281464
32281463
32281462
32281461
32281460
32281459
32281458
32281457
32281456
32281455
32281454
32281453
32281452
32281451
32281450
32281449
32281448
32281447
32281446
32281445
32281444
32281443
32281442
32281441
32281440
32281439
32281438
32281437
32281436
32281435
32281434
32281433
32281432
32281431
32281430
32281429
32281428
32281427
32281426
32281425
32281424
32281423
32281421
32281420
32281419
32281418
32281417
32281416
32281415
32281414
32281413
32281412
32281411
32281410
32281409
32281408
32281407
32281406
32281405
32281404
32281403
32281402
32281401
32281400
32281399
32281398
32281397
32281396
32281395
32281394
32281393
32281392
32281391
32281390
32281389
32281388
32281387
32281386
32281385
32281384
32281383
32281382
32281381
32281380
32281379
32281378
32281377
32281376
32281375
32281374
32281373
32281372
32281371
32281370
32281369
32281368
32281367
32281366
32281365
32281364
32281363
32281362
32281361
32281360
32281359
32281358
32281357
32281356
32281355
32281354
32281353
32281352
32281351
32281350
32281349
32281348
32281347
32281346
32281345
32281344
32281343
32281342
32281341
32281340
32281339
32281338
32281337
32281336
32281335
32281334
32281333
32281332
32281331
32281330
32281329
32281328
32281327
32281326
32281325
32281324
32281323
32281322
32281321
32281320
32281319
32281318
32281317
32281316
32281315
32281314
32281313
32281312
32281311
32281310
32281309
32281308
32281307
32281306
32281305
32281304
32281303
32281302
32281301
32281300
32281299
32281298
32281297
32281296
32281295
32281294
32281293
32281292
32281291
32281290
32281289
32281288
32281287
32281286
32281285
32281284
32281283
32281282
32281281
32281280
32281279
32281278
32281277
32281276
32281275
32281274
32281273
32281272
32281271
32281270
32281269
32281268
32281267
32281266
32281265
32281264
32281263
32281262
32281261
32281260
32281259
32281258
32281257
32281256
32281255
32281254
32281253
32281252
32281251
32281250
32281249
32281248
32281247
32281246
32281245
32281244
32281243
32281242
32281241
32281240
32281239
32281238
32281237
32281236
32281235
32281234
32281233
32281232
32281231
32281230
32281229
32281228
32281227
32281226
32281225
32281224
32281223
32281222
32281221
32281220
32281219
32281218
32281217
32281216
32281215
32281214
32281213
32281212
32281211
32281210
32281209
32281208
32281207
32281206
32281205
32281204
32281203
32281202
32281201
32281200
32281199
32281198
32281197
32281196
32281195
32281194
32281193
32281192
32281191
32281190
32281189
32281188
32281187
32281186
32281185
32281184
32281183
32281182
32281181
32281180
32281178
32281177
32281176
32281175
32281174
32281173
32281172
32281171
32281170
32281169
32281168
32281167
32281166
32281165
32281164
32281163
32281161
32281160
32281159
32281158
32281157
32281156
32281155
32281154
32281153
32281152
32281151
32281150
32281149
32281148
32281147
32281146
32281145
32281144
32281143
32281142
32281141
32281140
32281139
32281138
32281137
32281136
32281135
32281134
32281133
32281132
32281131
32281130
32281129
32281128
32281127
32281126
32281125
32281124
32281123
32281122
32281121
32281120
32281119
32281118
32281117
32281116
32281115
32281114
32281113
32281112
32281111
32281110
32281109
32281108
32281107
32281106
32281105
32281104
32281103
32281102
32281101
32281040
32281039
32281038
32281037
32281036
32281035
32281034
32281033
32281032
32281031
32281030
32281029
32281028
32281027
32281026
32281025
32281024
32281023
32281022
32281021
32281020
32281019
32281018
32281017
32281016
32281015
32281014
32281013
32281012
32281011
32281010
32281009
32281008
32281007
32281006
32281005
32281004
32281003
32281002
32281001
32281000
32280999
32280998
32280997
32280996
32280995
32280994
32280993
32280992
32280991
32280990
32280989
32280988
32280987
32280986
32280985
32280984
32280983
32280982
32280981
32280980
32280979
32280978
32280977
32280976
32280975
32280974
32280973
32280972
32280971
32280970
32280969
32280968
32280967
32280965
32280964
32280963
32280962
32280961
32280960
32280959
32280958
32280957
32280956
32280955
32280954
32280953
32280952
32280951
32280950
32280949
32280948
32280947
32280946
32280945
32280944
32280943
32280942
32280941
32280940
32280939
32280938
32280937
32280936
32280935
32280934
32280933
32280932
32280931
32280930
32280929
32280928
32280927
32280926
32280925
32280924
32280923
32280922
32280921
32280920
32280919
32280918
32280917
32280916
32280915
32280914
32280913
32280912
32280911
32280910
32280909
32280908
32280907
32280906
32280905
32280904
32280903
32280902
32280901
32280900
32280899
32280898
32280897
32280896
32280895
32280894
32280893
32280892
32280891
32280890
32280889
32280888
32280887
32280886
32280885
32280884
32280883
32280882
32280881
32280880
32280879
32280878
32280877
32280876
32280875
32280874
32280873
32280872
32280871
32280870
32280869
32280868
32280867
32280866
32280865
32280864
32280863
32280862
32280861
32280860
32280859
32280858
32280857
32280856
32280855
32280854
32280853
32280852
32280851
32280850
32280849
32280848
32280847
32280846
32280845
32280844
32280843
32280842
32280841
32280840
32280839
32280838
32280837
32280836
32280835
32280833
32280832
32280831
32280830
32280829
32280828
32280827
32280826
32280825
32280824
32280823
32280822
32280821
32280820
32280819
32280818
32280817
32280816
32280815
32280814
32280813
32280812
32280811
32280810
32280809
32280808
32280807
32280806
32280805
32280804
32280803
32280802
32280801
32280800
32280799
32280798
32280797
32280796
32280795
32280794
32280793
32280792
32280791
32280790
32280789
32280788
32280787
32280786
32280785
32280784
32280783
32280782
32280781
32280780
32280779
32280778
32280777
32280775
32280774
32280773
32280772
32280771
32280770
32280769
32280768
32280767
32280766
32280765
32280764
32280763
32280762
32280761
32280760
32280759
32280758
32280757
32280756
32280755
32280754
32280753
32280752
32280751
32280750
32280749
32280748
32280747
32280746
32280745
32280744
32280743
32280742
32280741
32280740
32280739
32280738
32280737
32280736
32280735
32280734
32280733
32280732
32280731
32280730
32280729
32280728
32280727
32280726
32280725
32280724
32280723
32280722
32280721
32280720
32280719
32280718
32280717
32280716
32280715
32280714
32280713
32280712
32280711
32280710
32280709
32280708
32280707
32280706
32280705
32280704
32280703
32280702
32280701
32280700
32280699
32280698
32280697
32280696
32280695
32280694
32280693
32280692
32280691
32280690
32280689
32280688
32280687
32280686
32280685
32280684
32280683
32280682
32280681
32280680
32280679
32280678
32280677
32280676
32280674
32280673
32280671
32280670
32280669
32280667
32280665
32280664
32280663
32280662
32280661
32280660
32280659
32280658
32280657
32280656
32280655
32280654
32280653
32280652
32280651
32280650
32280649
32280648
32280647
32280646
32280645
32280644
32280643
32280642
32280641
32280640
32280639
32280638
32280637
32280636
32280635
32280634
32280633
32280632
32280631
32280630
32280629
32280628
32280627
32280626
32280625
32280624
32280623
32280622
32280621
32280620
32280619
32280618
32280617
32280616
32280615
32280614
32280613
32280612
32280611
32280610
32280609
32280608
32280607
32280606
32280605
32280604
32280603
32280602
32280601
32280600
32280599
32280598
32280597
32280596
32280595
32280594
32280593
32280592
32280591
32280590
32280589
32280588
32280587
32280586
32280585
32280584
32280583
32280582
32280581
32280580
32280579
32280578
32280577
32280576
32280575
32280574
32280573
32280572
32280571
32280570
32280569
32280568
32280567
32280566
32280565
32280564
32280563
32280562
32280561
32280560
32280559
32280558
32280557
32280556
32280555
32280554
32280553
32280552
32280551
32280550
32280549
32280548
32280547
32280546
32280545
32280544
32280543
32280542
32280541
32280540
32280539
32280538
32280537
32280536
32280535
32280534
32280533
32280532
32280531
32280530
32280529
32280528
32280527
32280526
32280525
32280524
32280523
32280522
32280521
32280520
32280519
32280518
32280517
32280516
32280515
32280514
32280513
32280512
32280511
32280510
32280509
32280508
32280507
32280506
32280505
32280504
32280503
32280502
32280501
32280500
32280499
32280498
32280496
32280495
32280494
32280493
32280492
32280491
32280490
32280489
32280488
32280487
32280486
32280485
32280484
32280483
32280482
32280481
32280480
32280479
32280478
32280477
32280476
32280475
32280474
32280473
32280472
32280471
32280470
32280469
32280468
32280467
32280466
32280464
32280463
32280462
32280461
32280460
32280459
32280458
32280457
32280456
32280455
32280454
32280453
32280452
32280451
32280450
32280449
32280448
32280447
32280446
32280445
32280444
32280443
32280442
32280441
32280440
32280439
32280438
32280437
32280436
32280435
32280434
32280433
32280432
32280431
32280430
32280429
32280428
32280427
32280426
32280425
32280424
32280423
32280422
32280420
32280419
32280418
32280417
32280416
32280415
32280414
32280413
32280412
32280411
32280410
32280409
32280408
32280407
32280406
32280405
32280404
32280403
32280402
32280401
32280400
32280399
32280398
32280397
32280396
32280395
32280394
32280393
32280392
32280391
32280390
32280389
32280388
32280387
32280386
32280385
32280384
32280383
32280382
32280381
32280380
32280379
32280378
32280377
32280376
32280375
32280374
32280373
32280372
32280371
32280370
32280369
32280368
32280367
32280366
32280365
32280364
32280363
32280362
32280361
32280360
32280359
32280358
32280357
32280356
32280355
32280354
32280353
32280352
32280351
32280350
32280349
32280348
32280347
32280346
32280345
32280344
32280343
32280342
32280341
32280340
32280339
32280338
32280337
32280336
32280335
32280334
32280333
32280332
32280331
32280330
32280329
32280328
32280327
32280326
32280325
32280324
32280323
32280322
32280321
32280320
32280319
32280318
32280317
32280316
32280315
32280314
32280313
32280312
32280311
32280310
32280309
32280308
32280307
32280306
32280305
32280304
32280303
32280302
32280301
32280300
32280299
32280298
32280297
32280296
32280295
32280294
32280293
32280292
32280291
32280290
32280289
32280288
32280287
32280286
32280285
32280284
32280283
32280282
32280281
32280280
32280279
32280278
32280277
32280276
32280275
32280274
32280273
32280272
32280271
32280270
32280269
32280268
32280267
32280266
32280265
32280264
32280263
32280262
32280261
32280260
32280259
32280258
32280257
32280256
32280255
32280254
32280253
32280252
32280251
32280250
32280249
32280248
32280247
32280246
32280245
32280244
32280243
32280242
32280241
32280240
32280239
32280238
32280237
32280236
32280235
32280234
32280233
32280232
32280231
32280230
32280229
32280228
32280227
32280226
32280225
32280224
32280223
32280222
32280221
32280220
32280219
32280218
32280217
32280216
32280214
32280213
32280212
32280210
32280209
32280208
32280207
32280206
32280205
32280204
32280203
32280202
32280201
32280200
32280199
32280198
32280197
32280196
32280195
32280194
32280193
32280192
32280191
32280190
32280189
32280188
32280187
32280186
32280185
32280184
32280183
32280182
32280181
32280180
32280179
32280178
32280177
32280176
32280175
32280174
32280173
32280172
32280170
32280169
32280168
32280167
32280166
32280165
32280164
32280163
32280162
32280161
32280160
32280159
32280158
32280157
32280156
32280155
32280154
32280153
32280152
32280151
32280150
32280149
32280148
32280147
32280146
32280145
32280144
32280142
32280141
32280140
32280139
32280138
32280137
32280136
32280135
32280134
32280133
32280132
32280131
32280130
32280129
32280128
32280127
32280126
32280125
32280124
32280123
32280122
32280121
32280120
32280119
32280118
32280117
32280116
32280115
32280114
32280113
32280112
32280111
32280110
32280109
32280108
32280107
32280106
32280105
32280104
32280103
32280102
32280101
32280100
32280099
32280098
32280097
32280096
32280094
32280093
32280092
32280091
32280090
32280089
32280088
32280087
32280086
32280085
32280084
32280083
32280082
32280081
32280080
32280079
32280078
32280077
32280076
32280075
32280074
32280073
32280072
32280071
32280070
32280069
32280068
32280067
32280066
32280065
32280064
32280063
32280062
32280061
32280060
32280059
32280058
32280057
32280056
32280055
32280054
32280053
32280052
32280051
32280050
32280049
32280047
32280046
32280045
32280044
32280043
32280042
32280041
32280040
32280039
32280038
32280037
32280036
32280035
32280034
32280033
32280032
32280031
32280030
32280029
32280028
32280027
32280026
32280025
32280024
32280023
32280022
32280021
32280020
32280019
32280018
32280017
32280016
32280015
32280014
32280013
32280012
32280011
32280010
32280009
32280008
32280007
32280006
32280005
32280004
32280003
32280002
32280001
32280000
32279999
32279998
32279997
32279996
32279995
32279994
32279993
32279992
32279991
32279990
32279989
32279988
32279987
32279986
32279985
32279984
32279983
32279982
32279981
32279980
32279979
32279978
32279977
32279976
32279975
32279974
32279972
32279971
32279970
32279969
32279968
32279967
32279966
32279965
32279964
32279963
32279962
32279961
32279960
32279959
32279958
32279957
32279956
32279955
32279954
32279953
32279952
32279951
32279950
32279949
32279948
32279947
32279946
32279945
32279944
32279943
32279942
32279941
32279940
32279939
32279938
32279937
32279936
32279935
32279934
32279933
32279932
32279931
32279930
32279929
32279928
32279927
32279926
32279925
32279924
32279923
32279922
32279921
32279920
32279919
32279918
32279917
32279916
32279915
32279914
32279913
32279912
32279911
32279910
32279909
32279908
32279907
32279906
32279905
32279904
32279903
32279902
32279901
32279900
32279899
32279898
32279897
32279896
32279895
32279894
32279893
32279892
32279891
32279890
32279889
32279888
32279887
32279886
32279885
32279884
32279883
32279882
32279881
32279880
32279879
32279878
32279877
32279876
32279875
32279874
32279873
32279872
32279871
32279870
32279869
32279868
32279867
32279866
32279865
32279864
32279863
32279862
32279861
32279860
32279859
32279858
32279857
32279856
32279855
32279854
32279853
32279852
32279851
32279850
32279849
32279848
32279847
32279846
32279844
32279843
32279842
32279841
32279840
32279839
32279838
32279837
32279836
32279835
32279834
32279833
32279832
32279831
32279830
32279829
32279828
32279827
32279826
32279825
32279824
32279823
32279822
32279821
32279819
32279818
32279817
32279816
32279815
32279814
32279813
32279812
32279811
32279809
32279808
32279807
32279806
32279805
32279804
32279803
32279802
32279801
32279800
32279799
32279798
32279797
32279796
32279795
32279794
32279793
32279792
32279791
32279790
32279789
32279788
32279787
32279786
32279785
32279784
32279782
32279781
32279780
32279779
32279778
32279777
32279776
32279775
32279774
32279773
32279772
32279771
32279770
32279769
32279768
32279767
32279766
32279765
32279764
32279763
32279762
32279761
32279760
32279759
32279758
32279757
32279756
32279755
32279754
32279753
32279752
32279751
32279750
32279749
32279748
32279747
32279746
32279745
32279744
32279743
32279742
32279741
32279740
32279739
32279738
32279737
32279736
32279735
32279734
32279733
32279732
32279731
32279730
32279729
32279728
32279727
32279726
32279725
32279724
32279723
32279722
32279721
32279720
32279719
32279718
32279717
32279716
32279715
32279714
32279713
32279712
32279711
32279710
32279709
32279708
32279707
32279706
32279705
32279704
32279703
32279702
32279701
32279700
32279699
32279698
32279697
32279696
32279695
32279694
32279693
32279692
32279691
32279690
32279689
32279688
32279687
32279686
32279685
32279684
32279683
32279682
32279680
32279679
32279678
32279677
32279676
32279675
32279674
32279673
32279672
32279671
32279670
32279669
32279668
32279667
32279666
32279665
32279664
32279663
32279662
32279661
32279660
32279659
32279658
32279657
32279656
32279655
32279654
32279653
32279652
32279651
32279650
32279649
32279648
32279647
32279646
32279645
32279644
32279643
32279642
32279641
32279640
32279639
32279638
32279637
32279636
32279635
32279634
32279633
32279632
32279631
32279630
32279629
32279628
32279627
32279626
32279625
32279624
32279623
32279622
32279621
32279620
32279619
32279618
32279617
32279616
32279615
32279614
32279613
32279612
32279611
32279610
32279609
32279608
32279607
32279606
32279605
32279604
32279603
32279602
32279601
32279599
32279598
32279597
32279596
32279595
32279594
32279593
32279592
32279591
32279590
32279589
32279588
32279587
32279586
32279585
32279584
32279583
32279582
32279581
32279580
32279579
32279578
32279577
32279576
32279575
32279574
32279573
32279572
32279571
32279570
32279569
32279568
32279567
32279566
32279565
32279563
32279562
32279561
32279560
32279559
32279558
32279557
32279556
32279555
32279554
32279553
32279552
32279551
32279550
32279549
32279548
32279547
32279546
32279545
32279544
32279543
32279542
32279541
32279540
32279539
32279538
32279537
32279536
32279535
32279534
32279533
32279532
32279531
32279530
32279529
32279528
32279527
32279526
32279525
32279524
32279523
32279522
32279521
32279520
32279519
32279518
32279517
32279516
32279515
32279514
32279513
32279512
32279511
32279510
32279509
32279508
32279507
32279506
32279505
32279504
32279503
32279502
32279501
32279500
32279499
32279498
32279497
32279496
32279495
32279494
32279493
32279492
32279491
32279490
32279489
32279488
32279487
32279486
32279485
32279484
32279483
32279482
32279481
32279480
32279479
32279478
32279477
32279476
32279475
32279474
32279473
32279472
32279471
32279470
32279469
32279468
32279467
32279466
32279465
32279464
32279462
32279461
32279460
32279459
32279458
32279457
32279456
32279455
32279454
32279453
32279452
32279451
32279450
32279449
32279448
32279447
32279446
32279445
32279444
32279443
32279442
32279441
32279440
32279439
32279438
32279437
32279436
32279435
32279434
32279433
32279432
32279431
32279430
32279429
32279428
32279427
32279426
32279425
32279424
32279423
32279422
32279421
32279420
32279419
32279418
32279417
32279416
32279415
32279414
32279413
32279412
32279411
32279410
32279409
32279408
32279407
32279406
32279405
32279404
32279403
32279402
32279401
32279400
32279399
32279398
32279397
32279396
32279395
32279394
32279393
32279392
32279391
32279390
32279389
32279388
32279387
32279386
32279385
32279384
32279383
32279382
32279381
32279380
32279379
32279378
32279377
32279376
32279375
32279374
32279373
32279372
32279371
32279370
32279369
32279368
32279367
32279366
32279365
32279364
32279363
32279362
32279361
32279360
32279359
32279358
32279357
32279356
32279355
32279354
32279353
32279352
32279351
32279350
32279349
32279348
32279347
32279346
32279345
32279344
32279343
32279342
32279341
32279340
32279339
32279338
32279337
32279336
32279335
32279334
32279333
32279332
32279331
32279330
32279328
32279327
32279326
32279325
32279324
32279323
32279322
32279321
32279320
32279319
32279318
32279317
32279316
32279315
32279314
32279313
32279312
32279311
32279310
32279309
32279308
32279307
32279306
32279305
32279304
32279303
32279302
32279301
32279300
32279299
32279298
32279296
32279295
32279294
32279293
32279292
32279291
32279290
32279289
32279288
32279287
32279286
32279285
32279284
32279283
32279282
32279281
32279280
32279279
32279278
32279277
32279276
32279275
32279274
32279273
32279272
32279271
32279270
32279269
32279268
32279267
32279266
32279265
32279264
32279263
32279262
32279261
32279260
32279259
32279258
32279257
32279256
32279255
32279254
32279253
32279252
32279251
32279250
32279249
32279248
32279247
32279246
32279245
32279244
32279243
32279242
32279241
32279239
32279238
32279237
32279236
32279235
32279234
32279233
32279232
32279231
32279230
32279229
32279228
32279226
32279225
32279224
32279223
32279222
32279221
32279220
32279219
32279218
32279217
32279216
32279214
32279213
32279212
32279211
32279209
32279208
32279207
32279206
32279205
32279204
32279203
32279202
32279201
32279200
32279199
32279198
32279196
32279195
32279194
32279193
32279192
32279191
32279190
32279189
32279188
32279187
32279186
32279185
32279184
32279183
32279182
32279181
32279180
32279179
32279178
32279177
32279176
32279175
32279174
32279173
32279172
32279171
32279170
32279169
32279168
32279167
32279166
32279165
32279164
32279163
32279162
32279161
32279160
32279159
32279158
32279157
32279156
32279155
32279154
32279153
32279152
32279151
32279150
32279149
32279148
32279147
32279146
32279145
32279144
32279143
32279142
32279140
32279139
32279138
32279137
32279136
32279134
32279133
32279132
32279131
32279130
32279129
32279127
32279126
32279125
32279124
32279123
32279122
32279121
32279120
32279119
32279118
32279117
32279116
32279115
32279114
32279113
32279112
32279111
32279110
32279109
32279108
32279107
32279106
32279105
32279104
32279103
32279102
32279101
32279100
32279099
32279098
32279097
32279096
32279095
32279094
32279093
32279092
32279091
32279090
32279089
32279088
32279087
32279086
32279085
32279084
32279083
32279082
32279081
32279080
32279079
32279078
32279077
32279076
32279075
32279074
32279073
32279072
32279071
32279070
32279069
32279068
32279067
32279066
32279065
32279064
32279063
32279062
32279061
32279060
32279059
32279058
32279057
32279056
32279055
32279054
32279053
32279052
32279051
32279050
32279049
32279048
32279047
32279046
32279045
32279044
32279043
32279042
32279041
32279040
32279039
32279038
32279037
32279036
32279035
32279034
32279033
32279032
32279031
32279030
32279029
32279028
32279027
32279026
32279025
32279024
32279023
32279022
32279020
32279019
32279018
32279017
32279016
32279015
32279014
32279013
32279012
32279011
32279010
32279009
32279008
32279007
32279006
32279005
32279004
32279003
32279002
32279001
32279000
32278999
32278998
32278997
32278996
32278995
32278994
32278993
32278992
32278991
32278990
32278989
32278988
32278987
32278986
32278985
32278984
32278983
32278982
32278981
32278980
32278979
32278977
32278976
32278975
32278974
32278973
32278972
32278971
32278970
32278969
32278968
32278966
32278965
32278964
32278963
32278962
32278961
32278960
32278959
32278958
32278957
32278956
32278955
32278954
32278953
32278952
32278951
32278950
32278949
32278948
32278947
32278946
32278945
32278944
32278943
32278942
32278941
32278940
32278939
32278938
32278937
32278936
32278935
32278934
32278933
32278932
32278931
32278930
32278929
32278928
32278927
32278926
32278925
32278924
32278923
32278922
32278921
32278920
32278919
32278918
32278917
32278916
32278915
32278914
32278913
32278912
32278911
32278910
32278909
32278908
32278907
32278906
32278905
32278904
32278903
32278902
32278901
32278900
32278899
32278898
32278897
32278896
32278895
32278894
32278893
32278892
32278891
32278890
32278889
32278888
32278887
32278886
32278885
32278884
32278883
32278882
32278881
32278880
32278878
32278877
32278876
32278875
32278874
32278873
32278872
32278871
32278870
32278869
32278868
32278867
32278866
32278865
32278864
32278863
32278862
32278861
32278860
32278859
32278858
32278857
32278856
32278855
32278854
32278853
32278852
32278850
32278849
32278848
32278847
32278846
32278845
32278844
32278843
32278842
32278841
32278840
32278839
32278838
32278837
32278836
32278835
32278834
32278833
32278832
32278831
32278830
32278829
32278828
32278827
32278826
32278825
32278824
32278823
32278822
32278821
32278820
32278819
32278818
32278817
32278816
32278815
32278814
32278813
32278812
32278811
32278810
32278809
32278808
32278807
32278806
32278805
32278804
32278803
32278802
32278801
32278800
32278799
32278798
32278797
32278796
32278795
32278794
32278793
32278792
32278791
32278790
32278789
32278788
32278787
32278785
32278783
32278782
32278781
32278780
32278779
32278778
32278777
32278776
32278775
32278774
32278773
32278772
32278771
32278770
32278769
32278768
32278767
32278766
32278765
32278764
32278763
32278762
32278761
32278760
32278759
32278758
32278757
32278756
32278755
32278754
32278753
32278752
32278751
32278750
32278749
32278748
32278747
32278746
32278745
32278744
32278743
32278742
32278741
32278740
32278739
32278738
32278737
32278736
32278735
32278734
32278733
32278732
32278731
32278730
32278729
32278728
32278727
32278726
32278725
32278724
32278723
32278722
32278721
32278720
32278719
32278718
32278717
32278716
32278715
32278714
32278713
32278712
32278711
32278710
32278709
32278708
32278707
32278706
32278705
32278704
32278703
32278702
32278701
32278700
32278699
32278698
32278697
32278696
32278695
32278694
32278693
32278692
32278691
32278690
32278689
32278688
32278687
32278686
32278685
32278684
32278683
32278682
32278681
32278680
32278679
32278678
32278677
32278676
32278675
32278674
32278673
32278672
32278671
32278670
32278669
32278668
32278667
32278666
32278665
32278664
32278663
32278662
32278661
32278659
32278658
32278657
32278656
32278655
32278654
32278653
32278652
32278651
32278650
32278649
32278648
32278647
32278646
32278645
32278644
32278643
32278642
32278641
32278640
32278639
32278638
32278637
32278636
32278635
32278634
32278633
32278632
32278631
32278630
32278629
32278628
32278627
32278626
32278625
32278624
32278623
32278622
32278621
32278620
32278619
32278618
32278617
32278616
32278615
32278614
32278613
32278612
32278611
32278610
32278609
32278608
32278607
32278606
32278605
32278604
32278603
32278602
32278601
32278600
32278599
32278598
32278597
32278596
32278595
32278594
32278593
32278592
32278591
32278590
32278589
32278588
32278587
32278586
32278585
32278584
32278583
32278582
32278581
32278580
32278579
32278578
32278577
32278576
32278575
32278574
32278573
32278572
32278571
32278570
32278569
32278568
32278567
32278566
32278565
32278564
32278563
32278562
32278561
32278560
32278559
32278558
32278557
32278556
32278555
32278554
32278553
32278552
32278551
32278550
32278549
32278548
32278547
32278546
32278545
32278544
32278543
32278542
32278541
32278540
32278539
32278538
32278537
32278536
32278535
32278534
32278533
32278532
32278531
32278530
32278529
32278528
32278527
32278526
32278525
32278524
32278523
32278522
32278521
32278520
32278519
32278518
32278517
32278516
32278515
32278514
32278513
32278512
32278511
32278510
32278509
32278508
32278507
32278506
32278505
32278504
32278503
32278502
32278501
32278500
32278499
32278498
32278497
32278496
32278495
32278494
32278493
32278491
32278490
32278489
32278488
32278487
32278486
32278485
32278484
32278483
32278482
32278481
32278480
32278479
32278478
32278477
32278476
32278475
32278474
32278472
32278471
32278470
32278469
32278468
32278467
32278466
32278465
32278464
32278463
32278462
32278461
32278460
32278459
32278458
32278457
32278456
32278455
32278454
32278453
32278452
32278451
32278450
32278449
32278448
32278447
32278446
32278445
32278444
32278443
32278442
32278441
32278440
32278439
32278438
32278437
32278436
32278435
32278434
32278433
32278432
32278431
32278430
32278429
32278428
32278427
32278426
32278425
32278424
32278423
32278422
32278421
32278420
32278419
32278418
32278417
32278416
32278415
32278414
32278413
32278412
32278411
32278410
32278408
32278407
32278406
32278405
32278404
32278403
32278402
32278401
32278400
32278399
32278398
32278397
32278396
32278395
32278394
32278393
32278392
32278391
32278390
32278389
32278388
32278387
32278386
32278385
32278384
32278382
32278381
32278380
32278379
32278378
32278377
32278376
32278375
32278374
32278373
32278372
32278371
32278370
32278369
32278368
32278367
32278366
32278365
32278364
32278363
32278362
32278361
32278360
32278359
32278358
32278357
32278356
32278355
32278354
32278353
32278352
32278351
32278350
32278349
32278348
32278347
32278346
32278345
32278344
32278343
32278342
32278341
32278340
32278339
32278338
32278337
32278336
32278335
32278334
32278333
32278332
32278331
32278330
32278329
32278328
32278327
32278326
32278325
32278324
32278323
32278322
32278321
32278320
32278319
32278318
32278317
32278316
32278315
32278314
32278313
32278312
32278311
32278310
32278309
32278308
32278307
32278306
32278305
32278304
32278303
32278302
32278301
32278300
32278299
32278298
32278297
32278296
32278295
32278294
32278293
32278292
32278290
32278289
32278288
32278287
32278286
32278285
32278284
32278283
32278282
32278281
32278280
32278279
32278278
32278277
32278276
32278275
32278274
32278273
32278272
32278271
32278270
32278269
32278268
32278267
32278266
32278265
32278264
32278263
32278262
32278261
32278260
32278259
32278258
32278257
32278256
32278255
32278254
32278253
32278251
32278250
32278249
32278248
32278247
32278246
32278245
32278244
32278242
32278241
32278240
32278239
32278238
32278237
32278236
32278235
32278234
32278233
32278232
32278231
32278230
32278229
32278228
32278227
32278226
32278225
32278224
32278223
32278222
32278221
32278220
32278219
32278218
32278217
32278216
32278215
32278214
32278213
32278212
32278211
32278210
32278209
32278208
32278207
32278206
32278205
32278204
32278203
32278202
32278201
32278200
32278199
32278198
32278197
32278196
32278195
32278194
32278193
32278192
32278191
32278190
32278189
32278188
32278187
32278186
32278185
32278184
32278183
32278182
32278181
32278180
32278179
32278178
32278177
32278176
32278175
32278173
32278172
32278171
32278170
32278168
32278167
32278166
32278165
32278164
32278163
32278162
32278161
32278160
32278159
32278158
32278157
32278156
32278155
32278154
32278153
32278152
32278151
32278150
32278149
32278148
32278147
32278146
32278145
32278143
32278142
32278141
32278140
32278139
32278136
32278135
32278134
32278133
32278132
32278131
32278130
32278129
32278128
32278127
32278126
32278125
32278124
32278122
32278121
32278120
32278119
32278118
32278117
32278116
32278114
32278113
32278112
32278111
32278110
32278109
32278108
32278107
32278106
32278105
32278104
32278103
32278102
32278101
32278100
32278099
32278098
32278097
32278096
32278095
32278094
32278093
32278092
32278091
32278090
32278089
32278088
32278087
32278086
32278085
32278084
32278083
32278082
32278081
32278080
32278079
32278078
32278077
32278076
32278075
32278074
32278073
32278072
32278071
32278070
32278069
32278068
32278067
32278066
32278065
32278064
32278063
32278062
32278061
32278060
32278059
32278058
32278057
32278056
32278055
32278054
32278053
32278052
32278051
32278050
32278049
32278048
32278047
32278046
32278045
32278044
32278043
32278042
32278041
32278040
32278039
32278038
32278037
32278036
32278035
32278034
32278033
32278032
32278031
32278030
32278029
32278028
32278027
32278026
32278025
32278024
32278023
32278022
32278020
32278019
32278018
32278017
32278016
32278015
32278014
32278013
32278012
32278011
32278010
32278009
32278007
32278006
32278005
32278004
32278003
32278002
32278001
32278000
32277999
32277998
32277997
32277996
32277995
32277994
32277993
32277991
32277990
32277989
32277988
32277987
32277986
32277985
32277984
32277983
\ No newline at end of file
moment/views/consum.py
View file @
e3560c64
...
...
@@ -19,23 +19,22 @@ from comment.views.comment_fun import comment
from
follow.views.follow_fun
import
follow
from
libs.cache
import
redis_client
from
kafka.structs
import
TopicPartition
from
moment.views.process_time
import
judge_offset_partition_have_consum
from
moment.views.process_time
import
judge_offset_partition_have_consum
,
judge_data_have_in_redis
import
msgpack
from
kafka
import
TopicPartition
def
kafka_consum
(
topic_name
=
None
):
topic_name
=
settings
.
KAFKA_TOPIC_NAME
if
not
topic_name
else
topic_name
consumser_obj
=
KafkaConsumer
(
topic_name
,
bootstrap_servers
=
settings
.
KAFKA_BROKER_LIST
,
enable_auto_commit
=
Tru
e
,
auto_commit_interval_ms
=
1
,
group_id
=
"vest"
,
auto_offset_reset
=
'earliest'
)
topic_name
=
settings
.
KAFKA_TOPIC_NAME
consumser_obj
=
KafkaConsumer
(
topic_name
,
bootstrap_servers
=
settings
.
KAFKA_BROKER_LIST
,
enable_auto_commit
=
Fals
e
,
group_id
=
"vest"
,
auto_offset_reset
=
'earliest'
)
consumser_obj
.
subscribe
([
topic_name
,
])
try
:
# redis_topic_partition_name = "vest:topic_name:" + str(topic_name)
# topic_partition_info = redis_client.hgetall(redis_topic_partition_name)
# for partition_id in topic_partition_info:
# print (int(partition_id.decode()),topic_name)
# consumser_obj.seek(partition=TopicPartition(topic_name,int(partition_id.decode())),offset=int(topic_partition_info[partition_id]))
while
True
:
begin
=
time
.
time
()
msg_dict
=
consumser_obj
.
poll
(
timeout_ms
=
100
,
max_records
=
50
)
msg_dict
=
consumser_obj
.
poll
(
timeout_ms
=
30000
,
max_records
=
100
)
consumser_obj
.
commit
()
for
msg_value
in
msg_dict
.
values
():
for
msg
in
msg_value
:
card_info
=
json
.
loads
(
str
(
msg
.
value
,
encoding
=
"utf8"
))
...
...
@@ -43,9 +42,13 @@ def kafka_consum(topic_name=None):
###在这里去判断一下当前的partition和offset是否已经消费过了 如果已经消费了需要直接去掉数据
bol_consum
=
judge_offset_partition_have_consum
(
card_info
=
card_info
,
offset
=
msg
.
offset
,
partition
=
msg
.
partition
)
##在这里先判断当前的数据是否已经存在,存在的话直接PaaS,不存在的话再做下边的处理
# change_consum = judge_data_have_in_redis(card_info)
# bol_consum = True
if
bol_consum
:
logging
.
info
(
"消费到新数据了[
%
s,
%
s,
%
s,
%
s],get card_info:
%
s"
%
(
str
(
msg
.
topic
),
str
(
msg
.
partition
),
str
(
msg
.
offset
),
str
(
msg
.
key
),
card_info
))
logging
.
info
(
"消费到新数据了[
%
s,
%
s,
%
s,
%
s],get card_id:
%
s,create_time:
%
s,current_push_time:
%
s"
%
(
str
(
msg
.
topic
),
str
(
msg
.
partition
),
str
(
msg
.
offset
),
str
(
msg
.
key
),
card_info
[
"card_id"
],
card_info
[
'create_time'
],
card_info
[
'current_push_time'
]))
# 如果没有代表是之前的老的数据
if
'card_status'
not
in
card_info
:
card_info
[
'card_status'
]
=
'answer'
...
...
@@ -58,18 +61,10 @@ def kafka_consum(topic_name=None):
if
current_push_time
==
create_time
:
if
card_info
[
'action_type'
]
==
"comment"
:
auto_comment_user
(
card_info
,
after_day
=
True
)
logging
.
info
(
"当前卡片ID:
%
s,auto_comment_user子函数消费处理耗时:
%
f"
%
(
card_info
[
'card_id'
],
time
.
time
()
-
begin
))
elif
card_info
[
'action_type'
]
==
"click"
:
auto_click_user
(
card_info
,
after_day
=
True
)
logging
.
info
(
"当前卡片ID:
%
s,auto_click_user子函数消费处理耗时:
%
f"
%
(
card_info
[
'card_id'
],
time
.
time
()
-
begin
))
elif
card_info
[
'action_type'
]
==
"follow"
:
auto_follow_user
(
card_info
,
after_day
=
True
)
logging
.
info
(
"当前卡片ID:
%
s,auto_follow_user子函数消费处理耗时:
%
f"
%
(
card_info
[
'card_id'
],
time
.
time
()
-
begin
))
else
:
pass
...
...
@@ -78,20 +73,12 @@ def kafka_consum(topic_name=None):
if
card_info
[
'have_pust_num'
]
==
card_info
[
'need_pust_num'
]:
if
nowtime
.
day
-
push_time_date
.
day
==
0
:
# 今日的已经下发完了,需要去取之后的
action_type
=
card_info
[
'action_type'
]
logging
.
info
(
"今天已经下发完了[
%
s,
%
s,
%
s,
%
s]"
%
(
str
(
msg
.
topic
),
str
(
msg
.
partition
),
str
(
msg
.
offset
),
str
(
msg
.
key
)))
if
action_type
==
"comment"
:
auto_comment_user
(
card_info
,
after_day
=
True
)
logging
.
info
(
"当前卡片ID:
%
s,auto_comment_user子函数消费处理耗时:
%
f"
%
(
card_info
[
'card_id'
],
time
.
time
()
-
begin
))
elif
action_type
==
"click"
:
auto_click_user
(
card_info
,
after_day
=
True
)
logging
.
info
(
"当前卡片ID:
%
s,auto_comment_user子函数消费处理耗时:
%
f"
%
(
card_info
[
'card_id'
],
time
.
time
()
-
begin
))
elif
action_type
==
"follow"
:
auto_follow_user
(
card_info
,
after_day
=
True
)
logging
.
info
(
"当前卡片ID:
%
s,auto_comment_user子函数消费处理耗时:
%
f"
%
(
card_info
[
'card_id'
],
time
.
time
()
-
begin
))
else
:
pass
...
...
@@ -100,69 +87,53 @@ def kafka_consum(topic_name=None):
if
card_info
[
'have_pust_num'
]
<
card_info
[
'need_pust_num'
]
and
\
push_time_date
<
nowtime
:
is_many
=
True
if
action_type
==
"comment"
:
# 在这里去调评论的接口
if
'have_comment_number'
in
card_info
and
\
card_info
[
'have_comment_number'
]
<
20
:
card_info
[
"have_comment_number"
]
+=
1
logging
.
info
(
"当前卡片ID:
%
s,comment1子函数消费处理耗时:
%
f"
%
(
card_info
[
'card_id'
],
time
.
time
()
-
begin
))
is_success
,
is_many
=
comment
(
card_info
)
logging
.
info
(
"comment [
%
s,
%
s,
%
s,
%
s],当前ID:
%
s,下发状状态:
%
s"
%
(
is_success
=
comment
(
card_info
)
logging
.
info
(
"comment [
%
s,
%
s,
%
s,
%
s],当前ID:
%
s,状态:
%
s"
%
(
str
(
msg
.
topic
),
str
(
msg
.
partition
),
str
(
msg
.
offset
),
str
(
msg
.
key
),
card_info
[
"card_id"
],
is_success
))
logging
.
info
(
"当前卡片ID:
%
s,comment2子函数消费处理耗时:
%
f"
%
(
card_info
[
'card_id'
],
time
.
time
()
-
begin
))
# 调完接口后需要再次去拿新的push_time的时间
if
is_many
:
auto_comment_user
(
card_info
)
# 调完接口后需要再次去拿新的push_time的时间
if
is_success
:
auto_comment_user
(
card_info
)
else
:
pass
elif
action_type
==
"click"
:
# 在这里去调点赞的接口
is_many
=
True
if
'have_click_number'
in
card_info
:
card_info
[
"have_click_number"
]
+=
1
logging
.
info
(
"当前卡片ID:
%
s,click1子函数消费处理耗时:
%
f"
%
(
card_info
[
"card_id"
],
time
.
time
()
-
begin
))
is_success
,
is_many
=
click
(
card_info
)
logging
.
info
(
"click [
%
s,
%
s,
%
s,
%
s],当前ID:
%
s,下发状状态:
%
s"
%
(
is_success
=
click
(
card_info
)
logging
.
info
(
"click [
%
s,
%
s,
%
s,
%
s],当前ID:
%
s,状态:
%
s"
%
(
str
(
msg
.
topic
),
str
(
msg
.
partition
),
str
(
msg
.
offset
),
str
(
msg
.
key
),
card_info
[
"card_id"
],
is_success
))
logging
.
info
(
"当前卡片ID:
%
s,click2子函数消费处理耗时:
%
f"
%
(
card_info
[
"card_id"
],
time
.
time
()
-
begin
))
if
is_many
:
auto_click_user
(
card_info
)
if
is_success
:
auto_click_user
(
card_info
)
else
:
pass
elif
action_type
==
"follow"
:
# 在这里去调关注的接口
is_many
=
True
if
'have_follow_number'
in
card_info
:
card_info
[
"have_follow_number"
]
+=
1
logging
.
info
(
"当前卡片ID:
%
s,follow1子函数消费处理耗时:
%
f"
%
(
card_info
[
"card_id"
],
time
.
time
()
-
begin
))
is_success
,
is_many
=
follow
(
card_info
)
logging
.
info
(
"当前卡片ID:
%
s,follow2子函数消费处理耗时:
%
f"
%
(
card_info
[
"card_id"
],
time
.
time
()
-
begin
))
logging
.
info
(
"follow [
%
s,
%
s,
%
s,
%
s],当前ID:
%
s,下发状状态:
%
s"
%
(
is_success
=
follow
(
card_info
)
logging
.
info
(
"follow [
%
s,
%
s,
%
s,
%
s],当前ID:
%
s,状态:
%
s"
%
(
str
(
msg
.
topic
),
str
(
msg
.
partition
),
str
(
msg
.
offset
),
str
(
msg
.
key
),
card_info
[
"card_id"
],
is_success
))
if
is_many
==
True
:
auto_follow_user
(
card_info
)
if
is_success
:
auto_follow_user
(
card_info
)
else
:
pass
else
:
# push_time时间未到 需要等待
logging
.
info
(
"follow [
%
s,
%
s,
%
s,
%
s],
push_time未到,需要
等待"
%
(
logging
.
info
(
"follow [
%
s,
%
s,
%
s,
%
s],等待"
%
(
str
(
msg
.
topic
),
str
(
msg
.
partition
),
str
(
msg
.
offset
),
str
(
msg
.
key
)))
save_data_to_kafka
(
card_info
)
pass
else
:
logging
.
info
(
"此条数据已经消费过了"
)
pass
logging
.
info
(
"此条数据已经被paas了:
%
s"
%
card_info
[
'card_id'
])
logging
.
info
(
"消费处理耗时:
%
f"
%
(
time
.
time
()
-
begin
))
except
:
consumser_obj
.
close
()
...
...
moment/views/irrigation.py
View file @
e3560c64
...
...
@@ -13,7 +13,8 @@ from libs.error import logging_exception
@bind
(
'vest/moment/vest_irrigation'
)
def
vest_irrigation
(
card_id
=
0
,
card_type
=
None
,
card_user_id
=
None
,
create_time
=
""
,
content_level
=
0
,
tag_names
=
[]):
def
vest_irrigation
(
card_id
=
0
,
card_type
=
None
,
card_user_id
=
None
,
create_time
=
""
,
content_level
=
0
,
tag_names
=
[],
tagv3_names
=
[]):
"""
在这里把后端传的数据存进卡夫卡 日记和帖子只需要发评论不需要点赞和关注
:param card_id:
...
...
@@ -27,16 +28,15 @@ def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time=""
try
:
producer
=
KafkaProducer
(
bootstrap_servers
=
settings
.
KAFKA_BROKER_LIST
)
logging
.
info
(
"新数据进来了:
%
s"
%
card_id
)
topic
=
settings
.
KAFKA_TOPIC_NAME
tag_list
=
[
"瘦脸针kyc"
,
"双眼皮kyc"
,
"水光针kyc"
,
"玻尿酸kyc"
,
"吸脂kyc"
,
"祛痘kyc"
,
"鼻综合kyc"
,
"光子嫩肤kyc"
,
"没有想法kyc"
,
"牙齿kyc"
,
"抗衰紧致kyc"
,
"胸部kyc"
,
"果酸换肤kyc"
,
"祛斑kyc"
,
"美白针kyc"
,
"瘦腿针kyc"
]
flag
=
False
if
len
(
tag_names
)
>
0
:
for
i
in
tag_names
:
if
i
in
tag_list
:
flag
=
True
flag
=
True
# tag_list = ["瘦脸针kyc", "双眼皮kyc", "水光针kyc", "玻尿酸kyc", "吸脂kyc", "祛痘kyc", "鼻综合kyc", "光子嫩肤kyc", "没有想法kyc",
# "牙齿kyc", "抗衰紧致kyc", "胸部kyc", "果酸换肤kyc", "祛斑kyc", "美白针kyc", "瘦腿针kyc"]
# flag = False
# if len(tag_names) > 0:
# for i in tag_names:
# if i in tag_list:
# flag = True
if
flag
==
True
:
comment_msg_dict
=
{
...
...
@@ -48,10 +48,10 @@ def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time=""
"tag_names"
:
tag_names
,
"type"
:
"get_write_answer_userinfo"
,
"current_push_time"
:
create_time
,
'action_type'
:
'comment'
'action_type'
:
'comment'
,
"tagv3_names"
:
tagv3_names
}
logging
.
info
(
"get comment_msg_dict:
%
s"
%
comment_msg_dict
)
producer
.
send
(
topic
,
json
.
dumps
(
comment_msg_dict
)
.
encode
())
if
card_type
==
'answer'
:
...
...
@@ -65,7 +65,8 @@ def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time=""
"type"
:
"get_write_answer_userinfo"
,
"current_push_time"
:
create_time
,
'action_type'
:
'follow'
,
'card_user_id'
:
card_user_id
'card_user_id'
:
card_user_id
,
"tagv3_names"
:
tagv3_names
}
producer
.
send
(
topic
,
json
.
dumps
(
follow_msg_dict
)
.
encode
())
...
...
@@ -79,7 +80,8 @@ def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time=""
"tag_names"
:
tag_names
,
"type"
:
"get_write_answer_userinfo"
,
"current_push_time"
:
create_time
,
'action_type'
:
'click'
'action_type'
:
'click'
,
"tagv3_names"
:
tagv3_names
}
producer
.
send
(
topic
,
json
.
dumps
(
click_msg_dict
)
.
encode
())
...
...
moment/views/process_time.py
View file @
e3560c64
...
...
@@ -65,40 +65,61 @@ def get_one_six_days_random_time(frmt='%Y-%m-%d %H:%M:%S', num_days=0, action_ty
content_day_need_add_one_day
=
False
):
try
:
action_num
=
0
all_time_list
=
[]
##follow 发布后1天 3:1-2 4:5-10
##
if
num_days
==
1
and
action_type
in
(
"follow"
,
"click"
)
and
int
(
content_level
)
<
3
:
action_num
=
random
.
randint
(
1
,
3
)
action_num
=
random
.
randint
(
1
,
2
)
if
num_days
==
1
and
action_type
in
(
"follow"
)
and
int
(
content_level
)
>=
3
:
action_num
=
random
.
randint
(
5
,
10
)
if
num_days
==
1
and
action_type
in
(
"click"
)
and
int
(
content_level
)
>=
3
:
action_num
=
random
.
randint
(
6
,
12
)
if
num_days
<=
15
and
num_days
>
1
and
action_type
in
(
"follow"
,
"click"
)
and
int
(
content_level
)
<
3
:
action_num
=
random
.
randint
(
1
,
2
)
if
num_days
<=
15
and
num_days
>
1
and
action_type
in
(
"follow"
)
and
int
(
content_level
)
>=
3
:
action_num
=
random
.
randint
(
1
,
5
)
if
num_days
==
1
and
action_type
in
(
"click"
)
and
int
(
content_level
)
>=
3
:
action_num
=
random
.
randint
(
6
,
12
)
if
num_days
<=
15
and
num_days
>
1
and
action_type
in
(
"click"
)
and
int
(
content_level
)
>=
3
:
action_num
=
random
.
randint
(
1
,
6
)
if
num_days
>=
1
and
num_days
<=
6
and
action_type
in
(
"comment"
):
if
int
(
content_level
)
<=
3
:
action_num
=
random
.
randint
(
1
,
2
)
else
:
action_num
=
random
.
randint
(
2
,
4
)
else
:
action_num
=
random
.
randint
(
3
,
4
)
now
=
datetime
.
datetime
.
now
()
if
content_day_need_add_one_day
==
True
:
nows
=
now
now
=
nows
+
datetime
.
timedelta
(
days
=
1
)
zeroday
=
str
(
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
10
,
0
,
0
))
lastday
=
str
(
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
23
,
0
,
0
))
##第一个时间段
zeroday
=
str
(
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
9
,
0
,
0
))
lastday
=
str
(
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
10
,
59
,
59
))
random_times
=
[
randomDate_six_one
(
zeroday
,
lastday
,
frmt
)
for
_
in
range
(
action_num
)]
have_sort_times1
=
sorted
(
random_times
,
key
=
lambda
date
:
get_list
(
date
))
##第二个时间段
zeroday
=
str
(
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
12
,
0
,
0
))
lastday
=
str
(
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
14
,
59
,
59
))
random_times
=
[
randomDate_six_one
(
zeroday
,
lastday
,
frmt
)
for
_
in
range
(
action_num
)]
have_sort_times2
=
sorted
(
random_times
,
key
=
lambda
date
:
get_list
(
date
))
##第三个时间段
zeroday
=
str
(
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
20
,
0
,
0
))
lastday
=
str
(
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
23
,
59
,
59
))
random_times
=
[
randomDate_six_one
(
zeroday
,
lastday
,
frmt
)
for
_
in
range
(
action_num
)]
have_sort_times
=
sorted
(
random_times
,
key
=
lambda
date
:
get_list
(
date
))
return
have_sort_times
have_sort_times3
=
sorted
(
random_times
,
key
=
lambda
date
:
get_list
(
date
))
all_time_list
.
extend
(
have_sort_times1
)
all_time_list
.
extend
(
have_sort_times2
)
all_time_list
.
extend
(
have_sort_times3
)
return
all_time_list
except
:
logger
.
error
(
"catch exception,err_log:
%
s"
%
traceback
.
format_exc
())
return
[]
...
...
@@ -107,50 +128,63 @@ def get_one_six_days_random_time(frmt='%Y-%m-%d %H:%M:%S', num_days=0, action_ty
def
get_ten_last_days_random_time
(
num_days
=
None
,
frmt
=
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
,
content_level
=
0
,
content_day_need_add_one_day
=
False
,
action_type
=
None
,
repeat_time
=
1
):
try
:
all_time_list
=
[]
if
num_days
==
None
:
return
[]
##比较当前时间和最后一次创建时间的差
now
=
datetime
.
datetime
.
now
()
zeroday
=
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
10
,
0
,
0
)
lastday
=
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
23
,
0
,
0
)
zeroday
=
datetime
.
datetime
(
now
.
year
,
now
.
month
,
now
.
day
,
9
,
0
,
0
)
add_number
=
0
if
num_days
>
15
and
action_type
in
(
"follow"
):
if
num_days
>
15
and
action_type
in
(
"follow"
,
"click"
):
action_num
=
random
.
randint
(
1
,
2
)
add_number
=
10
elif
num_days
>
15
and
action_type
in
(
"click"
):
if
content_level
<
3
:
action_num
=
random
.
randint
(
1
,
2
)
add_number
=
6
else
:
action_num
=
random
.
randint
(
1
,
2
)
add_number
=
5
add_number
=
3
elif
num_days
>
6
and
action_type
in
(
"comment"
):
if
content_level
<=
3
:
action_num
=
1
add_number
=
10
add_number
=
3
else
:
action_num
=
random
.
randint
(
1
,
2
)
add_number
=
10
add_number
=
3
else
:
pass
start_time
=
zeroday
+
datetime
.
timedelta
(
days
=
add_number
)
##第一个时间段
zeroday1
=
str
(
datetime
.
datetime
(
start_time
.
year
,
start_time
.
month
,
start_time
.
day
,
9
,
0
,
0
))
lastday1
=
str
(
datetime
.
datetime
(
start_time
.
year
,
start_time
.
month
,
start_time
.
day
,
10
,
59
,
59
))
random_times
=
[
randomDate_six_one
(
zeroday1
,
lastday1
,
frmt
)
for
_
in
range
(
action_num
)]
have_sort_times1
=
sorted
(
random_times
,
key
=
lambda
date
:
get_list
(
date
))
##第二个时间段
zeroday2
=
str
(
datetime
.
datetime
(
start_time
.
year
,
start_time
.
month
,
start_time
.
day
,
12
,
0
,
0
))
lastday2
=
str
(
datetime
.
datetime
(
start_time
.
year
,
start_time
.
month
,
start_time
.
day
,
14
,
59
,
59
))
random_times
=
[
randomDate_six_one
(
zeroday2
,
lastday2
,
frmt
)
for
_
in
range
(
action_num
)]
have_sort_times2
=
sorted
(
random_times
,
key
=
lambda
date
:
get_list
(
date
))
##第三个时间段
zeroday3
=
str
(
datetime
.
datetime
(
start_time
.
year
,
start_time
.
month
,
start_time
.
day
,
20
,
0
,
0
))
lastday3
=
str
(
datetime
.
datetime
(
start_time
.
year
,
start_time
.
month
,
start_time
.
day
,
23
,
59
,
59
))
random_times
=
[
randomDate_six_one
(
zeroday3
,
lastday3
,
frmt
)
for
_
in
range
(
action_num
)]
have_sort_times3
=
sorted
(
random_times
,
key
=
lambda
date
:
get_list
(
date
))
all_time_list
.
extend
(
have_sort_times1
)
all_time_list
.
extend
(
have_sort_times2
)
all_time_list
.
extend
(
have_sort_times3
)
# if content_day_need_add_one_day == True:
# start_time = zeroday + datetime.timedelta(days=add_number * repeat_time)
# end_time = lastday + datetime.timedelta(days=add_number * repeat_time)
#
# else:
# start_time = zeroday + datetime.timedelta(days=add_number)
# end_time = lastday + datetime.timedelta(days=add_number)
if
content_day_need_add_one_day
==
True
:
start_time
=
zeroday
+
datetime
.
timedelta
(
days
=
add_number
*
repeat_time
)
end_time
=
lastday
+
datetime
.
timedelta
(
days
=
add_number
*
repeat_time
)
else
:
start_time
=
zeroday
+
datetime
.
timedelta
(
days
=
add_number
)
end_time
=
lastday
+
datetime
.
timedelta
(
days
=
add_number
)
random_times
=
[
randomDate_six_one
(
str
(
start_time
),
str
(
end_time
),
frmt
)
for
_
in
range
(
action_num
)]
have_sort_times
=
sorted
(
random_times
,
key
=
lambda
date
:
get_list
(
date
))
# random_times = [randomDate_six_one(str(start_time), str(end_time), frmt) for _ in range(action_num)]
# have_sort_times = sorted(random_times, key=lambda date: get_list(date))
return
have_sort_times
return
all_time_list
except
:
logger
.
error
(
"catch exception,err_log:
%
s"
%
traceback
.
format_exc
())
return
[]
...
...
@@ -173,16 +207,9 @@ def get_content_time_by_create_time(create_time="", content_level=0, action_type
num_days
+=
repeat_time
content_day_need_add_one_day
=
True
# 创建时间切换成分钟数便于比较
# mins = divmod(num, min)[0]
##根据转换后的分钟数进行比较
##转化成分数后进行一层一层的比较
if
num_days
==
0
:
get_time
=
randomDate
(
create_time
=
createt
,
action_type
=
action_type
)
time_region
=
0
return
get_time
,
time_region
elif
num_days
>=
1
and
num_days
<=
6
:
if
num_days
>=
0
and
num_days
<=
6
:
if
num_days
==
0
:
num_days
=
1
get_time
=
get_one_six_days_random_time
(
content_level
=
content_level
,
num_days
=
num_days
,
action_type
=
action_type
,
content_day_need_add_one_day
=
content_day_need_add_one_day
)
...
...
@@ -224,12 +251,8 @@ def get_click_follow_time_by_create_time(create_time="", content_level=0, action
num_days
+=
repeat_time
content_day_need_add_one_day
=
True
if
num_days
==
0
:
get_time
=
randomDate
(
create_time
=
createt
,
action_type
=
action_type
)
return
get_time
,
0
elif
num_days
==
1
:
if
num_days
==
0
or
num_days
==
1
:
num_days
=
1
get_time
=
get_one_six_days_random_time
(
num_days
=
num_days
,
action_type
=
action_type
,
content_level
=
content_level
,
content_day_need_add_one_day
=
content_day_need_add_one_day
)
...
...
@@ -280,50 +303,77 @@ def get_vest_userid(need_comment_num=0):
return
12345
def
get_vest_userid_and_comment
(
need_comment_num
=
0
,
tag_names
=
[],
card_id
=
0
):
def
get_vest_userid_and_comment
(
need_comment_num
=
0
,
tag_names
=
[],
tagv3_names
=
[]
):
try
:
content
=
[]
if
tagv3_names
:
content
=
by_tagv3_get_comment
(
need_comment_num
=
need_comment_num
,
tagv3_names
=
tagv3_names
)
##先根据card_id回去内容提取关键字
# logging.info("get settings.HOST:%s" % settings.HOST)
# db_zhengxing_eagle = pymysql.connect(host=settings.HOST, port=settings.PORT, user=settings.USER,
# password=settings.PASSWORD,
# db=settings.NAME)
#
# logging.info("get db_zhengxing_eagle:%s" % db_zhengxing_eagle)
# zhengxing_cursor = db_zhengxing_eagle.cursor()
# sql = 'select content from api_answer where id = %s ' % (card_id)
# zhengxing_cursor.execute(sql)
# data = list(zhengxing_cursor.fetchall())
# logging.info("get data:%s" % data)
# zhengxing_cursor.close()
# if len(data) > 0:
# soup = BeautifulSoup(data[0][0], 'html.parser')
# contents = soup.text
#
# ck = GetContentKeyWords()
# keywords = ck.get_keywords(contents, len(ck.tag_list))
# if keywords:
# tag_names.append(keywords)
else
:
if
need_comment_num
:
all_comment_list
=
[]
content
=
[]
redis_key
=
"vest_kyc_tag_content_data"
group_keys
=
"get_group_comment_by_tag:group_id"
for
item
in
tag_names
:
##如果自带的标签有kyc的话走kyc的标签
service_closure_tags
=
redis_client
.
hget
(
redis_key
,
str
(
item
))
if
service_closure_tags
:
closure_tags
=
json
.
loads
(
str
(
service_closure_tags
,
encoding
=
"utf-8"
))
all_comment_list
.
extend
(
closure_tags
)
if
all_comment_list
:
content
=
random
.
sample
(
all_comment_list
,
need_comment_num
)
else
:
##没有kyc的标签看标签所属的小组 拿对应小组的数据
all_group_ids
=
set
()
all_comments
=
[]
for
item
in
tag_names
:
sql_get_tagid
=
"select id from api_tag WHERE name = '
%
s'"
%
(
item
)
zhengxing_cursor
.
execute
(
sql_get_tagid
)
data
=
zhengxing_cursor
.
fetchall
()
if
len
(
data
):
tag_ids
=
data
[
0
]
# ids = data[0][0]
sql
=
'select tag_category_id from api_tag_category_relation where tag_id =
%
s'
%
(
tag_ids
)
zhengxing_cursor
.
execute
(
sql
)
group_ids
=
zhengxing_cursor
.
fetchall
()
for
item
in
group_ids
:
all_group_ids
.
add
(
item
[
0
])
for
all_group_id
in
list
(
all_group_ids
):
get_comment
=
redis_client
.
hget
(
group_keys
,
int
(
all_group_id
))
if
get_comment
:
comment
=
json
.
loads
(
str
(
get_comment
,
encoding
=
"utf-8"
))
all_comment_list
.
extend
(
comment
)
content
=
random
.
sample
(
all_comment_list
,
need_comment_num
)
zhengxing_cursor
.
close
()
return
content
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
[]
def
by_tagv3_get_comment
(
need_comment_num
=
0
,
tagv3_names
=
[]):
try
:
content
=
[]
if
need_comment_num
:
all_comment_list
=
[]
redis_key
=
"vest_kyc_tag_content_data"
all_keys
=
redis_client
.
hkeys
(
redis_key
)
all_keys_name
=
[]
for
item
in
all_keys
:
all_keys_name
.
append
(
str
(
item
,
encoding
=
"utf-8"
))
for
item
in
tag_names
:
if
item
in
all_keys_name
:
service_closure_tags
=
redis_client
.
hget
(
redis_key
,
item
)
content
=
[]
redis_key
=
"vest_kyc_tag_content_data_tagv3"
group_keys
=
"get_group_comment_by_tag:group_id"
for
item
in
tagv3_names
:
##如果自带的标签有kyc的话走kyc的标签
service_closure_tags
=
redis_client
.
hget
(
redis_key
,
str
(
item
))
if
service_closure_tags
:
closure_tags
=
json
.
loads
(
str
(
service_closure_tags
,
encoding
=
"utf-8"
))
all_comment_list
.
extend
(
closure_tags
)
if
all_comment_list
:
content
=
random
.
sample
(
all_comment_list
,
need_comment_num
)
else
:
content
=
[]
else
:
content
=
[]
return
content
except
:
...
...
@@ -343,8 +393,7 @@ def judge_offset_partition_have_consum(card_info=None, offset=0, partition=0):
create_time
=
card_info
[
'create_time'
]
datetime_create_time
=
datetime
.
datetime
.
strptime
(
create_time
,
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
str_data
=
str
(
datetime_create_time
.
year
)
+
str
(
datetime_create_time
.
month
)
+
str
(
datetime_create_time
.
day
)
if
str_data
in
[
'20191229'
,
'20191230'
]:
logging
.
info
(
"该日期的数据已经被删除啦"
)
if
str_data
in
[
'20191229'
,
'20191230'
,
'20191228'
,
'20191227'
]:
return
False
redis_list_data
=
0
...
...
@@ -359,6 +408,82 @@ def judge_offset_partition_have_consum(card_info=None, offset=0, partition=0):
return
False
def
judge_data_have_in_redis
(
card_info
=
None
):
try
:
today
=
datetime
.
datetime
.
now
()
str_today
=
str
(
today
.
year
)
+
str
(
today
.
month
)
+
str
(
today
.
day
)
push_time
=
card_info
[
'current_push_time'
]
push_datetime
=
datetime
.
datetime
.
strptime
(
push_time
,
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
str_push_datetime
=
str
(
push_datetime
.
year
)
+
str
(
push_datetime
.
month
)
+
str
(
push_datetime
.
day
)
if
str_today
!=
str_push_datetime
:
return
True
if
card_info
[
'action_type'
]
==
'comment'
:
##在这里加一个判断 如果当前的评论的user_id和评论内容已经在这个评论下了就不再下发给同一个回答ID
key
=
'have_reply_answer_comment:'
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
hget
(
key
,
card_info
[
'current_user_id'
])
if
redis_data
:
datas
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf-8"
))
if
card_info
[
'comment_content'
]
in
datas
:
return
False
else
:
datas
.
append
(
card_info
[
'comment_content'
])
redis_client
.
hset
(
key
,
card_info
[
'current_user_id'
],
json
.
dumps
(
datas
))
return
True
else
:
conent
=
[
card_info
[
'comment_content'
]]
redis_client
.
hset
(
key
,
card_info
[
'current_user_id'
],
json
.
dumps
(
conent
))
return
True
elif
card_info
[
'action_type'
]
==
'follow'
:
key
=
'have_reply_answer_follow:'
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
get
(
key
)
if
redis_data
:
datas
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf-8"
))
if
card_info
[
'current_user_id'
]
in
datas
:
return
False
else
:
datas
.
append
(
card_info
[
'current_user_id'
])
redis_client
.
set
(
key
,
json
.
dumps
(
datas
))
return
True
else
:
conent
=
[
card_info
[
'current_user_id'
]]
redis_client
.
set
(
key
,
json
.
dumps
(
conent
))
return
True
elif
card_info
[
'action_type'
]
==
'click'
:
key
=
'have_reply_answer_click:'
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
get
(
key
)
if
redis_data
:
datas
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf-8"
))
if
card_info
[
'current_user_id'
]
in
datas
:
return
False
else
:
datas
.
append
(
card_info
[
'current_user_id'
])
redis_client
.
set
(
key
,
json
.
dumps
(
datas
))
return
True
else
:
conent
=
[
card_info
[
'current_user_id'
]]
redis_client
.
set
(
key
,
json
.
dumps
(
conent
))
return
True
else
:
pass
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
def
get_current_card_content_level
(
card_info
=
[]):
try
:
# 判断当前卡片的等级
...
...
moment/views/save_group_comment.py
0 → 100644
View file @
e3560c64
This source diff could not be displayed because it is too large. You can
view the blob
instead.
moment/views/vest_ids.txt
View file @
e3560c64
Changes suppressed. Click to show.
32333819
32333811
32283128
32283127
32283126
32283125
32283124
32283123
32283122
32283121
32283120
32283119
32283118
32283117
32283116
32283115
32283114
32283113
32283112
32283111
32283110
32283109
32283108
32283107
32283106
32283105
32283104
32283103
32283102
32283101
32283100
32283099
32283098
32283097
32283096
32283095
32283094
32283093
32283092
32283091
32283090
32283089
32283088
32283087
32283086
32283085
32283084
32283083
32283082
32283081
32283080
32283079
32283078
32283077
32283076
32283075
32283074
32283073
32283072
32283071
32283070
32283069
32283068
32283067
32283066
32283065
32283064
32283063
32283062
32283061
32283060
32283059
32283058
32283057
32283056
32283055
32283054
32283053
32283052
32283051
32283050
32283049
32283048
32283047
32283046
32283045
32283044
32283043
32283042
32283041
32283040
32283039
32283038
32283037
32283036
32283035
32283034
32283033
32283032
32283031
32283030
32283029
32283028
32283027
32283026
32283025
32283024
32283023
32283022
32283021
32283020
32283019
32283018
32283017
32283016
32283015
32283014
32283013
32283012
32283011
32283010
32283009
32283008
32283007
32283006
32283005
32283004
32283003
32283002
32283001
32283000
32282999
32282998
32282997
32282996
32282995
32282994
32282993
32282992
32282991
32282990
32282989
32282988
32282987
32282986
32282985
32282984
32282983
32282982
32282981
32282980
32282979
32282978
32282977
32282976
32282975
32282974
32282973
32282972
32282971
32282970
32282969
32282968
32282967
32282966
32282965
32282964
32282963
32282962
32282961
32282960
32282959
32282958
32282957
32282956
32282955
32282954
32282953
32282952
32282951
32282950
32282949
32282948
32282947
32282946
32282945
32282944
32282943
32282942
32282941
32282940
32282939
32282938
32282937
32282936
32282935
32282934
32282933
32282932
32282931
32282930
32282929
32282928
32282927
32282926
32282925
32282924
32282923
32282922
32282921
32282920
32282919
32282918
32282917
32282916
32282915
32282914
32282913
32282912
32282911
32282910
32282909
32282908
32282907
32282906
32282905
32282904
32282903
32282902
32282901
32282900
32282899
32282898
32282897
32282896
32282895
32282894
32282893
32282892
32282891
32282890
32282889
32282888
32282887
32282886
32282885
32282884
32282883
32282882
32282881
32282880
32282879
32282878
32282877
32282876
32282875
32282874
32282873
32282872
32282871
32282870
32282869
32282868
32282867
32282866
32282865
32282864
32282863
32282862
32282861
32282860
32282859
32282858
32282857
32282856
32282855
32282854
32282853
32282852
32282851
32282850
32282849
32282848
32282847
32282846
32282845
32282844
32282843
32282842
32282841
32282840
32282839
32282838
32282837
32282836
32282835
32282834
32282833
32282832
32282831
32282830
32282829
32282828
32282827
32282824
32282823
32282822
32282821
32282820
32282819
32282818
32282817
32282816
32282815
32282814
32282813
32282812
32282811
32282810
32282809
32282808
32282807
32282806
32282805
32282804
32282803
32282802
32282801
32282800
32282799
32282798
32282797
32282796
32282795
32282794
32282793
32282792
32282791
32282790
32282789
32282788
32282787
32282786
32282785
32282783
32282782
32282781
32282780
32282779
32282778
32282777
32282776
32282775
32282774
32282773
32282772
32282771
32282770
32282769
32282768
32282767
32282765
32282764
32282763
32282762
32282761
32282760
32282759
32282758
32282757
32282756
32282755
32282754
32282753
32282752
32282751
32282750
32282749
32282748
32282747
32282746
32282745
32282744
32282743
32282742
32282740
32282739
32282738
32282737
32282736
32282735
32282734
32282733
32282732
32282731
32282730
32282729
32282728
32282727
32282726
32282725
32282724
32282723
32282722
32282721
32282720
32282719
32282718
32282717
32282716
32282715
32282714
32282713
32282712
32282711
32282710
32282709
32282708
32282707
32282706
32282705
32282704
32282703
32282702
32282701
32282700
32282699
32282698
32282697
32282696
32282695
32282694
32282693
32282692
32282691
32282690
32282689
32282688
32282687
32282686
32282685
32282684
32282683
32282682
32282681
32282680
32282679
32282678
32282677
32282676
32282675
32282674
32282673
32282672
32282671
32282670
32282669
32282668
32282667
32282666
32282665
32282664
32282663
32282662
32282661
32282660
32282659
32282658
32282657
32282656
32282655
32282654
32282653
32282652
32282651
32282650
32282649
32282648
32282647
32282646
32282645
32282644
32282643
32282642
32282641
32282640
32282639
32282638
32282637
32282636
32282635
32282634
32282633
32282632
32282631
32282630
32282629
32282628
32282626
32282625
32282624
32282623
32282622
32282621
32282620
32282619
32282618
32282617
32282616
32282615
32282614
32282613
32282612
32282611
32282610
32282609
32282608
32282607
32282606
32282605
32282604
32282603
32282602
32282601
32282600
32282599
32282598
32282597
32282596
32282595
32282594
32282593
32282592
32282591
32282590
32282589
32282588
32282587
32282586
32282585
32282584
32282583
32282582
32282581
32282580
32282579
32282578
32282577
32282576
32282575
32282574
32282573
32282572
32282571
32282570
32282569
32282568
32282567
32282566
32282565
32282564
32282563
32282562
32282561
32282560
32282559
32282558
32282557
32282556
32282555
32282554
32282552
32282551
32282550
32282549
32282547
32282546
32282545
32282544
32282543
32282542
32282541
32282540
32282539
32282538
32282537
32282536
32282535
32282534
32282533
32282532
32282531
32282530
32282529
32282528
32282527
32282526
32282525
32282524
32282523
32282522
32282521
32282520
32282519
32282518
32282517
32282516
32282515
32282514
32282513
32282512
32282511
32282510
32282509
32282508
32282507
32282506
32282505
32282504
32282503
32282502
32282501
32282499
32282498
32282497
32282496
32282495
32282494
32282493
32282492
32282491
32282490
32282489
32282488
32282487
32282485
32282484
32282483
32282482
32282481
32282480
32282479
32282478
32282476
32282475
32282474
32282473
32282472
32282471
32282470
32282469
32282468
32282467
32282466
32282465
32282464
32282463
32282462
32282461
32282460
32282459
32282458
32282457
32282456
32282455
32282454
32282453
32282452
32282451
32282450
32282449
32282448
32282447
32282446
32282445
32282444
32282443
32282442
32282441
32282440
32282439
32282438
32282437
32282436
32282435
32282434
32282433
32282432
32282431
32282430
32282429
32282428
32282427
32282426
32282425
32282424
32282423
32282422
32282421
32282420
32282419
32282418
32282417
32282416
32282415
32282414
32282413
32282412
32282411
32282410
32282409
32282408
32282407
32282406
32282405
32282404
32282403
32282402
32282401
32282400
32282399
32282398
32282397
32282396
32282395
32282394
32282393
32282392
32282391
32282390
32282389
32282388
32282387
32282386
32282385
32282384
32282383
32282382
32282381
32282380
32282379
32282378
32282377
32282376
32282375
32282374
32282373
32282372
32282371
32282370
32282369
32282367
32282366
32282365
32282364
32282363
32282362
32282361
32282360
32282359
32282358
32282357
32282356
32282355
32282354
32282353
32282352
32282351
32282350
32282349
32282348
32282347
32282346
32282345
32282344
32282343
32282342
32282341
32282340
32282339
32282338
32282337
32282336
32282335
32282334
32282333
32282332
32282331
32282330
32282329
32282328
32282327
32282326
32282325
32282324
32282323
32282322
32282321
32282320
32282319
32282318
32282317
32282316
32282315
32282314
32282313
32282312
32282311
32282310
32282309
32282308
32282307
32282306
32282305
32282304
32282303
32282302
32282301
32282300
32282299
32282298
32282297
32282296
32282295
32282294
32282293
32282292
32282291
32282290
32282289
32282288
32282287
32282286
32282285
32282284
32282283
32282282
32282281
32282280
32282279
32282278
32282277
32282276
32282275
32282274
32282273
32282272
32282271
32282270
32282269
32282268
32282267
32282266
32282265
32282264
32282263
32282262
32282261
32282260
32282259
32282258
32282256
32282255
32282254
32282253
32282252
32282251
32282250
32282249
32282248
32282247
32282246
32282245
32282244
32282243
32282242
32282241
32282240
32282239
32282238
32282237
32282236
32282235
32282234
32282233
32282232
32282231
32282230
32282229
32282228
32282227
32282226
32282225
32282224
32282223
32282222
32282221
32282220
32282219
32282218
32282217
32282216
32282215
32282214
32282213
32282212
32282211
32282210
32282209
32282208
32282207
32282206
32282205
32282204
32282203
32282202
32282201
32282200
32282199
32282198
32282197
32282196
32282195
32282194
32282193
32282192
32282191
32282190
32282189
32282188
32282187
32282186
32282185
32282184
32282183
32282182
32282181
32282180
32282179
32282178
32282177
32282176
32282175
32282174
32282173
32282172
32282171
32282170
32282169
32282168
32282167
32282166
32282165
32282164
32282163
32282162
32282161
32282160
32282159
32282158
32282157
32282156
32282155
32282154
32282153
32282152
32282151
32282150
32282149
32282148
32282147
32282146
32282145
32282144
32282143
32282142
32282141
32282140
32282139
32282138
32282137
32282136
32282135
32282134
32282133
32282132
32282131
32282130
32282129
32282128
32282127
32282126
32282125
32282124
32282123
32282122
32282121
32282120
32282119
32282118
32282117
32282116
32282115
32282114
32282113
32282112
32282111
32282110
32282109
32282108
32282107
32282106
32282104
32282103
32282102
32282101
32282100
32282098
32282097
32282096
32282095
32282094
32282093
32282092
32282091
32282090
32282089
32282088
32282087
32282086
32282085
32282084
32282083
32282082
32282081
32282080
32282079
32282078
32282077
32282076
32282075
32282074
32282073
32282071
32282069
32282068
32282067
32282066
32282065
32282064
32282063
32282062
32282061
32282060
32282059
32282058
32282057
32282056
32282055
32282054
32282053
32282052
32282051
32282050
32282049
32282048
32282047
32282046
32282045
32282044
32282043
32282042
32282041
32282040
32282039
32282037
32282036
32282035
32282034
32282033
32282032
32282031
32282030
32282029
32282028
32282027
32282026
32282025
32282024
32282023
32282022
32282021
32282020
32282019
32282018
32282017
32282016
32282015
32282014
32282013
32282012
32282011
32282010
32282009
32282008
32282007
32282006
32282005
32282004
32282003
32282002
32282001
32282000
32281999
32281998
32281997
32281996
32281995
32281994
32281993
32281992
32281991
32281990
32281989
32281988
32281987
32281986
32281985
32281983
32281982
32281981
32281980
32281979
32281978
32281977
32281976
32281975
32281974
32281973
32281972
32281971
32281970
32281969
32281968
32281967
32281966
32281965
32281964
32281963
32281962
32281961
32281960
32281959
32281958
32281957
32281956
32281955
32281954
32281953
32281952
32281951
32281950
32281949
32281948
32281947
32281946
32281945
32281944
32281943
32281942
32281941
32281940
32281939
32281938
32281937
32281936
32281935
32281934
32281933
32281932
32281931
32281930
32281929
32281928
32281927
32281926
32281925
32281924
32281923
32281922
32281921
32281920
32281919
32281918
32281917
32281916
32281915
32281914
32281913
32281912
32281911
32281910
32281909
32281908
32281907
32281906
32281905
32281904
32281903
32281902
32281901
32281900
32281899
32281898
32281897
32281896
32281895
32281894
32281893
32281892
32281891
32281890
32281889
32281888
32281887
32281886
32281885
32281884
32281883
32281882
32281881
32281880
32281879
32281878
32281877
32281876
32281875
32281874
32281873
32281872
32281871
32281870
32281869
32281868
32281867
32281866
32281865
32281864
32281863
32281862
32281861
32281860
32281859
32281858
32281857
32281856
32281855
32281854
32281853
32281852
32281851
32281850
32281849
32281848
32281847
32281846
32281845
32281844
32281843
32281842
32281841
32281840
32281839
32281838
32281837
32281836
32281835
32281834
32281833
32281832
32281831
32281830
32281829
32281828
32281827
32281826
32281825
32281824
32281823
32281822
32281821
32281820
32281819
32281818
32281817
32281816
32281815
32281814
32281813
32281812
32281811
32281810
32281809
32281808
32281807
32281806
32281805
32281804
32281803
32281802
32281801
32281800
32281799
32281798
32281797
32281796
32281795
32281794
32281793
32281792
32281791
32281790
32281789
32281788
32281787
32281786
32281784
32281782
32281781
32281780
32281779
32281778
32281777
32281776
32281775
32281774
32281773
32281772
32281771
32281770
32281769
32281768
32281767
32281766
32281765
32281764
32281763
32281762
32281761
32281760
32281759
32281758
32281757
32281756
32281755
32281754
32281753
32281752
32281751
32281750
32281749
32281748
32281747
32281746
32281745
32281744
32281743
32281742
32281741
32281740
32281739
32281738
32281737
32281736
32281735
32281734
32281733
32281732
32281731
32281730
32281729
32281728
32281727
32281726
32281725
32281724
32281723
32281722
32281721
32281720
32281719
32281718
32281717
32281716
32281715
32281714
32281713
32281712
32281711
32281710
32281709
32281708
32281707
32281706
32281704
32281703
32281702
32281701
32281700
32281699
32281698
32281697
32281696
32281695
32281694
32281693
32281692
32281691
32281690
32281689
32281688
32281687
32281686
32281685
32281684
32281683
32281682
32281681
32281680
32281679
32281678
32281677
32281676
32281675
32281674
32281673
32281672
32281671
32281670
32281669
32281668
32281667
32281666
32281665
32281664
32281663
32281662
32281661
32281660
32281659
32281658
32281657
32281656
32281655
32281654
32281653
32281652
32281651
32281650
32281649
32281648
32281647
32281646
32281645
32281644
32281643
32281642
32281641
32281640
32281639
32281638
32281637
32281636
32281635
32281634
32281633
32281632
32281631
32281630
32281629
32281628
32281627
32281626
32281625
32281624
32281623
32281622
32281621
32281620
32281619
32281618
32281617
32281616
32281615
32281614
32281613
32281612
32281611
32281610
32281609
32281608
32281607
32281606
32281605
32281604
32281603
32281602
32281601
32281600
32281599
32281597
32281596
32281595
32281594
32281593
32281592
32281591
32281590
32281589
32281588
32281587
32281586
32281585
32281584
32281583
32281582
32281581
32281580
32281579
32281578
32281577
32281576
32281575
32281574
32281573
32281572
32281571
32281570
32281569
32281568
32281567
32281566
32281565
32281564
32281563
32281562
32281561
32281560
32281559
32281558
32281557
32281556
32281555
32281554
32281553
32281552
32281551
32281550
32281549
32281548
32281547
32281545
32281544
32281543
32281542
32281541
32281539
32281538
32281537
32281536
32281535
32281534
32281533
32281532
32281531
32281530
32281529
32281528
32281527
32281526
32281525
32281524
32281523
32281522
32281521
32281520
32281519
32281518
32281517
32281516
32281515
32281514
32281513
32281512
32281511
32281510
32281509
32281508
32281507
32281506
32281505
32281504
32281503
32281502
32281501
32281500
32281499
32281498
32281497
32281496
32281495
32281494
32281493
32281492
32281491
32281490
32281489
32281488
32281487
32281486
32281485
32281484
32281483
32281482
32281481
32281480
32281479
32281478
32281477
32281476
32281475
32281474
32281473
32281472
32281471
32281470
32281469
32281468
32281467
32281466
32281465
32281464
32281463
32281462
32281461
32281460
32281459
32281458
32281457
32281456
32281455
32281454
32281453
32281452
32281451
32281450
32281449
32281448
32281447
32281446
32281445
32281444
32281443
32281442
32281441
32281440
32281439
32281438
32281437
32281436
32281435
32281434
32281433
32281432
32281431
32281430
32281429
32281428
32281427
32281426
32281425
32281424
32281423
32281421
32281420
32281419
32281418
32281417
32281416
32281415
32281414
32281413
32281412
32281411
32281410
32281409
32281408
32281407
32281406
32281405
32281404
32281403
32281402
32281401
32281400
32281399
32281398
32281397
32281396
32281395
32281394
32281393
32281392
32281391
32281390
32281389
32281388
32281387
32281386
32281385
32281384
32281383
32281382
32281381
32281380
32281379
32281378
32281377
32281376
32281375
32281374
32281373
32281372
32281371
32281370
32281369
32281368
32281367
32281366
32281365
32281364
32281363
32281362
32281361
32281360
32281359
32281358
32281357
32281356
32281355
32281354
32281353
32281352
32281351
32281350
32281349
32281348
32281347
32281346
32281345
32281344
32281343
32281342
32281341
32281340
32281339
32281338
32281337
32281336
32281335
32281334
32281333
32281332
32281331
32281330
32281329
32281328
32281327
32281326
32281325
32281324
32281323
32281322
32281321
32281320
32281319
32281318
32281317
32281316
32281315
32281314
32281313
32281312
32281311
32281310
32281309
32281308
32281307
32281306
32281305
32281304
32281303
32281302
32281301
32281300
32281299
32281298
32281297
32281296
32281295
32281294
32281293
32281292
32281291
32281290
32281289
32281288
32281287
32281286
32281285
32281284
32281283
32281282
32281281
32281280
32281279
32281278
32281277
32281276
32281275
32281274
32281273
32281272
32281271
32281270
32281269
32281268
32281267
32281266
32281265
32281264
32281263
32281262
32281261
32281260
32281259
32281258
32281257
32281256
32281255
32281254
32281253
32281252
32281251
32281250
32281249
32281248
32281247
32281246
32281245
32281244
32281243
32281242
32281241
32281240
32281239
32281238
32281237
32281236
32281235
32281234
32281233
32281232
32281231
32281230
32281229
32281228
32281227
32281226
32281225
32281224
32281223
32281222
32281221
32281220
32281219
32281218
32281217
32281216
32281215
32281214
32281213
32281212
32281211
32281210
32281209
32281208
32281207
32281206
32281205
32281204
32281203
32281202
32281201
32281200
32281199
32281198
32281197
32281196
32281195
32281194
32281193
32281192
32281191
32281190
32281189
32281188
32281187
32281186
32281185
32281184
32281183
32281182
32281181
32281180
32281178
32281177
32281176
32281175
32281174
32281173
32281172
32281171
32281170
32281169
32281168
32281167
32281166
32281165
32281164
32281163
32281161
32281160
32281159
32281158
32281157
32281156
32281155
32281154
32281153
32281152
32281151
32281150
32281149
32281148
32281147
32281146
32281145
32281144
32281143
32281142
32281141
32281140
32281139
32281138
32281137
32281136
32281135
32281134
32281133
32281132
32281131
32281130
32281129
32281128
32281127
32281126
32281125
32281124
32281123
32281122
32281121
32281120
32281119
32281118
32281117
32281116
32281115
32281114
32281113
32281112
32281111
32281110
32281109
32281108
32281107
32281106
32281105
32281104
32281103
32281102
32281101
32281040
32281039
32281038
32281037
32281036
32281035
32281034
32281033
32281032
32281031
32281030
32281029
32281028
32281027
32281026
32281025
32281024
32281023
32281022
32281021
32281020
32281019
32281018
32281017
32281016
32281015
32281014
32281013
32281012
32281011
32281010
32281009
32281008
32281007
32281006
32281005
32281004
32281003
32281002
32281001
32281000
32280999
32280998
32280997
32280996
32280995
32280994
32280993
32280992
32280991
32280990
32280989
32280988
32280987
32280986
32280985
32280984
32280983
32280982
32280981
32280980
32280979
32280978
32280977
32280976
32280975
32280974
32280973
32280972
32280971
32280970
32280969
32280968
32280967
32280965
32280964
32280963
32280962
32280961
32280960
32280959
32280958
32280957
32280956
32280955
32280954
32280953
32280952
32280951
32280950
32280949
32280948
32280947
32280946
32280945
32280944
32280943
32280942
32280941
32280940
32280939
32280938
32280937
32280936
32280935
32280934
32280933
32280932
32280931
32280930
32280929
32280928
32280927
32280926
32280925
32280924
32280923
32280922
32280921
32280920
32280919
32280918
32280917
32280916
32280915
32280914
32280913
32280912
32280911
32280910
32280909
32280908
32280907
32280906
32280905
32280904
32280903
32280902
32280901
32280900
32280899
32280898
32280897
32280896
32280895
32280894
32280893
32280892
32280891
32280890
32280889
32280888
32280887
32280886
32280885
32280884
32280883
32280882
32280881
32280880
32280879
32280878
32280877
32280876
32280875
32280874
32280873
32280872
32280871
32280870
32280869
32280868
32280867
32280866
32280865
32280864
32280863
32280862
32280861
32280860
32280859
32280858
32280857
32280856
32280855
32280854
32280853
32280852
32280851
32280850
32280849
32280848
32280847
32280846
32280845
32280844
32280843
32280842
32280841
32280840
32280839
32280838
32280837
32280836
32280835
32280833
32280832
32280831
32280830
32280829
32280828
32280827
32280826
32280825
32280824
32280823
32280822
32280821
32280820
32280819
32280818
32280817
32280816
32280815
32280814
32280813
32280812
32280811
32280810
32280809
32280808
32280807
32280806
32280805
32280804
32280803
32280802
32280801
32280800
32280799
32280798
32280797
32280796
32280795
32280794
32280793
32280792
32280791
32280790
32280789
32280788
32280787
32280786
32280785
32280784
32280783
32280782
32280781
32280780
32280779
32280778
32280777
32280775
32280774
32280773
32280772
32280771
32280770
32280769
32280768
32280767
32280766
32280765
32280764
32280763
32280762
32280761
32280760
32280759
32280758
32280757
32280756
32280755
32280754
32280753
32280752
32280751
32280750
32280749
32280748
32280747
32280746
32280745
32280744
32280743
32280742
32280741
32280740
32280739
32280738
32280737
32280736
32280735
32280734
32280733
32280732
32280731
32280730
32280729
32280728
32280727
32280726
32280725
32280724
32280723
32280722
32280721
32280720
32280719
32280718
32280717
32280716
32280715
32280714
32280713
32280712
32280711
32280710
32280709
32280708
32280707
32280706
32280705
32280704
32280703
32280702
32280701
32280700
32280699
32280698
32280697
32280696
32280695
32280694
32280693
32280692
32280691
32280690
32280689
32280688
32280687
32280686
32280685
32280684
32280683
32280682
32280681
32280680
32280679
32280678
32280677
32280676
32280674
32280673
32280671
32280670
32280669
32280667
32280665
32280664
32280663
32280662
32280661
32280660
32280659
32280658
32280657
32280656
32280655
32280654
32280653
32280652
32280651
32280650
32280649
32280648
32280647
32280646
32280645
32280644
32280643
32280642
32280641
32280640
32280639
32280638
32280637
32280636
32280635
32280634
32280633
32280632
32280631
32280630
32280629
32280628
32280627
32280626
32280625
32280624
32280623
32280622
32280621
32280620
32280619
32280618
32280617
32280616
32280615
32280614
32280613
32280612
32280611
32280610
32280609
32280608
32280607
32280606
32280605
32280604
32280603
32280602
32280601
32280600
32280599
32280598
32280597
32280596
32280595
32280594
32280593
32280592
32280591
32280590
32280589
32280588
32280587
32280586
32280585
32280584
32280583
32280582
32280581
32280580
32280579
32280578
32280577
32280576
32280575
32280574
32280573
32280572
32280571
32280570
32280569
32280568
32280567
32280566
32280565
32280564
32280563
32280562
32280561
32280560
32280559
32280558
32280557
32280556
32280555
32280554
32280553
32280552
32280551
32280550
32280549
32280548
32280547
32280546
32280545
32280544
32280543
32280542
32280541
32280540
32280539
32280538
32280537
32280536
32280535
32280534
32280533
32280532
32280531
32280530
32280529
32280528
32280527
32280526
32280525
32280524
32280523
32280522
32280521
32280520
32280519
32280518
32280517
32280516
32280515
32280514
32280513
32280512
32280511
32280510
32280509
32280508
32280507
32280506
32280505
32280504
32280503
32280502
32280501
32280500
32280499
32280498
32280496
32280495
32280494
32280493
32280492
32280491
32280490
32280489
32280488
32280487
32280486
32280485
32280484
32280483
32280482
32280481
32280480
32280479
32280478
32280477
32280476
32280475
32280474
32280473
32280472
32280471
32280470
32280469
32280468
32280467
32280466
32280464
32280463
32280462
32280461
32280460
32280459
32280458
32280457
32280456
32280455
32280454
32280453
32280452
32280451
32280450
32280449
32280448
32280447
32280446
32280445
32280444
32280443
32280442
32280441
32280440
32280439
32280438
32280437
32280436
32280435
32280434
32280433
32280432
32280431
32280430
32280429
32280428
32280427
32280426
32280425
32280424
32280423
32280422
32280420
32280419
32280418
32280417
32280416
32280415
32280414
32280413
32280412
32280411
32280410
32280409
32280408
32280407
32280406
32280405
32280404
32280403
32280402
32280401
32280400
32280399
32280398
32280397
32280396
32280395
32280394
32280393
32280392
32280391
32280390
32280389
32280388
32280387
32280386
32280385
32280384
32280383
32280382
32280381
32280380
32280379
32280378
32280377
32280376
32280375
32280374
32280373
32280372
32280371
32280370
32280369
32280368
32280367
32280366
32280365
32280364
32280363
32280362
32280361
32280360
32280359
32280358
32280357
32280356
32280355
32280354
32280353
32280352
32280351
32280350
32280349
32280348
32280347
32280346
32280345
32280344
32280343
32280342
32280341
32280340
32280339
32280338
32280337
32280336
32280335
32280334
32280333
32280332
32280331
32280330
32280329
32280328
32280327
32280326
32280325
32280324
32280323
32280322
32280321
32280320
32280319
32280318
32280317
32280316
32280315
32280314
32280313
32280312
32280311
32280310
32280309
32280308
32280307
32280306
32280305
32280304
32280303
32280302
32280301
32280300
32280299
32280298
32280297
32280296
32280295
32280294
32280293
32280292
32280291
32280290
32280289
32280288
32280287
32280286
32280285
32280284
32280283
32280282
32280281
32280280
32280279
32280278
32280277
32280276
32280275
32280274
32280273
32280272
32280271
32280270
32280269
32280268
32280267
32280266
32280265
32280264
32280263
32280262
32280261
32280260
32280259
32280258
32280257
32280256
32280255
32280254
32280253
32280252
32280251
32280250
32280249
32280248
32280247
32280246
32280245
32280244
32280243
32280242
32280241
32280240
32280239
32280238
32280237
32280236
32280235
32280234
32280233
32280232
32280231
32280230
32280229
32280228
32280227
32280226
32280225
32280224
32280223
32280222
32280221
32280220
32280219
32280218
32280217
32280216
32280214
32280213
32280212
32280210
32280209
32280208
32280207
32280206
32280205
32280204
32280203
32280202
32280201
32280200
32280199
32280198
32280197
32280196
32280195
32280194
32280193
32280192
32280191
32280190
32280189
32280188
32280187
32280186
32280185
32280184
32280183
32280182
32280181
32280180
32280179
32280178
32280177
32280176
32280175
32280174
32280173
32280172
32280170
32280169
32280168
32280167
32280166
32280165
32280164
32280163
32280162
32280161
32280160
32280159
32280158
32280157
32280156
32280155
32280154
32280153
32280152
32280151
32280150
32280149
32280148
32280147
32280146
32280145
32280144
32280142
32280141
32280140
32280139
32280138
32280137
32280136
32280135
32280134
32280133
32280132
32280131
32280130
32280129
32280128
32280127
32280126
32280125
32280124
32280123
32280122
32280121
32280120
32280119
32280118
32280117
32280116
32280115
32280114
32280113
32280112
32280111
32280110
32280109
32280108
32280107
32280106
32280105
32280104
32280103
32280102
32280101
32280100
32280099
32280098
32280097
32280096
32280094
32280093
32280092
32280091
32280090
32280089
32280088
32280087
32280086
32280085
32280084
32280083
32280082
32280081
32280080
32280079
32280078
32280077
32280076
32280075
32280074
32280073
32280072
32280071
32280070
32280069
32280068
32280067
32280066
32280065
32280064
32280063
32280062
32280061
32280060
32280059
32280058
32280057
32280056
32280055
32280054
32280053
32280052
32280051
32280050
32280049
32280047
32280046
32280045
32280044
32280043
32280042
32280041
32280040
32280039
32280038
32280037
32280036
32280035
32280034
32280033
32280032
32280031
32280030
32280029
32280028
32280027
32280026
32280025
32280024
32280023
32280022
32280021
32280020
32280019
32280018
32280017
32280016
32280015
32280014
32280013
32280012
32280011
32280010
32280009
32280008
32280007
32280006
32280005
32280004
32280003
32280002
32280001
32280000
32279999
32279998
32279997
32279996
32279995
32279994
32279993
32279992
32279991
32279990
32279989
32279988
32279987
32279986
32279985
32279984
32279983
32279982
32279981
32279980
32279979
32279978
32279977
32279976
32279975
32279974
32279972
32279971
32279970
32279969
32279968
32279967
32279966
32279965
32279964
32279963
32279962
32279961
32279960
32279959
32279958
32279957
32279956
32279955
32279954
32279953
32279952
32279951
32279950
32279949
32279948
32279947
32279946
32279945
32279944
32279943
32279942
32279941
32279940
32279939
32279938
32279937
32279936
32279935
32279934
32279933
32279932
32279931
32279930
32279929
32279928
32279927
32279926
32279925
32279924
32279923
32279922
32279921
32279920
32279919
32279918
32279917
32279916
32279915
32279914
32279913
32279912
32279911
32279910
32279909
32279908
32279907
32279906
32279905
32279904
32279903
32279902
32279901
32279900
32279899
32279898
32279897
32279896
32279895
32279894
32279893
32279892
32279891
32279890
32279889
32279888
32279887
32279886
32279885
32279884
32279883
32279882
32279881
32279880
32279879
32279878
32279877
32279876
32279875
32279874
32279873
32279872
32279871
32279870
32279869
32279868
32279867
32279866
32279865
32279864
32279863
32279862
32279861
32279860
32279859
32279858
32279857
32279856
32279855
32279854
32279853
32279852
32279851
32279850
32279849
32279848
32279847
32279846
32279844
32279843
32279842
32279841
32279840
32279839
32279838
32279837
32279836
32279835
32279834
32279833
32279832
32279831
32279830
32279829
32279828
32279827
32279826
32279825
32279824
32279823
32279822
32279821
32279819
32279818
32279817
32279816
32279815
32279814
32279813
32279812
32279811
32279809
32279808
32279807
32279806
32279805
32279804
32279803
32279802
32279801
32279800
32279799
32279798
32279797
32279796
32279795
32279794
32279793
32279792
32279791
32279790
32279789
32279788
32279787
32279786
32279785
32279784
32279782
32279781
32279780
32279779
32279778
32279777
32279776
32279775
32279774
32279773
32279772
32279771
32279770
32279769
32279768
32279767
32279766
32279765
32279764
32279763
32279762
32279761
32279760
32279759
32279758
32279757
32279756
32279755
32279754
32279753
32279752
32279751
32279750
32279749
32279748
32279747
32279746
32279745
32279744
32279743
32279742
32279741
32279740
32279739
32279738
32279737
32279736
32279735
32279734
32279733
32279732
32279731
32279730
32279729
32279728
32279727
32279726
32279725
32279724
32279723
32279722
32279721
32279720
32279719
32279718
32279717
32279716
32279715
32279714
32279713
32279712
32279711
32279710
32279709
32279708
32279707
32279706
32279705
32279704
32279703
32279702
32279701
32279700
32279699
32279698
32279697
32279696
32279695
32279694
32279693
32279692
32279691
32279690
32279689
32279688
32279687
32279686
32279685
32279684
32279683
32279682
32279680
32279679
32279678
32279677
32279676
32279675
32279674
32279673
32279672
32279671
32279670
32279669
32279668
32279667
32279666
32279665
32279664
32279663
32279662
32279661
32279660
32279659
32279658
32279657
32279656
32279655
32279654
32279653
32279652
32279651
32279650
32279649
32279648
32279647
32279646
32279645
32279644
32279643
32279642
32279641
32279640
32279639
32279638
32279637
32279636
32279635
32279634
32279633
32279632
32279631
32279630
32279629
32279628
32279627
32279626
32279625
32279624
32279623
32279622
32279621
32279620
32279619
32279618
32279617
32279616
32279615
32279614
32279613
32279612
32279611
32279610
32279609
32279608
32279607
32279606
32279605
32279604
32279603
32279602
32279601
32279599
32279598
32279597
32279596
32279595
32279594
32279593
32279592
32279591
32279590
32279589
32279588
32279587
32279586
32279585
32279584
32279583
32279582
32279581
32279580
32279579
32279578
32279577
32279576
32279575
32279574
32279573
32279572
32279571
32279570
32279569
32279568
32279567
32279566
32279565
32279563
32279562
32279561
32279560
32279559
32279558
32279557
32279556
32279555
32279554
32279553
32279552
32279551
32279550
32279549
32279548
32279547
32279546
32279545
32279544
32279543
32279542
32279541
32279540
32279539
32279538
32279537
32279536
32279535
32279534
32279533
32279532
32279531
32279530
32279529
32279528
32279527
32279526
32279525
32279524
32279523
32279522
32279521
32279520
32279519
32279518
32279517
32279516
32279515
32279514
32279513
32279512
32279511
32279510
32279509
32279508
32279507
32279506
32279505
32279504
32279503
32279502
32279501
32279500
32279499
32279498
32279497
32279496
32279495
32279494
32279493
32279492
32279491
32279490
32279489
32279488
32279487
32279486
32279485
32279484
32279483
32279482
32279481
32279480
32279479
32279478
32279477
32279476
32279475
32279474
32279473
32279472
32279471
32279470
32279469
32279468
32279467
32279466
32279465
32279464
32279462
32279461
32279460
32279459
32279458
32279457
32279456
32279455
32279454
32279453
32279452
32279451
32279450
32279449
32279448
32279447
32279446
32279445
32279444
32279443
32279442
32279441
32279440
32279439
32279438
32279437
32279436
32279435
32279434
32279433
32279432
32279431
32279430
32279429
32279428
32279427
32279426
32279425
32279424
32279423
32279422
32279421
32279420
32279419
32279418
32279417
32279416
32279415
32279414
32279413
32279412
32279411
32279410
32279409
32279408
32279407
32279406
32279405
32279404
32279403
32279402
32279401
32279400
32279399
32279398
32279397
32279396
32279395
32279394
32279393
32279392
32279391
32279390
32279389
32279388
32279387
32279386
32279385
32279384
32279383
32279382
32279381
32279380
32279379
32279378
32279377
32279376
32279375
32279374
32279373
32279372
32279371
32279370
32279369
32279368
32279367
32279366
32279365
32279364
32279363
32279362
32279361
32279360
32279359
32279358
32279357
32279356
32279355
32279354
32279353
32279352
32279351
32279350
32279349
32279348
32279347
32279346
32279345
32279344
32279343
32279342
32279341
32279340
32279339
32279338
32279337
32279336
32279335
32279334
32279333
32279332
32279331
32279330
32279328
32279327
32279326
32279325
32279324
32279323
32279322
32279321
32279320
32279319
32279318
32279317
32279316
32279315
32279314
32279313
32279312
32279311
32279310
32279309
32279308
32279307
32279306
32279305
32279304
32279303
32279302
32279301
32279300
32279299
32279298
32279296
32279295
32279294
32279293
32279292
32279291
32279290
32279289
32279288
32279287
32279286
32279285
32279284
32279283
32279282
32279281
32279280
32279279
32279278
32279277
32279276
32279275
32279274
32279273
32279272
32279271
32279270
32279269
32279268
32279267
32279266
32279265
32279264
32279263
32279262
32279261
32279260
32279259
32279258
32279257
32279256
32279255
32279254
32279253
32279252
32279251
32279250
32279249
32279248
32279247
32279246
32279245
32279244
32279243
32279242
32279241
32279239
32279238
32279237
32279236
32279235
32279234
32279233
32279232
32279231
32279230
32279229
32279228
32279226
32279225
32279224
32279223
32279222
32279221
32279220
32279219
32279218
32279217
32279216
32279214
32279213
32279212
32279211
32279209
32279208
32279207
32279206
32279205
32279204
32279203
32279202
32279201
32279200
32279199
32279198
32279196
32279195
32279194
32279193
32279192
32279191
32279190
32279189
32279188
32279187
32279186
32279185
32279184
32279183
32279182
32279181
32279180
32279179
32279178
32279177
32279176
32279175
32279174
32279173
32279172
32279171
32279170
32279169
32279168
32279167
32279166
32279165
32279164
32279163
32279162
32279161
32279160
32279159
32279158
32279157
32279156
32279155
32279154
32279153
32279152
32279151
32279150
32279149
32279148
32279147
32279146
32279145
32279144
32279143
32279142
32279140
32279139
32279138
32279137
32279136
32279134
32279133
32279132
32279131
32279130
32279129
32279127
32279126
32279125
32279124
32279123
32279122
32279121
32279120
32279119
32279118
32279117
32279116
32279115
32279114
32279113
32279112
32279111
32279110
32279109
32279108
32279107
32279106
32279105
32279104
32279103
32279102
32279101
32279100
32279099
32279098
32279097
32279096
32279095
32279094
32279093
32279092
32279091
32279090
32279089
32279088
32279087
32279086
32279085
32279084
32279083
32279082
32279081
32279080
32279079
32279078
32279077
32279076
32279075
32279074
32279073
32279072
32279071
32279070
32279069
32279068
32279067
32279066
32279065
32279064
32279063
32279062
32279061
32279060
32279059
32279058
32279057
32279056
32279055
32279054
32279053
32279052
32279051
32279050
32279049
32279048
32279047
32279046
32279045
32279044
32279043
32279042
32279041
32279040
32279039
32279038
32279037
32279036
32279035
32279034
32279033
32279032
32279031
32279030
32279029
32279028
32279027
32279026
32279025
32279024
32279023
32279022
32279020
32279019
32279018
32279017
32279016
32279015
32279014
32279013
32279012
32279011
32279010
32279009
32279008
32279007
32279006
32279005
32279004
32279003
32279002
32279001
32279000
32278999
32278998
32278997
32278996
32278995
32278994
32278993
32278992
32278991
32278990
32278989
32278988
32278987
32278986
32278985
32278984
32278983
32278982
32278981
32278980
32278979
32278977
32278976
32278975
32278974
32278973
32278972
32278971
32278970
32278969
32278968
32278966
32278965
32278964
32278963
32278962
32278961
32278960
32278959
32278958
32278957
32278956
32278955
32278954
32278953
32278952
32278951
32278950
32278949
32278948
32278947
32278946
32278945
32278944
32278943
32278942
32278941
32278940
32278939
32278938
32278937
32278936
32278935
32278934
32278933
32278932
32278931
32278930
32278929
32278928
32278927
32278926
32278925
32278924
32278923
32278922
32278921
32278920
32278919
32278918
32278917
32278916
32278915
32278914
32278913
32278912
32278911
32278910
32278909
32278908
32278907
32278906
32278905
32278904
32278903
32278902
32278901
32278900
32278899
32278898
32278897
32278896
32278895
32278894
32278893
32278892
32278891
32278890
32278889
32278888
32278887
32278886
32278885
32278884
32278883
32278882
32278881
32278880
32278878
32278877
32278876
32278875
32278874
32278873
32278872
32278871
32278870
32278869
32278868
32278867
32278866
32278865
32278864
32278863
32278862
32278861
32278860
32278859
32278858
32278857
32278856
32278855
32278854
32278853
32278852
32278850
32278849
32278848
32278847
32278846
32278845
32278844
32278843
32278842
32278841
32278840
32278839
32278838
32278837
32278836
32278835
32278834
32278833
32278832
32278831
32278830
32278829
32278828
32278827
32278826
32278825
32278824
32278823
32278822
32278821
32278820
32278819
32278818
32278817
32278816
32278815
32278814
32278813
32278812
32278811
32278810
32278809
32278808
32278807
32278806
32278805
32278804
32278803
32278802
32278801
32278800
32278799
32278798
32278797
32278796
32278795
32278794
32278793
32278792
32278791
32278790
32278789
32278788
32278787
32278785
32278783
32278782
32278781
32278780
32278779
32278778
32278777
32278776
32278775
32278774
32278773
32278772
32278771
32278770
32278769
32278768
32278767
32278766
32278765
32278764
32278763
32278762
32278761
32278760
32278759
32278758
32278757
32278756
32278755
32278754
32278753
32278752
32278751
32278750
32278749
32278748
32278747
32278746
32278745
32278744
32278743
32278742
32278741
32278740
32278739
32278738
32278737
32278736
32278735
32278734
32278733
32278732
32278731
32278730
32278729
32278728
32278727
32278726
32278725
32278724
32278723
32278722
32278721
32278720
32278719
32278718
32278717
32278716
32278715
32278714
32278713
32278712
32278711
32278710
32278709
32278708
32278707
32278706
32278705
32278704
32278703
32278702
32278701
32278700
32278699
32278698
32278697
32278696
32278695
32278694
32278693
32278692
32278691
32278690
32278689
32278688
32278687
32278686
32278685
32278684
32278683
32278682
32278681
32278680
32278679
32278678
32278677
32278676
32278675
32278674
32278673
32278672
32278671
32278670
32278669
32278668
32278667
32278666
32278665
32278664
32278663
32278662
32278661
32278659
32278658
32278657
32278656
32278655
32278654
32278653
32278652
32278651
32278650
32278649
32278648
32278647
32278646
32278645
32278644
32278643
32278642
32278641
32278640
32278639
32278638
32278637
32278636
32278635
32278634
32278633
32278632
32278631
32278630
32278629
32278628
32278627
32278626
32278625
32278624
32278623
32278622
32278621
32278620
32278619
32278618
32278617
32278616
32278615
32278614
32278613
32278612
32278611
32278610
32278609
32278608
32278607
32278606
32278605
32278604
32278603
32278602
32278601
32278600
32278599
32278598
32278597
32278596
32278595
32278594
32278593
32278592
32278591
32278590
32278589
32278588
32278587
32278586
32278585
32278584
32278583
32278582
32278581
32278580
32278579
32278578
32278577
32278576
32278575
32278574
32278573
32278572
32278571
32278570
32278569
32278568
32278567
32278566
32278565
32278564
32278563
32278562
32278561
32278560
32278559
32278558
32278557
32278556
32278555
32278554
32278553
32278552
32278551
32278550
32278549
32278548
32278547
32278546
32278545
32278544
32278543
32278542
32278541
32278540
32278539
32278538
32278537
32278536
32278535
32278534
32278533
32278532
32278531
32278530
32278529
32278528
32278527
32278526
32278525
32278524
32278523
32278522
32278521
32278520
32278519
32278518
32278517
32278516
32278515
32278514
32278513
32278512
32278511
32278510
32278509
32278508
32278507
32278506
32278505
32278504
32278503
32278502
32278501
32278500
32278499
32278498
32278497
32278496
32278495
32278494
32278493
32278491
32278490
32278489
32278488
32278487
32278486
32278485
32278484
32278483
32278482
32278481
32278480
32278479
32278478
32278477
32278476
32278475
32278474
32278472
32278471
32278470
32278469
32278468
32278467
32278466
32278465
32278464
32278463
32278462
32278461
32278460
32278459
32278458
32278457
32278456
32278455
32278454
32278453
32278452
32278451
32278450
32278449
32278448
32278447
32278446
32278445
32278444
32278443
32278442
32278441
32278440
32278439
32278438
32278437
32278436
32278435
32278434
32278433
32278432
32278431
32278430
32278429
32278428
32278427
32278426
32278425
32278424
32278423
32278422
32278421
32278420
32278419
32278418
32278417
32278416
32278415
32278414
32278413
32278412
32278411
32278410
32278408
32278407
32278406
32278405
32278404
32278403
32278402
32278401
32278400
32278399
32278398
32278397
32278396
32278395
32278394
32278393
32278392
32278391
32278390
32278389
32278388
32278387
32278386
32278385
32278384
32278382
32278381
32278380
32278379
32278378
32278377
32278376
32278375
32278374
32278373
32278372
32278371
32278370
32278369
32278368
32278367
32278366
32278365
32278364
32278363
32278362
32278361
32278360
32278359
32278358
32278357
32278356
32278355
32278354
32278353
32278352
32278351
32278350
32278349
32278348
32278347
32278346
32278345
32278344
32278343
32278342
32278341
32278340
32278339
32278338
32278337
32278336
32278335
32278334
32278333
32278332
32278331
32278330
32278329
32278328
32278327
32278326
32278325
32278324
32278323
32278322
32278321
32278320
32278319
32278318
32278317
32278316
32278315
32278314
32278313
32278312
32278311
32278310
32278309
32278308
32278307
32278306
32278305
32278304
32278303
32278302
32278301
32278300
32278299
32278298
32278297
32278296
32278295
32278294
32278293
32278292
32278290
32278289
32278288
32278287
32278286
32278285
32278284
32278283
32278282
32278281
32278280
32278279
32278278
32278277
32278276
32278275
32278274
32278273
32278272
32278271
32278270
32278269
32278268
32278267
32278266
32278265
32278264
32278263
32278262
32278261
32278260
32278259
32278258
32278257
32278256
32278255
32278254
32278253
32278251
32278250
32278249
32278248
32278247
32278246
32278245
32278244
32278242
32278241
32278240
32278239
32278238
32278237
32278236
32278235
32278234
32278233
32278232
32278231
32278230
32278229
32278228
32278227
32278226
32278225
32278224
32278223
32278222
32278221
32278220
32278219
32278218
32278217
32278216
32278215
32278214
32278213
32278212
32278211
32278210
32278209
32278208
32278207
32278206
32278205
32278204
32278203
32278202
32278201
32278200
32278199
32278198
32278197
32278196
32278195
32278194
32278193
32278192
32278191
32278190
32278189
32278188
32278187
32278186
32278185
32278184
32278183
32278182
32278181
32278180
32278179
32278178
32278177
32278176
32278175
32278173
32278172
32278171
32278170
32278168
32278167
32278166
32278165
32278164
32278163
32278162
32278161
32278160
32278159
32278158
32278157
32278156
32278155
32278154
32278153
32278152
32278151
32278150
32278149
32278148
32278147
32278146
32278145
32278143
32278142
32278141
32278140
32278139
32278136
32278135
32278134
32278133
32278132
32278131
32278130
32278129
32278128
32278127
32278126
32278125
32278124
32278122
32278121
32278120
32278119
32278118
32278117
32278116
32278114
32278113
32278112
32278111
32278110
32278109
32278108
32278107
32278106
32278105
32278104
32278103
32278102
32278101
32278100
32278099
32278098
32278097
32278096
32278095
32278094
32278093
32278092
32278091
32278090
32278089
32278088
32278087
32278086
32278085
32278084
32278083
32278082
32278081
32278080
32278079
32278078
32278077
32278076
32278075
32278074
32278073
32278072
32278071
32278070
32278069
32278068
32278067
32278066
32278065
32278064
32278063
32278062
32278061
32278060
32278059
32278058
32278057
32278056
32278055
32278054
32278053
32278052
32278051
32278050
32278049
32278048
32278047
32278046
32278045
32278044
32278043
32278042
32278041
32278040
32278039
32278038
32278037
32278036
32278035
32278034
32278033
32278032
32278031
32278030
32278029
32278028
32278027
32278026
32278025
32278024
32278023
32278022
32278020
32278019
32278018
32278017
32278016
32278015
32278014
32278013
32278012
32278011
32278010
32278009
32278007
32278006
32278005
32278004
32278003
32278002
32278001
32278000
32277999
32277998
32277997
32277996
32277995
32277994
32277993
32277991
32277990
32277989
32277988
32277987
32277986
32277985
32277984
32277983
\ No newline at end of file
32494267
32494268
32494269
32494270
32494271
32494272
32494273
32494274
32494275
32494276
32494277
32494278
32494279
32494280
32494281
32494282
32494283
32494284
32494285
32494286
32494287
32494288
32494289
32494290
32494291
32494292
32494293
32494294
32494295
32494296
32494297
32494298
32494299
32494300
32494301
32494302
32494303
32494304
32494305
32494306
32494307
32494308
32494309
32494310
32494311
32494312
32494313
32494314
32494315
32494316
32494317
32494318
32494319
32494320
32494321
32494322
32494323
32494324
32494325
32494326
32494327
32494328
32494329
32494330
32494331
32494332
32494333
32494334
32494335
32494336
32494337
32494338
32494339
32494340
32494341
32494342
32494343
32494344
32494345
32494346
32494347
32494348
32494349
32494350
32494351
32494352
32494353
32494354
32494355
32494356
32494357
32494358
32494359
32494360
32494361
32494362
32494363
32494364
32494365
32494366
32494367
32494368
32494369
32494370
32494371
32494372
32494373
32494374
32494375
32494376
32494377
32494378
32494379
32494380
32494381
32494382
32494383
32494384
32494385
32494386
32494387
32494388
32494389
32494390
32494391
32494392
32494393
32494394
32494395
32494396
32494397
32494398
32494399
32494400
32494401
32494402
32494403
32494404
32494405
32494406
32494407
32494408
32494409
32494410
32494411
32494412
32494413
32494414
32494415
32494416
32494417
32494418
32494419
32494420
32494421
32494422
32494423
32494424
32494425
32494426
32494427
32494428
32494429
32494430
32494431
32494432
32494433
32494434
32494435
32494436
32494437
32494438
32494439
32494440
32494441
32494442
32494443
32494444
32494445
32494446
32494447
32494448
32494449
32494450
32494451
32494452
32494453
32494454
32494455
32494456
32494457
32494458
32494459
32494460
32494461
32494462
32494463
32494464
32494465
32494466
32494467
32494468
32494469
32494470
32494471
32494472
32494473
32494474
32494475
32494476
32494477
32494478
32494479
32494480
32494481
32494482
32494483
32494484
32494485
32494486
32494487
32494488
32494489
32494490
32494491
32494492
32494493
32494494
32494495
32494496
32494497
32494498
32494499
32494500
32494501
32494502
32494503
32494504
32494505
32494506
32494507
32494508
32494509
32494510
32494511
32494512
32494513
32494514
32494515
32494516
32494517
32494518
32494519
32494520
32494521
32494522
32494523
32494524
32494525
32494526
32494527
32494528
32494529
32494530
32494531
32494532
32494533
32494534
32494535
32494536
32494537
32494538
32494539
32494540
32494541
32494542
32494543
32494544
32494545
32494546
32494547
32494548
32494549
32494550
32494551
32494552
32494553
32494554
32494555
32494556
32494557
32494558
32494559
32494560
32494561
32494562
32494563
32494564
32494565
32494566
32494567
32494568
32494569
32494570
32494571
32494572
32494573
32494574
32494575
32494576
32494577
32494578
32494579
32494580
32494581
32494582
32494583
32494584
32494585
32494586
32494587
32494588
32494589
32494590
32494591
32494592
32494593
32494594
32494595
32494596
32494597
32494598
32494599
32494600
32494601
32494602
32494603
32494604
32494605
32494606
32494607
32494608
32494609
32494610
32494611
32494612
32494613
32494614
32494615
32494616
32494617
32494618
32494619
32494620
32494621
32494622
32494623
32494624
32494625
32494626
32494627
32494628
32494629
32494630
32494631
32494632
32494633
32494634
32494636
32494637
32494638
32494639
32494640
32494641
32494642
32494643
32494644
32494645
32494646
32494647
32494648
32494649
32494650
32494651
32494652
32494653
32494654
32494655
32494656
32494657
32494658
32494659
32494660
32494661
32494662
32494663
32494664
32494665
32494666
32494667
32494668
32494669
32494670
32494671
32494672
32494673
32494674
32494675
32494676
32494677
32494678
32494679
32494680
32494681
32494682
32494683
32494684
32494685
32494686
32494687
32494688
32494689
32494690
32494691
32494692
32494693
32494694
32494695
32494696
32494697
32494698
32494699
32494700
32494701
32494702
32494703
32494704
32494705
32494706
32494707
32494708
32494709
32494710
32494711
32494712
32494713
32494714
32494715
32494716
32494717
32494718
32494719
32494720
32494721
32494722
32494723
32494724
32494725
32494726
32494727
32494728
32494729
32494730
32494731
32494732
32494733
32494734
32494736
32494737
32494738
32494739
32494740
32494741
32494742
32494743
32494744
32494745
32494746
32494747
32494748
32494749
32494750
32494751
32494752
32494753
32494754
32494755
32494756
32494757
32494758
32494759
32494760
32494761
32494762
32494763
32494764
32494765
32494766
32494767
32494768
32494769
32494770
32494771
32494772
32494773
32494774
32494775
32494776
32494777
32494778
32494779
32494780
32494781
32494782
32494783
32494784
32494785
32494786
32494787
32494788
32494789
32494790
32494791
32494792
32494793
32494794
32494795
32494796
32494797
32494798
32494799
32494800
32494801
32494802
32494803
32494804
32494805
32494806
32494807
32494808
32494809
32494810
32494811
32494812
32494813
32494814
32494815
32494816
32494817
32494818
32494819
32494820
32494821
32494822
32494823
32494824
32494825
32494826
32494827
32494828
32494829
32494830
32494831
32494832
32494833
32494834
32494835
32494836
32494837
32494838
32494839
32494840
32494841
32494842
32494843
32494844
32494845
32494846
32494847
32494848
32494849
32494850
32494851
32494852
32494853
32494854
32494855
32494856
32494857
32494858
32494859
32494860
32494861
32494862
32494863
32494864
32494865
32494866
32494867
32494868
32494869
32494870
32494871
32494872
32494873
32494874
32494875
32494876
32494877
32494878
32494879
32494880
32494881
32494882
32494883
32494884
32494885
32494886
32494887
32494888
32494889
32494890
32494891
32494892
32494893
32494894
32494895
32494896
32494897
32494898
32494899
32494900
32494901
32494902
32494903
32494904
32494905
32494906
32494907
32494908
32494909
32494910
32494911
32494912
32494913
32494914
32494915
32494916
32494917
32494918
32494919
32494920
32494921
32494922
32494923
32494924
32494925
32494926
32494927
32494928
32494929
32494930
32494932
32494933
32494934
32494935
32494936
32494937
32494938
32494939
32494940
32494941
32494942
32494943
32494944
32494945
32494946
32494947
32494948
32494949
32494950
32494951
32494952
32494953
32494954
32494955
32494956
32494957
32494958
32494959
32494960
32494961
32494962
32494963
32494964
32494965
32494966
32494967
32494968
32494969
32494970
32494971
32494972
32494973
32494974
32494975
32494976
32494977
32494978
32494979
32494980
32494981
32494982
32494983
32494984
32494985
32494986
32494987
32494988
32494989
32494990
32494991
32494992
32494993
32494994
32494995
32494996
32494997
32494998
32494999
32495000
32495001
32495002
32495003
32495004
32495005
32495006
32495007
32495008
32495009
32495010
32495011
32495012
32495013
32495014
32495015
32495016
32495017
32495018
32495019
32495020
32495021
32495022
32495023
32495024
32495025
32495026
32495027
32495028
32495029
32495030
32495031
32495032
32495033
32495034
32495035
32495036
32495037
32495038
32495039
32495040
32495041
32495042
32495043
32495044
32495045
32495046
32495047
32495048
32495049
32495050
32495051
32495052
32495053
32495054
32495055
32495056
32495057
32495058
32495059
32495060
32495061
32495062
32495063
32495064
32495065
32495066
32495067
32495068
32495069
32495070
32495071
32495072
32495073
32495074
32495075
32495076
32495077
32495078
32495079
32495080
32495081
32495082
32495083
32495084
32495085
32495086
32495087
32495088
32495089
32495090
32495091
32495092
32495093
32495094
32495095
32495096
32495097
32495098
32495099
32495100
32495101
32495102
32495103
32495104
32495105
32495106
32495107
32495108
32495109
32495110
32495111
32495112
32495113
32495114
32495115
32495116
32495117
32495118
32495119
32495120
32495121
32495122
32495123
32495124
32495125
32495126
32495127
32495128
32495129
32495130
32495131
32495132
32495133
32495134
32495135
32495136
32495137
32495138
32495139
32495140
32495141
32495142
32495143
32495144
32495145
32495146
32495147
32495148
32495149
32495150
32495151
32495152
32495153
32495154
32495155
32495156
32495157
32495158
32495159
32495160
32495161
32495162
32495163
32495164
32495165
32495166
32495167
32495168
32495169
32495170
32495171
32495172
32495173
32495174
32495175
32495176
32495177
32495178
32495179
32495180
32495181
32495182
32495183
32495184
32495185
32495186
32495187
32495188
32495189
32495190
32495191
32495192
32495193
32495194
32495195
32495196
32495197
32495198
32495199
32495200
32495201
32495202
32495203
32495204
32495205
32495206
32495207
32495208
32495209
32495210
32495211
32495212
32495213
32495214
32495215
32495216
32495217
32495218
32495219
32495220
32495221
32495222
32495223
32495224
32495225
32495226
32495228
32495229
32495230
32495231
32495232
32495233
32495234
32495235
32495236
32495237
32495238
32495239
32495240
32495241
32495242
32495243
32495244
32495245
32495246
32495247
32495248
32495249
32495250
32495251
32495252
32495253
32495254
32495255
32495256
32495257
32495258
32495259
32495260
32495261
32495262
32495263
32495264
32495265
32495266
32495267
32495268
32495269
32495270
32495271
32495272
32495273
32495274
32495275
32495276
32495277
32495278
32495279
32495280
32495281
32495282
32495283
32495284
32495285
32495286
32495287
32495288
32495289
32495290
32495291
32495292
32495293
32495294
32495295
32495296
32495297
32495298
32495299
32495300
32495301
32495302
32495303
32495304
32495305
32495306
32495307
32495308
32495309
32495310
32495311
32495312
32495313
32495314
32495315
32495316
32495317
32495318
32495319
32495320
32495321
32495322
32495323
32495324
32495325
32495326
32495327
32495328
32495329
32495330
32495331
32495332
32495333
32495334
32495335
32495336
32495337
32495338
32495339
32495340
32495341
32495342
32495343
32495344
32495345
32495346
32495347
32495348
32495349
32495350
32495351
32495352
32495353
32495354
32495355
32495356
32495357
32495358
32495359
32495360
32495361
32495362
32495363
32495364
32495365
32495366
32495367
32495368
32495369
32495370
32495371
32495372
32495373
32495374
32495375
32495376
32495377
32495378
32495379
32495380
32495381
32495382
32495383
32495384
32495385
32495386
32495387
32495388
32495389
32495390
32495391
32495392
32495393
32495394
32495395
32495396
32495397
32495398
32495399
32495400
32495401
32495402
32495403
32495404
32495405
32495406
32495407
32495408
32495409
32495410
32495411
32495412
32495413
32495414
32495415
32495416
32495417
32495418
32495419
32495420
32495421
32495422
32495423
32495424
32495425
32495426
32495427
32495428
32495429
32495430
32495431
32495432
32495433
32495434
32495435
32495436
32495437
32495438
32495439
32495440
32495441
32495442
32495443
32495444
32495445
32495446
32495447
32495448
32495449
32495450
32495451
32495452
32495453
32495454
32495455
32495457
32495458
32495459
32495460
32495461
32495462
32495463
32495464
32495465
32495466
32495467
32495468
32495469
32495470
32495471
32495472
32495473
32495474
32495475
32495476
32495477
32495478
32495479
32495480
32495481
32495482
32495483
32495484
32495485
32495486
32495487
32495488
32495489
32495490
32495491
32495492
32495493
32495494
32495495
32495496
32495497
32495498
32495499
32495500
32495501
32495502
32495503
32495504
32495505
32495506
32495507
32495508
32495509
32495510
32495511
32495512
32495513
32495514
32495515
32495516
32495517
32495518
32495519
32495520
32495521
32495522
32495523
32495524
32495526
32495527
32495528
32495529
32495530
32495531
32495532
32495533
32495534
32495535
32495536
32495537
32495538
32495539
32495540
32495541
32495542
32495543
32495544
32495545
32495546
32495547
32495548
32495549
32495550
32495551
32495552
32495553
32495554
32495555
32495556
32495557
32495558
32495559
32495560
32495561
32495562
32495563
32495564
32495565
32495566
32495567
32495568
32495569
32495570
32495571
32495572
32495573
32495574
32495575
32495576
32495577
32495578
32495579
32495580
32495581
32495582
32495583
32495584
32495585
32495586
32495587
32495588
32495589
32495590
32495591
32495592
32495593
32495594
32495595
32495596
32495597
32495598
32495599
32495600
32495601
32495602
32495603
32495604
32495605
32495606
32495607
32495608
32495609
32495610
32495611
32495612
32495613
32495614
32495615
32495616
32495617
32495618
32495619
32495620
32495621
32495622
32495623
32495624
32495625
32495626
32495627
32495628
32495629
32495630
32495631
32495632
32495633
32495634
32495635
32495636
32495637
32495638
32495639
32495640
32495641
32495642
32495643
32495644
32495645
32495646
32495647
32495648
32495649
32495650
32495651
32495652
32495653
32495654
32495655
32495656
32495657
32495658
32495659
32495660
32495661
32495662
32495663
32495664
32495665
32495666
32495667
32495668
32495669
32495670
32495671
32495672
32495673
32495674
32495675
32495676
32495677
32495678
32495679
32495680
32495681
32495682
32495683
32495684
32495685
32495686
32495687
32495688
32495689
32495690
32495691
32495692
32495693
32495694
32495695
32495696
32495697
32495698
32495699
32495700
32495701
32495702
32495703
32495704
32495705
32495706
32495707
32495708
32495709
32495710
32495711
32495712
32495713
32495714
32495715
32495716
32495717
32495718
32495719
32495720
32495721
32495722
32495723
32495724
32495725
32495726
32495727
32495728
32495729
32495730
32495731
32495732
32495733
32495734
32495735
32495736
32495737
32495738
32495739
32495740
32495741
32495742
32495743
32495744
32495745
32495746
32495747
32495748
32495749
32495750
32495751
32495752
32495753
32495754
32495755
32495756
32495757
32495758
32495759
32495760
32495761
32495762
32495763
32495764
32495765
32495766
32495767
32495768
32495769
32495770
32495771
32495772
32495773
32495774
32495775
32495776
32495777
32495778
32495779
32495780
32495781
32495782
32495783
32495784
32495785
32495786
32495787
32495788
32495789
32495790
32495791
32495792
32495793
32495794
32495795
32495796
32495797
32495798
32495799
32495800
32495801
32495802
32495803
32495804
32495805
32495806
32495807
32495808
32495809
32495810
32495811
32495812
32495813
32495814
32495815
32495816
32495817
32495818
32495819
32495820
32495821
32495822
32495823
32495824
32495825
32495826
32495827
32495828
32495829
32495830
32495831
32495832
32495833
32495834
32495835
32495836
32495837
32495838
32495839
32495840
32495841
32495842
32495843
32495844
32495845
32495846
32495847
32495848
32495849
32495850
32495851
32495852
32495853
32495854
32495855
32495856
32495857
32495858
32495859
32495860
32495861
32495862
32495863
32495864
32495865
32495866
32495867
32495868
32495869
32495870
32495871
32495872
32495873
32495874
32495875
32495876
32495877
32495878
32495879
32495880
32495881
32495882
32495883
32495884
32495885
32495886
32495887
32495888
32495889
32495890
32495891
32495892
32495893
32495894
32495895
32495896
32495897
32495898
32495899
32495900
32495901
32495902
32495903
32495904
32495905
32495906
32495907
32495908
32495909
32495910
32495911
32495912
32495913
32495914
32495915
32495916
32495917
32495918
32495919
32495920
32495921
32495922
32495923
32495924
32495925
32495926
32495927
32495928
32495929
32495930
32495931
32495932
32495933
32495934
32495935
32495936
32495937
32495938
32495939
32495940
32495941
32495942
32495943
32495944
32495945
32495946
32495947
32495948
32495949
32495950
32495951
32495952
32495953
32495954
32495955
32495956
32495957
32495958
32495959
32495960
32495961
32495962
32495963
32495964
32495965
32495966
32495967
32495968
32495969
32495970
32495971
32495972
32495973
32495974
32495975
32495976
32495977
32495978
32495979
32495980
32495981
32495982
32495983
32495984
32495985
32495986
32495987
32495988
32495989
32495990
32495991
32495992
32495993
32495994
32495995
32495996
32495997
32495998
32495999
32496000
32496001
32496002
32496003
32496004
32496005
32496006
32496007
32496008
32496009
32496010
32496011
32496012
32496013
32496014
32496015
32496016
32496017
32496018
32496019
32496020
32496021
32496022
32496023
32496024
32496025
32496026
32496027
32496028
32496029
32496030
32496031
32496032
32496033
32496034
32496035
32496036
32496037
32496038
32496039
32496040
32496041
32496042
32496043
32496044
32496045
32496046
32496047
32496048
32496049
32496050
32496051
32496052
32496053
32496054
32496055
32496056
32496057
32496058
32496059
32496060
32496061
32496062
32496063
32496064
32496065
32496066
32496067
32496068
32496069
32496070
32496071
32496072
32496073
32496074
32496075
32496076
32496077
32496078
32496079
32496080
32496081
32496082
32496083
32496084
32496085
32496086
32496087
32496088
32496089
32496090
32496091
32496092
32496093
32496094
32496095
32496096
32496097
32496098
32496099
32496100
32496101
32496102
32496103
32496104
32496105
32496106
32496107
32496108
32496109
32496110
32496111
32496112
32496113
32496114
32496115
32496116
32496117
32496118
32496119
32496120
32496121
32496122
32496123
32496124
32496125
32496126
32496127
32496128
32496129
32496130
32496131
32496132
32496133
32496134
32496135
32496136
32496137
32496138
32496139
32496140
32496141
32496142
32496143
32496144
32496145
32496146
32496147
32496148
32496149
32496150
32496151
32496152
32496153
32496154
32496155
32496156
32496157
32496158
32496159
32496160
32496161
32496162
32496163
32496164
32496165
32496166
32496167
32496168
32496169
32496170
32496171
32496172
32496173
32496174
32496175
32496176
32496177
32496178
32496179
32496180
32496181
32496182
32496183
32496184
32496185
32496186
32496187
32496188
32496189
32496190
32496191
32496192
32496193
32496194
32496195
32496196
32496197
32496198
32496199
32496200
32496201
32496202
32496203
32496204
32496205
32496206
32496207
32496208
32496209
32496210
32496211
32496212
32496213
32496214
32496215
32496216
32496217
32496218
32496219
32496220
32496221
32496222
32496223
32496224
32496225
32496226
32496227
32496228
32496229
32496230
32496231
32496232
32496233
32496234
32496235
32496236
32496237
32496238
32496239
32496240
32496241
32496242
32496243
32496244
32496245
32496246
32496247
32496248
32496249
32496250
32496251
32496252
32496253
32496254
32496255
32496256
32496257
32496258
32496259
32496260
32496261
32496262
32496263
32496264
32496265
32496266
32496267
32496268
32496269
32496270
32496271
32496272
32496273
32496274
32496275
32496276
32496277
32496278
32496279
32496280
32496281
32496282
32496283
32496284
32496285
32496286
32496287
32496288
32496289
32496290
32496291
32496292
32496293
32496294
32496295
32496296
32496297
32496298
32496299
32496300
32496301
32496302
32496303
32496304
32496305
32496306
32496307
32496308
32496309
32496310
32496311
32496312
32496313
32496314
32496315
32496316
32496317
32496318
32496319
32496320
32496321
32496322
32496323
32496324
32496325
32496326
32496327
32496328
32496329
32496330
32496331
32496332
32496333
32496334
32496335
32496336
32496337
32496338
32496339
32496340
32496341
32496342
32496343
32496344
32496345
32496346
32496347
32496348
32496349
32496350
32496351
32496352
32496353
32496354
32496355
32496356
32496357
32496358
32496359
32496360
32496361
32496362
32496363
32496364
32496365
32496366
32496367
32496368
32496369
32496370
32496371
32496372
32496373
32496374
32496375
32496376
32496377
32496378
32496379
32496380
32496381
32496382
32496383
32496384
32496385
32496387
32496388
32496389
32496390
32496391
32496392
32496393
32496394
32496395
32496396
32496397
32496398
32496399
32496400
32496401
32496402
32496403
32496404
32496405
32496406
32496407
32496408
32496409
32496410
32496411
32496412
32496413
32496414
32496415
32496416
32496417
32496418
32496419
32496420
32496421
32496422
32496423
32496424
32496425
32496426
32496427
32496428
32496429
32496430
32496431
32496432
32496433
32496434
32496435
32496436
32496437
32496438
32496439
32496440
32496441
32496442
32496443
32496444
32496445
32496446
32496447
32496448
32496449
32496450
32496451
32496452
32496453
32496454
32496455
32496456
32496457
32496458
32496459
32496460
32496462
32496463
32496464
32496465
32496466
32496467
32496468
32496469
32496470
32496471
32496472
32496473
32496474
32496475
32496476
32496477
32496478
32496479
32496480
32496481
32496482
32496483
32496484
32496485
32496486
32496487
32496488
32496489
32496490
32496491
32496492
32496493
32496494
32496495
32496496
32496497
32496498
32496499
32496500
32496501
32496502
32496503
32496504
32496505
32496506
32496507
32496508
32496509
32496510
32496511
32496512
32496513
32496514
32496515
32496516
32496517
32496518
32496519
32496520
32496521
32496522
32496523
32496524
32496525
32496526
32496527
32496528
32496529
32496530
32496531
32496532
32496533
32496534
32496535
32496536
32496537
32496538
32496539
32496540
32496541
32496542
32496543
32496544
32496545
32496546
32496547
32496548
32496549
32496550
32496551
32496552
32496553
32496554
32496555
32496556
32496557
32496558
32496559
32496560
32496561
32496562
32496563
32496564
32496565
32496566
32496567
32496568
32496569
32496570
32496571
32496572
32496573
32496574
32496575
32496576
32496577
32496578
32496579
32496580
32496581
32496582
32496583
32496584
32496585
32496586
32496587
32496588
32496589
32496590
32496591
32496592
32496593
32496594
32496595
32496596
32496597
32496598
32496599
32496600
32496601
32496602
32496603
32496604
32496605
32496606
32496607
32496608
32496609
32496610
32496611
32496612
32496613
32496614
32496615
32496616
32496617
32496618
32496619
32496620
32496621
32496622
32496623
32496624
32496625
32496626
32496627
32496628
32496629
32496630
32496631
32496632
32496633
32496634
32496635
32496636
32496637
32496638
32496639
32496640
32496641
32496642
32496643
32496644
32496645
32496646
32496647
32496648
32496649
32496650
32496651
32496652
32496653
32496654
32496655
32496656
32496657
32496658
32496659
32496660
32496661
32496662
32496663
32496664
32496665
32496666
32496667
32496668
32496669
32496670
32496671
32496672
32496673
32496674
32496675
32496676
32496677
32496678
32496679
32496680
32496681
32496682
32496683
32496684
32496685
32496686
32496687
32496688
32496689
32496690
32496691
32496692
32496693
32496694
32496695
32496696
32496697
32496698
32496699
32496700
32496701
32496702
32496703
32496704
32496705
32496706
32496707
32496708
32496709
32496710
32496711
32496712
32496713
32496714
32496715
32496716
32496717
32496718
32496719
32496720
32496721
32496722
32496723
32496724
32496725
32496726
32496727
32496728
32496729
32496730
32496731
32496732
32496733
32496734
32496735
32496736
32496737
32496738
32496739
32496740
32496741
32496742
32496743
32496744
32496745
32496746
32496747
32496748
32496749
32496750
32496751
32496752
32496753
32496754
32496755
32496756
32496757
32496758
32496759
32496760
32496761
32496762
32496763
32496764
32496765
32496766
32496767
32496768
32496769
32496770
32496771
32496772
32496773
32496774
32496775
32496776
32496777
32496778
32496779
32496780
32496781
32496782
32496783
32496784
32496785
32496786
32496787
32496788
32496789
32496790
32496791
32496792
32496793
32496794
32496795
32496796
32496797
32496798
32496799
32496800
32496801
32496802
32496803
32496804
32496805
32496806
32496807
32496808
32496809
32496810
32496811
32496812
32496813
32496814
32496815
32496816
32496817
32496818
32496819
32496820
32496821
32496822
32496823
32496824
32496825
32496826
32496827
32496828
32496829
32496830
32496831
32496832
32496833
32496834
32496835
32496836
32496837
32496838
32496839
32496840
32496841
32496842
32496843
32496844
32496845
32496846
32496847
32496848
32496849
32496850
32496851
32496852
32496853
32496854
32496855
32496856
32496857
32496858
32496859
32496860
32496861
32496862
32496863
32496864
32496865
32496866
32496867
32496868
32496869
32496870
32496871
32496872
32496873
32496874
32496875
32496876
32496877
32496878
32496879
32496880
32496881
32496882
32496883
32496884
32496885
32496886
32496887
32496888
32496889
32496890
32496891
32496892
32496893
32496894
32496895
32496896
32496897
32496898
32496899
32496900
32496901
32496902
32496903
32496904
32496905
32496906
32496907
32496908
32496909
32496910
32496911
32496912
32496913
32496914
32496915
32496916
32496917
32496918
32496919
32496920
32496921
32496922
32496923
32496924
32496925
32496926
32496927
32496928
32496929
32496930
32496931
32496932
32496933
32496934
32496935
32496936
32496937
32496938
32496939
32496940
32496941
32496942
32496943
32496944
32496945
32496946
32496947
32496948
32496949
32496950
32496951
32496952
32496953
32496955
32496956
32496957
32496958
32496959
32496960
32496961
32496962
32496963
32496964
32496965
32496966
32496967
32496968
32496969
32496970
32496971
32496972
32496973
32496974
32496975
32496976
32496977
32496978
32496979
32496980
32496981
32496982
32496983
32496984
32496985
32496986
32496987
32496988
32496989
32496990
32496991
32496992
32496993
32496994
32496995
32496996
32496997
32496998
32496999
32497000
32497001
32497002
32497003
32497004
32497005
32497006
32497007
32497008
32497009
32497010
32497011
32497012
32497013
32497014
32497015
32497016
32497017
32497018
32497019
32497020
32497021
32497022
32497023
32497024
32497025
32497026
32497027
32497028
32497029
32497030
32497031
32497032
32497033
32497034
32497035
32497036
32497037
32497038
32497039
32497040
32497041
32497042
32497043
32497044
32497045
32497046
32497047
32497048
32497049
32497050
32497051
32497052
32497053
32497054
32497055
32497056
32497057
32497058
32497059
32497060
32497061
32497062
32497063
32497064
32497065
32497066
32497067
32497068
32497069
32497070
32497071
32497072
32497073
32497074
32497075
32497076
32497077
32497078
32497079
32497080
32497081
32497082
32497083
32497084
32497085
32497086
32497087
32497088
32497089
32497090
32497091
32497092
32497093
32497094
32497095
32497096
32497097
32497098
32497099
32497100
32497101
32497102
32497103
32497104
32497105
32497106
32497107
32497108
32497109
32497110
32497111
32497112
32497113
32497114
32497115
32497116
32497117
32497118
32497119
32497120
32497121
32497122
32497123
32497124
32497125
32497126
32497127
32497128
32497129
32497130
32497131
32497132
32497133
32497134
32497135
32497136
32497137
32497138
32497139
32497140
32497141
32497142
32497143
32497144
32497145
32497146
32497147
32497148
32497149
32497150
32497151
32497152
32497153
32497154
32497155
32497156
32497157
32497158
32497159
32497160
32497161
32497162
32497163
32497164
32497165
32497166
32497167
32497168
32497169
32497170
32497171
32497172
32497173
32497174
32497175
32497176
32497177
32497178
32497179
32497180
32497181
32497182
32497183
32497184
32497185
32497186
32497187
32497188
32497189
32497190
32497191
32497192
32497193
32497194
32497195
32497196
32497197
32497198
32497199
32497200
32497201
32497202
32497203
32497204
32497205
32497206
32497207
32497208
32497209
32497210
32497211
32497212
32497213
32497214
32497215
32497216
32497217
32497218
32497219
32497220
32497221
32497222
32497223
32497224
32497225
32497226
32497227
32497228
32497229
32497230
32497231
32497232
32497233
32497234
32497235
32497236
32497237
32497238
32497239
32497240
32497241
32497242
32497243
32497244
32497245
32497246
32497247
32497248
32497249
32497250
32497251
32497252
32497253
32497254
32497255
32497256
32497257
32497258
32497259
32497260
32497261
32497262
32497263
32497264
32497265
32497266
32497267
32497268
32497269
32497270
32497271
32497272
32497273
32497274
32497275
32497276
32497277
32497278
32497279
32497280
32497281
32497282
32497283
32497284
32497285
32497286
32497287
32497288
32497289
32497290
32497291
32497292
32497293
32497294
32497295
32497296
32497297
32497298
32497299
32497300
32497301
32497302
32497303
32497304
32497305
32497306
32497307
32497308
32497309
32497310
32497311
32497312
32497313
32497314
32497315
32497316
32497317
32497318
32497319
32497320
32497321
32497322
32497323
32497324
32497325
32497326
32497327
32497328
32497329
32497330
32497331
32497332
32497333
32497334
32497335
32497336
32497337
32497338
32497339
32497340
32497341
32497342
32497343
32497344
32497345
32497346
32497347
32497348
32497349
32497350
32497351
32497352
32497353
32497354
32497355
32497356
32497357
32497358
32497359
32497360
32497361
32497362
32497363
32497364
32497365
32497366
32497367
32497368
32497369
32497370
32497371
32497372
32497373
32497374
32497375
32497376
32497377
32497378
32497379
32497380
32497381
32497382
32497383
32497384
32497385
32497386
32497387
32497388
32497389
32497390
32497391
32497392
32497393
32497394
32497395
32497396
32497397
32497398
32497399
32497400
32497401
32497402
32497403
32497404
32497405
32497406
32497407
32497408
32497409
32497410
32497411
32497412
32497413
32497414
32497415
32497416
32497417
32497418
32497419
32497420
32497421
32497422
32497423
32497424
32497425
32497426
32497427
32497428
32497429
32497430
32497431
32497432
32497888
32497889
32497890
32497891
32497892
32497893
32497894
32497895
32497896
32497897
32497898
32497899
32497900
32497901
32497902
32497903
32497904
32497905
32497906
32497907
32497908
32497909
32497910
32497911
32497912
32497913
32497914
32497915
32497916
32497917
32497918
32497919
32497921
32497922
32497923
32497924
32497925
32497926
32497927
32497928
32497929
32497930
32497931
32497932
32497933
32497934
32497935
32497936
32497937
32497938
32497939
32497940
32497941
32497942
32497943
32497944
32497945
32497946
32497947
32497948
32497949
32497950
32497951
32497952
32497953
32497954
32497955
32497956
32497957
32497958
32497959
32497960
32497961
32497962
32497963
32497964
32497965
32497966
32497967
32497968
32497969
32497970
32497971
32497972
32497973
32497974
32497975
32497976
32497977
32497978
32497979
32497980
32497981
32497982
32497983
32497984
32497985
32497986
32497987
32497988
32497989
32497990
32497991
32497992
32497993
32497994
32497995
32497996
32497997
32497998
32497999
32498000
32498001
32498002
32498003
32498004
32498005
32498006
32498007
32498008
32498009
32498010
32498011
32498012
32498013
32498014
32498015
32498017
32498018
32498019
32498020
32498021
32498022
32498023
32498024
32498025
32498026
32498027
32498028
32498029
32498030
32498031
32498032
32498033
32498034
32498035
32498036
32498037
32498038
32498039
32498040
32498041
32498042
32498043
32498044
32498045
32498046
32498047
32498048
32498049
32498050
32498051
32498052
32498053
32498054
32498055
32498056
32498057
32498058
32498059
32498060
32498061
32498062
32498063
32498064
32498065
32498066
32498067
32498068
32498069
32498070
32498071
32498072
32498073
32498074
32498075
32498076
32498077
32498078
32498079
32498080
32498081
32498082
32498083
32498084
32498085
32498086
32498087
32498088
32498089
32498090
32498091
32498092
32498093
32498094
32498095
32498096
32498097
32498098
32498099
32498100
32498101
32498102
32498103
32498104
32498105
32498106
32498107
32498108
32498109
32498110
32498111
32498112
32498113
32498114
32498115
32498116
32498117
32498118
32498119
32498120
32498121
32498122
32498123
32498124
32498125
32498126
32498127
32498128
32498129
32498130
32498131
32498132
32498133
32498134
32498135
32498136
32498137
32498138
32498139
32498140
32498141
32498142
32498143
32498144
32498145
32498146
32498147
32498148
32498149
32498150
32498151
32498152
32498153
32498154
32498155
32498156
32498157
32498158
32498159
32498160
32498161
32498162
32498163
32498164
32498165
32498166
32498167
32498168
32498169
32498170
32498171
32498172
32498173
32498174
32498175
32498176
32498177
32498178
32498179
32498180
32498181
32498182
32498183
32498184
32498185
32498186
32498187
32498188
32498189
32498190
32498191
32498192
32498193
32498194
32498195
32498196
32498197
32498198
32498199
32498200
32498201
32498202
32498203
32498204
32498205
32498206
32498207
32498208
32498209
32498210
32498211
32498212
32498213
32498214
32498215
32498216
32498217
32498218
32498219
32498220
32498221
32498222
32498223
32498224
32498225
32498226
32498227
32498228
32498229
32498230
32498231
32498232
32498233
32498234
32498235
32498236
32498237
32498238
32498239
32498240
32498241
32498242
32498243
32498244
32498245
32498246
32498247
32498248
32498249
32498250
32498251
32498252
32498253
32498254
32498255
32498256
32498257
32498258
32498259
32498260
32498261
32498262
32498263
32498264
32498265
32498266
32498267
32498268
32498269
32498270
32498271
32498272
32498273
32498274
32498275
32498276
32498277
32498278
32498279
32498280
32498281
32498282
32498283
32498284
32498285
32498286
32498287
32498288
32498289
32498290
32498291
32498292
32498293
32498294
32498295
32498296
32498297
32498298
32498299
32498300
32498301
32498302
32498303
32498304
32498305
32498306
32498307
32498308
32498309
32498310
32498311
32498312
32498313
32498314
32498315
32498316
32498317
32498318
32498319
32498320
32498321
32498322
32498323
32498324
32498325
32498326
32498327
32498328
32498329
32498330
32498331
32498332
32498333
32498334
32498335
32498336
32498337
32498338
32498339
32498340
32498341
32498342
32498343
32498344
32498345
32498346
32498347
32498348
32498349
32498350
32498351
32498352
32498353
32498354
32498355
32498356
32498357
32498358
32498359
32498360
32498361
32498362
32498363
32498364
32498365
32498366
32498367
32498368
32498369
32498370
32498371
32498372
32498373
32498374
32498375
32498376
32498377
32498378
32498379
32498380
32498381
32498382
32498383
32498384
32498385
32498386
32498387
32498388
32498389
32498390
32498391
32498392
32498393
32498394
32498395
32498396
32498397
32498398
32498399
32498400
32498401
32498402
32498403
32498404
32498405
32498406
32498407
32498408
32498409
32498410
32498411
32498412
32498413
32498414
32498415
32498416
32498417
32498418
32498419
32498420
32498421
32498422
32498423
32498424
32498425
32498426
32498427
32498428
32498429
32498430
32498431
32498432
32498433
32498434
32498435
32498436
32498437
32498438
32498439
32498440
32498441
32498442
32498443
32498444
32498445
32498446
32498447
32498448
32498449
32498450
32498451
32498452
32498453
32498454
32498455
32498456
32498457
32498458
32498459
32498460
32498461
32498462
32498463
32498464
32498465
32498466
32498467
32498468
32498469
32498470
32498471
32498472
32498473
32498474
32498475
32498476
32498477
32498478
32498479
32498480
32498481
32498482
32498483
32498484
32498485
32498486
32498487
32498488
32498489
32498490
32498491
32498492
32498493
32498494
32498495
32498496
32498497
32498498
32498499
32498500
32498501
32498502
32498503
32498504
32498505
32498506
32498507
32498508
32498509
32498510
32498511
32498512
32498513
32498514
32498515
32498516
32498517
32498518
32498519
32498520
32498521
32498522
32498523
32498524
32498525
32498526
32498527
32498528
32498529
32498530
32498531
32498532
32498533
32498534
32498535
32498536
32498537
32498538
32498539
32498540
32498541
32498542
32498543
32498544
32498545
32498546
32498547
32498548
32498549
32498550
32498551
32498552
32498553
32498554
32498555
32498556
32498557
32498558
32498559
32498560
32498561
32498562
32498563
32498564
32498565
32498566
32498567
32498568
32498569
32498570
32498571
32498572
32498573
32498574
32498575
32498576
32498577
32498578
32498579
32498580
32498581
32498582
32498583
32498584
32498585
32498586
32498587
32498588
32498589
32498590
32498591
32498592
32498593
32498594
32498595
32498596
32498597
32498598
32498599
32498600
32498601
32498602
32498603
32498604
32498605
32498606
32498607
32498608
32498609
32498610
32498611
32498612
32498613
32498614
32498615
32498616
32498617
32498618
32498619
32498620
32498621
32498622
32498623
32498624
32498625
32498626
32498627
32498628
32498629
32498630
32498631
32498632
32498633
32498634
32498635
32498636
32498637
32498638
32498639
32498640
32498641
32498642
32498643
32498644
32498645
32498646
32498647
32498648
32498649
32498650
32498651
32498652
32498653
32498654
32498655
32498656
32498657
32498658
32498659
32498660
32498661
32498662
32498663
32498664
32498665
32498666
32498667
32498668
32498669
32498670
32498671
32498672
32498673
32498674
32498675
32498676
32498677
32498678
32498679
32498680
32498681
32498682
32498683
32498684
32498685
32498686
32498687
32498688
32498689
32498690
32498691
32498692
32498693
32498694
32498695
32498696
32498697
32498699
32498700
32498701
32498702
32498703
32498704
32498705
32498706
32498707
32498708
32498709
32498710
32498711
32498712
32498713
32498714
32498715
32498716
32498717
32498718
32498719
32498720
32498721
32498722
32498723
32498724
32498725
32498726
32498727
32498728
32498729
32498730
32498732
32498733
32498734
32498735
32498736
32498737
32498738
32498739
32498740
32498741
32498742
32498743
32498744
32498745
32498746
32498747
32498748
32498749
32498750
32498751
32498752
32498753
32498754
32498755
32498756
32498757
32498758
32498759
32498760
32498761
32498762
32498763
32498764
32498765
32498766
32498767
32498768
32498769
32498770
32498771
32498772
32498773
32498774
32498775
32498776
32498777
32498778
32498779
32498780
32498781
32498782
32498783
32498784
32498785
32498786
32498787
32498788
32498789
32498790
32498791
32498792
32498793
32498794
32498795
32498796
32498797
32498798
32498799
32498800
32498801
32498802
32498803
32498804
32498805
32498806
32498807
32498808
32498809
32498810
32498811
32498812
32498813
32498814
32498815
32498816
32498817
32498818
32498819
32498820
32498821
32498823
32498824
32498825
32498826
32498827
32498828
32498829
32498830
32498831
32498832
32498833
32498834
32498835
32498836
32498837
32498838
32498839
32498840
32498841
32498842
32498843
32498844
32498845
32498846
32498847
32498848
32498849
32498850
32498851
32498852
32498853
32498854
32498855
32498856
32498857
32498858
32498859
32498860
32498861
32498862
32498863
32498864
32498866
32498867
32498868
32498869
32498870
32498871
32498872
32498873
32498874
32498875
32498876
32498877
32498878
32498879
32498880
32498881
32498882
32498883
32498884
32498885
32498886
32498887
32498888
32498889
32498890
32498891
32498892
32498893
32498894
32498895
32498896
32498897
32498898
32498899
32498900
32498901
32498902
32498903
32498904
32498905
32498906
32498907
32498908
32498909
32498910
32498911
32498912
32498913
32498914
32498915
32498916
32498917
32498918
32498919
32498921
32498922
32498923
32498924
32498925
32498926
32498927
32498928
32498929
32498930
32498931
32498932
32498933
32498934
32498935
32498936
32498937
32498938
32498939
32498940
32498941
32498942
32498943
32498944
32498945
32498946
32498947
32498948
32498949
32498950
32498951
32498952
32498953
32498954
32498955
32498956
32498957
32498958
32498959
32498960
32498961
32498962
32498963
32498964
32498965
32498966
32498967
32498968
32498969
32498970
32498971
32498972
32498973
32498974
32498975
32498976
32498977
32498978
32498979
32498980
32498981
32498982
32498983
32498984
32498985
32498986
32498987
32498988
32498989
32498990
32498991
32498992
32498993
32498994
32498995
32498996
32498997
32498998
32498999
32499000
32499001
32499002
32499003
32499004
32499005
32499006
32499007
32499008
32499009
32499010
32499011
32499012
32499013
32499014
32499015
32499016
32499017
32499018
32499019
32499020
32499021
32499022
32499023
32499024
32499025
32499026
32499027
32499028
32499029
32499030
32499031
32499032
32499033
32499034
32499035
32499036
32499037
32499038
32499039
32499040
32499041
32499042
32499043
32499044
32499045
32499046
32499047
32499048
32499049
32499050
32499051
32499052
32499053
32499054
32499055
32499056
32499057
32499058
32499059
32499060
32499061
32499062
32499063
32499064
32499065
32499066
32499067
32499068
32499069
32499070
32499071
32499072
32499073
32499074
32499075
32499076
32499077
32499078
32499079
32499080
32499081
32499082
32499083
32499084
32499085
32499086
32499087
32499088
32499089
32499090
32499091
32499092
32499093
32499094
32499095
32499096
32499097
32499098
32499099
32499100
32499101
32499102
32499103
32499104
32499105
32499106
32499107
32499108
32499109
32499110
32499111
32499112
32499113
32499114
32499115
32499116
32499117
32499118
32499119
32499120
32499121
32499122
32499123
32499124
32499125
32499126
32499127
32499128
32499129
32499130
32499131
32499132
32499133
32499134
32499135
32499136
32499137
32499138
32499139
32499140
32499141
32499142
32499143
32499144
32499145
32499146
32499147
32499148
32499149
32499150
32499151
32499152
32499153
32499154
32499155
32499156
32499157
32499158
32499159
32499160
32499161
32499162
32499163
32499164
32499165
32499166
32499167
32499168
32499169
32499170
32499171
32499172
32499173
32499174
32499175
32499176
32499177
32499178
32499179
32499180
32499181
32499182
32499183
32499184
32499185
32499186
32499187
32499188
32499189
32499190
32499191
32499192
32499193
32499194
32499195
32499196
32499197
32499198
32499199
32499200
32499201
32499202
32499203
32499204
32499205
32499206
32499207
32499208
32499209
32499210
32499211
32499212
32499213
32499214
32499215
32499216
32499217
32499218
32499219
32499220
32499221
32499222
32499223
32499224
32499225
32499226
32499227
32499228
32499229
32499230
32499231
32499232
trans2es/management/commands/__pycache__/__init__.cpython-36.pyc
deleted
100644 → 0
View file @
237e8e1c
File deleted
trans2es/management/commands/__pycache__/trans2es_data2es_redis.cpython-36.pyc
deleted
100644 → 0
View file @
237e8e1c
File deleted
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment