hzr
2018-08-09 3346f8aae7f8abbd4b27c4564cbb802e7e717cc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
B:W[c@shddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZdZdZdZdZdZdZiad„Zd    „Zd
„Zd „Z d „Z!d „Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(d„Z)d„Z*e+d„Z,d„Z-d„Z.d„Z/d„Z0d„Z1d„Z2e+e+gd„Z3d„Z4d„Z5e+d „Z6d!„Z7d"„Z8d#„Z9dd$„Z:d%„Z;d&„Z<d'„Z=dS((iÿÿÿÿNsFBDict_StartTick%ssFBDict_Speed%ssFBDict_RemainHP%stFBPlayerDict_EncourageLVt FBDict_IsOvertFBPlayerDict_RankcCsv|jtjƒ}tjdƒ}|rr||krr|jtj|ƒ}tj||ƒ}|d|krrtSnt    S(NtSealDemonNewbieLinei(
tNomalDictGetPropertytChConfigtDef_Player_Dict_FMTDoublet IpyGameDataPYtGetFuncEvalCfgtDef_Player_Dict_EnterFbCntDaytFBCommontGetEnterFBMaxCnttFalsetTrue(t    curPlayertmapIDtlineIDtticktIsDoubletnewbielineListtenterCnttmaxCnt((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytOnEnterFBEvent9scCs|S(N((RRtlineIdtipyEnterPosInfoR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytOnGetFBEnterPosKscCstjS(N(t IPY_GameWorldt    cmeAccept(taskR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytOnChangeMapAskXscCs»tjƒjƒ}|tjkr%dStjƒjƒd}t|ƒ}tj    |}tjƒj
|dƒtj d|ƒt j tj|ƒ}|r·x|D]}tj|ƒqWndS(Nis    Ë¢BOSSbossID=%s(t    GameWorldtGetMaptGetMapIDRtDef_FBMapID_SealDemonExt GetGameWorldt GetPropertyIDtCurFBLineBOSSIDt ShareDefinet'Def_Notify_WorldKey_GameWorldBossReborntSetGameWorldDicttDebugLogR
tGetFBLineRefreshNPCtDef_FBMapID_SealDemontNPCCustomRefreshtSetNPCRefreshByID(RRRtbossIDtkeyt refreshIDListt    refreshID((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytOnOpenFB_s   c Cs|jƒ}tjƒjƒ}|tjkrO|jtjƒ}tj    |ƒntj
ƒj ƒd}tj
ƒj ƒj ƒ}tjd||f|ƒ|dkr´tj|ƒdStj|ƒ}|s¼tj|ƒtjj|dƒ|dkr tjdƒ\}}tj|||ƒntj|tjdtjƒtjdƒ}    ||    krZnOtj|tj|ttjgƒ}
|
r©tjd||ƒtj|ƒdSt |dt!ƒnt"|ƒtj#ƒ} | j$|t%ƒ} | dkrtj&|t%|ƒntj'|| ƒdS(Nis"DoEnterFB...playerCnt=%s,lineID=%sitSealDemonFirstPosRs    ÒѽøÈë¹ý¸ÃÐÂÊÖÏß· %s((t GetPlayerIDRRR RR!RtDef_Player_Dict_ReqFBFuncLineR
tSetFBPropertyMarkR"R#tGetMapCopyPlayerManagertGetPlayerCountR(t PlayerControlt PlayerLeaveFBtGetHadDelTickettSetHadDelTickett
PyGameDatatg_fbPickUpItemDicttpopRRtResetPlayerPost EventReportt WriteEvent_FBR*t CME_Log_StarttGetDictValueByBitt"Def_Player_Dict_PlayerFBStar_MapIdR tUpdateHurtInfoR tUpdateHPReduceSpeedt    GetGameFBtGetPlayerGameFBDictByKeyRtAddFbEncourageBufftSendFBEncourageInfo( RRtplayerIDRRt    playerCntt hadDelTickettposXtposYRthasEntertgameFBt encourageLV((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyt    DoEnterFBvsF      $ 
  cCsitjƒ}|jƒd}|jt|dƒ|jt|dƒ|jt|dƒ|jdƒdS(Nii(RR"R#R'tFBDict_StartTickt FBDict_SpeedtFBDict_RemainHPt SetPropertyID(Rt    gameWorldR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyt    OnCloseFB«s  cCsÄtjƒ}|jƒjƒdkr£tjƒjƒ}|tjkr£|jƒd}it    j
|<it |<|j t |dƒtjƒjƒtj|ƒq£nt|tƒtj||ƒdS(Nii(RR"R6R7RR RR!R#R<tg_sealDemonPlayerHurtDictt g_npcHurtDictR'RTRGtClearGameFBDicttGameWorldProcesstCloseFBRFR R
tClearEncourageBuff(RRRXRR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytDoExitFB¹s  
 cCsbtj|dƒtjƒjƒd}tjj|iƒ}|j|j    ƒdƒ|tj|<dS(Nii(
R
R;RR"R#R<RZtgetR>R3(RRRtplayerHurtDict((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytDoPlayerLeaveFBÑs  cCstj|dƒdS(Ni(R
R;(R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytDoPlayerChangeMapLogicÛscCstS(N(R (((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytOnPlayerRebornâscCsg}tjƒjƒd}tjj|iƒjƒ}tj|iƒjƒ}||d }|jdd„dt    ƒxvt
|dƒD]e\}}|d\}    }
i} || d<|    | d<|
t j | d<|
t j | d    <|j | ƒq†Wt|ƒ} | rw| dkrwi} | | d<|| d}|d\}    }
|    | d<|
t j | d<|
t j | d    <|j | ƒntjƒjt|ƒ} t||ƒ}tƒ}i|tj6|d
6| d |d 6td |d |ƒd6}tjd||jƒƒtj||ƒdS(NiiR.cSs |ddS(Ni((tasd((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyt<lambda>òstreversetrankt
playerNamethurtthurtExthurtInfoi't hpReduceSpeedidt remainHPPers DoFBHelp: %s(RR"R#R<RZRatitemsR[tsortR t    enumerateRtDef_PerPointValuetappendt__GetSelfHurtRanktGetGameWorldDictByKeyRUtGetBossRemainHPt__GetBossTotalHPR
t Help_lineIDtminR(R3t Notify_FBHelp(RRRmRtplayerHurtListt npcHurtListt syncHurtListtitinfoRjRkthurtDicttmyRanktcurSpeedtremainHPttotalHPt
fbHelpDict((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytDoFBHelpês>
 
 
 
    >cCsw|jƒ}tjƒjƒd}t|ƒ}d}x<t|ƒD].\}}||ddkrA|d}PqAqAW|S(Nii(tGetNameRR"R#t__GetSortHurtListRr(RRjRR|R‚RR€((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyRus  
cCs)|dkr%tj|t||ƒndS(Ni(R
tFbEncourageBuffR(Rt
actionTypet
actionInfoR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyt
DoFBAction"s cCst||ƒdS(N(RE(RtcurNPCthurtHP((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytDoFB_Player_HurtNPC.s cCs¶tjƒjƒ}|tjkr%dStjƒjƒd}|jƒ}|jƒ}t    j
j |iƒ}||kr‘|s~dS||g||<n||dc|7<|t    j
|<dS(Ni( RRR RR!R"R#RˆR3R<RZRa(RRtisAddRRRjRKRb((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyRE2s    cCs¸tjƒjƒd}|jƒ}t|ƒ}||kr>dStj|iƒ}||kr–|jƒjt    j
ƒj tj ƒƒ}||g||<n||dc|7<|t|<dS(Ni( RR"R#tGetNPCIDt__GetGuardNPCIDListR[RaRˆtdecodeR%tDef_Game_Character_EncodingtencodetGetCharacterEncoding(RŽttagNPCRRtnpcIDtguardNPCIDListt npcHurtDicttnpcName((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytDoFB_NPC_HurtNPCIs    '
cCspg}tjtj|ƒ}|rlxH|D]=}tjd|ƒ}|sLq(n|jƒ}|j|ƒq(Wn|S(NR+(R
R)RR*RtGetIpyGameDatatGetRefreshNPCIDRt(RRšR/R0tipyDataR™((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyR“Zs  cCsîtjƒ}|jtƒ}|rY||tjkrYtjd||fƒtjƒdStj    ƒj
ƒ}|tj kr~dStj ƒj ƒd}|dkr¤dStj ƒ}|jt|ƒ}|sÍdStj|tdƒt|ƒdS(Ns)Ç¿ÖÆÌß³öÍæ¼Ò¹Ø±Õ¸±±¾: overTick=%s,tick=%siiiˆ(RRGtGetGameFBDictByKeyRRtDef_FBPickupItemTimetLogR
tDoLogic_FBKickAllPlayerRR R!R"R#RvRTtNotifyCopyMapPlayerFBHelpR‡t __CheckBossHP(RRQtoverTickRRRXt    startTick((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyt    OnProcessjs& 
 
c
Cs¾tjƒ}|jtƒ}tjƒjƒd}tjdƒ}||k}| rºt||ƒdkrºt    |ƒ}t
|ƒ}tj |ƒ}d\}    }
|r½|j ƒ|j ƒ}    }
ntj|ƒtj|tdƒtjd|ƒt|ƒ} |s”| r0| dd\} } tj|| | ƒn|dg}tjƒjddddd|tt|ƒƒƒtj|}tjƒj|dƒntd||    |
ƒ|jt|ƒndS(NiRis½áÊø ÉèÖÃBOSSËÀÍö lineID=%stGameWorldBossStates%s(ii(RRGR¡RR"R#RRRwR“R$tFindNPCByNPCIDtGetPosXtGetPosYR
t
ClearFBNPCR¥R‡R(R‰t    NPCCommontGameServer_KillGameWorldBosstGetPlayerManagertGameServer_QueryPlayerResulttlentstrR%R&R't__DoLogicSealDemonOvert SetGameFBDict(RRQtisOverRRt isNewbieLineRšR-tcurBosstdropPosXtdropPosYR|t
killerNamet    hurtValuetmsgListtbosskey((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyR¦‚s8         cCs:tjj|iƒ}t|jƒdd„dtƒ}|S(NR.cSs |ddS(Ni((Rf((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyRg§sRh(R<RZRatsortedt    iteritemsR (RRbR|((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyR‰¥s!c
Csßtjƒ}tjƒjƒ}tjƒjƒd}tj||ƒd}t|ƒ}tj    ƒ}    xvt
|dƒD]e\}
} | d} |    j | ƒ} | rr|j | t |
ƒ| s¾| rÚ| jƒ| jƒ}}nt| ||
d||tgƒ}|sS| jtjd|tƒi|
tj6|tj6}tj| tj|||ƒq×| jtjdtjtƒqrtj| ƒ}||tjkršqrnt| ||
gƒ}tj    ƒj dddd|t!|ƒƒqrWdS(NiièitdropItemMapInfot SealDemonOver("RRGRR R"R#R
tGetFBLineStepTimeR‰R±RrtFindPlayerByIDtSetPlayerGameFBDictRR¬R­tGiveSealDemonAwardR t Sync_TimeTickRt tttLeaveMapt    Over_rankt Over_itemInfot NotifyFBOverRR*t tttPickupItemR¢R8tGetPlayerLeaveServerTicktDef_PlayerOfflineProtectTimeR´R²R³(tisPassRRºR»RQRRt    leaveTickR|t playerManagerRiRmRKRt prizeItemListtoverDicttmsgStr((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyRµªs2   
!,c Cstjdƒ}||k}d}d}    |r^tj|tj|ttjgƒ}
|
r¡iSnC|rhiS|dkrzdnd}|jtj    ƒ} | r¡d}    ng} i} t
|ƒ}t j |tji|    |6ddd|d|d|ƒ\}}}xa|D]Y}d    |kr"| j |ƒq|d
|jd dƒ}}| j|d ƒ|| |<qWtjd ||||||f|jƒƒ| tj| jƒƒ}|dkrÇtj|tj|    ƒntj|tj|    ƒtj|tj|    |gƒtjdƒ}tj|tj|dttjgƒ||krOtj|tjƒntj|tj|    ƒtj|tj|    ƒt j!|d|dƒt j!|dƒ|dkrË|dkrËt j"|ƒnt#j$|tj%|    t&ƒt'j(|tj)|    ƒt*j+|tj,|    ƒ|S(NRiit mailTypeKeyt SealDemonMailtisMailt prizeMultipleRÂtUserDatatItemIDtCountisU·âħ̳½áËã½±Àø: lineID=%s,bossID=%s,rank=%s,totalExp=%s,totalMoney=%s,jsonItemList=%ss sealdemon_%st sealdemon_0i(-RRRRCRRDR R*RRR$R¯tGiveKillNPCDropPrizeRtRaR(R3R
tGetJsonItemListRpt PlayerSuccesstDoAddSuccessProgressR%tSuccType_FMTFirsttSuccType_SealDemontSuccType_KillSpecificNPCtSetDictValueByBittSync_FBPlayerFBInfoDatatAddEnterFBCounttPlayerActivitytAddDailyActionFinishCnttDailyActionID_SealDemont
EventShelltEventRespons_FBEventtEventRespons_SealDemontPlayerMagicWeapontSetMWPrivilegeDatatMWPrivilege_SealDemonAddAttrR tPlayerBossReborntAddBossRebornActionCntt Def_BRAct_FMTtPlayerFairyCeremonytAddFCPartyActionCntt Def_PPAct_FMT(RRRiRØt isClientSendRÂRR¸RÙtaddCntRPtisDoublet    equipListt prizeItemDictR-t jsonItemListttotalExpt
totalMoneytjsonItemtitemIDtitemCntRÓ((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyRÇËs\ $           # % cCsr|jƒ}|tjkrdS|jƒ}tj|ƒ}tj|ƒ}|tjkr|rutj|j    |ƒq%t
}xwtj|D]h}|d|dkr‰|j dƒ|j dƒkr‰|j ddƒ|j ddƒ|d<t }Pq‰q‰W|s%tj|j    |ƒq%n|gtj|<d}    t jƒ}
xgt|
jƒƒD]S} |
j| ƒ} | sJ| jƒrxqJn| jƒ|jƒkrJ|    d7}    qJqJW|    dk} | s·dSd}t jƒjƒd}tjtj|ƒd}t jƒ}|j|tƒ}tjj |gƒ}|jtjd|t ƒi|tj 6|tj!6}tj"|tj|||ƒdS(NRÛtIsBindRÜiiiè(#tGetTypeRtDef_ItemType_MoneytGetIDt
ItemCommontCheckItemIsEquipt GetJsonItemR<R=RtR RaR RtGetMapItemManagertxrangetGetMapItemCounttGetMapItemByIndextIsEmptyt
GetOwnerIDR3R"R#R
RÄR*RGRHRRÈRRÉRÊRËRÌ(RtcurItemRt mapItemTypeRKtisEquipRÿtisIntitemInfotplayerItemCounttmapItemManagertindextmapItemtisItemAllPickUpRÐRRÑRQRiRüRÔ((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyt OnPickUpItemsN  2&   c     Cstjd|||f|jƒƒ|d \}}t|||tt|jƒ|jƒtgƒ}|dkršt|ƒ}t    j
||j ƒ|tƒn|s)t j ||ƒd}tjd||f|jƒƒ|jtjd|tƒi|t j6|t j6}    t j|tj|d|    ƒdStjƒ}
tjƒjƒ} |
jt| ƒ|
j|jƒt|ƒ|jtjdtjtƒdS(Ns7·âħ̳ ¿Í»§¶Ë¸±±¾·¢ËͽáÊømapID=%s,lineID=%s,dataList=%siiiès-ûÓн±Àø£¬Ö±½Ó֪ͨǰ¶Ë½áËã!mapID=%s,lineID=%si( RR(R3RÇR R R¬R­R$R¯R°RˆR
RÄR£RÈRRÉRÊRËRÌRR*RGR"tGetTickR¶RRÆRRÍR¢( RRRtdataListRiRkRÓR-RÑRÔRQR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyt OnClientEndFBLs&#0    c
Cs”tjƒjƒ}|tjkr%dStjƒjƒjƒ}|rM|dn|}|s]dStjƒjƒd}tjƒ}|j    t
|ƒ}|j    t |ƒ}|j    t |ƒ}t tdd|ddƒdƒ}    |sû|}|    }tƒ}ntdt |||d|ƒƒ}|jt
||ƒ|jt ||    ƒ|jt ||ƒtjd|    ||||fƒtj|tdƒdS(Nig{®Gáz´?gÍÌÌÌÌÌü?ièig@@s7    curSpeed=%s, remainHP=%s, passTime=%s, lastSpeed=%s(RRR RR!R"R6R7R#RvRTRURVtintRzRxtmaxR'R(R
R¥R‡(
RtisExitRRLRRXR¨t    lastSpeedR„Rƒ((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyRFes0 % %!cCsLtjƒjƒd}t|ƒ}tjd|ƒ}|s>dS|jƒdS(Nit    SealDemoniiè(RR"R#R$RRžt GetKillTime(RR-R ((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyRxs  cCs†tjƒ}|jt|ƒ}|jt|ƒ}|jt|ƒ}|s]|}tƒ}n%tdt|||d|ƒƒ}|S(Nig@@(    RR"RvRTRURVRxRR(RRRXR¨R R„((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyRw‡s  %cCs.t||ƒ}tƒ}|s"dS|d|S(Niid(RwRx(RRR„R…((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pytGetBossRemainHPPer”s
    cCsh|dkr%tjƒjƒd}n|dkr5dStjdi|d6ƒ}|sXdS|jƒ}|S(NiÿÿÿÿiiR!tLineID(RR"R#RtGetIpyGameDataByConditionR’(RR R-((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyR$›s   cCsdS(N((R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyt DoPlayerDead¬scCsttjƒj|ƒ}tjƒjƒtjkr4dStj|tj    ƒsMdSt
j |tj |j ƒt|ƒdS(N(RR±tGetPlayerByIndexRR RR*t    PlayerViptGetPrivilegeValuetVIPPrivilege_FMTDoubleR8tNomalDictSetPropertyRRtNotifyFMTDouble(t playerIndext
clientDataRR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyt SetFMTDouble·s
cCs5tjƒ}|jtjƒ|_tj||ƒdS(N(tChPyNetSendPackttagMCFMTDoubleStateRRRRt NetPackCommont SendFakePack(RtpackData((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyR,Ás (>R
RRR]RRR<R8R¯RR0R%RëR+RàRèR2R(RîRñRôR@RTRURVRRRR[RRRR1RSRYR`RcRdReR‡RuRRR RERR“R©R¦R‰RµRÇRRRFRxRwR#R$R&R/R,(((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_SealDemon.pyt<module>sx                                           5            
            &                              #        !P    1