From ca65c9689db716ae0f89f0bd8c8c1cbe13c58ae7 Mon Sep 17 00:00:00 2001 From: engalar Date: Wed, 1 Apr 2026 09:58:48 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20int32=E2=86=92int64=20for=20BSON=20p?= =?UTF-8?q?roperty=20values,=20CREATE=20OR=20REPLACE=20PAGE=20UUID=20reuse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BSON int32→int64: - All property values in writer serialization changed from int32 to int64 to match Studio Pro's expected BSON types - Array version markers (int32(2), int32(3)) preserved as int32 - Fixes Studio Pro crash: "Sequence contains no matching element" in MprProperty..ctor when type cache expects int64 but finds int32 CREATE OR REPLACE PAGE: - Reuses existing page UUID and calls UpdatePage instead of DeletePage+ CreatePage, producing git "Modified" diff instead of "Deleted+Added" - Prevents RevStatusCache crash when parsing deleted mxunit base files BSON roundtrip test baseline: - Add golden mxunit files for roundtrip testing (pages, microflows, enums) Co-Authored-By: Claude Opus 4.6 (1M context) --- mdl/executor/cmd_pages_create_v3.go | 25 +++++---- .../enumerations/PictureQuality.mxunit | Bin 0 -> 1685 bytes .../testdata/microflows/ChangePassword.mxunit | Bin 0 -> 9696 bytes .../testdata/pages/Account_Overview.mxunit | Bin 0 -> 441141 bytes .../testdata/pages/WidgetDemo_Showcase.mxunit | Bin 0 -> 1219710 bytes sdk/mpr/writer_dbconnection.go | 2 +- sdk/mpr/writer_imagecollection.go | 2 +- sdk/mpr/writer_microflow.go | 22 ++++---- sdk/mpr/writer_microflow_actions.go | 14 ++--- sdk/mpr/writer_modules.go | 2 +- sdk/mpr/writer_navigation.go | 2 +- sdk/mpr/writer_odata.go | 8 +-- sdk/mpr/writer_pages.go | 12 ++--- sdk/mpr/writer_rest.go | 2 +- sdk/mpr/writer_rest_test.go | 2 +- sdk/mpr/writer_security.go | 2 +- sdk/mpr/writer_settings.go | 27 ++++------ sdk/mpr/writer_widgets.go | 10 ++-- sdk/mpr/writer_widgets_custom.go | 32 +++++++++++- sdk/mpr/writer_widgets_display.go | 48 +++++++++--------- sdk/mpr/writer_widgets_input.go | 22 ++++---- sdk/mpr/writer_widgets_layout.go | 18 +++---- sdk/mpr/writer_workflow.go | 2 +- 23 files changed, 141 insertions(+), 113 deletions(-) create mode 100644 sdk/mpr/testdata/enumerations/PictureQuality.mxunit create mode 100644 sdk/mpr/testdata/microflows/ChangePassword.mxunit create mode 100644 sdk/mpr/testdata/pages/Account_Overview.mxunit create mode 100644 sdk/mpr/testdata/pages/WidgetDemo_Showcase.mxunit diff --git a/mdl/executor/cmd_pages_create_v3.go b/mdl/executor/cmd_pages_create_v3.go index 58f07f2..119e683 100644 --- a/mdl/executor/cmd_pages_create_v3.go +++ b/mdl/executor/cmd_pages_create_v3.go @@ -59,16 +59,23 @@ func (e *Executor) execCreatePageV3(s *ast.CreatePageStmtV3) error { return fmt.Errorf("failed to build page: %w", err) } - // Delete old pages only after successful build - for _, id := range pagesToDelete { - if err := e.writer.DeletePage(id); err != nil { - return fmt.Errorf("failed to delete existing page: %w", err) + // Replace or create the page in the MPR + if len(pagesToDelete) > 0 { + // Reuse first existing page's UUID to avoid git delete+add (which crashes Studio Pro RevStatusCache) + page.ID = pagesToDelete[0] + if err := e.writer.UpdatePage(page); err != nil { + return fmt.Errorf("failed to update page: %w", err) + } + // Delete any additional duplicates + for _, id := range pagesToDelete[1:] { + if err := e.writer.DeletePage(id); err != nil { + return fmt.Errorf("failed to delete duplicate page: %w", err) + } + } + } else { + if err := e.writer.CreatePage(page); err != nil { + return fmt.Errorf("failed to create page: %w", err) } - } - - // Create the page in the MPR - if err := e.writer.CreatePage(page); err != nil { - return fmt.Errorf("failed to create page: %w", err) } // Track the created page so it can be resolved by subsequent page references diff --git a/sdk/mpr/testdata/enumerations/PictureQuality.mxunit b/sdk/mpr/testdata/enumerations/PictureQuality.mxunit new file mode 100644 index 0000000000000000000000000000000000000000..d9fa89f20f81fbd238d9b21513068d4b9efdcb13 GIT binary patch literal 1685 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 GE6OB0Uf|-LT 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

abp&R}1^v zdcR}Lu`AeEm(dsb1095V`98h1b7sBuVQ$%DLm6$F>~K;SI;&bIYHf79>b|X3ywEJ| z0HJ1A0d%epb6?(U-aBS4ZEb>M!Nt(ZhK~OA0_#-G*&Z2hza$+A@|KrTD3|@y+zeq* zZcgF{TDA5$u65WwU|N^{Q49Cs%T)tAlUpA@kQ|f4SY`DlY@k)L7{|^z%FQYC7_Il< z7RjuB^ivy4a7d#j@w2R1iX(0&;~a~xhhkF`(e<)#%uXAMxFj6x&&$7eb0W$haN z=K6wMgLtLdZ{5+p^-5FTyXTdsQ-s%(3iLN<) z&))6n6@S05*6T|hif{t5r%X3{*^0?qFB`k;9(d5XV_pAK6(FD$i(+-BXRM}Y+)j3# z{h-kJ|BZmAP=b1GC~ghOs+9-E59fL2&0DcBszD%8#{Or2_%DMp4gqN+ciwKJ$eu&{ zJKi|+^aFFJ<%ZfR(+%6If98E%1bM<}J^QVu9S@IvvxkA7In~!^5b!wqh3yabslJ7? zx6NNdAYC2V6W8Nj+kq?cT(S}Iju}z)vei0sElN-ZER7^Da|4A?7OrJUrjew zlnu`9Ds&|6G2<(=(?8VRVqH*FIP#H{pdJEP-YZ- zB|&m6$SOc7g-t468u3XCf7%LaTqd>|czz&)rbM8RLt_)o5kTAsgDvF+ia=Qom^Xwr zoni}m^}_!^G(m#_j+l=&@xj7_>bOdXYCMoCMIk(~G|HV9g+MC-9GDR#;&VWp8_M6% zC74qlM)6LCKMdOHgAx{uJ&b%9ZLIVW(N2LHG^tG&fFMgA7u!tymXB)ob@a~8 zW9{&5c9>LzXkyW$)Dg5Dg<-)wF*-5&eF^dr{6MY+QoGTP_H}DEet@4-UY_gyqgzae z;=9%n{De&ZL};$!;E3jEct-Li5mW)+p~FQ&;S94W<=WLgzgU)dg48vCQ!m{(o02s3 zrX*j|iAmvm*s8%FfS_2|B_8`z0#*Uu^WaI@aQ8u&nyUoHsS%xw>Ue-1=7W1b4A=7%a2Aazpi#WXr0L-*dPWY2elX6gKpnn3og@62q zKmo;xoclsdSR(r7xC zVp=deiU$6m1&G8nOs4?#H%uU(D_fYNEsQ8g+66eaoJT9_YJZRv2Bf-jB+0}}xsim& z>Z4405``ZtUTyJx|5-Wxo!ZwC3@exU29!w@?KNr2;WM&a;^ri7}XOK80TTL*cpra4+Z(g*bX0)-Zk%2xRxJ(-x8$^;vs=TVgi;$2Mp zs|40BBUp+)q*3GbAu7p&y+uV6G-@FnHZj4a2rV4V z7^}QXT>~&Smwc%q>2#+kh*!)wsS3p7d>w^WWn&z}E548a2(YX7qJwCWE;@1GnB_`^ z?~{|4Xu~p{rY0`EY~H-{4E!j6CEQ5kXoA}`KTrrSOui!grmRf+C3IQ@y8uCu5WE`? zgRSa27u5SmnVbNd*2pZ1^Gh*RNiA$bi!Fgo+?G^%;Do@(!HJbFAj{*OU{mEss+h-9 zW6?=Xic&^zi`9Zmri+3xZo#S_%mAw1YyP4|^E~&TOa3Xwmg{Ox{PhJA~=t0~W_3W239JY^LdDU@; z#;tvCc1^yk-eSqftA-HE2LDjooF z_|%DIhmTE;U2)J5F6FnK>Q##VCDz}bNCV0>K{4AECj&!3O3GvqVWdX2SQ*?QzxNif zIlLf|fQ#|NO7i@`kwZu$lkNyq54mDWB>o&V&-GJfm;dU8!#{ChhMbd!V4z5I`$K%hqB0NSDOpvsD9*&+iepis=oRSOg_2!I|EB8Z}~1Ax*@>k=&K3bh6t z60icZEJnafNaFzYIS^on7sL+divW1Y;R5}@mj|=?&=bO!&_J93U&IAp1uhWaEP-(z{o!Aa2{9gBP3y}IrvnDDPRo<;0K0bVIjaBNybx8 z@I{#?2YM4h3tbTn4Prt;BVbFUm;sn33LwF#3^yY*PoXAb*|=mtu_*>##YEt$08|gK z9;GfFO$#)>$b~HlA`FFp48S}>(Z?gRREu=^CzLxy&yE(j@!C-UrxhftVfm0v2Tkq2+>KgW_WaQG50B;fQ$vCBU|d8W_mJD;$0sd{qML zTGFIEPLNO}5Cuj7`>#NN{sMptsEJ`AU`{XqCkWRLX&_ivVJ%pA4Tek!Nzl=xAb^v` z1u?0{Tv3FO2BLk#%77(&P!QY-Ry+`0FxG^SFprZIOR5n=F)RBIPRkK;Ly2JcZyGVo zEs#?{SC=~(6w~O{LM!wEq9w{Jj8I3l5z2=p(rKVREdZRf48Xyp5i;P=bt}PJHifAv zrgHzm+kYKz!9ahJyK6xZKM7RrW)8}38Q0jQutWO$A=)lP(Qz91k}^{{DKZ<;WC3GF z7(0-MCNZH-6XEDVJ|IQ`WP)JvWjwZ+69go$g@T`^jz4m8{K9O<%_*@?!FL|q!D&>z zS-HH?OhvH>g6B3I(G*S)@lDCgP3b zK|2!`p`pYo3&QNY0s>$hK7cSZp&}ZZKGHBQUnDaZLFNQwcxlkdEfxuYwvBxQC|*B* zi6j3~SV)LSEah>5zd{P^MZpL(at!AABbrz|C0Vn;Z0*?lu3V%K_$E*ph*X~lJ~xmj zHHqN)n{dHOV15rw?7?(*6Sz3|7Cd1*gaV(z6XXn_ais7gnLP@d#goV5N-%2+d@x8I zNFD4WZ$VffUx@t;Z)Jc|OjnZWGo*jtH$F{{F&5u`ac+-s^c?)qe$IF#Q)?MT@gwZ! zG@2fN-6gF~{H5mG8xa}dRo(=MT=c$5i{hiEz5qZiL=qNq035Mgiq;)s*e_^1$90uS zvnAraH|PFxL$O1_WATXOE0_c11;&%J6KdJb_Fhj;mMlqQY}`Anxn}JiL^iY=WcsVOKFeH|d)lV!Td(!OPeKhE>Rtboi+4X$&#fWs)}}d@ zD{&g4)=a#hA-*+w>|UpB?OU8~-);rbX+<3x8kW4gcfh{`>$Zm(b-ypXGYy|k9r~Fy*)C{{9mhTQ>C4v*p4{p7 zhknXe_-%1>x_J0NZ|1!2jq8*;bcj=p|5zy$elu)k;kal0I{OtZ4LtZqm_!(%8vN(U zs3vm{Cq{V`dOv<+TR++Yrypv~#D^azWE#iMcTYIE`a(MGE)lb&4*d*Z*t*VGknK7v zFk_2V*CUVqlk`(o&BS(@o7>ROn|Z`;NV87=-ZKH;AeCz-`tD2J^7{QFm(Be5;@f_< zYw>Yl1OwE6B^}^@5pAq95pF~Vmvrz?)tZSTPxSRWa+|~0di&0^x%K)qD*sI7gU;Xw zQzCr%9LMB1$3;Fmb?&JK9czS|sLGmhD`U*AK*pY=%o+K+!u#N>RRcO%o3CH}#0+%G zOf0U3PRFvS-rf z)syj+*9i3wUI_x&0!fvXT_3(@IP+6%k^AoCsC8ODycT#Fk%vEV{oZTB-c*ePV0Ku+xW`g}0{mU+3iU7N1TXBCV3pMG+tSuB$B=ee!Emf1bU*(6RW{kTnA#u_$rn``3GTcgJx=$%sm z`Y{`@3u&s&v7dIP^I^XpryAfx)d(h3mGq;Xs~NqueiN_kl%WM|lL@0#qaVeZ*)I$< zf+uY-^qBUv*3=lywVLYFPsyI{M`DhT_1GBOCNQ{k{|Ke}pU&mFG^UP@+v-!@ck1ol z{ka14)9h&BdG9NSSxX0=z1(HuN}?X^e~W&~(*JrgrEHlgoq96ezDp&JBiP+9+r zZnoy&{L*s{Q%^njo1n2zh@V*%=zqaOj%=#McB-|Ee@rbTh_?h76s(fqch)@Ajf!};5EX3X@~?t4bq^u64! zUz$?=@4J1E^|L?axo;2fdts?_z1!R6?N;Q8+7xItylK; zyq7Z>BZlBqL^UGcoqEKuHowqo`Qe^=yXfl%R)C5=yB&F#+pjNcyPXmD-tdAVe5e{h zMOAG?{xYZj-Ie-ouF+f8x9Uva#ZZxm%oT`e^B2upXT5`6_vT(ce7-%sgZe~tPSP;x z+zbP+g$*1oOqFKeP)bDaKRnnNxWL}I(5uOX$^5eyD?mh9-8-E0Z85_u`Rx2?%NIg| z9%~K}LEA_bb#ICrbo_XtK`Zz4rNX;BF&BqGH|p8Z?)nEe+s$}?|wkJ|wutCQ3x zBGboL2DTb@m9fDs|6t$U(_7<2L~Z1G-Z1naeb5g3rEkWzKOD52NL^LuDmt>&=#C9P zZ*fgJLF;xVHHx^E)CeMi@u9%Q&l%@0imWO^;+Vp=tynL6HWFGgTE4t<&Dvy+fZt_R+k_0^!=m zD)w?Rw^DFy85?`vd|}kwbKBGbb=ezNk5-?EY@R>UJ!QDxK6B*xs7Y7P*Tad3>KN5| zsV_3My6YI1Rd{Bs*B*@u5YfVU%{{|M1i9@U%eLGq%=4^CL{ycAjRea&mt9WoqHnw~ z_4|ey{Vi4GLe>ggC}vR1-pT3N9&60?%x~RzYNnp&8OfN1-xF7VGmAc=y)$3-GBLsCkNM_8xJ@!spi=w4&M2YY}1oWGx zs5_=dcrrD)E_va7nmx?S-l8G_*(vBjtsYPGy{oa=CHCzh#tE<3_Udz>mmYJ?J@=e& zoSsz5a2>~tQK|=h8LS z*9Zct>f2aM$ocz2m+o;$p7XRQV&Vj`YD8pVroe@K=N9tsjX3MJq4t*XJB-^%)hD9a z1qL=w8O`0cPg}C-&3vO0rCg|UzQfv(jBoVVV+%+1J8aah0$gbSqy2+E=Eb|k4t_8> z!RhM#nnXlZDaJgfEOyiD*~T>|UAJJ7SFQ6Z5|Cnd!>3d4br!$W_ejWF*?ZU3NFown zjbN!uf{hdM=YMCe`LgS1&>ijdN(m_Z;|D!Y|&SH z&&8RHdRf^Wh`6g7!G)@lfF|@B=Xm|zb;tO$nU}3?YadaOfD{Ae*ZUsXH{0Wq+lK7X zcJ1Aa0@UX~OAABm74&qaC-_)<)bF#Nqm+QQ7&2zYP3_{gVqe>sMkDjbRDc6%jM4T# z=dSOyIENQ{zo{c}1^7ciztMv_G~0NB-X?`vXcpPNaqdX3bai38?O7@2&SQwq+$SJBINh3|`^{L=D$88GCnFT=H;M!qhE4ZVbECwE_h6 zzF+&Cq`Br!vs%}?(3{pp4(`wbG+xm05k0wR9w#fc?SJpgeACA;-y+qRy<<~%f9Ks^G*wvtT|ZF z`?5B^V&ya40{$P6$p|C!wagJ7_@DgI6OM$7^w)NyZ*>`|S@NQ&6F!h0_!1uCFJ=oR zfM0_qRpm;B7VtPA?-gXbfrMz%JP#Z(qSgit9rJJ5yH?aK=W1!|?BHEDSW=;%_RPxn{18HJ<9 zT+=gdUObP=(}~1zifc1#UUdp;<_L}_m#hWdcQukZ`>IZ zfm6cIZ5YU@;#kdJq5-BGK#-aZFfEK_g>;m4!R*Q=FIDjgf4Nk05;nS2A`u(!f_Y{P zITstI{mVI+Vx#~*i6MAK@(vI!5Q*YW)GEl3r(l`>pyDecuVw^AfUGnaTC)J_l1Hr% zhEm-xt5U)^4u7_Uht7zB8~xLkBJUNQ==fvQydubQ`&T(DQ1 z00?!6@G{z9Ru(sqbqphM18Rn$VnjrZR+s5Voz9)#bwHoB zGV+M?gh4MWB4yDf5#kOm@)upE>vCAVrj;IJ6+~Tlu#i<(3qL3o1v@N^i7{KbjD_!E zx&ip(k9dVVm82GdSD+nX7m9dQ3}8}=jZihJ%GIz@Vu$)0NuF{kRdf|&d#VEWox$D# zJrznc(0CNC3GOQbYE)B7^jCI)YIwbnDHKGrQS^cVmw?tjBHqPx-bxU;7;Y3>vj6v5 zkb>@j!zoZvEa#;bRG?7|vc+Ivb>q-P=+yw!$OFaBc!45u6jDAl)B}v-6C{ct2B5(^ zC>ID`v@|Zbc7XcTLQtm{)~v>wQilceunO~7F>48pEd-($yPA|$$Qp$oWb7pPQG1yv zR?eyl_~FVSb{D4$1fmE)``$b;EG`V~f~bxO3%eoOq$?H#imWpSC-NF_H~Fnwu~3y-=z`4HOHE8+#PzH0?69sSRzZ>& zp9F}GlqXRvWl9$jMBaTEX1e zEayi^cP>3EDgJuX`q@O9dCjvxRwhmUgB8sGiLQi73jP9X+*FDV6#4dc8<(?L4m*2m z6}U8wBjP{}0Szj%$r3^qRas@0P#7J6n`mWvkD9~}hYCjdFV#tw*&*iv_16xuS5w5uctQk`&$={Wy32$C%x%Fu=Bx#h50RHi~) z?n|03M(mi{_kSzBAVTGg4MNEdsZVjjDdtY81tl1qh2I8gLk z04DG`F!LArs%S%D4~jWPH5M7DX%meM!Q?f;MlkJ4o8&k_FDnw{JJ?6LT_6m+k{chs z(?j{USFUI6&HvuESGe8-eAha{vsKc@L2+=T{J|>Jd0Q;{vMcVPt=IgoudgQ$YTib@ zd10^$FERvbP*|`EBz?!o5HW1^27*KXIMcAsFr;GxdjeZo8d9*Mmjk@0IIQ(_`(en0kF z&$#btljH8`_~M89D>p*TFfwU@R+T;!lq%*^s)bUhdHSFo^py5NFP}_0x2K1 z69j2Km40LVCtN5$3qMO_76n#{S*B{i3R3eR36CaVkB_1WL~Jfp+*Jx72?Zmth+jh^ zCua4O&;r;JDKK|}_RGK`ijECF?Ezat1KW!C_P~3jgA0RH zga?|SZJt3xbpbz^4;nj`VK#+qB7i651mVUoxH2+8slH6b+|Q~2XjMwxa+_|Ta|>^J zQqCJHzHFeR{JF95sG)g45w$`zDApUr-g;_d5jVqO7$9L0(zPtZNU3X|55D0T90EKK zm<5yw$-;W11Moau}gzmOaNY_Umi_1SU zQCK1WAT%zLqA<;SA`K{TP;6SK795}&g6j4X9$GR$uATl~B9@H@IC3z&HDJESG612_ z&+QK&L_*w+@kdESPz4!lbFT;p8>ALRNmOirsum!ip+lLPSBa7WI^;pg18Ed?hf-qW zH>Lnxv1?|H1xQWNNS^zNE~(NtE39ePJ1y0|sV(iz#y^-ZomhuEArk?QPGUi}wj4`q8L2C%MQB z)FC|iJP@t|f=5s{kh0KMb6cbi1u=@9nAG9~&_cuz0Fx-H&sCmagyV8#Z*W6Jct&lot$A)5vjT71bD_TqMRv zn_2rvqo_A2GYZNT+b`8@grI$_%4uAr%7+lJuX6ctzITlEz>oyTbn(UIQKhy-2hfh- zOUmQ}DUJd&ILX6br09|e^##HhZA1>m1LW88DF-y&-??LZJJ+PWx1xKlX-jk}R&h!w z3qTJh;5!1m7>j*@u?Q@-KTiPX`;$ZtuM4E}0B5th_t5y*t^GKj8ekRwDGJEfz&E1bogoIa7f8)j$xK%t7D&!xxms!&#Uk6DTlJ>|U=HUx2{%VTS|t09JwF z16L%7tC#sZn}bhfJ{AUA!6poIKmwM|X<}HzXDO>7 z1(X3IJRgpXrhXJOY3FK2Z>`_ND?4Rq0o!E4sH#8{ZbwB)y|N?o{@{m$7WSw->lWGS zjTwEQo{!Nd_(RLW5*b1PPsyI{M`DhT_1GBOCNQ{k{|L3f10!`@g&`n%hJ)WOsFI7$ z4QGQwE!O1@gyf|?)ZRFPfll%NcXDLKl} zy604M1%WU4Lij+-11wXBh1`H38=**+mk6~!Y!(p6MsorJixIVk$?-@7RW{XZ<)^! zFpd)D!^VrHVgu3wWC}7G^N#7t5(Pd4?-J;Z7LB(ri`l@cKiC+kYT^ycvSKqSVLDXn zxMH3BKTPMp&U8KlV)_-+nXv6~-RDR*r(J8aOcEvyTTvnS^Ms=Z`2c?{^bcT6hb`s+ z;r)|i;85?wJaY=d3_0Whlppb7Qz zYH0dM!?=8r%w`2|1!w_eV6T#jMZnR3e*@SFe*O|D%S?QUusH$9N&!;{hTRg7!90IN z6RT-PzBOQ1NbG%AF2V%gdnT#7v&-U>*WZ@`@!IkUH3uo;)5`g4vVdQ^HdtKJpfX1@eX1*I=?WsBL`? zSm)$6xJWw>wZWMG9_c63XX(eB$ya`&bkE4e(Z? zS5-j-I|}>;y`#yxn`oj30liql0D7<#(ZX)b$UZ~z222Us|NO{h5pz}pX_z#t%ZFcX zD0V3L7(}BE_~0I3JUPs%K?S|ukFpDIYs$(Tx$e<~aW2HQP>psuE+v63$Oc!pWlcV` zav#|+2UC8Lb6`8=r+M9e!sb&Ff#==_Ep#6@Z0d{fx6E=Cicb+I}Se(>54LyOgDnsYj`R`~KUB8SzhAOD?pWm=3% zO>+R-?n^P*^{aEJ(QUyg=IRKK>nGCtUB%Br4Jzti(4_-wqON<^vEnA}cis}>RCJ0$ zMXN=B3!EJGIi~az*-!2k`lJF>l(n(so{9T>#+GL7TkK4qRlg=t5!f@p>8gf)4hw}J zW|mkxMvsXc!yX}7qZ<8KB9S0EK+YEWo?mi8ga68TclUq>^X%M-?!s!&Pu*CX?p7nO z&}W_Ba{Fp?y@5FW)S*mAZ+3RIX6912blpLxhV1vLQvv#ECOlqj(D;UPPMgl#t@=Ge z{@>`w8HhuV{4tN4x-O^h;$C^nipQVrXHou3$#WQR3Hj*x6rSN2?0CWc zW{OjcZxdtfeff9s(bYKf&FKwWw3vO@WqIv{#{;{5a>viyi89^b7jBOyZc25I+aCSy z-GMDHDsbkL86DztYBQZ@%`iEd-hgpXtuxn>`4tC(PD4~@_?Kqg>t^uAFbYAhaQlK@ zk)*XULG^LI&_l!pAub&#LukrgA@GE-Ghy7_RA2_Q5ua4vu^ zd5d9gDX@xTQAAbAtR`>%y!^4m*nP>;PL8W4wJA`ESt;odH_862XPb9D+}AISAJEG! zerNSQO()BOPR`o`oHiokTlTxK&{d_U0Zk;RqWjX=E_yBVySOKrd1@!$_3=<2h6i_^ z{&3&3mdC1*y#h9F9I#KR=$^d4$)13EHeTs`A@hrV^9dx-KGrX$huR1G#hg*Ui(oPBeb70o`5^bZ+w2B#lt6XyfDpKsN=^V&XP z$a?*A7L8mhKtDmY&zfg3?RK?c4dBy&Fe5m8Tss%f-M$$L_g@XjTA{`(#dqE%beXF^lDp1H83za=YAf96X2LarxH zL`4)`;9fJUapMM+dTh(Jn*QomKzId+D6^Yb+wPMUW8KJl>mJ?;yMYf?BZ#QnOo-aU z8M-p$Tv}soaqm;N?41(4XD^f-olj(+z^p3FeglH_fP-6R6wz{G3k3db5WnX_8K;il zlb2)ToxCz~gKuBSXi1nsV3IBB80>%=7q!taaYE5RO+ARVH!v)LkW^6pg7^T{K)|Z; zHnY^3>Uy+3@8`aiu}R~ziC3-60{lqJF;n^a)n4B)EUD4sRnFUIMLHf|=$)?`bZihh zg_cE+?mEO7jb!dFD$vu6()y-8bY|W;8&nh%Z9lyv)NiGx)>|ApX8;+;%=;Ke z<1|!Ep&_x+(o1*x+;N>cWSL~(mR=t#KttT;iA{%&ALy{*=*^hxJv@8hL)8cxg8l(( zGqb9a;4@#QeLp%$=(1FI>LRb(-cr>_$WGxJae15V@R>!q?t9+UV!g0`TC6@B(mwOF zYrow=PBXu*in(ZZ&k83Yss)g(g@{K^?&7gLZiPi?Z7U*1P#rt6cNc?NU&7gLGlKQ~ zdS>+`Y)>_Ugvu?!)vzENCmxkNyRGjsU*G8T#~DXvszyJc{3`Vx+G7*#$H${By<#mg z8yoAb-L5_Xt#Mdd@VQG5ui3)%_qunBER_<_64&FqHZAGNj5&Ux&KHBbwiVz(U+zx+ zT-3PKYxTUyDFZJzA5@cgP*oDp>%eu1Jx;xGn|Af~tTTTvysRPtnJe5O9;}OWzT7Lq zbLp}4s7JG3+*hA~a!Sm6u8DK#n@sM1xs(4+3nw7z9U}QcbFEJ|pEDLb``UjYW2ajM z2uQqq`PgSxo=(&2)V}E5xRmHi_21$^W!)hLoMOcncAChVntVR&9EWiV-)oic5D`=A z`+1~$FxI^(++V1c-sv#D3=(%La6 zk-Q86wj_co;38qyW;EIm1hSEgS+sr6f?gh9?G=BbUWtHre4ct!l7n@KN#T3gs=*(B z>JY%tJJNxHS0IF_F@*yt2L7nU0iaZa4sEOz4~(cLA|ES_3BVjiSzCAPW`J@bYKtnx z@R%CQ02emuXQCKWR26gy{gPnoAdl5FN82Mp zMaC0V++j0M_=HRzhaU|6{FdlTR}iib^7Ii+D>Ph~B@zY#1%xgDu~{H=*c+cIfrx=Os+(jWv-)_4^;1&1L8Wo6~CsgzbSXQorY&?!u#)r`}QmbApPC0;L0W(2Q7wTiApkDw^ zYotCvt9%<27XPV>F*5-~d}8fhSX2ZCZJAS4T(K33xkvQ}s8 zO?bTkd78jRFq<;_bmouqgD-uypUn$g_h1*&6hAZ-XNMEvvpZrTlEe~VB?s~nU_}Tl ziW25IQY##PYSmvXphr5-{%W>-xc|cx_0~c<9bysiEo@y-K2j3{j%&;{5*g~d?0)m& zMC*-jP1TzenlL~aG=+zUdaoxajz&DNH9|f514%~`yiaC2%xQUQKEpJE;DRb{K0JB} z&{qYDNAH8ZNgRDog`*GYrY(NC^r`zgztz^YVw({TH5F%vM~~00@bvKL$x9#~y^X@r zKN|OH+^5g4-PgQt?I7sKO;+y|(4&V%-{lZMj~;ysc7CTGz4lVhd%fp}T(>(%kErD^ zk%)9saRZ2>r_L)odTj1L21_(fRKZ}W*lj~G(io=#LqJH%?A3(OMun}6=|MS6s^L(H zvJj3;E^I-Pgw(=Nis7jEbJRR<1*XxKQwWk3B)O>)Lk2Ka!aqPAS~k2K0}ZM=Z=nB{ z!caDd9_8+)7(T2P9`pg#(z#K+TS_3CQLhYF@lzfNhOMg$~&9 zKgITCnE@!1r~}G4VCD1>ZBjKQ*_TMyCaBMldNSD}11X?TjE7bW6wqh^s$2-7XzT#k z;Im7xq$>#$t-;4Kx3;X>Cn(w(#17|+0C>oiMf!m+4`%bB@g9^*106y6A};u90IZ}7 zLIwm;c==FBO` zavZ6M5#pps1%so0LuG1XFigeinktp4p#`CsN6d{{y%sq|3F1h{Mj1dB8c0^*Qq8(+mj+AoTfr^$*DF-(hAk~x7Dd8#;;cg z_t0&K)GGPSr+Bse`M2v->**oeahi;nX+VlRlCWukCusZ51MS^myLU18ANz-z)i9bH zSE<_6)R`^hawT=ACABZ*4MiXLZBm7+LG&r%TBOk;(hBl0b_BB}DPman64tKk53AIH zzA=37NBd*s=R6prITi;vZdu=rCfQ!Nv>M~-x6>_jTm2F%eVh`zIg&uLw2GFLXPA} zmFBtq+?IyV%=ezTes@sQc~}fK1$;@78(q#FgQ(eowkF;zH?9RJhb3`8R8nUae|mSY z@a^|5_2cbg%NDqMi1O1>jFOv`!<|N>qt$Jp6U5mYbmaoJvH_v%omI=l?2w|Kw&|3Z zUPZC~+$v34V~X3FffcK~xUDo(Me2U4C~Yf^g2TeQr9p_2da6*sN62DP0scO$9`1j#sx5TkaKx_Qe1wbT79mA_<(D*f#Ds0{9>1~)`*`Ylz=?HO zv$-FaR6f8I6mtRAB3CGek&8?)o=mLZ)5)jtgX3*aUa`oCbs0Rl-%>1zj6_DGO-%Nf zqt{Z+W2i6J*@m2dE44Ebd_96V8_J79+j8qojZYd~5|4R;K2I_kjR&VZKR>X}N81%& zXJ05?+~5Q{)c;pTBZ+zhD|<~mwBu^Iec<(0wy(O-)KyCB`=O$3)6vup%^WY-2DpXw zy3UC=K%W8${6t+%$lEwM-70WI(x+mV9$pIZ(}W)E>fI^DcAs!s@1u1XScWqh{4~l5 zymcv?W*0F}xFCJ`;PP7hD3=!6HubAWbnU5CxO?}K0^6`ls^Q0gP|jldpjSuTTP4^A zXn*TC%jUr_^7t7u=(%ZGk1o_@0fy_{`1-yI@e|&pi_;`a7kZ}omO7ISbgEJoFJkz; z(D$w9o3BeK`RDd(JL6jXD2Jct_dSceDG7GL-*%2~-1@4&YWOiElvQloYx9sfjvVvc zXR{bP&(s}H9zP93rVo1_x`eT#Uh{@d;hj8D{NT$fK3@4U@JX`3d`rv4H|#oRV{j!S ze;PQIkDNcEu|qcN$m{mbe%>_+Ka!ZO>MX0cDatS6TFNM^9bB{KnXB@BRRfU`p{zr| z(B@6%*mh%vyJ@A_HQfG+JctB^Vc&-_y%|e4zMN`q9+qCaaSk#cV z`rUx;lNMe(iarSv7;5;qg!RpJ1U10_;#`fg@A(RCz~_fq86RCn+wSSVpK)gK>Vzs_ zC?Ib2IQ@mg=}B|E_1^S(h*k5e5g1Zh{F1;=-Hnf~mYrnUWTnRhET(pxpc;OL5b#s> zt_{bU!?#b5=#W0gaa19B{7hW@b>N^)t`0#9Po(*mZ!1)YACYCpQG-6$b69xwUjC$W zInhxry72UH97aC?dGk}&oIk>ks8&CKJ77i{A54+(u!yQkQUFJ`S`-g z9#a+KM{EA=1```<+s4d!p4!&;_|7Wer!@P3)eVmZ^hKZh&S_c4s^RB{nw*dO&d*d^y2>HJExWXNWRoh?1#aM1Fv)itjkaRwfbpY~ z)$b|<(4-Ah?-dDKQx^}*Dk(qLYgQEiq-~?OI`?^i&Egf0?sfIu-K`ct$^qy}cvpsr zorlBLThyzCpJp6U5kSP6oQ0oX?k$+R)+%^@=&pO^`yJ57K*9p@5?k!O+HWW${b{ZX z^G3`=6hQb5=-EMCT8-&(ingU&xM=3{@{ z!s~MyM_IqL30WK7C83SOF?4}c-hg&b+P-9c-}>}8_ZF+QhFx$($Ek)5=u^9+`n`Q7 z+XU6Mp$EK+G*Nyg<+xMSZO)o^v_$j84!xr{cAxLAB6o;2Ih%IcikM2 z>~I~uToT-2jUV`>)7mm>q4wTKCs*m;QOKQ%Zs`l#c1SbdK^b(=U?UUTHj>$aCI$@} z@G5VtRZ5)tQ}=yN7tt&K|FZrn<4)&@F#}&B=FGwy?qk+n9M=h5AeFguJ?dh|tzG7s zMV!`ceKLmWr#zxnt;uN=#tjo%MOf`kVGfN84Z=zkE5TCbxKl68w4lCiTg#~U#f=lQ zzT8!jI|c;Dr;Bmxx(`z3QWK{n_goz_8>=Nqf;&zh>p#!i$+ujq)9X>dvxxNyxs$e7 zv`Aa@h`#Jx&hVjkgNLKffed$yZW_H_7P8DH+ub$SdKcsW^YpGV?qrnSzP)ZjTV?`d zXyyfrqz7cVv!m@nX+lN+E{2fH>muyirg_o@R^UZbX+MPyBx8I<+U6)AR`MqiYCFGrCBA} z^M;hz2DbB1b6BRc9pw(bBQVA0H1)WVyG>%jqz_(>4^CHsJFO0maJO?_W*#12*m32? z0ZY-LYJ}c_b(5;MBk<^ymYw_;bg&O<(RBINRNZnFVPr&bUiIkO=JXn!BUaggK_i~- zWMlOTNWiF%5>HIulm{7c=pR@IrM;6!1eb1=a5?Id|@dxgGS;!q{cuFIe zkRav;0$D z-St(gf*g8Tdhkqx{%`Cz-_ue1+OHJzyZvY6kR1r;mW!*y1$Qr6+OD2g@nQQ#w*?ny zm&)&>%cMfo-f@t?C>uQ=m(EyXaMCz`yOGVV9bYJEch(*!|IE9!{dnTN;YeD>l52*> z?s=2YXKss|POWIZP9(C(Vb%2h&cl7Iv5g8DyDe*cvs45uTT(-GWcz64NR@0-VNR@ zwpw;*TY0YUU`%dz{|N--icXPkYf%1O!=CB($sv4&!^@u0>`3%MsW_$ljswg2g6~Oz z3;y`K$|C)VIu$TGTke5@S3k5hAZ}hrNr1nmtpU-*udyOPx=*T7@s`@Q2Hrw87jnV? zIRFA@WvZ9BA0x#H=%}kGkn&$>YfuQ(ifj#twpuNdlt_{#)z)AEZvRTO(9v~Q-R$d$ z+a$NeO+ws!k^(rs^op#6In1p4oox*!@a9Z_}Q5*9227BiHwpsfKcNeVZiqj{b{ zTKw)Z=1@h~wkqKMTUEsIpapARgIX0t;W$oA3nj&In5&Eyu%i5%tqRWII8V%+tPalC z7BT{{p1+F>@~sM10SL*=ijoe)QWAd-q+F`>Pjt|wKe62q`O^FGrwKP@2 zWc-tLjDAkjWS4~rQ+(YRS>L1k&B+FJ9~`S;@gUnn{lS%T~OLrfnhMN!BhjG|~6 zY1xLhs#+8p(I`RDazN6}qnO>kKT^P{rBFwHq=d^qdKu=fWLy zqn=gvf=!7-4EKy7_Xy-*fjt2D7S?Xah|qJ!BgpK+;NAjE2W+&HfXb9oa&u+Rf`LNwpvlR{>3tG-t;6(0PB#$27_DAyQ(RM>7ghwA}=Ram_ zVt?uqcE5%9hOYG@H!1e$@$*(Z`r39wX!AV<2Z=+F#yC@%Sb+n5AgYBDz3bJO7#i4i^Ew~!^~3HTu5MZQ~u zIrw5lG>lShh~#EQD=R~51BDl%vlmp8lJ7(BXT>z~Clz?=5zCm=QV&tkXBj;b1w!j@ zi>3S%EhdSP1F-$VEFATSMQBJ-54JRrQV%;Ss2cG=Ou350tC;tfw1bXO@NFeYN38u) zOS)Rp{i=KAkEAmowD%$w?jc1wIL&{qy%(_*PId69HY(;fM#cOAdlBYCn6sfh2L4dj zGbFV4A{H$oMIK2u;twsg*tPAwXwsT_#IifJJpIeh-2VVi;Xw>6XFQtg=>(pB1ING@KQ)fW5feTNMh|JQiO!jAvLYv9-eQ+`aiXNtL2*# zd;?A=2Uk~6Q-}*BI*iyx>Zm!3y*WIA1<;Ug0-+xwNlyS3iz&eMC>9DlfYVX>4bX(^ z$1kyEU-I_y5(vdy4mfKTy9$J!2na4h#&KN`HLL^$&@4P@1d!CPEq&jbgA4=Tth^l@ z2V5TNI{~f{mYa|#agm_0U+4^yR&a281-&O#Xar}3Ea@#D3iaTs;e<9WuN?N?9i{8h z)Tbj#wjb-C$mjQ0(g?2UkQOseT}idw^J1~)x`QQi(ea?`rv^2G<2VC2=v6d=O9Q}? zMVA>IP@9p{wzXCIy*DfSP!D2}mOn13d?f~4Be>yUJXr|_d?UD_cS84`IR2fwf+Vj{#fvbmLHu{>$;>*3%aB!KyWs570I3@mV zHAmsURt7~U%C*nz(PODuyn)-S3-`IHR0idTMsR~qJ86A;A3+N#UBA=+VPa48DUiU= zhFvs%z}DT=RfCbNB|~0cQ;46q_GwMlT(f3u7ls@)&p3Ic3ix?+;OXF3hb$RsJr68s z*(I7;iy!6cDc?R`!){18i#w%Jh9^ySNo7Aq2(iu`U0Kaj_d zQ>UJ1gM*_O8~pmWJoGsHIEo*93G7ilKijPT-pyublkGQ4UhSJv1^g`87_g!Fr6fiK zHKs-Qi}mOJFY!}ZDN>8P_>w_OuiEeOIyaBDyT=-IfmANzyN}(n^|~qP)J=QGZ9RDX zN;Q@uwJ>>=W!tf{LquU-gL(gK!?cqUMNgHZ&hU(|)AbH$Scfjt%{jPY)+W`cV@Rmt zyDx2O*S)?^ZIX}n`ygU98bO{qqdWH)5*;O??sM+2W&64D^%PRa|0$)9y0L}D%06AD z+NMnXR0ZmM35)sEWM@~))N?Z*t|-x9*HQ=h0xVjY&DY6mUL&)tx>o5|eGU7rOw%Px zod@^2xL)c148rWMWEk0o?!RT*r|?x@^lC|1E#_U1Sw~)IZ@*#Z z^u)Fy?cXV+POpEK)80I*Yqrbfd%t+s{aWaBWUSt2T5lG-$?a>G*15E8q96s+m;YZ@ zZ)I91bjR^z?Za`*N4@8s5WZILNt@W086wT}#oU`*~<6yrzoCRUD0U0l#DmK-^T<(nyIz3R3mX z?t!#E*}D7mUwCKKD1G|E4`Z@6nwb8oAdJ*^r%2wf1jEYYy+2OgN75;mo@?*3UhDYU zZ;ZQH4^rsH$D+x^{O_)JR)iDpEIa!?rw@l(1uuSxj99LApgM552yjGJ?@YpCZ?S;s z?dbygKC0;>@D6EQHqVpgfv6csURr~mkZ$l(Lj*?o+X(;%)r=4rZ{!TZ#NjJreC0H? z!IB?R1p*H)3pi|tNPY;blhzhhlNwnLd<%CL-;E0nue`WIv7gj?t?9@TvOKw<1*f&h zjt6t?)Err2cgasG5-c>GxU;-@LM{jS6J=)c%m9IA`p8!th!dmZT-rZuXt{aZm^gd) zgf^u32T_Q{c2t>ta4?;TqsW~+T4UmpFJxcWOlj1RS1khn-Jw+fnV5eX_l##ls6<6Ta3`Ek2 z{Tw7SU{d3!L?^n1t3%1whEo5xL#Y)IUEL7D+nGc+J}G`crz8wVpa_Hk+3;B0h3CN&`Wj4>lg97@iaKI*u zC!%7dw}_^_w}%*@f)7H8wd6KUYQM$E{1f?iiuh+l2*@O!1(4#OiUFCG zaE?xzb3DG6x0u59;CgcT;!5}ivjye(CJ7|{CEbYr=vunf(yhXI^78=bzce6o5a7U1 z0y4oy8lE{o4K{#=zJRI~3-go&VM=QMVaF3vAHJsaaDmC?azxT7G#FqC@-x5^NI!D) z@OI1yMl_yu1RiG?g4Uo73cOZLKZKyazd;YHCon|X`7)nW4;<8B`=Z^}i< zN8;qOIP`Q#Ui5nFuu;1-Z+~4f1wHxH!cAxX>V50arp+yPmxr&~Y&O9bosP`O=bQ5( z6Pxy*W06=lujPTc4|(WNRXO=omy7qqhed{8X*ojuNU>#5t@Z>~-9oAI#rM-MYNVz**DBW0k|;1Hd(^qXB;kTPzzzP5LL& z5`0nm;Bk%W05m{QBAaXJ?csq%7$WKrZB&*JF#%zVvP;lucdno3k%#mRkv5&x1v|c= zH>V9omIl>YftX?JryB4NYcbbTguDh{koh?8fmgCIXXXSQEEYU8i)|OT+VXk7ujrU? zD})~t4g~^!v1$%5zH&Zpq<7PnHht4=#*Stt>C={mja3anh6w(+xr6nVyzk>jG1eFBSzak-VHHnF zAZV3SaZj;nIyG?1&c0EhZ-P(+mEaI`=RsuAU4tQ3Ss}~y57*nwsRDuy`nBwLAk*C@ z&-ucE`{y2DCrvd1L9kLL8=R|v0~zTlDvXq`I34&6ATqu9-e>)w>x`WmdTCB~xw)!= z$cO-<@Sqv!NenO!|ToV_!-W&SlD+E!2!GMHY#Vm_8 z<3{d3Yn$R-1rSB`(mnjZOK203bnhG8R>z?xi6ICgSC)sUq8ZQc29e0&L3_S-Bl>dN z;GNxE&#qAoM8-%9V9dxg!dOOm;SRUvRta?m+r9MQv?dRtqoyZpXQZz%OD<}pxjgbh zE()S}V2{bBdlA}R_i;l{TH$*qjj2&{bgBTN=h-$>k*-nZ+1kb_#~$;r{+BgE5&`KA zoKe*ygbWQ&ar-~ipr;F+)mrq|kFUVbU7+Y>cCjaJ1LWX5{PwPtUDhk+nNEufU@S(T zo6Odx`SDqvJT_FUmE^%)+v8jq`pD6CMdrj~M(OFV&|&`7Jh-tu%+>466^ns^0ODCB z8&j~|)WRLq)J;os`qKHU*`DvW4Efsv2B24~atx-%Ms`}S)*USNjcGGK$ur|AIu10` z;d+U>Nmflmx;sHnIG_g-0qJkpv9$=v0-%sRo+O-t&y5*KU365ySaDS&eA#K;4(JT< zj8(dAvGCw=`4xo`Dn=#jV0^*%Wn4Y7sePXx7e@RL}2UU6p1HY(f2Q!){ zhBldOPl)`GnWhe}8U!4Hr(?}`6(GsD3%fM<(m}VVV|JmFslHe51vmQPxe$J>CN-1c z&PnLG7|+CYTZii#SVlqeQub*M4 zAkG%XIt&6=BU_&AFK-8I6)(5i{&C9J$L&tJ%H0)w1fp)r$(wJx1QWM#Cs?iN*YH*Q z7q2lB>93JDCvig7_tD;-HkYp320UJuLa{1f{eWvcixG885F6~mV$VbvU}a^CXSVi~ zcmIrj)STOSkBdv~=b+;##@0{ejSF~OGI^7TlQ%ql-5r_6Ev+KVpRCZ(n~7bis`6$w z?y{%HJKHSx+RX@$zOvP`;Ff%Pfl?k5=*CwhZzNc+g1GtoVT9A=D-D^;laJ|l2z+tj zhsW~wh#SD8?YIZkt#DA{Q{i6Q=pNr*mac322EBGwAJkmjgX-7yEoG6Q4Kq0CzGX9W zx)D04(ux6Ya}_-(kUcCAf+N_f=!PLY%WauM3z)0dC6Aw=`{JL!_+iQEhJ(2E4PDiN zDvYL37cU)tA&q}*33?BT`MVVSRHhs78hq-?X^rmB`ov6VK5>5jJ~4OD zOAb9cuhU8HW>rxc_0PL+a+~_tc56u6wreb(VHse5jmkKVQyJf$tZo?BxV3#q$@+;- z)SOK}z+Fj|abGj$a!L9`YT)9YPp6(bOY%|SWzkLRm%VbF zOc`5WzqOAkGJUP;qx#uy!kH})R%tget8DY&MU?N1fTw}%&)Y_PK*YUsWGH;t#~RmDHQ{iJvk%_qt-e<<=wf2G3| z^vY|5R}9(~)#_Rud!xi^>dtod@lo}rxwTO1Uf~);HJ-#3@KX>CK}LWt$dr@a=bpyP zt{K{_sOy|GV$q4oYC89X<_wFt$d5wX-7_&^OhO7B`-%VP zR?IqDTC+AL>N>pRssRWz3c`z^foFH5xy=4%A27AWqeET#Vn!DU1Wgw|7;yjgEP9L} zzsZj1=Z_U4X!YU*1P+jSGxj2L90A*=#|)^`i`6-P3x^L>5H?M_8%)FMbp1X-o@ zYp^}Lj1m0Mx>;`XNjFtQkRBn{<&#c~HhoSeJ+Na^u1QO32>KjIAgF(rmu})`!8WN6 zjpnw>y!0AH5I)vruTi@B_)q~ox62jbG=tU=RY1_~PC3zU{bCt0djn5?ow99NO+pa# zr0Wl=E-l8?D=t10*32?sL7Q#so^MmF(gy74f=>X{E1s8?8G6<>j;XzDm8dd>DLufAENbzObjv<9}Cng@#v z)-0|jmF8@Bb+md^U;5U|^|X&~2okA?B4Y%fpRrTy-exuJu0z& z6WBM`5AW=-=7ZfTjqAKFs4&8pt$t^qdywjR)jnxd_jY~Tm`$$&inf$ap8RBJj(PT) zJ3i&Tf-&t_Bm9g&fLB}e-MK5A^=h3)Sw>p+eHeKv+gL>a4Mxmy+AQn(kST8(^tD{! zy!ZL?AsLvlO9DW9);2q0)6CIgO{5`hM}eLJ3ZQd1ZMN{$l=(UBV{PLN+k3eh`(hywe`jc?7C%cbQPJ1@Cp}<7@y7W)M_9-*UR)0^pQbJw|3BPvAO@13}x$Ht{X?!?KN1+t*Ngn7Qknd!d z^d7Pbk$ zR8m9@;&!*yJTcOz3IIxap4o0*e!O+UrqdZlN&fz|08-9RZMtUo!+isvIK)K7rd>3v zJ6kmX0oN6NQ+8rQVv_gLAVy@pYl6n>4!NL@fdqhzMosd!p1Ri}zs190uiJK7g8~S@ zDJz|pU7q4r*EYDXc-PnUrC8x^GHR@WUHj+T>&>+arta@yd0-?a%xZ)k1UF?OX$D<2 zDY7r+4{nSe7-O3(O5PV*&#zQP80it@&`R|!2hGP&ErSAzCcQu4i={V`fYDdcHPhwC zN0`Sp-!eAa+yYC?#GBKp-pv9&71%p$j9)mp)$+PnE*u#c-OYQ@g*nu~c1g$5CZEsx zU_R0s0i)_vWGnPr-3hICnz^=1?(!Emzs0HuAbkRWdakHb&+)==vt0%O9xf{r50IBb z+v9qd`5n1pli}=gVu;hxSqc@|oU&<6TQK~s3ar~rdsf;IYYRmNKu@xOQ_A=Z2gR`4VANYcc0_YNMKbEy1OlPXqPP1660xw?JAS-k_G5|{7^!j|j zUQ7GJoxD4#*%!lW5`bW7O^{6_TfkmnfK=L;~m@DlSk5yVePpSZ*I3)##s2Mah{N&P!zd74YrE9)ZKDz!th=3 zp?P(xfTYewcNx(pnKsMKs86>S?9=Lohi!sV%A<~D-o+9sNLbU&j5)6t&3i&G*uCKJGQmj`6hL_2qHQnNsl{!A zXn~XZe6eqD!mR>;Hn+AM)jcwqxo-TYd4n4GV68}Mgf$I)i(;X7wW%@FeLI#vdKzOM zKW9_j8E0?Xst6*YgF5L$BTI`AwnNHm=UYsNZO6$=p%xpy<(8*5vDo?f{sRAL&21Ed z$foRxUkzsXCza~kc>ITu?2Ofj-R@|d+ z)ZDl4s`0b}6+twF&?2s7N=)vByH{x0U$si2J7n}qrkl6WtE-SZPv1w+3I2T5Ec0cj9sM@u zV1OsHBMmuYWjuiwYL?J(Rq>XSAH!<7Luju!H`%xQtrpuHwlP``5~KuOMHfhA?r0Tu z3)gA*!F=UfhA-tpW6XC{4cuwH-ASC|{@#3Xg9lS4Y$(S36-vyc9CvKzb?j{?3b%}R zYk8!l`D9boxMMJgz#Ux!?Zp>!dRS*!Uv(d^*{=_I?l`s@b|}u~3@vwhJ8?;QyFLoJ z)42YuLCZVOu-`k^{ex)evZ`#MCM@gxDeoBHI{3x$YYlI_)UM?Yfjc+U2bnxnzemj+ zlE3!Nl^2W2a_3M{is;Lu44V+08>Lb8_K{4SRz~mqW8`(Jwcr~ybIP+*-f6RXqF4Oe zxHBZ@Y|f4g2s7Sk@M*1V-yn(cM33Wopud82L4U%6zr z!MEpwWvkv|K?Qi5?aAX7`yY3@Wgd}b(dusGNI!IS$mpGoL+rShlP7b^G zB^C_gEV_n*nS{+&c3S<&-n$X>!U12m(Nlu%D%3kOOWQCG+rbq* zIGD7{eBG=aeTQ7Mz?$(XfoS=fa?0qPzHgR!+$uk7m7{%lGVh<`z0fOGVkYHmw$SSa zJALMB*zG-FxVPayF`g=N$AG{c(@f_htzRWFRy~Y5zs0a&8F}suUu53KV$6BQ%5Uv% z^ci}3p+fFVz7w@{qwf>TjOmwyvL2tpj%mnnr&(O`OvEk5A$Zf&T}g}l#kJfa*lZn4 zjO+YkV`CfYurOy4{dh20?i^iNE~bxiGfQ{y4=h`$tEW7oRppLYZ|D=>3*L57YYpv( zB`s8;5}R_|c{PId`nABILC$=7NYrBiZULw{*V~8C0Gkbl zl~uuO0}?M~lN4mfy}x?Yju9Ey@MVjE&9M^;U2rRk3bSJ!DJ2UC+O$c!s!19lSn@nT zp>Yw#%Y(({x(hsD5&z%Y$IVqbgQMI8QgJ4^7<_sAj!_%eBi%k)E^`YRK6!1zM|ACA zr6xtUC8?M$8Ad}|a~|t5AVTETi-x%e$jjhz;5REik(i^Jl21U=p(9uW&{_+YVV4wM z;(;$B8lc~nfXxH-B?bH+f2#(HcCw_+4Y1|KihFWhS)hB9!k{MXn(U_GV_{tq-nm3UzQ5CSY9 zs4Ug=WbH6OM{^h-?u^EV8%U~2OZp`O{Rj#}+p$0*CQ#p4)f=F`@k&%pvha9Z1NImq z18@~Ci49Iju?KoiV0m>4+k?lRNf8U&KwB6QMO0DtKovqkEe7le&=pcdfz*)=Lvi7{ zvwT1i+e(@Z!cuxT!bwYG%dDsYIN?ET8S-Bvoz%uc&92I*22*#@<||5CWUs+5WTrW+ zkuEdM=VzbP9PR937fV zQ(*K6aC6>y-`iyTJ59@7BTLjw8ND!SiMxI$G@MnkY+SU(O#neEQyOH>W?hfqN4 zdKWIR=qVlo7Kh8JMA<+ch+Y;b%#U7`9JlcLhFDnlzs4<(BSa6Lc1+=9=$>mxD40WTZ;va#8um+Zk8#odI2AB!b z2uBEFVP{f=fSVoAV8w$gt_D6pds=d&gLdEkDIJKVk8A1Rp@g>`o<-Sn#VqK829n5H z1Eb-+ zHkwY{S>B+jI|unw`w=-hfP&ZfgC}B{YEpcF8)-*(P`{}f=m4#BFF5uulmoGhb1fTc z*#Mw}`a40xMsSRd5R`+S9-@iU4#bk%q}TvG^p2oqBt^uV1F{Y)ykKzKUf~4;U*Pd2 z$K`lOSmm}-14sriv@;x8PBGwX+!4!B*H|imXD6xZU27;+-B1Em$T#86k%+a!NpS&6 zZ+WQyPBKU|gN#OUbSS}*npjo4#?k>ww~7koN^&9s2prj&kUtnfb|w_2(dq^(*1{@n zY}vbG+OAj)T@}w~a94$$&_D}Xf(thacE#{~XgO~FV7;&dCz{`&<;Ad88`p1i41I7a z&JP_gK0Kk=o8{rm779Fob>{}9vUG0>PZ!5ZKc#>jEBY~vNx(PG+s3`zf77|E=G)uo zyvSd>Acx$wK=}F%0ax|R4LNdObq{4gsh?U!GtfZ2wfv=>Tsy$_r_EneJ zv2v$OdWJ}2obD!8+9$;gXs=4R0W41F;>HB^Z>0y6zmOhMWkB^7i(%M{977Cnq$d`o zudxh~ukWuUMc#v@l&NyyjF401))(%1e2j26TU_jBlI(C2%UD)XmC9cfra<9)=F&z4 zP=kBnrqw9W@$KqYM&D6yza3>{8P?xQ#cAt;Fjb z145i_kMAxV9QvN&KX(K@a7x?uj?`ILttu6n3CWLL6ebYhwu}l}N>JQ{JPrbd0?2)l zlSQqU9GEmiONX9RWFF{goSBb4G8Lx=@J7IaluRbTdCgq}K3r^G1A;JmJ=-lTqIjU~ zstsQJqxO?^$ju8y54dG_*~IW2DtxC_7%3J;#>hq-XNj#hNC_ioI8K5ka3!JST>i8%&cM&j^%Wx(9tDY` z0US$7yx;Jo9ezBT>j@I)Kw(!Pob?7H>Nrb**w%y;IpKj2-P23#NAUzfn&2v-v_ykJ zp?0rugG&!}KxTom(E>2<8}1h*qyHp3PY)+;h`m2*EG3~Hk~UExwPCOBdCk#P>kj5n1Wh?-jWktI8V@eJBusL`cO>l+py15igx#em{O-KvQK=(_`wOzig)F@R6fC3bMBv0|WBGgqWdNtQx|WC?gwA(y19 zXM)7zNI`72Ly8nFz$7$3KFgEGmS#h-Jy;_7fV!%&0;+zPE@dGZRnAboj5Ab;{b>Gc zbbz}(xs2rhqufM9-H9vq7D{sak(FQ>WcK8dt+R_(@C0USOHX{U5hlMvAL`GFILM8o z28sso+$7mIqXlR|07X`WM0rXAog@||RIJXRO#nDi!&eqo|23*g6_OGejSx*(`y@r+Q&4209vEDNGiVlqR^^j&b9uZqqkrE4#_Z4D+C2ax! z+oS@tKTxS4@9}2fG&iw>(|=7I{2yy>EqRSARfpBBE}=}7Rv7|+sO#$^EpeP6cHJVy z33yNpI8jj?fWnr3HOl#eue!Y4aJsc$Os%mh%KuAYYb6ZVM@QKq^kUTBPgoh z2`hi^QeP;67Y0Z%&V(d36C=e7Njf5|!v^At_^v!RZ)trjkd-J$4QQOhI$i=k%Y!#Z za++#t3bK1;-^bgP(BdBla}cRQ!EBiA?jc}<$R$|s4ft7MLZXz1FpFO7{=?MZW46Ex zB+QEi6c)t=9m7i~00qyu11O{2!2pD-6;b#CF-6S7eq=8xG)IA{_P@w?1R48cuCw&Y zB>M$98+Qy&4iS5S)mX~H?YUfMH6^**suDBz%Y+HB&Extxgzk6LTe0%%4s_{Mv@{9V zg;~1rZS#soaL~-fhiK;Bz7x6rO0jM9xhEX2wUo!?CWj`i1jZ;Q`|@P4f$ zSAio}-w=6#V-~TQ9VtnMhk?xARaJOxlZO+OGh!Bx4`a)qr1Gkef!k=!9bAUElJK2QO58+ zc%Hy<#-T_Z8Y+l3NDz5zgoCq2h+XQcL$tx_xnLU%?Ez473hFk@D^pu5QkJs^g$dYR z$?I0slvFX1?@t&kcnU&W-U#W4V>+?xAZez<{VmagSC#1!(-cT(#W~+Ue-d&Q0^X=6 z_Ufw+8lh&Q^xA8Stm6H*{{fB=jCx}NL5N)yNf88wHb66lOF>HnSHYIAoFvdHlISnA z+OfQfvB0SqVhh3=%Z<8VNu<3Tl{B2?H-5GDBJ?lHr48s0M)38yi5(+J5d`}8qy!NO zg!0KWzgLAoeJEjvGn_?EZQ!XvY^+#I4gOzWpZibMNsy<;5JZSGu84gwNl^oy`bmX3 zaMBRZ4%&kc&Dm^tt|{5$_?eoT3wbPx2doQAI9zms-vwV3iFqL2S@W7A-skU>LUiN677#vB- zkq)27M(oH~V@W4b;I&b(*xpl>Iz7<3AqJ!Bn;Bi=ogF#S@hOrZ zH7pWV3A(}K4#{uqrNOhmU>mWAV=deM?lM4s!h4{IZJ>MSR26CJ3ZDitd?OFaYvOT zR~YCa9yo>(J9Cm^7{o5joA?d%qLZQ*v?nPj$0Q-Fl@JXo-wL9^tCnXO6X(Ss_JsVe zv8*<*MRLZg_U{C?DAZ{B$SfS+h}}F%@eOJ;3Ew2uK|ob6ka*?6k`D$|MWdO6(dh9QhYOC`xfIYx%LSb3dtrIjy};+vIC1P;zh`fF^r_gf4ttJa z-;)#@!E(J|xT55$f4XTSww3&^(NDS;QzFc?cGE^W_*x<93=lq!bi_8Gq(}$%Kysw> z@&Lgz9&)aBRVYU#OF3CAO=X==;_jqzCvWXh4efBAw0SxN*e;W^-KzU|TXP5SGCO zEn(2#Fj=0`s+`#Sn$kI#TrNi>J>!vVCP7X!f_?;81_0`=8|4 z!@v8K#a8)3C(fOISG-VKNu00Xc0}Fa%8cc4XCvz7US6Pm42#d^B0=ENWn*+NbH6Qh&Sn@6uY zzp%7rFMo7pV8bvP2)yC(VS6qQu*jg~FcKrH9|BsNsyj>U3e*^keLrI;#WuE72OoL5aBPuE%F+L5~c zg8ywZtJPc3tEqNgsllTZC(xEh@+8m&QL}!SvVd?>N5da6;~8P$xYST{ zqNR5EM#jQpW0!5};aP;`yI|t=y#$nZqDBvcfJhp&p%!53WD`BnQ*Wlxe zMw-!QzFhB8ax+H~?s7v?Bz(L#fb#rUA!?2Kq+uJP>uJKx)^Z=W_(f(U-g9tLK8r*6FkD z8$4iM#$==tR{&%di{rre@RO+|X#Ik!#NcEV6upsJ4oICJg_s6rPWaSQmoq2az$+OH zzU`Saxm{k2WnAt=_0gz*}qu%eMVog-1j-y1UeWBXv<;K|)I!a}Nq8 z*(m>lX{mai={q^I3xPwJABuFsRu8-eaV zsYI162N~ad~d; zV&psePuo$*^#Qv$DP1ex1^ONI&vW-eizym@LvU$ z76Fq`wyHw#O17#moA%3Z)VZVOjy(H$*38Qf(UpLw9nw{W){x{(QH~AxEoPi{+}Z`_ znP!{3jTsS(4_g0Qi>WCwg|VJA;Avy&J#epwFA~YzzAKT^pp$Jz!@bYDhg=RsFA-)N z;P!gBA=D~fA@GY*!34Ke6??q_(trjn+2#<@gj)#UIq(9{4*E0XUpjgVfj1n48-dXr z_|mUh3P6n~y!w&bZdDk8^4n=eGDG?sbXS1x&(z@qWJ&hh)_hk1k_@JmJ@`>Z@5hMd zhgq#DJ-4ZRiLo2HBr+?4@M|?`-6^oU=1M=2ZV%Pu-hhTMe2Hk&xNNWi@c_VPgS|bp zc)>^TAJ{y5d!oOGUzcnQG_8aJZ!a3pjR$H^fbUrIy}ZTtEYVDKa|&AwXBag@-Czc!mv!Oh4X(Ye0;4&Hs8Yrfba@>cl#6yHi` zf-5K6?0}kJasx%LSx@bEF4Jn`KbtMX{kmb9b!5yYC|snd2Y(>i_AFmJF5gY;E~(y! z$u60xAqGYIBq4T{ZgJGHu2krb-5GcFH)GYme11`GnccOmy(nc7CZc3+Fs1<8>HlQ?z`aPMaHc|JZA8Zwh1Sd5!yZ51 zUcx~isme3ialwXD;S5)NPqjMK@A=Qj%^+8atb$Hoa8HFg^r%t7#1qu) z%lu>S*+*wiI7?S6IQ7GY%1qW@8gt!8M&yi-I%l(XQAbZ7gEJ}USk-RF z{~2R$K2UfvV@?2G$rQ%uIj{Dd8Q;w_!#&-R*T7X6T@`^WK+^ z{`zk%W~Ij5Y#hi1O$65;Wlgi%#AwsJ&!hv+=p`y`%(VlfDKh3HD(pXL%VidPoZUO* zn^}C)xWu7n7Mwv>q$b&Nc*nKQ+4pl!(3@H>>aDi(!rch0sH^OTm9*u~UKH;g#C>ZO z_i4b8%j*U-MHlY3*m8Ks^|KV+qpOf(%+#d@pWNR*dtT{Gl{v2C%bsj3%6M%a`@$s( z;kTNM4n)S5g9f++^x*%Mn{v>|2Bw^pA(c6+E4SqG;x7-~oy0WD*xz&YguH|6&}&!O z`uVvf=YD45{^h&2F*kg(@t`ke%u0mfRPn z=7zjB6q}{HK6kyM`NVXZmRmkA%(tD=tsgp%%4AB-zI# zKH20fx|qMgl8ZZZZvUF_606MV$2I>kFpO6IF+nl$tAl$rhCs-h1EVk$xu`Uqy;y8u z@KU+r*}!PV+^!N<-}Kz~g=Nw}8+ynqZLEKk zY$c!r%MnyF1w~SSesr*K?pWWwrXQ`ANAw6!9Qii%-&)T~t>pQDow6H!F|IYA>XL3( zSnuF)8)QOV^b(b}k||&`MOHFg9}AF)3F4{{d1G1LL;3G`Fe8sAUU0tnhOy{L%Gz~1 zGiRW8DAQYi%!5hrL-KHbNY@4_@n3TfIplw7nUY%n8n%;`UAB_8>y255ub6l)pvQjb z(S=|3Gy}bTC6wT=9Vb~hC{6TA{T^n#m6o5<(z}W4ZR}V`@l12TPi20{nYe-YMQTxI zi%v0?zvC6B*hj{pmrTZXg#o+}iWCfs;5B;02@~o$UfBCpa6H~f?t0eEI>93C!HwK2 zAs@G*m-`#d)vxRh?K|wD(l=~f>eR5kSv=Vper`k-8f_K6`sWKH;#|_r6`A$u^Tk;L|vOc)j zMSPl-ImoV?J$l88QH`6aibkX=4!r>%wH~M!6vTX5FOewNqpl}78V^KOm^qE6GpHeRv|Rl!=h-E~%u z{rdTg*ij<`UYzOM3cYEWj+Q%${GBnYf5uuFi?dd&aMsGj#dqt(`^~r9&`Rsriu>Ou z{jd^BSu1f#jQ&S5;BC`WD))!HoRhXrUxW52g<-Fk|kX+xGLw z9mNOGg;05hN-PwAts$?M&8HPQ%-HVmYSS2UGyK{@`IvvyhV4r^9>ayLILd?yh#6m-s{Ru~v z0Wu5h^<-Mjw@FcO-GX|Sxv88}_It-*ZUWUERS8Y*G-_8CVw=#s?+D5>t_WS^YPX0g z992Et>&Q8(Mu5{8*K2Ra@8^@+P};9Qd-at2vEWFYt^?{v&m}@`{dXjD~^vV z%Kx`+^v{@n@21JG>I3jfZdKR$o?Npl!a7((eNkf_Q;b(IT~r#0CFPZXgTt!%aUh467+c&o*t(Z%K$8d_K_e)aI=mQL{)gjBX#J~X)V zjn}@5eR31^!R7tfdFX;EA%1=>=kZp{&3~F|u1`s`i`-x_I{9_hph{<|%xbwEd~}iD zxQW&g9X<`5SigM%IuKc_1!NHcXTI1^B2Hyt$!r(!0SKsanE~?RkcENrcKn0%5ATvw zp4fzZj9v4MQ$GZ~f*(;UMK3yrhFqFqV=$h~C5|u0=6Ew#`%AlG#zx`c`;EtET|q~O zDSPrP5OtG|UQzb7E{qg(6!2gG7y?sDk(fg#E?BLaKwB8DzB?m!@nvahGjaiE|4tiT z=SJfLp|pMN;u=$z)W;l*a8sgaI%&U9EO`wd!&dJ1u~C!FO>Hu$D~>nSP1}xMxoT#V zRz*N6jBwQg1|^mvDd&j&A)rSMZZ4#elxX&mwI|GllSKQd+4I<-Wddk&j=pBH_;N2b zunb1jj**0Ms=@3s5Vzz5BAh&c{R;d5AXgTwEy(dgYi7WZPk6d4X^=_`hth&UpA}JM zT39n+815_`@W;ocPS-06>)yp7ps46Vw*RbziqK} zSMMXqi@Tyw!XsDHMeVaiH$U@DjXte#pa0~26`-`~{EK6;?Gf6l0owVt4t6|JP{POD z&jn9Vwltgj&X~m9nnMrrnRw~MrCwO}kkT$4NJpt0$H&}PXeBwJ_xA`xsZ^C#4*K0v zaJ%5(KOFC%oU9sj4UyqE=*9(p+*^?Kf{_u~b=0^AN3qil5>l|aQ-?0) z@qO(hlj`ce-0u2X7t!W&EBRR7<#S>&|PMQylPSK%5K-S;++@k zj9N(wx__xMtxo(T?dW;kUFWFHzVuO%B|{%QQ4K#v1pFYwT+iM5_=z46n0@b9_ERi7 zfdqa;#gmvxBQhMK{Tr>%v#irbA%2YMTKNN3?{Zl4ae9W)qcgXvfS>4bw|i|>pJ9`J zaK1)bOXHoj_(7Di!lo`v{&eW3o_$j3MpV=g#z#_DO067yv?{dRQp zGCqzz1rqqNbTy_qT8^McjMe^pu>L6qik~w$`NNJ(8~b|t5oY41J}tvmpX^ix{Dj{M zd^0b1uT_fP>^4)!=VE7FHNu!D${%nXg?5PjA+3Rg9lxsn;aleptf8%T*cong&-##R z2pWu7;xt&%rPqDi&Pg**e7b9n5k16_Jc4?KJ}-6E>cU*Rg_GXNK3Nk*&?Ov#tY5!> z@?5QhZNR3xSsC1%)m1>yh22|w_&j@Q8}%^FmX{&M%*GmlAQ*lDvJQnj7jJOzR!tki z;H9yT!{+KRc6#ZU4Pm=%R}Dx*2tc|{>veU-R&$5lM~7#Y4II&!JdoQ!)Ydyj`gWwRWPjas_TujGy1H%jz`6l6YN}}!fb@!I9%wzv+hX~i0-<64s)IEN zNJO3XJ3UkTIl;CXv=IA{i-)exwYj`sHT>ueA^@oM`x4Ee--VWOrr#EnADW28(33EV z=%quGpW4LOC4UP_P3WBzuMj}VQ@b2~TgSp|tB=m3#@1fBRRGY$_3pyKPRke@i+f(% zHQjGmEr660K)0{bo+l3sGRqq;9`spc^HoIv=@9@Fy<~&e%(2^SmvrvQ4dE6xL>~hQ z0Ob$W?~oKS&a7a$i6LWKrs7@wlBg&B(_`P5#jIY`HdVvxLKOh?y!WN^4yB!KV*{p+ zn8fwKhN=;&tU4u7J+sl%47nqjE4}m&vCmFxqauLx2>@z(_)RIJ;JAHs_~WG>{*&gD z2ax& z0oTa`$i<9WX!p5^+;2o(4lGp^a}tjYc(%dRK&2_Gkg8fk5(}kAYYqG@0W$=5?CB zzQu5}z0bK(?aM#hsRfX7Hclof!+pu()ZGi5K zsY8P=t|2dh{z<=OedN$xn+<(-Y~EUW!$2W`w6=8l((q=2&Enk2xx2HyCRRZLx!hR4 z?#=9J7O@Gt?;ju6Dz+9t$^po*g8c0kpfFCcR0wbCw$$`bJfo>X0NqZrS#d{ixy6#e#~m`nsp2XCsOtzz zPm72)4!QZmExng&*Qo`NasV=WKmJ;z<~WDUFKnOf`XdWelt6spV(p%GlyT2uN$wc5I{rL3_b9ke}*1CsE2K4`uj~)0MG%- zHuu(H`)Lt_&K_#H>{9L7n38@(y&27pH))Vyo;GgT<{JBM5CVYe#T)Wd*DP{a z)8J^%nt>E!@)Bt9k>imcT@Ki6pR!9dZ0L!X3IUX|Yld0h_ls!@lM|x%y<=c?b;;O3 z4r5aXHywJyYE|P^YdF>;3Th>gauR5NPKVWCve&HfDgwv^8G@_SJwdB+ z%TrHQIAqtKIAHRHCYWoOgampS+tsSoo^^Sg&^fmjF`7#YlbuM{2Ubs__Q`jfZ z8jM{206T|NIlwtE%k%m9?X%6|X2i{-*xZjn7y7pZIO7vpCcj_Uqpe^Eb5H){on}#v zZTPiM40l*DD_H$9{|#0codkCd z7wuxcVCdTff9m>dbe-&X3c1tiess_(kJHQ@?;o9>JA;dP&dG46`KmUV3rBvnP2p+3 zb-L)+qn0}eo;$PqAJO78*iX$qarl96-nOsk0;$ZMRZl;bz3zC-A!_==F?&DtPgWk$ zzfKOob0>6>D@Xfb2Wq@}M$Ax~Xm{mjQjR;i58_(299Q3Lx89Ovw3*2PDso2;F~=!_ z1}$2vz05snoh~SO)U0F-mNh|wI}3a#T90NK*epFwztnZw^Fb(g&f#J*9=CNJ_inbU zS+?3Or{OnJPob+rhC8#w3&zrB4`RlL_^$PcI!3M*!(SRz2v0o4LJ+H8P2m{goAcUa zEYfGLo6HHGe!P9EiXhS_gocGC8@Js$u`MHsHe2snd0GebsgeLuK*#vhvJhWt<|M06 zF=u=qqaebEhMA7D?$W2YzFC}LRNm0G4Z2qWMDb+1x*)W3%G+W6gZEQ6rmWL+dX#OhB7}&i5S@5k?sa={iW$AT)%$GbQ{=;x4IXUG>`sk1@@-1^?0zp42TWB}1RI-95dcm7)^`!(W4LP>k~ysC)O+Xp z1faU*AnTK=`NjJ>Td!eVV)pLWNn1_`nImL^KQ^RQq>HU~6=lP-FDZoKi zOOB}>xY5~h>ucZFK5ed?#2|Er;E&l(U3K2-;3fMt8N04-QqjS?7AOLt*JG|lyjN~b zoole%{Uw@4`#nOO_KrmWVBZhQ^-? zDD@lrg`U;w^SE0T&+sfQ1pw48=ZU92?~!Yg?xn89jhD^D0Cb)}L*=oQ6&nv7vY*R7 z_+tI4sh?^Ap#4hGE{`?F+OIF5*==ukeO!G45Nu86WGQRsat$b_8n%o zXd?dxk~+pjJ|LMGO2rosu5s>|e58-f4&0-Cl*yB(DNIq}k^;<1JNZFaxF{bw| zWqer=ldgW{_zcIKiX}@PI=nZo1(1vzUyA26PjX0aqHlUYxddN%z3}UW@x?mq z|IxnaRnWu0v(7tpcWiIEB|y#`XA>hSqiB7>DD!zop4x6#%epk>_`58{K@{-x^SL8- zwv?6Lfy^aKuWXZP6xoq!nU9Usot9?lvnCyQ=28m~p{a%A*V${^C6E8EuRQYAXl$r@ z0irrLitgxM3rMC?>`T(Tq6@Ssawa;PNN395ys&Q)&q|$|L5h7>Y3@HpaTG;VPS)`< z*-cGY(ayi^gNhw8jiTqhZSv#uR=Ad|dz!So1?z1sP-LO<{KzBgPn4MLtt}Sc^ZZ($ zP*j&jQS2r!&*sxx(Tj4YIM5ypY$vBKGeL;$tmgK8VRUf8IP%t2S1(Vm+R{&P0JYFr zIia<7H`g80*XZ3uSGi#TBDS-#UbtbRz40sBTKk=|Z)UY_R|^282ae1rSG`8f+fub$ zd1i!DeF6|{XT`)06s;qhD6zQfxzQfJ_K}viJhpC*>LMqOOr_LWRkl0*#f6pRRQD*? z()K#F$To~upWG*L=q&q+ycya`uXs;ns%50?`~W>PL%RpnI! zuZ^=^3m)}3vSI4Q$BMI&b&~;_l);wNvJqqWF(cseeeN?| z=MLc&@8txNboRVi+fE6u_Qq1n%(QKp&s0__4y3b#CO@3FZGd(Bz{j)QKD=2h(=M8G z&vkWw>jal&jZ>cHoGHW`n<_#_-geYu%{*gWSKfcvc0fq4&;Je`i8$iF%tU2Rl3E=c z7H*w0{^OKy>YkV71dw$0{Qin>tKU7$a^7}c$2QcSjYn@3@bM4d8uy`HLX30r4!_S! zSm-dB0MdT?+C}&LD02Bh%WvMP=03GxqI)NTBNn>9buLbdNw9Bw5_c@?1ryb!DkD!Z z?ocs$A$>=h4K4rKu?}(qNIG22yxJvk|E{x6OV5W?EzaGI_nK1xK&bES^gz!~v?zn( z_UG2G+$$46u`~6Sr+-^%8>Obyl709fzQ>{n15KZ|Vn;;95ZlbkVWDdim-T93pqgbd zKFzHULzWL0+J#)Hf8OaGC={_#YMqj-3!Z^b*zlZ7`W^^B#;wo&qTT|mE4+ZwQ zTZe`1V>X>A6F{~J>omPuPou|IeJa`!8IGR{uMmJZZ=NhC^|Rl(XMd}gOJjKr0IC^) zc(!ZC&0a{dF8#jJC-z<6f${;!RJxCg)1tjcc?oPv!B;)!j6h$m;sBcFXqAy!}=CF^OMMpUSWQ14~Hq4se)mhe-w8n8|!nn#u6T9K3q9~xkZaXor z&*^UIw6pTkW(PejJh*rY=yP#RNq}~*G5SNVP|61<+*@%*om>k5t-3bBJ%aU+n!mWy zd1{#Zg!%*^Rp5;o8yeP?BeqZf-NuKmADqhED(^KKe_umR3>izsh2AX*z25O=vP+5W znHKBPRl~6-p#X+5f_BHM=W1HVuq&oi#1vX!Bt*>pXloa7&!yx%Im=!-_=>ffZY?mh zS#8x5d*uT*k)IB3bb7j$^zUG(p2UU1u9|C4yffb>r@*h*^Wx{vSVk*Vj7`v@ym{V!&P38?dPDG z`#qb@DXayGV!igX_D=A1PVIjE^2N(ecpcZ@<&6<535gP${3+-njdk6jtg1LR-!ci` zQj)tGYKdL50B4G}{pvCImUKxB{)j!Z-%?4~ouH>4DLMAsJ^7yPwsyUf#%_%~_{*8@ z0Jat%@a7L*iBY}wQvm;3ACgmEstzyVLeWcXAVrQ!felY7+#qi*38qoNqcK^8se-h~ z&sV?r?ogl=zkPS^d=)vT;;<*uoe^bN5Q@M%>V$?&McJ$Xz5u)c$6VE<%jF#}b&oH1 z)m)dUtZ3J(Do7;c&> zN`Pk!QP?PhN8+Pwa7q$92?7!Wal*IzQ&n6yPO{y&YW(w$%<}cv%4<5IBr(7Vu|p?N zQW%TRN8wa8WQY81q%qN@@0<(Vzmi`sJl9oDgTYLS9Zb8jntq<+MbB)~_Ua+$Yl|>B4u?srLOfWU_rFCj{0TUx#ligxAnB@E6pbXb?9PC4~x4(1O%3nJ`;=L>|pjdy#WY zeJ4Cwq7TJ-N`ff;Ry<`L%X62&h)NVY;xwLF4)**ODl{W3JA8t zLZkHszB$E?Wqq0rF|km`Be{yOgT*-{x$UXxv?xROqP>@Iw#LB!H`@+(2%31j>AUlO zA@}TyTNE2AC9_{E$_`3fyq_cMjmX(8PdA+yW{scVC|hRbJYm<6u;K$9%ceP1m{Q_e z#0RD@WAVVd?3vyGK@zhAQI)5)+LO0x(NNde5e7r!E@uW~mtIqOm1GC8Do2?jey|eS z4$#~e(@~(3z#=*Bl1to^jcHDw4&$8yYdWDML9_z{+oK{w1w|oGgbC>aObh!)W{ zyW5o?+wkq&ybt*pN9-YR1TA2QO4+kS=Zd06Z}zh$<4&a_9O1S@gJe(DrKRohJNS0@ zrm_Z(K;9B0uHwlm=l6@xx@^?DG5)-%VZ5RoF+bq5J~L*8Q^JXuHib4$t*~)qORk(8 zK_;wtZA$Otxg9?^W_~}>i-{Qh+E!5mKNWKX@j$$#mc{EePm$~kmL}!(M00ReR8x_a zR?_PmL{$%V56=02=r*D(u7MW94>ZGmOW%E50V~r7n>2CVZ zny$ajgR+A&$&APSzl%HzxXQ+FG1xPF~XZ)ssmn zR~WyXDTTlqn+S4S{OyM7j&`eD zkot0i{JC5|68MuF#AY!3bisc~0#tMz(9JO*QF$SOfST}2@rC2?gBb!A>djz-PlDhZ zB7+D15;KF~Pr=+ZG=H|z29~CKjiHs!80M9y;nqV=BD0jPaZ9S$R~WDFl;GNBp&;lp ze$=4?M3$e{-lDb5BD-R3gOrS*(dHPD5o_FZ_iq}YYL-Zi>bBc&fZ9ylY*&QHmgYTr z{JPV4^46&yDcv5m!8x&B5LsRK(6V>zcJ#pB^^^r+u?g>P7RlK~-^@^|xTIpkjOni^ zSDg!w@C4-!yIWvVr~ruezyG*>lffJ0**Z$H$$NF8qW3w*F&~S)_`;uCK$gVlkZ+*WI+c_8SH!3>u60gy#7i1(X z|K|cfj>X~E6&ul#LYaD74!F(_>eGC5ToyD#5f~Ul7FB%eW-`v% zwaAOBw)4W{b4csq3~vVx69qf(*gqBcBP0nJrDE@wf5P3=BhBA_-dWAL>21w>V~FSu zenJTW_GFOgqgUoS{5N%~5Dx+KxkB*sy7<8gygo**2K z%15%mups6D9417?2$@1~Qq%VxJ!ijg3^gJ_WphzRB-aN;1U zww#b4aKGW)!k_SwFfh9K(T9Q&#E>7Un|$J1X){XHY09wv?Thi2E4{&&Btg#C7Cn0D z!4c(&@DUMKg#!Y9_@LF@7(7N03OElRTp5l=1dqB0Iyr;|s{)lYJWxRhPl!jH#vy7&6Y+^-t72IK zvf!)ki3*$<-Y6U39M39(fklGkC<~VXB}M`<;1z(uG6MDNYU`zafoVohE<1NDZu@4O za(jU9%EBMMOyTg=&$|)$HvZ0UBpw(&!J?)jaTU%X!9j-!9Q0zE(z0HY=Gc|aY&lBVmi1SG;4SKlNL@Dz16n+T-C=nbL5oCA6AAl z0{lRNl!ZVfE}%=|>xuLGcehPB+ANj1*Wi?5d<5q~#RM#72KWI%6aXs`nK-h;`@9nY zBj_0vB%`NRJic)(=N*8g>&@kYtRjwha`+}0d$WO;P$5$h9tPAAJqW^VGU#qftKkc1 znaY>%AvuwFiJg4B1am%Z#E0DfR;vhFRt$V>$%~QTCl^9^JeRxoYu6|j>h`UcIm2`! z@E&Eqm7h9*RRL222s)x{gg{<~O9Pnuf7wfLB{e1}D5RL7BvRS+S$iw}llCT}7f_}t zLL$gWD~~QcA7tvgtjKQE<3;j)JPPyY$Ve;jJga2{CqN1La3jb^_6D7+{+$jv?ksd) zac0n?CzuBKt?~gkMaA+#;N=Dp`Qr>+`9;JG(Ibcm|9}@gduWmCsu@j_w%IAQSID!5 zxp^Xk92)E-t}s>rVllr}pOC;L1Y;L>px}Q+<}V^4I>i3L6C!dx?z?W}l6`61Xf2D@ z^tuoojGTppUN2-t33!G7Cub1(KRAOh=|%!eK%Wdm!U)1*=R1(w$UK$o`!RgO76y*qze>2#k16Con5riQn7RQeb zaBPgg;!|Om2$M$_wlLL^{Gz6>-eos(N623e(oOEo4Mxd6sn2g6urgfs_1$VNx@bS+5uL+$< zSZWX-hL5`1w1R|ACABgrH;QO}X_ZvbZ zGD9O4hz@}))Qqco(6aJecINp%^y^XS{HKuxv=<0ufm3;nnBvk%y|V?~$I;?XuIphr z_db5G)^GI!{|Hl7N+N3*!~GRgXu7=7M~C>5Gn;JO77{rzNikuSS{E*>|HKr}npvGh znsubj_F6K*H>}qo#U^iHirQ@MSR$STt-Iu{|Fv?D=Pv2pMi^)=EFY*4QwX;aF~SyG z^0l=nbfrn+M~gxnxs~vHClhS>UCcNqRq7&_Md$Zjp5}OQ7j}Wal`LR#oRm2z-~og1 z_Xkyf@N6XR$$#It7n)H2rX5dUdHIZWG4z13Ze)nK5X8#%(x9BDj_J-h-{x-0(#_8N zgT$(jv{*^$Uh#!V$P|YlQ#UVDpXUsiYrSo>!0;2_@ymZ(rbs`#Aq@icZ)G7!Sq?y; zjF2+~fhr$l+$DR_DC_O9mZr4zTNK;Ks2e?{CygHoPR2|l2@gg>sHzA;rDi>RqA5Cz zz986mpUgy9a-%X8gH4pW1sMuSscZm)ubs#;B+i;a!sIyF7!mO@cgo zTa$MGc+(Rlvo2jGDP;D-0Jl9WARhBnr5r8W_2-0&4nCe!R)MiA$D zZKs#Zj70tQnRiC!2!|jpT|;_( z@jRMFNuSC&Q{E%9heEy;(UcVXSFj|vS{-3EiE`*7_;XRAomiDg$irHK8ZruKd8B!h zESrK+^DdsS>5C^P{MJAx7c5AuN+g0`K#x?HJOCex;8Ka)D3MELCj1CbNLL<+UKzx#Pc8_#_p|-<1X~*(AUl08D(}(S)xf!&kO)S=$ZK^4Gsmf??@r0YZt| zVyPwp8emw!Y|s(~d4O99Dq@fC(WKT3k2|lv>YH-)&GRD)0ajM{tvQ%YgfUUr4OBKr zIw}y(LX5-KW8Sd$7D&haS+4+?!7I`gV!R4}Ea|vhBWR3H>rCk?CtREp^&flp-__+m zmyi9|(Ya)xJQX}|u^g`2??D;l?1Z>Wy9MEjW>{B+|Bn)L<-1Eh@(nRU)m zTVd77?*G>A_KzE3#z-fE;9k^L&*;0 zJ;%Gu^#EV4d0GhE&T?aeZnyqiHaIB*^n?ZHZiy8lAv+lheGskMU+Y9@^MZ#V2zM10 zst8Z@`l*P|%-Z|z(f-Zk&2tSB<}z>MWs?me{)dWq9qdLaBH}8>hDaNNWbEI)kzPeJ zc8vSj>)CLn68xY)`6L5Em(C?&5rp3@7*MBjxFV_G|5_}1++WjHYgA+F%|>(PQ3G@E z&Sni_(I6H8M54q+8JbVU*a%T4h{dcaV;zPwOdMlQ*k0&0@wuTwCL#<73eS3jiIKli zQ^0Y3;2CnlaV2yFgu1{}YG~1ZId>k`w(vi-a>a7_F{ciy;1l;1kX7g2OO4KZF z{f~MAdNTOF1TdbAjgcjU+Rv!2nVaq|nnK>$-*yV3AHty^uQGm!q*Zz z#e}eebisHwLFn_wzZu*=ZWlQvf4REHqY|5XD=^@yfkv&dxNrd4#1Uc+_^~+rwqB?I zpz*Xki6e%}5-NSe-W#^F|V{dQO!4D3Ua|QS_z^@p-1`R>~tJxsGlaOHeO#&$3m5Q+m zVo#9O6Dip^uhg)b&e52Ue2tF%*==ZR9=N^_V`(m@q zi09o{KeXAOCrUcfID+7Tjh^LD?wdC~(0HB1BhROg=RFxX2~Q6D&&ZMxZ8eb;T(Q*9 z7XFoT&oe&QkJW-nEzk|<_%Y`aUT!3(rjtXtr@PzlE$u$Rel~aBxbdW@Wr|r7wNdVm zylzr0zAdIE^fA2=ak;R&Vk^L(L4$G!l8c#+nENeDxtk$21m#Xco#vhQAh~W}T33c? zswMwIs+!UU(EmfD`w!WhH#dWBn}5e&P205ukLA>zMmGsQv2y*fLC&jJZuQ=} zuUt1 zTVMOW_GxqFq(Wo_O$SeqFG2FE>C0fl19ocYN5F@JTYAF$xcb~jU+$Q?1=5Nj4;u}xbb0nV$-eM{ zON(yN&s-If2N+WqAy!6yUTtIQ@E{y;j#-Fkf`3fQQ}U$=%7WjK=bv`(!b{ytuD6mQ z(%S!dq4<9!BuHDVmdF5t#o8|CiKjmAk!zCfrLM(|m(5g2C?M{u`yP|PSy}#Eri7;G z2R^Q@OA>Zf4rZhM`6wG4#RvMtlKS%S3Q?GJt}AZ>PxU|`+Y(MJp-IRD0wAYu@j2Od znBAg@{2NH>7`za;{u!^(bo22?eFEW`hc#6uDnQD_J5IzysWFm#I@Yy)U@WK zjd8PIP7{{6EIdvF-=*M-g?mq6|3_l8%ej2G#-5B4*UT2PR73X+!cY5BU}|u*x(}P> z69|zh+VO&$`X0cx5xw284J5NIv56tlhd>!VZ{qb^Ek8)vnba|+_bp|`68qYNTQ9UL zMbe8hvHd@WA0G}FeNb)@e;UHl|f;$We+|j=1RnWu0v(7tpcWiIECE!2T z*saEnZzFJHL|K+K)VFWJ55&9?3|@(Ms=03JI!8KOvM*xvx#Pdq`V6LBp;QUgegVVf(HXcGCme@^Rp3SGXq8H^(aiBdI z*bck!`X@mmwOvC^{5OY#8i6|{wnD-Hro<*eSB<`#&WGkXEH7cSG~9odjiH4EfloMY zUR1v(ao94V>L=I1%@y^g>I}+T%a*RJXR%gN-vv< zA>-|n6SUjiY+hwmtC>0MiF9XdW}#9P&WwVp7@(tI-rg^gtxZf2Wr76V`P69r`%Yab zYdh>JsmScQL?P;c!LY&na6Yh~t%Ro0PzlWpKdkopMF&|E>dk-63Q%>3ek4HxLkau2 z+gZiEFPD6FTCNlD?(=Q+#tkG80#NYhlED8X`~{76Pa#0TA1WrMNLPXsRBpdJ`<3Hz z+lALd_)($ON(xBBh(`f@={9 zMi9Fe>BnY08=Sb1n&y*#&Pvybis3-c04HHpxbq9&#FF%Z>0*rVh!d}T_C!hh19_VY zZ9?q&7Yc5RKr5SrhKlk!M0+CeExPb6U@sw&gh{V#Ih?7RRp_!k`LUW()WJ)NT`jCF z_7NLFpx&oC)(1b5u#aFV&>yCw{~yH!vO=xq$VP$$$E#27lQ?vieMR03ZKYQ{Jf_$K z-cT7nuIx~&uy_`KG7_%b?_i`Z@Tp5PlI-(0&Jx@_!BJ~ntLQ5Za~{4tV9}`g@OrDQ z>s7Q=vUyk>c=Te*RAvV0gvOe~OL1QWu#$pB5tU`uM*h%x+_k@FW|_d!01g>fJcl)>x|>n2Hj;U14)HY&0@9g*^fq5{*-cwDy7<{)N)*uTm#(E2)$o_6u7xykg+y|L#d zr?Dfx8MvhbyFvcKh&Vu|gCA zmA)&7gB&pTGVd2&} z<3CRMrtW#U-irUvHPwIWkb?hLc*;hYB?xe(VrqyqB507qx5j;Fmk{Heyu=`zF^O=Er=5*0AYS04>;aFMWSPA$WOTmA-TT|mE4+ZwQTZe`1V>X>w8~B4JU!k?P zgGBImhGYE${CT!(#?4+xvM&9;(kJ#^-+>MAZ-D&NWyDFl%3FUp%W*%q1c=B|Cl47peO%->Vp0U_$#JJ06|c1J29`%>2B$? zv+~kr2R$vt5;o!99u@WGhJYjWfSdwp4F$&+iKBi$v)6`$-wg*bKBn|BVVwqt6a->}EItZ1arnOo1;UWO1p4tc!_#ktOP1JX%~Avg#|DA(cmu8ipX!~axp;Qz5N2BVeu zQOYnnV1{fUNLxnG?pXC)P3stT#gvMeLJNh|A`EER0JaAa@W~-8ELsYVZ|3sCk*@GF zA0L#DCw*C25njp@ID-lVY84NB8VTtjZit0lHP@baXTD8NfnTrZ#m}GDTj}^qHpH5L z>#;iY+$Y+S#M3SMQ;V8l&$GU7h?x$Qsw>nlwR~`_^=jK~3*PI6PMwS&DcA!DhAc}A zCrhD8Rh>Zqb0dY~%4T?@l3KB|3|WO@E&QHTh?@kyJAw~%9jFHag+M+$7B~-!us!w* ztq0@jP>_GfUN$F?(;Y8$k1u!CT$ib=XxFPMuNKzrAFksXf__qF{m+7a-vMyMUJ5bK z=<|;ApT0HfWgDw^V19A`BzKG>AW&t=M$JnYAX+K-rmt|%kGR{&IiNgqXQerP2QMo! zz4gI)wVGJ6f&mJu6B;rVWwQd{Ui~kM7fj6&C&Jcw`SdB2 z{;sf7JXY}pI}wP=03~c`c~}Fwj5uouTg3}&2Sue#fJ=ap4gwp$AP%@&FZ`XTeh{+Q z4;(^lXpp~+G$y+AopXWvSMuwH=epKgOQ3;6YRDlP;7*A-gjkI9Iq3Yd;abaF7i+wG zX4xhxqgJ9USq24@P^2VD$Rxz+8B;G_v??D#E!xtunV*yAfLcv2$t2=hC>9FRR``6B z0~Yl2gC|TakT3$B9BgE`_;8<0m!u2dNvGQP$K6f&3=dcZ;(-QnLs5~W*N#g(z-Ty^ z@I<4sK-owrix~pSMx;1}6y}d|NFjU{#}6}Sz-~p zs7u^#G^)PSlGVwA1H2mz6_}9R|LWo^BJ~iPxJ<|>NDtq0!n%U?-eA(F`M9x50w}MY z`2xLWNvRX^4)O4UJp;!c%5iJ#RK7PiMcE?i_tjvw0dtRHFhC9!31m=*u>xQ+)jv>= zCBh|8PrITE&h)NVY;xwLF4)**ODl{N<)a>0X(=j0#mx)}3#LE#kPwuRicx^1L53iN z54tw-`Jm2~M2uNjfnU3Z2;g1-I)wp_twXIyJ&AK!k!(V_J`5(eAIT;de4!tS%;13k z8T5p)-|7r@W!ztbad8;JWEdHR<0FaArI3ht&F{2WA%8V{J)5)iFd_Ru8U4AnV`hlVBv8(VH`Y(j ztai66Kepl9xp^P*6`~v{z}V?}ui`G4Ttbe#9_NLcC;$J#kIl6(WV7k-6$A^F4**3#N_Q35c*<3G#VHAfK(Yfu-qQV`!x_hI!>_xbq!C~q&$Pcfz7}R;8lN>FKks~ASA5&g!M;x4E~Ic$gqjDYC9uPOA|ja zfdsx(J8Nkw7{MO(=7q2V!5$7Nm=(Yl1fYBY7Zrd25veaX$e+vg1Iex=ZV;Qn@Y4nV z1*hnWt_nJG1|%vkBoHtheqp|F9DXq9$&Pw6*x-{O_=d;^gTEAAr0}O;?q67B#z<>| z#OJ5Aw`gs%$gWu1ASEMcw7J53=**ZJPGWNzOh8Q%dt`Ab;H)NlkU z9`q8y=VzN+lADw=$}$lZGZUm4!B5%${^Ryd2Dhx|wMfyJ{bmh*GH4HgLs`s#hZl(3 z!O%*;5K9t(47)m!3XwzzCzgBmI~rwce}6hgzurm(Ov>R0vp5`B zLr}xCCYbLe-nAg^d^RpG{~W@mx-Ne|`F7m8=HIa!Cuh+iVO4nDA$-#lTPpP9iPes7 zdV`fT)1H$TW%+M@Ykv{X%a(IuSX03d1nLj87lq&xWsAahJ@I!NS{%siJ8fo)PzZ$3 zE3;dXW1mdxIeji|wJm9@r;wV2yS~*i9MO@pd@fHwRG7lNu4;w(W5;@;-h_yN_0yRC z$2(brvrR(SOyDh%-~=f17Y+i9P~g87HKWFsBta(w33S5s={JXpcC?T5RY`emd3sO1 zr4y)RIb04P?izB*XYhlcamo0!loqt`*A5HTevEQ1vB!^+kyE50ZTMh6R`@zV4fhk8h4rjKswE0-p)aT5Ya16iv%2nl>{-T7erUeinE9 zc3m&gT+dP@m?bD~IAoGSt7KQK&0Hrn!K@;(#De4Ou_~RFa5UAOZ{_2EYeS z?sIg zvbfbTRH0^J@q^h6(4I^58St>GKZaY*!jdKuFm1t+Rj^5fXGn0c(9&^ZGXyZifB?cm zMxow_vZ%504_zd%_Z^r>U+_)Pd&U3^#biw}2xBq*P=P@h>TMwGNCO(u7znczg$LS* zMx!%=P=uJisE&PtqD;PsD4;CDPR$7RksCY2kHryvO;lw8boE7$XfCFQxvBxCM-Nmw z6wU0J@%SklH?5%IXa_EeukFkT=Y|OEc`PP{%MJwpg!sg|kM*mq%iKK!RDx}AJv5%`LjbZ3EA;yW=pe#7WfQ&!W`Rt9`M z@~prCV?6O)^#D;Tt|;@-p2rOd{>5EI+D?2s#WsjuR63J7dt@(PY^*xJtLiW>s=7V{ zEKmTdqCmVf)75$mT}y(Uj+e~PxCWs@?stvPsalTP4vQMo}tJGg)@N^HJ1VF=~w zR|ri07u{AW$o?{b{|6ld1NeV{QbEE7q9H;!oEy;qILDg`OEi20!5HY-fbU9tF76y$ z{jqX&7fM(=X2T9+g!2&)Cz)#?~W?jF#c#vhWI`#;l zBO?Mfh0Ow>ss6Q!9q3W+%>ail(ZE;4tI#zl!yahjj$=@HIdJ?@9!r3zdjOS!@@QNhYbrF% z*ocybrwR&fz!Ur9+vr1k^PBX=^LXWxofzP@2y zAU1Lhq(ivof0BCfJ(0ok>TnkaK!uD7!obZEsXCx*ex(@@VBjTrD@oj&#+s|WA6q8T zqHaw*G033LQ0xj|vaGZ+1qZSHg7e2t*tSsnb)aj8s^CS}wwL{}f$E&|Rq+dVVJJx` zx1r#b7y-A(%xgLD!b^vR)34v`&6>CD2L#ArGH9qrv@Ynvc8zwjTy2;<7thkJ^9%h~ zOa^Ghz<<>y!`q3HclADaCBCceO%}{jX%b|c5w^Nj3hM)IJi$x^;s$`^t6xB9=GzmA zA;>h!JZhg6TIbjNYi5I_7}k+;MhVK|l4}+uJ%Gs-Q#TR!i zy7j!UxjGtSik@KO)PR2eSvePirzn2ZlNb{|^eeG;u9%x>b*If?yeFvanc)6_SULL< z2HL`5cDkRq%0BXuzo%-v^Db=3iYRBOhbh4F5vG)YzcKX;tzI8*@BvVq-T~kQQzRl< z@=`i!s70Q(g+5V+_=JS0SGLZKo+InPt`Hy(_+6|>9EN?Ct4J0 zM$QqCG`Q+!tHhKX$5f@)7gEREIe|?F%~)B}VQIWF^?cc=8###|4v@Ed1&(=-uEXP1 z@>voZ)fO@|do^HxHId?$w1$7suF6o=h&&?=2M{nplpTUVsx#&{xv+eATwlbBNP}6AnzZ6_68VN=xJgNW})#{?J-GP7aGt|thQ4%@M=A1 zpos?j@o``)6Ar5O|Hu{(Nyj_;x8Bp;MakWvDa4tG~-ar=S}b?b_^lXeH2&sCg}2K2eQQln*@ zUFph7uU3{9+F(#3BG+=|qoE!l)~@Amm9i@*^~G}s6@gO1^VjP_hiKX?{X~1m)W6*V zTe*BtA_f7bfhQ=IGSbO}x0UCtY~x&Z?9u6P0zZGJ#z6omjoW0^bvE5{+q($oIIXL;^INU_fIW0Y@N?1XlhU=h z%8pS@*y9_GYx1B0KS+(Nu&5$W|K6cboR%}k&wRJxl!<)!8Hfxc@Q*zWH}ackK`=xf9^AepbG>9t>2co z%*-{JmbSYpH=T6>-x^bdfx<3dTwij@gF0Vpq`$lWjHC65frK4^@Vz0hFDgua|J_!+ zlBVOfdv~p@*R-@W=oz-6LOvi_NCBzp{+y!J#`~#j2TeN~Jz-(6;y~KV&e0_o$)=)udzp0k^uaUlO_R?_HNP|>y?<@@PlkJ6WnLt70Qoc*N%NODFN z=&SFgKV0EXE_pD@Wke-aPd*@7O4&qA`*!O}n_bn~hwrdX*~H(7UGR5A5ArYLoG7PNN{-dmC%PK!ukzEH_#QyR0@@)7FL2 zWJ&`A)yykf?-lq?XYNSXdF}*T+! zX9Iw02B041-_?ieR@vlC>bcZ>Fxgg40GUVu=>CCaM>D5~*jDI;FD_@T3&0+O0&$^P zQ6D}ej-lI?kIHc$Jm@e>CV=?IGj=84>_A<E)VQRky9uR-Ifg< zo6-QFngJ+wpw*!eYPMb4v~dTTZZ91!CxD~_(~q?(rft0a&N~09>!c3b1o4Ukh(#*< zphCVwU%dFW+ttEQR3?D-rx^9%_70-QWS=BmH64IQlNGUn+}@7g_|iR@y7a)z7gGo8aH;^cHg5m%gK7P)k zci+F+Z%tOS4?P-9lL;WdzQ=v9nw_9+>R8@$Z`V)Z*mQ~j=-9HHcQ-psr=~_T<{xR( z{cHn(Y6hT}nJ@co>Dtpe%KYr3n4RoMIRP|KN`*bni@4p$@ts5Nd-g*57gfBotO6=* z` z#of=>6ZAh)8UR!?0Ihy-mG7gJO3pL*+IQW~klk_u$U+K0i7T6y^+>!+&2o6~{o`RL z{FDm?0Cea|Y2?PUJ?Z5`OmANQ+K(XJ&59va z+b)}DU6xYm(RuHi^om}+Os4E~O=d*-cd)TrGoq)N+MdDvY9TxAdwlr%Ha*IvINwUw zPu<1@8|v>0!v9KkqK*t`x@z4}m(;4V;qMM9k5^Q7DqE}{*JSfjhvG+?{cWB*;n_$v zK=eNs2M}fF+&E53zscd0@*|gug0Jjdg{`;-Gu2FXo~JZFw~#W|y72UI@5y>E66BN} zBgBTF2qF&p>FA{;Qlj&gJdHYO_y}9B0)~r{M~j#MWw!P5xLIjQ&2H*qvU8e{lVSVG zf^UDx#V+&Etn8Fohij9fe`odSwvO%D4lymh+@uCC(XUUk1N98(6$<*u)J;0Z3})Y+ zJxyu$OS^`2IrL#HUrrDiOQnW+7CsrB)asIJp6>)h>;1WSwWL%IT&I(E*8#5chwk_9&}SvS>8gnPwDH{cva)geoKvm8MO*ssdS9PF z1nYr0+`58L;nu0K%kS@XSTVLq4DD;qWH})uy$jK1x9*5;M<*))=FxB6VJ$p*bMld$O&fe>TH;ECxyvz_Md zr<~idq^e#)s4g=xqBZZ|={9^2wS4XszvQVG6XgVusT2oAdVM&(rcGOV;jzSu-8_xn ziUVjDzh$2O9Sxpz^&ZYAsO z6o=6CHuu6yy|k>i4Bz_XmPL%dOb%LbW}gntbC-3Y^Q3vl@|jMx;Go?JZatnI+dx~q z=H~3yZz*lCq5dvELV-F(Mm#e~`3%Ws(`A(sYWDJ3aso&?MV^vd;G=GJ(IJwjTsWY~ zluU@Yg0IFLKy4`fO$~}`ww9S`ZRTVZ4*(@i7%n{;Y;`iTnf41(aD|zAe zx%q>`JKj|sLi?NFE?Kh0m|i?LK`^0*(s&F)X9)gS|Fa9IPm@kMB%V5Mc>4GlW-TBz zVNDxW!k50*>v|cqi`1~gYaQzagkTxHFN4jmGly(bhXLhHJ~pvmHg0UGfnkpoa-v9j zJL37a-EYF?_qJX#bB5hHpU00CN6{>u{Gvi-Q-@WZxK=6QA#G)9vZ?2~eTr-!VHbD) z?qs#j?AjPZjThM!kg3Mj74{=PtSKi~VJoi}D5^_q`u?@{x4%xkN?SlFj2OFZT9}*w zvP5hNVWG3n6KEf&y>U$F{fKia<|!`B3V8H`kA=Pq)SBQJvG;mro4NK)F#w$>(9q@{ z-%`3JaLAdZb2PP&m0hR>4Rz%wSd?+I>D!tmj~zShBc2agF8~CaeE9gIK7qotM5Rr`GVdS#L<)V5T?|nZ;)p&13l4 zMbpQ4n~u;Ph5?BfUtIJ4veBmRh}|01nb(=zE2*^rQpm2QFF&f;J8t}b%5!I{$Ajw= z6A9ysu+wB6#TPrdO?+*zYbt%t%e(QHjvjHA6GTQ*Mv?EidCyPIo#Bv?9LwD2GVq(? zAj+CimeyV0%Vyz_8PU^t(T!yqMa7$wXObFkrNyth(*K5fPHl3Wt%iN}rFSIR6y9{n zxDz<5Ue$ZmxlwfG(BST;8^u~jsTsR=OmnUHSW+#hNOPB9D{uWshplbM zx(6*jcB@ZRRF_84+}k^@_&ly?#c-u6NK2#%I0)*^9kK5=@Iy~$wCI%p4JF72FNdA*9?HmhwR`lsznHg3K0L7}dO?r;r zpstS@aOA|U=+^ZKK(L(^6ZK_)WbsYy>gz`sG>nOS)V_5RzLKnr%ZMBL~mruUX_jHe$=BZ{##HA{=f<4Ke+Neril(l6qtzuFQ4$|5U`8Let1vR`@!hhWuAC?` zlXB4<{JiEJrnaOnOH_IK^=6Eo;wZY`?Lq3-rsd8{)aX{95)SXgP(*am7HX1rDSh8c zUtYE7(jDD6yjDVy4Ueeak6Y~v&7!27THLwko?(st9TbTkZCwKhx@g{9aNIEuW!4oP ztq%`~zvMKVlE|_C*7*DL<#GZ^I(vTI)I;f1?g;0V?|Z3M4sC@f4x~$!!8_B}CX!1x z4opD~j$9?vE~;Ae+1rBc?=VO6g2lFxEZjj?1W0)wV)Oi+;_PEAXSE$&6uPTE0jVyT z$UAjyd{wEDL+TwL%C??s7Rw1B>FoI?VSJ0JH@mv*^d;wPF7C8baR5E-KD^1=H^b?x zKNa;_W_&YJCV>3a29CR6($hM!-^?Jin`&*`voHFyS~Z@r%ptLP#Qk-j7jwap^bPE+Thugmw1CkMxKoGg*o=km~uh8f$}2(9)*G zgpXf-$y_D_bq@%5+qa*oLoEOM=#Z)WF-c}sxK*hy+{Pbv-|-_}jO zS}A>@=Gp|R+Fex5zyNd#+zfF|$>3RhwdNkSv;~iJY_bvG_O$>|E4^l(TI23GrILg1 zk7>K;I5t$h01!OV%h=Gct{kzo=^a= z=tIRct%HlMDvqJYw{MJRzv*nZvvZKnIUCcf7>0*9liHAw zDq~EhPn#DmYwzkETDl;<}~hX$}T(GX$*O6xv^4l6x|yq_*C%0*=F{F?3IY>$hR1Z(g=l%g*%o{?L7aP-P+2} zJu_$MOv0v9#1`s*`{d3G<5)IHtq#YQM8DYn@1W@4i3`Ac`Ae~JYEYx}&(%=f33@8;Mqzi?m%GSW zrwyH=uCV=nIny1$*5ad5{J|?Rs!y%icf4uuaW+L7&r3G!cMQY^Qsk%<;wg;qxCs_v zssg=>3)2>ZFxPZ~~1$IRW_}A3OIxCMgZEKs{ zZ_nYp2o!H`kV~M1t=E)Bv!|s|x6V8sW|IE`PaaZ)5*9lc^gSOM?Go?m_I>!Z>^a!V z>xFTmASGNQ2-p_AwG};1H+78G+1zvQjBMP0l$#P}1lm2*dvuvrOdZ(R>vAu=9prDJ z1Un(Nj^J9SmkK zY!qD4+d6Ur9bL&o4`2oZksTV{demz3jD5~oq~UY-bF9hObc(RUz8Pmyb5eUdFFEr_ z?PIb{88%b{J2+59$7X%vO?<4@b~Ab7sMRr(yMOD4-5|Ny;o6%iHY*~Y+AceCxX-}z zx9~J3*)mIL2=LDa1Cbq!8{G}iTN~k+e}ClK{z~d}Y{jx?BC@X@W}^5p0JC zAIy!7J_COS{9e7J7hQHjZ<&x#yKB(`&IZTWl3JA7C{s7%O1=bqW z{F4qFO&9F8z@}4#9mZ1jgfu^U&1Q2+$y{2yPJd^MY@$1HhoFgHwWAikanPq^XDp}d zbt%FRI+L3n%tCkRFL>%q+eEu(mHVv_xA$brteos%NLX=kTD#jD(`VbQp2jiAA}9C# zB|E$Ug7h=nAy234@!gF)sH;^LBJCqh@z_UAj9N~%C_+nL#GDZAg1tFd% zp}S3(HAxX*>l zPiOG)Hu`%A9I-)X?aeM@KD%VyT7%|FnL@8~Z{J#}|S|ZSmeSH5FM&j)2;d z9unk@@av$B%Qx=*Pm!v%p>fEeHprg)6TEb zHW^_%C+*I~!7Ddw#DBQ^X>+4_5b=2LZ?@jt2=Bm9{YTF zV;dYDvTc|Y0&8p{$Zgoei<|nKKSo<}Z_$I-_jKRMDYufW;SL5K!AD6U!6XKUNn&!t zI3xy-#|qLRo&`)Mo>d8xQ64Nw(lrUqCTDl4mf(2PKg~Km-4($X+lI znkJVBE4CG!@YdG7PR?Jt?5d{0So{bIMVMwP7}y^5=7q2VNx&`%W(BYX0VrRNZ?Oy5Szj9(*^$}2~g2>KsU#LMCFA90&2o9#TSml4+clfqTUQP_#_Cv zAu@R2FEKL+{uInzL-S`SGf!v5-tN}Ry0px(OgJEC*}ti!RE^u!8Rmwa(@=7`Q*$j> z&6#*yNC6`2TSQtHG2@y`a?G%Pr`o8gU_?f&aZ6BT3~+rLNr~*Sd;D0NIfk_$vJtzU zbTvG%kdj+*Ik@Z59TnJ6^}_tA>mFLCb1y_iJU>Q>Zt;Ypxy?$>{xxQXQpF|y?yWrr z^|G~HOEx&Q{^sXi*rQMYL?s2gP071fxD>A6k{IWagEv4T7MDzOJvQHHle0@&Q@aeq zM5H!3aAR{jd|XT$Z@so4>WkjGf)4cwM6kGoAI#!#P+nan5%i2ay|nicK0W4{v32>7 z{8jSBYs{n@`sEiDUx{0wY8!ti?xCZh*G_`6 z_@v`?mmPCgdpUQ}U5!nrh*f1Yg_Ae+yskqDX{Ddbc&#z@2}h8OI9yJh^^fRlHRGVo z*iieD=g+H}Pp_iL2_j>u+LE&xDe+gFyV=dBuctQN?)z175VdM~rFp5Hs!NR3i@Ed1 zy~Uep5sj~l@5?SCkJ?+uC4TStdeWqXT7c;D1y15Eqc%<(_oxE4BRCisr95;%7>nr# zY|{bYO>Zvjs-WWP9f0}>ghPG3Ah{&zEBWb?MhVB17)RBO#|=h#f^ax0AISp4f|vtv zm=F~sWD3DaU6g)5RmYT1i~Vw?!zTBfXl#-mKU}wH63KxPWeP(WSU`kl0CPilK7ej0 zz&r5c^8Ux(b$~UoY~cu~2=?9$iedu+DTBQwvB36$?fUa?W#DtL<~;`VHVM2zWsv*l zT^Q8eV0`c}k#~95On|O|9gs#|8wK8s-q=Cp3|&23!1Lzc6}U|f!3&HoSb9$|f&lX0 zw)Ahq8n?nIGI4RxsoC1+kq0*zd`TGO9A*B}*BzW7GY>8i=BiLYz&FXrrNYoOls&=3 z3pVM>#(6602e*27u=-v8EPN9~Yr!50^NkV6a@4|=7dzT|lARc?j!f)A%Ud$s87@qq^U%R%;AmLz$XhWN zd9WZWu!VvZlk4Hm!y~H3A!_*(aj;{{AyoqP!B^gz$)z!Dna%*`XxnudSj0$<4DT|a z#0VhYwUoej>%$*{J@pALe{$`EKcf{ciICfr6;6m>=WN+bWOi$&@$641oCn0n}^D?>E`{6I)4^MHuGfS@h|J31*bsHy!DV$OAN zMmwnExB#X=0Sh$4Poe;{5>^v;cQ|i+blO1rR(ig5nAMItq2xEesv2{IZ4sF&fT0nGis z{3UoLA}c5;q==)$H`&r`y<7ardSlTGRHhbzh>?+?;xp&{PQNf%)A|{^RnPXC2%!ER z8R-PpvsOk>1t=sRmKgcyePn;<^OJ8-vh7F6EIYeer7`3KCPfAEfziv&BJ$TcxZ;b5 zHeonMM1u3fx6D|wz&L|7yXaEnu3NZ71lH#99dhWf6WP320f@yks68QqNifbXx`BfK z<-5NGA<@D14-Uw+b{g#Y)NG^uoaG;Oo<*ChbrlrvAEONFeo0K3Bf(`JzHf7lGd zq_z;2fIZP6cwvO)^pLNXUsPvPv%EYltqn#f;Sv^@MXcSu61gzQ*RX;z=vRV52< zJThF}*o+BAwX{$)EvkB;r@y`9Shay(v1rMG^cg6))U__J$QvJdAdJYy2P6kzJ&hnT zlU1`s-lEMTYVa$cspg*Z4H0aJ85pT^T_^_X>@h%ia2aOuqeEuZ=y!W+UeNteoj z^vP)Yp@4hfAA60;13BXRGBfFVdY`_|r?V#cn%=Jz_2;8?9}VhOz@nx)?jYA4ID`!!RQ+jZBlJv~zH`r0jQ^z{ zkJ*HY=d25$2b^^cb%HrYtWNJ)`)0tzbaOweSHpMO>#HKF?r#vQA$7&7j_noPn2=1l zVq|Le0=oKAMUq9{fxV~QwGGkU0!>t=h`)Lu%>wmbRUy>z9DqP+5YA%+s{izt9|E3k zFx#q_)N%I1nbv=iKn<^pA0eHLxJE)d7$Kp0i4m&wSqnd?1W&UFoxDqns4@#}6xX0a zh0%8nobPKkP5cm=P(6>VP(9B|fD*xu{hQJozgykaNFnmkH%dx#D-byUT*k<+=@J@8 z2B3@O=nB&eQ`ksRT74UX+Il8_oe#h4iSLvkXZtjEY0*zxcUcWh!YPbYcZ-hUMz&aE zw08F%H!m73=r59L7~=cg7PWqneufcgCEXhNiNju!(&i6buRGoVjmtC{ktY7?8T_M` z@z?S^Cn>Tr*mQ&b8r|wiPjW|~$D~TTJcF`Lj6AOh`1C1i2Hj|%P1@w~ zVE~<9Nh{b(Vv3ZlVTCr*aYd2{HR|~CCac%&-GCA2Fde;P9+Xt0_@%Rtv@I^2f@rG- z6=xE-`FgjKAhQ6s*;G(h>$v z5+TRf6C-x?RNsOj;F2rodhXSbnCeoYEvIllI$=wz%vopKB)Dqm=2Kq5BW-(1b(+Q0~c-*U<&{ycJJTZYH~Kbzj!Q zG(g^Z&ee8=FUV67PjDfvf-mMoUi%496EAS^{vg3ThvSzb3++u^k>$_CYaRh660$dw zFrwRwK5Rk7@YY6or(5=IrT;*BtGf9v+dmUd;N7lh!Gb^bpny&|KhMnpe*xD0V2p4$ zetDfRqHnHA@R%VCS_N$cF5#%ZMDY(&(G^M*zpfFrY)+up=C5rVjBo!WC`e(Xkcdz) zB62A-j(+yq{N@Mn|lIs-RF zd>0q|A*(T#&>bW3cNT_v92^^Fy7?HZ=k-};`M4w=rn4-aLAP5cwlg>>1N4Li=WYoM zBBnYS34Mqg@&Jp$^|s&p)O%O6(jUH1xvyilVxgvG{17d_mngs+!5c&%fj7-( zX~Q>WfHz?C$Q76gRczK>C6+xXn_DS}W6 zWnb_O$LJ+jqL77WkIe6Zjv1spbu^n>m0*_yqHyqjgXiA<36xXG*nZI zuo`3E%Qzh~Ml4!uyp5`q{w&>^{P&5HN?ja5@W4jTVi}4i-S;seao@m*> zsmT%#ZK6mDYFI?{g@0$IC;KEk*mY0OVx^4TVeOJ3sPm`-XAjm8}{*-(>gIH!pKqd+cs%GW7qj=$WGvHV3rK zvDou{PSlK&QnVkqmACEjrhmPikqPYK!_Tx-OwD#-bl?e{avad`)^@a3puGQVaBiWAT&`oX8r~ zOAsB{Y{1-t`sY^DhJkVIxw8! z0Xrh@BjDnoo*u70PMZ7Zi?rt!j;W6!bi&BP3YE;<92qU@mfmc=7;lem2#~~+2WXu6 zh^?nSPtuq=JO~GzW9Gr1;E!c_4{!Fk_kBsF$x3pL@64j5XgsdTgsMa~#{4ffd7=1! zWM1oftYZnIFdpmpQ=T6dcAabLTYf9COR#ZUTtWeHU)%SX2+qoKV%rN@ijm;sT3!;b ztFoIjQUHYW^M zT;5GBTWT!{blvQnn05={nTMhp6Imc-f{YXP5V@6Kb}S#Gm|&7QZAnO%&Xvl@lf&Ur z3N8zc)4+=*qZbQvPayvzl=;yv*ush%GLi24nd`sk@)}$GQ-h<`?VMS53n4Q3884XB zw*tNm|Lx{9P`#0&(dvXD7?q*DHZ?bt;b;^{pJA&tRe2IFmC*w{dY)g&mtLkllK*4y z5|YT_a*e1sAoT#98YUz;)?9B;Fe0Qo)G@lFx8=OIYGq64L9ZXIy?XKlO=@*VOYmU$ zRhA;!+xOrH0=?k|UI}HYA3x9Oa6sR5bu49x(apVk@CmQrl2E~g@9?V9puT|h=7K4U zk9g|YoNhyj%JE9m*>|o0-;~f72g*}8Jr2uVdFL_0`I^0Lxc8`&FdnTzn2iydWS_n9 z14hguMNIGsT~BBpe081DhTqpBLdKnV#eFP z{gRgk=dU9=sG1kD#uG4#CHP*+4Tn#64AaI0A1b?4{Xl9Zi1+A3_2B>Ia8OI|qy%1w z7r>OjC3rlTYPGfV5R38KkXMC76d1y^=51qn;sTu!?6E3A=O(?D_u&}j-48xF{hH!j1gH3Bc6FXd zry(=*j3RGlCSb(?8wKn3kZf;#9E8!M2{IT7D(Z1XcTQw)^Nlf+9_W4liqDCM!Lach zZw~OE^?0t)L?O!zKdjyL^AEBXqZtV_9sC~&DS?TYeD2a^rsZ|1qEI_B-ng>wuhwNxALO+ZY7~FEyRJEp>Dkn8xC; zY{A*`TyJ4fAcAkyiUJ7h+OuHXi{VW4to^z;K`*Fw1QQASnOFh2cp&vwQo9|7ft}n9 zdW@<;4|Qse52KdiFWbibKjOo61Vo$A6(b;N6w*CfMJg@r+^qR?=IFM>B_OcLAu1q- z0Q-!eB?QwNSm-{KN3-GhgW=F2L|}Ga z*L`w_9sA&IkfCyE&|TY?sA?5&=LI9*e5_-rY7HR^Fq3G<^KFHNNywEd!H9YJvDe4# zGZc-BZ06=ZP*F^lT8V%=YI}a=J3-WK)e6kk!V`=j*jl8n2<{%&vy(yO0#cO$rF947 z!HJm|!CV!(`Gs#HMf$*X(ImKICXT9pc+&ICH)>kIzC805cX8JEKrh>s>B+C_;O9i( zTXf!Az+WQxV19|`$KkP7sd z+35cVnV`Nc9Y;$3`n8Yzv3CP;8EPJR7F`*ktz1KBq`q*~>uRL> z&)>L!+2)a>9+Ltzx1w@wXS93 zH}i_N7oY7+llQ1sC!~WHA-`nn^t!qWs z`x1G)6qm%pIFJ>SVXq2#lSB?Lhbbu06HRV4z!)YV3(j?7f|@25ThRTFy_o350*McX zn;W3K6IrfA_u5HZKqTxpnGmSL;g>DI1^tv$9gopj>D~+0UN!S0N4e_%XkGJSBk}~K zPqGCGOc8UcEif(zHk$eR;HLd=t0G7tj5Ed+L%L5#o|>3O82X;JY1lhk<%JFklI1Wx8?^{%^CMX_VJ}zR=_1~%J)+J4u(M5Q(;|BHIrs?YuGQ@Dz7}mGX{cT6#faj4ieE4` zgZTx;K@s4UARLu4aF^X}x#7lHb4KOGzuHxW%rXdksXiByzY5bB?ku#yAb;l!<(+?P zMBcp-WXzb}yiFYcfg*460#dx3EC0Mi0znQGjIzC$_VANB>XG*eo$YGLbmxE$S#UyN zPeJVfEcTHTYHjrMZ~vMjpx{m(@NyW?6$ZWxm1D`^IuQVRVdE`%9vR4)<;o-w6ogL8 zkZF*f$bZ3pMT@WiBd89Y+kDq+@r|;Bv{26Iid+INL4~<0T2OP9l?>ckf-5FbOEtJ7KdpEQU#pf zgaTp6UkLr^HN(?yd6z7dj>I0emb9(cmXGts>2Iky#PJ)IGXcNk!_)~P`G2FNfq*bU zQym-x!;@=obbpFa#f8f2d5!yO)dNtI&3Q2<=G-qB9ndE1#7Ntdd$;E}zw2XE+Q&uZ zB1sGFDA~N_#>~OQ#O6 zuxd8<%dSr}lHbbI%>=n=?{OJNSR2U`S7(MTQ`jo@sYh0!So6MDC&Wzz-<`?)Y|Re zM?Go)a0I&)Y@N}p#p8q2=3g{QiNA8LB4u+lf))tW`gSRzQy3sx$!OA-m-EAB8_PLw z=h^LiVX=47K=qqjj-tJW@l7nuV1R;Z#`IXibY?Apx%%Ib7qoNT_oe20eKp|gR9IY`342WtCUaNQ>caTqQ0=fh^=^(K2 z8^r;$^}OHl`GZi4{iH*%4GsF8jZ3ZCaFtp**`deama;dRb;!RSI#K{CMxaBmWTa*9 zmhCBQGlW(gYSE!>5}OZD=-?WOWgURvH)$wlV$G#Xd`uW3en4n=}PqAuv{GxcLqEL zt`pG(^mk?n`mFpx_3)?RZ8SwtJ>y(%YnJO&QB!m0*exoah&EGd&RL@3_m`EhG=4A) zt9r0aTzc4MKA1%5PFcNb{GvTw&m5IV_JtXkP`-twj;D99hZp$0nQJvS($6U8VAdYX zU9ZqeX(ITg_-apB?{onp*f1ENhKdL(sJ&PVU@_GnRL@uf8>4#M*Uj^OUC`A$*|vwv zP@N!qT&f2$E%`K5)Xfm`U{t|}n4mts?W7xAt5=n003nPgJ3|H_!wSiCsYAe`f(BKw~i^C8mLqo$G z9f_xPge!$iFngu&qqA(rESg{xIA^Ejb=yv(k*CzGZ2nng)A2Wcj_rd9r?%vNHOgE2 z{`8IXm1r`U2rwtUzzZuIfun)S84wS^%-&NEyp2MRE9 zIvkPV$zXvf3WmcZnbv_7$viS>vYzfm@DUj>y7a=oP5%N2^S z&cx`O6R+isN9&%p*lsuD_}0mzBAfNizrL>;h|xD;08s*gS7}4rmA5B|yjuB!`IbSi zWDv9v!Ivb{H!!{MJJj=(PYC8(G`^qia3P1Rzf*5RhJPguS>a825-1rz56Umw(0B7qlnb|!;qKm>y5;Rf(-PqYU|rV|V7>RjHKC8CnH- z5Bi}8yAi>c#8;le3Tp`%!I)|5?!j6JayUdc)&ghl0wy@dn^PR4!to4I1a~+0qSpT8P4Dn7x)I>2ZO)l-z4v+ zVD8^|WSWG|7>OU6OHA?gxoI99GHK-5F0EvdH56YT(ils;iOy_>Jy10@Vp$W!jv#A+&3q1iDZABQxs$o?uno5!7@O}!U@#a=Q=fsTTQf!AA9jkl zDwKB!-?T<974GA)Y{%VOh7~Fv&^FJ0W}bBPVrmS&iD6MWXCdg+2HJ~4@bRlf;k(x8 zyUnFs_4b|C)*_HG3SnRprOTpgYxDz7|FGPC_MHH8|VE!`U9}mWXfyru}a=2rxo{{+i#68o4APb)th&Cqwmo zj*@128t-}W;${0~FVXWOrB9teBkRfr1;V20lCR(gztSa>Tn|3YURP>Xx-$O8hM6bj z@QE~38+M2w*Ge>e6P0eLOJF-jftTKL#nPqjV;-A@uov{&+s@Ar-^7AvfzAYHt##M_ zvW(MT(kVq-o6re7IKf(U>Ug7lp^=<$?U@r?5NVxj2l>xk1;!p>V zB}=@A@pipIm`iZ!!nGgQ`-5rXnMZ*h^P)fC(+99L8GSN_iy3xYfrEj)4v@OD1Lvv` zKtm@V%yr1#(ll7LQOPW6(YoE~OE!AryAB9h5Cn7Qa%@1^f#4#bkXZBHSB3QmV16xv z8)kmm4TWM-H#L*(-F!Z}tKV0`H~-Ii5xxV6GfeOwUNe|~`dloy3_@-(cmJh=?cwIe z^K>ko8C)1*AOM9$uwmK~WcUr1f9fKEyic_!3qr9{(x~yO6nO{Q@JFLFT$luG`Jz1X36p8h;VTL#i?CBO0r|+%*~5|L%KsXF$4XED z-$5I)3c9L-eJpee!EKqa-C0YZNIR39S&pvoW(l?Ul83P_@I3=2*Ne$?C9|D9T!5Nt zAv28$oJzZTe?ySfCWHb36=5teg28tL1F5%*`xKwzOO0A_Id5QPK@Kty)CT;4gnlVQc4lzE zrGn20a$sq|y&;iy$S;GS0SXj2ogkD&@pfgnun z^lk@0MG{gU~0-)Lt`C!khrm@G#pE};hb*BQh=Jy}dI04t#7YTum#C5v0qmmEfuNd)keCdCn4}_|;)~L#oe}Ax{+wDF3PQ&Q>x22SNQBHmXw$ zKbX*3k`uoVh`(X=0`(;t{b|a>LbF=J3%EcopqYUhT&5M%fv^>aKt?AZ zd@Jx32AmnA5`_9^*6M^msf^mDo{)-1a`s|)13khEi&?Tcyxz||?h@*`%kn;|Em5=s zG9|e2XY-C|tMuJr=x^S?>%^E8^!Q7-WklB3nFUl*?XP8xKsR_>1~}%*1bjs>PUxlT z+XJ^$Q8$)7-RW~#8Lc#ewi^~ma+G-;?d5pePmJ^vXFPZ=oGrTkbTE!56H_WxyWrsa@IxzL zotW+rX#_Z+HSlWe0GSnKtHP1Ml~{w11UE5Z^zQz#mTSq8t=E#yb(x7~WCij`XCuFp zr?5CsW!O_Z+<{3kT+Fod;0@RUP66P_bgy@Y8Ou(z?;bUawsy>y9LB{BP`3I`nws;d*zoy8?6SlhV+>j}TWbmxbU z6|C7F?sm*tqIGAWO{w7N!x$a^AB>H#?D>nI2;LGra`RdGs=mu@%r|ImkD(rXpNm|s zz|im&fza<|gc?!uESju2zZ|ZP5Iy!j7M3=06hN=lFKve_6%;2Zt)>RcuZ}O)-+^{I z6hYc#>a)Og%&aZO%=*lU?xE5$+$7KD>^zmryHRq4*k<-b>kG>cxN~W~lr1^#IsFGA zt0KZR|JlrDW3=3-cLqabcPEhxbp}sckZPIt+nHcEQebB7F$1j#n(&}#&<<+K$d=l{ z_gka4j>pVG&y|lK@CTu@Ib$)6>FUUJ;+>v@I>vnC3-v#jfq?CIwzo6C1j@pJ2KK8Q z-qs5a{(GyNIKS_loz*tW7}aCH4%z zwz?^wZO^#}&asGZo39-i?PZDY9>8YYj_Jg929~wfUxP7nfxdike6VWD{4C0vop)QL zoCw&6%p*4R2Lv9tW-!%?9)G8QmnoD($9@Y)jB)%k^s&CI!+Vq2l^5<)S6^*wJYHuA z>W_#ZWCY2)5D??AbzyN0m`AtJSnS2e%t%?Fe*!{G-SOc^cw50>CWQh8AGd9IOOEUU*k*!m_uA z;EjiEWFLA$1s3x1lUD@xV#6(r@uM-=3KuqZw$5{ei?i4 zSAf%m%{@4!Xy@=r7Rj2a?L1z`CnE#l@#$gnK5bA83mUk=1O#ye5k76u zAs!U?f{)N(8bmGkPlANR(ICqB=>w=2c$gCw0GM&=?6D4RwOE zv5b%)3>|xLXVtN{#%pgKjI~hPkH#3pH^UuT8|BRSG|VF2?(LG#t=6G&?f=dU4>Xby zG8kRJD}lI|%e5pv-NQA@8a4TYjRsPGex&?>7cz#NP`-1$V+)}L!?q(_5#0XrN3RK_&8#;)eY$P2 zLmn_pDG4tT2RT0&8SDeG}Em7w_GD8cYfaoAM@g&`5MB@q817 z+AJDOjwwJxzz@y~2MK?QpvyqNf}b8%pxVI%4b=tk%aP=hgO>zC$6)c5Ua8qJ*Y?$5XlOGXadGjwT{?H%CwzA&Rx-O_u>RL zdSdpFpTI9H3cNKyFexj@<2r&L3DoWszX@OG+s!abq_`S$MAIXmOo=;^yerC?jJEHg)KjaHu*d_T`w7 zmQ6D}x^gL*o|-%=|Dgsj+OCa0+S?G11-qEFWvssK1mggmH!JN1e%Xb9QWE9!*H|!UKtS)`#<5;m z%02tpSYMz8P4SXD)^6!|@c^Vnz^dgQADo|7z8y?j9eI8&%jt_d8A4Qav;uK>!4X}6G9R@*pwsC^K({C={BMd>8Zhd+e_k$cNUI8aD?58b*dWob;}() z;|%4N4mUUML!B!;hHQ^amTx6{szLVBbXr2L(Hv>Q5!{OLI+r$p5a|*~7-i((w=>8-?4v3E8k9AAPRcVnOdEoL z=p05Fo$Xhp>iMLKyybN{r_^S_D`Yx6AaV}+VD>$UZJajziKS)K4wREB72Xisx`S>m zjkcX9s;pbS_*J=S{?6As((lD5h=-vu1Q5d$+D#tRnV>y!!#ZO>#itK<6l|Z0A49q3 z!-6(djwS_0sTM`CgCY)t@&rG}u?zHcrX5e>BeP?8=A4kQ5(O5zxh!6>a5=UL+*6(<7 zo>mg4e(>wA`)Gg;hdrw{@#?~DJ&TsO(B)yr*#tQRMuRZZnZJB|?#%v5a`EbAspoUG z5+zVY_k-1{UA6n@r?-Eh@#TU~VN-*V?GNFY$~8@4;Wl#`8PPrF9yz!sUc0+{3oZ*89mkrlR2$`)cl(A>Y{Z6@)=K_Q zkTt)IQ5|}TTBW&^tH!$~pL)C4Q0}$_YtHcMrJ-u9WU=-3w;|(hG9ERxHOB;Q>x7eG zy$=KBpEQ;qgM)W zA69MOgbzqqx)8QFTCTS#M_KMDIWe|fc;qRrpU}066w8E$wZ2&96c!hd-h`r#e@{LH z2tCNfH;&O`UX9#3e!@G$;BmSaH%0Xg77w?h>jabhayQuDz4w+B!Pwu|b!GvY0L7sI zH`fdw=J#O?CC@7<*&?309#MeUVA7X66Xw(A$ddy)o-m%mazV4$czmZ*4%;?t>=CD* zo#F8DQc#Z)X;OfVi67e^tB<#dK1C0!2~F)L-)*~i_^BI=v^wl+6tDKsY%Tjqzl3St zD3uKderP3(M>XTOn&!tTbG{E->R&H@68pY)>wfR8v2X7lr)T^~M$3Qj;K$MImV#{S zP@|xe3AsaG%to(VD)w)UiJz`fKiYNl&vR3?nvo=LN?2h3 zi`|^UP>u!;{LGD9aI4$O;O@|NYF z1!gl8Omq58PwXAj3C&62z|T|r{&{=5UoqU6a_*9QVt7{sKcg_yeY_2>Hl6Rxx^I{mRB^!SUXl|sPJ@(;W&=M@07ixTtjKJ}^KK7nyAhJr9aL`HX`#_DVS~z)g+_fsMK$d-fIkNND0NV z)drtABtJNz$~0rZ){0MeQ#Xh{lW3yjpBT-poVAVS%P3QD8Bl2>o^v#&j&tNq{+RHT z9Ayxi{V?eGgMQk`)#4DHW3<6z%_ee4evDOBJLP-U)axAW8o;?|pB`--z;&rPKcJu^ zG94b#>DQ;7@wKsP7CR>?vo!po_aZ|zJJ+B?#_#GJ!&qe9nJJeVW_h^l5TP^k!PZLs@QSiqNvl}G;@5b>9`u>mB2 zYU4y1zg1mwv?6HgM;!3hy5r;iOiU1I)B#buu_+pi0ewk+^s%P%OW!@j52CDR<-14j zlr`F)YdWm!$|0@m1yS3}majXnH8xBBk+5!EX}KgtkBd9{x9_oIfXS};w6{0bjP2YE zB4ENm*d5)0{LY%)iCXX5JtT`7{B*CDqs^vxF+rqR2Soi6GgLH`51FhrNiK;}r!K}1 zqKSG56@DZ)O4yW`;)H`eoa+VA`7qb3jvWq~uRYX)#eMs9A~GEwcPMY+QsO!JEA(Be zZu{r1+ACFskBzN~&K!J6U9r5aaroG~iu=<2WW@y0Xo5awe>nSA$Mp5juF(rqs@8w# zl)MK&h?H(9xXxA`Lkl>(%s<*q{v!gSv%mldwn&Gx4$bcL?IC$>YCd;lU?s|X#RHX8ZuVBK}VTJ%9*WE;g)seyf;dmuW4@7ZIYNVYYnYB zifGF4{VfXn%9|J6oBQf|AR7(+;&6$2RDK-u+-aWiHcQ116BiV@)T@YQ^-#6lNSb7{ z_087dj)f$&&jcO}1+-JTGmh(P7)hR_H>t}CG_WKU7;0=q)H3wS!qN@rjkX^%4!x}X zNL&!rEyI5PWWp`^(>}C<-pO}&(L0^OuZYx12NxJ@m_=Eiq4BoxkzybMB5WCU_WEI4 zmtFZmUv=Vw-ahAZcO|f9cqCpRpZQek2#w2qKn%#F)f--9c{EuF7#7)hdTy&AMdUkPw4RgKagg$>6uw&kV;SU zPJD17Xv)HRwNb|Oop!4I78?Y9^mgml&lm0Jh({Z#*{?dMnqFwKc5udOm6zpV(gY-^ zjUbR33q&bSdCBvte$cbFf7_&JQ6w)Wh;-|?MQWK#ViOnKH^{wGtWWZ~vj{(k#vJZG z?s7Lda_}8xf9}xGul2e`2}-X!xJ|9mFZ@>i=!N%UNkG(5bzYC{Nh=Jp`fsV|R9$#O znm`2IA`SIMD2u2(#WNwkB-KV zq1{e0r#G1DQuCa@4_exN*klAlSZ3p8de^x*CFbP#A6Goa-0c^DOovAibtsWD`SLD= zoSFWvU+(gl)zX9^u=^osG?o@xk$grq<@^-W%^@c)P@c9PB_@LE2CUue!%51?-P zLV6sZx($_O9F8?5d~&FK*HhHu*91S+HHWq8HD$`u^T@8_Ay#5MfIi=LWx|cRBRN zG(4w6&C#Vwx)Ols)u3+WPRh^q6M6>>jqQ5}rG`s|W8Ih;kAo^byI=KrX_S9BCdAwq`G-;tm?=f@h4k2qPUB@W& z!5q){J`azHg`#>I49T21d86X>B7^n!Z$5f;GK&cN&|JZATTEZgxqOFn-eh}au(?6W zyK-c?#Nf8r|AyQ0T~*B$B^@WWUnZi~_Ur3G5)eGGFy&d5wxNS}aA zhX=;t9YSt#)A9{cw-2@SYRNh)O)zc}+?G5{$h_+8lbFXkOv5;9mltCuZ>8Y}(l59z zSUTsW_hlvnd}C=Vqp7slt$Uz^6g)s;r}~c^G2^gV+LfzEmrrNo0}__og6-}2UE|3L z-=sd2jon5(Pslm#Dg=6wxGk`uV}0BfUX%7_Y776-)agC;t1e%4sV!@YR^{}I471qL zJ*sH%xHM<{uoa2gQZ;CjdRlK?gRNVA_32#-QLN#C?a|cp$Ezp3q3ml>>^46^r<*kC zzsB?f8uw;Fie>48?bbQ+<<2Mh=w0YsV!SEh4Th)PIlN= zLNHq$9vpI_M@I<~gukG+s9~nFP`t2bO~q4_9V^$%47*c-9zBA`eyxihtX&miPRZyw zIER)y{P{nLA1t+nfvF0q@$kv~+~0^2K^+?X=x{5vse#yq^B3E`h@3Zex^Z}QuKeDl zPA15MuAgus<}oi>z%>=rvD{ROvGiY*rJr?ngev)w-h$uGI<8bMq%G=bm(YH0eKi-G7 zk-`yZ6p7h#aSw3ZTycH zPY=r};Kz?h%$5~jxmWiWRhWcyB=?9LY|sXo4v*^XInn*p!URpjRfS1!@++2{K!$2$ z{0M5}8k?BVnEU$%X13U07&&U{`%K!J^KaT2J`OyIA4DQCTjsCa%Pa|QW0rXSN4o9Z z5;+M#Bon)HTHa$L+O{r>CuO9pYWd%Qh`+Rr4Ilwj8zZAwNb`8%^(sTL=DVrd9rZ-Wk0$(C3D@FoT^FgXoWWpO(YVtMb>O%*oT9z zCfjJsm&^B&AAzhq9uN)Ne9Yy{2tTu(L%z?;{+>^iCJ;3(W=rAH@=ae`%rp<*m2Q4v zbJ{BWiby18%eijeD#{*ihUvbCt6xWvM@fL84RXezpGmnE+wOm*l+Rp`lFu92ua*v% zsDYU+H}WrR?!5i0{^rCz8?HRBMu}=T6p={Gma_i+7Vk`WZydbgmfMzIhb1Y%+vK%j z@7K@;=KkMXy?>(J$y%BeQ4?gg9A|a2pRDnU6rg`-9B1-}8vNQwBxcKoNfyIT%S2j4 z-0yhZWsB)i3A9nGxEjqRGVb)1ly_~k-oBQq=9F-Q)`XZXKgOvarNwr%*wtxx?wfS^ z9r!^c60_yelmiD2U!AJI)-NXY^T0lN5`bvZ@@HqJQ9bpy8>v5DVQ>U(TqYGJt!Xh^ zX2eYYvMyQQd|k(G>(Bm(FvpJ}k(e!!b7)FAi3a++`{$LI?&>;Q0t{6?_;xO`c zg*!w71Sw2jJ$Ya9Y>Uhz+mct_8z*%QP?`|4CFJ(UwhKbm=&#Dxy29d~v%(J|k(e!S zGLr}G==YACw#H!Nin;NUsG;N8WBd;8^flk}UOplER`GplQbUcI@n~RX3;mMnr?aN_ zjDsc@`p(NVzJnh?A~9QZvo9OH@tZ~6KhnS{<%9iq3AE5!{h<+M7e7;z&qvRm@U5ak zngApP%$CuFyBKDRebM9Z_xt%#0$xoEemu+J5VBliFk4)I!)#ePD7y9Q@!iQgB6cj3 zmucyRAI2gvTb#ChwmE)w7A3e7J5i6b(Om)<`^~t@j5*>=v7foZ`1-3(eBn_#aJ) z%^N2He%@_fIo#BI7CArZ(xMyRwxJz{oAL993QkGcE!#14ldfZ&4P3+GNQK(&ou^GS zUWQ-){DR%0iJ7kG#S@S22dn98S}q-F_oW6cj=*ET4i_El)}GRVmLFK!l6Lf90&?a5 z7Jjho7ACNJ0@ra~`PzyB({}sD<{z-Y(_gOa|niS1dFpIu&9WAXB zp`=~TlHty9VRD)7Sne>mY8N+Nfldy_*`=0t_gO}WH}Z{P&Gx@&s*EgY{WE!jp9VY2r#0QUqs`WS^C#S2 zZWN7QNJV0}w4OPz-D%II`mud?EjUv;jg3r)M@T(GFMk;1ev`gSK~H6{+olYn~7%p2M z4=_3QERvk&-M8QK8CfLJXA(_x8kXU*wSQ8tyfgxJ>l;Ib@~|NV$kpQTk3?d)SZyeA znUia3mOtJhqgBvVl(2+HbVgZkzQ8EeG)SKw7H2)*9xa3Tw?sz)b1<1m-R>Lq?3T7v zhsdXc;*ByxTtB9cvlx#bKO!+)qF>#+vh3~}v+!5m$t%is7$Vc*!Oy~p#-(qp?5RnM zyDLXUTA=2?k?|v-4Ky}Ep)vRP4a{(PXT2iwzR4VF(s#=(G0rEF@qIOv(}lYg)Fc3rXHbpvHp*;rkW#^GYuAv{ zW)O)^PH5n>TZX6KZOe^wHea{y@hF$^eQfcANF;`fU$%bWlzTeVRTqlyzc?q;T>=nk zIQS2ezf)nfs=HFsw;lt~8ueyPgd9Qoy90n4nBmesb?dXYG26&HU9OzCz5h)Y{2&sE z;nF(5g0XFIwOQnt+}VZ>A&wG&=w_kUsS(GDOryWIDpk`ygI4ZH1&Ep!!-Z-2VBRH- zF#Xu)hnE+AXCA?iA(0p^78N5cZcJ*gAO6*QbZ+@pbbE})uhwd_Vy*sVqDA6pxzOHf zgN%_YmkJCuwoBB&441g$=0CpQAFRK2!NtVOAtNW^2a!k&mj%~4?RERq%QSezw(ieQ z6K_hOh`!y@&2D>ZhEYk%8A4{J_Eu>EQ4?gi9HfT?`#ij75^6pwTi@@ZDSjY{#BfQ? ze3hVQJe{_>g~^Sx*%d=20Fvqyclz{z$JFSg?ix4qPq;}FkeV37CFE<@_bogh(UQ*R zES-37qXc~{L}Iu&8`6h!ygnGL>uY&5(<@Wj`XpUEP0P4-PCvY-{#s-uaD=NxVz{(^ZKtyNRGdY~MDD&9PQ4{L(yns+g;#1@ zj~b+&blzfU&vKeX6K3}cH` zTdW&$L_wNh)R;Ms2Ija7WxwK14xkw&57=v4=0QZM2RHyE631ot0R{V%HF+khPK5n< z_swaf1bXP&nHS;l8yAw&KRrEq)bs~hk|`CIObR$IT7*gr$Avb~toYTdeEQBBDzpDA ztMAQ)|Srh+{S(+ z+EETqoXYv`=Ul~#$>dc%GDm(Gr6pDMl}&=TMP62}FKdVL%hk_+3zmD|j4k&NN8|89uib)~8F zkf~O~vKP|Os3#5$C=$bEPPwv|&8$T8h>ID@T2Zd~5*YF|&;8cMKQq=}c~o<{dT?w6 zGL%#p^2YQ88X_-4t*p@9G{c(~s`%E)e_0JW9UlDnq^L#i_nB^( z@S|eGi=yLbvzmX)eqk9dc9`JfmxPC@iktQ6CAmpu)B4>(5AGDZcs@(@(u(0_!>K_- z3NJ6u%lM2yq(O@3cVS%J>+Pbo9$DL?h)%39EtcX`**uP4%@t#o;GSq z)+jg46{0Hx(L|?V`7QK0lXIizQO)yz4B9l=IR_;S;Mkps#Ba%edqh)@{(_#VJ9!^# zjqP~}M904;ch1t{dltnX$>WMHy;_Y7^>10X|2w~>yJPk~`%0QcX4Un~+{1z1$SUB# zk4XHMejb%yGVWe6E9yIwqah($I(9x~v@+2DxKosl9F0)S3 zvIsA(-e1;w-v0jvMEs>~Yyb(M+9dcb_idIdIsI5cS?ADN_s~s0l(mFI6N$ucS!aVAy0CM8wn`3$h$k9HQp0V0w3El%C`B#e3!WEQf+x6-(Xh;p*< zfan-&Zuyn(Jq&UJ=T98Nnp+To|{@dbNDjzlCFn~-6Atl722$bL?GHVFu&!{=<38n#(ij| zPc~S^t|%kFW2ZkDnw$^rz9CCs)6v#atP?gOj2~zz-ym_$@x#o}nH}`>3%|4=P_q++QpKkoF$4f7{)7 zy5XAHu@4Xb|tiZulkl&=or$jdyvGNUDcCy08`lb zD8k65Fr~MCW}k2c*^%mKA_#{T`USt`JSN4=7~gg9%yl;U8@wzg6>SVh6MT3!XEz7D z>i%f|53}gv=yKx5_1C1yl)<`kcb20Qw~5eOrstk#T(>f&r$o=O&AZSNZDNN5MIzB# zh{qhvzV;q&Q8H^*PL_+}M+t0Mp9KBM{`u-g1;zL6ypFG#Crv17%#=q1(_7pxFWx_h zqG7zjzQsdJU3m_ELnacv<=M!T*ZJFb>Bn|Vf9sc<)L#MsJsU7}w<%rGX#KW(+uNGU zww5LUNddh@n{XXNZ_!lnycQIB!mu#4$28f6+fZ({81xp$-_TobB^@;?h&peQcVn{7 z^2ZUVgM>p5ibQXjcedy0VC89)&08mt*IW$mDFKXipY>X8()XlE@x*6K-Z-X8)lpVW zg5Hvkam(z8zP(gw5k@8YG3|R;yt#p2AO3>gVu+dUm6Nf`zQpsCRb7ie^t9@PPKU=W zi+v_HOK;?K{T$_iF3UT(>*LagSbEE1;0+1rExHqL-tOA1kA7sEn#De)_A)}C7m3~i zZ>m0ei?towo!QK8k&NBqZWx~!QyFc%a?a6?1#Vw= ze*B2UZfWDX@5j}{yA1aSwgYomiaM#a|gX5 z>t`S9;_29P7TRk|Yzf_0oq2cKz)G{Q@M)@D6rIsh_6Ctq6O3Rbuk{Ic>$%(9f84Z5 z8n3paNmUVM5>0d(mfWHl$n7+!U8H#$C8gLoCshRjAP&(HiQFr~-X}P7k@V49mWYO{9r_Ela&igaI8HNri7&?58BEF!M*oSKh>U0~M zo6wjWv<4=(uupv{U2<&_DQ;fh1)ZYrzQV7BL?XAyU2w>XadM=kXPD&mSGnsX0f_cq zarbydYiC$0)9Y9bwd}GqDIoz=n*_OqJZyRR0lm?r9WR+R`=4@CsHKOk6?@RxGK4w* ziOvx8cuX815{cY0>)opfXZu|?$#i}G?c*JyBs9C0E1hl_yeKhCeS9jPG=SBs8APIk zsDa5Xi=J%vC<`~GWgRbl{_3LGF3iQJ;Wsg6D~sge>IqSfbZtLz*JKorE$@_S}lK#jXNbmTMVbX0{( zg(7N#Ea+0!IkKR(K|UG7f&KoW`El9KLfIb~XJ{rwZ|quU0LJ1GH>RuXrW zjPEqeeAAm1H#>Ixum~ASDuC3)$StjUX~cLwj;E)7Vor`7xHJPlh(sc{m@ZneW#v41 z<85)h%Jho$7fJx4#iet%DW?{gL>w{Kt8%lEs)FFAMQ#~<_G6DjZm-OX7tB8&wQXE1 zehi63ZaGVy*FV{Iw?!&vXe4V$UXcVCdXsTttnu(_v)tHOE&-wE$jDGqp@^CixrM8@ zs$2SEH&QVzO&9tZIggaf7^DVQK070|73A@_F9iXgN&p0gG zq4K>nA*iX5Te{kRFe-=`MO{Tb)bogDJJ;-Np!Bc5MQDde&8kpSDxvEv)5mp9<`<|XnI{UiMAp8IliQJ-m zOXo$gyCHea-kH?A89rLbba()iw_M>_=7h2OJIWtio_j3ZNSXlD^vNv*8B2GT3yaJ0 zWb!Lh8&f9w3~J{xd3!l!+e-B`wJte}#j6w7P$yt{r}?2wZ5;R7f7R5t`z2t% zU+`kwo_$}%aI4LIvr)IZ9g*cf3oP%{b@k!wx2pcM?9ZQT`j)9nl1tWY6Hzv?Vw}bL zZ3^$g2K1Jyra+A@6Z__yzPq>knPI~0v1&K6_qvFQA`QYs3~wc~SD@{M#VbrRRaE_1 zrim%|HLIfXrWcx~Ip)bqpL3U#$7doaI*lnI3}5{qtHW0}Q&c$(#yDn#mk)T9Z6)DIBVNxi_-Aa49?}Jvh5lcc>WnMX_r#=Pc-WXrA*$-pe zrG4-5?HQwX5fpTuLP0tQ%uIZ>M7En&w%JxZcJHThP>>0C-Nu|VH0SJtUdU;k)N{m8 zRf2+aK$e|%phO}Rh%1YZBo4PeCNFy6xNDHk?3ixpek#(DDMCFbw3|=rtXfA-(l-z9 zV6`kK&_aDWs@)vDIAC-EYu&ZmaX}NqgajQ?&k3#jZS-`T_I$herI()ceJo&=gN`QL zY2P?jtF7&_ydgsj3&UDhB|3t=_}Tnmc4(!MQ5P4qq0y^7b~|$(rxqP48ml51nJK76 zA@io5PMx}!xn##ljivqBTh%8ccSdBx1_`xYBUUY|-Oxy*ol>j1r4lSUplr~P?gB2($%7liO(H`Gc4SeI9v5Q`ef>E6{)C? z0y7%vx9(lszJAQ*wTqh9HvLTcAJvEj{u9tEZ((si*7D$e3;c|uwUjcW;;4C-`?q=E zynW%F-~@)BOF5`$`A+UXCsSGU$c_cM>hH@DemG=fpLe=9`-ivZ zO@fS0Qgox;^&H=Hr_-4`x0*izhs?bz2N`)j3+Y=cvWv^w*NsPXHq#(`z*Y&}s4|WG z)pNEC=@FMmPkQ$L%8bX&_Nqug7KjanfNmr=I%wZ$8EbWe!}R?hUj`C8ss;fyHyybV zeWdG@SJ2_?n6Wn(5(IRXLO_FNOz4F49c;boU0vBo(C49d4@hh9u?-N@W zoeo~EJ`qi2JbHGp2iJ98)0GGM#xI+olnd?JeeK%W=>u((EbdH3Gjng1g9}Y8Eb4G> znY~R++}ilhkFBe@5NNOARfe{|XHL}_)1}FI`;5fJ83*okyQLxlSt$^ZZ$IOo`phW~ z85>_tT4Y;Xj-C{gbFCUb%doY{Y-bpE&f=b~QUcPM(JU{}ZX2s$eMcR3-`Us8K|p7m z9i9}PI`2GRbU`oI(=4-|%yr zmGd3)^P4)s2$&w+$#-FJ#N_p-@Ph>z;|qHYvHKvdh_`$pD*M>*NHDH*9P`;F*C zR>-Imzj?#cnd&}km)nN@4v`I9vmaF@0)pzam?!Y%SDGM8p6mX$IQ^W%-1R@+ZyYp# zn2Ka%tiXq!W|^(c2^h_ac=@ht#IVifa1kZH310ry;Aoz@}UL!^+s5< zz3w#QXT(Bn{cq38!G{(a@+jzWw zjfc%tBp?$70@ABh_tgP@ux<7NT5imiAhO+?8tSyu$LP}yR@b%3H#xnUyWo3_QUXe@ zJJq}vr-p5M*tnVtek?9ew8QG8g~9roXX!JypIBd~*Uu`YPFJQN6CV$a-04BH&koz! z@A%_EU&YA1iJ1Zs39MEh8eg*^GcIA;_m8IH#_AK%X6ySG--rqw;sax&7l&># zS4u?VeD)mv{5aM*+F^*dQO3~6cso@g-o^eSW6F0pmj4f+RkfR4kF?|=<+1!kfHOO-42!^7j((&sw$xiRW>Jj zFf-RIO#Fp8v(pMTo0ufF1=rglc>}JROh6WZ$vpb|vP=koNCNj5dSoF+( z?vAOwM0e6sloC-)?+nLD+o!tDTG{hO7uxJYrjyT%R41`%oy(cyUR zz^`vp+|sY)zdZUO>Nr6}7b!k!|HjD{G}BbKuy-!?Co@lFmxGALq>WtIap_ZfR(y(% zMw8$wRX6uXS~lme``I#V-AL=mqvQ3RkdRCjDM`^$U9|7m+=OdynR}-DZTZmUZaHH2 zofq7?_VasZdi2>hc|pe$ZZl7(U3zJ6y;i9_OG*nwgt_zFR=hvdc9))(d?RgDo8N}T zZ;!iChee~)Qix+EfbbxPt4rCez1^0RI4$7VRpOUs$<{^9M% za&RH^#mVfT=4!7yRU{x|L>uHc z$@=S`p4i{K{nsdFe8dNOX7f#C%s>qSiVQGYsa@w4BQ>Qc#XLSIfgqp-08z5XMRm~p zK6|>4$c0NIA1oItE2dkqcOK!0ykh908*8jYmWkh@cZ!Doxb_>fvmRLt`gxQm1Vs7S&?#YkOn z3(WNAufbztMt|JGW1fbyx-W!4UdP@Z0cBVa|>&k|8SvDLF zD*ojz4G&bnMMYkr0hF!R^J05Df*;^{C-^^2FQJex;RPVnwzDm}PEDF?ufvRQG*8n( zpt+#zdxRhw!`;~uKk!y!iHOY;NC;X)G)+wqOA5l@t~|J4+G`Elc|xXUT5ri=;wfqf zg81EfENM&ZRHM#MfUeB63 z#67j+zpZsJy6lAbduBl;`JQ#Jj|!hXi7~UiE35XqULOR=|ka zyrAIPQO&*tcC09mYdS|u%k21B`jT~bd)&I%r97##$p>c%hqar=+F9(|_P`Ubmetrn z_!L2_Wg2q%`z|pfe@04T!Kzx0>SCvz=c2n7yH-0df8Ap(O}xprBC)d_h!2^dHP(Hw zjT7|9En`~Ut;@$v8(!*@rh!{!f>uBoD2?&(K+Dy34q2_995~$O6GtD9kU}fFyo7JQ1twF@& z)Dd)RzkT%XxGlgT^HyHn)MO8GsQsMlfKn{eA*nBZFxHe_kH=zj#z7z1ziKZ z5t({NTC&2@&dwSuWRSjzGKinw3%Xr^>}6opo_%6e4`BeS;Q3Wo7H4c$sbCEQx5~ge zi89cJt9C7bugH@M=bR+|oPx|Emtl)T&lblrX6b9?to@pGhFBn#@w(1t&eFEFVYW*;FX$oO_qsnZPKDq#50JeK zue$|x(Rq1(^!cvohNG8G_)_YVpk*h+D~~czXH+xxLX&qcd0M9)6xFVsNDQP7Ug2xv zecWjxVKDemMx5#nr!^STaSA=v=xfK_Yx>qv5vS$~O7P{@2FJSJ&UQ^_W_H;XUaOdR zBQ&9$jJ>I z&xkyE_lM4k*%`#l|I0X~D#33zU3_)m1&_6D)R_alAKfHfE-K@6`w)|{jh9_;h}kZl zIQsY{G6q#4IHfAV)BB%v&05>SF(xqT>x@9Nqo1@UC4q#+*#Q#nY~b z?JNgQp%P5sl+EWutg4^{Cv8v2Y#L+Xy8d$G5#AYQJyZm%g+k@|S+Ds`yV1Wp&Pwpo zIMcA_boIe{xYLb29oiVs_iWN@SkPd`C_<=G8}isR)YiLirbS=uQ+xjzo*6Pb&`O6ltQV-g13qJH_L6pW%6{*Nlfr>88cr@bi zb`5%bVR(z;aIrvrDysi;TkaD2Zf02Lb#;d)S*%k^MNOKgk65~Pk;9%1mdvLqYsZ&^ zitbO1_xrlu+kThH;Pb2@b4d-qO0fJ&ry~ES?q}$!FWq9V)ilU=efn8NDzZ}WJlon0 zpXA$XnCm911`Cl+x#S@!YA6na7cF|){>WCltUX=3KYYKGK~NFZ^XzZadD77nwd_;% zihW*t=N~Kw6^$(1_j7ZNcB~nGGg>^@b(K?R8t5u7)N-pT*6Ig;p-kDgNN!8{|~abHaPhvbJ4UT8Cfh zH+Iwe*7UMJschA*#aGAO-DUmAK6l;qy{C;rPN{|+Gb07;h~GpXDmt{zEtz)trP-dX z&xz@(ft|~11nJv2*{t;$J8d^yKgd*yoene_cly}6P7%o)!XFLtBVB^($Z^`4{E@H2 zd%Gpp*E*0VczK{2I|wyuv$5gJ(@$@;vYt8i`}Oym-N=Bc%Gi0*sqO5v!HeBiCGcV& zB^r_Ce3gKm!$&jLb9ZR7vUX;TPJHD1rlPUaxeHwokJ{091bjN)NpSk4O4vcPVF1=$ z2!f!f2!Xmd^1wr9$En=sPAMAgZgBK^Zbp=aWMS0S>6*L`z}os?LY&DBdcIk^^Zx&E zNh_u;7?GMuC;thH{%Sa&{D2`MKGFwV>nD)}i2L^L%@uOQhW;Q#%nLE(2>pAr0|LNV z^dhvkzmOZqN5#FN6Rwx9h{x?^f@r#VPe3^mY_zm1^0QKW8DjB&ofUq#z1%ojL`p*_ z994`sfnkByf=B}~pg6}`9BVOm$rA_1-1b&$8o%6XOgyCBFRzY2M1EjIgUDz=nt`ir z1u&(9#^we=M~-YC}N2-BIz+e*K+N8H-#Wz8_EaPHI!a3t`Ph zv0=3E?3AHwkkkR*gqj1PWy9wSgHbNNpoBca1gZ}9i>pxJ4)P{=VhOz0Rv-Z>2Ve+9 z%SJ2~a(Ez@03?23n<0O%1``m1r!Y{&LCF^-(oBdIz$OM07{U0UOq%!>Z;&dd6k^W{ zr4FHGD+u%lYYm@_-9UXIu*xnx!9)}sG>!c!2CEJJV4)H=oD^7kM=?w^KmfIXrz1Kn zupuCK0!#zZl_NC`Hvz+sE$~%%0Uc>B349J5Tmz0qeIFeUbW$Ks1m;jf*8`OVim)Xj zRTQ|8_=Cg>Zzfe?eqB)=klEqF_D1<&>B&|VU;(J_u7OPh=H}2rdIrjdK{8DfM3({# z|C!w59a4t5r8l+vkg{B-gId6Vn+=zfCdM|o0>J>8J!B)qz_@J3-iz9&ck!AHds|=G zXFYG4Ma|I5vDb*#sCsa~wcCn8LXH0x5+E(fI1vPcDbkVxhTFl6#wM3TtYZxBpij12 zxu^vOs8f2NJ|I-=N0adUQCe4?fF?#k0v1=?tpcF|H31R+97m`c1hM(@;=-DewUphl zS?gh*=Uk$_g0%|kO(6pfRSzFf`U4%HVgT|V6cvz^e1V<`&|!x3qoCt!Q4awvE6HuG ztx=sWrE)Qfw%Ep$H6(R~2B0rAg*U&OzZsD}OIc|>u=|cW% zu%I9lNp*>;bdcZTN>oKkjlUHXrhr0#c>tF}0~8a0|KZxE36|FENwnxOMWDioX@Njf zEW4UTrE7qmK1efgj+HC`JLK(Q^LIfT9d^{#cN34FMAja)15cATx5OPwvp}G2A*FB{ zNMiOAaw`x-`e1kph=869pCAV%I)x?FkCq&`n-S=?XOPhft+87sS6Q_SCQWnvP|iee zVMv*!izc8onL!GJ>N0ZBn7iacH_2s(+%?xux;*JiW)O4&7bznLMJor<7)RQQvT2ca zDx55XoGeuNLn)8G@U>-z!}%ums}t(oLe{U`X#vwesGLK{MdkU1A%$;@ z?meN!_F2=IiH){3u^Fm!zRL0qC`>rO_7;_yX}ke<$e0E-SMET&##x?4wywKOo;2{? z>RyLfHWiTzt9T?BrO0p#k6au9Jvo3|2*KYnMm53j_L4{Qo;as!xi|50SgWhvGv(HS zWEFrQpvR?}N1#|emI9BkK>R3(iCAv+$ScB_8Ncng4!gn7&T8=pXqtNZ0ruQAP|yvN z8#I{EAtQz|yD;s^k=Qg+{?LG#EAc~V(BVt-L)oBm2#k#XOcRP|fdc%A{?Nk~0N51d z7vfTQ3e-l#V79oz1N@ITdz0rX)Wa=kT@t2;ygJ~tW&P`QYwx74tg>7MDz6ezAaIpd z+qr~FuZpg&;1ab&coe89CI+bmHJFg$jG_TDF$$S&nejCo-0tW@L$PQBw&Z8Mb}MjqUQJ7F<%%xM=h+?19a;m zWOIQDPm{o~rz%K;{(zG8TByDA@u4yQiku}pkis+^g16qP-_(#EUTCyFspgL(RTdC% zL&X6+0SIuGS^Pk!i%h45HPSNua_@2NtW$zIjD^jY?)x}&&lY0gRMcrHvm!N2_@yT? zRjAlfE%5LrCyINY8)Ump-0#(RhfluhJs8^B;)%di0*8Rf)M@ywC;4r)hO1P=1!rw~ zQ6Qw4N~snvXbM*zs<=dG1ZbsP9)}I`5>(;}mgF$(Uk9QE`=Pk13nP;>o){R&ko7=5 zfpSZcuh4rZjo6U0lH({;5v!Q2SYIWG-Jtg*oO|mjU}~4xuj3@f6#C= zqNNtDATMPI`GNlMs6*w7tn}xy=eodAImD=PKp5sCKYzs|eXA@GFjb_2Ou911_T>|^ znmfs_yT<9`*G|5kL{GeXveZbvf+i63Ie^9^5)^du5zCuEXDQ-p+Vc6EyNC3(&O0%C+9Ee58EZ#+25+@V{%hs z(^b^@6y`;0eei1=>2#sq_YdXaPiyU;F!x?x`vvp1JYRaWeJAxE4h;h?-Z{w&4Ux!H zKWK~)EtO~z_zMEkOd=^Wa5zD`cjfwKx9Dfn{IV~0iBfL{kW@K=Amh@XAXeENpz{Hb zBGEwF2_$6j1(yF-9g2~q3xYKP#BrMf>SV)4!`^gU&D;Ze2|CpNq@J6VN`W$ISt3sw z2&N(>S*TEoh>SrR&j)kk;4+fNVZ&ey$g&ejVCt!e=ELKI%pZ_hSYlv?3KBUP`-qYg zfnH8Z=|A9|ZA?Fl^NZ%UiXlj{LYY}OcuT@t2LkXg3gHQuioh4qFhO8WgH51Bh&M(< zG)xh=SY+O!h8dO>3zD}`FOX4%X!OB;W}+O>bBvE@m}B95=s`y`EU=%*G!_j@>?ao? zcnqRy4y!R`!f+))UKdzy*qRN@86sW!1;`Wtc?GicGHEU+gsGt+mJ3a0N0x!-R-`Hb ziQ`{Nct!q&gjXv1F!o!Ag7IZPyLSu!V9Cr2UX|gN>PS|ww*wocEc8z9BM ze<1-J&nbdc+aRk?kAeo5-Rws{`=>Z>Q+8rtfPXwhyO8?K^gU1Ahjua5<70!kHRRi zTk_q`?Y)-Y|*)OD8J^CB! zMgL#aBTM8xMG_Rcbh2_DD7Fb_&%VE2r`b=n)Fa5e?J)mU`4uBL7VZm^7X*VSlaA#v zEN&e8;uv1zK#MPV1*`rx!x`uA)xM+3E|!+Fm93CCiVU!S;n0x#u(iv!b}71>Jp-<* zMfZ?xV=emOiQwh62;g8ru-`uzOil(AQ7He-;`bxo?{456EkJ!YF#m8JZulozWh z*D7E(*kxJt%)p?XRoA;C92brc|7Yls-B*e2EGaH4H;x8q(*RBafh`BTghUGlWf{a+ zs0iz3fH^%Ok&&+WKh?GX1_Xfd3>$6(New<|f_x#WM#d{1+cy5f7qtp+6w#FZ>_AS>^_q4Co1MDp&+1%DEztx) z#{ggesN+qRmrfM`2N;&Y#w{HWx8^5?8O+FbjCs1<%y-zL)M{B(-PWcIZEcJ}IF^Ek zfqhq=47Ukj#(FK@wQ_$`zFK&I{#G0hLJ=rus#y5|0l^iqeSJ#@#OeJn9sikL*FMhb zcAcGT!!@e`Q4NT)0KyazQ4;OiUDFke?q%r`d1z`xa)8c9wE#hCOMX01-77O*DnL9y z`36Q+#6lJY)bU*;dmD=1+og{;Vc9hq^w-7u%B(EGa@4tE1+h)9f3$q=H_m>Adz}vhC+zT7 zi|fF;2`mc*ww|Y_YA>;_ootRo46c;; z(eQ*#GApx`S`h;X&31_d%uuW-b#LMmGB=&=-tiCT=i(oByZ|nV#GZP-NNj<6uaQaG(V9 zxS+wNOk2QmJ!Oa7s^C(Al|uMva=y;J6o#|MabR6^c0X2*<&oSMjRUR_45#Y(Q=lrw z1{t#;gaR^P%cv)WQ}hICTcGc4nA?-Lt#ixoDt@xHa|(G@ii%>JIxSLaVmX;$vb{i% z21w~&a`MIZzsF<>d${Jcy!(VR-}$t9vKs1;_>#!w<72`Df3$?;yI=;Uhy+|MBYGXg zXWx`r7v1*MP82z6TaksxD!x5bTKw69K$w(FzB~Mmg@0F_gs;33)Lg+<8Bx1g)_wYF z*EON(_s&IoO;k&3fHcPfJxMB#{Xp9G=LtZ72sRAHQm`;ZD38K{GX3&0#@+wnnw|D- zQ60A(WP7cu$AO?2hHxu0_X(wNp8#;X41e{{y>545P!Hyedgt}_WKT*^j|0f2M4}IV z0}Bf2Im*9)2lG^ z>pHh6m!#LN@AY(D>8{>eS96`;cEMI=t5_fnDZsTnWYF(o6D>x}t&S0rt~0-?#dY8* z2U4y>!}309T?0bo8~>`W|G>0Jk^#B!{CN_2E<|mJ&EL8!E|H(MrE3?SUY1xcp=a^4x^{%oA02_uFmstqI%^+Nb z)g_^nT0uzvRtQS5g_&`KXX@ymaNPA83GWqu$V@Hz$E+VdNW1`trN}24s89WHM7DH9 zIS6D@Bw8jCI(^yE?)12mwf5^jyGrWORZj>&Zoo%kUfT>O;d&kt7sP=hc$-Zmqx&5m@uT_V_c%MevFN@P{Ty6Kg?%^SNO5&Cz$e*rp7- z>)iWhlf!Dk83v%So`bl6B)YQ5%Uu|Rke&&Mo5JAdviC`Y?e+1&#dyh#Vx9~&sd(pj zr+0U9p4qM(ZDn|E<90IY{@2LhGUFV=zq%22g++o*6@*=#j*DKHIOVc3+I`+U`9Nxx zTIhhn&YkTG+7?lBilL$<#RNDrL?u8#c?U8gP)|6foV>H4=%N`t>RRty9Ot;}a+Vkg zN_4HV@(%Dc1eg?MwSKF8K-ej~9+}QpE*QX30Sw4d<$zE`5pxoUTOX4bJ#gGLNN09Tw{*WM3k2xT25kyK zGiJa}%IFK4Pw@p!10%?+9)qz-o;_#1v7Y7Jv%b-RT@8qZQ_&YhnHA{{f*qtVitwe8 zGlq_#SjzLWh957gH?GLKpr1jIYnKfq2UGF+Q2hwvi6kH|!IL8r^1=DGpz9hr5vW`Y z#eb!NLyC!?p|^;dATr{|=)C*4n%l%4@6)A=NwXK~tp()Vuv0P%oD?ma0~8Xlg*(k3 zeqHS}QtC7UnOe0doT+wm^x}Zg1*~<~ZpQ^p3{%e-m1?gTBasnf1+gedU9h7nPU>_5 zn{u4Wl)|aHxS$PSA|&_vR-SCLW3Pl{v@@H-oPqL4pP(>9j(vTpC3`oe9_&_?Z+^pCuw9#7DQ zYk_5wkPn65;AtDxK`Ld(Lm8VRO)0o>XGAt^kWkw-V%4(R4UII~5gXACtYg`eHl?fp zbkg*O2gmrpENDQW(lYgOX)90+K~{h_`E>Kalzur*Ky_AiOnmMjoMGX%#M!Ff(I-=P zS6NO_-T%H~``=q2krXNUPe8A{g~k0?%Y*kV@H39qQVSZe^u%2#=3xgS0$j*x-4%om zs1M>In0$`BVY`un_Jh_|m&`g(bY9-$%Z;FJN!nEw8&LRo3xPflI{TJUoflEmdFq)j zQ)-0IW+pjUZyYLUz2=fvF0pQENJ(;1q`-of7##)m8rb=Fz}0Ai1cI+*mPE+HsX3pP z@3l@0ci#W`n2VZcHv+;2J)Z((iZgt!jkhoeKX(s2*Hl45ziF|KGw1ycm#9NDEm6=# zvY=YUSBCN!yfT)?j|Z0FH+1+-wX&{US+_)zD44CkFGu*{kd1xb>E7%g-kvwrVna}y zmfA_MH3j5H6(yfx%@Jvu;fgv*-Eu;DH^sxYdd`+1J>nASNzdM2nen*U-YUz8aF=u$ zS-FWlE}-h%FHF35S^r zTi_cAJiZKgurO4aP{Ft%p1_3%&sdPU4=}F+h*x33L1k_IK!z99hHh>;awGak*D0@{ z!`U%oZ!S~|mN4BTu>7SG*lBekQwYN+kD$-(W#%s1;Dnc7efEpH_N))^ktHz50HSdo%SO z3AH2+b`*$AF@WFUvj%@)4V|jb{s3kzD#G~*(3C*HgjxVFmGS7=!5&=Kc}-Uy=o`Om zf?BKqN@$!F1jr$^f@}n6L4&r{lF$;k0JY=cnNxMfbZK(lJ|l5)#(_KCZdF+>P%WIx z6#@nYZN4ZdsfU;_MpjTH$>dzC#?LZrZ8F;##+|dcM;`yKnqLWGg3L<<4y9kx63gXP zf&m3E=r3uBmne$rA@_ClJZ=U!%z8ZP*|d3Q5B_affOZ}{Zt_2PhD^yhi4I*J)_TzY zE-Sex!|lt=3EPNGt?D_6CP-t7gG-p!eW!SHFPr>?_^6&Q>Z(_;4@HZc06>$+nMiiC zkW*kAf}f??8dy&X;1(`>0uyv@2?Y!|xEJ0jLtc4hP*_g#T=%!d>E|5guK)3VG3V9Th!)&zsgtSjoNdfgwo?Uj6g>Kf79Vdect%k&5|sHncm zPl{Avp&{joO%$gOC@2u>!@uP;S;|=G=C=50!851l_sY@qhbs((9W#N(ggZCj!shnH^=0y-( zL7p8rP$YMp?pC%{${M$nvyI2=*LX;pNPkT-<9}Fk{|kLmA^Wny$rN%aGen;vTbw>d zpKh?au1&tl>DAl?-^p_hRl@`flLAagyFk%6e!w{;@9rrlE}*_F6i8FK8TjyW-kyOJ zgouxaM(*^W*=L9CZ26(#nN@$AZd+!7iCa3+QGA9fUxEqqs~CkOn_nMx4&qw%?>T<5YU& z-F4N#2$Z!A11#kK%`sT{(TQJy0d)|02Z%W$q#%Q{+SPyLo#&2oC8F5n&wGqlON)XJ z@dUl#iM&e*>MIn5B2Y7T2ed2{fLiX!m|wDQU%Wb`l&jh9BrJ5Yqw$d=P=4i37j^xjsC2R4{00C<^9@Q5tB71e+V;SHgCP*qll{k`w}# z7!}UH^s*Dvi!mo^hBF)&do9v`v%h~xm4zF0=vSAWl*{KRJx>BCX%>ix0=doB_b(8Pqitjt9ob(TmF1$8}_MlA_(+vE}xRrkV_qxNKhw`wXNGhI#VO$6eV7EIG#K3>)RB!^eg!4Lb#^{ zRI347O5nru4a5^mfPp0!HG`2zB^I9C_0%BREO7lW*p{9S>n=bA24Bcw^J!x69FR{& z;{lrv<)a)4%Ej8(D?S?h%n=3vdk?g@XVbiiF#<$F;50!EX?Rf};POIfuy=ha-RYZSsFiySxDsH7SlXSOpK=I=&*iWC*)nY1NbAU>fYjdwI1ZH;fvOtJH6?f6Vo5v;77O|VhZ$gw{7{TNg3;IlF5s7JF3N?sp)@H1 z!FhI*0(ro2rwtMCVcT4AG2U6K6cz{hJ7s>-SCS7^aw&nB#w#`)zEfyJkNsNsv=}|` zpfVU-3otLhB>=BLG>j3b^^r}obg(m0K%yy>I3NufDpOdj1Rh+8Xo0gog&ZE{W&Bl} z)nJ0$B2QtUh=anjMq~|z%F=BK&ZW#54Due>$^$oKDIl^eFPVubnvOeL#P&x)48c+C z0#*sk+?_4)!z359bFf5R9S@vhxX8cZlBNO?;@t!>q~N_rpM8@TbUfiU^K{y!m-g0c z)zV;K)*Y_F5HXcJQkovfgW_)b=AI zTO02_Um1`hND_aCe+xv_HukSvN&Q1@Oihv26vRB^Mnr=HD{iDS+_c52&MEr3984$k9&p{kfH))M?^!{NXa zy|MGOL;Lo%5%JhGKHD4RD`b;;z-z&UVhInFwn|WrpFqeL`iA1?t%*?3DMkXV*}woH zJg%6{@q-E`n`pfU|Axo3;SpDIDy1lUvcv*UeA-?-3H8)&YHxyM%i;y+bm?vzTC%iT z*fy%VXS`J7P3mC6nReNaR!~-bXxaz4LlH}fTQ<^tzZEcIHZLf+c2tw>z}*gzzp|1u zQa8u6RcVGS4AR?%1ORHM0bh?VFm&WwcBle7hMKTL@uzcnYyi?ya0V0G@N1dar7jTq z^2*-`lf-4lwqmt)y2y2Ra%X)sX6k9g7S8&zFJ@W+JqUMQ9JY9=XX!klC4li zG1vmo*PR9nfoM36fc_8oBm;U*zvKFo-VCu#*ji`dgTfQ9jDM!jlOo= zy{0eO5vST{B?rW{6H>B>(Yta1?G2fQIPF{(unq+0c1bJuHbk0;=oge zXP0#824xT7j|GcC`W>9nPy`F+5Z5u_Y`s87640dy^x`KbE$61Dy3LBOj=Q_d`jLI^ zy6byS8-<*zM*M#r@$%8&lACs!87X8;US1 z#jlrvOd8o`fdSB0jdDQ^rv#L)`6EE5Muwr@hz4%3|I${3_}-C=bOl#(g#L!$Bvp{6 zXc&xjE;0;8y$zvH%vZ$Y8p3J8KgiKsLAD3hF9Dk`{Do$M=-^LsMNzI8k0!zwfvp6| zp8&SNxf=Lo_}N;BF1Ut^bpU4bhw{iM7KjMI8anX)4nh%cGJH|Kjr43*SxSj#0Gk7@ zqoa~w6a}d%Sg9UTLt`jNwtlt7xxD1IIPD#>Us=m~EvW@i4RxGi&}>`tm34nx~_8> zT=VdhLeec<=`X71?gttZ4nwhHP=6Bt^xQ>g5DyIobOl=HO274jD3d5$TN-8P5!b@C zhyS#2LKP$D0hVN|dWd4Jnut5RN5c&11+!l+88W{Usi;EL6W?+sFGz}K%8G6Vm&kUf z!HvjAv8`Pkw`y+_KbSI4R0h(4FyOF7Ttt2H=?;bnU~^$TLSLG(c|b@%nm3y>(N_d? zP;M_!Lm(9OrFHNzMf>>l=?C(*egjsFEdZiJ{J0`db41q_WX1)dl=!q1*_z<^JJ`C2 zXe{ALSq=LhSH^VJ{p=i7cl7Da%bdx~5-b#sA<|Vy+^56jiQz_bnSmnk7PcWMClG6> zQUlTO01OQkv0!sk$PK|xfY?4q1UQ8U2zH|)P#gi2cLdP`q~ZuJg?+8@f6}do4bNm- zUr6z_eMr_~z8<{OdH%R5R~}F5zJk~?7>^^iK2*T==W+1!Bjun^Wg0829?Z95TDrv@ z)3Mw?d+pvb?0khVjo)mhCdRzM+1h^KX)-!}e@$<_R)cGxAE9nBy(U-r2I(DvRj*4YoC*+Ky+YBkL&az2Vf%&R2`=oMKL!NW5n|T_zS4 zCdlLLom|x6Fu|J`LKD~aJy0LS7hEXYq78@K&pjLV#U;t%cHj%kwxl<@HMocgY7KY- zD4Y4>j!aNUz>&yCAv*UVkPqNW7!&mu8p8iTfdK3YFc}VN7s%)1=g^7)yY>V+ImZtf zMwx;07j&`1knxUTr}mC-mOa3ocpsU#BHxF&8=UnEM**)w6)s?SU|!LI_mHZn_-L53 zyqyD`v%QgPUVEoBCB~QO0MKY4Z`Fc-P$U{AxDZ`@9fz_(<{s9j4_jOyf5j3JSR@Id z(zSh%^Oo%K#`h;E*uVTc8(y8G9?m8i(V+VOs&Q$+l-Tg`+qLg54G`GqqpQ;Y8y;{>!ElPk=I;-sw&J-EuLZw&k>bZl=(qkr5l+lD9UC^*b*$;6j7K>g56VLFMAKi zgf916KZ*~Em3t+){y>zK$>!@2&^LGY3R}0>kq)DVuj)u1`}u#vY^Xi_M?amOG`q!G zMw-!xc?N;bzQjwb%xs1nHY$3RYsSnwXu8ejNDP^ntDLY(WH!4f%qEM%Y^F_Oil0rb z;k+&1HGSm!WAec;e0!*Du_R_Q9Z;DJ4;#;9UYXXXIVpNcW8|3{Xy>zH+`*nYj3sRuko;YH6& z7el47oSu>ck?%6Txa?;4dFB2-oQ!B!B+Fq|1j~_f>0f3zZVx5~JF%-Y} z<*Z?EOnVtRCbkS>7BCI>5tOC6b?%=%WYD-C!|Y~#XMDJoJCsKZRO#$aYMu9|_{Dos z{NnTInch0Ai>@mTgU2z9Cru$HrD2KY7Ou8~V+hx&@{NueYuPP>1qA?(CLQs~?FK*MOAh@P2%QdIH#pPHJE4MPN zD8$wu@r$EIJ|;fKs`|w(O6MP?`o$+Y-h5^k)WasC`MWVIH$2ZIRzo%CfV__o>Q(Ca z#UBFIQ?~V&!6%u#Y?tJYc)xE% zCaVlPk16QtM?>craKU`Rar+$K9o{CfVrNY zSC}yL;f%o&VjLB9Btm(@>;su!{1Dh|*)}D$)!*cG=A7-i$8%bZs3$D_NwMHonVLVD zGSIw3Pc7aVIa|kt?`V;HsG$KdWp!jO%*wDZq`9(#c)nOy1zHc9r+^3Itr7-^BYLkoUlZ#ABtu=pT{9kZZ$#QvX;#O7x*8CHk;9P1ljP@~!or>1jVt#$6vutg4JN z$uqpb1Ta(Z07JbvS-_-h*b!^`BLSnWu6jD7CCC1GshJ5$g!O5}<@3}I9dwCL> z#Zw{rK{kcbe@Mne_4Dsw7wIW5eCe{zo|v)nCyBtVGW~!<8OVM4bYZclBYhQT{=PHD zd#}pvx2kSHsM-?Q$Dy1dk)C$sYsJ+wNCjITV-krYP)|MkO!rm;CV|H}#!$aR^MloZyZt|P- z(TJ>{`?r@s%2a$POr>G{&d)+5Sq?J;eBbQ4a#5dnX_c8uqvUI65-#-w8G_#ToNu)t z5vm;OB|2u68y%YgsAS^PV&=X{)zbTx>{jC>fy;^hMq3{1oj+<0} zzDQA5j!@hgKQ|%Ue5N$9-E5%UV0z@{nsSt;3TFwNJ8F8N1KlO@weUkn=7X=qF#k84 z1*LEn#;c6&-_{Oh#0yq!?LO$%9%8mCbC$?Kg~%JHruXUPRf zm2s9s7uSiGozUrI@s&R*2;3^;EYzeG?&dMzvWdH&p*Iei047QM!*gltSrI_!oViTEegSVHV?Iq?>WM87aF&!$UmHv z25On%hX3Sr$bKnwUFh_2)EOtOgMW(Z|A-k5^KalkDH~Y?FeEcUXHpPl?fuVV&Ndcn zOU(R)X@?qdh?Qst?#J1PoSzFzb{({>i5M{}?~Tk{>Wn+zc>p z8TcNo>%G`!f~n)~Mq>`F3_kNg4l}>J9HIfgLfV4?M^f2o{l1n0M{iKmb@!$Rwrlip{Bf!^WWZn*ZlD*|QH@$aV z=Jd5)Q_C~>Z2P+w#N^as9<3tg1?a{cvQGGs^6vh;0QR4H(LcgGps<7gq|D4Q^woFxT+0x6m{^_w{10(_;S4it{+s4WHy-eb*{ZC5>W}L@d{#_vhXSh~i{d8hHzCGRt`w@Meine$ zksm?_375;#kOr$RePP}(jdY}d@8wiciRW)XR5tHf$>kr zCmR><)jSGKk9zniw#Kd3%*~J69Q(4L zJ4{`gUfEjPB34^uy&}nI+n1=bZ%d^#6>0hgAPgBz{}}x~diSP0n{_q9FaDDi+Nabf ztpvBqXgZNH(7jhP6EoIYxGj2}6&D`Zg*?b!9hx=+1B2>4j-;12&=0wwcP-Z!m59Or zC4R7dA1Ep0VJ$nce)}|U9;hycS|j|2JB*<~10>HaU2v3*=Ar8dCK39I*a3dZ%`0%l zZ+Kv(XrJcDaUe%zd)bRSw5Mraed~hnA<^ev?J+0zQg!X~`^&U#CYQE3MeXYqF#Trp zKOaF3KcgWhEJfgx>@6FHe?8I8x{2Mw711$g+V>}!r&`))gYOM%>R#_mj~V27p?mlw zLt@1$oxA)y+Gn@Z@~hece3Gr|jryJ9?DvN`ukvsFX;|ZDtB945=}EAh2&-c(Ibb__7k0={*0T-zznUcGPlr&d!QdwBf}kI$2YO1(1jzbolKAYUmJMq%eMth3YKG~H;u zwdm#NmCNptX@fEqg16-kLYZCiObPM^N+>C;>NYl%7%D^p2DQrK}M(n_NZfIG?d z+1*EC`gzA7`kGN&Zi+{rB(qFpRt5}FOYhZif#+yRKZ3;p92Q<7%c_R{FKN-12I1h4 z{fyt@8R!jLAYmVLhKNzn=nM;mgV6{-2=){BD7SyuAuTriV0Ne&(XtbQ223JSxgkUz zP&h#G6V@&b`~n&SK>Y;%!=(VciW?+VjSx*&Azt;t0>vKSB^1h)(bz{PH+1wW5B?AVz+EwR#h-EYu`ZxzVa zMSS5-AzGmQh8XcYCchjD6KlvV$D~dgabFJmIjym+-KXiz-R_^7y(ZpLEiu>U zc;T?+FG5^4n;o9Y{&u$aF9amlxS%3?mi!ShM`B*;WQhU%S!QVmgHN(mZE(RplO4Rn zdX~9<#IjW%$S8bEh*(MsT=`F>fa?9M?pbHEJRBlkxF=`zeVO&AR#qNVaxAl~B9CCR zpt%fms}ej`7h|Mkl_tSMAuj`FoP^_NjA-J8xX5InUdxuW&5myw=f<97&a|2T%Iocu zm&6kMx}-SsCdSZ`YlKsa;u^`Pn31Wo7NhCT%bYd}J{=glrgIx&bSOFHw@BO(ADwKt zhiJoA|L#IiS&NDg*mVii9F}{oMZYxY``SBxt6Iw60RY>YLv=rLq{=upCA;GFIdurst%#% z$bJ7y=_Ky>$E3NgBL~(mI{HIVi|YX_9tRw%$p;OV@XxMnf!s$evd~*zyn`N!@aQ=( zAAGU#8}Y`Ius#x+df3@xip7t*(3K*kW?izIHFT2TBmGJu*}WR&PQ6pxC979@?XT1O z@0GF?%7m0xZo?Sc017S9#!m2fv?1Ak5o6e-c=M5i)hFG(*80s8gT%H8hX-pVd|y6EBJf)>v_mOjS~cbY~nknb2bWP*zq9GS`=E&( zX_7$61|GIHY;Mm(8Lq3o)U2^(P@Mo```~F?R3;|>2|pUe0p$k_5%CctaIK$25+Lr| zyEj+J5tEJMKo7azAV`NDO4mCW_sjIgTXa6ZO>&ie8Ww)wfLnZCM;6z!>I>PA)V8#^r zLgB-=Yj<(K5z~RbUUE$1+J^(Av7nm7f%ZUuai|z1r}o7Ruz_;o20ou5^!JB)w7h`9 z;a^gxap+9>mM@vTt(Hf7|HJFa z(MMw4mcBpQ$6E07kNI8y9glWjV2;bo-X7qS%eK1_i&~`cI+C$Eoeu5Tqyg>+ViiilSlQ8?dyHJCGj%qxCQT7UWzaF zquH!Go;S&-*6oeNQ04Jx!(PlXS`HO|dq3%3ADcX64ma)1i*&iUmdT?HcL?7Tsz=)c z+wT9KKl?@7en;*Oe#w}zpwo@c_4mf81GOMxe`rWT4+-N(oo*XgAvoea8tAtR@!45T+ zcjMP{%h7s1I%~37pjw3cAM|IB7c5@1s{Ih#w5B(v+Kn7PL^b*`RfvbY8b3PS>0Pu_ z?rd@0$@ga)s82s=c2J$S_I;i5SV_ao%z0;((hqI(ovj-UJ~~8Q8-7IGX3x`d(9iW6 z!nVgg9CeP`(ZAcVm!@vj^n;Wsp0;?q$GT&6hcY7W*K5`8>Pkn|=*JA9nrhGV#Qg_s za&el~-AL!^`I^_&ryt&w<%j3G*LB=JUf1pM!Kv#B`Z)#MDl%b&&iTH~>&s!M-64rz zZoaH-Sq}P1nVa5l>x>7k8?Oy{xZ~M&GSNge!TEp6e}J-q^a1t_>87sGfNWjSzJX~E zPPk<+WVCtt?(#R)2&fNYLs5l#WYjjfG-S^1p+U1=gq~U*Y#Wm~F0Cl2R=jF7WUe5@ernzRn7>=wKCxrK{;?lUFx96a z&ynctN%iemtHi^N+TU1hqEv{9cdm|Ld2D0M+Bj#(hv3N*%0WZ5eBOLLvwSW+Cr;1g z=Cd5KTUM2zAhK+-HY~H~HoV1mmFP!FP(P?`O4|BuJM2*XyOtNX$ORkG9y5KU>HWh!|~MMr!1HcquNARQkC!u zuglHPnl+M9+6CX8K#0$)VK6bs@L z?d7Y3_yUl_j{9r=>LC7S3b`rT)oP&y=DXYa2S`F`JS=~Y0Z83fC=2%RpueYt4bDE61BEpO&We_Ql?4TOYv@103)847 zi55Ka2c(+9oKh@_lbWyzvPoTdf{7>>Xme!ZA^3xZO4u+n6(nvtis1=vSXG>>5Yb@; z@+F`$QhpQvK7DrsOZ(GC&GGRA(0X%&;F^tenqECm8E~&bM@ELKJqW*v|}oZ zG&$Eof%Nxq_ZANv{?dL`zsGClbgR={Ez*bf0GXc%bE3+hmSE~D;Wcw*(-*3|B*o7 z!fBd)`{rfx{L^X-kbzU&1N4964Ends0adCrpy|xyi39lTP-W#A)Sp$U%fL-KY4t^K z@SKvXFMt;mcbytSho}dhs7y4)l2&05U#nGxVTvqYCLgxHd9paUgB@zOxT()K{qz*F zEs0uH7@wPTK0Kq&Mf#3ecK2(g-sn%r*Gg}o^zT$*crBG`AK(~tTkuJi3^C%(!Ph$i z$2z6yPV>*1u>BCR63|ah%~O#7R7w@bu<_^8hhE8Mt+8BuX4cP+Z~oNE{?RH7F`vgp zMY1XkM+^BSJ$P34dkdW;*RX+KwG)_E$j+p{E~$Ke38f0-B1nypC6;WVI9Lz8b~g8G zd(UojYx5i9k{TW*7FdmB_FFayPwHxTI<0Qn|8DR%9|msNBes;s%^#MXblLSIb1~ytSWHhC_9YI$7LzCs~@Ol7p}fBaz20UDR>m$h*E z_@w30gT&Inxt6I4174`C3d55l6#WOA3LzQY?+)Uewhr^!W$<&1w#r2qbP6FI-~TY; zOwLBTdDlPQGfQc_Ontg7m=(8t@xa42tM{~@dghpY5J9&^Kzzw)A)|G8bdK1-UdFR9ZT(nBE@=)d2Tb;w@Sao$TVad z-5B2Zi278Nlr>KK6kW$=`?KSFa~kPhC8&s6kI}G)UAOu*_pw$N+YbOV=5I}KYMBnXJwATKD#+~m5|Zrhdo zz>LHibv(*JKo=!e`geZ{+|q+}7jI#tk?m8e1OegZYvt7Q7^JnIUbp^T`{+fP2d$^Z znySWt6l*cQdcE44{n5~Vr%wQFg7B86`t%ce^qldz!W#4y?Rm}x+x3qrrJoDCM-|#X zV%vo0Zgn(o^N_T5)zRT~&mBzua52s%Z};Jax9{(FCT3nuKYWn5R7!)+V=D&@-rw}L z%bYyjv$Ln4^H+_2EELorvj!uZwVuDmVZofHX-7^Ol|z@F@Z@EY@M8fh!GFNl$Pv5S zC{=@eUB4AfxNpju8N28q%jg`p9Q=p&qD4Zdq9oUajduE7U(a1zmFTDP)u2Jw`)}D~ z5bCt*&MIv$PbX{DsK^qbW-4y&H1THdPnvEsY_E1so!*G_Q>fudFhAYO@1I4RSs4~X zCm1F&a|tRsLs6!8v%+o{GYQ0Bve_DQva!?VnX7^y-YgWv#^LPI_vuA5mRiYwr z)-GafRB4LP$)1v|11Xy-MEsN5!|~YE6<~L z_9MGtj#Y_-DpL{a9>chHdPp*B?fljn9gY}_RHGjd;G=5NiTQ(X`M284Okbj7b7z}= zYhoMJAfS!k!+#pT3bM^#l=0~G=YAWN63|P;=U7kuG^el;J)g$VY#8Mrpqcr0!K^j| z=}R9-G}pG!=uu5TWoxalJEl%ezjfC3>uR;y>~r?ceH97FSV0vsHM$&ramWhR?)hhO zbaw7KtUdv)Yd$h<|CYx#2?itcwA+MySE>qiZWWMK$ZKaCGi9M;&IuE;6^J^j^x2Rg z&vyNC-DdZ^otOBywMJDUpvqT;Hqd(}_?p?-ZMd(!IM_exxr$_DqR^rPX_UWLTX>$e zQD6I{&9JzE>XVV3(D?YMIf!e-sDVS88FUF5SC&i2c}R@?+SsMcsAjX<58^coSCN7g zn*_DjJ^kWVM0bZ>#!G!XXXTSys)i&xKmB07*u>Z|b#fQ`bEmqH+BDTCba-f^_g%Pa zU1mC8IT*$MSRP5{mg2bW%aDPrxFru-JRV=V8WvW8W_pcc;KWrI2Zr;wYO_sJc zDiV;Hf+`d%KG=U|VvYZ?cNK6^Y;AuiMNI5=u@h+&i)C3F771H%fdy8VUEBb%K*Ua@ z6igHYQ7ka9y94uD*Y0a~e&Rkgc3!7JdaTY`)I^;Tor4=n=$74W*& znKN;{=e#BnTWwNJhybNd=rC2CSouVzzq~&3&0RWxx5w+!{KR)HwTvuU+9A|!`WB5E zEVY<-#yfdN)a+>hoPj}N&6xq{sS&Q+P7h2z~>64teWx+k}{ygSXw0BJUl*`8)ToxL?7-2X%fu~WI zSv;-OVN(OK>jH;cL-OKSgbmDuiq^z;Y~6L}0nf#s`sJN&z45dzQBipsL;jO{JXxkE z_n48r@VQgp9uh4Hs2fcTUEeeJ)0sY9+-6=rnJwMFo&eNkAcoS;hJCu`W9+;2~S zefw0`D2Bq@I~CPxtM9UN<;titqkf*pzd92F@~bz(HKD;_pV_C+x+)yc5fLq&&}HSG zEp%f~O}AxTY(3JK1}&H?JmjV&6?Lb1^%?0oZBy%JITxONzA9>78u3{fP|?ZBJEdd1 z2e{^E8mHXhkB(F{$;~TweZW*ZPUYu-a*z;yC8$ND4)aIG_ zRb3K8(5ts9FR#AHD|oEiQ6s07kNO`tH2KgA?I_5~f<{4?D%WcwY;e|b@$%Z1o7z8l zhkpkK6trevlS|WPW;pI`V9GP;8Q)$b1vNCSv^J~#XHH5$e08D8K%x;j6FJmfuV{aZ z#)Z7)=N+mCAD&MDFzSRHD%Vt@jX%Q%jW~DHW!b5S#pWL>ZPJp0ED={QJyjxVw{For z`fMJ?U9{)S=)9!*bC^?5)nntognT;VlbdgqVs$|;0H>fUlwDR2pJVs+ZawkXyWUvV z+HN+nHOhp7KBT>Uzh=lT=fYK$j3?bu1nH6tf;Eg05~*+u=yuK*m6tFY_vWi*n;Ro$4ZOTpcN}=kWo#nRmzN1C&34{hbmC1P z&xP9(o<(fGS6i2)QaR^-^bgw5{%Mkj$D}$vR>XMsAEhM?(F4}acVAxgBH)%=p5M5- z7k92RV@^X}E$X{WozsjnFL#Bl*`X;_a2lfSc>J@V^0vNphk7l~bg0h#k<}0%jtLEI z``OzzIBJDw_QcN(kKGaO)+HJ$PbYtZvC+Q5Pmi3E&Q|%BmACP!Rs^I0Q99P-j?>={ zgB)`b6316MA{$vOqV&9AvPpGM5!9s824|PNPK8U&p3h&0e?D~pXL6+vh8Rb*iAGn+ zfP^K7@W~_4CsynTz} zwrBRf(4!ZOj*<#wGJsyH8XF$xs*dC6#eWQT&F_#yXuE0^*fUrl&~Mv{!n^buSw^x5 z;#pE;5&SB6dxw8l&CsL{0I1)Q6ln&)zvbW{2IgU2JoYz~gIIYpJ_FR=CM$7jT@Ag~ zRA+@19)>TaoWku6c+(#S`t&;(2bE)j5CG3D0_y=PjQdlVhF%x^pJN(ax0k|aq?gu~ z2fL{Ij6^>n&}s;N3IdEBbQ^*RTWIGY#F#A-Nn(5?Vqbw&CIlh?_y{Pm!%oSFAzLPs zga}c1b!f6EQLa&US|1|W`%4rcE=)M?2!28k#s_%zsFef90?!9gV`uCrCR(ry|MPtH zJHXV`d`3Iu5QVeo71RGY&VqnvD(j>;m2`&USJKOm%Y(=M2)|NSILE+GAXiAmsF0Wi zKDf%Hce|FFu=#o&k2Uj;4nKDH+Y9_tss}%@&?MaPU3YRVEs@ET zeOx*w2_rs+2|WICK@>|S93v=?JzN=hxIcJy$sR5pu|sFslk7~E(rzrt!@d0Z^TrKV z=ecYjmk=y`-jJwBEN>6j_)W|%&Z7M;t5T9pqw<#$6-ZhR3r#>R_i)#De&O2v!w8?W z5wg(gIRXOQP|JZUJlwK)xRzE(2F1mtquMYML@+k56hvCNw`t%`)F)-hC9GhWs1*vc zw4^MVB3LfvhsfbCF-yP?iC{r#L~?ssk^GSYnK{c_A(O*f!=(bSaV!N_@Wre#0;!}k zi!TlZSB++Mfg8juS%gF(3Wb*nK#x#SEGtwPEtCmiepqlU_FyVGES!p( zD^1-jrlZj4tW<t~nc+5`YDXMe7|WP@ofJHNenQuB_g>n zN-Gl`&AceKhzPO+Fsx$&@F$b@!Kod7=x|m#%bP}EMdVTiNd2lXi9z~0Mn3+fc3NRz zfm8qiaLk5Lv?v{Yj4?yt6svvQED+8Rc#l|OAHh@5y^N8uLKIS|KrF|-NERnTB9RGL z?XaZ$cF@ZWLH$%#EJz__Nn*q-xgZjB{FImEazZApSwS$IK;;s}4uKT6FKwLVVe@j7*W{M5LNPZ-hgp2#{o8g;1Lt zo;>L6HtRXdEl&>_*Encp470&uSS$oYLL`v^g3)p);L%Dqw8R4=K5zk=09H}fKrL&q zv`366OhiYfVH_!Mt~c>gsSC>V)(H#79Mrg$_ljxkLe#F0HI(s&oxx3c7-w) z^|4UL!sIB0Odu`3_6HWw#x{Ojyl<(+q^%H^!xg#_@=F9n3C2(|peP>Tta?y)wUTH&1WIK5xL)yeZ2@d1?M1Rroig`kuRWQ56M$=pD}N+DeXYqMk_QXyt2 zm&_566v?-e!W>k-XwCn2WzL7gZtFLtXY+0zBH~sRd_g#0f0z^UJB%+HUsxih6ut;( zVvtqzCE8`?XkNDu=hnF};)}W@zCcYIHMW3P;CLqv4ysGE;R@()Deh*4{_M4W ztz%*5qqD194ZWbVrc;GS!q{q}F@+T}g2EJZoMuK$Q5(>!k0LS{WQl+Zib%e6B&h!- z*-fZd1hP&>IyeNt|4?~hIJg^v4S?_g!K#l!%0( z0_olOh2R4CNOM+u+|yviKzByOmxdEbD;6D!_gA0-5=(et-uR?RyhhDCq2na$EU&>d z3V=3U%J3g9}bW!m7QWl7Chk!zQRV1urR_g?A zRWWKP2B&~OgcSzT!!X{(qU^Hbxdz5x@wPCosGk7(HE}PkP>|&w#=0B7pr1erR2E+Zv{Gj@ zixOm8N z37M1d#YmGQ2Nzr^%AO9dt+Tuc4QMi2c`2E)60kE>ds$SZtf3BFAF^T|IWKx}F>&63 zRUh%S({eA1J~3iD2_AP-!KPYfL3-7{VkBt3hdPd=wldVEal@KC2_BNDAEo*EkqJ&4ki^U9Bm#W3=J2^&9N*ua~$2(A9X{C zn|%0@0yO0fKWvQ6!$%+pm0`vd2lR!4337V)DPNHyTqwpa!*W#t&Mh~WEH$b$tT$*< zoq29M_U!A!UCU3wnGPnlxPX_Iwf5qJWKOxOR2a&Uh!l}x#DI;4fg$8PG6h_w$~25J zscW0lw=Oqh#`jc{*3*c+9f)*`J&SawK1alt$*@Tof~5oyZ#X6!gsFrIABadG-w+^Y zFyLhL25=7J9)Ec({NC^aq_%GaK%?xB8r#TE{9kQfsUTV?hyiaek5C;AfOI0KU8_$x zUThJV2P6{|PZPzstc_ob&IJsn>>lzhhwP{R1AeJiVxRk~aHCU`*^~0xpKyCOiD)v@ z1l*71D`MY7)|&jQgq4k(?RR_9uof;eS(4;yb6yU{zf!rctO=kfuKu%=EfKuS2{NNMd0lG{ zcip!~s?W_EKH2q2-T7Pbbx>bdY<)4XKZNLR0x7Ejc%CY{kWVooAEX?8TG#5X%f{H3 zZ9Y!F^#Ol6gHB~Fdr1>(UijO618*_>UcBVEu;Wr^c^`Z@ zCar-K{khY}x9jSj8r5xghF#N<_@kiK#yHPMf=f+fXQ2$TK&Z1q3O*rsv>-%*ic>v6 zesZ}~7_5*B`~+dNJl?J^I-S}1+S+T`$FP|6_DznG=ISho$nG)s50OX(hzTaX;IN2^3WAn=T%QDCj!6LcVweChaSwrj=kAfv zO~X!l3qz!mFo1)L|MuaFNk0v76i7nOpc^OpzEWW%p!H}0R{V_18K4m`ePaY(0hI_Q z7(i}6zEp@R9TQ5fp$XVr6U%_kfakC$8Ns}EUx^S1XDI?(-yk-o@9Vp-m-BM+4L=X| zE*P#9D!AaoCN#j8FOL8mCZIws#Y%x2PIo*B= z-`_FrLsyTzRm?_g^`6iWr&|}waO)OVTfeix5s&%3JJ&KV97pt_VnVm_Do-SCPriB0 zUU8*h+Q7o#UqH99V0l%7c)MxW5ivVPcqR7@Fuiqj9|1fF=UOVdg_1=R-THy(wK$wi zp#MJzckrOS*NzE}ITtoaVt0 z=0lsyo@=(9>RG$s_E4N~ivSa=h{3_rCLmCd&&{en|Ht|3ZHd;POb9pSbLQ6IB&f-W!jrwrEuMqjp4O zgHUVlK06d%Flk!o7(Za>eY1=g=FEv`>p;(&m5xp3O?s~1qD@QRCpZyZpb*iBwEZXb zGP--sxVq|gH|zUD@!^;dk>mJoL#r1?@pex-)875sq%>V3B53eo?I#HIW$3g0N*(Hb zIdQMV_%(Oo%&f}W{JLjrM@6=@mf1G>OMBeuDQ3?^@*cX64=!R(MZBcH_w=r<@40*1 z=Z7`AMAgNqh}v}hW{tAg`xTOB#IK4nDMm4S-lr@l$sHLA1c+_7Hk<_~ zI|#%J%SQ~w_6cpYF?Str-q7_=X6tp^pdA6(A-yP8QST}v3l=|=a`ps1>z2%$+le^= zxqPV^*L9bf^YWwZ?{_?c2yg<}1`}*9(8;cq|zA#cz1_GK`aI01vC(dJ2 z|0Tx5Jh~Fw7}_}xf2b}iPa{6<>F~5e2^?;GZ0k{+cB2|;M?dy7`dMI@;j+l$B5${U zO#Y79A0INOpC2jTm-gs%#(USxzExiye78d*{rDt%>l@g6yU!8z^O~UecC8HbGyLL^ z<<(k8c#+Vb zrTfW)>zDh)TeID64(vC9ITbZNR%=y8{TQbOtu8f>u`^4ozOR&RA{(nqRHWQEEgwV3{p`)By^WI{ldfLlFL%$h z)=m%s7-y;_+w^+X&JowQ8}$YPHB?to%V6LTj02^OEqe;qdkr- zUD`XCy>N96p?RaLr^+CS_ARO0;cEX(w}S1r-1c@Dw_lfNs5~tp*Fw*;-?k<2Rv4yd z2Rz^Gq9p-Y(g^5LwO%QABTc+Fy-rGLRjW@lb0O5r-0Y#e<`JL0{+oK7bbjAUBLO*` zIehHQ%(c$>Z4TCC+jy3RfKJK_SK8k$bj>lUVRnDX!aEfNgp?{C{_)wGQR%H5dE0x$ z*P8RsE3TFVWJR-umW{n1F{F#V;}Tx;PIqo!VKXP7xaB=g`0QTix#L971$*uf%-3iO zxnG^Suw(sdUYU~zHfmR7)Ds_$i57d(uTKHj-_teOX&OJF`-qB=5CP#(Ix-qw*Z(MT z$79!Esm0}6se`m6BWqer=or#A>Y_mp@4VGL^v|Epna-Sy-c7Ijpg{tJ8QU!4+e7kRuY0~xK#66`;A?}FFVRxLKQO!#sIf0Ry`)G#Il zAbHEj6dJ$q+}e$Z*lADSi8bS9>d(@Wf^2A-%z04ju1>KIUg=LhPi}r9zZr81>ig`@ z*aZ#7daVlUIkD%Xz4bL}vV$qD&R)2<$z$@gd##q7KD@pR6y(l&XtHR-clR8F+dDn3 z#aikT1(l~M)UE2=ty#B^d#}ITc=EdA!;fl7K(;gj+Lc{-#^dA(PAd;CY#l3IJDWKH zd89vEYWRMG`wEA~Ki1D0+*Tt2dGDOsVef$loYie@wneRSAW-a?XfmQ@yd=00xF#;wCwMTkG=566Un zKE2-kvcsxa_f0GL(g|_j^mK`U;64}zqgg&`?CZMKQQL;PIPM+%#J|b_`<_}7kv(mn z{@v2{>DvS5daXXe8^XDHDxWzKDdzRHYt!#Gck|mT`vYbS-Gmbnb)WvJf22{?+x1TK zU5;IhcDE(`KPE(U;#R}7Gnpq`W;-@AOkDY?vMv!3+^0vAOv}p{Dr7fjwf`RNxMSa& zi(S}Kxt3Jaji$?F1H10^-8P0ZzmD0AwHb!Dm{ZZWq0`RZa;fRKIX5Xk;=piMjk-*6 zXQcD7MhRYvdYH5fT;zNMAC3tXU10fD&bl$#eKJ2T=fI$9Iu)TVPh;rhj6vpxZT7h@ z|Fr$I!l;$D)^vB87`huDz9*~6OV`3C+)fJ`-LJ=-fSRoon0@Q=*=Nb)k;ARet-P#J z49&hLnpfZNluN-IqnFu5rXgh@pmq~YmfSwj&UHt+!4d!69T($|(g}a8+{I8x-Kg`c z&f2(aSpM$Q_otyr+KC~6%tZ}PUq8B|)tZ|{Uh6YDq|9D>_#AU8+S1eNd-93%&Ktyi z42QSt8m>_ct(!Nw<ofjlCi@Fl)5fYh$D9N383OurC7vb&F~{_WY+P?v_F4_j&fJb{~I~ z&WNEfzDNeD*2>4GZk~JpefDHGw`phJc3->oQv)rj$ch$Rw6Fhj@0nT4To*j?n_c;C zP(S8WG)1=9aEbq8UVit>kCQsI)yKsUHMqFG=kckJ9Ibt(aHVbTKbR;j0~HPsvPc?Ze@iYos8*fD`lXU;W9>=j~gSJ+JS#GEh*p#ioB5 zxzBLjnChIEU^QN+6d9zTa!XmfxaRusBY7`5+edKD_FS+vOiK!~L0l=pp@+3*AdjlO z^j>qdXLg?rL7SOV(Db`&2TwbE-+8go95LS z)U*r~^lXi3rGjyrxCB8RA8Xv#^Q8NK+FIEtUgEw~oo^-3t& ztR*Sg(nu-%X|MH3YtFl6#(8A8Uos`~!5Gxe@!Ajd>K)?mzGBYg;2S9;YHB2Mbov$&QwT*2(qDvGtu^I&P}&q0iaVuz*d#x*p7K757C;8lq=Y$Akyo>=gTt$Ks#Uj%Oc>CN>Wkh@-?O=S}v0jCWi& zx6`I3FJ9coX^5JQziRcib{)1kc&&A>nbdKK!-_J{(4?S^LIdsr_Z@}LCS95r|4Em` zQF%J~oCl}8Qk&;_E!e-TMbGW_W3(b5M7>0pm324z^_E7wDe@^>XU`BCBeel^fV((U z02>@({|wN6Rc}U+YYZD&=G%KI3b>n>9Y4=rIr=gF`P5tckt_ev=jgi$L{WiK5mx4l z*T17@`U=S-&?i>x2;>@g^f^Qwd@TGWLq124OW`8{z=5h%l3u`$4`K#hoIG(^Yitl4 zx&eJKM2*2vtm=cSy(BRLDJxi_0NtwjM1464ScZaM4@!QF3F%wBPpgay+RvbfL{uAU(rAJcl6KI z`wh(^Agq##=nz=KPvtjy;XPx13k2XSzmDGk29EM+TJsxvb7}dFURYkiZ#Z%V28}@o zSnQx72^X^;U!)Ky5p!Vlp#nP;QR6pjq&`Kz(eVNp@moW%)?Bn>7mFVn4FQotSrSzB zk-@+rNRP4=1^x$ByP;-Lu}x?pcpC9|vc97B#iQ5Mmk0mg;3U{|*&?7%0UioK$dm~| zr8hu3K}i*Y>>!40nM@KQL?NCrV}pFJz6#=nO4mT=hw&96IclvaYsHD9D5WDLbb<=j zUBO4A~6(u?fcM{%o7kUDpDv$DFP)H%qv6x z+)iP1I!b`f@&&olu#}837A&#~3yX?v+k2Vk)y7GKJ+|sMju!4h?C^DK0~TJB13*_u zh<=c#AQpxFB2XX*uK-TeAELj9pmtC+_^Bd4%X1c$h3_}J#_~KPi&29IWUa32}Var1u_|gyHI*U z@Hh#;szOC;#PqdAYEyWZj-H z&I%)Z6RebShzxpGfqRe2DXb|BATI+u#Gb+wbaaqEjwx{6ta5ir>_CmN&;c~cgB{dk zEO^%*MBfU5OHFh<(YHp?iM&8>D+4nM<)O;Hb&Kf0VfQ2yvrc%XEE7M9>$XZ%@pkqJxd(7E9(_^jW#H(o? zB8ZOBS`J*{ftFenLA6GTTYz5%-DzFC=^#doWD)9tl4Vi(c%aw_Y91)H*9;x%M`wkR zGF_#@2W1!}Cj2D8769Uj>V(pPnf^GwK%G$j=u$YLbnK$?;0SdmROxkEsk~0$fl@58 z3RAm`ruLt((Qj!<^Fry6RDT@n(7e!M)C$!LrQ%7q5 zHWS1Fjiz%ZzC(^JU4Ldc{wa0c3$?UDCQ~*->BwJ<_!K6Q`^yDUESYc&=s}Erz+ble z0Ck)UJlr2V8}+S8fmZ4!=tmkZmd>&#+1o3n;aAco=!WZ_xmgopoU&r}@AV73whUi4 zEnPD5q)O$2u9>*;wBd?wZb{PPSA7hU84k<91)Whp?o$2kYk6DtBrf`JE$I=n_pNY2 z%i@Asf_(@|*qV+V$4C&t;J8u{{X+i}J{QU$HMf(x@kxhO(^&xoBb@-8u9UI|H)+uD zXvM}S#rXkFrww95VFWq^-XFyXFvtTLp%fk`9U`tgn4!Ys{2i&~zoR3n+P0^qEwYHh zH+1B`KZ5oSdkHbLTAuFLK4H0OC%z>FzOfDc#s`r;L!p2lSytSwG$g1bx>z{ z(+I2x2H#j==rP<~Af=#N+9TnV&IDtzE}~a zrQ*|taUJw6$QrR5MSRdv8g-WINI-L?WV>%*AyoED{88agLcK-X-?!|Bm{6F9jwH%R)Ii6TP>#PYxg2VATnea30BY?Q z9cEK!B|t@XtTLre+q^qSO_V<6a9h7SP4UuUQ5kUqRJ`OW{R*I?Gm2W8s*^rBtj?wBjCZg@=cxOOgUf zR#u21g{?eeI_=!$x5P8~t9=dez$OGJr5RX6%umKDX-Y=1f;l`rWwBs$FVX=ma_OxV zJ7I>py9|f6faO6_2|(46$HD@6NC8;o42c_hQ!2cwt?bGUo7DCsZ+ncPqzPsaRbJ` z3)WdJQDJ;BHojCR%6#Z9-H)4v9}druCko^f}_Kb#7t__M*$en-X#jVWvqCkj*0+et8D zirRo)eH4+w06kC=#){-iM*^5IlHG)cBc=S1kq!Ev0EIJhLhd{+5mhi%`2g}Hcg_^8LZ_}W&JXDda$h?jn zhMtHbE@*Pu(UKMEEj1W%5p+H9GCWq4h#vx`tJ+^GnT0xmTU87gis8xN4`GE#q&QDv z8`rYpxd!Gn;&=OEGa%_6D&NqXQ|L6`fEFJWE<3~A4>I4_BYaBk2fdL9Bff#6o+lLw z#1Li&LEOp$L9cfGfVVCT;fvaJ23#`|fK4l;pqM9uFK0#Z z(d-YvP8a|+ODLBKL}9E5zKj(n91ZY5BLu?m2zl}R1*b|HkF1qkDQcPCuR~|K3!1tS zr1mGJWV1@ZO;Y80P{IAK%=W1>($>du#U=Z=>K+-P_}Vep{UJ|`*mr^xc2iAQJ?mro zz3AtnrEfTiEBkc5(qM8UX2U}q*l3&*p&Gz)KHyP;KEaSqiZbO~WabkSRGJh*CfL)Ij)9lCtGc!~wnMicX6I5H1aY5;+{~ zWRy}I=$9Z4)-Cp2Y%=AtTdLpTCp{YWaAwAj@Jo>=MsOrN4nUEK2}5x}g;pKd=j}I# z5wkfn+by{yKlAe@v*Do^7X?&|2(<}S31Gh1u?kV35n|M;JMx_xU8l7OVk8RSx4=X} zsqOQUr2u>&ZaI)702RuG-Z4jKB>)iJh^0k^!3~z7>;|{B1yG3OlvH|uBSs7Wi;#F? zRtSi}KpCwpafc2pHyVg;nS%rNUuvMIWG;ZVjRc1~AZtSEJ^;P(kIwP|x>%*vf6xrV z&EY@HDEwU^Pj(3E3xah)jCo;UBB59SR5rvrMD+Ci<%&?DghIFO;wXij#T5x6A^n1` z!ssPnYf!^g0@YQZ>xo1v7leXni5$dPA`vLQ`U`>)eQdLt+}5ZqIK@GEh9!lZ17oGp zXg?2-Qy~H}`{2@fQh01yb_g z#MnLns1kuLFnS#eyAUzPCgvj$gvv1MiX#!rVP?4=e#%#*2p5X6%dkCB!~|RecIkk3 z%@?UQCIAkk9LyW6mdYVwivTnwTtgJ;2y~1PAjbYt{19-RlRzFL5QsSvks=bHMe6Aj zo{WZjpdGc&UXPSaf9m0@b6eZo^3Hv1S}U1fH6CYtxZC0a7GBociw~+UOGXAkv-s91&jzrV7p> zhTvO*cf)s!VdD#&>wtg-`}{cAJbD8-hq14}JQflhyZ|vIUYu{IM=+~_CDP27JURQ5 zv%2<5?C3r5YS&|VCkF`e$-!hF`dea;E8#_J8uW;Kd*OpuTHSBg^v=f<`@rS?qP2Y^ zz-RA|g+hMf|7!b61<^u53?M6c1fo0&x~z!=a@w^e5k_tNT9`@!|0x^4UG!0kK(MNZ z!7tS(pP(4FBlkjU?(T(Cht*46o{X<*6L3E@GlcxBgq3aF^8K8yrdPa{I&K&lIo^$c z>?rq@C9@%E!(GXTy!|ERBAw7EDPa_#R91%f;Xo_ zvH=yU)^xf5_?=U(wQ?;yloI~9yNIAJ^)?tTx0fY=oMFcC$q_TWjM?_eJcM zvSCkC%F-3oqvqbk{X3l9QZ5beHfrVF-8ij5+X&-e9|^9TjGcutNdBSD3Mmke+|hy% z1*)|40O=9U^ZW#1NDR1FweWSGIfv&i3HQ#}y2fD5+|$CBRV;6IJ6L@^O7qYYR-u!S}+1oQZn~ z48XcaLgyVj=`9SAO2R<*ApExvUrhRGh@%e^vJ`GoAs}Z;7zwmZv;eED!euE?yO>fp z0@t9L#l#=&9@vjB6{4Emgi`ZhLL@H3bJ&yA8$Vu6Zt=Z$<_XVjlk3_#Hf`ETDNo2I zmHq$-@(gsKOfCfr3{)kYCX6*9Yzo<)AGSW8SNoaIHuGwGnsaP#;opV<+3L^!JnF&i z5a(^uUWt0vt^9GaJr71!k;18vVbwR!z3sC`&~QNKgtV3&Ewka?B)K1Z)5o@Y3r=jn6#v1l$Gu3%c>|@s(1D}~|q#=3J z;g22cUpw#h$hW@S<_dv;48@7IG&FR_1n;DvV8@)7UPA^sK255iA>b7NnOYh-lo#3K z*1=EjT_}kwaca6D|Z)KgC{jbWN>JBRE0KX~=KSGK296c5YMB zqW<3VWpN{%hNumZ_iyhUb>06lcW>T1Vbbt2k+s)+ca{tG#mrGo4jr0@9-fZ;1=QS_&*!7d~&$Ew|fquGXKbY=)2XW2bS$pM) zuR|R1M`>q%{Xe9i;FLETYQ5|1oSVA&X?AyuM%vMj9pXxnKi~d3IX>f!nb(Ya!|i8< z4(-dFejZ%k*I>|COHNAaTbGvRhc@B#bA@6D`E5CHr`9pCOKOh^vi4E4kC%adW-h(E zYvXB4m-%mQ+UIpUwp^F!hrWkZKGx7v$&)L3TSIx7}&*F56l9Zb?kE3YDYrd z5Fd&#;$Cvv-?+elT@dOxG$Hrk80I9@KKkLHEhhq<3K!P=oVOyV4NgM0C?xdUuwYME z;dPJcBkb2438`UO1`;|vu;o>$PX6H_PPi#T7<mTRr)%x~a)>!W*?V3& z-DtpbUc9SY_ogTN?8FJ`EQO$49fyBt5aR1G@vj4xlWgvpmVuzY{}nNA;n3qQyI#~f z6nCgC5xCR|f`Vaqdt0z`Q!a6$o3$g?wlrPjF)QC{c%$26o@qxxprr;CJgw@i{f8T- zrh8`C#}DlCV&PimBvk9JZP?gueK=e78~r0|lW2mI&;<$!Ewip%H)HTS?`6X_a?ZKv z6_tU6){U9DZ$kC&ycxr`|7|ly&c+|56C?z~;$o0U77cc_%ZH4{jy`bfL#>(~>-fCT z9w{-mv?3!!J$xxoFbw=!blEeJbynWAaNjYcHrP>d7l#TU5*7B(07Z-6VoQ$pO&?a3 zQ|a7br#T~{;_tP3-wOYT>R^oI5D@wteK&z9Do`pyx`U@j$mLNohpt^iB_T3mixTWs zcI8J!0lX@yplb}eUn%Pv%$J6M@NyS?Pl4D{K%aONl%T8Pkn|TSc4p*l1@t+@)u0;>NvvXyGL1=~xc61O1+_eeg>eA0rw z+JWal6^Jqmd>B8PFBHM;R<*~1kEj_F1D2ctl?Rjn+(w2oD3*ojdn6SsB(7i~YUThc zcxfzTg9w3ORGFCcEiJ|@#Kj?#2=&B-g)muN9CJV$6Mwn}?nnX#p6a#eJ3uu!B&$hU#)bhjx@hq|p!iLH;XySgv+Zyw86K({K7iwm5IHuhqfsM~xbcXckhF6XuEG;+`b!p|OP}H^=| zj#lB;dQp0hJNkFLrk{Eo;Ir-t5nR-gykP7N4hlM=DVG~R)&(3x4D1mxWwA$X^gjJ& zd?$~U=Z}w`F?kHJQ>*2$a3{+>z(qACaR4#sMx*GZ>Dv!C&06NQv$EyMbCCf}m@O_O zUSDUIAREvKLHVNiK^8m+`;t>xDZ0|rWdajU%QuB%^z{pZL`@yI zuOAD|{X{!IQ;Qd+U&e*K4;tjT-2H|3*--~ZF?(hB8U6hIgFufjF)9~K2z6`!UwgPvjFEH<_ytmae@Ua;-{G%ALdKKZ0ZrK=9u#+-p8kZB zlo_~5lj-Z#B|!sD!VA!Afz!%Zv!=Q`4!8hI`b9BZrNVFs zp@hOIks@3uj72ag&;f`SApm?v7N!t^z!^5GAhd)yGt`O_u`@b7vhhZ(+@oh0;Y;yL zqs)-B@F;UdTsi!|*H9fY6P}(9n8^;&qc9VH^X>@VgnlklGvnGW*?<@@VkYQr5CDF# z)`g5{N#P`pBr*~fGmt%?lD%~!@MyGrh7`e~^1#n+v$J2_lyY)j)m$`lPAh%|4^#m5 zDg8D?9~JwM2UO^;_O$kKGsfy2o|5{BmobpNxmm#veMUS0izW#kP}Pb3LQa4?kE#b3 zuM;kIPHsQuW_9mbdms9&KKM~k!4DPuP%=MsLjr+^riyLQ^Me`j10+{8|BR0911b~| zXCWwOmVt~kfNG%no2nOF!F4JW7zY+C3I}(DKm0b03uRtCd~rRQW;!Pj+g%m5!ksd*cdrubEg1? z4c&^FAE7FtgQ8NE&^*F~ox0A9pSoe=v+NDd3*)~V9u=IbhkwyutTVwT(;Uhw#5GR~ ztsi2`Te$CChTa0h56p(GL;Fg;D8MXK7T87??65&y2F#iShbzL!8k9KLN2o;McY1vV zBjE)NDmA>nUn95Rqt%iBsF)J;$^)I1S>Vf|1stUmQt|r6;tE@z3f6~c?b#=qJpKAd}K*c_SAfWPrGBD zSw~d%Ue@vP6!Yn=KH=-8rFMnR%9zpMYpOIGJTzzkJOowxdhknSVOTBNy6r&BMV}Ql zoGtdX6YgL(D0w9aed-9t!4sG;G6qoYY+rX)d%lTjUb5%7l9Lo#pt9CRvt?M4^x)zzOBwcd-^ z;=BP@3nqw?Q4s$XAMkScd4=PE_HOyP^8|LyzIo!$g1gPwv&snw@%P{ZKDnR5Ky0jup>_av{%N$%#|8*gme{fR&k zDEE~m5 zlQu79dCGpmzUD<@8kWhhvOtv1dMZ)NS$}(OO$KpMA!7B$~(*+ zg>vxWm`EXyxa!BJH|6=CTveTS*!l$p!EhkWd7??tK-qmM!8OwKFTx&xp3M9!V2K^!0K+X|%mKz*X+SXd5`rv8Znyig;Y_0UmW-rf zej`J7;ot0k8e~!BxGH-v7yy`fIS3>pqbXW*j?>IVR|9AJOiSU$jTySM0G}<~;l*B> zBZ6&6m3mtvCdjL&h5t_cIWPeNu9vJex@v|H(O;SQ z1UJ?Y(0T#1Lx}`M8lW{ddGE|XIp$$-m1?Br@7kQpx*PAdBysogh36&{Kwp|inhtIS z-y4nuqHAL)532lrhWd{4tj8(y}UX;W%#}EDT6jGc(xXz?**FLC_wuFv?L8$ z@&a*Cpg+ishSbm${KnUpB?L*Cpc2z9z}t(3cjN(QK`9X$frW1fBUHrKF!4cgz1ShJ zvPBpy6ba?A%5Mg4fuLV-2&`iZ5Nqh%5Pd(;ct;?GEfo-`(cv0~OZia|8i2OI(8cu$ z=tk4DIjdV-c`m0|SX^%c6+{2fIfu#KKGGjoOs=YXQPvRE6828ULjhZ$!?!u{e zPD4GD5?l64Do=ZaMo$WE@Q=rg%FWW} zW__5hk$xUT>w7lge)HaLawOZ5f0aN`WkNsp-Uq)L_8sJwmihB|aFuz4_gO(dAX~Mh zJ|+G4a!yXK_R@7(;=0?_y=^ONM?WB|&jaj9sf7E{9isx=R%Ni0V;5X@@81DoPC#=m zuQi-d?UZ9`+vcCLcJG$p1au92QPptQd%28X*`@}2Y6~jd@t7R?9th z4}QL6!?71L{%ZoL5hy@YSw<${mui^|JficZk)M6$Jx!T$Wop_9{N1$JGD!#h-c(Pg zHidYFX^IcgLdr&m_uf0;Og zv&Ue|m3FtAJK!(FL}=)JL+*TfB;;)fehKiP80d*icyQSyT2M97!{{csGdH`fc9%H7@JazK|O*QRQu zA2zb*Xj9ic9(!ZgoxMFE*sl!q^LE|4%dRWLuDb`UdGaFn`I8FzDV=+#NS|l-cJUc@ zx(70rU-^NjcJyP7P>Wx^ZLTkiyt#tCX!)YO>CHEP#J>Uq`nh~C)A&})I=l^r)12+! zbPUAl=M2T;n$m2nLCWT@t}7fK2dyn^K;$klkw4vxEAxXl<$C3aw=ADDp7mCj=m)|s zvdSwyY4N=2*~;6NyKg>F8Yn>zzwK$0b$2Ua&~-e~dW+`A1CL zR7bJLJL%zoDOJU$?{Na6b`@c{ybF0>(~ahBtJQPe1QhrGAiQ4+ns(V;J$(zlww zV;8*TB`tDt4rfkD7FpRtHUvcTw(cD;du!#RO*N{r)k9hw@7uVC+pL|6c54|Z ziTyPGp73odJ7LtKHP4@Oh}{>RprrEjzi;R{`#suv)j2a^R9;kud7O6iL*FSG_^NMm zt9qL~cV>ngEt&2`d{73etYw`EN!+RFoF(n-&94W3=4zy$C#g?t3Vr8sSDEEqtkGvp z)iTh}rj3JTH|kE}rX9OF_G4b*ef&`s^z$$Ncht5ioBP=`;_jJi8)6W4TD#OE4Z!{P z^t%qsO>yAvlGW>J>y-}jivO2gPlHBR+hn`j)OllIXPd@ryzgko4WP`X2E}ikDb8Qa zIT!D-IP*9^B58Rpb8+fDzI3f4nZ&~Eyy?bo#_B6$(KL0g#xCykc%HKZ&eyNrz_S72VClfk)%pTWl z^$yV@H~ihSh$alCJe^vW6c%2qlBmN6_nh$_DQ*59wT}5WUpGCkRr}1tu1mVKe{d@I zdtdyUQ(N8Ejdss8-2a@HzqO#&*MhYEW%%Z&5{`vln}67C$LSl>Q=3g0^k4htB}Eh9 z#zlFyx?MeV^CRhgGxy2$C*}kXEWDzf;IN{#-Tr6awGEYXrg-iNaC%lH?J^NpW}rs5 z9eMMm33ACJ`TMJ6@j$DEI1OE-c!afMdTo{``?_ZhsGQK{_}iUjprKnMX6k>wx6&u^ zZ1j(6X=X$dZkdep04U&_#Rdz9;@`8cpu|54LSxU0p9 z!8gxc99RbW>2&hL`@?_hanm?sIs4AHAYxoPA%@D6evUWa@7ynAsblWp8m$f%RMWD- zq%Eyu``sml&Q?=r*G$H9h-!m^;mdxr=MPeDItHTrci222e)d+ zYkDq?4!$HP;@2qy{fybRqn79Q6CUg42Y!n#*g;rTIzd0>Z3;CwcTe@#wY5aC+#tmrR;6P5a`$hDB@tY}>gO~GST z{{F@) z_X#+zidxWX{P4HXJ(y@^tz;>28uCCgr0Ua)!CI;o&9m;#Ge39>oD&|baeY)c@)^Ep zZNNpEK0OJ29c>_mclc1wh`>uA4nT~CD9V80g}GJuMK4|U2z+{+UAThShR||AsG?<2 ze6VRmjHo;U`+AI^47uWK{X>^Fzw(*iaw@M@&)Y=$ik3sd?M~3vh8Pd~iGWTXBFbRx z8p@{4Y2n6Myf%py<*)yc*@D7!ScOP68vYx?#8Zc}+E#~Mv&s~9cHy|puJcXPnGYwS z4F`ThAZ_Y!4bGn(UwMr#Xl|IDSHU7tF7ZipUnc4OCVM2)1DgF(s{Mv?$ahy$=Y z2X!%*Tsyd-^T)xio5!1UI5c@Eu{opVfRHpIELE?E|3-UqP{+$_mDDyV^_cgneM@V) zhDo^0KVF0tZ9FTmo*=kS9dA=DnY`A}1eeqf54RRPcc@i{@kp&*(D#FFU4ZFG9q-58 zBh_oxn8VxjVb_y`(_;+EFdnJj2s$3xYs8v1-YfIJ`ew{&$0-;S(Q}Y}YO^wo2fB|F zf(0E9SP}-H!3p*KYMQc}*yt_sT0iH3hw1Fe%gQjG9c?^2IG!z%2xv*A8>$|!+a@`4 zjQ4J@G~==3E-zv>9@y_ef`UR6peu1Cun&TQR6|3s6WC1>JBe8i6(~6Zw8(;_X~8N1 zHChW0hU(kUfdlYwqn*hHHfeAz4;t8_A`5Q}@=J_1_~CJ*4KpRkh_lo!A$n~+{x%h+ zTQ#tTxaszXp+_OVp?Ne!<|3MZLo?5b!V+{K1V$_Yy>&l9lz=Z+mIeXItQ}i)QF{i8 zP$%GnhKE8>UIhw}Sg^Y~3u~`l0#Y5=yoM|UWF$5xG6y*WJ4PiB=)eLx%RwZFhElpe ze=ZOGj;>SCl_qtGwn17@n1~Jp!H9|AiaV# zIGn#kAq^3bd4!6&LI+RKSsp=`ueAL?|AjqD-RIT>!{NdrV*lBuY|tbk(Gsw{Y>~#m zg;PmdI@ARt4uM=q6qx>E?tmIh#T{tOpQ`%j_QDsRDrW8 zU}05c&?}*c_iE-%pN-sJ-P(I3=HW}HrSndk7vTd!`x}x63IT!|4;Tog4D|#Ql!^2h zmDFq)RJ?CH8yCd?G@KMhQc-P+(&?;znR7^hkwUrqM04LuybMiVk1GNH{1L zy<8;&`dLYmfof0E@jY}_GW<$i30*XAft(K&2-t*mm-+JL5h%2Qj|4IHR*2*PJwPl# z^nSgr{2lHX^iCl1ff5D+NGE&5l)?~nJQhX_QI6UY_KQ$yOQp;u8{0|R1ASRS9Db|jKUFgfQtVbNBoOB z3AU-j_&{`{<}+M%9|;iQ#8GS)v_gp}k%7>qFfM%;DNRbGJ7P&;7&_DlBZetQB?1dO z={%!Rl?eDhp^>xsW2Gy90lzblz}`j6fLcXPr8iU`T8@s61Gu*N`$4lh$W8zF?P_lip38N z6@;Sw<%z5Cv?y~H061d_M)M=1L;?ra-S`D^p(9tLuu_$ViP;>6+ zTuWw0Og|SFT8DeKO0uM<+fhL|=m-rJl=){nLce3PiMnBHg*2i>(&< zaOQ~nrSn~XZe}(-On(M@`%wT508M|!;^$DF!VnotdFoFyU4MsIfLo3v^B(*H$sE-v z{6t4bVI&)1t^nqs{|b=+TV>Hi0`a{`Vu2b)r-O&+tXRP8yiy8-f7x;_Z5SQV-7vZh zl1^aIWG97V=oqel0LMU?MdcWkE>q{3 zrxc!{L!DOe3{4V~Ed4(}kYBvIlT9y3k9X|kIpy8@dVfhO=kM4c zf#w3<8x}a2pgJunf^5Ff0pl2nAvgvW^Cv}}$OlUwdWClh(Cq{AZorLj@|@{d3;#7) zgL#Snh24N90`j`k5jOsX_eq)1v?_cT@K{wC?9%}9Aao=$Mg)nPG}PSy7zIIT6ecam zLZm`0G=-VM#cc$@#8i|T>6-u?%ADzNTsljTaJN+nZC1)KhfzQB$BqV1P&rRwqfX`e zZ+YXkq~*w`0Y?vq;tSUXT%<+J6Ppz~SR$1}`Gb8}@o{?* zILVKIz|?YJ7V7fL~4bo6*i&Fe0 z(50M5nN;g_3mP8VRfW6a@f(rn)FDHeO$sJ*ktPNDdP&hmQms(2SHQaeC6p;GJ7Q8T z&U2Ml%8nC_zV-M>0H|yExnL76O;b`^t$(`^=9x~TOmJ7X+%B!>33z*1&bwCjzWJWn zn!y%uqzU@V`DDh@cowGjrBSBhymx@!fyGkSJv(PgP5!Cp&ul6UHB3cqol3e0;tf#u zS!%8-%+-II&)w#A);rj@69KlX#+NqYJ9aN(R>=U{}L#(`EYz?+oR1mKIwI4<+i{6U^27M1UGmj zVkbeEL@IC>M=3~hSp5{3g%yq0jf(vIIzGDVxp~KUUQN5|1SFf5-vr}i(k#@LrPwRL zoU9QLVk7CM*Hc}bbN)7RTORP<-=j`bKC_j9_AFQ#kplFvC1`|n42)}oP`}8F(4P+% zex1r&-MaJAgi6z1F&h_Ob}+8mBB-ANv#_N#9o#)nV)NMfx_jP_36Gw=p467vETH`a z>;=BqSHzE1Edcc}7~PI0$Lihn{PI@c(=Dt1T=x0gM?@!7E$IQ1RQTv>%b@WrmeX4=dsX!tPBUK4{JTMCQ-(U4GFm`{RH6uvP%VhYvtTZCp_=rra`xAKAKc>Gwi>_Y z)>t{SuY$=-d|mLls4Y)P7lD~|M@Cb)rNiy_{lBeDbzQf~^2^hKE(~|C;r210mk7|q zl4MFzjsjcG0-+Y69c>;nyvr3Uug#$sGX8EgoM^_TCAB~p4q|Mz)zEYj%)}C*+Ov<3 z-OT0Z$UU?53;NA@;~1l_hh?_ZzFk=PI*oK{-l)$vym}t z5mjkwOQ7K#n1?lubIs>(j~#L|-zW28lEt9Twhxt~Wn9T)e1j=007N?|(z|3rsSrl$*viN4#nOEI7S!?V@pY3hJ zQ0v0%96+(Enb9n@V$Os4*dZB|`6$xII2mp|@4llCU;L`x%S2`?1rxy4=cBe(C0_<+ zXOGOG%6c|qoY~3t&gZs|;4y@xf;CQ**#$<0QnFNvy8z6n8?uNpqq|SSYu?_- zbInZ`zGk=AJHu?fV9AAs8L2JUzg!3A*PUiVG}^QCqEVwq&U5d$`1dugV#;iOn4thu z_(ATDw?M2=DJ=CgtEvMdw#Cn+0aGk!GQ`KE+-E=445; z>gF%wY&_cFh}SIpjZS99!X?b+gjsMLNfgPbAsqwbTG779n@;IQ@k7F0=2T6Z{$^F| zT4v)C%N`Z0wg~E{z$~m0DTQuZ&d;e4em04{tA^>-qkVE2Vv)g68lYRUm9IJkMzulW zDWg_1I+=acz>~M~)4`U84|_56xL}D4I;z^MtDOOJu%)g4wng4&qvkf^BuCvieXa+4 zZ&}vgS)u?N?li{_TYvH?Fbg{xM^ul^H4m#gmYaCX>}=ZL8;6=j^6 z_B4)2GHMa`u(zMfvdWj%#M#E?Fq;!b{m!7fw@OHmj)8Hz(Z0yIme*gV{?pN;pv~2& zMyAmWZG3#$!MJLRpneL>qC3scd6L?0?W0)S9W+EIU(sCv$e4{uf;c0ABKqt>BJ zy(3i_LXyIyHi;OU3y8I;h=G0r%)p9f6>WRE|M98HshoNJjczxdZL^2jYG786at3Pa zQOtQTA8T5qC@dy5#iT<%r8tQ(o0$p?}#i`#LHz@DlK& zNlqU91ek#xjXu)refmCd(`%1p!Hw0Ij)R$qYj~4#w|BqmOp?8(gn#_Jf^bG;_^hPOqNK##a#l9A9lY zG@k~u=}x1MmdKhuUymO4Sj-w3*k{j@M$BfTA_JN;Lq7pF3@m8$5mMK3_>Teoz49*Z z*Xzf1XSk`O`u^w))E1x~U1X6(O{!gao@xItIq2 z+nTp*k4~(gkT-4U4q>I4J z=yBHBpU!)4F6iNso%XVB{D4uTn0+hE(BMXbP?3PN`A0nrMyJPFbLUOy8Qe<9$+*yD zAj1Bzh}r1aSHMSCTM&(B!CdTV@?&k)x6=GD2gf`?*AD(?g6lJz3nnJG;t*+Ul$^X4 z^b=qP-DvWo^Ci!rk=GtL&KR8cIX7*_BW5$euv}mG!!IXx`;5kma zq7vRdm-Jw`B3R%M*rnvvARh$#oEEfw>APljmz%xb@3~k1cGTg5=Wm&<1QszwM^;+} z4d=i-=<(G4pUmqk(q?#UNqsMT{CE|Q**x%){Akbx3t~@IvvCmUx^T1x#MFJqERTeq< zAQ;((Mgt2%e_qnxc96Yt{Jw;d*UmAFs$(mFj$F(NP|ksQ*wUhZBe+qi`zBoToU- zGg4cnf4L6K&z?pz-#0`|?bN!J>-syb`2p7tMKN13j67(&x#WXjo`P6sNerpm2)01PVKBNCExwVKFtYl}xuI?=Ur*kt*S#}C`Hj6R zK1?wyK|2fPLigrFW+b^xuQ$(ot*~vb>+qutcM&kJ42wQX-^NXK%VD=?2cZ?WcZ80>T2D7oH$%qj}VOR5w&$`ZRYub6%@aJuq%?1+( zU^amy=Y)I^jBH1f5j*-Wyu7i$zSGWIOWip3Y=&MDCI`@w)fPd+IWP~plst9!x( zZ=a=2>P7yX=f+UOV=qgKWsnbok-O0%uIH0mU$W5WyYIFbz#5#HdzIPRV?LmlgijJp zq+?)Q`mWHCqH{%+PPA~#tkiYi%o(c~>MhLqgX5|#y!t7S7iK}*4S2Kjp-o)<+OFwM zUvy~E@`F9Ix5r}sa2A446lhYJU88me%)ydoQ`CBE-tkLIL)XQ3!@|d>b|E_6YU!I| zCWC4YYU@$l1z<*WNjbFgq_H=W|Bt=v0Ba)K!b4FJJN6!XLl96vY(QuM0!Xp900Trr zf=Ljuiw!}r3!);51yK}4EC|@^s@QwiwToTszI&%6GedC6u@%!Fel9}9l=gv9j zp8B8do-^k0=S&&V}E@$5M9SrXXCIN*|N*0$2ev zaz7}4Wa#J6WS8yZr}%8M;Lc#TH@FR`n5e|IlyV)chZ#{inSJYMzv#i-DEm$8`puft zhuwPcc#*qAR;qej>K$NBR*W=R_va~V23Ec8xO~=^CRh29``N7t&weerrV^X=S2uzc zS~KWqzPN}pv(H@ns0m1Jm)&Dn<~!hY#FvE2P`X~kyZ~0vli_RF<+rO#ps^jyGMaZ$8p1`A zoy9Zt);wW1Kdu;)^Ox8T)tA9)EE)7MXw$!;|i`k)7Wm>0kb ztQhpc>G;&3`*5Dip3&SG@3VbbdW0zSp)%}K%5|_FYlejxH{WVY;lPQW8!|a3Ywftw zirtRjrX==$sI~^ro0GVHD+$PJlMqSC5Qvpn;2I?4s5q> z45R8^rHKhO_7!`^x&*EmXJg3nFvhJ1FM*5-p+x->PHo1ps?g)D1LHf~vQM977ioXg znWc4!TTa;2C3Zo@HMkIS#vUww*(uzyo`u7ld5;{#$zJ8$18}r59hP1K_$8d0SxqIk zo|fqn+`>IAYV_023-@x^Q6l-AV3tz%fN~8kq&vgF%PWvw{cMNi7cUI z_{=MGo!%)+-yvqq^ij`mXU}D~6bJw&5!04ZVt0OV4_Fu|iK3UhydEa&ePYNbr@7(s z)V|Hq|6sQ;f;MsgK3yR%c?mAVjFFw^`+D1_18c&#@t+O#hOE`?#%>w7r9|uxTt6p21rWIgr1`3T3P z5nFE7a~7`vC3Xi}NQvz!{T8?^W|*q#x3OZ5&J)iS=DMP4v)-|EoY3}wVK%6^ z1{czUu|Gq8nzRd_zRh`Bb^oh9mL_jwM?JKM#}@MI{h{3gmu1P|t+2E6&NbSS;hB4H z+x82-X=~Xni^f27lcwY)xC|=>Z#nlb9`&*KhTFVMg9By(lkc%x290y5c8kLMSLz*b zQPvEDb5`qYm&^B}TxM8%IZSWXdIY;g;btX4(lq0y#1*)Ro(x}P=A;!9mvn2#Ef^F~ z)p~zlcXo@wU5&~`l%Sf@ZU9RH1yyu;+tGPLeq=A+tkxlq4=yM!SGF{{GpbVDXf#8$hTx)@4uYP}8`}imvT$8C)#1aP z^zZB0y)N9&BNjz9c$gR95||!>NoPOWr!*2f#+>68U8`-(GP4S|@DxiZK`^CUhYMo5 z2&CrcKD0;~>=EBPpygEVmNa&Ig1Z6$Y*MhQ(3;|VxB#Y);Hu}@)cWrR*{wf($?NYh+HxFOO`F;a;RJDxdIo# zteR>bdC#QA{6vo#?L2MP$IW=aZclKrp`5D3u9S8IT#_}zHth8FK*!rJkMfs^eY@9O z(w=1kFK!BZqcW6|O-=n0PTiAXAKzMCUH4|dbza`5E4O~`SsTS}H*i$|o4UkCsJI3e z0*a!>)0A-2II9Dj?`C>r_ny+eIOM$tyM^E-u|5G(iHKqd(7uI}n=y=$+N<4)cUtS% zElQhOb?CI(EbCKodjp@m#5Sn92$y2c*oW{@t(rgZUE&n)^{!FymM7lj+6NRJL(Og@ z_5uGEPHw^2hu))_TEMS4PzFx;Vr> zXWY->-ZQtHV7CvrQS1X|Q(-HUU&HBpF#KmlRqwc+%)a0d)%)twW&?M#qzK#^Cgv%z z6)La7#aJ?EqH>lSCnTmeZ|^n^r@cQqvxsf?Y8@#$z69j&-1FrZhGRaTEZmgH(y2wf{BT(qN=1pHe+{Q+X7fAOI3QaZa+{y- zH95`E&hI+A*Fd~=eEJewq4FwR46~rrV1QtL&y`;s)21&F4N2usWVaYxi}DqQqRdM0 z5?A0Nn0cvjYwtxgT)LFI_uD*+R_*m%*)0NBpOlLzu_>k90GGtH^^IE?bDi zaB~$~4&5unya1PA#)xFrFYNSo{Vglc?W^3s%(^g?Wvm^yQx!`nu_dKkhYK=i*ljO7 zho0;xdhWJ)>1zE~uevs5wKeHg=JsW` z2tsTq7ExkbO1l9rsXIe8dN}5R92sQqkRaUDqU~63mT6b`N#`pSh*e;^sJaN3(t{Dh zh@DX2b!FZ~$AXaaNq6R6W$9(b;}f){l-QtO+yfWJOl#GzGUki%gwHO^n|;sQ;=A_@ zyVr&rkpm>6@X!)gzlv*cAyy1O^cPv{m91jkb~xo3tq|`$$Zjuim&d>mlo|`9 zehH^$<_RQuZ+sjRcAG!VeG%t+n|UnNX`B?XsY~pFifh_#PbdNpL<$Bx_yj;{i*>1p zgJYdn)(sy}*)h&|?`luc^BjUKT7i32q2ZDM^H>uHMF0e52-snLH=%YSM}sBONQ4#m zF1IRkfoS9(ReWsc1<#yo%@6k2CcH_kyG1GMR`!w8$44F@kP2Z76GeX# zuqz0nZzmE-BG5n;olCGQpaHcPDwPRka`;;ej93VU0Kb#TBmqJU<+bE*b(LK($o(T) zul&P!-2bumP86~Ply8AFp*6!WuzYLSe`9->S!eEaTQ#h6;J-}yP>ZHee#zb!Luq__ zqQwD+0ZFTEw;ZY2=FraSWB%XhA2O=8U(DEWp%nPZ{;eJjgpdWy(H$|OF-L#n=bf7d z6}m1zmg}t(RfpZN0Cf`|xg-qh<17ePU|TVTJ_^k{EGmJmkxRot{vviZfr3H2f%gAlWA}ff zJ0?_Q?IjWsDiDLe06Kha8dGeZyRA*f6-S(tyLSBZ)Ryo4S)CZr=md3~u-ynJ5DgN9 zi?Dz}Ie7wF*4UWD(1c<^?Po$~iH*azKb9V7#hcY&db}~kyETKV7i9l?a#@vNX`kfR0IA^==^!T^~-#sp|Vs40=;3E(NPr(H2wBrOw#6iMf z0=-kOBhHCC>;@*Ni~_6Lm;@R;O?f@TVNEbW7}@c@4khudcjJ zQy&}5j$A}yc4*$=ii@0o_F&b~j7GcA67!Kuq5lm2Gw=)w5(&ky)&bhlh>ot0JUmb+ zQTPt@ zfJ)`U0F}Q%5F=lKKMz1O!Pqzc4{o141c44u$n*Fo{L(+aKG+qZjgAhbJI3r~wK`dK z`edKqAGQDFl|zbXsQWkpDv-5x7eq?J<<3%JptmFf(X$H+Lj}O~AAmAq3;S0M+IKPY zi1ViXg9Y~CQRfI*5A79vAj&Uwxgr4o-M}bP9}pJUd_rPE&kyuhfv#fUBmqaGL!?*` zDh$AW0Ircl90@5L-hk+nZ|2%hYJaMit*9Qk<_Y0?R|YR|%GlSW`t%1c?1{xe(ad~G ze7IjcXm;jIui)v4&f6Xq9)59W$e@4fL5;jZ09_75g~1_mzl}r5AMj#>W`RR{WM}JL0ctv z6n{O$7-UyI$UI3vxm32~v!|Kt$GV=Vx*{l-J6q@cA04_Ek(3J?EK}c*tSvq|sl*_a zptegS7$eZuLgv5yvEF)ilE;imL9es=R$hoJGRS$rlFEl!{x!jLX_UMDngKVz&2dU1 zQ%zvo09Dgr?qon6xX;@M+@&09&Mbc7_k0;IDPd|)l z9|+(bf%JA9j|PNeeK&LvLpwP*F8#yhs5csf7%Cmeh#`KYz^`?ct#S!r11G@$G~@+< z1|GV+Pyy&_f=eR45TtGf0sl7f*+U?veALHZkV2$k{&1ii3PJXga2$$1G4$zUM1c@p zz+smV#W7^)BMFxVfLn3bI%4PxF#Hu{Wr&47!HEqY86U3X%Nlg+Y|R~SxOO?x;p483 z>|m+jZ9>rEs~Y4bkcWT+Qzn-R0J0kXJiuT#M=AqNK=~^CdN1E~UiQL1ZR+APO-C>9 zNxTXcMD)(+%A6)gzw+`MMa)ghy)cs?qGdD_!qpu8xc6*R*EJ)2?pfO`=}k<>hKTA1 z##b?VnBtMueW7dBV{I>M5)t9lsOS=3I{oO;=;s8DVbAL1*LmBtiSy=s8~5}%&W(r- zg4!O=WdJH4=tv6c({lnTiT;9sF^CI|Ti?#leUtOLi|cgMVM|+`^B0J5U~UbZUDg)< zKcWwM_=PH113!55y?|~JiUPz5#RZHy!Ky=nwh0QU8_-tVc>UF+Ru}F#uB;LA`0~1o zWMzr!nXZHR3B5wk3;`Zu3RN#k9FnqL+LfO^Y3!u)E*!G(00t0&U>tn=c?|H_Vw~unn4Vu5vNI+1p$kLq{yoI)B?RR+~nRtYa3Y!R;filDzpeQ zlb1vmP`$H59v&rLU&+?x zR4oG=N7n@vh51QEh$V<@|W@Bm^C<%~}W-72)O$A|Lz@U|)rV*IUDl^3oXF_4a z##sW)BjtLSk5TG+s7f0)4ym|B!cQ`!HyBo_yEUdAyG)IXn4}eW5b9$xbvOL6VQvSh zRgm8h&T*(*JELOIO;u!LL;OMalywDncmpdQm2!k~jzGpih4K*aLBPQ_h6CJY0^pMq zf&Yr2&Re=C3@SBp_&zCqFLT;y&s0^2r_?;Z7e(pAbx(z|jWMu3CBp<$>tx7Buz5=2 zkb+N23cPgckIbF&XuGuV2acALo3I2Qr>u!282VX8pES&S2Up^w+ zY6n)PiXxd$gy@ch-cdLMPBx0n7x)!sJ%RrMud2IH42y#BKV@?44~U6}p#=hMTm}_a z%v<0gK@9jH_5<8Jz=4DO{cgU0BYvhb-{?7wYnX~OE7<^d9k(Eq=|+Do958Av)%6X> z948Qg*eQkMO=xRp>LeP=@%X`9MrNm4X1^B;RD4>+uLRwM(~ZJD-pO~_ksH$|dEtv` z1hsGgovD&Jq;;&W(oPq2K|X(U*xSB_XNKk8-oB$||BO^Z)ij)%pG7u zSRg-XdN)&BX2tC=PsCHq2@nZ^^`>Na=-g3g1CB7B4&3Ba&;PIa9R@Z*Yd36A3dhr9 zTTCrd%kkkr_xmq%JoVXeKENEQxFZm7KzF1L?aVOW($lneooJ_JgB@p%sy^o0UZ&PUzW-f;URyl^$O_kyn%1fpxNT)WUYwi z>Al)hP{HcBC@p)|2;>PLj9$SXAdgCi#uK>~{zct7cJ^HVWl+PRRf12m;t5z5Nb&>> zSWvlvb~J!q#i7s3&1P#SNT6sIVX~KK%^1N4FXOlE(oe%rA741>SP1q zXFBfO1erh30aP;cCjiS5GQnJiCU|&+NG!rm1?VZjzb!q}2Prkv2LvhU`5wy-p|dQ- zKV8-pWiJ18t9S^(KdkaS7WZ#mVPN3T2zsUD68gd|MYyt^yoBz>Ok!R|J04v$0fO#6=m|B*SdUj z@@o>dm{_sunds4a;LfM;%z^vsH`flD?y%d}!0UG8B{Gu(s&48=>!C(zA1;>zYX;`J z1kmQ$G{0Y1lI*$D=646$)K8s6x*N+n57pNP?H@NW==}@-l_^@^tLo0WJtlj4Zl3de zT*Hxr)Qh%)N3o{q#_4^pP5!LY&M|(+=iJYuzml?>g&-J!SX@8((3`tUZ+-7w)A%O| zL2#Vrq+De;e#@7EkKEQu9`&5k&!bLx1OXa3<-5UB&y;SHEVuXXwM#1qkgtG-lqX1n zu>P$29a=cWhWmDkvUEGoRuIh3p31pC^|;g8cD1~k-n~)%m+YygAfP7*ox50+$XnCV zd0ML3hW!T$EXzJq*;r>lE&xc^m+pYx#_WZ#Q^=-2!{hZchTfs7db?AvM&&F@**Zzi`+u~=J>oi&?&?BZ} zbA~oPp0GN7$O^l-7XH^9Ka3~wUjAEWD2qgwL!EBEx;Ar$<91%R(4d26T(#&&MWTyS zlPWu3{E_Ljd*0*hk&ki`N=awUBE9Sl-wN@hEr4txdskpwRomWhClbECxcpj>C z@#}mSXw#CZ49Xza-x1ZuQx+(`OnOwCd3F=4*ZT9x_x+nCcKp*(Z2)gVVW^r@Cw;H7 z(9wC-lSHTaJv=%R)WRu+*2^B%W+=B~X|w)#-EjQ2j(craM9umZ(Y5WVa?M(bs#|(g z+nf>AW@?qJ_+3>F3q0%;Q9Q!&RQ9li$_y3c;9Q_$`tf{dP<#HrtjtkXU(p8rfuP$uZXcKJS*Yf$@kD3t`NhZ zDEj>{>aI4cQAe=6Ne$Zt2P;?FHr(nqu@kKGJ)ZUx47&8J0Y80V>ckp0AO10jn13wa z16mqkpzoc%K&njl7}A=$r^#RT^xPNmr$f@afhX7Wl?If$r&Q-TE#2cWQ2Uf#b2SvuPn{8oAWN})93yi(ucqzRMqfsn~4Js=y)uN6xH9i@77@=RCNI)dnqFUv+hoc z-hJ52HeRsr)H0uLDa6CD2~|z29j?EihLk(=u-xLwB|8~0ltzTApp6UAtpRFOML~Sj z&CMBTba0WwjCST#s}>onoh#6f=F#-5eCWmJ=TkkRECXc=V`B~w?}7ytEfej1mAK5t zv7kFhSMPsp1VKfGG%5=1*mlkN3%z*jD}5hbLo#e!IjCr5Bd$m1hgNR6DT%LJ9@$n& zlc)$dMi9{brGh|W>RMLYd%Wp6kA#CerTUA%rmGe5EDm7KRoTGt4BZG87UV78t+=w zt@d=MR6$j9R`txnwauSu}L6!;Gn&)(**j z6kiVdX;6JO_v+`ayfrahdY`mD{7y?hWlPy<+TLrHpC{iT!P~Bu!2j-P_2{PuLa(2= zy(+Ki>{~zG6RH+AUM#D0mv{>-=x3X^&**v+Kk^Iu%!_+(@5CkO=M3!xYqKHec+mPg zw)uu-rbc{ZfzYh89gUiGF~RfmGN5mNIYv$FJzQ=a%8M zIfjX~hp0zDmJ9*3tnZdQpFgMAt?K)8f>o6_f3PPYi{1jmvm?_zR`frex~l4j#VQ5R zs-OIMXTF(x?z6lXfBf*PHpFyn2&lVlP=8^!4sOfN>ANiPyIfC`2&f_tu*fs53;km~ zc{$VcqI*6(f~rS9Rt)<2-uPywY(=JR)`iRS_f$ju*waswthHa~Pq1*`e*EXl_Vu6c zS4lswH~*33yx@)Nj!O3$`_!s=vK;iY{?x}^w;v0g);7J@xyFQxn-cVMmVSVpSYhGYuh=c4AW-&5KbcG+W+Q(dwP_a8y#6r9q=eW_CTzi3(rZK&r;SN{t1s{lxv3rr^<;>kdEZW_8OL#W>D5p4Xm#0aHG2|z zZZYKgp{}8}F=+*6^DOJ8sT4ua9HOsP>ifm5fS>kYVF_;daZ+237o363~rnU9U<7e1~+zE+f3~HmS3-kwF4^ldBunEqC9v zuWwSf@&2h=0xFvk)^Lb`zxwb<#}y|IOxTbx_?emnWX2$%(QR9d*i*-qoBaN0D+j&{ z>CBf>t8&zpIsE9E<6p%0ADW<&fbxcppLFr%43{+&sl?Z`C9*x#}3alwOiLd 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 0 { var transArray bson.A - transArray = append(transArray, int32(3)) // items marker (3 = has items) + transArray = append(transArray, int64(3)) // items marker (3 = has items) for lang, value := range text.Translations { transArray = append(transArray, bson.D{ {Key: "$ID", Value: idToBsonBinary(generateUUID())}, diff --git a/sdk/mpr/writer_microflow_actions.go b/sdk/mpr/writer_microflow_actions.go index 56b9fb1..7d51549 100644 --- a/sdk/mpr/writer_microflow_actions.go +++ b/sdk/mpr/writer_microflow_actions.go @@ -180,7 +180,7 @@ func serializeMicroflowAction(action microflows.MicroflowAction) bson.D { // Serialize parameter mappings if len(a.ParameterMappings) > 0 { var mappings bson.A - mappings = append(mappings, int32(3)) // Array marker (storageListType 3) + mappings = append(mappings, int64(3)) // Array marker (storageListType 3) for _, pm := range a.ParameterMappings { mapping := bson.D{ {Key: "$ID", Value: idToBsonBinary(string(pm.ID))}, @@ -216,7 +216,7 @@ func serializeMicroflowAction(action microflows.MicroflowAction) bson.D { // Serialize parameter mappings within MicroflowCall if len(a.MicroflowCall.ParameterMappings) > 0 { var mappings bson.A - mappings = append(mappings, int32(2)) // Array marker + mappings = append(mappings, int64(2)) // Array marker for _, pm := range a.MicroflowCall.ParameterMappings { mapping := bson.D{ {Key: "$ID", Value: idToBsonBinary(string(pm.ID))}, @@ -247,7 +247,7 @@ func serializeMicroflowAction(action microflows.MicroflowAction) bson.D { // Serialize parameter mappings if len(a.ParameterMappings) > 0 { var mappings bson.A - mappings = append(mappings, int32(2)) // Array marker + mappings = append(mappings, int64(2)) // Array marker for _, pm := range a.ParameterMappings { mapping := bson.D{ {Key: "$ID", Value: idToBsonBinary(string(pm.ID))}, @@ -373,7 +373,7 @@ func serializeMicroflowAction(action microflows.MicroflowAction) bson.D { {Key: "$ID", Value: idToBsonBinary(string(a.ID))}, {Key: "$Type", Value: "Microflows$CloseFormAction"}, {Key: "ErrorHandlingType", Value: "Rollback"}, - {Key: "NumberOfPagesToClose", Value: int32(a.NumberOfPages)}, + {Key: "NumberOfPagesToClose", Value: int64(a.NumberOfPages)}, } return doc @@ -461,7 +461,7 @@ func serializeRestCallAction(a *microflows.RestCallAction) bson.D { // Add parameters if present - each must be wrapped in TemplateParameter object if len(a.HttpConfiguration.LocationParams) > 0 { var params bson.A - params = append(params, int32(2)) // Array marker + params = append(params, int64(2)) // Array marker for _, p := range a.HttpConfiguration.LocationParams { templateParam := bson.D{ {Key: "$ID", Value: idToBsonBinary(GenerateID())}, @@ -483,7 +483,7 @@ func serializeRestCallAction(a *microflows.RestCallAction) bson.D { // Serialize HttpHeaderEntries if len(a.HttpConfiguration.CustomHeaders) > 0 { var headers bson.A - headers = append(headers, int32(2)) // Array marker + headers = append(headers, int64(2)) // Array marker for _, h := range a.HttpConfiguration.CustomHeaders { header := bson.D{ {Key: "$ID", Value: idToBsonBinary(string(h.ID))}, @@ -608,7 +608,7 @@ func serializeRestRequestHandling(rh microflows.RequestHandling) bson.D { // Add parameters - each must be wrapped in TemplateParameter object if len(h.TemplateParams) > 0 { var params bson.A - params = append(params, int32(2)) // Array marker + params = append(params, int64(2)) // Array marker for _, p := range h.TemplateParams { templateParam := bson.D{ {Key: "$ID", Value: idToBsonBinary(GenerateID())}, diff --git a/sdk/mpr/writer_modules.go b/sdk/mpr/writer_modules.go index cdb64e6..44dbbd0 100644 --- a/sdk/mpr/writer_modules.go +++ b/sdk/mpr/writer_modules.go @@ -250,7 +250,7 @@ func (w *Writer) serializeModule(module *model.Module) ([]byte, error) { "AppStoreVersionGuid": "", "IsThemeModule": false, "IsReusableComponent": module.IsReusableComponent, - "NewSortIndex": int32(0), + "NewSortIndex": int64(0), } return bson.Marshal(doc) } diff --git a/sdk/mpr/writer_navigation.go b/sdk/mpr/writer_navigation.go index 8584574..9612277 100644 --- a/sdk/mpr/writer_navigation.go +++ b/sdk/mpr/writer_navigation.go @@ -285,7 +285,7 @@ func buildCaptionBson(text string) bson.D { {Key: "$ID", Value: idToBsonBinary(generateUUID())}, {Key: "$Type", Value: "Texts$Text"}, {Key: "Items", Value: bson.A{ - int32(1), + int64(1), bson.D{ {Key: "$ID", Value: idToBsonBinary(generateUUID())}, {Key: "$Type", Value: "Texts$Translation"}, diff --git a/sdk/mpr/writer_odata.go b/sdk/mpr/writer_odata.go index e6290e0..8d2f3d4 100644 --- a/sdk/mpr/writer_odata.go +++ b/sdk/mpr/writer_odata.go @@ -64,8 +64,8 @@ func (w *Writer) serializeConsumedODataService(svc *model.ConsumedODataService) "ExportLevel": "Hidden", "Metadata": svc.Metadata, "MetadataHash": svc.MetadataHash, - "MetadataReferences": bson.A{int32(0)}, // empty BSON array marker - "ValidatedEntities": bson.A{int32(0)}, // empty BSON array marker + "MetadataReferences": bson.A{int64(0)}, // empty BSON array marker + "ValidatedEntities": bson.A{int64(0)}, // empty BSON array marker "LastUpdated": "", "UseQuerySegment": false, "MinimumMxVersion": "", @@ -203,7 +203,7 @@ func (w *Writer) DeletePublishedODataService(id model.ID) error { // serializePublishedODataService converts a PublishedODataService to BSON bytes. func (w *Writer) serializePublishedODataService(svc *model.PublishedODataService) ([]byte, error) { - // Authentication types array (versioned: starts with int32(3)) + // Authentication types array (versioned: starts with int64(3)) authTypes := bson.A{int32(3)} for _, at := range svc.AuthenticationTypes { authTypes = append(authTypes, at) @@ -284,7 +284,7 @@ func serializePublishedEntitySet(es *model.PublishedEntitySet, entityTypeID stri "$Type": "ODataPublish$EntitySet", "ExposedName": es.ExposedName, "UsePaging": es.UsePaging, - "PageSize": int32(es.PageSize), + "PageSize": int64(es.PageSize), } // EntityTypePointer is a BY_ID reference diff --git a/sdk/mpr/writer_pages.go b/sdk/mpr/writer_pages.go index 0f86eb1..409473b 100644 --- a/sdk/mpr/writer_pages.go +++ b/sdk/mpr/writer_pages.go @@ -128,8 +128,8 @@ func (w *Writer) serializePage(page *pages.Page) ([]byte, error) { {Key: "Style", Value: ""}, }}, {Key: "Autofocus", Value: "DesktopOnly"}, - {Key: "CanvasHeight", Value: int32(600)}, - {Key: "CanvasWidth", Value: int32(1200)}, + {Key: "CanvasHeight", Value: int64(600)}, + {Key: "CanvasWidth", Value: int64(1200)}, {Key: "Documentation", Value: page.Documentation}, {Key: "Excluded", Value: page.Excluded}, {Key: "ExportLevel", Value: "Hidden"}, @@ -209,9 +209,9 @@ func (w *Writer) serializePage(page *pages.Page) ([]byte, error) { doc = append(doc, bson.E{Key: "Parameters", Value: params}) doc = append(doc, bson.E{Key: "PopupCloseAction", Value: ""}) - doc = append(doc, bson.E{Key: "PopupHeight", Value: int32(600)}) + doc = append(doc, bson.E{Key: "PopupHeight", Value: int64(600)}) doc = append(doc, bson.E{Key: "PopupResizable", Value: false}) - doc = append(doc, bson.E{Key: "PopupWidth", Value: int32(600)}) + doc = append(doc, bson.E{Key: "PopupWidth", Value: int64(600)}) // Add Title // Mendix uses [3] for empty arrays, [2, item1, item2, ...] for non-empty arrays @@ -267,8 +267,8 @@ func (w *Writer) serializeSnippet(snippet *pages.Snippet) ([]byte, error) { doc := bson.D{ {Key: "$ID", Value: idToBsonBinary(string(snippet.ID))}, {Key: "$Type", Value: "Forms$Snippet"}, - {Key: "CanvasHeight", Value: int32(600)}, - {Key: "CanvasWidth", Value: int32(800)}, + {Key: "CanvasHeight", Value: int64(600)}, + {Key: "CanvasWidth", Value: int64(800)}, {Key: "Documentation", Value: snippet.Documentation}, {Key: "ExportLevel", Value: "Hidden"}, {Key: "Name", Value: snippet.Name}, diff --git a/sdk/mpr/writer_rest.go b/sdk/mpr/writer_rest.go index 7fd325b..a32dd3e 100644 --- a/sdk/mpr/writer_rest.go +++ b/sdk/mpr/writer_rest.go @@ -120,7 +120,7 @@ func serializeRestOperation(op *model.RestClientOperation) bson.M { } if op.Timeout > 0 { - doc["Timeout"] = int32(op.Timeout) + doc["Timeout"] = int64(op.Timeout) } // Method: polymorphic (WithBody or WithoutBody) diff --git a/sdk/mpr/writer_rest_test.go b/sdk/mpr/writer_rest_test.go index 2ddddc8..9421d2a 100644 --- a/sdk/mpr/writer_rest_test.go +++ b/sdk/mpr/writer_rest_test.go @@ -159,7 +159,7 @@ func TestSerializeRestOperationGetWithParams(t *testing.T) { assertField(t, result, "Name", "GetPet") // Timeout - if v, ok := result["Timeout"].(int32); !ok || v != 30 { + if v, ok := result["Timeout"].(int64); !ok || v != 30 { t.Errorf("Timeout: expected 30, got %v", result["Timeout"]) } diff --git a/sdk/mpr/writer_security.go b/sdk/mpr/writer_security.go index e6f3189..cecc9ca 100644 --- a/sdk/mpr/writer_security.go +++ b/sdk/mpr/writer_security.go @@ -87,7 +87,7 @@ func getBsonArray(doc bson.D, key string) bson.A { return nil } -// makeMendixArray builds a Mendix-style array: int32(1) marker followed by items. +// makeMendixArray builds a Mendix-style array: int64(1) marker followed by items. func makeMendixArray(items ...any) bson.A { arr := bson.A{int32(1)} arr = append(arr, items...) diff --git a/sdk/mpr/writer_settings.go b/sdk/mpr/writer_settings.go index e043a88..38b46ec 100644 --- a/sdk/mpr/writer_settings.go +++ b/sdk/mpr/writer_settings.go @@ -4,22 +4,15 @@ package mpr import ( "fmt" - "math" "github.com/mendixlabs/mxcli/model" "go.mongodb.org/mongo-driver/bson" ) -// safeInt32 converts an int to int32 with clamping to prevent silent overflow. -func safeInt32(v int) int32 { - if v > math.MaxInt32 { - return math.MaxInt32 - } - if v < math.MinInt32 { - return math.MinInt32 - } - return int32(v) +// safeInt64 converts an int to int64. +func safeInt64(v int) int64 { + return int64(v) } // UpdateProjectSettings updates the project settings document. @@ -89,12 +82,12 @@ func serializeModelSettings(ms *model.ModelSettings, raw map[string]any) map[str raw["HealthCheckMicroflow"] = ms.HealthCheckMicroflow raw["AllowUserMultipleSessions"] = ms.AllowUserMultipleSessions raw["HashAlgorithm"] = ms.HashAlgorithm - raw["BcryptCost"] = safeInt32(ms.BcryptCost) + raw["BcryptCost"] = safeInt64(ms.BcryptCost) raw["JavaVersion"] = ms.JavaVersion raw["RoundingMode"] = ms.RoundingMode raw["ScheduledEventTimeZoneCode"] = ms.ScheduledEventTimeZoneCode raw["FirstDayOfWeek"] = ms.FirstDayOfWeek - raw["DecimalScale"] = safeInt32(ms.DecimalScale) + raw["DecimalScale"] = safeInt64(ms.DecimalScale) raw["EnableDataStorageOptimisticLocking"] = ms.EnableDataStorageOptimisticLocking raw["UseDatabaseForeignKeyConstraints"] = ms.UseDatabaseForeignKeyConstraints return raw @@ -120,10 +113,10 @@ func serializeServerConfiguration(cfg *model.ServerConfiguration) bson.M { "DatabaseUserName": cfg.DatabaseUserName, "DatabasePassword": cfg.DatabasePassword, "DatabaseUseIntegratedSecurity": cfg.DatabaseUseIntegratedSecurity, - "HttpPortNumber": safeInt32(cfg.HttpPortNumber), - "ServerPortNumber": safeInt32(cfg.ServerPortNumber), + "HttpPortNumber": safeInt64(cfg.HttpPortNumber), + "ServerPortNumber": safeInt64(cfg.ServerPortNumber), "ApplicationRootUrl": cfg.ApplicationRootUrl, - "MaxJavaHeapSize": safeInt32(cfg.MaxJavaHeapSize), + "MaxJavaHeapSize": safeInt64(cfg.MaxJavaHeapSize), "ExtraJvmParameters": cfg.ExtraJvmParameters, "OpenAdminPort": cfg.OpenAdminPort, "OpenHttpPort": cfg.OpenHttpPort, @@ -167,7 +160,7 @@ func serializeLanguageSettings(ls *model.LanguageSettings, raw map[string]any) m // serializeWorkflowsSettings updates the raw BSON map with modified workflow settings. func serializeWorkflowsSettings(ws *model.WorkflowsSettings, raw map[string]any) map[string]any { raw["UserEntity"] = ws.UserEntity - raw["DefaultTaskParallelism"] = safeInt32(ws.DefaultTaskParallelism) - raw["WorkflowEngineParallelism"] = safeInt32(ws.WorkflowEngineParallelism) + raw["DefaultTaskParallelism"] = safeInt64(ws.DefaultTaskParallelism) + raw["WorkflowEngineParallelism"] = safeInt64(ws.WorkflowEngineParallelism) return raw } diff --git a/sdk/mpr/writer_widgets.go b/sdk/mpr/writer_widgets.go index 4131744..58d00f5 100644 --- a/sdk/mpr/writer_widgets.go +++ b/sdk/mpr/writer_widgets.go @@ -24,7 +24,7 @@ func serializeWidgetArray(widgets []pages.Widget) bson.A { for _, w := range widgets { if w != nil { if !hasItems { - arr = bson.A{int32(2)} // First item: change to version 2 + arr = bson.A{int64(2)} // First item: change to version 2 hasItems = true } arr = append(arr, serializeWidget(w)) @@ -237,7 +237,7 @@ func SerializeCustomWidgetDataSource(ds pages.DataSource) bson.D { } // Build SortItems array from Sorting field - sortItems := bson.A{int32(2)} // Version marker for non-empty array + sortItems := bson.A{int64(2)} // Version marker for non-empty array for _, sort := range d.Sorting { sortItem := bson.D{ {Key: "$ID", Value: idToBsonBinary(generateUUID())}, @@ -418,7 +418,7 @@ func serializeFormattingInfo() bson.D { {Key: "$Type", Value: "Forms$FormattingInfo"}, {Key: "CustomDateFormat", Value: ""}, {Key: "DateFormat", Value: "Date"}, - {Key: "DecimalPrecision", Value: int32(2)}, + {Key: "DecimalPrecision", Value: int64(2)}, {Key: "EnumFormat", Value: "Text"}, {Key: "GroupDigits", Value: false}, } @@ -526,7 +526,7 @@ func serializeClientTemplate(ct *pages.ClientTemplate, fallbackText *model.Text, // Build parameters array - use [3] for empty, [2, items...] for non-empty params := bson.A{int32(3)} // Empty array with version marker 3 if ct != nil && len(ct.Parameters) > 0 { - params = bson.A{int32(2)} // Non-empty array uses version marker 2 + params = bson.A{int64(2)} // Non-empty array uses version marker 2 for _, param := range ct.Parameters { params = append(params, serializeClientTemplateParameter(param)) } @@ -557,7 +557,7 @@ func serializeClientTemplateParameter(param *pages.ClientTemplateParameter) bson {Key: "$Type", Value: "Forms$FormattingInfo"}, {Key: "CustomDateFormat", Value: ""}, {Key: "DateFormat", Value: "Date"}, - {Key: "DecimalPrecision", Value: int32(2)}, + {Key: "DecimalPrecision", Value: int64(2)}, {Key: "EnumFormat", Value: "Text"}, {Key: "GroupDigits", Value: false}, {Key: "TimeFormat", Value: "HoursMinutes"}, diff --git a/sdk/mpr/writer_widgets_custom.go b/sdk/mpr/writer_widgets_custom.go index f69863e..4a35911 100644 --- a/sdk/mpr/writer_widgets_custom.go +++ b/sdk/mpr/writer_widgets_custom.go @@ -3,6 +3,8 @@ package mpr import ( + "log" + "github.com/mendixlabs/mxcli/sdk/pages" "go.mongodb.org/mongo-driver/bson" @@ -41,7 +43,7 @@ func serializeCustomWidget(cw *pages.CustomWidget) bson.D { {Key: "LabelTemplate", Value: serializeLabelTemplate(cw.Label)}, {Key: "Name", Value: cw.Name}, {Key: "Object", Value: widgetObject}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Type", Value: widgetType}, } @@ -55,6 +57,32 @@ func serializeCustomWidgetWithRawType(cw *pages.CustomWidget) bson.D { var widgetObject any if cw.RawObject != nil { widgetObject = cw.RawObject + // Debug: check for non-empty Widgets in RawObject at serialization time + if cw.Name == "timelineCustom" { + for _, elem := range cw.RawObject { + if elem.Key == "Properties" { + if arr, ok := elem.Value.(bson.A); ok { + for _, item := range arr { + if prop, ok := item.(bson.D); ok { + for _, pe := range prop { + if pe.Key == "Value" { + if val, ok := pe.Value.(bson.D); ok { + for _, ve := range val { + if ve.Key == "Widgets" { + if wa, ok := ve.Value.(bson.A); ok && len(wa) > 1 { + log.Printf("SERIALIZE CHECK: timelineCustom Widgets: %d items (type: %T)", len(wa), wa[1]) + } + } + } + } + } + } + } + } + } + } + } + } } else { // Build widget object (properties) - this still needs to match the raw type's PropertyType IDs // The ObjectTypeID is used to set the TypePointer on the WidgetObject @@ -76,7 +104,7 @@ func serializeCustomWidgetWithRawType(cw *pages.CustomWidget) bson.D { {Key: "LabelTemplate", Value: serializeLabelTemplate(cw.Label)}, {Key: "Name", Value: cw.Name}, {Key: "Object", Value: widgetObject}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Type", Value: cw.RawType}, } diff --git a/sdk/mpr/writer_widgets_display.go b/sdk/mpr/writer_widgets_display.go index 8836b78..4a448c2 100644 --- a/sdk/mpr/writer_widgets_display.go +++ b/sdk/mpr/writer_widgets_display.go @@ -33,7 +33,7 @@ func serializeSnippetCall(s *pages.SnippetCallWidget) bson.D { {Key: "ConditionalVisibilitySettings", Value: nil}, {Key: "FormCall", Value: snippetCall}, {Key: "Name", Value: s.Name}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, } return doc @@ -96,11 +96,11 @@ func serializeGallery(g *pages.Gallery) bson.D { {Key: "DataSource", Value: dataSource}, {Key: "Editable", Value: false}, {Key: "Name", Value: g.Name}, - {Key: "NumberOfColumns", Value: int32(numberOfColumns)}, - {Key: "PageSize", Value: int32(pageSize)}, + {Key: "NumberOfColumns", Value: int64(numberOfColumns)}, + {Key: "PageSize", Value: int64(pageSize)}, {Key: "PullDownAction", Value: serializeClientAction(nil)}, {Key: "ScrollDirection", Value: "Vertical"}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Templates", Value: templates}, {Key: "Widgets", Value: contentWidgets}, } @@ -174,11 +174,11 @@ func serializeListView(lv *pages.ListView) bson.D { {Key: "DataSource", Value: dataSource}, {Key: "Editable", Value: lv.Editable}, {Key: "Name", Value: lv.Name}, - {Key: "NumberOfColumns", Value: int32(1)}, - {Key: "PageSize", Value: int32(pageSize)}, + {Key: "NumberOfColumns", Value: int64(1)}, + {Key: "PageSize", Value: int64(pageSize)}, {Key: "PullDownAction", Value: serializeClientAction(nil)}, {Key: "ScrollDirection", Value: "Vertical"}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Templates", Value: templates}, {Key: "Widgets", Value: contentWidgets}, } @@ -286,7 +286,7 @@ func serializeDynamicText(dt *pages.DynamicText) bson.D { {Key: "NativeAccessibilitySettings", Value: nil}, {Key: "NativeTextStyle", Value: "Text"}, {Key: "RenderMode", Value: renderMode}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, } return doc } @@ -314,7 +314,7 @@ func serializeActionButton(ab *pages.ActionButton) bson.D { {Key: "Name", Value: ab.Name}, {Key: "NativeAccessibilitySettings", Value: nil}, {Key: "RenderType", Value: "Button"}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Tooltip", Value: bson.D{ {Key: "$ID", Value: idToBsonBinary(generateUUID())}, {Key: "$Type", Value: "Texts$Text"}, @@ -359,7 +359,7 @@ func serializeStaticText(t *pages.Text) bson.D { {Key: "NativeAccessibilitySettings", Value: nil}, {Key: "NativeTextStyle", Value: "Text"}, {Key: "RenderMode", Value: renderMode}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, } return doc } @@ -392,7 +392,7 @@ func serializeTitle(t *pages.Title) bson.D { {Key: "ConditionalVisibilitySettings", Value: nil}, {Key: "Name", Value: t.Name}, {Key: "NativeAccessibilitySettings", Value: nil}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, } return doc } @@ -443,12 +443,12 @@ func serializeDataView(dv *pages.DataView) bson.D { {Key: "DataSource", Value: dataSource}, {Key: "Editability", Value: editability}, {Key: "FooterWidgets", Value: footerWidgets}, - {Key: "LabelWidth", Value: int32(3)}, + {Key: "LabelWidth", Value: int64(3)}, {Key: "Name", Value: dv.Name}, {Key: "NoEntityMessage", Value: noEntityMessage}, {Key: "ReadOnlyStyle", Value: "Control"}, {Key: "ShowFooter", Value: dv.ShowFooter}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Widgets", Value: widgets}, } @@ -588,13 +588,13 @@ func serializeDataGrid(dg *pages.DataGrid) bson.D { {Key: "DataSource", Value: dataSource}, {Key: "IsControlBarVisible", Value: len(dg.ControlBarWidgets) > 0}, {Key: "Name", Value: dg.Name}, - {Key: "NumberOfRows", Value: int32(20)}, - {Key: "RefreshTime", Value: int32(0)}, + {Key: "NumberOfRows", Value: int64(20)}, + {Key: "RefreshTime", Value: int64(0)}, {Key: "SelectFirst", Value: dg.SelectFirst}, {Key: "SelectionMode", Value: selectionMode}, {Key: "ShowEmptyRows", Value: dg.ShowEmptyRows}, {Key: "ShowPagingBar", Value: "YesWithTotalCount"}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "TooltipForm", Value: nil}, {Key: "WidthUnit", Value: "Percentage"}, } @@ -631,7 +631,7 @@ func serializeDataGridColumn(col *pages.DataGridColumn) bson.D { {Key: "FormatType", Value: "Attribute"}, {Key: "Name", Value: col.Name}, {Key: "ShowTooltip", Value: true}, - {Key: "Width", Value: int32(100)}, + {Key: "Width", Value: int64(100)}, } return doc @@ -717,7 +717,7 @@ func serializeNavigationList(nl *pages.NavigationList) bson.D { {Key: "ConditionalVisibilitySettings", Value: nil}, {Key: "Items", Value: items}, {Key: "Name", Value: nl.Name}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, } return doc } @@ -793,14 +793,14 @@ func serializeStaticImage(img *pages.StaticImage) bson.D { {Key: "Appearance", Value: serializeAppearance(img.Class, img.Style, img.DesignProperties)}, {Key: "ClickAction", Value: serializeClientAction(img.OnClickAction)}, {Key: "ConditionalVisibilitySettings", Value: nil}, - {Key: "Height", Value: int32(img.Height)}, + {Key: "Height", Value: int64(img.Height)}, {Key: "HeightUnit", Value: "Auto"}, {Key: "Image", Value: nil}, {Key: "Name", Value: img.Name}, {Key: "NativeAccessibilitySettings", Value: nil}, {Key: "Responsive", Value: img.Responsive}, - {Key: "TabIndex", Value: int32(0)}, - {Key: "Width", Value: int32(img.Width)}, + {Key: "TabIndex", Value: int64(0)}, + {Key: "Width", Value: int64(img.Width)}, {Key: "WidthUnit", Value: "Auto"}, } return doc @@ -830,15 +830,15 @@ func serializeDynamicImage(img *pages.DynamicImage) bson.D { {Key: "EntityRef", Value: nil}, }}, {Key: "DefaultImage", Value: nil}, - {Key: "Height", Value: int32(img.Height)}, + {Key: "Height", Value: int64(img.Height)}, {Key: "HeightUnit", Value: "Auto"}, {Key: "Name", Value: img.Name}, {Key: "NativeAccessibilitySettings", Value: nil}, {Key: "OnClickEnlarge", Value: false}, {Key: "Responsive", Value: img.Responsive}, {Key: "ShowAsThumbnail", Value: false}, - {Key: "TabIndex", Value: int32(0)}, - {Key: "Width", Value: int32(img.Width)}, + {Key: "TabIndex", Value: int64(0)}, + {Key: "Width", Value: int64(img.Width)}, {Key: "WidthUnit", Value: "Auto"}, } return doc diff --git a/sdk/mpr/writer_widgets_input.go b/sdk/mpr/writer_widgets_input.go index d725e2b..1493e1a 100644 --- a/sdk/mpr/writer_widgets_input.go +++ b/sdk/mpr/writer_widgets_input.go @@ -27,7 +27,7 @@ func serializeTextBox(tb *pages.TextBox) bson.D { {Key: "IsPasswordBox", Value: tb.IsPassword}, {Key: "KeyboardType", Value: "Default"}, {Key: "LabelTemplate", Value: serializeLabelTemplate(tb.Label)}, - {Key: "MaxLengthCode", Value: int32(-1)}, + {Key: "MaxLengthCode", Value: int64(-1)}, {Key: "Name", Value: tb.Name}, {Key: "NativeAccessibilitySettings", Value: nil}, {Key: "OnChangeAction", Value: serializeClientAction(nil)}, @@ -39,8 +39,8 @@ func serializeTextBox(tb *pages.TextBox) bson.D { {Key: "ScreenReaderLabel", Value: nil}, {Key: "SourceVariable", Value: nil}, {Key: "SubmitBehaviour", Value: "OnEndEditing"}, - {Key: "SubmitOnInputDelay", Value: int32(300)}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "SubmitOnInputDelay", Value: int64(300)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Validation", Value: serializeWidgetValidation()}, } } @@ -59,10 +59,10 @@ func serializeTextArea(ta *pages.TextArea) bson.D { {Key: "CounterMessage", Value: serializeEmptyText()}, {Key: "Editable", Value: "Always"}, {Key: "LabelTemplate", Value: serializeLabelTemplate(ta.Label)}, - {Key: "MaxLengthCode", Value: int32(-1)}, + {Key: "MaxLengthCode", Value: int64(-1)}, {Key: "Name", Value: ta.Name}, {Key: "NativeAccessibilitySettings", Value: nil}, - {Key: "NumberOfLines", Value: int32(5)}, + {Key: "NumberOfLines", Value: int64(5)}, {Key: "OnChangeAction", Value: serializeClientAction(nil)}, {Key: "OnEnterAction", Value: serializeClientAction(nil)}, {Key: "OnLeaveAction", Value: serializeClientAction(nil)}, @@ -71,8 +71,8 @@ func serializeTextArea(ta *pages.TextArea) bson.D { {Key: "ScreenReaderLabel", Value: nil}, {Key: "SourceVariable", Value: nil}, {Key: "SubmitBehaviour", Value: "OnEndEditing"}, - {Key: "SubmitOnInputDelay", Value: int32(300)}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "SubmitOnInputDelay", Value: int64(300)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Validation", Value: serializeWidgetValidation()}, } } @@ -99,7 +99,7 @@ func serializeDatePicker(dp *pages.DatePicker) bson.D { {Key: "ReadOnlyStyle", Value: "Inherit"}, {Key: "ScreenReaderLabel", Value: nil}, {Key: "SourceVariable", Value: nil}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Validation", Value: serializeWidgetValidation()}, } } @@ -122,7 +122,7 @@ func serializeCheckBox(cb *pages.CheckBox) bson.D { {Key: "ReadOnlyStyle", Value: "Inherit"}, {Key: "ScreenReaderLabel", Value: nil}, {Key: "SourceVariable", Value: nil}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Validation", Value: serializeWidgetValidation()}, } } @@ -147,7 +147,7 @@ func serializeRadioButtons(rb *pages.RadioButtons) bson.D { {Key: "ReadOnlyStyle", Value: "Inherit"}, {Key: "ScreenReaderLabel", Value: nil}, {Key: "SourceVariable", Value: nil}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Validation", Value: serializeWidgetValidation()}, } } @@ -177,7 +177,7 @@ func serializeDropDown(dd *pages.DropDown) bson.D { {Key: "ReadOnlyStyle", Value: "Inherit"}, {Key: "ScreenReaderLabel", Value: nil}, {Key: "SourceVariable", Value: nil}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Validation", Value: serializeWidgetValidation()}, } } diff --git a/sdk/mpr/writer_widgets_layout.go b/sdk/mpr/writer_widgets_layout.go index 4a10105..e777de7 100644 --- a/sdk/mpr/writer_widgets_layout.go +++ b/sdk/mpr/writer_widgets_layout.go @@ -20,7 +20,7 @@ func serializeContainer(c *pages.Container) bson.D { {Key: "OnClickAction", Value: serializeClientAction(nil)}, {Key: "RenderMode", Value: "Div"}, {Key: "ScreenReaderHidden", Value: false}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Widgets", Value: serializeWidgetArray(c.Widgets)}, } return doc @@ -54,7 +54,7 @@ func serializeGroupBox(gb *pages.GroupBox) bson.D { {Key: "ConditionalVisibilitySettings", Value: nil}, {Key: "HeaderMode", Value: headerMode}, {Key: "Name", Value: gb.Name}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Widgets", Value: serializeWidgetArray(gb.Widgets)}, } return doc @@ -68,7 +68,7 @@ func serializeLayoutGrid(lg *pages.LayoutGrid) bson.D { hasRows := false for _, row := range lg.Rows { if !hasRows { - rows = bson.A{int32(2)} // First item: change to version 2 + rows = bson.A{int64(2)} // First item: change to version 2 hasRows = true } rows = append(rows, serializeLayoutGridRow(row)) @@ -81,7 +81,7 @@ func serializeLayoutGrid(lg *pages.LayoutGrid) bson.D { {Key: "ConditionalVisibilitySettings", Value: nil}, {Key: "Name", Value: lg.Name}, {Key: "Rows", Value: rows}, - {Key: "TabIndex", Value: int32(0)}, + {Key: "TabIndex", Value: int64(0)}, {Key: "Width", Value: "FullWidth"}, } return doc @@ -95,7 +95,7 @@ func serializeLayoutGridRow(row *pages.LayoutGridRow) bson.D { hasCols := false for _, col := range row.Columns { if !hasCols { - cols = bson.A{int32(2)} // First item: change to version 2 + cols = bson.A{int64(2)} // First item: change to version 2 hasCols = true } cols = append(cols, serializeLayoutGridColumn(col)) @@ -133,11 +133,11 @@ func serializeLayoutGridColumn(col *pages.LayoutGridColumn) bson.D { {Key: "$ID", Value: idToBsonBinary(string(col.ID))}, {Key: "$Type", Value: "Forms$LayoutGridColumn"}, {Key: "Appearance", Value: serializeAppearance("", "", nil)}, - {Key: "PhoneWeight", Value: int32(columnWeight(col.PhoneWeight))}, - {Key: "PreviewWidth", Value: int32(-1)}, // Default preview width - {Key: "TabletWeight", Value: int32(columnWeight(col.TabletWeight))}, + {Key: "PhoneWeight", Value: int64(columnWeight(col.PhoneWeight))}, + {Key: "PreviewWidth", Value: int64(-1)}, // Default preview width + {Key: "TabletWeight", Value: int64(columnWeight(col.TabletWeight))}, {Key: "VerticalAlignment", Value: "None"}, - {Key: "Weight", Value: int32(weight)}, // Desktop weight + {Key: "Weight", Value: int64(weight)}, // Desktop weight {Key: "Widgets", Value: serializeWidgetArray(col.Widgets)}, } } diff --git a/sdk/mpr/writer_workflow.go b/sdk/mpr/writer_workflow.go index 3f3e2ef..f2652ec 100644 --- a/sdk/mpr/writer_workflow.go +++ b/sdk/mpr/writer_workflow.go @@ -505,7 +505,7 @@ func serializeCallWorkflowActivity(a *workflows.CallWorkflowActivity) bson.D { bson.E{Key: "Name", Value: a.Name}, ) - // ParameterMappings (always present, marker int32(2)) + // ParameterMappings (always present, marker int64(2)) paramMappings := bson.A{int32(2)} for _, pm := range a.ParameterMappings { pmID := string(pm.ID) From 13b293870735c5bf1760d5246a832bc2d8eee29d Mon Sep 17 00:00:00 2001 From: engalar Date: Wed, 1 Apr 2026 10:15:46 +0800 Subject: [PATCH 2/3] feat: diag --check-units + grammar compatibility fixes diag --check-units: - New command to detect orphan units (DB record, no file) and stale mxunit files (file exists, no DB record) - --fix flag auto-removes stale files - bson dump --format bson output format Grammar fixes for MDL baseline scripts: - Add DISPLAY, STRUCTURE to enumValueName rule - Support String(unlimited) syntax in dataType - Add ATTRIBUTE to attributeName rule - Support parenthesized CREATE ASSOCIATION with optional colons - Add SEND, REQUEST, TABLETWIDTH, PHONEWIDTH keywords Co-Authored-By: Claude Opus 4.6 (1M context) --- cmd/mxcli/cmd_bson_dump.go | 11 +- cmd/mxcli/diag.go | 91 + mdl/grammar/MDLLexer.g4 | 5 +- mdl/grammar/MDLParser.g4 | 28 +- mdl/grammar/parser/MDLLexer.interp | 11 +- mdl/grammar/parser/MDLLexer.tokens | 729 +- mdl/grammar/parser/MDLParser.interp | 8 +- mdl/grammar/parser/MDLParser.tokens | 729 +- mdl/grammar/parser/mdl_lexer.go | 5917 ++--- mdl/grammar/parser/mdl_parser.go | 19365 ++++++++++------- mdl/grammar/parser/mdlparser_base_visitor.go | 1504 ++ mdl/grammar/parser/mdlparser_visitor.go | 1131 + sdk/mpr/reader.go | 18 + 13 files changed, 18333 insertions(+), 11214 deletions(-) create mode 100644 mdl/grammar/parser/mdlparser_base_visitor.go create mode 100644 mdl/grammar/parser/mdlparser_visitor.go diff --git a/cmd/mxcli/cmd_bson_dump.go b/cmd/mxcli/cmd_bson_dump.go index 44696b1..7c689fa 100644 --- a/cmd/mxcli/cmd_bson_dump.go +++ b/cmd/mxcli/cmd_bson_dump.go @@ -44,6 +44,9 @@ Examples: # Save dump to file mxcli bson dump -p app.mpr --type page --object "PgTest.MyPage" > mypage.json + + # Extract raw BSON baseline for roundtrip testing + mxcli bson dump -p app.mpr --type page --object "PgTest.MyPage" --format bson > mypage.mxunit `, Run: func(cmd *cobra.Command, args []string) { projectPath, _ := cmd.Flags().GetString("project") @@ -136,6 +139,12 @@ Examples: os.Exit(1) } + if format == "bson" { + // Write raw BSON bytes to stdout (for baseline extraction) + os.Stdout.Write(obj.Contents) + return + } + if format == "ndsl" { var doc bson.D if err := bson.Unmarshal(obj.Contents, &doc); err != nil { @@ -342,5 +351,5 @@ func init() { bsonDumpCmd.Flags().StringP("object", "o", "", "Object qualified name to dump (e.g., Module.PageName)") bsonDumpCmd.Flags().BoolP("list", "l", false, "List all objects of the specified type") bsonDumpCmd.Flags().StringSliceP("compare", "c", nil, "Compare two objects: --compare Obj1,Obj2") - bsonDumpCmd.Flags().String("format", "json", "Output format: json, ndsl") + bsonDumpCmd.Flags().String("format", "json", "Output format: json, ndsl, bson (raw bytes)") } diff --git a/cmd/mxcli/diag.go b/cmd/mxcli/diag.go index 6aae354..27d0c8d 100644 --- a/cmd/mxcli/diag.go +++ b/cmd/mxcli/diag.go @@ -16,6 +16,7 @@ import ( "time" "github.com/mendixlabs/mxcli/mdl/diaglog" + "github.com/mendixlabs/mxcli/sdk/mpr" "github.com/spf13/cobra" ) @@ -47,6 +48,18 @@ Examples: return } + checkUnits, _ := cmd.Flags().GetBool("check-units") + fix, _ := cmd.Flags().GetBool("fix") + if checkUnits { + projectPath, _ := cmd.Flags().GetString("project") + if projectPath == "" { + fmt.Fprintln(os.Stderr, "Error: --check-units requires -p ") + os.Exit(1) + } + runCheckUnits(projectPath, fix) + return + } + if tail > 0 { runDiagTail(logDir, tail) return @@ -60,6 +73,8 @@ func init() { diagCmd.Flags().Bool("log-path", false, "Print log directory path") diagCmd.Flags().Bool("bundle", false, "Create tar.gz with logs for bug reports") diagCmd.Flags().Int("tail", 0, "Show last N log entries") + diagCmd.Flags().Bool("check-units", false, "Check for orphan units and stale mxunit files (MPR v2)") + diagCmd.Flags().Bool("fix", false, "Auto-fix issues found by --check-units") } // runDiagInfo shows diagnostic summary. @@ -252,3 +267,79 @@ func formatBytes(b int64) string { } return fmt.Sprintf("%d KB", b/1024) } + +// runCheckUnits checks for orphan units (Unit table entry without mxunit file) +// and stale mxunit files (file exists but no Unit table entry). MPR v2 only. +func runCheckUnits(mprPath string, fix bool) { + reader, err := mpr.Open(mprPath) + if err != nil { + fmt.Fprintf(os.Stderr, "Error: %v\n", err) + os.Exit(1) + } + defer reader.Close() + + contentsDir := reader.ContentsDir() + if contentsDir == "" { + fmt.Println("Not an MPR v2 project (no mprcontents directory)") + return + } + + // Build set of unit UUIDs from database + unitIDs, err := reader.ListAllUnitIDs() + if err != nil { + fmt.Fprintf(os.Stderr, "Error listing units: %v\n", err) + os.Exit(1) + } + unitSet := make(map[string]bool, len(unitIDs)) + for _, id := range unitIDs { + unitSet[id] = true + } + + // Scan mxunit files + files, err := filepath.Glob(filepath.Join(contentsDir, "*", "*", "*.mxunit")) + if err != nil { + fmt.Fprintf(os.Stderr, "Error scanning mxunit files: %v\n", err) + os.Exit(1) + } + fileSet := make(map[string]string, len(files)) // uuid → filepath + for _, f := range files { + uuid := strings.TrimSuffix(filepath.Base(f), ".mxunit") + fileSet[uuid] = f + } + + // Check for orphan units (in DB but no file) + orphans := 0 + for _, id := range unitIDs { + if _, ok := fileSet[id]; !ok { + fmt.Printf("ORPHAN UNIT: %s (in Unit table but no mxunit file)\n", id) + orphans++ + } + } + + // Check for stale files (file exists but not in DB) + stale := 0 + for uuid, fpath := range fileSet { + if !unitSet[uuid] { + fmt.Printf("STALE FILE: %s\n", uuid) + stale++ + if fix { + if err := os.Remove(fpath); err != nil { + fmt.Fprintf(os.Stderr, " ERROR removing: %v\n", err) + } else { + fmt.Printf(" REMOVED: %s\n", fpath) + // Clean empty parent dirs + dir2 := filepath.Dir(fpath) + os.Remove(dir2) + dir1 := filepath.Dir(dir2) + os.Remove(dir1) + } + } + } + } + + fmt.Printf("\nSummary: %d units in DB, %d mxunit files, %d orphans, %d stale\n", + len(unitIDs), len(files), orphans, stale) + if stale > 0 && !fix { + fmt.Println("Run with --fix to auto-remove stale files") + } +} diff --git a/mdl/grammar/MDLLexer.g4 b/mdl/grammar/MDLLexer.g4 index fd63cc4..d248ea5 100644 --- a/mdl/grammar/MDLLexer.g4 +++ b/mdl/grammar/MDLLexer.g4 @@ -260,8 +260,9 @@ INPUTREFERENCESETSELECTOR: I N P U T R E F E R E N C E S E T S E L E C T O R; FILEINPUT: F I L E I N P U T; IMAGEINPUT: I M A G E I N P U T; -// Custom/Filter widgets +// Custom/Filter/Pluggable widgets CUSTOMWIDGET: C U S T O M W I D G E T; +PLUGGABLEWIDGET: P L U G G A B L E W I D G E T; TEXTFILTER: T E X T F I L T E R; NUMBERFILTER: N U M B E R F I L T E R; DROPDOWNFILTER: D R O P D O W N F I L T E R; @@ -316,6 +317,8 @@ COLLECTION: C O L L E C T I O N; STATICIMAGE: S T A T I C I M A G E; DYNAMICIMAGE: D Y N A M I C I M A G E; CUSTOMCONTAINER: C U S T O M C O N T A I N E R; +TABCONTAINER: T A B C O N T A I N E R; +TABPAGE: T A B P A G E; GROUPBOX: G R O U P B O X; VISIBLE: V I S I B L E; SAVECHANGES: S A V E C H A N G E S; diff --git a/mdl/grammar/MDLParser.g4 b/mdl/grammar/MDLParser.g4 index a907aad..58b279f 100644 --- a/mdl/grammar/MDLParser.g4 +++ b/mdl/grammar/MDLParser.g4 @@ -201,7 +201,8 @@ alterLayoutMapping ; alterPageAssignment - : identifierOrKeyword EQUALS propertyValueV3 // Caption = 'Save' + : DATASOURCE EQUALS dataSourceExprV3 // DataSource = SELECTION widgetName + | identifierOrKeyword EQUALS propertyValueV3 // Caption = 'Save' | STRING_LITERAL EQUALS propertyValueV3 // 'showLabel' = false ; @@ -554,6 +555,7 @@ attributeName : IDENTIFIER | QUOTED_IDENTIFIER // Escape any reserved word ("Range", `Order`) | commonNameKeyword + | ATTRIBUTE // Allow 'Attribute' as attribute name ; attributeConstraint @@ -596,7 +598,7 @@ attributeConstraint * ``` */ dataType - : STRING_TYPE (LPAREN NUMBER_LITERAL RPAREN)? + : STRING_TYPE (LPAREN (NUMBER_LITERAL | IDENTIFIER) RPAREN)? | INTEGER_TYPE | LONG_TYPE | DECIMAL_TYPE @@ -624,7 +626,7 @@ templateContext // Non-list data type - used for createObjectStatement to avoid matching "CREATE LIST OF" nonListDataType - : STRING_TYPE (LPAREN NUMBER_LITERAL RPAREN)? + : STRING_TYPE (LPAREN (NUMBER_LITERAL | IDENTIFIER) RPAREN)? | INTEGER_TYPE | LONG_TYPE | DECIMAL_TYPE @@ -665,6 +667,10 @@ createAssociationStatement FROM qualifiedName TO qualifiedName associationOptions? + | ASSOCIATION qualifiedName LPAREN + FROM qualifiedName TO qualifiedName + (COMMA associationOption)* + RPAREN ; associationOptions @@ -672,9 +678,9 @@ associationOptions ; associationOption - : TYPE (REFERENCE | REFERENCE_SET) - | OWNER (DEFAULT | BOTH) - | STORAGE (COLUMN | TABLE) + : TYPE COLON? (REFERENCE | REFERENCE_SET) + | OWNER COLON? (DEFAULT | BOTH) + | STORAGE COLON? (COLUMN | TABLE) | DELETE_BEHAVIOR deleteBehavior | COMMENT STRING_LITERAL ; @@ -771,6 +777,7 @@ enumValueName | SERVICE | SERVICES // OData/auth keywords used as enum values | GUEST | SESSION | BASIC | CLIENT | CLIENTS | PUBLISH | EXPOSE | EXTERNAL | PAGING | HEADERS + | DISPLAY | STRUCTURE // Layout/structure keywords used as enum values ; enumerationOptions @@ -1780,6 +1787,8 @@ useFragmentRef // V3 Widget: WIDGET name (Props) { children } widgetV3 : widgetTypeV3 IDENTIFIER widgetPropertiesV3? widgetBodyV3? + | PLUGGABLEWIDGET STRING_LITERAL IDENTIFIER widgetPropertiesV3? widgetBodyV3? // PLUGGABLEWIDGET 'widget.id' name + | CUSTOMWIDGET STRING_LITERAL IDENTIFIER widgetPropertiesV3? widgetBodyV3? // CUSTOMWIDGET 'widget.id' name (legacy) ; // V3 Widget types (same as V2) @@ -1822,6 +1831,8 @@ widgetTypeV3 | STATICIMAGE | DYNAMICIMAGE | CUSTOMCONTAINER + | TABCONTAINER + | TABPAGE | GROUPBOX ; @@ -1862,6 +1873,7 @@ widgetPropertyV3 | EDITABLE COLON propertyValueV3 // Editable: Never | Always | TOOLTIP COLON propertyValueV3 // Tooltip: 'text' | IDENTIFIER COLON propertyValueV3 // Generic: any other property + | keyword COLON propertyValueV3 // Generic: keyword as property name (for pluggable widgets) ; // Filter type values - handle keywords like CONTAINS that are also filter types @@ -2573,7 +2585,7 @@ widgetTypeKeyword | COMBOBOX | DYNAMICTEXT | ACTIONBUTTON | LINKBUTTON | DATAVIEW | LISTVIEW | DATAGRID | GALLERY | LAYOUTGRID | IMAGE | STATICIMAGE | DYNAMICIMAGE | HEADER | FOOTER | SNIPPETCALL | NAVIGATIONLIST - | CUSTOMCONTAINER | DROPDOWN | REFERENCESELECTOR | GROUPBOX + | CUSTOMCONTAINER | TABCONTAINER | TABPAGE | DROPDOWN | REFERENCESELECTOR | GROUPBOX | IDENTIFIER ; @@ -3228,7 +3240,7 @@ keyword | ACTIONBUTTON | CHECKBOX | COMBOBOX | CONTROLBAR | DATAGRID | DATAVIEW // Widget keywords | DATEPICKER | DYNAMICTEXT | GALLERY | LAYOUTGRID | LINKBUTTON | LISTVIEW | NAVIGATIONLIST | RADIOBUTTONS | SEARCHBAR | SNIPPETCALL | TEXTAREA | TEXTBOX - | IMAGE | STATICIMAGE | DYNAMICIMAGE | CUSTOMCONTAINER | GROUPBOX + | IMAGE | STATICIMAGE | DYNAMICIMAGE | CUSTOMCONTAINER | TABCONTAINER | TABPAGE | GROUPBOX | HEADER | FOOTER | IMAGEINPUT | VERSION | TIMEOUT | PATH | PUBLISH | PUBLISHED | EXPOSE | NAMESPACE_KW | SOURCE_KW | CONTRACT | CHANNELS | MESSAGES // OData/AsyncAPI keywords | SESSION | GUEST | BASIC | AUTHENTICATION | ODATA | SERVICE | CLIENT | CLIENTS | SERVICES diff --git a/mdl/grammar/parser/MDLLexer.interp b/mdl/grammar/parser/MDLLexer.interp index c7eed28..b981859 100644 --- a/mdl/grammar/parser/MDLLexer.interp +++ b/mdl/grammar/parser/MDLLexer.interp @@ -481,6 +481,9 @@ null null null null +null +null +null '<=' '>=' '=' @@ -700,6 +703,7 @@ INPUTREFERENCESETSELECTOR FILEINPUT IMAGEINPUT CUSTOMWIDGET +PLUGGABLEWIDGET TEXTFILTER NUMBERFILTER DROPDOWNFILTER @@ -750,6 +754,8 @@ COLLECTION STATICIMAGE DYNAMICIMAGE CUSTOMCONTAINER +TABCONTAINER +TABPAGE GROUPBOX VISIBLE SAVECHANGES @@ -1219,6 +1225,7 @@ INPUTREFERENCESETSELECTOR FILEINPUT IMAGEINPUT CUSTOMWIDGET +PLUGGABLEWIDGET TEXTFILTER NUMBERFILTER DROPDOWNFILTER @@ -1269,6 +1276,8 @@ COLLECTION STATICIMAGE DYNAMICIMAGE CUSTOMCONTAINER +TABCONTAINER +TABPAGE GROUPBOX VISIBLE SAVECHANGES @@ -1594,4 +1603,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 517, 5361, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 1, 0, 4, 0, 1095, 8, 0, 11, 0, 12, 0, 1096, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1106, 8, 1, 10, 1, 12, 1, 1109, 9, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1118, 8, 2, 10, 2, 12, 2, 1121, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 1132, 8, 3, 10, 3, 12, 3, 1135, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 4, 4, 1142, 8, 4, 11, 4, 12, 4, 1143, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 1150, 8, 4, 11, 4, 12, 4, 1151, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 4, 5, 1162, 8, 5, 11, 5, 12, 5, 1163, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 4, 6, 1175, 8, 6, 11, 6, 12, 6, 1176, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 4, 7, 1190, 8, 7, 11, 7, 12, 7, 1191, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 4, 8, 1203, 8, 8, 11, 8, 12, 8, 1204, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 4, 9, 1215, 8, 9, 11, 9, 12, 9, 1216, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1247, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 4, 12, 1258, 8, 12, 11, 12, 12, 12, 1259, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 4, 13, 1272, 8, 13, 11, 13, 12, 13, 1273, 1, 13, 1, 13, 1, 13, 1, 13, 4, 13, 1280, 8, 13, 11, 13, 12, 13, 1281, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1337, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 1346, 8, 14, 11, 14, 12, 14, 1347, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 1354, 8, 14, 11, 14, 12, 14, 1355, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 1363, 8, 14, 11, 14, 12, 14, 1364, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1429, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 4, 15, 1438, 8, 15, 11, 15, 12, 15, 1439, 1, 15, 1, 15, 1, 15, 4, 15, 1445, 8, 15, 11, 15, 12, 15, 1446, 1, 15, 1, 15, 1, 15, 4, 15, 1452, 8, 15, 11, 15, 12, 15, 1453, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1512, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1808, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 3, 480, 5125, 8, 480, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 484, 1, 484, 1, 485, 1, 485, 1, 486, 1, 486, 1, 487, 1, 487, 1, 488, 1, 488, 1, 489, 1, 489, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, 492, 1, 492, 1, 492, 1, 492, 1, 493, 1, 493, 1, 494, 1, 494, 1, 495, 1, 495, 1, 496, 1, 496, 1, 497, 1, 497, 1, 498, 1, 498, 1, 499, 1, 499, 1, 500, 1, 500, 1, 501, 1, 501, 1, 502, 1, 502, 1, 503, 1, 503, 1, 504, 1, 504, 1, 505, 1, 505, 1, 505, 1, 506, 1, 506, 1, 506, 1, 507, 1, 507, 1, 508, 1, 508, 1, 509, 1, 509, 1, 509, 1, 509, 5, 509, 5195, 8, 509, 10, 509, 12, 509, 5198, 9, 509, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 5, 510, 5209, 8, 510, 10, 510, 12, 510, 5212, 9, 510, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 5, 511, 5220, 8, 511, 10, 511, 12, 511, 5223, 9, 511, 1, 511, 1, 511, 1, 511, 1, 512, 3, 512, 5229, 8, 512, 1, 512, 4, 512, 5232, 8, 512, 11, 512, 12, 512, 5233, 1, 512, 1, 512, 4, 512, 5238, 8, 512, 11, 512, 12, 512, 5239, 3, 512, 5242, 8, 512, 1, 512, 1, 512, 3, 512, 5246, 8, 512, 1, 512, 4, 512, 5249, 8, 512, 11, 512, 12, 512, 5250, 3, 512, 5253, 8, 512, 1, 513, 1, 513, 4, 513, 5257, 8, 513, 11, 513, 12, 513, 5258, 1, 514, 1, 514, 5, 514, 5263, 8, 514, 10, 514, 12, 514, 5266, 9, 514, 1, 515, 1, 515, 5, 515, 5270, 8, 515, 10, 515, 12, 515, 5273, 9, 515, 1, 515, 4, 515, 5276, 8, 515, 11, 515, 12, 515, 5277, 1, 515, 5, 515, 5281, 8, 515, 10, 515, 12, 515, 5284, 9, 515, 1, 516, 1, 516, 5, 516, 5288, 8, 516, 10, 516, 12, 516, 5291, 9, 516, 1, 516, 1, 516, 1, 516, 5, 516, 5296, 8, 516, 10, 516, 12, 516, 5299, 9, 516, 1, 516, 3, 516, 5302, 8, 516, 1, 517, 1, 517, 1, 518, 1, 518, 1, 519, 1, 519, 1, 520, 1, 520, 1, 521, 1, 521, 1, 522, 1, 522, 1, 523, 1, 523, 1, 524, 1, 524, 1, 525, 1, 525, 1, 526, 1, 526, 1, 527, 1, 527, 1, 528, 1, 528, 1, 529, 1, 529, 1, 530, 1, 530, 1, 531, 1, 531, 1, 532, 1, 532, 1, 533, 1, 533, 1, 534, 1, 534, 1, 535, 1, 535, 1, 536, 1, 536, 1, 537, 1, 537, 1, 538, 1, 538, 1, 539, 1, 539, 1, 540, 1, 540, 1, 541, 1, 541, 1, 542, 1, 542, 1, 543, 1, 543, 1, 544, 1, 544, 1, 545, 1, 545, 4, 1107, 1119, 5196, 5221, 0, 546, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 273, 547, 274, 549, 275, 551, 276, 553, 277, 555, 278, 557, 279, 559, 280, 561, 281, 563, 282, 565, 283, 567, 284, 569, 285, 571, 286, 573, 287, 575, 288, 577, 289, 579, 290, 581, 291, 583, 292, 585, 293, 587, 294, 589, 295, 591, 296, 593, 297, 595, 298, 597, 299, 599, 300, 601, 301, 603, 302, 605, 303, 607, 304, 609, 305, 611, 306, 613, 307, 615, 308, 617, 309, 619, 310, 621, 311, 623, 312, 625, 313, 627, 314, 629, 315, 631, 316, 633, 317, 635, 318, 637, 319, 639, 320, 641, 321, 643, 322, 645, 323, 647, 324, 649, 325, 651, 326, 653, 327, 655, 328, 657, 329, 659, 330, 661, 331, 663, 332, 665, 333, 667, 334, 669, 335, 671, 336, 673, 337, 675, 338, 677, 339, 679, 340, 681, 341, 683, 342, 685, 343, 687, 344, 689, 345, 691, 346, 693, 347, 695, 348, 697, 349, 699, 350, 701, 351, 703, 352, 705, 353, 707, 354, 709, 355, 711, 356, 713, 357, 715, 358, 717, 359, 719, 360, 721, 361, 723, 362, 725, 363, 727, 364, 729, 365, 731, 366, 733, 367, 735, 368, 737, 369, 739, 370, 741, 371, 743, 372, 745, 373, 747, 374, 749, 375, 751, 376, 753, 377, 755, 378, 757, 379, 759, 380, 761, 381, 763, 382, 765, 383, 767, 384, 769, 385, 771, 386, 773, 387, 775, 388, 777, 389, 779, 390, 781, 391, 783, 392, 785, 393, 787, 394, 789, 395, 791, 396, 793, 397, 795, 398, 797, 399, 799, 400, 801, 401, 803, 402, 805, 403, 807, 404, 809, 405, 811, 406, 813, 407, 815, 408, 817, 409, 819, 410, 821, 411, 823, 412, 825, 413, 827, 414, 829, 415, 831, 416, 833, 417, 835, 418, 837, 419, 839, 420, 841, 421, 843, 422, 845, 423, 847, 424, 849, 425, 851, 426, 853, 427, 855, 428, 857, 429, 859, 430, 861, 431, 863, 432, 865, 433, 867, 434, 869, 435, 871, 436, 873, 437, 875, 438, 877, 439, 879, 440, 881, 441, 883, 442, 885, 443, 887, 444, 889, 445, 891, 446, 893, 447, 895, 448, 897, 449, 899, 450, 901, 451, 903, 452, 905, 453, 907, 454, 909, 455, 911, 456, 913, 457, 915, 458, 917, 459, 919, 460, 921, 461, 923, 462, 925, 463, 927, 464, 929, 465, 931, 466, 933, 467, 935, 468, 937, 469, 939, 470, 941, 471, 943, 472, 945, 473, 947, 474, 949, 475, 951, 476, 953, 477, 955, 478, 957, 479, 959, 480, 961, 481, 963, 482, 965, 483, 967, 484, 969, 485, 971, 486, 973, 487, 975, 488, 977, 489, 979, 490, 981, 491, 983, 492, 985, 493, 987, 494, 989, 495, 991, 496, 993, 497, 995, 498, 997, 499, 999, 500, 1001, 501, 1003, 502, 1005, 503, 1007, 504, 1009, 505, 1011, 506, 1013, 507, 1015, 508, 1017, 509, 1019, 510, 1021, 511, 1023, 512, 1025, 513, 1027, 514, 1029, 515, 1031, 516, 1033, 517, 1035, 0, 1037, 0, 1039, 0, 1041, 0, 1043, 0, 1045, 0, 1047, 0, 1049, 0, 1051, 0, 1053, 0, 1055, 0, 1057, 0, 1059, 0, 1061, 0, 1063, 0, 1065, 0, 1067, 0, 1069, 0, 1071, 0, 1073, 0, 1075, 0, 1077, 0, 1079, 0, 1081, 0, 1083, 0, 1085, 0, 1087, 0, 1089, 0, 1091, 0, 1, 0, 35, 2, 0, 9, 13, 32, 32, 2, 0, 10, 10, 13, 13, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 3, 0, 10, 10, 13, 13, 34, 34, 3, 0, 10, 10, 13, 13, 96, 96, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 5380, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 1, 1094, 1, 0, 0, 0, 3, 1100, 1, 0, 0, 0, 5, 1113, 1, 0, 0, 0, 7, 1127, 1, 0, 0, 0, 9, 1138, 1, 0, 0, 0, 11, 1158, 1, 0, 0, 0, 13, 1170, 1, 0, 0, 0, 15, 1183, 1, 0, 0, 0, 17, 1196, 1, 0, 0, 0, 19, 1209, 1, 0, 0, 0, 21, 1221, 1, 0, 0, 0, 23, 1236, 1, 0, 0, 0, 25, 1252, 1, 0, 0, 0, 27, 1336, 1, 0, 0, 0, 29, 1428, 1, 0, 0, 0, 31, 1511, 1, 0, 0, 0, 33, 1513, 1, 0, 0, 0, 35, 1520, 1, 0, 0, 0, 37, 1526, 1, 0, 0, 0, 39, 1531, 1, 0, 0, 0, 41, 1538, 1, 0, 0, 0, 43, 1543, 1, 0, 0, 0, 45, 1550, 1, 0, 0, 0, 47, 1557, 1, 0, 0, 0, 49, 1568, 1, 0, 0, 0, 51, 1573, 1, 0, 0, 0, 53, 1582, 1, 0, 0, 0, 55, 1594, 1, 0, 0, 0, 57, 1606, 1, 0, 0, 0, 59, 1613, 1, 0, 0, 0, 61, 1623, 1, 0, 0, 0, 63, 1632, 1, 0, 0, 0, 65, 1641, 1, 0, 0, 0, 67, 1646, 1, 0, 0, 0, 69, 1654, 1, 0, 0, 0, 71, 1661, 1, 0, 0, 0, 73, 1670, 1, 0, 0, 0, 75, 1679, 1, 0, 0, 0, 77, 1689, 1, 0, 0, 0, 79, 1696, 1, 0, 0, 0, 81, 1704, 1, 0, 0, 0, 83, 1710, 1, 0, 0, 0, 85, 1716, 1, 0, 0, 0, 87, 1722, 1, 0, 0, 0, 89, 1732, 1, 0, 0, 0, 91, 1747, 1, 0, 0, 0, 93, 1755, 1, 0, 0, 0, 95, 1759, 1, 0, 0, 0, 97, 1763, 1, 0, 0, 0, 99, 1772, 1, 0, 0, 0, 101, 1786, 1, 0, 0, 0, 103, 1794, 1, 0, 0, 0, 105, 1800, 1, 0, 0, 0, 107, 1818, 1, 0, 0, 0, 109, 1826, 1, 0, 0, 0, 111, 1834, 1, 0, 0, 0, 113, 1842, 1, 0, 0, 0, 115, 1853, 1, 0, 0, 0, 117, 1859, 1, 0, 0, 0, 119, 1867, 1, 0, 0, 0, 121, 1875, 1, 0, 0, 0, 123, 1882, 1, 0, 0, 0, 125, 1888, 1, 0, 0, 0, 127, 1893, 1, 0, 0, 0, 129, 1898, 1, 0, 0, 0, 131, 1903, 1, 0, 0, 0, 133, 1912, 1, 0, 0, 0, 135, 1916, 1, 0, 0, 0, 137, 1927, 1, 0, 0, 0, 139, 1933, 1, 0, 0, 0, 141, 1940, 1, 0, 0, 0, 143, 1945, 1, 0, 0, 0, 145, 1951, 1, 0, 0, 0, 147, 1958, 1, 0, 0, 0, 149, 1965, 1, 0, 0, 0, 151, 1971, 1, 0, 0, 0, 153, 1974, 1, 0, 0, 0, 155, 1982, 1, 0, 0, 0, 157, 1992, 1, 0, 0, 0, 159, 1997, 1, 0, 0, 0, 161, 2002, 1, 0, 0, 0, 163, 2007, 1, 0, 0, 0, 165, 2012, 1, 0, 0, 0, 167, 2016, 1, 0, 0, 0, 169, 2025, 1, 0, 0, 0, 171, 2029, 1, 0, 0, 0, 173, 2034, 1, 0, 0, 0, 175, 2039, 1, 0, 0, 0, 177, 2045, 1, 0, 0, 0, 179, 2051, 1, 0, 0, 0, 181, 2057, 1, 0, 0, 0, 183, 2062, 1, 0, 0, 0, 185, 2068, 1, 0, 0, 0, 187, 2071, 1, 0, 0, 0, 189, 2075, 1, 0, 0, 0, 191, 2080, 1, 0, 0, 0, 193, 2086, 1, 0, 0, 0, 195, 2094, 1, 0, 0, 0, 197, 2101, 1, 0, 0, 0, 199, 2110, 1, 0, 0, 0, 201, 2117, 1, 0, 0, 0, 203, 2124, 1, 0, 0, 0, 205, 2133, 1, 0, 0, 0, 207, 2138, 1, 0, 0, 0, 209, 2144, 1, 0, 0, 0, 211, 2147, 1, 0, 0, 0, 213, 2153, 1, 0, 0, 0, 215, 2160, 1, 0, 0, 0, 217, 2169, 1, 0, 0, 0, 219, 2175, 1, 0, 0, 0, 221, 2182, 1, 0, 0, 0, 223, 2188, 1, 0, 0, 0, 225, 2192, 1, 0, 0, 0, 227, 2197, 1, 0, 0, 0, 229, 2202, 1, 0, 0, 0, 231, 2213, 1, 0, 0, 0, 233, 2220, 1, 0, 0, 0, 235, 2228, 1, 0, 0, 0, 237, 2234, 1, 0, 0, 0, 239, 2239, 1, 0, 0, 0, 241, 2246, 1, 0, 0, 0, 243, 2251, 1, 0, 0, 0, 245, 2256, 1, 0, 0, 0, 247, 2261, 1, 0, 0, 0, 249, 2266, 1, 0, 0, 0, 251, 2272, 1, 0, 0, 0, 253, 2282, 1, 0, 0, 0, 255, 2291, 1, 0, 0, 0, 257, 2300, 1, 0, 0, 0, 259, 2308, 1, 0, 0, 0, 261, 2316, 1, 0, 0, 0, 263, 2324, 1, 0, 0, 0, 265, 2329, 1, 0, 0, 0, 267, 2336, 1, 0, 0, 0, 269, 2343, 1, 0, 0, 0, 271, 2348, 1, 0, 0, 0, 273, 2356, 1, 0, 0, 0, 275, 2362, 1, 0, 0, 0, 277, 2371, 1, 0, 0, 0, 279, 2376, 1, 0, 0, 0, 281, 2382, 1, 0, 0, 0, 283, 2389, 1, 0, 0, 0, 285, 2397, 1, 0, 0, 0, 287, 2403, 1, 0, 0, 0, 289, 2411, 1, 0, 0, 0, 291, 2420, 1, 0, 0, 0, 293, 2430, 1, 0, 0, 0, 295, 2442, 1, 0, 0, 0, 297, 2454, 1, 0, 0, 0, 299, 2465, 1, 0, 0, 0, 301, 2474, 1, 0, 0, 0, 303, 2483, 1, 0, 0, 0, 305, 2492, 1, 0, 0, 0, 307, 2500, 1, 0, 0, 0, 309, 2510, 1, 0, 0, 0, 311, 2514, 1, 0, 0, 0, 313, 2519, 1, 0, 0, 0, 315, 2530, 1, 0, 0, 0, 317, 2537, 1, 0, 0, 0, 319, 2547, 1, 0, 0, 0, 321, 2562, 1, 0, 0, 0, 323, 2575, 1, 0, 0, 0, 325, 2586, 1, 0, 0, 0, 327, 2593, 1, 0, 0, 0, 329, 2599, 1, 0, 0, 0, 331, 2611, 1, 0, 0, 0, 333, 2619, 1, 0, 0, 0, 335, 2630, 1, 0, 0, 0, 337, 2636, 1, 0, 0, 0, 339, 2644, 1, 0, 0, 0, 341, 2653, 1, 0, 0, 0, 343, 2664, 1, 0, 0, 0, 345, 2677, 1, 0, 0, 0, 347, 2686, 1, 0, 0, 0, 349, 2695, 1, 0, 0, 0, 351, 2704, 1, 0, 0, 0, 353, 2722, 1, 0, 0, 0, 355, 2748, 1, 0, 0, 0, 357, 2758, 1, 0, 0, 0, 359, 2769, 1, 0, 0, 0, 361, 2782, 1, 0, 0, 0, 363, 2793, 1, 0, 0, 0, 365, 2806, 1, 0, 0, 0, 367, 2821, 1, 0, 0, 0, 369, 2832, 1, 0, 0, 0, 371, 2839, 1, 0, 0, 0, 373, 2846, 1, 0, 0, 0, 375, 2854, 1, 0, 0, 0, 377, 2862, 1, 0, 0, 0, 379, 2867, 1, 0, 0, 0, 381, 2875, 1, 0, 0, 0, 383, 2886, 1, 0, 0, 0, 385, 2893, 1, 0, 0, 0, 387, 2903, 1, 0, 0, 0, 389, 2910, 1, 0, 0, 0, 391, 2917, 1, 0, 0, 0, 393, 2925, 1, 0, 0, 0, 395, 2936, 1, 0, 0, 0, 397, 2942, 1, 0, 0, 0, 399, 2947, 1, 0, 0, 0, 401, 2961, 1, 0, 0, 0, 403, 2975, 1, 0, 0, 0, 405, 2982, 1, 0, 0, 0, 407, 2992, 1, 0, 0, 0, 409, 3005, 1, 0, 0, 0, 411, 3017, 1, 0, 0, 0, 413, 3028, 1, 0, 0, 0, 415, 3034, 1, 0, 0, 0, 417, 3040, 1, 0, 0, 0, 419, 3052, 1, 0, 0, 0, 421, 3059, 1, 0, 0, 0, 423, 3070, 1, 0, 0, 0, 425, 3087, 1, 0, 0, 0, 427, 3095, 1, 0, 0, 0, 429, 3101, 1, 0, 0, 0, 431, 3107, 1, 0, 0, 0, 433, 3114, 1, 0, 0, 0, 435, 3123, 1, 0, 0, 0, 437, 3127, 1, 0, 0, 0, 439, 3134, 1, 0, 0, 0, 441, 3142, 1, 0, 0, 0, 443, 3150, 1, 0, 0, 0, 445, 3159, 1, 0, 0, 0, 447, 3168, 1, 0, 0, 0, 449, 3179, 1, 0, 0, 0, 451, 3190, 1, 0, 0, 0, 453, 3196, 1, 0, 0, 0, 455, 3207, 1, 0, 0, 0, 457, 3219, 1, 0, 0, 0, 459, 3232, 1, 0, 0, 0, 461, 3248, 1, 0, 0, 0, 463, 3257, 1, 0, 0, 0, 465, 3265, 1, 0, 0, 0, 467, 3277, 1, 0, 0, 0, 469, 3290, 1, 0, 0, 0, 471, 3305, 1, 0, 0, 0, 473, 3316, 1, 0, 0, 0, 475, 3326, 1, 0, 0, 0, 477, 3340, 1, 0, 0, 0, 479, 3354, 1, 0, 0, 0, 481, 3368, 1, 0, 0, 0, 483, 3383, 1, 0, 0, 0, 485, 3397, 1, 0, 0, 0, 487, 3407, 1, 0, 0, 0, 489, 3416, 1, 0, 0, 0, 491, 3423, 1, 0, 0, 0, 493, 3431, 1, 0, 0, 0, 495, 3439, 1, 0, 0, 0, 497, 3446, 1, 0, 0, 0, 499, 3454, 1, 0, 0, 0, 501, 3459, 1, 0, 0, 0, 503, 3468, 1, 0, 0, 0, 505, 3476, 1, 0, 0, 0, 507, 3485, 1, 0, 0, 0, 509, 3494, 1, 0, 0, 0, 511, 3497, 1, 0, 0, 0, 513, 3500, 1, 0, 0, 0, 515, 3503, 1, 0, 0, 0, 517, 3506, 1, 0, 0, 0, 519, 3509, 1, 0, 0, 0, 521, 3512, 1, 0, 0, 0, 523, 3522, 1, 0, 0, 0, 525, 3529, 1, 0, 0, 0, 527, 3537, 1, 0, 0, 0, 529, 3542, 1, 0, 0, 0, 531, 3550, 1, 0, 0, 0, 533, 3558, 1, 0, 0, 0, 535, 3567, 1, 0, 0, 0, 537, 3572, 1, 0, 0, 0, 539, 3583, 1, 0, 0, 0, 541, 3590, 1, 0, 0, 0, 543, 3603, 1, 0, 0, 0, 545, 3612, 1, 0, 0, 0, 547, 3618, 1, 0, 0, 0, 549, 3633, 1, 0, 0, 0, 551, 3638, 1, 0, 0, 0, 553, 3644, 1, 0, 0, 0, 555, 3648, 1, 0, 0, 0, 557, 3652, 1, 0, 0, 0, 559, 3656, 1, 0, 0, 0, 561, 3660, 1, 0, 0, 0, 563, 3667, 1, 0, 0, 0, 565, 3672, 1, 0, 0, 0, 567, 3681, 1, 0, 0, 0, 569, 3686, 1, 0, 0, 0, 571, 3690, 1, 0, 0, 0, 573, 3693, 1, 0, 0, 0, 575, 3697, 1, 0, 0, 0, 577, 3702, 1, 0, 0, 0, 579, 3705, 1, 0, 0, 0, 581, 3713, 1, 0, 0, 0, 583, 3718, 1, 0, 0, 0, 585, 3724, 1, 0, 0, 0, 587, 3731, 1, 0, 0, 0, 589, 3738, 1, 0, 0, 0, 591, 3746, 1, 0, 0, 0, 593, 3751, 1, 0, 0, 0, 595, 3757, 1, 0, 0, 0, 597, 3768, 1, 0, 0, 0, 599, 3777, 1, 0, 0, 0, 601, 3782, 1, 0, 0, 0, 603, 3791, 1, 0, 0, 0, 605, 3797, 1, 0, 0, 0, 607, 3803, 1, 0, 0, 0, 609, 3809, 1, 0, 0, 0, 611, 3815, 1, 0, 0, 0, 613, 3823, 1, 0, 0, 0, 615, 3834, 1, 0, 0, 0, 617, 3840, 1, 0, 0, 0, 619, 3851, 1, 0, 0, 0, 621, 3862, 1, 0, 0, 0, 623, 3867, 1, 0, 0, 0, 625, 3875, 1, 0, 0, 0, 627, 3884, 1, 0, 0, 0, 629, 3890, 1, 0, 0, 0, 631, 3895, 1, 0, 0, 0, 633, 3900, 1, 0, 0, 0, 635, 3915, 1, 0, 0, 0, 637, 3921, 1, 0, 0, 0, 639, 3929, 1, 0, 0, 0, 641, 3935, 1, 0, 0, 0, 643, 3945, 1, 0, 0, 0, 645, 3952, 1, 0, 0, 0, 647, 3957, 1, 0, 0, 0, 649, 3965, 1, 0, 0, 0, 651, 3970, 1, 0, 0, 0, 653, 3979, 1, 0, 0, 0, 655, 3987, 1, 0, 0, 0, 657, 3992, 1, 0, 0, 0, 659, 3997, 1, 0, 0, 0, 661, 4001, 1, 0, 0, 0, 663, 4008, 1, 0, 0, 0, 665, 4013, 1, 0, 0, 0, 667, 4021, 1, 0, 0, 0, 669, 4025, 1, 0, 0, 0, 671, 4030, 1, 0, 0, 0, 673, 4034, 1, 0, 0, 0, 675, 4040, 1, 0, 0, 0, 677, 4044, 1, 0, 0, 0, 679, 4051, 1, 0, 0, 0, 681, 4059, 1, 0, 0, 0, 683, 4067, 1, 0, 0, 0, 685, 4077, 1, 0, 0, 0, 687, 4084, 1, 0, 0, 0, 689, 4093, 1, 0, 0, 0, 691, 4103, 1, 0, 0, 0, 693, 4111, 1, 0, 0, 0, 695, 4117, 1, 0, 0, 0, 697, 4124, 1, 0, 0, 0, 699, 4138, 1, 0, 0, 0, 701, 4147, 1, 0, 0, 0, 703, 4156, 1, 0, 0, 0, 705, 4167, 1, 0, 0, 0, 707, 4176, 1, 0, 0, 0, 709, 4182, 1, 0, 0, 0, 711, 4186, 1, 0, 0, 0, 713, 4194, 1, 0, 0, 0, 715, 4201, 1, 0, 0, 0, 717, 4206, 1, 0, 0, 0, 719, 4212, 1, 0, 0, 0, 721, 4217, 1, 0, 0, 0, 723, 4224, 1, 0, 0, 0, 725, 4233, 1, 0, 0, 0, 727, 4243, 1, 0, 0, 0, 729, 4248, 1, 0, 0, 0, 731, 4255, 1, 0, 0, 0, 733, 4261, 1, 0, 0, 0, 735, 4269, 1, 0, 0, 0, 737, 4279, 1, 0, 0, 0, 739, 4290, 1, 0, 0, 0, 741, 4298, 1, 0, 0, 0, 743, 4309, 1, 0, 0, 0, 745, 4314, 1, 0, 0, 0, 747, 4320, 1, 0, 0, 0, 749, 4325, 1, 0, 0, 0, 751, 4331, 1, 0, 0, 0, 753, 4337, 1, 0, 0, 0, 755, 4345, 1, 0, 0, 0, 757, 4354, 1, 0, 0, 0, 759, 4367, 1, 0, 0, 0, 761, 4378, 1, 0, 0, 0, 763, 4388, 1, 0, 0, 0, 765, 4398, 1, 0, 0, 0, 767, 4411, 1, 0, 0, 0, 769, 4421, 1, 0, 0, 0, 771, 4433, 1, 0, 0, 0, 773, 4440, 1, 0, 0, 0, 775, 4449, 1, 0, 0, 0, 777, 4459, 1, 0, 0, 0, 779, 4466, 1, 0, 0, 0, 781, 4473, 1, 0, 0, 0, 783, 4479, 1, 0, 0, 0, 785, 4486, 1, 0, 0, 0, 787, 4494, 1, 0, 0, 0, 789, 4500, 1, 0, 0, 0, 791, 4506, 1, 0, 0, 0, 793, 4514, 1, 0, 0, 0, 795, 4521, 1, 0, 0, 0, 797, 4526, 1, 0, 0, 0, 799, 4532, 1, 0, 0, 0, 801, 4537, 1, 0, 0, 0, 803, 4543, 1, 0, 0, 0, 805, 4551, 1, 0, 0, 0, 807, 4560, 1, 0, 0, 0, 809, 4569, 1, 0, 0, 0, 811, 4577, 1, 0, 0, 0, 813, 4585, 1, 0, 0, 0, 815, 4591, 1, 0, 0, 0, 817, 4602, 1, 0, 0, 0, 819, 4610, 1, 0, 0, 0, 821, 4618, 1, 0, 0, 0, 823, 4629, 1, 0, 0, 0, 825, 4640, 1, 0, 0, 0, 827, 4647, 1, 0, 0, 0, 829, 4653, 1, 0, 0, 0, 831, 4663, 1, 0, 0, 0, 833, 4668, 1, 0, 0, 0, 835, 4674, 1, 0, 0, 0, 837, 4681, 1, 0, 0, 0, 839, 4688, 1, 0, 0, 0, 841, 4697, 1, 0, 0, 0, 843, 4702, 1, 0, 0, 0, 845, 4707, 1, 0, 0, 0, 847, 4710, 1, 0, 0, 0, 849, 4713, 1, 0, 0, 0, 851, 4718, 1, 0, 0, 0, 853, 4722, 1, 0, 0, 0, 855, 4730, 1, 0, 0, 0, 857, 4738, 1, 0, 0, 0, 859, 4752, 1, 0, 0, 0, 861, 4759, 1, 0, 0, 0, 863, 4763, 1, 0, 0, 0, 865, 4771, 1, 0, 0, 0, 867, 4775, 1, 0, 0, 0, 869, 4779, 1, 0, 0, 0, 871, 4790, 1, 0, 0, 0, 873, 4793, 1, 0, 0, 0, 875, 4802, 1, 0, 0, 0, 877, 4808, 1, 0, 0, 0, 879, 4818, 1, 0, 0, 0, 881, 4827, 1, 0, 0, 0, 883, 4841, 1, 0, 0, 0, 885, 4850, 1, 0, 0, 0, 887, 4855, 1, 0, 0, 0, 889, 4861, 1, 0, 0, 0, 891, 4867, 1, 0, 0, 0, 893, 4874, 1, 0, 0, 0, 895, 4885, 1, 0, 0, 0, 897, 4895, 1, 0, 0, 0, 899, 4902, 1, 0, 0, 0, 901, 4907, 1, 0, 0, 0, 903, 4914, 1, 0, 0, 0, 905, 4920, 1, 0, 0, 0, 907, 4927, 1, 0, 0, 0, 909, 4933, 1, 0, 0, 0, 911, 4938, 1, 0, 0, 0, 913, 4943, 1, 0, 0, 0, 915, 4952, 1, 0, 0, 0, 917, 4958, 1, 0, 0, 0, 919, 4967, 1, 0, 0, 0, 921, 4977, 1, 0, 0, 0, 923, 4990, 1, 0, 0, 0, 925, 4996, 1, 0, 0, 0, 927, 5001, 1, 0, 0, 0, 929, 5005, 1, 0, 0, 0, 931, 5014, 1, 0, 0, 0, 933, 5019, 1, 0, 0, 0, 935, 5028, 1, 0, 0, 0, 937, 5033, 1, 0, 0, 0, 939, 5044, 1, 0, 0, 0, 941, 5053, 1, 0, 0, 0, 943, 5066, 1, 0, 0, 0, 945, 5070, 1, 0, 0, 0, 947, 5076, 1, 0, 0, 0, 949, 5079, 1, 0, 0, 0, 951, 5084, 1, 0, 0, 0, 953, 5090, 1, 0, 0, 0, 955, 5102, 1, 0, 0, 0, 957, 5110, 1, 0, 0, 0, 959, 5114, 1, 0, 0, 0, 961, 5124, 1, 0, 0, 0, 963, 5126, 1, 0, 0, 0, 965, 5129, 1, 0, 0, 0, 967, 5132, 1, 0, 0, 0, 969, 5134, 1, 0, 0, 0, 971, 5136, 1, 0, 0, 0, 973, 5138, 1, 0, 0, 0, 975, 5140, 1, 0, 0, 0, 977, 5142, 1, 0, 0, 0, 979, 5144, 1, 0, 0, 0, 981, 5146, 1, 0, 0, 0, 983, 5148, 1, 0, 0, 0, 985, 5152, 1, 0, 0, 0, 987, 5156, 1, 0, 0, 0, 989, 5158, 1, 0, 0, 0, 991, 5160, 1, 0, 0, 0, 993, 5162, 1, 0, 0, 0, 995, 5164, 1, 0, 0, 0, 997, 5166, 1, 0, 0, 0, 999, 5168, 1, 0, 0, 0, 1001, 5170, 1, 0, 0, 0, 1003, 5172, 1, 0, 0, 0, 1005, 5174, 1, 0, 0, 0, 1007, 5176, 1, 0, 0, 0, 1009, 5178, 1, 0, 0, 0, 1011, 5180, 1, 0, 0, 0, 1013, 5183, 1, 0, 0, 0, 1015, 5186, 1, 0, 0, 0, 1017, 5188, 1, 0, 0, 0, 1019, 5190, 1, 0, 0, 0, 1021, 5202, 1, 0, 0, 0, 1023, 5215, 1, 0, 0, 0, 1025, 5228, 1, 0, 0, 0, 1027, 5254, 1, 0, 0, 0, 1029, 5260, 1, 0, 0, 0, 1031, 5267, 1, 0, 0, 0, 1033, 5301, 1, 0, 0, 0, 1035, 5303, 1, 0, 0, 0, 1037, 5305, 1, 0, 0, 0, 1039, 5307, 1, 0, 0, 0, 1041, 5309, 1, 0, 0, 0, 1043, 5311, 1, 0, 0, 0, 1045, 5313, 1, 0, 0, 0, 1047, 5315, 1, 0, 0, 0, 1049, 5317, 1, 0, 0, 0, 1051, 5319, 1, 0, 0, 0, 1053, 5321, 1, 0, 0, 0, 1055, 5323, 1, 0, 0, 0, 1057, 5325, 1, 0, 0, 0, 1059, 5327, 1, 0, 0, 0, 1061, 5329, 1, 0, 0, 0, 1063, 5331, 1, 0, 0, 0, 1065, 5333, 1, 0, 0, 0, 1067, 5335, 1, 0, 0, 0, 1069, 5337, 1, 0, 0, 0, 1071, 5339, 1, 0, 0, 0, 1073, 5341, 1, 0, 0, 0, 1075, 5343, 1, 0, 0, 0, 1077, 5345, 1, 0, 0, 0, 1079, 5347, 1, 0, 0, 0, 1081, 5349, 1, 0, 0, 0, 1083, 5351, 1, 0, 0, 0, 1085, 5353, 1, 0, 0, 0, 1087, 5355, 1, 0, 0, 0, 1089, 5357, 1, 0, 0, 0, 1091, 5359, 1, 0, 0, 0, 1093, 1095, 7, 0, 0, 0, 1094, 1093, 1, 0, 0, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1094, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 1099, 6, 0, 0, 0, 1099, 2, 1, 0, 0, 0, 1100, 1101, 5, 47, 0, 0, 1101, 1102, 5, 42, 0, 0, 1102, 1103, 5, 42, 0, 0, 1103, 1107, 1, 0, 0, 0, 1104, 1106, 9, 0, 0, 0, 1105, 1104, 1, 0, 0, 0, 1106, 1109, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1107, 1105, 1, 0, 0, 0, 1108, 1110, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1110, 1111, 5, 42, 0, 0, 1111, 1112, 5, 47, 0, 0, 1112, 4, 1, 0, 0, 0, 1113, 1114, 5, 47, 0, 0, 1114, 1115, 5, 42, 0, 0, 1115, 1119, 1, 0, 0, 0, 1116, 1118, 9, 0, 0, 0, 1117, 1116, 1, 0, 0, 0, 1118, 1121, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1119, 1117, 1, 0, 0, 0, 1120, 1122, 1, 0, 0, 0, 1121, 1119, 1, 0, 0, 0, 1122, 1123, 5, 42, 0, 0, 1123, 1124, 5, 47, 0, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, 6, 2, 0, 0, 1126, 6, 1, 0, 0, 0, 1127, 1128, 5, 45, 0, 0, 1128, 1129, 5, 45, 0, 0, 1129, 1133, 1, 0, 0, 0, 1130, 1132, 8, 1, 0, 0, 1131, 1130, 1, 0, 0, 0, 1132, 1135, 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1136, 1, 0, 0, 0, 1135, 1133, 1, 0, 0, 0, 1136, 1137, 6, 3, 0, 0, 1137, 8, 1, 0, 0, 0, 1138, 1139, 3, 1057, 528, 0, 1139, 1141, 3, 1077, 538, 0, 1140, 1142, 3, 1, 0, 0, 1141, 1140, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1141, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 3, 1067, 533, 0, 1146, 1147, 3, 1069, 534, 0, 1147, 1149, 3, 1079, 539, 0, 1148, 1150, 3, 1, 0, 0, 1149, 1148, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1149, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1154, 3, 1067, 533, 0, 1154, 1155, 3, 1081, 540, 0, 1155, 1156, 3, 1063, 531, 0, 1156, 1157, 3, 1063, 531, 0, 1157, 10, 1, 0, 0, 0, 1158, 1159, 3, 1057, 528, 0, 1159, 1161, 3, 1077, 538, 0, 1160, 1162, 3, 1, 0, 0, 1161, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1161, 1, 0, 0, 0, 1163, 1164, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1166, 3, 1067, 533, 0, 1166, 1167, 3, 1081, 540, 0, 1167, 1168, 3, 1063, 531, 0, 1168, 1169, 3, 1063, 531, 0, 1169, 12, 1, 0, 0, 0, 1170, 1171, 3, 1067, 533, 0, 1171, 1172, 3, 1069, 534, 0, 1172, 1174, 3, 1079, 539, 0, 1173, 1175, 3, 1, 0, 0, 1174, 1173, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1179, 3, 1067, 533, 0, 1179, 1180, 3, 1081, 540, 0, 1180, 1181, 3, 1063, 531, 0, 1181, 1182, 3, 1063, 531, 0, 1182, 14, 1, 0, 0, 0, 1183, 1184, 3, 1053, 526, 0, 1184, 1185, 3, 1075, 537, 0, 1185, 1186, 3, 1069, 534, 0, 1186, 1187, 3, 1081, 540, 0, 1187, 1189, 3, 1071, 535, 0, 1188, 1190, 3, 1, 0, 0, 1189, 1188, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1189, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1194, 3, 1043, 521, 0, 1194, 1195, 3, 1089, 544, 0, 1195, 16, 1, 0, 0, 0, 1196, 1197, 3, 1069, 534, 0, 1197, 1198, 3, 1075, 537, 0, 1198, 1199, 3, 1047, 523, 0, 1199, 1200, 3, 1049, 524, 0, 1200, 1202, 3, 1075, 537, 0, 1201, 1203, 3, 1, 0, 0, 1202, 1201, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1202, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1206, 1, 0, 0, 0, 1206, 1207, 3, 1043, 521, 0, 1207, 1208, 3, 1089, 544, 0, 1208, 18, 1, 0, 0, 0, 1209, 1210, 3, 1077, 538, 0, 1210, 1211, 3, 1069, 534, 0, 1211, 1212, 3, 1075, 537, 0, 1212, 1214, 3, 1079, 539, 0, 1213, 1215, 3, 1, 0, 0, 1214, 1213, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1214, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1219, 3, 1043, 521, 0, 1219, 1220, 3, 1089, 544, 0, 1220, 20, 1, 0, 0, 0, 1221, 1222, 3, 1067, 533, 0, 1222, 1223, 3, 1069, 534, 0, 1223, 1224, 3, 1067, 533, 0, 1224, 1225, 5, 45, 0, 0, 1225, 1226, 3, 1071, 535, 0, 1226, 1227, 3, 1049, 524, 0, 1227, 1228, 3, 1075, 537, 0, 1228, 1229, 3, 1077, 538, 0, 1229, 1230, 3, 1057, 528, 0, 1230, 1231, 3, 1077, 538, 0, 1231, 1232, 3, 1079, 539, 0, 1232, 1233, 3, 1049, 524, 0, 1233, 1234, 3, 1067, 533, 0, 1234, 1235, 3, 1079, 539, 0, 1235, 22, 1, 0, 0, 0, 1236, 1237, 3, 1075, 537, 0, 1237, 1238, 3, 1049, 524, 0, 1238, 1239, 3, 1051, 525, 0, 1239, 1240, 3, 1049, 524, 0, 1240, 1241, 3, 1075, 537, 0, 1241, 1242, 3, 1049, 524, 0, 1242, 1243, 3, 1067, 533, 0, 1243, 1244, 3, 1045, 522, 0, 1244, 1246, 3, 1049, 524, 0, 1245, 1247, 5, 95, 0, 0, 1246, 1245, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1248, 1, 0, 0, 0, 1248, 1249, 3, 1077, 538, 0, 1249, 1250, 3, 1049, 524, 0, 1250, 1251, 3, 1079, 539, 0, 1251, 24, 1, 0, 0, 0, 1252, 1253, 3, 1063, 531, 0, 1253, 1254, 3, 1057, 528, 0, 1254, 1255, 3, 1077, 538, 0, 1255, 1257, 3, 1079, 539, 0, 1256, 1258, 3, 1, 0, 0, 1257, 1256, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1257, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1262, 3, 1069, 534, 0, 1262, 1263, 3, 1051, 525, 0, 1263, 26, 1, 0, 0, 0, 1264, 1265, 3, 1047, 523, 0, 1265, 1266, 3, 1049, 524, 0, 1266, 1267, 3, 1063, 531, 0, 1267, 1268, 3, 1049, 524, 0, 1268, 1269, 3, 1079, 539, 0, 1269, 1271, 3, 1049, 524, 0, 1270, 1272, 3, 1, 0, 0, 1271, 1270, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1271, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, 1276, 3, 1041, 520, 0, 1276, 1277, 3, 1067, 533, 0, 1277, 1279, 3, 1047, 523, 0, 1278, 1280, 3, 1, 0, 0, 1279, 1278, 1, 0, 0, 0, 1280, 1281, 1, 0, 0, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 3, 1075, 537, 0, 1284, 1285, 3, 1049, 524, 0, 1285, 1286, 3, 1051, 525, 0, 1286, 1287, 3, 1049, 524, 0, 1287, 1288, 3, 1075, 537, 0, 1288, 1289, 3, 1049, 524, 0, 1289, 1290, 3, 1067, 533, 0, 1290, 1291, 3, 1045, 522, 0, 1291, 1292, 3, 1049, 524, 0, 1292, 1293, 3, 1077, 538, 0, 1293, 1337, 1, 0, 0, 0, 1294, 1295, 3, 1047, 523, 0, 1295, 1296, 3, 1049, 524, 0, 1296, 1297, 3, 1063, 531, 0, 1297, 1298, 3, 1049, 524, 0, 1298, 1299, 3, 1079, 539, 0, 1299, 1300, 3, 1049, 524, 0, 1300, 1301, 5, 95, 0, 0, 1301, 1302, 3, 1041, 520, 0, 1302, 1303, 3, 1067, 533, 0, 1303, 1304, 3, 1047, 523, 0, 1304, 1305, 5, 95, 0, 0, 1305, 1306, 3, 1075, 537, 0, 1306, 1307, 3, 1049, 524, 0, 1307, 1308, 3, 1051, 525, 0, 1308, 1309, 3, 1049, 524, 0, 1309, 1310, 3, 1075, 537, 0, 1310, 1311, 3, 1049, 524, 0, 1311, 1312, 3, 1067, 533, 0, 1312, 1313, 3, 1045, 522, 0, 1313, 1314, 3, 1049, 524, 0, 1314, 1315, 3, 1077, 538, 0, 1315, 1337, 1, 0, 0, 0, 1316, 1317, 3, 1047, 523, 0, 1317, 1318, 3, 1049, 524, 0, 1318, 1319, 3, 1063, 531, 0, 1319, 1320, 3, 1049, 524, 0, 1320, 1321, 3, 1079, 539, 0, 1321, 1322, 3, 1049, 524, 0, 1322, 1323, 3, 1041, 520, 0, 1323, 1324, 3, 1067, 533, 0, 1324, 1325, 3, 1047, 523, 0, 1325, 1326, 3, 1075, 537, 0, 1326, 1327, 3, 1049, 524, 0, 1327, 1328, 3, 1051, 525, 0, 1328, 1329, 3, 1049, 524, 0, 1329, 1330, 3, 1075, 537, 0, 1330, 1331, 3, 1049, 524, 0, 1331, 1332, 3, 1067, 533, 0, 1332, 1333, 3, 1045, 522, 0, 1333, 1334, 3, 1049, 524, 0, 1334, 1335, 3, 1077, 538, 0, 1335, 1337, 1, 0, 0, 0, 1336, 1264, 1, 0, 0, 0, 1336, 1294, 1, 0, 0, 0, 1336, 1316, 1, 0, 0, 0, 1337, 28, 1, 0, 0, 0, 1338, 1339, 3, 1047, 523, 0, 1339, 1340, 3, 1049, 524, 0, 1340, 1341, 3, 1063, 531, 0, 1341, 1342, 3, 1049, 524, 0, 1342, 1343, 3, 1079, 539, 0, 1343, 1345, 3, 1049, 524, 0, 1344, 1346, 3, 1, 0, 0, 1345, 1344, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1350, 3, 1043, 521, 0, 1350, 1351, 3, 1081, 540, 0, 1351, 1353, 3, 1079, 539, 0, 1352, 1354, 3, 1, 0, 0, 1353, 1352, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1353, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1358, 3, 1061, 530, 0, 1358, 1359, 3, 1049, 524, 0, 1359, 1360, 3, 1049, 524, 0, 1360, 1362, 3, 1071, 535, 0, 1361, 1363, 3, 1, 0, 0, 1362, 1361, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1367, 3, 1075, 537, 0, 1367, 1368, 3, 1049, 524, 0, 1368, 1369, 3, 1051, 525, 0, 1369, 1370, 3, 1049, 524, 0, 1370, 1371, 3, 1075, 537, 0, 1371, 1372, 3, 1049, 524, 0, 1372, 1373, 3, 1067, 533, 0, 1373, 1374, 3, 1045, 522, 0, 1374, 1375, 3, 1049, 524, 0, 1375, 1376, 3, 1077, 538, 0, 1376, 1429, 1, 0, 0, 0, 1377, 1378, 3, 1047, 523, 0, 1378, 1379, 3, 1049, 524, 0, 1379, 1380, 3, 1063, 531, 0, 1380, 1381, 3, 1049, 524, 0, 1381, 1382, 3, 1079, 539, 0, 1382, 1383, 3, 1049, 524, 0, 1383, 1384, 5, 95, 0, 0, 1384, 1385, 3, 1043, 521, 0, 1385, 1386, 3, 1081, 540, 0, 1386, 1387, 3, 1079, 539, 0, 1387, 1388, 5, 95, 0, 0, 1388, 1389, 3, 1061, 530, 0, 1389, 1390, 3, 1049, 524, 0, 1390, 1391, 3, 1049, 524, 0, 1391, 1392, 3, 1071, 535, 0, 1392, 1393, 5, 95, 0, 0, 1393, 1394, 3, 1075, 537, 0, 1394, 1395, 3, 1049, 524, 0, 1395, 1396, 3, 1051, 525, 0, 1396, 1397, 3, 1049, 524, 0, 1397, 1398, 3, 1075, 537, 0, 1398, 1399, 3, 1049, 524, 0, 1399, 1400, 3, 1067, 533, 0, 1400, 1401, 3, 1045, 522, 0, 1401, 1402, 3, 1049, 524, 0, 1402, 1403, 3, 1077, 538, 0, 1403, 1429, 1, 0, 0, 0, 1404, 1405, 3, 1047, 523, 0, 1405, 1406, 3, 1049, 524, 0, 1406, 1407, 3, 1063, 531, 0, 1407, 1408, 3, 1049, 524, 0, 1408, 1409, 3, 1079, 539, 0, 1409, 1410, 3, 1049, 524, 0, 1410, 1411, 3, 1043, 521, 0, 1411, 1412, 3, 1081, 540, 0, 1412, 1413, 3, 1079, 539, 0, 1413, 1414, 3, 1061, 530, 0, 1414, 1415, 3, 1049, 524, 0, 1415, 1416, 3, 1049, 524, 0, 1416, 1417, 3, 1071, 535, 0, 1417, 1418, 3, 1075, 537, 0, 1418, 1419, 3, 1049, 524, 0, 1419, 1420, 3, 1051, 525, 0, 1420, 1421, 3, 1049, 524, 0, 1421, 1422, 3, 1075, 537, 0, 1422, 1423, 3, 1049, 524, 0, 1423, 1424, 3, 1067, 533, 0, 1424, 1425, 3, 1045, 522, 0, 1425, 1426, 3, 1049, 524, 0, 1426, 1427, 3, 1077, 538, 0, 1427, 1429, 1, 0, 0, 0, 1428, 1338, 1, 0, 0, 0, 1428, 1377, 1, 0, 0, 0, 1428, 1404, 1, 0, 0, 0, 1429, 30, 1, 0, 0, 0, 1430, 1431, 3, 1047, 523, 0, 1431, 1432, 3, 1049, 524, 0, 1432, 1433, 3, 1063, 531, 0, 1433, 1434, 3, 1049, 524, 0, 1434, 1435, 3, 1079, 539, 0, 1435, 1437, 3, 1049, 524, 0, 1436, 1438, 3, 1, 0, 0, 1437, 1436, 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 1437, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1442, 3, 1057, 528, 0, 1442, 1444, 3, 1051, 525, 0, 1443, 1445, 3, 1, 0, 0, 1444, 1443, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1444, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1447, 1448, 1, 0, 0, 0, 1448, 1449, 3, 1067, 533, 0, 1449, 1451, 3, 1069, 534, 0, 1450, 1452, 3, 1, 0, 0, 1451, 1450, 1, 0, 0, 0, 1452, 1453, 1, 0, 0, 0, 1453, 1451, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 1, 0, 0, 0, 1455, 1456, 3, 1075, 537, 0, 1456, 1457, 3, 1049, 524, 0, 1457, 1458, 3, 1051, 525, 0, 1458, 1459, 3, 1049, 524, 0, 1459, 1460, 3, 1075, 537, 0, 1460, 1461, 3, 1049, 524, 0, 1461, 1462, 3, 1067, 533, 0, 1462, 1463, 3, 1045, 522, 0, 1463, 1464, 3, 1049, 524, 0, 1464, 1465, 3, 1077, 538, 0, 1465, 1512, 1, 0, 0, 0, 1466, 1467, 3, 1047, 523, 0, 1467, 1468, 3, 1049, 524, 0, 1468, 1469, 3, 1063, 531, 0, 1469, 1470, 3, 1049, 524, 0, 1470, 1471, 3, 1079, 539, 0, 1471, 1472, 3, 1049, 524, 0, 1472, 1473, 5, 95, 0, 0, 1473, 1474, 3, 1057, 528, 0, 1474, 1475, 3, 1051, 525, 0, 1475, 1476, 5, 95, 0, 0, 1476, 1477, 3, 1067, 533, 0, 1477, 1478, 3, 1069, 534, 0, 1478, 1479, 5, 95, 0, 0, 1479, 1480, 3, 1075, 537, 0, 1480, 1481, 3, 1049, 524, 0, 1481, 1482, 3, 1051, 525, 0, 1482, 1483, 3, 1049, 524, 0, 1483, 1484, 3, 1075, 537, 0, 1484, 1485, 3, 1049, 524, 0, 1485, 1486, 3, 1067, 533, 0, 1486, 1487, 3, 1045, 522, 0, 1487, 1488, 3, 1049, 524, 0, 1488, 1489, 3, 1077, 538, 0, 1489, 1512, 1, 0, 0, 0, 1490, 1491, 3, 1047, 523, 0, 1491, 1492, 3, 1049, 524, 0, 1492, 1493, 3, 1063, 531, 0, 1493, 1494, 3, 1049, 524, 0, 1494, 1495, 3, 1079, 539, 0, 1495, 1496, 3, 1049, 524, 0, 1496, 1497, 3, 1057, 528, 0, 1497, 1498, 3, 1051, 525, 0, 1498, 1499, 3, 1067, 533, 0, 1499, 1500, 3, 1069, 534, 0, 1500, 1501, 3, 1075, 537, 0, 1501, 1502, 3, 1049, 524, 0, 1502, 1503, 3, 1051, 525, 0, 1503, 1504, 3, 1049, 524, 0, 1504, 1505, 3, 1075, 537, 0, 1505, 1506, 3, 1049, 524, 0, 1506, 1507, 3, 1067, 533, 0, 1507, 1508, 3, 1045, 522, 0, 1508, 1509, 3, 1049, 524, 0, 1509, 1510, 3, 1077, 538, 0, 1510, 1512, 1, 0, 0, 0, 1511, 1430, 1, 0, 0, 0, 1511, 1466, 1, 0, 0, 0, 1511, 1490, 1, 0, 0, 0, 1512, 32, 1, 0, 0, 0, 1513, 1514, 3, 1045, 522, 0, 1514, 1515, 3, 1075, 537, 0, 1515, 1516, 3, 1049, 524, 0, 1516, 1517, 3, 1041, 520, 0, 1517, 1518, 3, 1079, 539, 0, 1518, 1519, 3, 1049, 524, 0, 1519, 34, 1, 0, 0, 0, 1520, 1521, 3, 1041, 520, 0, 1521, 1522, 3, 1063, 531, 0, 1522, 1523, 3, 1079, 539, 0, 1523, 1524, 3, 1049, 524, 0, 1524, 1525, 3, 1075, 537, 0, 1525, 36, 1, 0, 0, 0, 1526, 1527, 3, 1047, 523, 0, 1527, 1528, 3, 1075, 537, 0, 1528, 1529, 3, 1069, 534, 0, 1529, 1530, 3, 1071, 535, 0, 1530, 38, 1, 0, 0, 0, 1531, 1532, 3, 1075, 537, 0, 1532, 1533, 3, 1049, 524, 0, 1533, 1534, 3, 1067, 533, 0, 1534, 1535, 3, 1041, 520, 0, 1535, 1536, 3, 1065, 532, 0, 1536, 1537, 3, 1049, 524, 0, 1537, 40, 1, 0, 0, 0, 1538, 1539, 3, 1065, 532, 0, 1539, 1540, 3, 1069, 534, 0, 1540, 1541, 3, 1083, 541, 0, 1541, 1542, 3, 1049, 524, 0, 1542, 42, 1, 0, 0, 0, 1543, 1544, 3, 1065, 532, 0, 1544, 1545, 3, 1069, 534, 0, 1545, 1546, 3, 1047, 523, 0, 1546, 1547, 3, 1057, 528, 0, 1547, 1548, 3, 1051, 525, 0, 1548, 1549, 3, 1089, 544, 0, 1549, 44, 1, 0, 0, 0, 1550, 1551, 3, 1049, 524, 0, 1551, 1552, 3, 1067, 533, 0, 1552, 1553, 3, 1079, 539, 0, 1553, 1554, 3, 1057, 528, 0, 1554, 1555, 3, 1079, 539, 0, 1555, 1556, 3, 1089, 544, 0, 1556, 46, 1, 0, 0, 0, 1557, 1558, 3, 1071, 535, 0, 1558, 1559, 3, 1049, 524, 0, 1559, 1560, 3, 1075, 537, 0, 1560, 1561, 3, 1077, 538, 0, 1561, 1562, 3, 1057, 528, 0, 1562, 1563, 3, 1077, 538, 0, 1563, 1564, 3, 1079, 539, 0, 1564, 1565, 3, 1049, 524, 0, 1565, 1566, 3, 1067, 533, 0, 1566, 1567, 3, 1079, 539, 0, 1567, 48, 1, 0, 0, 0, 1568, 1569, 3, 1083, 541, 0, 1569, 1570, 3, 1057, 528, 0, 1570, 1571, 3, 1049, 524, 0, 1571, 1572, 3, 1085, 542, 0, 1572, 50, 1, 0, 0, 0, 1573, 1574, 3, 1049, 524, 0, 1574, 1575, 3, 1087, 543, 0, 1575, 1576, 3, 1079, 539, 0, 1576, 1577, 3, 1049, 524, 0, 1577, 1578, 3, 1075, 537, 0, 1578, 1579, 3, 1067, 533, 0, 1579, 1580, 3, 1041, 520, 0, 1580, 1581, 3, 1063, 531, 0, 1581, 52, 1, 0, 0, 0, 1582, 1583, 3, 1041, 520, 0, 1583, 1584, 3, 1077, 538, 0, 1584, 1585, 3, 1077, 538, 0, 1585, 1586, 3, 1069, 534, 0, 1586, 1587, 3, 1045, 522, 0, 1587, 1588, 3, 1057, 528, 0, 1588, 1589, 3, 1041, 520, 0, 1589, 1590, 3, 1079, 539, 0, 1590, 1591, 3, 1057, 528, 0, 1591, 1592, 3, 1069, 534, 0, 1592, 1593, 3, 1067, 533, 0, 1593, 54, 1, 0, 0, 0, 1594, 1595, 3, 1049, 524, 0, 1595, 1596, 3, 1067, 533, 0, 1596, 1597, 3, 1081, 540, 0, 1597, 1598, 3, 1065, 532, 0, 1598, 1599, 3, 1049, 524, 0, 1599, 1600, 3, 1075, 537, 0, 1600, 1601, 3, 1041, 520, 0, 1601, 1602, 3, 1079, 539, 0, 1602, 1603, 3, 1057, 528, 0, 1603, 1604, 3, 1069, 534, 0, 1604, 1605, 3, 1067, 533, 0, 1605, 56, 1, 0, 0, 0, 1606, 1607, 3, 1065, 532, 0, 1607, 1608, 3, 1069, 534, 0, 1608, 1609, 3, 1047, 523, 0, 1609, 1610, 3, 1081, 540, 0, 1610, 1611, 3, 1063, 531, 0, 1611, 1612, 3, 1049, 524, 0, 1612, 58, 1, 0, 0, 0, 1613, 1614, 3, 1065, 532, 0, 1614, 1615, 3, 1057, 528, 0, 1615, 1616, 3, 1045, 522, 0, 1616, 1617, 3, 1075, 537, 0, 1617, 1618, 3, 1069, 534, 0, 1618, 1619, 3, 1051, 525, 0, 1619, 1620, 3, 1063, 531, 0, 1620, 1621, 3, 1069, 534, 0, 1621, 1622, 3, 1085, 542, 0, 1622, 60, 1, 0, 0, 0, 1623, 1624, 3, 1067, 533, 0, 1624, 1625, 3, 1041, 520, 0, 1625, 1626, 3, 1067, 533, 0, 1626, 1627, 3, 1069, 534, 0, 1627, 1628, 3, 1051, 525, 0, 1628, 1629, 3, 1063, 531, 0, 1629, 1630, 3, 1069, 534, 0, 1630, 1631, 3, 1085, 542, 0, 1631, 62, 1, 0, 0, 0, 1632, 1633, 3, 1085, 542, 0, 1633, 1634, 3, 1069, 534, 0, 1634, 1635, 3, 1075, 537, 0, 1635, 1636, 3, 1061, 530, 0, 1636, 1637, 3, 1051, 525, 0, 1637, 1638, 3, 1063, 531, 0, 1638, 1639, 3, 1069, 534, 0, 1639, 1640, 3, 1085, 542, 0, 1640, 64, 1, 0, 0, 0, 1641, 1642, 3, 1071, 535, 0, 1642, 1643, 3, 1041, 520, 0, 1643, 1644, 3, 1053, 526, 0, 1644, 1645, 3, 1049, 524, 0, 1645, 66, 1, 0, 0, 0, 1646, 1647, 3, 1077, 538, 0, 1647, 1648, 3, 1067, 533, 0, 1648, 1649, 3, 1057, 528, 0, 1649, 1650, 3, 1071, 535, 0, 1650, 1651, 3, 1071, 535, 0, 1651, 1652, 3, 1049, 524, 0, 1652, 1653, 3, 1079, 539, 0, 1653, 68, 1, 0, 0, 0, 1654, 1655, 3, 1063, 531, 0, 1655, 1656, 3, 1041, 520, 0, 1656, 1657, 3, 1089, 544, 0, 1657, 1658, 3, 1069, 534, 0, 1658, 1659, 3, 1081, 540, 0, 1659, 1660, 3, 1079, 539, 0, 1660, 70, 1, 0, 0, 0, 1661, 1662, 3, 1067, 533, 0, 1662, 1663, 3, 1069, 534, 0, 1663, 1664, 3, 1079, 539, 0, 1664, 1665, 3, 1049, 524, 0, 1665, 1666, 3, 1043, 521, 0, 1666, 1667, 3, 1069, 534, 0, 1667, 1668, 3, 1069, 534, 0, 1668, 1669, 3, 1061, 530, 0, 1669, 72, 1, 0, 0, 0, 1670, 1671, 3, 1045, 522, 0, 1671, 1672, 3, 1069, 534, 0, 1672, 1673, 3, 1067, 533, 0, 1673, 1674, 3, 1077, 538, 0, 1674, 1675, 3, 1079, 539, 0, 1675, 1676, 3, 1041, 520, 0, 1676, 1677, 3, 1067, 533, 0, 1677, 1678, 3, 1079, 539, 0, 1678, 74, 1, 0, 0, 0, 1679, 1680, 3, 1041, 520, 0, 1680, 1681, 3, 1079, 539, 0, 1681, 1682, 3, 1079, 539, 0, 1682, 1683, 3, 1075, 537, 0, 1683, 1684, 3, 1057, 528, 0, 1684, 1685, 3, 1043, 521, 0, 1685, 1686, 3, 1081, 540, 0, 1686, 1687, 3, 1079, 539, 0, 1687, 1688, 3, 1049, 524, 0, 1688, 76, 1, 0, 0, 0, 1689, 1690, 3, 1045, 522, 0, 1690, 1691, 3, 1069, 534, 0, 1691, 1692, 3, 1063, 531, 0, 1692, 1693, 3, 1081, 540, 0, 1693, 1694, 3, 1065, 532, 0, 1694, 1695, 3, 1067, 533, 0, 1695, 78, 1, 0, 0, 0, 1696, 1697, 3, 1045, 522, 0, 1697, 1698, 3, 1069, 534, 0, 1698, 1699, 3, 1063, 531, 0, 1699, 1700, 3, 1081, 540, 0, 1700, 1701, 3, 1065, 532, 0, 1701, 1702, 3, 1067, 533, 0, 1702, 1703, 3, 1077, 538, 0, 1703, 80, 1, 0, 0, 0, 1704, 1705, 3, 1057, 528, 0, 1705, 1706, 3, 1067, 533, 0, 1706, 1707, 3, 1047, 523, 0, 1707, 1708, 3, 1049, 524, 0, 1708, 1709, 3, 1087, 543, 0, 1709, 82, 1, 0, 0, 0, 1710, 1711, 3, 1069, 534, 0, 1711, 1712, 3, 1085, 542, 0, 1712, 1713, 3, 1067, 533, 0, 1713, 1714, 3, 1049, 524, 0, 1714, 1715, 3, 1075, 537, 0, 1715, 84, 1, 0, 0, 0, 1716, 1717, 3, 1077, 538, 0, 1717, 1718, 3, 1079, 539, 0, 1718, 1719, 3, 1069, 534, 0, 1719, 1720, 3, 1075, 537, 0, 1720, 1721, 3, 1049, 524, 0, 1721, 86, 1, 0, 0, 0, 1722, 1723, 3, 1075, 537, 0, 1723, 1724, 3, 1049, 524, 0, 1724, 1725, 3, 1051, 525, 0, 1725, 1726, 3, 1049, 524, 0, 1726, 1727, 3, 1075, 537, 0, 1727, 1728, 3, 1049, 524, 0, 1728, 1729, 3, 1067, 533, 0, 1729, 1730, 3, 1045, 522, 0, 1730, 1731, 3, 1049, 524, 0, 1731, 88, 1, 0, 0, 0, 1732, 1733, 3, 1053, 526, 0, 1733, 1734, 3, 1049, 524, 0, 1734, 1735, 3, 1067, 533, 0, 1735, 1736, 3, 1049, 524, 0, 1736, 1737, 3, 1075, 537, 0, 1737, 1738, 3, 1041, 520, 0, 1738, 1739, 3, 1063, 531, 0, 1739, 1740, 3, 1057, 528, 0, 1740, 1741, 3, 1091, 545, 0, 1741, 1742, 3, 1041, 520, 0, 1742, 1743, 3, 1079, 539, 0, 1743, 1744, 3, 1057, 528, 0, 1744, 1745, 3, 1069, 534, 0, 1745, 1746, 3, 1067, 533, 0, 1746, 90, 1, 0, 0, 0, 1747, 1748, 3, 1049, 524, 0, 1748, 1749, 3, 1087, 543, 0, 1749, 1750, 3, 1079, 539, 0, 1750, 1751, 3, 1049, 524, 0, 1751, 1752, 3, 1067, 533, 0, 1752, 1753, 3, 1047, 523, 0, 1753, 1754, 3, 1077, 538, 0, 1754, 92, 1, 0, 0, 0, 1755, 1756, 3, 1041, 520, 0, 1756, 1757, 3, 1047, 523, 0, 1757, 1758, 3, 1047, 523, 0, 1758, 94, 1, 0, 0, 0, 1759, 1760, 3, 1077, 538, 0, 1760, 1761, 3, 1049, 524, 0, 1761, 1762, 3, 1079, 539, 0, 1762, 96, 1, 0, 0, 0, 1763, 1764, 3, 1071, 535, 0, 1764, 1765, 3, 1069, 534, 0, 1765, 1766, 3, 1077, 538, 0, 1766, 1767, 3, 1057, 528, 0, 1767, 1768, 3, 1079, 539, 0, 1768, 1769, 3, 1057, 528, 0, 1769, 1770, 3, 1069, 534, 0, 1770, 1771, 3, 1067, 533, 0, 1771, 98, 1, 0, 0, 0, 1772, 1773, 3, 1047, 523, 0, 1773, 1774, 3, 1069, 534, 0, 1774, 1775, 3, 1045, 522, 0, 1775, 1776, 3, 1081, 540, 0, 1776, 1777, 3, 1065, 532, 0, 1777, 1778, 3, 1049, 524, 0, 1778, 1779, 3, 1067, 533, 0, 1779, 1780, 3, 1079, 539, 0, 1780, 1781, 3, 1041, 520, 0, 1781, 1782, 3, 1079, 539, 0, 1782, 1783, 3, 1057, 528, 0, 1783, 1784, 3, 1069, 534, 0, 1784, 1785, 3, 1067, 533, 0, 1785, 100, 1, 0, 0, 0, 1786, 1787, 3, 1077, 538, 0, 1787, 1788, 3, 1079, 539, 0, 1788, 1789, 3, 1069, 534, 0, 1789, 1790, 3, 1075, 537, 0, 1790, 1791, 3, 1041, 520, 0, 1791, 1792, 3, 1053, 526, 0, 1792, 1793, 3, 1049, 524, 0, 1793, 102, 1, 0, 0, 0, 1794, 1795, 3, 1079, 539, 0, 1795, 1796, 3, 1041, 520, 0, 1796, 1797, 3, 1043, 521, 0, 1797, 1798, 3, 1063, 531, 0, 1798, 1799, 3, 1049, 524, 0, 1799, 104, 1, 0, 0, 0, 1800, 1801, 3, 1047, 523, 0, 1801, 1802, 3, 1049, 524, 0, 1802, 1803, 3, 1063, 531, 0, 1803, 1804, 3, 1049, 524, 0, 1804, 1805, 3, 1079, 539, 0, 1805, 1807, 3, 1049, 524, 0, 1806, 1808, 5, 95, 0, 0, 1807, 1806, 1, 0, 0, 0, 1807, 1808, 1, 0, 0, 0, 1808, 1809, 1, 0, 0, 0, 1809, 1810, 3, 1043, 521, 0, 1810, 1811, 3, 1049, 524, 0, 1811, 1812, 3, 1055, 527, 0, 1812, 1813, 3, 1041, 520, 0, 1813, 1814, 3, 1083, 541, 0, 1814, 1815, 3, 1057, 528, 0, 1815, 1816, 3, 1069, 534, 0, 1816, 1817, 3, 1075, 537, 0, 1817, 106, 1, 0, 0, 0, 1818, 1819, 3, 1045, 522, 0, 1819, 1820, 3, 1041, 520, 0, 1820, 1821, 3, 1077, 538, 0, 1821, 1822, 3, 1045, 522, 0, 1822, 1823, 3, 1041, 520, 0, 1823, 1824, 3, 1047, 523, 0, 1824, 1825, 3, 1049, 524, 0, 1825, 108, 1, 0, 0, 0, 1826, 1827, 3, 1071, 535, 0, 1827, 1828, 3, 1075, 537, 0, 1828, 1829, 3, 1049, 524, 0, 1829, 1830, 3, 1083, 541, 0, 1830, 1831, 3, 1049, 524, 0, 1831, 1832, 3, 1067, 533, 0, 1832, 1833, 3, 1079, 539, 0, 1833, 110, 1, 0, 0, 0, 1834, 1835, 3, 1045, 522, 0, 1835, 1836, 3, 1069, 534, 0, 1836, 1837, 3, 1067, 533, 0, 1837, 1838, 3, 1067, 533, 0, 1838, 1839, 3, 1049, 524, 0, 1839, 1840, 3, 1045, 522, 0, 1840, 1841, 3, 1079, 539, 0, 1841, 112, 1, 0, 0, 0, 1842, 1843, 3, 1047, 523, 0, 1843, 1844, 3, 1057, 528, 0, 1844, 1845, 3, 1077, 538, 0, 1845, 1846, 3, 1045, 522, 0, 1846, 1847, 3, 1069, 534, 0, 1847, 1848, 3, 1067, 533, 0, 1848, 1849, 3, 1067, 533, 0, 1849, 1850, 3, 1049, 524, 0, 1850, 1851, 3, 1045, 522, 0, 1851, 1852, 3, 1079, 539, 0, 1852, 114, 1, 0, 0, 0, 1853, 1854, 3, 1063, 531, 0, 1854, 1855, 3, 1069, 534, 0, 1855, 1856, 3, 1045, 522, 0, 1856, 1857, 3, 1041, 520, 0, 1857, 1858, 3, 1063, 531, 0, 1858, 116, 1, 0, 0, 0, 1859, 1860, 3, 1071, 535, 0, 1860, 1861, 3, 1075, 537, 0, 1861, 1862, 3, 1069, 534, 0, 1862, 1863, 3, 1059, 529, 0, 1863, 1864, 3, 1049, 524, 0, 1864, 1865, 3, 1045, 522, 0, 1865, 1866, 3, 1079, 539, 0, 1866, 118, 1, 0, 0, 0, 1867, 1868, 3, 1075, 537, 0, 1868, 1869, 3, 1081, 540, 0, 1869, 1870, 3, 1067, 533, 0, 1870, 1871, 3, 1079, 539, 0, 1871, 1872, 3, 1057, 528, 0, 1872, 1873, 3, 1065, 532, 0, 1873, 1874, 3, 1049, 524, 0, 1874, 120, 1, 0, 0, 0, 1875, 1876, 3, 1043, 521, 0, 1876, 1877, 3, 1075, 537, 0, 1877, 1878, 3, 1041, 520, 0, 1878, 1879, 3, 1067, 533, 0, 1879, 1880, 3, 1045, 522, 0, 1880, 1881, 3, 1055, 527, 0, 1881, 122, 1, 0, 0, 0, 1882, 1883, 3, 1079, 539, 0, 1883, 1884, 3, 1069, 534, 0, 1884, 1885, 3, 1061, 530, 0, 1885, 1886, 3, 1049, 524, 0, 1886, 1887, 3, 1067, 533, 0, 1887, 124, 1, 0, 0, 0, 1888, 1889, 3, 1055, 527, 0, 1889, 1890, 3, 1069, 534, 0, 1890, 1891, 3, 1077, 538, 0, 1891, 1892, 3, 1079, 539, 0, 1892, 126, 1, 0, 0, 0, 1893, 1894, 3, 1071, 535, 0, 1894, 1895, 3, 1069, 534, 0, 1895, 1896, 3, 1075, 537, 0, 1896, 1897, 3, 1079, 539, 0, 1897, 128, 1, 0, 0, 0, 1898, 1899, 3, 1077, 538, 0, 1899, 1900, 3, 1055, 527, 0, 1900, 1901, 3, 1069, 534, 0, 1901, 1902, 3, 1085, 542, 0, 1902, 130, 1, 0, 0, 0, 1903, 1904, 3, 1047, 523, 0, 1904, 1905, 3, 1049, 524, 0, 1905, 1906, 3, 1077, 538, 0, 1906, 1907, 3, 1045, 522, 0, 1907, 1908, 3, 1075, 537, 0, 1908, 1909, 3, 1057, 528, 0, 1909, 1910, 3, 1043, 521, 0, 1910, 1911, 3, 1049, 524, 0, 1911, 132, 1, 0, 0, 0, 1912, 1913, 3, 1081, 540, 0, 1913, 1914, 3, 1077, 538, 0, 1914, 1915, 3, 1049, 524, 0, 1915, 134, 1, 0, 0, 0, 1916, 1917, 3, 1057, 528, 0, 1917, 1918, 3, 1067, 533, 0, 1918, 1919, 3, 1079, 539, 0, 1919, 1920, 3, 1075, 537, 0, 1920, 1921, 3, 1069, 534, 0, 1921, 1922, 3, 1077, 538, 0, 1922, 1923, 3, 1071, 535, 0, 1923, 1924, 3, 1049, 524, 0, 1924, 1925, 3, 1045, 522, 0, 1925, 1926, 3, 1079, 539, 0, 1926, 136, 1, 0, 0, 0, 1927, 1928, 3, 1047, 523, 0, 1928, 1929, 3, 1049, 524, 0, 1929, 1930, 3, 1043, 521, 0, 1930, 1931, 3, 1081, 540, 0, 1931, 1932, 3, 1053, 526, 0, 1932, 138, 1, 0, 0, 0, 1933, 1934, 3, 1077, 538, 0, 1934, 1935, 3, 1049, 524, 0, 1935, 1936, 3, 1063, 531, 0, 1936, 1937, 3, 1049, 524, 0, 1937, 1938, 3, 1045, 522, 0, 1938, 1939, 3, 1079, 539, 0, 1939, 140, 1, 0, 0, 0, 1940, 1941, 3, 1051, 525, 0, 1941, 1942, 3, 1075, 537, 0, 1942, 1943, 3, 1069, 534, 0, 1943, 1944, 3, 1065, 532, 0, 1944, 142, 1, 0, 0, 0, 1945, 1946, 3, 1085, 542, 0, 1946, 1947, 3, 1055, 527, 0, 1947, 1948, 3, 1049, 524, 0, 1948, 1949, 3, 1075, 537, 0, 1949, 1950, 3, 1049, 524, 0, 1950, 144, 1, 0, 0, 0, 1951, 1952, 3, 1055, 527, 0, 1952, 1953, 3, 1041, 520, 0, 1953, 1954, 3, 1083, 541, 0, 1954, 1955, 3, 1057, 528, 0, 1955, 1956, 3, 1067, 533, 0, 1956, 1957, 3, 1053, 526, 0, 1957, 146, 1, 0, 0, 0, 1958, 1959, 3, 1069, 534, 0, 1959, 1960, 3, 1051, 525, 0, 1960, 1961, 3, 1051, 525, 0, 1961, 1962, 3, 1077, 538, 0, 1962, 1963, 3, 1049, 524, 0, 1963, 1964, 3, 1079, 539, 0, 1964, 148, 1, 0, 0, 0, 1965, 1966, 3, 1063, 531, 0, 1966, 1967, 3, 1057, 528, 0, 1967, 1968, 3, 1065, 532, 0, 1968, 1969, 3, 1057, 528, 0, 1969, 1970, 3, 1079, 539, 0, 1970, 150, 1, 0, 0, 0, 1971, 1972, 3, 1041, 520, 0, 1972, 1973, 3, 1077, 538, 0, 1973, 152, 1, 0, 0, 0, 1974, 1975, 3, 1075, 537, 0, 1975, 1976, 3, 1049, 524, 0, 1976, 1977, 3, 1079, 539, 0, 1977, 1978, 3, 1081, 540, 0, 1978, 1979, 3, 1075, 537, 0, 1979, 1980, 3, 1067, 533, 0, 1980, 1981, 3, 1077, 538, 0, 1981, 154, 1, 0, 0, 0, 1982, 1983, 3, 1075, 537, 0, 1983, 1984, 3, 1049, 524, 0, 1984, 1985, 3, 1079, 539, 0, 1985, 1986, 3, 1081, 540, 0, 1986, 1987, 3, 1075, 537, 0, 1987, 1988, 3, 1067, 533, 0, 1988, 1989, 3, 1057, 528, 0, 1989, 1990, 3, 1067, 533, 0, 1990, 1991, 3, 1053, 526, 0, 1991, 156, 1, 0, 0, 0, 1992, 1993, 3, 1045, 522, 0, 1993, 1994, 3, 1041, 520, 0, 1994, 1995, 3, 1077, 538, 0, 1995, 1996, 3, 1049, 524, 0, 1996, 158, 1, 0, 0, 0, 1997, 1998, 3, 1085, 542, 0, 1998, 1999, 3, 1055, 527, 0, 1999, 2000, 3, 1049, 524, 0, 2000, 2001, 3, 1067, 533, 0, 2001, 160, 1, 0, 0, 0, 2002, 2003, 3, 1079, 539, 0, 2003, 2004, 3, 1055, 527, 0, 2004, 2005, 3, 1049, 524, 0, 2005, 2006, 3, 1067, 533, 0, 2006, 162, 1, 0, 0, 0, 2007, 2008, 3, 1049, 524, 0, 2008, 2009, 3, 1063, 531, 0, 2009, 2010, 3, 1077, 538, 0, 2010, 2011, 3, 1049, 524, 0, 2011, 164, 1, 0, 0, 0, 2012, 2013, 3, 1049, 524, 0, 2013, 2014, 3, 1067, 533, 0, 2014, 2015, 3, 1047, 523, 0, 2015, 166, 1, 0, 0, 0, 2016, 2017, 3, 1047, 523, 0, 2017, 2018, 3, 1057, 528, 0, 2018, 2019, 3, 1077, 538, 0, 2019, 2020, 3, 1079, 539, 0, 2020, 2021, 3, 1057, 528, 0, 2021, 2022, 3, 1067, 533, 0, 2022, 2023, 3, 1045, 522, 0, 2023, 2024, 3, 1079, 539, 0, 2024, 168, 1, 0, 0, 0, 2025, 2026, 3, 1041, 520, 0, 2026, 2027, 3, 1063, 531, 0, 2027, 2028, 3, 1063, 531, 0, 2028, 170, 1, 0, 0, 0, 2029, 2030, 3, 1059, 529, 0, 2030, 2031, 3, 1069, 534, 0, 2031, 2032, 3, 1057, 528, 0, 2032, 2033, 3, 1067, 533, 0, 2033, 172, 1, 0, 0, 0, 2034, 2035, 3, 1063, 531, 0, 2035, 2036, 3, 1049, 524, 0, 2036, 2037, 3, 1051, 525, 0, 2037, 2038, 3, 1079, 539, 0, 2038, 174, 1, 0, 0, 0, 2039, 2040, 3, 1075, 537, 0, 2040, 2041, 3, 1057, 528, 0, 2041, 2042, 3, 1053, 526, 0, 2042, 2043, 3, 1055, 527, 0, 2043, 2044, 3, 1079, 539, 0, 2044, 176, 1, 0, 0, 0, 2045, 2046, 3, 1057, 528, 0, 2046, 2047, 3, 1067, 533, 0, 2047, 2048, 3, 1067, 533, 0, 2048, 2049, 3, 1049, 524, 0, 2049, 2050, 3, 1075, 537, 0, 2050, 178, 1, 0, 0, 0, 2051, 2052, 3, 1069, 534, 0, 2052, 2053, 3, 1081, 540, 0, 2053, 2054, 3, 1079, 539, 0, 2054, 2055, 3, 1049, 524, 0, 2055, 2056, 3, 1075, 537, 0, 2056, 180, 1, 0, 0, 0, 2057, 2058, 3, 1051, 525, 0, 2058, 2059, 3, 1081, 540, 0, 2059, 2060, 3, 1063, 531, 0, 2060, 2061, 3, 1063, 531, 0, 2061, 182, 1, 0, 0, 0, 2062, 2063, 3, 1045, 522, 0, 2063, 2064, 3, 1075, 537, 0, 2064, 2065, 3, 1069, 534, 0, 2065, 2066, 3, 1077, 538, 0, 2066, 2067, 3, 1077, 538, 0, 2067, 184, 1, 0, 0, 0, 2068, 2069, 3, 1069, 534, 0, 2069, 2070, 3, 1067, 533, 0, 2070, 186, 1, 0, 0, 0, 2071, 2072, 3, 1041, 520, 0, 2072, 2073, 3, 1077, 538, 0, 2073, 2074, 3, 1045, 522, 0, 2074, 188, 1, 0, 0, 0, 2075, 2076, 3, 1047, 523, 0, 2076, 2077, 3, 1049, 524, 0, 2077, 2078, 3, 1077, 538, 0, 2078, 2079, 3, 1045, 522, 0, 2079, 190, 1, 0, 0, 0, 2080, 2081, 3, 1043, 521, 0, 2081, 2082, 3, 1049, 524, 0, 2082, 2083, 3, 1053, 526, 0, 2083, 2084, 3, 1057, 528, 0, 2084, 2085, 3, 1067, 533, 0, 2085, 192, 1, 0, 0, 0, 2086, 2087, 3, 1047, 523, 0, 2087, 2088, 3, 1049, 524, 0, 2088, 2089, 3, 1045, 522, 0, 2089, 2090, 3, 1063, 531, 0, 2090, 2091, 3, 1041, 520, 0, 2091, 2092, 3, 1075, 537, 0, 2092, 2093, 3, 1049, 524, 0, 2093, 194, 1, 0, 0, 0, 2094, 2095, 3, 1045, 522, 0, 2095, 2096, 3, 1055, 527, 0, 2096, 2097, 3, 1041, 520, 0, 2097, 2098, 3, 1067, 533, 0, 2098, 2099, 3, 1053, 526, 0, 2099, 2100, 3, 1049, 524, 0, 2100, 196, 1, 0, 0, 0, 2101, 2102, 3, 1075, 537, 0, 2102, 2103, 3, 1049, 524, 0, 2103, 2104, 3, 1079, 539, 0, 2104, 2105, 3, 1075, 537, 0, 2105, 2106, 3, 1057, 528, 0, 2106, 2107, 3, 1049, 524, 0, 2107, 2108, 3, 1083, 541, 0, 2108, 2109, 3, 1049, 524, 0, 2109, 198, 1, 0, 0, 0, 2110, 2111, 3, 1047, 523, 0, 2111, 2112, 3, 1049, 524, 0, 2112, 2113, 3, 1063, 531, 0, 2113, 2114, 3, 1049, 524, 0, 2114, 2115, 3, 1079, 539, 0, 2115, 2116, 3, 1049, 524, 0, 2116, 200, 1, 0, 0, 0, 2117, 2118, 3, 1045, 522, 0, 2118, 2119, 3, 1069, 534, 0, 2119, 2120, 3, 1065, 532, 0, 2120, 2121, 3, 1065, 532, 0, 2121, 2122, 3, 1057, 528, 0, 2122, 2123, 3, 1079, 539, 0, 2123, 202, 1, 0, 0, 0, 2124, 2125, 3, 1075, 537, 0, 2125, 2126, 3, 1069, 534, 0, 2126, 2127, 3, 1063, 531, 0, 2127, 2128, 3, 1063, 531, 0, 2128, 2129, 3, 1043, 521, 0, 2129, 2130, 3, 1041, 520, 0, 2130, 2131, 3, 1045, 522, 0, 2131, 2132, 3, 1061, 530, 0, 2132, 204, 1, 0, 0, 0, 2133, 2134, 3, 1063, 531, 0, 2134, 2135, 3, 1069, 534, 0, 2135, 2136, 3, 1069, 534, 0, 2136, 2137, 3, 1071, 535, 0, 2137, 206, 1, 0, 0, 0, 2138, 2139, 3, 1085, 542, 0, 2139, 2140, 3, 1055, 527, 0, 2140, 2141, 3, 1057, 528, 0, 2141, 2142, 3, 1063, 531, 0, 2142, 2143, 3, 1049, 524, 0, 2143, 208, 1, 0, 0, 0, 2144, 2145, 3, 1057, 528, 0, 2145, 2146, 3, 1051, 525, 0, 2146, 210, 1, 0, 0, 0, 2147, 2148, 3, 1049, 524, 0, 2148, 2149, 3, 1063, 531, 0, 2149, 2150, 3, 1077, 538, 0, 2150, 2151, 3, 1057, 528, 0, 2151, 2152, 3, 1051, 525, 0, 2152, 212, 1, 0, 0, 0, 2153, 2154, 3, 1049, 524, 0, 2154, 2155, 3, 1063, 531, 0, 2155, 2156, 3, 1077, 538, 0, 2156, 2157, 3, 1049, 524, 0, 2157, 2158, 3, 1057, 528, 0, 2158, 2159, 3, 1051, 525, 0, 2159, 214, 1, 0, 0, 0, 2160, 2161, 3, 1045, 522, 0, 2161, 2162, 3, 1069, 534, 0, 2162, 2163, 3, 1067, 533, 0, 2163, 2164, 3, 1079, 539, 0, 2164, 2165, 3, 1057, 528, 0, 2165, 2166, 3, 1067, 533, 0, 2166, 2167, 3, 1081, 540, 0, 2167, 2168, 3, 1049, 524, 0, 2168, 216, 1, 0, 0, 0, 2169, 2170, 3, 1043, 521, 0, 2170, 2171, 3, 1075, 537, 0, 2171, 2172, 3, 1049, 524, 0, 2172, 2173, 3, 1041, 520, 0, 2173, 2174, 3, 1061, 530, 0, 2174, 218, 1, 0, 0, 0, 2175, 2176, 3, 1075, 537, 0, 2176, 2177, 3, 1049, 524, 0, 2177, 2178, 3, 1079, 539, 0, 2178, 2179, 3, 1081, 540, 0, 2179, 2180, 3, 1075, 537, 0, 2180, 2181, 3, 1067, 533, 0, 2181, 220, 1, 0, 0, 0, 2182, 2183, 3, 1079, 539, 0, 2183, 2184, 3, 1055, 527, 0, 2184, 2185, 3, 1075, 537, 0, 2185, 2186, 3, 1069, 534, 0, 2186, 2187, 3, 1085, 542, 0, 2187, 222, 1, 0, 0, 0, 2188, 2189, 3, 1063, 531, 0, 2189, 2190, 3, 1069, 534, 0, 2190, 2191, 3, 1053, 526, 0, 2191, 224, 1, 0, 0, 0, 2192, 2193, 3, 1045, 522, 0, 2193, 2194, 3, 1041, 520, 0, 2194, 2195, 3, 1063, 531, 0, 2195, 2196, 3, 1063, 531, 0, 2196, 226, 1, 0, 0, 0, 2197, 2198, 3, 1059, 529, 0, 2198, 2199, 3, 1041, 520, 0, 2199, 2200, 3, 1083, 541, 0, 2200, 2201, 3, 1041, 520, 0, 2201, 228, 1, 0, 0, 0, 2202, 2203, 3, 1059, 529, 0, 2203, 2204, 3, 1041, 520, 0, 2204, 2205, 3, 1083, 541, 0, 2205, 2206, 3, 1041, 520, 0, 2206, 2207, 3, 1077, 538, 0, 2207, 2208, 3, 1045, 522, 0, 2208, 2209, 3, 1075, 537, 0, 2209, 2210, 3, 1057, 528, 0, 2210, 2211, 3, 1071, 535, 0, 2211, 2212, 3, 1079, 539, 0, 2212, 230, 1, 0, 0, 0, 2213, 2214, 3, 1041, 520, 0, 2214, 2215, 3, 1045, 522, 0, 2215, 2216, 3, 1079, 539, 0, 2216, 2217, 3, 1057, 528, 0, 2217, 2218, 3, 1069, 534, 0, 2218, 2219, 3, 1067, 533, 0, 2219, 232, 1, 0, 0, 0, 2220, 2221, 3, 1041, 520, 0, 2221, 2222, 3, 1045, 522, 0, 2222, 2223, 3, 1079, 539, 0, 2223, 2224, 3, 1057, 528, 0, 2224, 2225, 3, 1069, 534, 0, 2225, 2226, 3, 1067, 533, 0, 2226, 2227, 3, 1077, 538, 0, 2227, 234, 1, 0, 0, 0, 2228, 2229, 3, 1045, 522, 0, 2229, 2230, 3, 1063, 531, 0, 2230, 2231, 3, 1069, 534, 0, 2231, 2232, 3, 1077, 538, 0, 2232, 2233, 3, 1049, 524, 0, 2233, 236, 1, 0, 0, 0, 2234, 2235, 3, 1067, 533, 0, 2235, 2236, 3, 1069, 534, 0, 2236, 2237, 3, 1047, 523, 0, 2237, 2238, 3, 1049, 524, 0, 2238, 238, 1, 0, 0, 0, 2239, 2240, 3, 1049, 524, 0, 2240, 2241, 3, 1083, 541, 0, 2241, 2242, 3, 1049, 524, 0, 2242, 2243, 3, 1067, 533, 0, 2243, 2244, 3, 1079, 539, 0, 2244, 2245, 3, 1077, 538, 0, 2245, 240, 1, 0, 0, 0, 2246, 2247, 3, 1055, 527, 0, 2247, 2248, 3, 1049, 524, 0, 2248, 2249, 3, 1041, 520, 0, 2249, 2250, 3, 1047, 523, 0, 2250, 242, 1, 0, 0, 0, 2251, 2252, 3, 1079, 539, 0, 2252, 2253, 3, 1041, 520, 0, 2253, 2254, 3, 1057, 528, 0, 2254, 2255, 3, 1063, 531, 0, 2255, 244, 1, 0, 0, 0, 2256, 2257, 3, 1051, 525, 0, 2257, 2258, 3, 1057, 528, 0, 2258, 2259, 3, 1067, 533, 0, 2259, 2260, 3, 1047, 523, 0, 2260, 246, 1, 0, 0, 0, 2261, 2262, 3, 1077, 538, 0, 2262, 2263, 3, 1069, 534, 0, 2263, 2264, 3, 1075, 537, 0, 2264, 2265, 3, 1079, 539, 0, 2265, 248, 1, 0, 0, 0, 2266, 2267, 3, 1081, 540, 0, 2267, 2268, 3, 1067, 533, 0, 2268, 2269, 3, 1057, 528, 0, 2269, 2270, 3, 1069, 534, 0, 2270, 2271, 3, 1067, 533, 0, 2271, 250, 1, 0, 0, 0, 2272, 2273, 3, 1057, 528, 0, 2273, 2274, 3, 1067, 533, 0, 2274, 2275, 3, 1079, 539, 0, 2275, 2276, 3, 1049, 524, 0, 2276, 2277, 3, 1075, 537, 0, 2277, 2278, 3, 1077, 538, 0, 2278, 2279, 3, 1049, 524, 0, 2279, 2280, 3, 1045, 522, 0, 2280, 2281, 3, 1079, 539, 0, 2281, 252, 1, 0, 0, 0, 2282, 2283, 3, 1077, 538, 0, 2283, 2284, 3, 1081, 540, 0, 2284, 2285, 3, 1043, 521, 0, 2285, 2286, 3, 1079, 539, 0, 2286, 2287, 3, 1075, 537, 0, 2287, 2288, 3, 1041, 520, 0, 2288, 2289, 3, 1045, 522, 0, 2289, 2290, 3, 1079, 539, 0, 2290, 254, 1, 0, 0, 0, 2291, 2292, 3, 1045, 522, 0, 2292, 2293, 3, 1069, 534, 0, 2293, 2294, 3, 1067, 533, 0, 2294, 2295, 3, 1079, 539, 0, 2295, 2296, 3, 1041, 520, 0, 2296, 2297, 3, 1057, 528, 0, 2297, 2298, 3, 1067, 533, 0, 2298, 2299, 3, 1077, 538, 0, 2299, 256, 1, 0, 0, 0, 2300, 2301, 3, 1041, 520, 0, 2301, 2302, 3, 1083, 541, 0, 2302, 2303, 3, 1049, 524, 0, 2303, 2304, 3, 1075, 537, 0, 2304, 2305, 3, 1041, 520, 0, 2305, 2306, 3, 1053, 526, 0, 2306, 2307, 3, 1049, 524, 0, 2307, 258, 1, 0, 0, 0, 2308, 2309, 3, 1065, 532, 0, 2309, 2310, 3, 1057, 528, 0, 2310, 2311, 3, 1067, 533, 0, 2311, 2312, 3, 1057, 528, 0, 2312, 2313, 3, 1065, 532, 0, 2313, 2314, 3, 1081, 540, 0, 2314, 2315, 3, 1065, 532, 0, 2315, 260, 1, 0, 0, 0, 2316, 2317, 3, 1065, 532, 0, 2317, 2318, 3, 1041, 520, 0, 2318, 2319, 3, 1087, 543, 0, 2319, 2320, 3, 1057, 528, 0, 2320, 2321, 3, 1065, 532, 0, 2321, 2322, 3, 1081, 540, 0, 2322, 2323, 3, 1065, 532, 0, 2323, 262, 1, 0, 0, 0, 2324, 2325, 3, 1063, 531, 0, 2325, 2326, 3, 1057, 528, 0, 2326, 2327, 3, 1077, 538, 0, 2327, 2328, 3, 1079, 539, 0, 2328, 264, 1, 0, 0, 0, 2329, 2330, 3, 1075, 537, 0, 2330, 2331, 3, 1049, 524, 0, 2331, 2332, 3, 1065, 532, 0, 2332, 2333, 3, 1069, 534, 0, 2333, 2334, 3, 1083, 541, 0, 2334, 2335, 3, 1049, 524, 0, 2335, 266, 1, 0, 0, 0, 2336, 2337, 3, 1049, 524, 0, 2337, 2338, 3, 1073, 536, 0, 2338, 2339, 3, 1081, 540, 0, 2339, 2340, 3, 1041, 520, 0, 2340, 2341, 3, 1063, 531, 0, 2341, 2342, 3, 1077, 538, 0, 2342, 268, 1, 0, 0, 0, 2343, 2344, 3, 1057, 528, 0, 2344, 2345, 3, 1067, 533, 0, 2345, 2346, 3, 1051, 525, 0, 2346, 2347, 3, 1069, 534, 0, 2347, 270, 1, 0, 0, 0, 2348, 2349, 3, 1085, 542, 0, 2349, 2350, 3, 1041, 520, 0, 2350, 2351, 3, 1075, 537, 0, 2351, 2352, 3, 1067, 533, 0, 2352, 2353, 3, 1057, 528, 0, 2353, 2354, 3, 1067, 533, 0, 2354, 2355, 3, 1053, 526, 0, 2355, 272, 1, 0, 0, 0, 2356, 2357, 3, 1079, 539, 0, 2357, 2358, 3, 1075, 537, 0, 2358, 2359, 3, 1041, 520, 0, 2359, 2360, 3, 1045, 522, 0, 2360, 2361, 3, 1049, 524, 0, 2361, 274, 1, 0, 0, 0, 2362, 2363, 3, 1045, 522, 0, 2363, 2364, 3, 1075, 537, 0, 2364, 2365, 3, 1057, 528, 0, 2365, 2366, 3, 1079, 539, 0, 2366, 2367, 3, 1057, 528, 0, 2367, 2368, 3, 1045, 522, 0, 2368, 2369, 3, 1041, 520, 0, 2369, 2370, 3, 1063, 531, 0, 2370, 276, 1, 0, 0, 0, 2371, 2372, 3, 1085, 542, 0, 2372, 2373, 3, 1057, 528, 0, 2373, 2374, 3, 1079, 539, 0, 2374, 2375, 3, 1055, 527, 0, 2375, 278, 1, 0, 0, 0, 2376, 2377, 3, 1049, 524, 0, 2377, 2378, 3, 1065, 532, 0, 2378, 2379, 3, 1071, 535, 0, 2379, 2380, 3, 1079, 539, 0, 2380, 2381, 3, 1089, 544, 0, 2381, 280, 1, 0, 0, 0, 2382, 2383, 3, 1069, 534, 0, 2383, 2384, 3, 1043, 521, 0, 2384, 2385, 3, 1059, 529, 0, 2385, 2386, 3, 1049, 524, 0, 2386, 2387, 3, 1045, 522, 0, 2387, 2388, 3, 1079, 539, 0, 2388, 282, 1, 0, 0, 0, 2389, 2390, 3, 1069, 534, 0, 2390, 2391, 3, 1043, 521, 0, 2391, 2392, 3, 1059, 529, 0, 2392, 2393, 3, 1049, 524, 0, 2393, 2394, 3, 1045, 522, 0, 2394, 2395, 3, 1079, 539, 0, 2395, 2396, 3, 1077, 538, 0, 2396, 284, 1, 0, 0, 0, 2397, 2398, 3, 1071, 535, 0, 2398, 2399, 3, 1041, 520, 0, 2399, 2400, 3, 1053, 526, 0, 2400, 2401, 3, 1049, 524, 0, 2401, 2402, 3, 1077, 538, 0, 2402, 286, 1, 0, 0, 0, 2403, 2404, 3, 1063, 531, 0, 2404, 2405, 3, 1041, 520, 0, 2405, 2406, 3, 1089, 544, 0, 2406, 2407, 3, 1069, 534, 0, 2407, 2408, 3, 1081, 540, 0, 2408, 2409, 3, 1079, 539, 0, 2409, 2410, 3, 1077, 538, 0, 2410, 288, 1, 0, 0, 0, 2411, 2412, 3, 1077, 538, 0, 2412, 2413, 3, 1067, 533, 0, 2413, 2414, 3, 1057, 528, 0, 2414, 2415, 3, 1071, 535, 0, 2415, 2416, 3, 1071, 535, 0, 2416, 2417, 3, 1049, 524, 0, 2417, 2418, 3, 1079, 539, 0, 2418, 2419, 3, 1077, 538, 0, 2419, 290, 1, 0, 0, 0, 2420, 2421, 3, 1067, 533, 0, 2421, 2422, 3, 1069, 534, 0, 2422, 2423, 3, 1079, 539, 0, 2423, 2424, 3, 1049, 524, 0, 2424, 2425, 3, 1043, 521, 0, 2425, 2426, 3, 1069, 534, 0, 2426, 2427, 3, 1069, 534, 0, 2427, 2428, 3, 1061, 530, 0, 2428, 2429, 3, 1077, 538, 0, 2429, 292, 1, 0, 0, 0, 2430, 2431, 3, 1071, 535, 0, 2431, 2432, 3, 1063, 531, 0, 2432, 2433, 3, 1041, 520, 0, 2433, 2434, 3, 1045, 522, 0, 2434, 2435, 3, 1049, 524, 0, 2435, 2436, 3, 1055, 527, 0, 2436, 2437, 3, 1069, 534, 0, 2437, 2438, 3, 1063, 531, 0, 2438, 2439, 3, 1047, 523, 0, 2439, 2440, 3, 1049, 524, 0, 2440, 2441, 3, 1075, 537, 0, 2441, 294, 1, 0, 0, 0, 2442, 2443, 3, 1077, 538, 0, 2443, 2444, 3, 1067, 533, 0, 2444, 2445, 3, 1057, 528, 0, 2445, 2446, 3, 1071, 535, 0, 2446, 2447, 3, 1071, 535, 0, 2447, 2448, 3, 1049, 524, 0, 2448, 2449, 3, 1079, 539, 0, 2449, 2450, 3, 1045, 522, 0, 2450, 2451, 3, 1041, 520, 0, 2451, 2452, 3, 1063, 531, 0, 2452, 2453, 3, 1063, 531, 0, 2453, 296, 1, 0, 0, 0, 2454, 2455, 3, 1063, 531, 0, 2455, 2456, 3, 1041, 520, 0, 2456, 2457, 3, 1089, 544, 0, 2457, 2458, 3, 1069, 534, 0, 2458, 2459, 3, 1081, 540, 0, 2459, 2460, 3, 1079, 539, 0, 2460, 2461, 3, 1053, 526, 0, 2461, 2462, 3, 1075, 537, 0, 2462, 2463, 3, 1057, 528, 0, 2463, 2464, 3, 1047, 523, 0, 2464, 298, 1, 0, 0, 0, 2465, 2466, 3, 1047, 523, 0, 2466, 2467, 3, 1041, 520, 0, 2467, 2468, 3, 1079, 539, 0, 2468, 2469, 3, 1041, 520, 0, 2469, 2470, 3, 1053, 526, 0, 2470, 2471, 3, 1075, 537, 0, 2471, 2472, 3, 1057, 528, 0, 2472, 2473, 3, 1047, 523, 0, 2473, 300, 1, 0, 0, 0, 2474, 2475, 3, 1047, 523, 0, 2475, 2476, 3, 1041, 520, 0, 2476, 2477, 3, 1079, 539, 0, 2477, 2478, 3, 1041, 520, 0, 2478, 2479, 3, 1083, 541, 0, 2479, 2480, 3, 1057, 528, 0, 2480, 2481, 3, 1049, 524, 0, 2481, 2482, 3, 1085, 542, 0, 2482, 302, 1, 0, 0, 0, 2483, 2484, 3, 1063, 531, 0, 2484, 2485, 3, 1057, 528, 0, 2485, 2486, 3, 1077, 538, 0, 2486, 2487, 3, 1079, 539, 0, 2487, 2488, 3, 1083, 541, 0, 2488, 2489, 3, 1057, 528, 0, 2489, 2490, 3, 1049, 524, 0, 2490, 2491, 3, 1085, 542, 0, 2491, 304, 1, 0, 0, 0, 2492, 2493, 3, 1053, 526, 0, 2493, 2494, 3, 1041, 520, 0, 2494, 2495, 3, 1063, 531, 0, 2495, 2496, 3, 1063, 531, 0, 2496, 2497, 3, 1049, 524, 0, 2497, 2498, 3, 1075, 537, 0, 2498, 2499, 3, 1089, 544, 0, 2499, 306, 1, 0, 0, 0, 2500, 2501, 3, 1045, 522, 0, 2501, 2502, 3, 1069, 534, 0, 2502, 2503, 3, 1067, 533, 0, 2503, 2504, 3, 1079, 539, 0, 2504, 2505, 3, 1041, 520, 0, 2505, 2506, 3, 1057, 528, 0, 2506, 2507, 3, 1067, 533, 0, 2507, 2508, 3, 1049, 524, 0, 2508, 2509, 3, 1075, 537, 0, 2509, 308, 1, 0, 0, 0, 2510, 2511, 3, 1075, 537, 0, 2511, 2512, 3, 1069, 534, 0, 2512, 2513, 3, 1085, 542, 0, 2513, 310, 1, 0, 0, 0, 2514, 2515, 3, 1057, 528, 0, 2515, 2516, 3, 1079, 539, 0, 2516, 2517, 3, 1049, 524, 0, 2517, 2518, 3, 1065, 532, 0, 2518, 312, 1, 0, 0, 0, 2519, 2520, 3, 1045, 522, 0, 2520, 2521, 3, 1069, 534, 0, 2521, 2522, 3, 1067, 533, 0, 2522, 2523, 3, 1079, 539, 0, 2523, 2524, 3, 1075, 537, 0, 2524, 2525, 3, 1069, 534, 0, 2525, 2526, 3, 1063, 531, 0, 2526, 2527, 3, 1043, 521, 0, 2527, 2528, 3, 1041, 520, 0, 2528, 2529, 3, 1075, 537, 0, 2529, 314, 1, 0, 0, 0, 2530, 2531, 3, 1077, 538, 0, 2531, 2532, 3, 1049, 524, 0, 2532, 2533, 3, 1041, 520, 0, 2533, 2534, 3, 1075, 537, 0, 2534, 2535, 3, 1045, 522, 0, 2535, 2536, 3, 1055, 527, 0, 2536, 316, 1, 0, 0, 0, 2537, 2538, 3, 1077, 538, 0, 2538, 2539, 3, 1049, 524, 0, 2539, 2540, 3, 1041, 520, 0, 2540, 2541, 3, 1075, 537, 0, 2541, 2542, 3, 1045, 522, 0, 2542, 2543, 3, 1055, 527, 0, 2543, 2544, 3, 1043, 521, 0, 2544, 2545, 3, 1041, 520, 0, 2545, 2546, 3, 1075, 537, 0, 2546, 318, 1, 0, 0, 0, 2547, 2548, 3, 1067, 533, 0, 2548, 2549, 3, 1041, 520, 0, 2549, 2550, 3, 1083, 541, 0, 2550, 2551, 3, 1057, 528, 0, 2551, 2552, 3, 1053, 526, 0, 2552, 2553, 3, 1041, 520, 0, 2553, 2554, 3, 1079, 539, 0, 2554, 2555, 3, 1057, 528, 0, 2555, 2556, 3, 1069, 534, 0, 2556, 2557, 3, 1067, 533, 0, 2557, 2558, 3, 1063, 531, 0, 2558, 2559, 3, 1057, 528, 0, 2559, 2560, 3, 1077, 538, 0, 2560, 2561, 3, 1079, 539, 0, 2561, 320, 1, 0, 0, 0, 2562, 2563, 3, 1041, 520, 0, 2563, 2564, 3, 1045, 522, 0, 2564, 2565, 3, 1079, 539, 0, 2565, 2566, 3, 1057, 528, 0, 2566, 2567, 3, 1069, 534, 0, 2567, 2568, 3, 1067, 533, 0, 2568, 2569, 3, 1043, 521, 0, 2569, 2570, 3, 1081, 540, 0, 2570, 2571, 3, 1079, 539, 0, 2571, 2572, 3, 1079, 539, 0, 2572, 2573, 3, 1069, 534, 0, 2573, 2574, 3, 1067, 533, 0, 2574, 322, 1, 0, 0, 0, 2575, 2576, 3, 1063, 531, 0, 2576, 2577, 3, 1057, 528, 0, 2577, 2578, 3, 1067, 533, 0, 2578, 2579, 3, 1061, 530, 0, 2579, 2580, 3, 1043, 521, 0, 2580, 2581, 3, 1081, 540, 0, 2581, 2582, 3, 1079, 539, 0, 2582, 2583, 3, 1079, 539, 0, 2583, 2584, 3, 1069, 534, 0, 2584, 2585, 3, 1067, 533, 0, 2585, 324, 1, 0, 0, 0, 2586, 2587, 3, 1043, 521, 0, 2587, 2588, 3, 1081, 540, 0, 2588, 2589, 3, 1079, 539, 0, 2589, 2590, 3, 1079, 539, 0, 2590, 2591, 3, 1069, 534, 0, 2591, 2592, 3, 1067, 533, 0, 2592, 326, 1, 0, 0, 0, 2593, 2594, 3, 1079, 539, 0, 2594, 2595, 3, 1057, 528, 0, 2595, 2596, 3, 1079, 539, 0, 2596, 2597, 3, 1063, 531, 0, 2597, 2598, 3, 1049, 524, 0, 2598, 328, 1, 0, 0, 0, 2599, 2600, 3, 1047, 523, 0, 2600, 2601, 3, 1089, 544, 0, 2601, 2602, 3, 1067, 533, 0, 2602, 2603, 3, 1041, 520, 0, 2603, 2604, 3, 1065, 532, 0, 2604, 2605, 3, 1057, 528, 0, 2605, 2606, 3, 1045, 522, 0, 2606, 2607, 3, 1079, 539, 0, 2607, 2608, 3, 1049, 524, 0, 2608, 2609, 3, 1087, 543, 0, 2609, 2610, 3, 1079, 539, 0, 2610, 330, 1, 0, 0, 0, 2611, 2612, 3, 1047, 523, 0, 2612, 2613, 3, 1089, 544, 0, 2613, 2614, 3, 1067, 533, 0, 2614, 2615, 3, 1041, 520, 0, 2615, 2616, 3, 1065, 532, 0, 2616, 2617, 3, 1057, 528, 0, 2617, 2618, 3, 1045, 522, 0, 2618, 332, 1, 0, 0, 0, 2619, 2620, 3, 1077, 538, 0, 2620, 2621, 3, 1079, 539, 0, 2621, 2622, 3, 1041, 520, 0, 2622, 2623, 3, 1079, 539, 0, 2623, 2624, 3, 1057, 528, 0, 2624, 2625, 3, 1045, 522, 0, 2625, 2626, 3, 1079, 539, 0, 2626, 2627, 3, 1049, 524, 0, 2627, 2628, 3, 1087, 543, 0, 2628, 2629, 3, 1079, 539, 0, 2629, 334, 1, 0, 0, 0, 2630, 2631, 3, 1063, 531, 0, 2631, 2632, 3, 1041, 520, 0, 2632, 2633, 3, 1043, 521, 0, 2633, 2634, 3, 1049, 524, 0, 2634, 2635, 3, 1063, 531, 0, 2635, 336, 1, 0, 0, 0, 2636, 2637, 3, 1079, 539, 0, 2637, 2638, 3, 1049, 524, 0, 2638, 2639, 3, 1087, 543, 0, 2639, 2640, 3, 1079, 539, 0, 2640, 2641, 3, 1043, 521, 0, 2641, 2642, 3, 1069, 534, 0, 2642, 2643, 3, 1087, 543, 0, 2643, 338, 1, 0, 0, 0, 2644, 2645, 3, 1079, 539, 0, 2645, 2646, 3, 1049, 524, 0, 2646, 2647, 3, 1087, 543, 0, 2647, 2648, 3, 1079, 539, 0, 2648, 2649, 3, 1041, 520, 0, 2649, 2650, 3, 1075, 537, 0, 2650, 2651, 3, 1049, 524, 0, 2651, 2652, 3, 1041, 520, 0, 2652, 340, 1, 0, 0, 0, 2653, 2654, 3, 1047, 523, 0, 2654, 2655, 3, 1041, 520, 0, 2655, 2656, 3, 1079, 539, 0, 2656, 2657, 3, 1049, 524, 0, 2657, 2658, 3, 1071, 535, 0, 2658, 2659, 3, 1057, 528, 0, 2659, 2660, 3, 1045, 522, 0, 2660, 2661, 3, 1061, 530, 0, 2661, 2662, 3, 1049, 524, 0, 2662, 2663, 3, 1075, 537, 0, 2663, 342, 1, 0, 0, 0, 2664, 2665, 3, 1075, 537, 0, 2665, 2666, 3, 1041, 520, 0, 2666, 2667, 3, 1047, 523, 0, 2667, 2668, 3, 1057, 528, 0, 2668, 2669, 3, 1069, 534, 0, 2669, 2670, 3, 1043, 521, 0, 2670, 2671, 3, 1081, 540, 0, 2671, 2672, 3, 1079, 539, 0, 2672, 2673, 3, 1079, 539, 0, 2673, 2674, 3, 1069, 534, 0, 2674, 2675, 3, 1067, 533, 0, 2675, 2676, 3, 1077, 538, 0, 2676, 344, 1, 0, 0, 0, 2677, 2678, 3, 1047, 523, 0, 2678, 2679, 3, 1075, 537, 0, 2679, 2680, 3, 1069, 534, 0, 2680, 2681, 3, 1071, 535, 0, 2681, 2682, 3, 1047, 523, 0, 2682, 2683, 3, 1069, 534, 0, 2683, 2684, 3, 1085, 542, 0, 2684, 2685, 3, 1067, 533, 0, 2685, 346, 1, 0, 0, 0, 2686, 2687, 3, 1045, 522, 0, 2687, 2688, 3, 1069, 534, 0, 2688, 2689, 3, 1065, 532, 0, 2689, 2690, 3, 1043, 521, 0, 2690, 2691, 3, 1069, 534, 0, 2691, 2692, 3, 1043, 521, 0, 2692, 2693, 3, 1069, 534, 0, 2693, 2694, 3, 1087, 543, 0, 2694, 348, 1, 0, 0, 0, 2695, 2696, 3, 1045, 522, 0, 2696, 2697, 3, 1055, 527, 0, 2697, 2698, 3, 1049, 524, 0, 2698, 2699, 3, 1045, 522, 0, 2699, 2700, 3, 1061, 530, 0, 2700, 2701, 3, 1043, 521, 0, 2701, 2702, 3, 1069, 534, 0, 2702, 2703, 3, 1087, 543, 0, 2703, 350, 1, 0, 0, 0, 2704, 2705, 3, 1075, 537, 0, 2705, 2706, 3, 1049, 524, 0, 2706, 2707, 3, 1051, 525, 0, 2707, 2708, 3, 1049, 524, 0, 2708, 2709, 3, 1075, 537, 0, 2709, 2710, 3, 1049, 524, 0, 2710, 2711, 3, 1067, 533, 0, 2711, 2712, 3, 1045, 522, 0, 2712, 2713, 3, 1049, 524, 0, 2713, 2714, 3, 1077, 538, 0, 2714, 2715, 3, 1049, 524, 0, 2715, 2716, 3, 1063, 531, 0, 2716, 2717, 3, 1049, 524, 0, 2717, 2718, 3, 1045, 522, 0, 2718, 2719, 3, 1079, 539, 0, 2719, 2720, 3, 1069, 534, 0, 2720, 2721, 3, 1075, 537, 0, 2721, 352, 1, 0, 0, 0, 2722, 2723, 3, 1057, 528, 0, 2723, 2724, 3, 1067, 533, 0, 2724, 2725, 3, 1071, 535, 0, 2725, 2726, 3, 1081, 540, 0, 2726, 2727, 3, 1079, 539, 0, 2727, 2728, 3, 1075, 537, 0, 2728, 2729, 3, 1049, 524, 0, 2729, 2730, 3, 1051, 525, 0, 2730, 2731, 3, 1049, 524, 0, 2731, 2732, 3, 1075, 537, 0, 2732, 2733, 3, 1049, 524, 0, 2733, 2734, 3, 1067, 533, 0, 2734, 2735, 3, 1045, 522, 0, 2735, 2736, 3, 1049, 524, 0, 2736, 2737, 3, 1077, 538, 0, 2737, 2738, 3, 1049, 524, 0, 2738, 2739, 3, 1079, 539, 0, 2739, 2740, 3, 1077, 538, 0, 2740, 2741, 3, 1049, 524, 0, 2741, 2742, 3, 1063, 531, 0, 2742, 2743, 3, 1049, 524, 0, 2743, 2744, 3, 1045, 522, 0, 2744, 2745, 3, 1079, 539, 0, 2745, 2746, 3, 1069, 534, 0, 2746, 2747, 3, 1075, 537, 0, 2747, 354, 1, 0, 0, 0, 2748, 2749, 3, 1051, 525, 0, 2749, 2750, 3, 1057, 528, 0, 2750, 2751, 3, 1063, 531, 0, 2751, 2752, 3, 1049, 524, 0, 2752, 2753, 3, 1057, 528, 0, 2753, 2754, 3, 1067, 533, 0, 2754, 2755, 3, 1071, 535, 0, 2755, 2756, 3, 1081, 540, 0, 2756, 2757, 3, 1079, 539, 0, 2757, 356, 1, 0, 0, 0, 2758, 2759, 3, 1057, 528, 0, 2759, 2760, 3, 1065, 532, 0, 2760, 2761, 3, 1041, 520, 0, 2761, 2762, 3, 1053, 526, 0, 2762, 2763, 3, 1049, 524, 0, 2763, 2764, 3, 1057, 528, 0, 2764, 2765, 3, 1067, 533, 0, 2765, 2766, 3, 1071, 535, 0, 2766, 2767, 3, 1081, 540, 0, 2767, 2768, 3, 1079, 539, 0, 2768, 358, 1, 0, 0, 0, 2769, 2770, 3, 1045, 522, 0, 2770, 2771, 3, 1081, 540, 0, 2771, 2772, 3, 1077, 538, 0, 2772, 2773, 3, 1079, 539, 0, 2773, 2774, 3, 1069, 534, 0, 2774, 2775, 3, 1065, 532, 0, 2775, 2776, 3, 1085, 542, 0, 2776, 2777, 3, 1057, 528, 0, 2777, 2778, 3, 1047, 523, 0, 2778, 2779, 3, 1053, 526, 0, 2779, 2780, 3, 1049, 524, 0, 2780, 2781, 3, 1079, 539, 0, 2781, 360, 1, 0, 0, 0, 2782, 2783, 3, 1079, 539, 0, 2783, 2784, 3, 1049, 524, 0, 2784, 2785, 3, 1087, 543, 0, 2785, 2786, 3, 1079, 539, 0, 2786, 2787, 3, 1051, 525, 0, 2787, 2788, 3, 1057, 528, 0, 2788, 2789, 3, 1063, 531, 0, 2789, 2790, 3, 1079, 539, 0, 2790, 2791, 3, 1049, 524, 0, 2791, 2792, 3, 1075, 537, 0, 2792, 362, 1, 0, 0, 0, 2793, 2794, 3, 1067, 533, 0, 2794, 2795, 3, 1081, 540, 0, 2795, 2796, 3, 1065, 532, 0, 2796, 2797, 3, 1043, 521, 0, 2797, 2798, 3, 1049, 524, 0, 2798, 2799, 3, 1075, 537, 0, 2799, 2800, 3, 1051, 525, 0, 2800, 2801, 3, 1057, 528, 0, 2801, 2802, 3, 1063, 531, 0, 2802, 2803, 3, 1079, 539, 0, 2803, 2804, 3, 1049, 524, 0, 2804, 2805, 3, 1075, 537, 0, 2805, 364, 1, 0, 0, 0, 2806, 2807, 3, 1047, 523, 0, 2807, 2808, 3, 1075, 537, 0, 2808, 2809, 3, 1069, 534, 0, 2809, 2810, 3, 1071, 535, 0, 2810, 2811, 3, 1047, 523, 0, 2811, 2812, 3, 1069, 534, 0, 2812, 2813, 3, 1085, 542, 0, 2813, 2814, 3, 1067, 533, 0, 2814, 2815, 3, 1051, 525, 0, 2815, 2816, 3, 1057, 528, 0, 2816, 2817, 3, 1063, 531, 0, 2817, 2818, 3, 1079, 539, 0, 2818, 2819, 3, 1049, 524, 0, 2819, 2820, 3, 1075, 537, 0, 2820, 366, 1, 0, 0, 0, 2821, 2822, 3, 1047, 523, 0, 2822, 2823, 3, 1041, 520, 0, 2823, 2824, 3, 1079, 539, 0, 2824, 2825, 3, 1049, 524, 0, 2825, 2826, 3, 1051, 525, 0, 2826, 2827, 3, 1057, 528, 0, 2827, 2828, 3, 1063, 531, 0, 2828, 2829, 3, 1079, 539, 0, 2829, 2830, 3, 1049, 524, 0, 2830, 2831, 3, 1075, 537, 0, 2831, 368, 1, 0, 0, 0, 2832, 2833, 3, 1051, 525, 0, 2833, 2834, 3, 1057, 528, 0, 2834, 2835, 3, 1063, 531, 0, 2835, 2836, 3, 1079, 539, 0, 2836, 2837, 3, 1049, 524, 0, 2837, 2838, 3, 1075, 537, 0, 2838, 370, 1, 0, 0, 0, 2839, 2840, 3, 1085, 542, 0, 2840, 2841, 3, 1057, 528, 0, 2841, 2842, 3, 1047, 523, 0, 2842, 2843, 3, 1053, 526, 0, 2843, 2844, 3, 1049, 524, 0, 2844, 2845, 3, 1079, 539, 0, 2845, 372, 1, 0, 0, 0, 2846, 2847, 3, 1085, 542, 0, 2847, 2848, 3, 1057, 528, 0, 2848, 2849, 3, 1047, 523, 0, 2849, 2850, 3, 1053, 526, 0, 2850, 2851, 3, 1049, 524, 0, 2851, 2852, 3, 1079, 539, 0, 2852, 2853, 3, 1077, 538, 0, 2853, 374, 1, 0, 0, 0, 2854, 2855, 3, 1045, 522, 0, 2855, 2856, 3, 1041, 520, 0, 2856, 2857, 3, 1071, 535, 0, 2857, 2858, 3, 1079, 539, 0, 2858, 2859, 3, 1057, 528, 0, 2859, 2860, 3, 1069, 534, 0, 2860, 2861, 3, 1067, 533, 0, 2861, 376, 1, 0, 0, 0, 2862, 2863, 3, 1057, 528, 0, 2863, 2864, 3, 1045, 522, 0, 2864, 2865, 3, 1069, 534, 0, 2865, 2866, 3, 1067, 533, 0, 2866, 378, 1, 0, 0, 0, 2867, 2868, 3, 1079, 539, 0, 2868, 2869, 3, 1069, 534, 0, 2869, 2870, 3, 1069, 534, 0, 2870, 2871, 3, 1063, 531, 0, 2871, 2872, 3, 1079, 539, 0, 2872, 2873, 3, 1057, 528, 0, 2873, 2874, 3, 1071, 535, 0, 2874, 380, 1, 0, 0, 0, 2875, 2876, 3, 1047, 523, 0, 2876, 2877, 3, 1041, 520, 0, 2877, 2878, 3, 1079, 539, 0, 2878, 2879, 3, 1041, 520, 0, 2879, 2880, 3, 1077, 538, 0, 2880, 2881, 3, 1069, 534, 0, 2881, 2882, 3, 1081, 540, 0, 2882, 2883, 3, 1075, 537, 0, 2883, 2884, 3, 1045, 522, 0, 2884, 2885, 3, 1049, 524, 0, 2885, 382, 1, 0, 0, 0, 2886, 2887, 3, 1077, 538, 0, 2887, 2888, 3, 1069, 534, 0, 2888, 2889, 3, 1081, 540, 0, 2889, 2890, 3, 1075, 537, 0, 2890, 2891, 3, 1045, 522, 0, 2891, 2892, 3, 1049, 524, 0, 2892, 384, 1, 0, 0, 0, 2893, 2894, 3, 1077, 538, 0, 2894, 2895, 3, 1049, 524, 0, 2895, 2896, 3, 1063, 531, 0, 2896, 2897, 3, 1049, 524, 0, 2897, 2898, 3, 1045, 522, 0, 2898, 2899, 3, 1079, 539, 0, 2899, 2900, 3, 1057, 528, 0, 2900, 2901, 3, 1069, 534, 0, 2901, 2902, 3, 1067, 533, 0, 2902, 386, 1, 0, 0, 0, 2903, 2904, 3, 1051, 525, 0, 2904, 2905, 3, 1069, 534, 0, 2905, 2906, 3, 1069, 534, 0, 2906, 2907, 3, 1079, 539, 0, 2907, 2908, 3, 1049, 524, 0, 2908, 2909, 3, 1075, 537, 0, 2909, 388, 1, 0, 0, 0, 2910, 2911, 3, 1055, 527, 0, 2911, 2912, 3, 1049, 524, 0, 2912, 2913, 3, 1041, 520, 0, 2913, 2914, 3, 1047, 523, 0, 2914, 2915, 3, 1049, 524, 0, 2915, 2916, 3, 1075, 537, 0, 2916, 390, 1, 0, 0, 0, 2917, 2918, 3, 1045, 522, 0, 2918, 2919, 3, 1069, 534, 0, 2919, 2920, 3, 1067, 533, 0, 2920, 2921, 3, 1079, 539, 0, 2921, 2922, 3, 1049, 524, 0, 2922, 2923, 3, 1067, 533, 0, 2923, 2924, 3, 1079, 539, 0, 2924, 392, 1, 0, 0, 0, 2925, 2926, 3, 1075, 537, 0, 2926, 2927, 3, 1049, 524, 0, 2927, 2928, 3, 1067, 533, 0, 2928, 2929, 3, 1047, 523, 0, 2929, 2930, 3, 1049, 524, 0, 2930, 2931, 3, 1075, 537, 0, 2931, 2932, 3, 1065, 532, 0, 2932, 2933, 3, 1069, 534, 0, 2933, 2934, 3, 1047, 523, 0, 2934, 2935, 3, 1049, 524, 0, 2935, 394, 1, 0, 0, 0, 2936, 2937, 3, 1043, 521, 0, 2937, 2938, 3, 1057, 528, 0, 2938, 2939, 3, 1067, 533, 0, 2939, 2940, 3, 1047, 523, 0, 2940, 2941, 3, 1077, 538, 0, 2941, 396, 1, 0, 0, 0, 2942, 2943, 3, 1041, 520, 0, 2943, 2944, 3, 1079, 539, 0, 2944, 2945, 3, 1079, 539, 0, 2945, 2946, 3, 1075, 537, 0, 2946, 398, 1, 0, 0, 0, 2947, 2948, 3, 1045, 522, 0, 2948, 2949, 3, 1069, 534, 0, 2949, 2950, 3, 1067, 533, 0, 2950, 2951, 3, 1079, 539, 0, 2951, 2952, 3, 1049, 524, 0, 2952, 2953, 3, 1067, 533, 0, 2953, 2954, 3, 1079, 539, 0, 2954, 2955, 3, 1071, 535, 0, 2955, 2956, 3, 1041, 520, 0, 2956, 2957, 3, 1075, 537, 0, 2957, 2958, 3, 1041, 520, 0, 2958, 2959, 3, 1065, 532, 0, 2959, 2960, 3, 1077, 538, 0, 2960, 400, 1, 0, 0, 0, 2961, 2962, 3, 1045, 522, 0, 2962, 2963, 3, 1041, 520, 0, 2963, 2964, 3, 1071, 535, 0, 2964, 2965, 3, 1079, 539, 0, 2965, 2966, 3, 1057, 528, 0, 2966, 2967, 3, 1069, 534, 0, 2967, 2968, 3, 1067, 533, 0, 2968, 2969, 3, 1071, 535, 0, 2969, 2970, 3, 1041, 520, 0, 2970, 2971, 3, 1075, 537, 0, 2971, 2972, 3, 1041, 520, 0, 2972, 2973, 3, 1065, 532, 0, 2973, 2974, 3, 1077, 538, 0, 2974, 402, 1, 0, 0, 0, 2975, 2976, 3, 1071, 535, 0, 2976, 2977, 3, 1041, 520, 0, 2977, 2978, 3, 1075, 537, 0, 2978, 2979, 3, 1041, 520, 0, 2979, 2980, 3, 1065, 532, 0, 2980, 2981, 3, 1077, 538, 0, 2981, 404, 1, 0, 0, 0, 2982, 2983, 3, 1083, 541, 0, 2983, 2984, 3, 1041, 520, 0, 2984, 2985, 3, 1075, 537, 0, 2985, 2986, 3, 1057, 528, 0, 2986, 2987, 3, 1041, 520, 0, 2987, 2988, 3, 1043, 521, 0, 2988, 2989, 3, 1063, 531, 0, 2989, 2990, 3, 1049, 524, 0, 2990, 2991, 3, 1077, 538, 0, 2991, 406, 1, 0, 0, 0, 2992, 2993, 3, 1047, 523, 0, 2993, 2994, 3, 1049, 524, 0, 2994, 2995, 3, 1077, 538, 0, 2995, 2996, 3, 1061, 530, 0, 2996, 2997, 3, 1079, 539, 0, 2997, 2998, 3, 1069, 534, 0, 2998, 2999, 3, 1071, 535, 0, 2999, 3000, 3, 1085, 542, 0, 3000, 3001, 3, 1057, 528, 0, 3001, 3002, 3, 1047, 523, 0, 3002, 3003, 3, 1079, 539, 0, 3003, 3004, 3, 1055, 527, 0, 3004, 408, 1, 0, 0, 0, 3005, 3006, 3, 1079, 539, 0, 3006, 3007, 3, 1041, 520, 0, 3007, 3008, 3, 1043, 521, 0, 3008, 3009, 3, 1063, 531, 0, 3009, 3010, 3, 1049, 524, 0, 3010, 3011, 3, 1079, 539, 0, 3011, 3012, 3, 1085, 542, 0, 3012, 3013, 3, 1057, 528, 0, 3013, 3014, 3, 1047, 523, 0, 3014, 3015, 3, 1079, 539, 0, 3015, 3016, 3, 1055, 527, 0, 3016, 410, 1, 0, 0, 0, 3017, 3018, 3, 1071, 535, 0, 3018, 3019, 3, 1055, 527, 0, 3019, 3020, 3, 1069, 534, 0, 3020, 3021, 3, 1067, 533, 0, 3021, 3022, 3, 1049, 524, 0, 3022, 3023, 3, 1085, 542, 0, 3023, 3024, 3, 1057, 528, 0, 3024, 3025, 3, 1047, 523, 0, 3025, 3026, 3, 1079, 539, 0, 3026, 3027, 3, 1055, 527, 0, 3027, 412, 1, 0, 0, 0, 3028, 3029, 3, 1045, 522, 0, 3029, 3030, 3, 1063, 531, 0, 3030, 3031, 3, 1041, 520, 0, 3031, 3032, 3, 1077, 538, 0, 3032, 3033, 3, 1077, 538, 0, 3033, 414, 1, 0, 0, 0, 3034, 3035, 3, 1077, 538, 0, 3035, 3036, 3, 1079, 539, 0, 3036, 3037, 3, 1089, 544, 0, 3037, 3038, 3, 1063, 531, 0, 3038, 3039, 3, 1049, 524, 0, 3039, 416, 1, 0, 0, 0, 3040, 3041, 3, 1043, 521, 0, 3041, 3042, 3, 1081, 540, 0, 3042, 3043, 3, 1079, 539, 0, 3043, 3044, 3, 1079, 539, 0, 3044, 3045, 3, 1069, 534, 0, 3045, 3046, 3, 1067, 533, 0, 3046, 3047, 3, 1077, 538, 0, 3047, 3048, 3, 1079, 539, 0, 3048, 3049, 3, 1089, 544, 0, 3049, 3050, 3, 1063, 531, 0, 3050, 3051, 3, 1049, 524, 0, 3051, 418, 1, 0, 0, 0, 3052, 3053, 3, 1047, 523, 0, 3053, 3054, 3, 1049, 524, 0, 3054, 3055, 3, 1077, 538, 0, 3055, 3056, 3, 1057, 528, 0, 3056, 3057, 3, 1053, 526, 0, 3057, 3058, 3, 1067, 533, 0, 3058, 420, 1, 0, 0, 0, 3059, 3060, 3, 1071, 535, 0, 3060, 3061, 3, 1075, 537, 0, 3061, 3062, 3, 1069, 534, 0, 3062, 3063, 3, 1071, 535, 0, 3063, 3064, 3, 1049, 524, 0, 3064, 3065, 3, 1075, 537, 0, 3065, 3066, 3, 1079, 539, 0, 3066, 3067, 3, 1057, 528, 0, 3067, 3068, 3, 1049, 524, 0, 3068, 3069, 3, 1077, 538, 0, 3069, 422, 1, 0, 0, 0, 3070, 3071, 3, 1047, 523, 0, 3071, 3072, 3, 1049, 524, 0, 3072, 3073, 3, 1077, 538, 0, 3073, 3074, 3, 1057, 528, 0, 3074, 3075, 3, 1053, 526, 0, 3075, 3076, 3, 1067, 533, 0, 3076, 3077, 3, 1071, 535, 0, 3077, 3078, 3, 1075, 537, 0, 3078, 3079, 3, 1069, 534, 0, 3079, 3080, 3, 1071, 535, 0, 3080, 3081, 3, 1049, 524, 0, 3081, 3082, 3, 1075, 537, 0, 3082, 3083, 3, 1079, 539, 0, 3083, 3084, 3, 1057, 528, 0, 3084, 3085, 3, 1049, 524, 0, 3085, 3086, 3, 1077, 538, 0, 3086, 424, 1, 0, 0, 0, 3087, 3088, 3, 1077, 538, 0, 3088, 3089, 3, 1079, 539, 0, 3089, 3090, 3, 1089, 544, 0, 3090, 3091, 3, 1063, 531, 0, 3091, 3092, 3, 1057, 528, 0, 3092, 3093, 3, 1067, 533, 0, 3093, 3094, 3, 1053, 526, 0, 3094, 426, 1, 0, 0, 0, 3095, 3096, 3, 1045, 522, 0, 3096, 3097, 3, 1063, 531, 0, 3097, 3098, 3, 1049, 524, 0, 3098, 3099, 3, 1041, 520, 0, 3099, 3100, 3, 1075, 537, 0, 3100, 428, 1, 0, 0, 0, 3101, 3102, 3, 1085, 542, 0, 3102, 3103, 3, 1057, 528, 0, 3103, 3104, 3, 1047, 523, 0, 3104, 3105, 3, 1079, 539, 0, 3105, 3106, 3, 1055, 527, 0, 3106, 430, 1, 0, 0, 0, 3107, 3108, 3, 1055, 527, 0, 3108, 3109, 3, 1049, 524, 0, 3109, 3110, 3, 1057, 528, 0, 3110, 3111, 3, 1053, 526, 0, 3111, 3112, 3, 1055, 527, 0, 3112, 3113, 3, 1079, 539, 0, 3113, 432, 1, 0, 0, 0, 3114, 3115, 3, 1041, 520, 0, 3115, 3116, 3, 1081, 540, 0, 3116, 3117, 3, 1079, 539, 0, 3117, 3118, 3, 1069, 534, 0, 3118, 3119, 3, 1051, 525, 0, 3119, 3120, 3, 1057, 528, 0, 3120, 3121, 3, 1063, 531, 0, 3121, 3122, 3, 1063, 531, 0, 3122, 434, 1, 0, 0, 0, 3123, 3124, 3, 1081, 540, 0, 3124, 3125, 3, 1075, 537, 0, 3125, 3126, 3, 1063, 531, 0, 3126, 436, 1, 0, 0, 0, 3127, 3128, 3, 1051, 525, 0, 3128, 3129, 3, 1069, 534, 0, 3129, 3130, 3, 1063, 531, 0, 3130, 3131, 3, 1047, 523, 0, 3131, 3132, 3, 1049, 524, 0, 3132, 3133, 3, 1075, 537, 0, 3133, 438, 1, 0, 0, 0, 3134, 3135, 3, 1071, 535, 0, 3135, 3136, 3, 1041, 520, 0, 3136, 3137, 3, 1077, 538, 0, 3137, 3138, 3, 1077, 538, 0, 3138, 3139, 3, 1057, 528, 0, 3139, 3140, 3, 1067, 533, 0, 3140, 3141, 3, 1053, 526, 0, 3141, 440, 1, 0, 0, 0, 3142, 3143, 3, 1045, 522, 0, 3143, 3144, 3, 1069, 534, 0, 3144, 3145, 3, 1067, 533, 0, 3145, 3146, 3, 1079, 539, 0, 3146, 3147, 3, 1049, 524, 0, 3147, 3148, 3, 1087, 543, 0, 3148, 3149, 3, 1079, 539, 0, 3149, 442, 1, 0, 0, 0, 3150, 3151, 3, 1049, 524, 0, 3151, 3152, 3, 1047, 523, 0, 3152, 3153, 3, 1057, 528, 0, 3153, 3154, 3, 1079, 539, 0, 3154, 3155, 3, 1041, 520, 0, 3155, 3156, 3, 1043, 521, 0, 3156, 3157, 3, 1063, 531, 0, 3157, 3158, 3, 1049, 524, 0, 3158, 444, 1, 0, 0, 0, 3159, 3160, 3, 1075, 537, 0, 3160, 3161, 3, 1049, 524, 0, 3161, 3162, 3, 1041, 520, 0, 3162, 3163, 3, 1047, 523, 0, 3163, 3164, 3, 1069, 534, 0, 3164, 3165, 3, 1067, 533, 0, 3165, 3166, 3, 1063, 531, 0, 3166, 3167, 3, 1089, 544, 0, 3167, 446, 1, 0, 0, 0, 3168, 3169, 3, 1041, 520, 0, 3169, 3170, 3, 1079, 539, 0, 3170, 3171, 3, 1079, 539, 0, 3171, 3172, 3, 1075, 537, 0, 3172, 3173, 3, 1057, 528, 0, 3173, 3174, 3, 1043, 521, 0, 3174, 3175, 3, 1081, 540, 0, 3175, 3176, 3, 1079, 539, 0, 3176, 3177, 3, 1049, 524, 0, 3177, 3178, 3, 1077, 538, 0, 3178, 448, 1, 0, 0, 0, 3179, 3180, 3, 1051, 525, 0, 3180, 3181, 3, 1057, 528, 0, 3181, 3182, 3, 1063, 531, 0, 3182, 3183, 3, 1079, 539, 0, 3183, 3184, 3, 1049, 524, 0, 3184, 3185, 3, 1075, 537, 0, 3185, 3186, 3, 1079, 539, 0, 3186, 3187, 3, 1089, 544, 0, 3187, 3188, 3, 1071, 535, 0, 3188, 3189, 3, 1049, 524, 0, 3189, 450, 1, 0, 0, 0, 3190, 3191, 3, 1057, 528, 0, 3191, 3192, 3, 1065, 532, 0, 3192, 3193, 3, 1041, 520, 0, 3193, 3194, 3, 1053, 526, 0, 3194, 3195, 3, 1049, 524, 0, 3195, 452, 1, 0, 0, 0, 3196, 3197, 3, 1045, 522, 0, 3197, 3198, 3, 1069, 534, 0, 3198, 3199, 3, 1063, 531, 0, 3199, 3200, 3, 1063, 531, 0, 3200, 3201, 3, 1049, 524, 0, 3201, 3202, 3, 1045, 522, 0, 3202, 3203, 3, 1079, 539, 0, 3203, 3204, 3, 1057, 528, 0, 3204, 3205, 3, 1069, 534, 0, 3205, 3206, 3, 1067, 533, 0, 3206, 454, 1, 0, 0, 0, 3207, 3208, 3, 1077, 538, 0, 3208, 3209, 3, 1079, 539, 0, 3209, 3210, 3, 1041, 520, 0, 3210, 3211, 3, 1079, 539, 0, 3211, 3212, 3, 1057, 528, 0, 3212, 3213, 3, 1045, 522, 0, 3213, 3214, 3, 1057, 528, 0, 3214, 3215, 3, 1065, 532, 0, 3215, 3216, 3, 1041, 520, 0, 3216, 3217, 3, 1053, 526, 0, 3217, 3218, 3, 1049, 524, 0, 3218, 456, 1, 0, 0, 0, 3219, 3220, 3, 1047, 523, 0, 3220, 3221, 3, 1089, 544, 0, 3221, 3222, 3, 1067, 533, 0, 3222, 3223, 3, 1041, 520, 0, 3223, 3224, 3, 1065, 532, 0, 3224, 3225, 3, 1057, 528, 0, 3225, 3226, 3, 1045, 522, 0, 3226, 3227, 3, 1057, 528, 0, 3227, 3228, 3, 1065, 532, 0, 3228, 3229, 3, 1041, 520, 0, 3229, 3230, 3, 1053, 526, 0, 3230, 3231, 3, 1049, 524, 0, 3231, 458, 1, 0, 0, 0, 3232, 3233, 3, 1045, 522, 0, 3233, 3234, 3, 1081, 540, 0, 3234, 3235, 3, 1077, 538, 0, 3235, 3236, 3, 1079, 539, 0, 3236, 3237, 3, 1069, 534, 0, 3237, 3238, 3, 1065, 532, 0, 3238, 3239, 3, 1045, 522, 0, 3239, 3240, 3, 1069, 534, 0, 3240, 3241, 3, 1067, 533, 0, 3241, 3242, 3, 1079, 539, 0, 3242, 3243, 3, 1041, 520, 0, 3243, 3244, 3, 1057, 528, 0, 3244, 3245, 3, 1067, 533, 0, 3245, 3246, 3, 1049, 524, 0, 3246, 3247, 3, 1075, 537, 0, 3247, 460, 1, 0, 0, 0, 3248, 3249, 3, 1053, 526, 0, 3249, 3250, 3, 1075, 537, 0, 3250, 3251, 3, 1069, 534, 0, 3251, 3252, 3, 1081, 540, 0, 3252, 3253, 3, 1071, 535, 0, 3253, 3254, 3, 1043, 521, 0, 3254, 3255, 3, 1069, 534, 0, 3255, 3256, 3, 1087, 543, 0, 3256, 462, 1, 0, 0, 0, 3257, 3258, 3, 1083, 541, 0, 3258, 3259, 3, 1057, 528, 0, 3259, 3260, 3, 1077, 538, 0, 3260, 3261, 3, 1057, 528, 0, 3261, 3262, 3, 1043, 521, 0, 3262, 3263, 3, 1063, 531, 0, 3263, 3264, 3, 1049, 524, 0, 3264, 464, 1, 0, 0, 0, 3265, 3266, 3, 1077, 538, 0, 3266, 3267, 3, 1041, 520, 0, 3267, 3268, 3, 1083, 541, 0, 3268, 3269, 3, 1049, 524, 0, 3269, 3270, 3, 1045, 522, 0, 3270, 3271, 3, 1055, 527, 0, 3271, 3272, 3, 1041, 520, 0, 3272, 3273, 3, 1067, 533, 0, 3273, 3274, 3, 1053, 526, 0, 3274, 3275, 3, 1049, 524, 0, 3275, 3276, 3, 1077, 538, 0, 3276, 466, 1, 0, 0, 0, 3277, 3278, 3, 1077, 538, 0, 3278, 3279, 3, 1041, 520, 0, 3279, 3280, 3, 1083, 541, 0, 3280, 3281, 3, 1049, 524, 0, 3281, 3282, 5, 95, 0, 0, 3282, 3283, 3, 1045, 522, 0, 3283, 3284, 3, 1055, 527, 0, 3284, 3285, 3, 1041, 520, 0, 3285, 3286, 3, 1067, 533, 0, 3286, 3287, 3, 1053, 526, 0, 3287, 3288, 3, 1049, 524, 0, 3288, 3289, 3, 1077, 538, 0, 3289, 468, 1, 0, 0, 0, 3290, 3291, 3, 1045, 522, 0, 3291, 3292, 3, 1041, 520, 0, 3292, 3293, 3, 1067, 533, 0, 3293, 3294, 3, 1045, 522, 0, 3294, 3295, 3, 1049, 524, 0, 3295, 3296, 3, 1063, 531, 0, 3296, 3297, 5, 95, 0, 0, 3297, 3298, 3, 1045, 522, 0, 3298, 3299, 3, 1055, 527, 0, 3299, 3300, 3, 1041, 520, 0, 3300, 3301, 3, 1067, 533, 0, 3301, 3302, 3, 1053, 526, 0, 3302, 3303, 3, 1049, 524, 0, 3303, 3304, 3, 1077, 538, 0, 3304, 470, 1, 0, 0, 0, 3305, 3306, 3, 1045, 522, 0, 3306, 3307, 3, 1063, 531, 0, 3307, 3308, 3, 1069, 534, 0, 3308, 3309, 3, 1077, 538, 0, 3309, 3310, 3, 1049, 524, 0, 3310, 3311, 5, 95, 0, 0, 3311, 3312, 3, 1071, 535, 0, 3312, 3313, 3, 1041, 520, 0, 3313, 3314, 3, 1053, 526, 0, 3314, 3315, 3, 1049, 524, 0, 3315, 472, 1, 0, 0, 0, 3316, 3317, 3, 1077, 538, 0, 3317, 3318, 3, 1055, 527, 0, 3318, 3319, 3, 1069, 534, 0, 3319, 3320, 3, 1085, 542, 0, 3320, 3321, 5, 95, 0, 0, 3321, 3322, 3, 1071, 535, 0, 3322, 3323, 3, 1041, 520, 0, 3323, 3324, 3, 1053, 526, 0, 3324, 3325, 3, 1049, 524, 0, 3325, 474, 1, 0, 0, 0, 3326, 3327, 3, 1047, 523, 0, 3327, 3328, 3, 1049, 524, 0, 3328, 3329, 3, 1063, 531, 0, 3329, 3330, 3, 1049, 524, 0, 3330, 3331, 3, 1079, 539, 0, 3331, 3332, 3, 1049, 524, 0, 3332, 3333, 5, 95, 0, 0, 3333, 3334, 3, 1041, 520, 0, 3334, 3335, 3, 1045, 522, 0, 3335, 3336, 3, 1079, 539, 0, 3336, 3337, 3, 1057, 528, 0, 3337, 3338, 3, 1069, 534, 0, 3338, 3339, 3, 1067, 533, 0, 3339, 476, 1, 0, 0, 0, 3340, 3341, 3, 1047, 523, 0, 3341, 3342, 3, 1049, 524, 0, 3342, 3343, 3, 1063, 531, 0, 3343, 3344, 3, 1049, 524, 0, 3344, 3345, 3, 1079, 539, 0, 3345, 3346, 3, 1049, 524, 0, 3346, 3347, 5, 95, 0, 0, 3347, 3348, 3, 1069, 534, 0, 3348, 3349, 3, 1043, 521, 0, 3349, 3350, 3, 1059, 529, 0, 3350, 3351, 3, 1049, 524, 0, 3351, 3352, 3, 1045, 522, 0, 3352, 3353, 3, 1079, 539, 0, 3353, 478, 1, 0, 0, 0, 3354, 3355, 3, 1045, 522, 0, 3355, 3356, 3, 1075, 537, 0, 3356, 3357, 3, 1049, 524, 0, 3357, 3358, 3, 1041, 520, 0, 3358, 3359, 3, 1079, 539, 0, 3359, 3360, 3, 1049, 524, 0, 3360, 3361, 5, 95, 0, 0, 3361, 3362, 3, 1069, 534, 0, 3362, 3363, 3, 1043, 521, 0, 3363, 3364, 3, 1059, 529, 0, 3364, 3365, 3, 1049, 524, 0, 3365, 3366, 3, 1045, 522, 0, 3366, 3367, 3, 1079, 539, 0, 3367, 480, 1, 0, 0, 0, 3368, 3369, 3, 1045, 522, 0, 3369, 3370, 3, 1041, 520, 0, 3370, 3371, 3, 1063, 531, 0, 3371, 3372, 3, 1063, 531, 0, 3372, 3373, 5, 95, 0, 0, 3373, 3374, 3, 1065, 532, 0, 3374, 3375, 3, 1057, 528, 0, 3375, 3376, 3, 1045, 522, 0, 3376, 3377, 3, 1075, 537, 0, 3377, 3378, 3, 1069, 534, 0, 3378, 3379, 3, 1051, 525, 0, 3379, 3380, 3, 1063, 531, 0, 3380, 3381, 3, 1069, 534, 0, 3381, 3382, 3, 1085, 542, 0, 3382, 482, 1, 0, 0, 0, 3383, 3384, 3, 1045, 522, 0, 3384, 3385, 3, 1041, 520, 0, 3385, 3386, 3, 1063, 531, 0, 3386, 3387, 3, 1063, 531, 0, 3387, 3388, 5, 95, 0, 0, 3388, 3389, 3, 1067, 533, 0, 3389, 3390, 3, 1041, 520, 0, 3390, 3391, 3, 1067, 533, 0, 3391, 3392, 3, 1069, 534, 0, 3392, 3393, 3, 1051, 525, 0, 3393, 3394, 3, 1063, 531, 0, 3394, 3395, 3, 1069, 534, 0, 3395, 3396, 3, 1085, 542, 0, 3396, 484, 1, 0, 0, 0, 3397, 3398, 3, 1069, 534, 0, 3398, 3399, 3, 1071, 535, 0, 3399, 3400, 3, 1049, 524, 0, 3400, 3401, 3, 1067, 533, 0, 3401, 3402, 5, 95, 0, 0, 3402, 3403, 3, 1063, 531, 0, 3403, 3404, 3, 1057, 528, 0, 3404, 3405, 3, 1067, 533, 0, 3405, 3406, 3, 1061, 530, 0, 3406, 486, 1, 0, 0, 0, 3407, 3408, 3, 1077, 538, 0, 3408, 3409, 3, 1057, 528, 0, 3409, 3410, 3, 1053, 526, 0, 3410, 3411, 3, 1067, 533, 0, 3411, 3412, 5, 95, 0, 0, 3412, 3413, 3, 1069, 534, 0, 3413, 3414, 3, 1081, 540, 0, 3414, 3415, 3, 1079, 539, 0, 3415, 488, 1, 0, 0, 0, 3416, 3417, 3, 1045, 522, 0, 3417, 3418, 3, 1041, 520, 0, 3418, 3419, 3, 1067, 533, 0, 3419, 3420, 3, 1045, 522, 0, 3420, 3421, 3, 1049, 524, 0, 3421, 3422, 3, 1063, 531, 0, 3422, 490, 1, 0, 0, 0, 3423, 3424, 3, 1071, 535, 0, 3424, 3425, 3, 1075, 537, 0, 3425, 3426, 3, 1057, 528, 0, 3426, 3427, 3, 1065, 532, 0, 3427, 3428, 3, 1041, 520, 0, 3428, 3429, 3, 1075, 537, 0, 3429, 3430, 3, 1089, 544, 0, 3430, 492, 1, 0, 0, 0, 3431, 3432, 3, 1077, 538, 0, 3432, 3433, 3, 1081, 540, 0, 3433, 3434, 3, 1045, 522, 0, 3434, 3435, 3, 1045, 522, 0, 3435, 3436, 3, 1049, 524, 0, 3436, 3437, 3, 1077, 538, 0, 3437, 3438, 3, 1077, 538, 0, 3438, 494, 1, 0, 0, 0, 3439, 3440, 3, 1047, 523, 0, 3440, 3441, 3, 1041, 520, 0, 3441, 3442, 3, 1067, 533, 0, 3442, 3443, 3, 1053, 526, 0, 3443, 3444, 3, 1049, 524, 0, 3444, 3445, 3, 1075, 537, 0, 3445, 496, 1, 0, 0, 0, 3446, 3447, 3, 1085, 542, 0, 3447, 3448, 3, 1041, 520, 0, 3448, 3449, 3, 1075, 537, 0, 3449, 3450, 3, 1067, 533, 0, 3450, 3451, 3, 1057, 528, 0, 3451, 3452, 3, 1067, 533, 0, 3452, 3453, 3, 1053, 526, 0, 3453, 498, 1, 0, 0, 0, 3454, 3455, 3, 1057, 528, 0, 3455, 3456, 3, 1067, 533, 0, 3456, 3457, 3, 1051, 525, 0, 3457, 3458, 3, 1069, 534, 0, 3458, 500, 1, 0, 0, 0, 3459, 3460, 3, 1079, 539, 0, 3460, 3461, 3, 1049, 524, 0, 3461, 3462, 3, 1065, 532, 0, 3462, 3463, 3, 1071, 535, 0, 3463, 3464, 3, 1063, 531, 0, 3464, 3465, 3, 1041, 520, 0, 3465, 3466, 3, 1079, 539, 0, 3466, 3467, 3, 1049, 524, 0, 3467, 502, 1, 0, 0, 0, 3468, 3469, 3, 1069, 534, 0, 3469, 3470, 3, 1067, 533, 0, 3470, 3471, 3, 1045, 522, 0, 3471, 3472, 3, 1063, 531, 0, 3472, 3473, 3, 1057, 528, 0, 3473, 3474, 3, 1045, 522, 0, 3474, 3475, 3, 1061, 530, 0, 3475, 504, 1, 0, 0, 0, 3476, 3477, 3, 1069, 534, 0, 3477, 3478, 3, 1067, 533, 0, 3478, 3479, 3, 1045, 522, 0, 3479, 3480, 3, 1055, 527, 0, 3480, 3481, 3, 1041, 520, 0, 3481, 3482, 3, 1067, 533, 0, 3482, 3483, 3, 1053, 526, 0, 3483, 3484, 3, 1049, 524, 0, 3484, 506, 1, 0, 0, 0, 3485, 3486, 3, 1079, 539, 0, 3486, 3487, 3, 1041, 520, 0, 3487, 3488, 3, 1043, 521, 0, 3488, 3489, 3, 1057, 528, 0, 3489, 3490, 3, 1067, 533, 0, 3490, 3491, 3, 1047, 523, 0, 3491, 3492, 3, 1049, 524, 0, 3492, 3493, 3, 1087, 543, 0, 3493, 508, 1, 0, 0, 0, 3494, 3495, 3, 1055, 527, 0, 3495, 3496, 5, 49, 0, 0, 3496, 510, 1, 0, 0, 0, 3497, 3498, 3, 1055, 527, 0, 3498, 3499, 5, 50, 0, 0, 3499, 512, 1, 0, 0, 0, 3500, 3501, 3, 1055, 527, 0, 3501, 3502, 5, 51, 0, 0, 3502, 514, 1, 0, 0, 0, 3503, 3504, 3, 1055, 527, 0, 3504, 3505, 5, 52, 0, 0, 3505, 516, 1, 0, 0, 0, 3506, 3507, 3, 1055, 527, 0, 3507, 3508, 5, 53, 0, 0, 3508, 518, 1, 0, 0, 0, 3509, 3510, 3, 1055, 527, 0, 3510, 3511, 5, 54, 0, 0, 3511, 520, 1, 0, 0, 0, 3512, 3513, 3, 1071, 535, 0, 3513, 3514, 3, 1041, 520, 0, 3514, 3515, 3, 1075, 537, 0, 3515, 3516, 3, 1041, 520, 0, 3516, 3517, 3, 1053, 526, 0, 3517, 3518, 3, 1075, 537, 0, 3518, 3519, 3, 1041, 520, 0, 3519, 3520, 3, 1071, 535, 0, 3520, 3521, 3, 1055, 527, 0, 3521, 522, 1, 0, 0, 0, 3522, 3523, 3, 1077, 538, 0, 3523, 3524, 3, 1079, 539, 0, 3524, 3525, 3, 1075, 537, 0, 3525, 3526, 3, 1057, 528, 0, 3526, 3527, 3, 1067, 533, 0, 3527, 3528, 3, 1053, 526, 0, 3528, 524, 1, 0, 0, 0, 3529, 3530, 3, 1057, 528, 0, 3530, 3531, 3, 1067, 533, 0, 3531, 3532, 3, 1079, 539, 0, 3532, 3533, 3, 1049, 524, 0, 3533, 3534, 3, 1053, 526, 0, 3534, 3535, 3, 1049, 524, 0, 3535, 3536, 3, 1075, 537, 0, 3536, 526, 1, 0, 0, 0, 3537, 3538, 3, 1063, 531, 0, 3538, 3539, 3, 1069, 534, 0, 3539, 3540, 3, 1067, 533, 0, 3540, 3541, 3, 1053, 526, 0, 3541, 528, 1, 0, 0, 0, 3542, 3543, 3, 1047, 523, 0, 3543, 3544, 3, 1049, 524, 0, 3544, 3545, 3, 1045, 522, 0, 3545, 3546, 3, 1057, 528, 0, 3546, 3547, 3, 1065, 532, 0, 3547, 3548, 3, 1041, 520, 0, 3548, 3549, 3, 1063, 531, 0, 3549, 530, 1, 0, 0, 0, 3550, 3551, 3, 1043, 521, 0, 3551, 3552, 3, 1069, 534, 0, 3552, 3553, 3, 1069, 534, 0, 3553, 3554, 3, 1063, 531, 0, 3554, 3555, 3, 1049, 524, 0, 3555, 3556, 3, 1041, 520, 0, 3556, 3557, 3, 1067, 533, 0, 3557, 532, 1, 0, 0, 0, 3558, 3559, 3, 1047, 523, 0, 3559, 3560, 3, 1041, 520, 0, 3560, 3561, 3, 1079, 539, 0, 3561, 3562, 3, 1049, 524, 0, 3562, 3563, 3, 1079, 539, 0, 3563, 3564, 3, 1057, 528, 0, 3564, 3565, 3, 1065, 532, 0, 3565, 3566, 3, 1049, 524, 0, 3566, 534, 1, 0, 0, 0, 3567, 3568, 3, 1047, 523, 0, 3568, 3569, 3, 1041, 520, 0, 3569, 3570, 3, 1079, 539, 0, 3570, 3571, 3, 1049, 524, 0, 3571, 536, 1, 0, 0, 0, 3572, 3573, 3, 1041, 520, 0, 3573, 3574, 3, 1081, 540, 0, 3574, 3575, 3, 1079, 539, 0, 3575, 3576, 3, 1069, 534, 0, 3576, 3577, 3, 1067, 533, 0, 3577, 3578, 3, 1081, 540, 0, 3578, 3579, 3, 1065, 532, 0, 3579, 3580, 3, 1043, 521, 0, 3580, 3581, 3, 1049, 524, 0, 3581, 3582, 3, 1075, 537, 0, 3582, 538, 1, 0, 0, 0, 3583, 3584, 3, 1043, 521, 0, 3584, 3585, 3, 1057, 528, 0, 3585, 3586, 3, 1067, 533, 0, 3586, 3587, 3, 1041, 520, 0, 3587, 3588, 3, 1075, 537, 0, 3588, 3589, 3, 1089, 544, 0, 3589, 540, 1, 0, 0, 0, 3590, 3591, 3, 1055, 527, 0, 3591, 3592, 3, 1041, 520, 0, 3592, 3593, 3, 1077, 538, 0, 3593, 3594, 3, 1055, 527, 0, 3594, 3595, 3, 1049, 524, 0, 3595, 3596, 3, 1047, 523, 0, 3596, 3597, 3, 1077, 538, 0, 3597, 3598, 3, 1079, 539, 0, 3598, 3599, 3, 1075, 537, 0, 3599, 3600, 3, 1057, 528, 0, 3600, 3601, 3, 1067, 533, 0, 3601, 3602, 3, 1053, 526, 0, 3602, 542, 1, 0, 0, 0, 3603, 3604, 3, 1045, 522, 0, 3604, 3605, 3, 1081, 540, 0, 3605, 3606, 3, 1075, 537, 0, 3606, 3607, 3, 1075, 537, 0, 3607, 3608, 3, 1049, 524, 0, 3608, 3609, 3, 1067, 533, 0, 3609, 3610, 3, 1045, 522, 0, 3610, 3611, 3, 1089, 544, 0, 3611, 544, 1, 0, 0, 0, 3612, 3613, 3, 1051, 525, 0, 3613, 3614, 3, 1063, 531, 0, 3614, 3615, 3, 1069, 534, 0, 3615, 3616, 3, 1041, 520, 0, 3616, 3617, 3, 1079, 539, 0, 3617, 546, 1, 0, 0, 0, 3618, 3619, 3, 1077, 538, 0, 3619, 3620, 3, 1079, 539, 0, 3620, 3621, 3, 1075, 537, 0, 3621, 3622, 3, 1057, 528, 0, 3622, 3623, 3, 1067, 533, 0, 3623, 3624, 3, 1053, 526, 0, 3624, 3625, 3, 1079, 539, 0, 3625, 3626, 3, 1049, 524, 0, 3626, 3627, 3, 1065, 532, 0, 3627, 3628, 3, 1071, 535, 0, 3628, 3629, 3, 1063, 531, 0, 3629, 3630, 3, 1041, 520, 0, 3630, 3631, 3, 1079, 539, 0, 3631, 3632, 3, 1049, 524, 0, 3632, 548, 1, 0, 0, 0, 3633, 3634, 3, 1049, 524, 0, 3634, 3635, 3, 1067, 533, 0, 3635, 3636, 3, 1081, 540, 0, 3636, 3637, 3, 1065, 532, 0, 3637, 550, 1, 0, 0, 0, 3638, 3639, 3, 1045, 522, 0, 3639, 3640, 3, 1069, 534, 0, 3640, 3641, 3, 1081, 540, 0, 3641, 3642, 3, 1067, 533, 0, 3642, 3643, 3, 1079, 539, 0, 3643, 552, 1, 0, 0, 0, 3644, 3645, 3, 1077, 538, 0, 3645, 3646, 3, 1081, 540, 0, 3646, 3647, 3, 1065, 532, 0, 3647, 554, 1, 0, 0, 0, 3648, 3649, 3, 1041, 520, 0, 3649, 3650, 3, 1083, 541, 0, 3650, 3651, 3, 1053, 526, 0, 3651, 556, 1, 0, 0, 0, 3652, 3653, 3, 1065, 532, 0, 3653, 3654, 3, 1057, 528, 0, 3654, 3655, 3, 1067, 533, 0, 3655, 558, 1, 0, 0, 0, 3656, 3657, 3, 1065, 532, 0, 3657, 3658, 3, 1041, 520, 0, 3658, 3659, 3, 1087, 543, 0, 3659, 560, 1, 0, 0, 0, 3660, 3661, 3, 1063, 531, 0, 3661, 3662, 3, 1049, 524, 0, 3662, 3663, 3, 1067, 533, 0, 3663, 3664, 3, 1053, 526, 0, 3664, 3665, 3, 1079, 539, 0, 3665, 3666, 3, 1055, 527, 0, 3666, 562, 1, 0, 0, 0, 3667, 3668, 3, 1079, 539, 0, 3668, 3669, 3, 1075, 537, 0, 3669, 3670, 3, 1057, 528, 0, 3670, 3671, 3, 1065, 532, 0, 3671, 564, 1, 0, 0, 0, 3672, 3673, 3, 1045, 522, 0, 3673, 3674, 3, 1069, 534, 0, 3674, 3675, 3, 1041, 520, 0, 3675, 3676, 3, 1063, 531, 0, 3676, 3677, 3, 1049, 524, 0, 3677, 3678, 3, 1077, 538, 0, 3678, 3679, 3, 1045, 522, 0, 3679, 3680, 3, 1049, 524, 0, 3680, 566, 1, 0, 0, 0, 3681, 3682, 3, 1045, 522, 0, 3682, 3683, 3, 1041, 520, 0, 3683, 3684, 3, 1077, 538, 0, 3684, 3685, 3, 1079, 539, 0, 3685, 568, 1, 0, 0, 0, 3686, 3687, 3, 1041, 520, 0, 3687, 3688, 3, 1067, 533, 0, 3688, 3689, 3, 1047, 523, 0, 3689, 570, 1, 0, 0, 0, 3690, 3691, 3, 1069, 534, 0, 3691, 3692, 3, 1075, 537, 0, 3692, 572, 1, 0, 0, 0, 3693, 3694, 3, 1067, 533, 0, 3694, 3695, 3, 1069, 534, 0, 3695, 3696, 3, 1079, 539, 0, 3696, 574, 1, 0, 0, 0, 3697, 3698, 3, 1067, 533, 0, 3698, 3699, 3, 1081, 540, 0, 3699, 3700, 3, 1063, 531, 0, 3700, 3701, 3, 1063, 531, 0, 3701, 576, 1, 0, 0, 0, 3702, 3703, 3, 1057, 528, 0, 3703, 3704, 3, 1067, 533, 0, 3704, 578, 1, 0, 0, 0, 3705, 3706, 3, 1043, 521, 0, 3706, 3707, 3, 1049, 524, 0, 3707, 3708, 3, 1079, 539, 0, 3708, 3709, 3, 1085, 542, 0, 3709, 3710, 3, 1049, 524, 0, 3710, 3711, 3, 1049, 524, 0, 3711, 3712, 3, 1067, 533, 0, 3712, 580, 1, 0, 0, 0, 3713, 3714, 3, 1063, 531, 0, 3714, 3715, 3, 1057, 528, 0, 3715, 3716, 3, 1061, 530, 0, 3716, 3717, 3, 1049, 524, 0, 3717, 582, 1, 0, 0, 0, 3718, 3719, 3, 1065, 532, 0, 3719, 3720, 3, 1041, 520, 0, 3720, 3721, 3, 1079, 539, 0, 3721, 3722, 3, 1045, 522, 0, 3722, 3723, 3, 1055, 527, 0, 3723, 584, 1, 0, 0, 0, 3724, 3725, 3, 1049, 524, 0, 3725, 3726, 3, 1087, 543, 0, 3726, 3727, 3, 1057, 528, 0, 3727, 3728, 3, 1077, 538, 0, 3728, 3729, 3, 1079, 539, 0, 3729, 3730, 3, 1077, 538, 0, 3730, 586, 1, 0, 0, 0, 3731, 3732, 3, 1081, 540, 0, 3732, 3733, 3, 1067, 533, 0, 3733, 3734, 3, 1057, 528, 0, 3734, 3735, 3, 1073, 536, 0, 3735, 3736, 3, 1081, 540, 0, 3736, 3737, 3, 1049, 524, 0, 3737, 588, 1, 0, 0, 0, 3738, 3739, 3, 1047, 523, 0, 3739, 3740, 3, 1049, 524, 0, 3740, 3741, 3, 1051, 525, 0, 3741, 3742, 3, 1041, 520, 0, 3742, 3743, 3, 1081, 540, 0, 3743, 3744, 3, 1063, 531, 0, 3744, 3745, 3, 1079, 539, 0, 3745, 590, 1, 0, 0, 0, 3746, 3747, 3, 1079, 539, 0, 3747, 3748, 3, 1075, 537, 0, 3748, 3749, 3, 1081, 540, 0, 3749, 3750, 3, 1049, 524, 0, 3750, 592, 1, 0, 0, 0, 3751, 3752, 3, 1051, 525, 0, 3752, 3753, 3, 1041, 520, 0, 3753, 3754, 3, 1063, 531, 0, 3754, 3755, 3, 1077, 538, 0, 3755, 3756, 3, 1049, 524, 0, 3756, 594, 1, 0, 0, 0, 3757, 3758, 3, 1083, 541, 0, 3758, 3759, 3, 1041, 520, 0, 3759, 3760, 3, 1063, 531, 0, 3760, 3761, 3, 1057, 528, 0, 3761, 3762, 3, 1047, 523, 0, 3762, 3763, 3, 1041, 520, 0, 3763, 3764, 3, 1079, 539, 0, 3764, 3765, 3, 1057, 528, 0, 3765, 3766, 3, 1069, 534, 0, 3766, 3767, 3, 1067, 533, 0, 3767, 596, 1, 0, 0, 0, 3768, 3769, 3, 1051, 525, 0, 3769, 3770, 3, 1049, 524, 0, 3770, 3771, 3, 1049, 524, 0, 3771, 3772, 3, 1047, 523, 0, 3772, 3773, 3, 1043, 521, 0, 3773, 3774, 3, 1041, 520, 0, 3774, 3775, 3, 1045, 522, 0, 3775, 3776, 3, 1061, 530, 0, 3776, 598, 1, 0, 0, 0, 3777, 3778, 3, 1075, 537, 0, 3778, 3779, 3, 1081, 540, 0, 3779, 3780, 3, 1063, 531, 0, 3780, 3781, 3, 1049, 524, 0, 3781, 600, 1, 0, 0, 0, 3782, 3783, 3, 1075, 537, 0, 3783, 3784, 3, 1049, 524, 0, 3784, 3785, 3, 1073, 536, 0, 3785, 3786, 3, 1081, 540, 0, 3786, 3787, 3, 1057, 528, 0, 3787, 3788, 3, 1075, 537, 0, 3788, 3789, 3, 1049, 524, 0, 3789, 3790, 3, 1047, 523, 0, 3790, 602, 1, 0, 0, 0, 3791, 3792, 3, 1049, 524, 0, 3792, 3793, 3, 1075, 537, 0, 3793, 3794, 3, 1075, 537, 0, 3794, 3795, 3, 1069, 534, 0, 3795, 3796, 3, 1075, 537, 0, 3796, 604, 1, 0, 0, 0, 3797, 3798, 3, 1075, 537, 0, 3798, 3799, 3, 1041, 520, 0, 3799, 3800, 3, 1057, 528, 0, 3800, 3801, 3, 1077, 538, 0, 3801, 3802, 3, 1049, 524, 0, 3802, 606, 1, 0, 0, 0, 3803, 3804, 3, 1075, 537, 0, 3804, 3805, 3, 1041, 520, 0, 3805, 3806, 3, 1067, 533, 0, 3806, 3807, 3, 1053, 526, 0, 3807, 3808, 3, 1049, 524, 0, 3808, 608, 1, 0, 0, 0, 3809, 3810, 3, 1075, 537, 0, 3810, 3811, 3, 1049, 524, 0, 3811, 3812, 3, 1053, 526, 0, 3812, 3813, 3, 1049, 524, 0, 3813, 3814, 3, 1087, 543, 0, 3814, 610, 1, 0, 0, 0, 3815, 3816, 3, 1071, 535, 0, 3816, 3817, 3, 1041, 520, 0, 3817, 3818, 3, 1079, 539, 0, 3818, 3819, 3, 1079, 539, 0, 3819, 3820, 3, 1049, 524, 0, 3820, 3821, 3, 1075, 537, 0, 3821, 3822, 3, 1067, 533, 0, 3822, 612, 1, 0, 0, 0, 3823, 3824, 3, 1049, 524, 0, 3824, 3825, 3, 1087, 543, 0, 3825, 3826, 3, 1071, 535, 0, 3826, 3827, 3, 1075, 537, 0, 3827, 3828, 3, 1049, 524, 0, 3828, 3829, 3, 1077, 538, 0, 3829, 3830, 3, 1077, 538, 0, 3830, 3831, 3, 1057, 528, 0, 3831, 3832, 3, 1069, 534, 0, 3832, 3833, 3, 1067, 533, 0, 3833, 614, 1, 0, 0, 0, 3834, 3835, 3, 1087, 543, 0, 3835, 3836, 3, 1071, 535, 0, 3836, 3837, 3, 1041, 520, 0, 3837, 3838, 3, 1079, 539, 0, 3838, 3839, 3, 1055, 527, 0, 3839, 616, 1, 0, 0, 0, 3840, 3841, 3, 1045, 522, 0, 3841, 3842, 3, 1069, 534, 0, 3842, 3843, 3, 1067, 533, 0, 3843, 3844, 3, 1077, 538, 0, 3844, 3845, 3, 1079, 539, 0, 3845, 3846, 3, 1075, 537, 0, 3846, 3847, 3, 1041, 520, 0, 3847, 3848, 3, 1057, 528, 0, 3848, 3849, 3, 1067, 533, 0, 3849, 3850, 3, 1079, 539, 0, 3850, 618, 1, 0, 0, 0, 3851, 3852, 3, 1045, 522, 0, 3852, 3853, 3, 1041, 520, 0, 3853, 3854, 3, 1063, 531, 0, 3854, 3855, 3, 1045, 522, 0, 3855, 3856, 3, 1081, 540, 0, 3856, 3857, 3, 1063, 531, 0, 3857, 3858, 3, 1041, 520, 0, 3858, 3859, 3, 1079, 539, 0, 3859, 3860, 3, 1049, 524, 0, 3860, 3861, 3, 1047, 523, 0, 3861, 620, 1, 0, 0, 0, 3862, 3863, 3, 1075, 537, 0, 3863, 3864, 3, 1049, 524, 0, 3864, 3865, 3, 1077, 538, 0, 3865, 3866, 3, 1079, 539, 0, 3866, 622, 1, 0, 0, 0, 3867, 3868, 3, 1077, 538, 0, 3868, 3869, 3, 1049, 524, 0, 3869, 3870, 3, 1075, 537, 0, 3870, 3871, 3, 1083, 541, 0, 3871, 3872, 3, 1057, 528, 0, 3872, 3873, 3, 1045, 522, 0, 3873, 3874, 3, 1049, 524, 0, 3874, 624, 1, 0, 0, 0, 3875, 3876, 3, 1077, 538, 0, 3876, 3877, 3, 1049, 524, 0, 3877, 3878, 3, 1075, 537, 0, 3878, 3879, 3, 1083, 541, 0, 3879, 3880, 3, 1057, 528, 0, 3880, 3881, 3, 1045, 522, 0, 3881, 3882, 3, 1049, 524, 0, 3882, 3883, 3, 1077, 538, 0, 3883, 626, 1, 0, 0, 0, 3884, 3885, 3, 1069, 534, 0, 3885, 3886, 3, 1047, 523, 0, 3886, 3887, 3, 1041, 520, 0, 3887, 3888, 3, 1079, 539, 0, 3888, 3889, 3, 1041, 520, 0, 3889, 628, 1, 0, 0, 0, 3890, 3891, 3, 1043, 521, 0, 3891, 3892, 3, 1041, 520, 0, 3892, 3893, 3, 1077, 538, 0, 3893, 3894, 3, 1049, 524, 0, 3894, 630, 1, 0, 0, 0, 3895, 3896, 3, 1041, 520, 0, 3896, 3897, 3, 1081, 540, 0, 3897, 3898, 3, 1079, 539, 0, 3898, 3899, 3, 1055, 527, 0, 3899, 632, 1, 0, 0, 0, 3900, 3901, 3, 1041, 520, 0, 3901, 3902, 3, 1081, 540, 0, 3902, 3903, 3, 1079, 539, 0, 3903, 3904, 3, 1055, 527, 0, 3904, 3905, 3, 1049, 524, 0, 3905, 3906, 3, 1067, 533, 0, 3906, 3907, 3, 1079, 539, 0, 3907, 3908, 3, 1057, 528, 0, 3908, 3909, 3, 1045, 522, 0, 3909, 3910, 3, 1041, 520, 0, 3910, 3911, 3, 1079, 539, 0, 3911, 3912, 3, 1057, 528, 0, 3912, 3913, 3, 1069, 534, 0, 3913, 3914, 3, 1067, 533, 0, 3914, 634, 1, 0, 0, 0, 3915, 3916, 3, 1043, 521, 0, 3916, 3917, 3, 1041, 520, 0, 3917, 3918, 3, 1077, 538, 0, 3918, 3919, 3, 1057, 528, 0, 3919, 3920, 3, 1045, 522, 0, 3920, 636, 1, 0, 0, 0, 3921, 3922, 3, 1067, 533, 0, 3922, 3923, 3, 1069, 534, 0, 3923, 3924, 3, 1079, 539, 0, 3924, 3925, 3, 1055, 527, 0, 3925, 3926, 3, 1057, 528, 0, 3926, 3927, 3, 1067, 533, 0, 3927, 3928, 3, 1053, 526, 0, 3928, 638, 1, 0, 0, 0, 3929, 3930, 3, 1069, 534, 0, 3930, 3931, 3, 1041, 520, 0, 3931, 3932, 3, 1081, 540, 0, 3932, 3933, 3, 1079, 539, 0, 3933, 3934, 3, 1055, 527, 0, 3934, 640, 1, 0, 0, 0, 3935, 3936, 3, 1069, 534, 0, 3936, 3937, 3, 1071, 535, 0, 3937, 3938, 3, 1049, 524, 0, 3938, 3939, 3, 1075, 537, 0, 3939, 3940, 3, 1041, 520, 0, 3940, 3941, 3, 1079, 539, 0, 3941, 3942, 3, 1057, 528, 0, 3942, 3943, 3, 1069, 534, 0, 3943, 3944, 3, 1067, 533, 0, 3944, 642, 1, 0, 0, 0, 3945, 3946, 3, 1065, 532, 0, 3946, 3947, 3, 1049, 524, 0, 3947, 3948, 3, 1079, 539, 0, 3948, 3949, 3, 1055, 527, 0, 3949, 3950, 3, 1069, 534, 0, 3950, 3951, 3, 1047, 523, 0, 3951, 644, 1, 0, 0, 0, 3952, 3953, 3, 1071, 535, 0, 3953, 3954, 3, 1041, 520, 0, 3954, 3955, 3, 1079, 539, 0, 3955, 3956, 3, 1055, 527, 0, 3956, 646, 1, 0, 0, 0, 3957, 3958, 3, 1079, 539, 0, 3958, 3959, 3, 1057, 528, 0, 3959, 3960, 3, 1065, 532, 0, 3960, 3961, 3, 1049, 524, 0, 3961, 3962, 3, 1069, 534, 0, 3962, 3963, 3, 1081, 540, 0, 3963, 3964, 3, 1079, 539, 0, 3964, 648, 1, 0, 0, 0, 3965, 3966, 3, 1043, 521, 0, 3966, 3967, 3, 1069, 534, 0, 3967, 3968, 3, 1047, 523, 0, 3968, 3969, 3, 1089, 544, 0, 3969, 650, 1, 0, 0, 0, 3970, 3971, 3, 1075, 537, 0, 3971, 3972, 3, 1049, 524, 0, 3972, 3973, 3, 1077, 538, 0, 3973, 3974, 3, 1071, 535, 0, 3974, 3975, 3, 1069, 534, 0, 3975, 3976, 3, 1067, 533, 0, 3976, 3977, 3, 1077, 538, 0, 3977, 3978, 3, 1049, 524, 0, 3978, 652, 1, 0, 0, 0, 3979, 3980, 3, 1075, 537, 0, 3980, 3981, 3, 1049, 524, 0, 3981, 3982, 3, 1073, 536, 0, 3982, 3983, 3, 1081, 540, 0, 3983, 3984, 3, 1049, 524, 0, 3984, 3985, 3, 1077, 538, 0, 3985, 3986, 3, 1079, 539, 0, 3986, 654, 1, 0, 0, 0, 3987, 3988, 3, 1077, 538, 0, 3988, 3989, 3, 1049, 524, 0, 3989, 3990, 3, 1067, 533, 0, 3990, 3991, 3, 1047, 523, 0, 3991, 656, 1, 0, 0, 0, 3992, 3993, 3, 1059, 529, 0, 3993, 3994, 3, 1077, 538, 0, 3994, 3995, 3, 1069, 534, 0, 3995, 3996, 3, 1067, 533, 0, 3996, 658, 1, 0, 0, 0, 3997, 3998, 3, 1087, 543, 0, 3998, 3999, 3, 1065, 532, 0, 3999, 4000, 3, 1063, 531, 0, 4000, 660, 1, 0, 0, 0, 4001, 4002, 3, 1077, 538, 0, 4002, 4003, 3, 1079, 539, 0, 4003, 4004, 3, 1041, 520, 0, 4004, 4005, 3, 1079, 539, 0, 4005, 4006, 3, 1081, 540, 0, 4006, 4007, 3, 1077, 538, 0, 4007, 662, 1, 0, 0, 0, 4008, 4009, 3, 1051, 525, 0, 4009, 4010, 3, 1057, 528, 0, 4010, 4011, 3, 1063, 531, 0, 4011, 4012, 3, 1049, 524, 0, 4012, 664, 1, 0, 0, 0, 4013, 4014, 3, 1083, 541, 0, 4014, 4015, 3, 1049, 524, 0, 4015, 4016, 3, 1075, 537, 0, 4016, 4017, 3, 1077, 538, 0, 4017, 4018, 3, 1057, 528, 0, 4018, 4019, 3, 1069, 534, 0, 4019, 4020, 3, 1067, 533, 0, 4020, 666, 1, 0, 0, 0, 4021, 4022, 3, 1053, 526, 0, 4022, 4023, 3, 1049, 524, 0, 4023, 4024, 3, 1079, 539, 0, 4024, 668, 1, 0, 0, 0, 4025, 4026, 3, 1071, 535, 0, 4026, 4027, 3, 1069, 534, 0, 4027, 4028, 3, 1077, 538, 0, 4028, 4029, 3, 1079, 539, 0, 4029, 670, 1, 0, 0, 0, 4030, 4031, 3, 1071, 535, 0, 4031, 4032, 3, 1081, 540, 0, 4032, 4033, 3, 1079, 539, 0, 4033, 672, 1, 0, 0, 0, 4034, 4035, 3, 1071, 535, 0, 4035, 4036, 3, 1041, 520, 0, 4036, 4037, 3, 1079, 539, 0, 4037, 4038, 3, 1045, 522, 0, 4038, 4039, 3, 1055, 527, 0, 4039, 674, 1, 0, 0, 0, 4040, 4041, 3, 1041, 520, 0, 4041, 4042, 3, 1071, 535, 0, 4042, 4043, 3, 1057, 528, 0, 4043, 676, 1, 0, 0, 0, 4044, 4045, 3, 1045, 522, 0, 4045, 4046, 3, 1063, 531, 0, 4046, 4047, 3, 1057, 528, 0, 4047, 4048, 3, 1049, 524, 0, 4048, 4049, 3, 1067, 533, 0, 4049, 4050, 3, 1079, 539, 0, 4050, 678, 1, 0, 0, 0, 4051, 4052, 3, 1045, 522, 0, 4052, 4053, 3, 1063, 531, 0, 4053, 4054, 3, 1057, 528, 0, 4054, 4055, 3, 1049, 524, 0, 4055, 4056, 3, 1067, 533, 0, 4056, 4057, 3, 1079, 539, 0, 4057, 4058, 3, 1077, 538, 0, 4058, 680, 1, 0, 0, 0, 4059, 4060, 3, 1071, 535, 0, 4060, 4061, 3, 1081, 540, 0, 4061, 4062, 3, 1043, 521, 0, 4062, 4063, 3, 1063, 531, 0, 4063, 4064, 3, 1057, 528, 0, 4064, 4065, 3, 1077, 538, 0, 4065, 4066, 3, 1055, 527, 0, 4066, 682, 1, 0, 0, 0, 4067, 4068, 3, 1071, 535, 0, 4068, 4069, 3, 1081, 540, 0, 4069, 4070, 3, 1043, 521, 0, 4070, 4071, 3, 1063, 531, 0, 4071, 4072, 3, 1057, 528, 0, 4072, 4073, 3, 1077, 538, 0, 4073, 4074, 3, 1055, 527, 0, 4074, 4075, 3, 1049, 524, 0, 4075, 4076, 3, 1047, 523, 0, 4076, 684, 1, 0, 0, 0, 4077, 4078, 3, 1049, 524, 0, 4078, 4079, 3, 1087, 543, 0, 4079, 4080, 3, 1071, 535, 0, 4080, 4081, 3, 1069, 534, 0, 4081, 4082, 3, 1077, 538, 0, 4082, 4083, 3, 1049, 524, 0, 4083, 686, 1, 0, 0, 0, 4084, 4085, 3, 1045, 522, 0, 4085, 4086, 3, 1069, 534, 0, 4086, 4087, 3, 1067, 533, 0, 4087, 4088, 3, 1079, 539, 0, 4088, 4089, 3, 1075, 537, 0, 4089, 4090, 3, 1041, 520, 0, 4090, 4091, 3, 1045, 522, 0, 4091, 4092, 3, 1079, 539, 0, 4092, 688, 1, 0, 0, 0, 4093, 4094, 3, 1067, 533, 0, 4094, 4095, 3, 1041, 520, 0, 4095, 4096, 3, 1065, 532, 0, 4096, 4097, 3, 1049, 524, 0, 4097, 4098, 3, 1077, 538, 0, 4098, 4099, 3, 1071, 535, 0, 4099, 4100, 3, 1041, 520, 0, 4100, 4101, 3, 1045, 522, 0, 4101, 4102, 3, 1049, 524, 0, 4102, 690, 1, 0, 0, 0, 4103, 4104, 3, 1077, 538, 0, 4104, 4105, 3, 1049, 524, 0, 4105, 4106, 3, 1077, 538, 0, 4106, 4107, 3, 1077, 538, 0, 4107, 4108, 3, 1057, 528, 0, 4108, 4109, 3, 1069, 534, 0, 4109, 4110, 3, 1067, 533, 0, 4110, 692, 1, 0, 0, 0, 4111, 4112, 3, 1053, 526, 0, 4112, 4113, 3, 1081, 540, 0, 4113, 4114, 3, 1049, 524, 0, 4114, 4115, 3, 1077, 538, 0, 4115, 4116, 3, 1079, 539, 0, 4116, 694, 1, 0, 0, 0, 4117, 4118, 3, 1071, 535, 0, 4118, 4119, 3, 1041, 520, 0, 4119, 4120, 3, 1053, 526, 0, 4120, 4121, 3, 1057, 528, 0, 4121, 4122, 3, 1067, 533, 0, 4122, 4123, 3, 1053, 526, 0, 4123, 696, 1, 0, 0, 0, 4124, 4125, 3, 1067, 533, 0, 4125, 4126, 3, 1069, 534, 0, 4126, 4127, 3, 1079, 539, 0, 4127, 4128, 5, 95, 0, 0, 4128, 4129, 3, 1077, 538, 0, 4129, 4130, 3, 1081, 540, 0, 4130, 4131, 3, 1071, 535, 0, 4131, 4132, 3, 1071, 535, 0, 4132, 4133, 3, 1069, 534, 0, 4133, 4134, 3, 1075, 537, 0, 4134, 4135, 3, 1079, 539, 0, 4135, 4136, 3, 1049, 524, 0, 4136, 4137, 3, 1047, 523, 0, 4137, 698, 1, 0, 0, 0, 4138, 4139, 3, 1081, 540, 0, 4139, 4140, 3, 1077, 538, 0, 4140, 4141, 3, 1049, 524, 0, 4141, 4142, 3, 1075, 537, 0, 4142, 4143, 3, 1067, 533, 0, 4143, 4144, 3, 1041, 520, 0, 4144, 4145, 3, 1065, 532, 0, 4145, 4146, 3, 1049, 524, 0, 4146, 700, 1, 0, 0, 0, 4147, 4148, 3, 1071, 535, 0, 4148, 4149, 3, 1041, 520, 0, 4149, 4150, 3, 1077, 538, 0, 4150, 4151, 3, 1077, 538, 0, 4151, 4152, 3, 1085, 542, 0, 4152, 4153, 3, 1069, 534, 0, 4153, 4154, 3, 1075, 537, 0, 4154, 4155, 3, 1047, 523, 0, 4155, 702, 1, 0, 0, 0, 4156, 4157, 3, 1045, 522, 0, 4157, 4158, 3, 1069, 534, 0, 4158, 4159, 3, 1067, 533, 0, 4159, 4160, 3, 1067, 533, 0, 4160, 4161, 3, 1049, 524, 0, 4161, 4162, 3, 1045, 522, 0, 4162, 4163, 3, 1079, 539, 0, 4163, 4164, 3, 1057, 528, 0, 4164, 4165, 3, 1069, 534, 0, 4165, 4166, 3, 1067, 533, 0, 4166, 704, 1, 0, 0, 0, 4167, 4168, 3, 1047, 523, 0, 4168, 4169, 3, 1041, 520, 0, 4169, 4170, 3, 1079, 539, 0, 4170, 4171, 3, 1041, 520, 0, 4171, 4172, 3, 1043, 521, 0, 4172, 4173, 3, 1041, 520, 0, 4173, 4174, 3, 1077, 538, 0, 4174, 4175, 3, 1049, 524, 0, 4175, 706, 1, 0, 0, 0, 4176, 4177, 3, 1073, 536, 0, 4177, 4178, 3, 1081, 540, 0, 4178, 4179, 3, 1049, 524, 0, 4179, 4180, 3, 1075, 537, 0, 4180, 4181, 3, 1089, 544, 0, 4181, 708, 1, 0, 0, 0, 4182, 4183, 3, 1065, 532, 0, 4183, 4184, 3, 1041, 520, 0, 4184, 4185, 3, 1071, 535, 0, 4185, 710, 1, 0, 0, 0, 4186, 4187, 3, 1065, 532, 0, 4187, 4188, 3, 1041, 520, 0, 4188, 4189, 3, 1071, 535, 0, 4189, 4190, 3, 1071, 535, 0, 4190, 4191, 3, 1057, 528, 0, 4191, 4192, 3, 1067, 533, 0, 4192, 4193, 3, 1053, 526, 0, 4193, 712, 1, 0, 0, 0, 4194, 4195, 3, 1057, 528, 0, 4195, 4196, 3, 1065, 532, 0, 4196, 4197, 3, 1071, 535, 0, 4197, 4198, 3, 1069, 534, 0, 4198, 4199, 3, 1075, 537, 0, 4199, 4200, 3, 1079, 539, 0, 4200, 714, 1, 0, 0, 0, 4201, 4202, 3, 1057, 528, 0, 4202, 4203, 3, 1067, 533, 0, 4203, 4204, 3, 1079, 539, 0, 4204, 4205, 3, 1069, 534, 0, 4205, 716, 1, 0, 0, 0, 4206, 4207, 3, 1043, 521, 0, 4207, 4208, 3, 1041, 520, 0, 4208, 4209, 3, 1079, 539, 0, 4209, 4210, 3, 1045, 522, 0, 4210, 4211, 3, 1055, 527, 0, 4211, 718, 1, 0, 0, 0, 4212, 4213, 3, 1063, 531, 0, 4213, 4214, 3, 1057, 528, 0, 4214, 4215, 3, 1067, 533, 0, 4215, 4216, 3, 1061, 530, 0, 4216, 720, 1, 0, 0, 0, 4217, 4218, 3, 1049, 524, 0, 4218, 4219, 3, 1087, 543, 0, 4219, 4220, 3, 1071, 535, 0, 4220, 4221, 3, 1069, 534, 0, 4221, 4222, 3, 1075, 537, 0, 4222, 4223, 3, 1079, 539, 0, 4223, 722, 1, 0, 0, 0, 4224, 4225, 3, 1053, 526, 0, 4225, 4226, 3, 1049, 524, 0, 4226, 4227, 3, 1067, 533, 0, 4227, 4228, 3, 1049, 524, 0, 4228, 4229, 3, 1075, 537, 0, 4229, 4230, 3, 1041, 520, 0, 4230, 4231, 3, 1079, 539, 0, 4231, 4232, 3, 1049, 524, 0, 4232, 724, 1, 0, 0, 0, 4233, 4234, 3, 1045, 522, 0, 4234, 4235, 3, 1069, 534, 0, 4235, 4236, 3, 1067, 533, 0, 4236, 4237, 3, 1067, 533, 0, 4237, 4238, 3, 1049, 524, 0, 4238, 4239, 3, 1045, 522, 0, 4239, 4240, 3, 1079, 539, 0, 4240, 4241, 3, 1069, 534, 0, 4241, 4242, 3, 1075, 537, 0, 4242, 726, 1, 0, 0, 0, 4243, 4244, 3, 1049, 524, 0, 4244, 4245, 3, 1087, 543, 0, 4245, 4246, 3, 1049, 524, 0, 4246, 4247, 3, 1045, 522, 0, 4247, 728, 1, 0, 0, 0, 4248, 4249, 3, 1079, 539, 0, 4249, 4250, 3, 1041, 520, 0, 4250, 4251, 3, 1043, 521, 0, 4251, 4252, 3, 1063, 531, 0, 4252, 4253, 3, 1049, 524, 0, 4253, 4254, 3, 1077, 538, 0, 4254, 730, 1, 0, 0, 0, 4255, 4256, 3, 1083, 541, 0, 4256, 4257, 3, 1057, 528, 0, 4257, 4258, 3, 1049, 524, 0, 4258, 4259, 3, 1085, 542, 0, 4259, 4260, 3, 1077, 538, 0, 4260, 732, 1, 0, 0, 0, 4261, 4262, 3, 1049, 524, 0, 4262, 4263, 3, 1087, 543, 0, 4263, 4264, 3, 1071, 535, 0, 4264, 4265, 3, 1069, 534, 0, 4265, 4266, 3, 1077, 538, 0, 4266, 4267, 3, 1049, 524, 0, 4267, 4268, 3, 1047, 523, 0, 4268, 734, 1, 0, 0, 0, 4269, 4270, 3, 1071, 535, 0, 4270, 4271, 3, 1041, 520, 0, 4271, 4272, 3, 1075, 537, 0, 4272, 4273, 3, 1041, 520, 0, 4273, 4274, 3, 1065, 532, 0, 4274, 4275, 3, 1049, 524, 0, 4275, 4276, 3, 1079, 539, 0, 4276, 4277, 3, 1049, 524, 0, 4277, 4278, 3, 1075, 537, 0, 4278, 736, 1, 0, 0, 0, 4279, 4280, 3, 1071, 535, 0, 4280, 4281, 3, 1041, 520, 0, 4281, 4282, 3, 1075, 537, 0, 4282, 4283, 3, 1041, 520, 0, 4283, 4284, 3, 1065, 532, 0, 4284, 4285, 3, 1049, 524, 0, 4285, 4286, 3, 1079, 539, 0, 4286, 4287, 3, 1049, 524, 0, 4287, 4288, 3, 1075, 537, 0, 4288, 4289, 3, 1077, 538, 0, 4289, 738, 1, 0, 0, 0, 4290, 4291, 3, 1055, 527, 0, 4291, 4292, 3, 1049, 524, 0, 4292, 4293, 3, 1041, 520, 0, 4293, 4294, 3, 1047, 523, 0, 4294, 4295, 3, 1049, 524, 0, 4295, 4296, 3, 1075, 537, 0, 4296, 4297, 3, 1077, 538, 0, 4297, 740, 1, 0, 0, 0, 4298, 4299, 3, 1067, 533, 0, 4299, 4300, 3, 1041, 520, 0, 4300, 4301, 3, 1083, 541, 0, 4301, 4302, 3, 1057, 528, 0, 4302, 4303, 3, 1053, 526, 0, 4303, 4304, 3, 1041, 520, 0, 4304, 4305, 3, 1079, 539, 0, 4305, 4306, 3, 1057, 528, 0, 4306, 4307, 3, 1069, 534, 0, 4307, 4308, 3, 1067, 533, 0, 4308, 742, 1, 0, 0, 0, 4309, 4310, 3, 1065, 532, 0, 4310, 4311, 3, 1049, 524, 0, 4311, 4312, 3, 1067, 533, 0, 4312, 4313, 3, 1081, 540, 0, 4313, 744, 1, 0, 0, 0, 4314, 4315, 3, 1055, 527, 0, 4315, 4316, 3, 1069, 534, 0, 4316, 4317, 3, 1065, 532, 0, 4317, 4318, 3, 1049, 524, 0, 4318, 4319, 3, 1077, 538, 0, 4319, 746, 1, 0, 0, 0, 4320, 4321, 3, 1055, 527, 0, 4321, 4322, 3, 1069, 534, 0, 4322, 4323, 3, 1065, 532, 0, 4323, 4324, 3, 1049, 524, 0, 4324, 748, 1, 0, 0, 0, 4325, 4326, 3, 1063, 531, 0, 4326, 4327, 3, 1069, 534, 0, 4327, 4328, 3, 1053, 526, 0, 4328, 4329, 3, 1057, 528, 0, 4329, 4330, 3, 1067, 533, 0, 4330, 750, 1, 0, 0, 0, 4331, 4332, 3, 1051, 525, 0, 4332, 4333, 3, 1069, 534, 0, 4333, 4334, 3, 1081, 540, 0, 4334, 4335, 3, 1067, 533, 0, 4335, 4336, 3, 1047, 523, 0, 4336, 752, 1, 0, 0, 0, 4337, 4338, 3, 1065, 532, 0, 4338, 4339, 3, 1069, 534, 0, 4339, 4340, 3, 1047, 523, 0, 4340, 4341, 3, 1081, 540, 0, 4341, 4342, 3, 1063, 531, 0, 4342, 4343, 3, 1049, 524, 0, 4343, 4344, 3, 1077, 538, 0, 4344, 754, 1, 0, 0, 0, 4345, 4346, 3, 1049, 524, 0, 4346, 4347, 3, 1067, 533, 0, 4347, 4348, 3, 1079, 539, 0, 4348, 4349, 3, 1057, 528, 0, 4349, 4350, 3, 1079, 539, 0, 4350, 4351, 3, 1057, 528, 0, 4351, 4352, 3, 1049, 524, 0, 4352, 4353, 3, 1077, 538, 0, 4353, 756, 1, 0, 0, 0, 4354, 4355, 3, 1041, 520, 0, 4355, 4356, 3, 1077, 538, 0, 4356, 4357, 3, 1077, 538, 0, 4357, 4358, 3, 1069, 534, 0, 4358, 4359, 3, 1045, 522, 0, 4359, 4360, 3, 1057, 528, 0, 4360, 4361, 3, 1041, 520, 0, 4361, 4362, 3, 1079, 539, 0, 4362, 4363, 3, 1057, 528, 0, 4363, 4364, 3, 1069, 534, 0, 4364, 4365, 3, 1067, 533, 0, 4365, 4366, 3, 1077, 538, 0, 4366, 758, 1, 0, 0, 0, 4367, 4368, 3, 1065, 532, 0, 4368, 4369, 3, 1057, 528, 0, 4369, 4370, 3, 1045, 522, 0, 4370, 4371, 3, 1075, 537, 0, 4371, 4372, 3, 1069, 534, 0, 4372, 4373, 3, 1051, 525, 0, 4373, 4374, 3, 1063, 531, 0, 4374, 4375, 3, 1069, 534, 0, 4375, 4376, 3, 1085, 542, 0, 4376, 4377, 3, 1077, 538, 0, 4377, 760, 1, 0, 0, 0, 4378, 4379, 3, 1067, 533, 0, 4379, 4380, 3, 1041, 520, 0, 4380, 4381, 3, 1067, 533, 0, 4381, 4382, 3, 1069, 534, 0, 4382, 4383, 3, 1051, 525, 0, 4383, 4384, 3, 1063, 531, 0, 4384, 4385, 3, 1069, 534, 0, 4385, 4386, 3, 1085, 542, 0, 4386, 4387, 3, 1077, 538, 0, 4387, 762, 1, 0, 0, 0, 4388, 4389, 3, 1085, 542, 0, 4389, 4390, 3, 1069, 534, 0, 4390, 4391, 3, 1075, 537, 0, 4391, 4392, 3, 1061, 530, 0, 4392, 4393, 3, 1051, 525, 0, 4393, 4394, 3, 1063, 531, 0, 4394, 4395, 3, 1069, 534, 0, 4395, 4396, 3, 1085, 542, 0, 4396, 4397, 3, 1077, 538, 0, 4397, 764, 1, 0, 0, 0, 4398, 4399, 3, 1049, 524, 0, 4399, 4400, 3, 1067, 533, 0, 4400, 4401, 3, 1081, 540, 0, 4401, 4402, 3, 1065, 532, 0, 4402, 4403, 3, 1049, 524, 0, 4403, 4404, 3, 1075, 537, 0, 4404, 4405, 3, 1041, 520, 0, 4405, 4406, 3, 1079, 539, 0, 4406, 4407, 3, 1057, 528, 0, 4407, 4408, 3, 1069, 534, 0, 4408, 4409, 3, 1067, 533, 0, 4409, 4410, 3, 1077, 538, 0, 4410, 766, 1, 0, 0, 0, 4411, 4412, 3, 1045, 522, 0, 4412, 4413, 3, 1069, 534, 0, 4413, 4414, 3, 1067, 533, 0, 4414, 4415, 3, 1077, 538, 0, 4415, 4416, 3, 1079, 539, 0, 4416, 4417, 3, 1041, 520, 0, 4417, 4418, 3, 1067, 533, 0, 4418, 4419, 3, 1079, 539, 0, 4419, 4420, 3, 1077, 538, 0, 4420, 768, 1, 0, 0, 0, 4421, 4422, 3, 1045, 522, 0, 4422, 4423, 3, 1069, 534, 0, 4423, 4424, 3, 1067, 533, 0, 4424, 4425, 3, 1067, 533, 0, 4425, 4426, 3, 1049, 524, 0, 4426, 4427, 3, 1045, 522, 0, 4427, 4428, 3, 1079, 539, 0, 4428, 4429, 3, 1057, 528, 0, 4429, 4430, 3, 1069, 534, 0, 4430, 4431, 3, 1067, 533, 0, 4431, 4432, 3, 1077, 538, 0, 4432, 770, 1, 0, 0, 0, 4433, 4434, 3, 1047, 523, 0, 4434, 4435, 3, 1049, 524, 0, 4435, 4436, 3, 1051, 525, 0, 4436, 4437, 3, 1057, 528, 0, 4437, 4438, 3, 1067, 533, 0, 4438, 4439, 3, 1049, 524, 0, 4439, 772, 1, 0, 0, 0, 4440, 4441, 3, 1051, 525, 0, 4441, 4442, 3, 1075, 537, 0, 4442, 4443, 3, 1041, 520, 0, 4443, 4444, 3, 1053, 526, 0, 4444, 4445, 3, 1065, 532, 0, 4445, 4446, 3, 1049, 524, 0, 4446, 4447, 3, 1067, 533, 0, 4447, 4448, 3, 1079, 539, 0, 4448, 774, 1, 0, 0, 0, 4449, 4450, 3, 1051, 525, 0, 4450, 4451, 3, 1075, 537, 0, 4451, 4452, 3, 1041, 520, 0, 4452, 4453, 3, 1053, 526, 0, 4453, 4454, 3, 1065, 532, 0, 4454, 4455, 3, 1049, 524, 0, 4455, 4456, 3, 1067, 533, 0, 4456, 4457, 3, 1079, 539, 0, 4457, 4458, 3, 1077, 538, 0, 4458, 776, 1, 0, 0, 0, 4459, 4460, 3, 1057, 528, 0, 4460, 4461, 3, 1067, 533, 0, 4461, 4462, 3, 1077, 538, 0, 4462, 4463, 3, 1049, 524, 0, 4463, 4464, 3, 1075, 537, 0, 4464, 4465, 3, 1079, 539, 0, 4465, 778, 1, 0, 0, 0, 4466, 4467, 3, 1043, 521, 0, 4467, 4468, 3, 1049, 524, 0, 4468, 4469, 3, 1051, 525, 0, 4469, 4470, 3, 1069, 534, 0, 4470, 4471, 3, 1075, 537, 0, 4471, 4472, 3, 1049, 524, 0, 4472, 780, 1, 0, 0, 0, 4473, 4474, 3, 1041, 520, 0, 4474, 4475, 3, 1051, 525, 0, 4475, 4476, 3, 1079, 539, 0, 4476, 4477, 3, 1049, 524, 0, 4477, 4478, 3, 1075, 537, 0, 4478, 782, 1, 0, 0, 0, 4479, 4480, 3, 1081, 540, 0, 4480, 4481, 3, 1071, 535, 0, 4481, 4482, 3, 1047, 523, 0, 4482, 4483, 3, 1041, 520, 0, 4483, 4484, 3, 1079, 539, 0, 4484, 4485, 3, 1049, 524, 0, 4485, 784, 1, 0, 0, 0, 4486, 4487, 3, 1075, 537, 0, 4487, 4488, 3, 1049, 524, 0, 4488, 4489, 3, 1051, 525, 0, 4489, 4490, 3, 1075, 537, 0, 4490, 4491, 3, 1049, 524, 0, 4491, 4492, 3, 1077, 538, 0, 4492, 4493, 3, 1055, 527, 0, 4493, 786, 1, 0, 0, 0, 4494, 4495, 3, 1045, 522, 0, 4495, 4496, 3, 1055, 527, 0, 4496, 4497, 3, 1049, 524, 0, 4497, 4498, 3, 1045, 522, 0, 4498, 4499, 3, 1061, 530, 0, 4499, 788, 1, 0, 0, 0, 4500, 4501, 3, 1043, 521, 0, 4501, 4502, 3, 1081, 540, 0, 4502, 4503, 3, 1057, 528, 0, 4503, 4504, 3, 1063, 531, 0, 4504, 4505, 3, 1047, 523, 0, 4505, 790, 1, 0, 0, 0, 4506, 4507, 3, 1049, 524, 0, 4507, 4508, 3, 1087, 543, 0, 4508, 4509, 3, 1049, 524, 0, 4509, 4510, 3, 1045, 522, 0, 4510, 4511, 3, 1081, 540, 0, 4511, 4512, 3, 1079, 539, 0, 4512, 4513, 3, 1049, 524, 0, 4513, 792, 1, 0, 0, 0, 4514, 4515, 3, 1077, 538, 0, 4515, 4516, 3, 1045, 522, 0, 4516, 4517, 3, 1075, 537, 0, 4517, 4518, 3, 1057, 528, 0, 4518, 4519, 3, 1071, 535, 0, 4519, 4520, 3, 1079, 539, 0, 4520, 794, 1, 0, 0, 0, 4521, 4522, 3, 1063, 531, 0, 4522, 4523, 3, 1057, 528, 0, 4523, 4524, 3, 1067, 533, 0, 4524, 4525, 3, 1079, 539, 0, 4525, 796, 1, 0, 0, 0, 4526, 4527, 3, 1075, 537, 0, 4527, 4528, 3, 1081, 540, 0, 4528, 4529, 3, 1063, 531, 0, 4529, 4530, 3, 1049, 524, 0, 4530, 4531, 3, 1077, 538, 0, 4531, 798, 1, 0, 0, 0, 4532, 4533, 3, 1079, 539, 0, 4533, 4534, 3, 1049, 524, 0, 4534, 4535, 3, 1087, 543, 0, 4535, 4536, 3, 1079, 539, 0, 4536, 800, 1, 0, 0, 0, 4537, 4538, 3, 1077, 538, 0, 4538, 4539, 3, 1041, 520, 0, 4539, 4540, 3, 1075, 537, 0, 4540, 4541, 3, 1057, 528, 0, 4541, 4542, 3, 1051, 525, 0, 4542, 802, 1, 0, 0, 0, 4543, 4544, 3, 1065, 532, 0, 4544, 4545, 3, 1049, 524, 0, 4545, 4546, 3, 1077, 538, 0, 4546, 4547, 3, 1077, 538, 0, 4547, 4548, 3, 1041, 520, 0, 4548, 4549, 3, 1053, 526, 0, 4549, 4550, 3, 1049, 524, 0, 4550, 804, 1, 0, 0, 0, 4551, 4552, 3, 1065, 532, 0, 4552, 4553, 3, 1049, 524, 0, 4553, 4554, 3, 1077, 538, 0, 4554, 4555, 3, 1077, 538, 0, 4555, 4556, 3, 1041, 520, 0, 4556, 4557, 3, 1053, 526, 0, 4557, 4558, 3, 1049, 524, 0, 4558, 4559, 3, 1077, 538, 0, 4559, 806, 1, 0, 0, 0, 4560, 4561, 3, 1045, 522, 0, 4561, 4562, 3, 1055, 527, 0, 4562, 4563, 3, 1041, 520, 0, 4563, 4564, 3, 1067, 533, 0, 4564, 4565, 3, 1067, 533, 0, 4565, 4566, 3, 1049, 524, 0, 4566, 4567, 3, 1063, 531, 0, 4567, 4568, 3, 1077, 538, 0, 4568, 808, 1, 0, 0, 0, 4569, 4570, 3, 1045, 522, 0, 4570, 4571, 3, 1069, 534, 0, 4571, 4572, 3, 1065, 532, 0, 4572, 4573, 3, 1065, 532, 0, 4573, 4574, 3, 1049, 524, 0, 4574, 4575, 3, 1067, 533, 0, 4575, 4576, 3, 1079, 539, 0, 4576, 810, 1, 0, 0, 0, 4577, 4578, 3, 1045, 522, 0, 4578, 4579, 3, 1041, 520, 0, 4579, 4580, 3, 1079, 539, 0, 4580, 4581, 3, 1041, 520, 0, 4581, 4582, 3, 1063, 531, 0, 4582, 4583, 3, 1069, 534, 0, 4583, 4584, 3, 1053, 526, 0, 4584, 812, 1, 0, 0, 0, 4585, 4586, 3, 1051, 525, 0, 4586, 4587, 3, 1069, 534, 0, 4587, 4588, 3, 1075, 537, 0, 4588, 4589, 3, 1045, 522, 0, 4589, 4590, 3, 1049, 524, 0, 4590, 814, 1, 0, 0, 0, 4591, 4592, 3, 1043, 521, 0, 4592, 4593, 3, 1041, 520, 0, 4593, 4594, 3, 1045, 522, 0, 4594, 4595, 3, 1061, 530, 0, 4595, 4596, 3, 1053, 526, 0, 4596, 4597, 3, 1075, 537, 0, 4597, 4598, 3, 1069, 534, 0, 4598, 4599, 3, 1081, 540, 0, 4599, 4600, 3, 1067, 533, 0, 4600, 4601, 3, 1047, 523, 0, 4601, 816, 1, 0, 0, 0, 4602, 4603, 3, 1045, 522, 0, 4603, 4604, 3, 1041, 520, 0, 4604, 4605, 3, 1063, 531, 0, 4605, 4606, 3, 1063, 531, 0, 4606, 4607, 3, 1049, 524, 0, 4607, 4608, 3, 1075, 537, 0, 4608, 4609, 3, 1077, 538, 0, 4609, 818, 1, 0, 0, 0, 4610, 4611, 3, 1045, 522, 0, 4611, 4612, 3, 1041, 520, 0, 4612, 4613, 3, 1063, 531, 0, 4613, 4614, 3, 1063, 531, 0, 4614, 4615, 3, 1049, 524, 0, 4615, 4616, 3, 1049, 524, 0, 4616, 4617, 3, 1077, 538, 0, 4617, 820, 1, 0, 0, 0, 4618, 4619, 3, 1075, 537, 0, 4619, 4620, 3, 1049, 524, 0, 4620, 4621, 3, 1051, 525, 0, 4621, 4622, 3, 1049, 524, 0, 4622, 4623, 3, 1075, 537, 0, 4623, 4624, 3, 1049, 524, 0, 4624, 4625, 3, 1067, 533, 0, 4625, 4626, 3, 1045, 522, 0, 4626, 4627, 3, 1049, 524, 0, 4627, 4628, 3, 1077, 538, 0, 4628, 822, 1, 0, 0, 0, 4629, 4630, 3, 1079, 539, 0, 4630, 4631, 3, 1075, 537, 0, 4631, 4632, 3, 1041, 520, 0, 4632, 4633, 3, 1067, 533, 0, 4633, 4634, 3, 1077, 538, 0, 4634, 4635, 3, 1057, 528, 0, 4635, 4636, 3, 1079, 539, 0, 4636, 4637, 3, 1057, 528, 0, 4637, 4638, 3, 1083, 541, 0, 4638, 4639, 3, 1049, 524, 0, 4639, 824, 1, 0, 0, 0, 4640, 4641, 3, 1057, 528, 0, 4641, 4642, 3, 1065, 532, 0, 4642, 4643, 3, 1071, 535, 0, 4643, 4644, 3, 1041, 520, 0, 4644, 4645, 3, 1045, 522, 0, 4645, 4646, 3, 1079, 539, 0, 4646, 826, 1, 0, 0, 0, 4647, 4648, 3, 1047, 523, 0, 4648, 4649, 3, 1049, 524, 0, 4649, 4650, 3, 1071, 535, 0, 4650, 4651, 3, 1079, 539, 0, 4651, 4652, 3, 1055, 527, 0, 4652, 828, 1, 0, 0, 0, 4653, 4654, 3, 1077, 538, 0, 4654, 4655, 3, 1079, 539, 0, 4655, 4656, 3, 1075, 537, 0, 4656, 4657, 3, 1081, 540, 0, 4657, 4658, 3, 1045, 522, 0, 4658, 4659, 3, 1079, 539, 0, 4659, 4660, 3, 1081, 540, 0, 4660, 4661, 3, 1075, 537, 0, 4661, 4662, 3, 1049, 524, 0, 4662, 830, 1, 0, 0, 0, 4663, 4664, 3, 1079, 539, 0, 4664, 4665, 3, 1089, 544, 0, 4665, 4666, 3, 1071, 535, 0, 4666, 4667, 3, 1049, 524, 0, 4667, 832, 1, 0, 0, 0, 4668, 4669, 3, 1083, 541, 0, 4669, 4670, 3, 1041, 520, 0, 4670, 4671, 3, 1063, 531, 0, 4671, 4672, 3, 1081, 540, 0, 4672, 4673, 3, 1049, 524, 0, 4673, 834, 1, 0, 0, 0, 4674, 4675, 3, 1083, 541, 0, 4675, 4676, 3, 1041, 520, 0, 4676, 4677, 3, 1063, 531, 0, 4677, 4678, 3, 1081, 540, 0, 4678, 4679, 3, 1049, 524, 0, 4679, 4680, 3, 1077, 538, 0, 4680, 836, 1, 0, 0, 0, 4681, 4682, 3, 1077, 538, 0, 4682, 4683, 3, 1057, 528, 0, 4683, 4684, 3, 1067, 533, 0, 4684, 4685, 3, 1053, 526, 0, 4685, 4686, 3, 1063, 531, 0, 4686, 4687, 3, 1049, 524, 0, 4687, 838, 1, 0, 0, 0, 4688, 4689, 3, 1065, 532, 0, 4689, 4690, 3, 1081, 540, 0, 4690, 4691, 3, 1063, 531, 0, 4691, 4692, 3, 1079, 539, 0, 4692, 4693, 3, 1057, 528, 0, 4693, 4694, 3, 1071, 535, 0, 4694, 4695, 3, 1063, 531, 0, 4695, 4696, 3, 1049, 524, 0, 4696, 840, 1, 0, 0, 0, 4697, 4698, 3, 1067, 533, 0, 4698, 4699, 3, 1069, 534, 0, 4699, 4700, 3, 1067, 533, 0, 4700, 4701, 3, 1049, 524, 0, 4701, 842, 1, 0, 0, 0, 4702, 4703, 3, 1043, 521, 0, 4703, 4704, 3, 1069, 534, 0, 4704, 4705, 3, 1079, 539, 0, 4705, 4706, 3, 1055, 527, 0, 4706, 844, 1, 0, 0, 0, 4707, 4708, 3, 1079, 539, 0, 4708, 4709, 3, 1069, 534, 0, 4709, 846, 1, 0, 0, 0, 4710, 4711, 3, 1069, 534, 0, 4711, 4712, 3, 1051, 525, 0, 4712, 848, 1, 0, 0, 0, 4713, 4714, 3, 1069, 534, 0, 4714, 4715, 3, 1083, 541, 0, 4715, 4716, 3, 1049, 524, 0, 4716, 4717, 3, 1075, 537, 0, 4717, 850, 1, 0, 0, 0, 4718, 4719, 3, 1051, 525, 0, 4719, 4720, 3, 1069, 534, 0, 4720, 4721, 3, 1075, 537, 0, 4721, 852, 1, 0, 0, 0, 4722, 4723, 3, 1075, 537, 0, 4723, 4724, 3, 1049, 524, 0, 4724, 4725, 3, 1071, 535, 0, 4725, 4726, 3, 1063, 531, 0, 4726, 4727, 3, 1041, 520, 0, 4727, 4728, 3, 1045, 522, 0, 4728, 4729, 3, 1049, 524, 0, 4729, 854, 1, 0, 0, 0, 4730, 4731, 3, 1065, 532, 0, 4731, 4732, 3, 1049, 524, 0, 4732, 4733, 3, 1065, 532, 0, 4733, 4734, 3, 1043, 521, 0, 4734, 4735, 3, 1049, 524, 0, 4735, 4736, 3, 1075, 537, 0, 4736, 4737, 3, 1077, 538, 0, 4737, 856, 1, 0, 0, 0, 4738, 4739, 3, 1041, 520, 0, 4739, 4740, 3, 1079, 539, 0, 4740, 4741, 3, 1079, 539, 0, 4741, 4742, 3, 1075, 537, 0, 4742, 4743, 3, 1057, 528, 0, 4743, 4744, 3, 1043, 521, 0, 4744, 4745, 3, 1081, 540, 0, 4745, 4746, 3, 1079, 539, 0, 4746, 4747, 3, 1049, 524, 0, 4747, 4748, 3, 1067, 533, 0, 4748, 4749, 3, 1041, 520, 0, 4749, 4750, 3, 1065, 532, 0, 4750, 4751, 3, 1049, 524, 0, 4751, 858, 1, 0, 0, 0, 4752, 4753, 3, 1051, 525, 0, 4753, 4754, 3, 1069, 534, 0, 4754, 4755, 3, 1075, 537, 0, 4755, 4756, 3, 1065, 532, 0, 4756, 4757, 3, 1041, 520, 0, 4757, 4758, 3, 1079, 539, 0, 4758, 860, 1, 0, 0, 0, 4759, 4760, 3, 1077, 538, 0, 4760, 4761, 3, 1073, 536, 0, 4761, 4762, 3, 1063, 531, 0, 4762, 862, 1, 0, 0, 0, 4763, 4764, 3, 1085, 542, 0, 4764, 4765, 3, 1057, 528, 0, 4765, 4766, 3, 1079, 539, 0, 4766, 4767, 3, 1055, 527, 0, 4767, 4768, 3, 1069, 534, 0, 4768, 4769, 3, 1081, 540, 0, 4769, 4770, 3, 1079, 539, 0, 4770, 864, 1, 0, 0, 0, 4771, 4772, 3, 1047, 523, 0, 4772, 4773, 3, 1075, 537, 0, 4773, 4774, 3, 1089, 544, 0, 4774, 866, 1, 0, 0, 0, 4775, 4776, 3, 1075, 537, 0, 4776, 4777, 3, 1081, 540, 0, 4777, 4778, 3, 1067, 533, 0, 4778, 868, 1, 0, 0, 0, 4779, 4780, 3, 1085, 542, 0, 4780, 4781, 3, 1057, 528, 0, 4781, 4782, 3, 1047, 523, 0, 4782, 4783, 3, 1053, 526, 0, 4783, 4784, 3, 1049, 524, 0, 4784, 4785, 3, 1079, 539, 0, 4785, 4786, 3, 1079, 539, 0, 4786, 4787, 3, 1089, 544, 0, 4787, 4788, 3, 1071, 535, 0, 4788, 4789, 3, 1049, 524, 0, 4789, 870, 1, 0, 0, 0, 4790, 4791, 3, 1083, 541, 0, 4791, 4792, 5, 51, 0, 0, 4792, 872, 1, 0, 0, 0, 4793, 4794, 3, 1043, 521, 0, 4794, 4795, 3, 1081, 540, 0, 4795, 4796, 3, 1077, 538, 0, 4796, 4797, 3, 1057, 528, 0, 4797, 4798, 3, 1067, 533, 0, 4798, 4799, 3, 1049, 524, 0, 4799, 4800, 3, 1077, 538, 0, 4800, 4801, 3, 1077, 538, 0, 4801, 874, 1, 0, 0, 0, 4802, 4803, 3, 1049, 524, 0, 4803, 4804, 3, 1083, 541, 0, 4804, 4805, 3, 1049, 524, 0, 4805, 4806, 3, 1067, 533, 0, 4806, 4807, 3, 1079, 539, 0, 4807, 876, 1, 0, 0, 0, 4808, 4809, 3, 1077, 538, 0, 4809, 4810, 3, 1081, 540, 0, 4810, 4811, 3, 1043, 521, 0, 4811, 4812, 3, 1077, 538, 0, 4812, 4813, 3, 1045, 522, 0, 4813, 4814, 3, 1075, 537, 0, 4814, 4815, 3, 1057, 528, 0, 4815, 4816, 3, 1043, 521, 0, 4816, 4817, 3, 1049, 524, 0, 4817, 878, 1, 0, 0, 0, 4818, 4819, 3, 1077, 538, 0, 4819, 4820, 3, 1049, 524, 0, 4820, 4821, 3, 1079, 539, 0, 4821, 4822, 3, 1079, 539, 0, 4822, 4823, 3, 1057, 528, 0, 4823, 4824, 3, 1067, 533, 0, 4824, 4825, 3, 1053, 526, 0, 4825, 4826, 3, 1077, 538, 0, 4826, 880, 1, 0, 0, 0, 4827, 4828, 3, 1045, 522, 0, 4828, 4829, 3, 1069, 534, 0, 4829, 4830, 3, 1067, 533, 0, 4830, 4831, 3, 1051, 525, 0, 4831, 4832, 3, 1057, 528, 0, 4832, 4833, 3, 1053, 526, 0, 4833, 4834, 3, 1081, 540, 0, 4834, 4835, 3, 1075, 537, 0, 4835, 4836, 3, 1041, 520, 0, 4836, 4837, 3, 1079, 539, 0, 4837, 4838, 3, 1057, 528, 0, 4838, 4839, 3, 1069, 534, 0, 4839, 4840, 3, 1067, 533, 0, 4840, 882, 1, 0, 0, 0, 4841, 4842, 3, 1077, 538, 0, 4842, 4843, 3, 1049, 524, 0, 4843, 4844, 3, 1045, 522, 0, 4844, 4845, 3, 1081, 540, 0, 4845, 4846, 3, 1075, 537, 0, 4846, 4847, 3, 1057, 528, 0, 4847, 4848, 3, 1079, 539, 0, 4848, 4849, 3, 1089, 544, 0, 4849, 884, 1, 0, 0, 0, 4850, 4851, 3, 1075, 537, 0, 4851, 4852, 3, 1069, 534, 0, 4852, 4853, 3, 1063, 531, 0, 4853, 4854, 3, 1049, 524, 0, 4854, 886, 1, 0, 0, 0, 4855, 4856, 3, 1075, 537, 0, 4856, 4857, 3, 1069, 534, 0, 4857, 4858, 3, 1063, 531, 0, 4858, 4859, 3, 1049, 524, 0, 4859, 4860, 3, 1077, 538, 0, 4860, 888, 1, 0, 0, 0, 4861, 4862, 3, 1053, 526, 0, 4862, 4863, 3, 1075, 537, 0, 4863, 4864, 3, 1041, 520, 0, 4864, 4865, 3, 1067, 533, 0, 4865, 4866, 3, 1079, 539, 0, 4866, 890, 1, 0, 0, 0, 4867, 4868, 3, 1075, 537, 0, 4868, 4869, 3, 1049, 524, 0, 4869, 4870, 3, 1083, 541, 0, 4870, 4871, 3, 1069, 534, 0, 4871, 4872, 3, 1061, 530, 0, 4872, 4873, 3, 1049, 524, 0, 4873, 892, 1, 0, 0, 0, 4874, 4875, 3, 1071, 535, 0, 4875, 4876, 3, 1075, 537, 0, 4876, 4877, 3, 1069, 534, 0, 4877, 4878, 3, 1047, 523, 0, 4878, 4879, 3, 1081, 540, 0, 4879, 4880, 3, 1045, 522, 0, 4880, 4881, 3, 1079, 539, 0, 4881, 4882, 3, 1057, 528, 0, 4882, 4883, 3, 1069, 534, 0, 4883, 4884, 3, 1067, 533, 0, 4884, 894, 1, 0, 0, 0, 4885, 4886, 3, 1071, 535, 0, 4886, 4887, 3, 1075, 537, 0, 4887, 4888, 3, 1069, 534, 0, 4888, 4889, 3, 1079, 539, 0, 4889, 4890, 3, 1069, 534, 0, 4890, 4891, 3, 1079, 539, 0, 4891, 4892, 3, 1089, 544, 0, 4892, 4893, 3, 1071, 535, 0, 4893, 4894, 3, 1049, 524, 0, 4894, 896, 1, 0, 0, 0, 4895, 4896, 3, 1065, 532, 0, 4896, 4897, 3, 1041, 520, 0, 4897, 4898, 3, 1067, 533, 0, 4898, 4899, 3, 1041, 520, 0, 4899, 4900, 3, 1053, 526, 0, 4900, 4901, 3, 1049, 524, 0, 4901, 898, 1, 0, 0, 0, 4902, 4903, 3, 1047, 523, 0, 4903, 4904, 3, 1049, 524, 0, 4904, 4905, 3, 1065, 532, 0, 4905, 4906, 3, 1069, 534, 0, 4906, 900, 1, 0, 0, 0, 4907, 4908, 3, 1065, 532, 0, 4908, 4909, 3, 1041, 520, 0, 4909, 4910, 3, 1079, 539, 0, 4910, 4911, 3, 1075, 537, 0, 4911, 4912, 3, 1057, 528, 0, 4912, 4913, 3, 1087, 543, 0, 4913, 902, 1, 0, 0, 0, 4914, 4915, 3, 1041, 520, 0, 4915, 4916, 3, 1071, 535, 0, 4916, 4917, 3, 1071, 535, 0, 4917, 4918, 3, 1063, 531, 0, 4918, 4919, 3, 1089, 544, 0, 4919, 904, 1, 0, 0, 0, 4920, 4921, 3, 1041, 520, 0, 4921, 4922, 3, 1045, 522, 0, 4922, 4923, 3, 1045, 522, 0, 4923, 4924, 3, 1049, 524, 0, 4924, 4925, 3, 1077, 538, 0, 4925, 4926, 3, 1077, 538, 0, 4926, 906, 1, 0, 0, 0, 4927, 4928, 3, 1063, 531, 0, 4928, 4929, 3, 1049, 524, 0, 4929, 4930, 3, 1083, 541, 0, 4930, 4931, 3, 1049, 524, 0, 4931, 4932, 3, 1063, 531, 0, 4932, 908, 1, 0, 0, 0, 4933, 4934, 3, 1081, 540, 0, 4934, 4935, 3, 1077, 538, 0, 4935, 4936, 3, 1049, 524, 0, 4936, 4937, 3, 1075, 537, 0, 4937, 910, 1, 0, 0, 0, 4938, 4939, 3, 1079, 539, 0, 4939, 4940, 3, 1041, 520, 0, 4940, 4941, 3, 1077, 538, 0, 4941, 4942, 3, 1061, 530, 0, 4942, 912, 1, 0, 0, 0, 4943, 4944, 3, 1047, 523, 0, 4944, 4945, 3, 1049, 524, 0, 4945, 4946, 3, 1045, 522, 0, 4946, 4947, 3, 1057, 528, 0, 4947, 4948, 3, 1077, 538, 0, 4948, 4949, 3, 1057, 528, 0, 4949, 4950, 3, 1069, 534, 0, 4950, 4951, 3, 1067, 533, 0, 4951, 914, 1, 0, 0, 0, 4952, 4953, 3, 1077, 538, 0, 4953, 4954, 3, 1071, 535, 0, 4954, 4955, 3, 1063, 531, 0, 4955, 4956, 3, 1057, 528, 0, 4956, 4957, 3, 1079, 539, 0, 4957, 916, 1, 0, 0, 0, 4958, 4959, 3, 1069, 534, 0, 4959, 4960, 3, 1081, 540, 0, 4960, 4961, 3, 1079, 539, 0, 4961, 4962, 3, 1045, 522, 0, 4962, 4963, 3, 1069, 534, 0, 4963, 4964, 3, 1065, 532, 0, 4964, 4965, 3, 1049, 524, 0, 4965, 4966, 3, 1077, 538, 0, 4966, 918, 1, 0, 0, 0, 4967, 4968, 3, 1079, 539, 0, 4968, 4969, 3, 1041, 520, 0, 4969, 4970, 3, 1075, 537, 0, 4970, 4971, 3, 1053, 526, 0, 4971, 4972, 3, 1049, 524, 0, 4972, 4973, 3, 1079, 539, 0, 4973, 4974, 3, 1057, 528, 0, 4974, 4975, 3, 1067, 533, 0, 4975, 4976, 3, 1053, 526, 0, 4976, 920, 1, 0, 0, 0, 4977, 4978, 3, 1067, 533, 0, 4978, 4979, 3, 1069, 534, 0, 4979, 4980, 3, 1079, 539, 0, 4980, 4981, 3, 1057, 528, 0, 4981, 4982, 3, 1051, 525, 0, 4982, 4983, 3, 1057, 528, 0, 4983, 4984, 3, 1045, 522, 0, 4984, 4985, 3, 1041, 520, 0, 4985, 4986, 3, 1079, 539, 0, 4986, 4987, 3, 1057, 528, 0, 4987, 4988, 3, 1069, 534, 0, 4988, 4989, 3, 1067, 533, 0, 4989, 922, 1, 0, 0, 0, 4990, 4991, 3, 1079, 539, 0, 4991, 4992, 3, 1057, 528, 0, 4992, 4993, 3, 1065, 532, 0, 4993, 4994, 3, 1049, 524, 0, 4994, 4995, 3, 1075, 537, 0, 4995, 924, 1, 0, 0, 0, 4996, 4997, 3, 1059, 529, 0, 4997, 4998, 3, 1081, 540, 0, 4998, 4999, 3, 1065, 532, 0, 4999, 5000, 3, 1071, 535, 0, 5000, 926, 1, 0, 0, 0, 5001, 5002, 3, 1047, 523, 0, 5002, 5003, 3, 1081, 540, 0, 5003, 5004, 3, 1049, 524, 0, 5004, 928, 1, 0, 0, 0, 5005, 5006, 3, 1069, 534, 0, 5006, 5007, 3, 1083, 541, 0, 5007, 5008, 3, 1049, 524, 0, 5008, 5009, 3, 1075, 537, 0, 5009, 5010, 3, 1083, 541, 0, 5010, 5011, 3, 1057, 528, 0, 5011, 5012, 3, 1049, 524, 0, 5012, 5013, 3, 1085, 542, 0, 5013, 930, 1, 0, 0, 0, 5014, 5015, 3, 1047, 523, 0, 5015, 5016, 3, 1041, 520, 0, 5016, 5017, 3, 1079, 539, 0, 5017, 5018, 3, 1049, 524, 0, 5018, 932, 1, 0, 0, 0, 5019, 5020, 3, 1071, 535, 0, 5020, 5021, 3, 1041, 520, 0, 5021, 5022, 3, 1075, 537, 0, 5022, 5023, 3, 1041, 520, 0, 5023, 5024, 3, 1063, 531, 0, 5024, 5025, 3, 1063, 531, 0, 5025, 5026, 3, 1049, 524, 0, 5026, 5027, 3, 1063, 531, 0, 5027, 934, 1, 0, 0, 0, 5028, 5029, 3, 1085, 542, 0, 5029, 5030, 3, 1041, 520, 0, 5030, 5031, 3, 1057, 528, 0, 5031, 5032, 3, 1079, 539, 0, 5032, 936, 1, 0, 0, 0, 5033, 5034, 3, 1041, 520, 0, 5034, 5035, 3, 1067, 533, 0, 5035, 5036, 3, 1067, 533, 0, 5036, 5037, 3, 1069, 534, 0, 5037, 5038, 3, 1079, 539, 0, 5038, 5039, 3, 1041, 520, 0, 5039, 5040, 3, 1079, 539, 0, 5040, 5041, 3, 1057, 528, 0, 5041, 5042, 3, 1069, 534, 0, 5042, 5043, 3, 1067, 533, 0, 5043, 938, 1, 0, 0, 0, 5044, 5045, 3, 1043, 521, 0, 5045, 5046, 3, 1069, 534, 0, 5046, 5047, 3, 1081, 540, 0, 5047, 5048, 3, 1067, 533, 0, 5048, 5049, 3, 1047, 523, 0, 5049, 5050, 3, 1041, 520, 0, 5050, 5051, 3, 1075, 537, 0, 5051, 5052, 3, 1089, 544, 0, 5052, 940, 1, 0, 0, 0, 5053, 5054, 3, 1057, 528, 0, 5054, 5055, 3, 1067, 533, 0, 5055, 5056, 3, 1079, 539, 0, 5056, 5057, 3, 1049, 524, 0, 5057, 5058, 3, 1075, 537, 0, 5058, 5059, 3, 1075, 537, 0, 5059, 5060, 3, 1081, 540, 0, 5060, 5061, 3, 1071, 535, 0, 5061, 5062, 3, 1079, 539, 0, 5062, 5063, 3, 1057, 528, 0, 5063, 5064, 3, 1067, 533, 0, 5064, 5065, 3, 1053, 526, 0, 5065, 942, 1, 0, 0, 0, 5066, 5067, 3, 1067, 533, 0, 5067, 5068, 3, 1069, 534, 0, 5068, 5069, 3, 1067, 533, 0, 5069, 944, 1, 0, 0, 0, 5070, 5071, 3, 1065, 532, 0, 5071, 5072, 3, 1081, 540, 0, 5072, 5073, 3, 1063, 531, 0, 5073, 5074, 3, 1079, 539, 0, 5074, 5075, 3, 1057, 528, 0, 5075, 946, 1, 0, 0, 0, 5076, 5077, 3, 1043, 521, 0, 5077, 5078, 3, 1089, 544, 0, 5078, 948, 1, 0, 0, 0, 5079, 5080, 3, 1075, 537, 0, 5080, 5081, 3, 1049, 524, 0, 5081, 5082, 3, 1041, 520, 0, 5082, 5083, 3, 1047, 523, 0, 5083, 950, 1, 0, 0, 0, 5084, 5085, 3, 1085, 542, 0, 5085, 5086, 3, 1075, 537, 0, 5086, 5087, 3, 1057, 528, 0, 5087, 5088, 3, 1079, 539, 0, 5088, 5089, 3, 1049, 524, 0, 5089, 952, 1, 0, 0, 0, 5090, 5091, 3, 1047, 523, 0, 5091, 5092, 3, 1049, 524, 0, 5092, 5093, 3, 1077, 538, 0, 5093, 5094, 3, 1045, 522, 0, 5094, 5095, 3, 1075, 537, 0, 5095, 5096, 3, 1057, 528, 0, 5096, 5097, 3, 1071, 535, 0, 5097, 5098, 3, 1079, 539, 0, 5098, 5099, 3, 1057, 528, 0, 5099, 5100, 3, 1069, 534, 0, 5100, 5101, 3, 1067, 533, 0, 5101, 954, 1, 0, 0, 0, 5102, 5103, 3, 1047, 523, 0, 5103, 5104, 3, 1057, 528, 0, 5104, 5105, 3, 1077, 538, 0, 5105, 5106, 3, 1071, 535, 0, 5106, 5107, 3, 1063, 531, 0, 5107, 5108, 3, 1041, 520, 0, 5108, 5109, 3, 1089, 544, 0, 5109, 956, 1, 0, 0, 0, 5110, 5111, 3, 1069, 534, 0, 5111, 5112, 3, 1051, 525, 0, 5112, 5113, 3, 1051, 525, 0, 5113, 958, 1, 0, 0, 0, 5114, 5115, 3, 1081, 540, 0, 5115, 5116, 3, 1077, 538, 0, 5116, 5117, 3, 1049, 524, 0, 5117, 5118, 3, 1075, 537, 0, 5118, 5119, 3, 1077, 538, 0, 5119, 960, 1, 0, 0, 0, 5120, 5121, 5, 60, 0, 0, 5121, 5125, 5, 62, 0, 0, 5122, 5123, 5, 33, 0, 0, 5123, 5125, 5, 61, 0, 0, 5124, 5120, 1, 0, 0, 0, 5124, 5122, 1, 0, 0, 0, 5125, 962, 1, 0, 0, 0, 5126, 5127, 5, 60, 0, 0, 5127, 5128, 5, 61, 0, 0, 5128, 964, 1, 0, 0, 0, 5129, 5130, 5, 62, 0, 0, 5130, 5131, 5, 61, 0, 0, 5131, 966, 1, 0, 0, 0, 5132, 5133, 5, 61, 0, 0, 5133, 968, 1, 0, 0, 0, 5134, 5135, 5, 60, 0, 0, 5135, 970, 1, 0, 0, 0, 5136, 5137, 5, 62, 0, 0, 5137, 972, 1, 0, 0, 0, 5138, 5139, 5, 43, 0, 0, 5139, 974, 1, 0, 0, 0, 5140, 5141, 5, 45, 0, 0, 5141, 976, 1, 0, 0, 0, 5142, 5143, 5, 42, 0, 0, 5143, 978, 1, 0, 0, 0, 5144, 5145, 5, 47, 0, 0, 5145, 980, 1, 0, 0, 0, 5146, 5147, 5, 37, 0, 0, 5147, 982, 1, 0, 0, 0, 5148, 5149, 3, 1065, 532, 0, 5149, 5150, 3, 1069, 534, 0, 5150, 5151, 3, 1047, 523, 0, 5151, 984, 1, 0, 0, 0, 5152, 5153, 3, 1047, 523, 0, 5153, 5154, 3, 1057, 528, 0, 5154, 5155, 3, 1083, 541, 0, 5155, 986, 1, 0, 0, 0, 5156, 5157, 5, 59, 0, 0, 5157, 988, 1, 0, 0, 0, 5158, 5159, 5, 44, 0, 0, 5159, 990, 1, 0, 0, 0, 5160, 5161, 5, 46, 0, 0, 5161, 992, 1, 0, 0, 0, 5162, 5163, 5, 40, 0, 0, 5163, 994, 1, 0, 0, 0, 5164, 5165, 5, 41, 0, 0, 5165, 996, 1, 0, 0, 0, 5166, 5167, 5, 123, 0, 0, 5167, 998, 1, 0, 0, 0, 5168, 5169, 5, 125, 0, 0, 5169, 1000, 1, 0, 0, 0, 5170, 5171, 5, 91, 0, 0, 5171, 1002, 1, 0, 0, 0, 5172, 5173, 5, 93, 0, 0, 5173, 1004, 1, 0, 0, 0, 5174, 5175, 5, 58, 0, 0, 5175, 1006, 1, 0, 0, 0, 5176, 5177, 5, 64, 0, 0, 5177, 1008, 1, 0, 0, 0, 5178, 5179, 5, 124, 0, 0, 5179, 1010, 1, 0, 0, 0, 5180, 5181, 5, 58, 0, 0, 5181, 5182, 5, 58, 0, 0, 5182, 1012, 1, 0, 0, 0, 5183, 5184, 5, 45, 0, 0, 5184, 5185, 5, 62, 0, 0, 5185, 1014, 1, 0, 0, 0, 5186, 5187, 5, 63, 0, 0, 5187, 1016, 1, 0, 0, 0, 5188, 5189, 5, 35, 0, 0, 5189, 1018, 1, 0, 0, 0, 5190, 5191, 5, 91, 0, 0, 5191, 5192, 5, 37, 0, 0, 5192, 5196, 1, 0, 0, 0, 5193, 5195, 9, 0, 0, 0, 5194, 5193, 1, 0, 0, 0, 5195, 5198, 1, 0, 0, 0, 5196, 5197, 1, 0, 0, 0, 5196, 5194, 1, 0, 0, 0, 5197, 5199, 1, 0, 0, 0, 5198, 5196, 1, 0, 0, 0, 5199, 5200, 5, 37, 0, 0, 5200, 5201, 5, 93, 0, 0, 5201, 1020, 1, 0, 0, 0, 5202, 5210, 5, 39, 0, 0, 5203, 5209, 8, 2, 0, 0, 5204, 5205, 5, 92, 0, 0, 5205, 5209, 9, 0, 0, 0, 5206, 5207, 5, 39, 0, 0, 5207, 5209, 5, 39, 0, 0, 5208, 5203, 1, 0, 0, 0, 5208, 5204, 1, 0, 0, 0, 5208, 5206, 1, 0, 0, 0, 5209, 5212, 1, 0, 0, 0, 5210, 5208, 1, 0, 0, 0, 5210, 5211, 1, 0, 0, 0, 5211, 5213, 1, 0, 0, 0, 5212, 5210, 1, 0, 0, 0, 5213, 5214, 5, 39, 0, 0, 5214, 1022, 1, 0, 0, 0, 5215, 5216, 5, 36, 0, 0, 5216, 5217, 5, 36, 0, 0, 5217, 5221, 1, 0, 0, 0, 5218, 5220, 9, 0, 0, 0, 5219, 5218, 1, 0, 0, 0, 5220, 5223, 1, 0, 0, 0, 5221, 5222, 1, 0, 0, 0, 5221, 5219, 1, 0, 0, 0, 5222, 5224, 1, 0, 0, 0, 5223, 5221, 1, 0, 0, 0, 5224, 5225, 5, 36, 0, 0, 5225, 5226, 5, 36, 0, 0, 5226, 1024, 1, 0, 0, 0, 5227, 5229, 5, 45, 0, 0, 5228, 5227, 1, 0, 0, 0, 5228, 5229, 1, 0, 0, 0, 5229, 5231, 1, 0, 0, 0, 5230, 5232, 3, 1039, 519, 0, 5231, 5230, 1, 0, 0, 0, 5232, 5233, 1, 0, 0, 0, 5233, 5231, 1, 0, 0, 0, 5233, 5234, 1, 0, 0, 0, 5234, 5241, 1, 0, 0, 0, 5235, 5237, 5, 46, 0, 0, 5236, 5238, 3, 1039, 519, 0, 5237, 5236, 1, 0, 0, 0, 5238, 5239, 1, 0, 0, 0, 5239, 5237, 1, 0, 0, 0, 5239, 5240, 1, 0, 0, 0, 5240, 5242, 1, 0, 0, 0, 5241, 5235, 1, 0, 0, 0, 5241, 5242, 1, 0, 0, 0, 5242, 5252, 1, 0, 0, 0, 5243, 5245, 7, 3, 0, 0, 5244, 5246, 7, 4, 0, 0, 5245, 5244, 1, 0, 0, 0, 5245, 5246, 1, 0, 0, 0, 5246, 5248, 1, 0, 0, 0, 5247, 5249, 3, 1039, 519, 0, 5248, 5247, 1, 0, 0, 0, 5249, 5250, 1, 0, 0, 0, 5250, 5248, 1, 0, 0, 0, 5250, 5251, 1, 0, 0, 0, 5251, 5253, 1, 0, 0, 0, 5252, 5243, 1, 0, 0, 0, 5252, 5253, 1, 0, 0, 0, 5253, 1026, 1, 0, 0, 0, 5254, 5256, 5, 36, 0, 0, 5255, 5257, 3, 1037, 518, 0, 5256, 5255, 1, 0, 0, 0, 5257, 5258, 1, 0, 0, 0, 5258, 5256, 1, 0, 0, 0, 5258, 5259, 1, 0, 0, 0, 5259, 1028, 1, 0, 0, 0, 5260, 5264, 3, 1035, 517, 0, 5261, 5263, 3, 1037, 518, 0, 5262, 5261, 1, 0, 0, 0, 5263, 5266, 1, 0, 0, 0, 5264, 5262, 1, 0, 0, 0, 5264, 5265, 1, 0, 0, 0, 5265, 1030, 1, 0, 0, 0, 5266, 5264, 1, 0, 0, 0, 5267, 5275, 3, 1035, 517, 0, 5268, 5270, 3, 1037, 518, 0, 5269, 5268, 1, 0, 0, 0, 5270, 5273, 1, 0, 0, 0, 5271, 5269, 1, 0, 0, 0, 5271, 5272, 1, 0, 0, 0, 5272, 5274, 1, 0, 0, 0, 5273, 5271, 1, 0, 0, 0, 5274, 5276, 5, 45, 0, 0, 5275, 5271, 1, 0, 0, 0, 5276, 5277, 1, 0, 0, 0, 5277, 5275, 1, 0, 0, 0, 5277, 5278, 1, 0, 0, 0, 5278, 5282, 1, 0, 0, 0, 5279, 5281, 3, 1037, 518, 0, 5280, 5279, 1, 0, 0, 0, 5281, 5284, 1, 0, 0, 0, 5282, 5280, 1, 0, 0, 0, 5282, 5283, 1, 0, 0, 0, 5283, 1032, 1, 0, 0, 0, 5284, 5282, 1, 0, 0, 0, 5285, 5289, 5, 34, 0, 0, 5286, 5288, 8, 5, 0, 0, 5287, 5286, 1, 0, 0, 0, 5288, 5291, 1, 0, 0, 0, 5289, 5287, 1, 0, 0, 0, 5289, 5290, 1, 0, 0, 0, 5290, 5292, 1, 0, 0, 0, 5291, 5289, 1, 0, 0, 0, 5292, 5302, 5, 34, 0, 0, 5293, 5297, 5, 96, 0, 0, 5294, 5296, 8, 6, 0, 0, 5295, 5294, 1, 0, 0, 0, 5296, 5299, 1, 0, 0, 0, 5297, 5295, 1, 0, 0, 0, 5297, 5298, 1, 0, 0, 0, 5298, 5300, 1, 0, 0, 0, 5299, 5297, 1, 0, 0, 0, 5300, 5302, 5, 96, 0, 0, 5301, 5285, 1, 0, 0, 0, 5301, 5293, 1, 0, 0, 0, 5302, 1034, 1, 0, 0, 0, 5303, 5304, 7, 7, 0, 0, 5304, 1036, 1, 0, 0, 0, 5305, 5306, 7, 8, 0, 0, 5306, 1038, 1, 0, 0, 0, 5307, 5308, 7, 9, 0, 0, 5308, 1040, 1, 0, 0, 0, 5309, 5310, 7, 10, 0, 0, 5310, 1042, 1, 0, 0, 0, 5311, 5312, 7, 11, 0, 0, 5312, 1044, 1, 0, 0, 0, 5313, 5314, 7, 12, 0, 0, 5314, 1046, 1, 0, 0, 0, 5315, 5316, 7, 13, 0, 0, 5316, 1048, 1, 0, 0, 0, 5317, 5318, 7, 3, 0, 0, 5318, 1050, 1, 0, 0, 0, 5319, 5320, 7, 14, 0, 0, 5320, 1052, 1, 0, 0, 0, 5321, 5322, 7, 15, 0, 0, 5322, 1054, 1, 0, 0, 0, 5323, 5324, 7, 16, 0, 0, 5324, 1056, 1, 0, 0, 0, 5325, 5326, 7, 17, 0, 0, 5326, 1058, 1, 0, 0, 0, 5327, 5328, 7, 18, 0, 0, 5328, 1060, 1, 0, 0, 0, 5329, 5330, 7, 19, 0, 0, 5330, 1062, 1, 0, 0, 0, 5331, 5332, 7, 20, 0, 0, 5332, 1064, 1, 0, 0, 0, 5333, 5334, 7, 21, 0, 0, 5334, 1066, 1, 0, 0, 0, 5335, 5336, 7, 22, 0, 0, 5336, 1068, 1, 0, 0, 0, 5337, 5338, 7, 23, 0, 0, 5338, 1070, 1, 0, 0, 0, 5339, 5340, 7, 24, 0, 0, 5340, 1072, 1, 0, 0, 0, 5341, 5342, 7, 25, 0, 0, 5342, 1074, 1, 0, 0, 0, 5343, 5344, 7, 26, 0, 0, 5344, 1076, 1, 0, 0, 0, 5345, 5346, 7, 27, 0, 0, 5346, 1078, 1, 0, 0, 0, 5347, 5348, 7, 28, 0, 0, 5348, 1080, 1, 0, 0, 0, 5349, 5350, 7, 29, 0, 0, 5350, 1082, 1, 0, 0, 0, 5351, 5352, 7, 30, 0, 0, 5352, 1084, 1, 0, 0, 0, 5353, 5354, 7, 31, 0, 0, 5354, 1086, 1, 0, 0, 0, 5355, 5356, 7, 32, 0, 0, 5356, 1088, 1, 0, 0, 0, 5357, 5358, 7, 33, 0, 0, 5358, 1090, 1, 0, 0, 0, 5359, 5360, 7, 34, 0, 0, 5360, 1092, 1, 0, 0, 0, 46, 0, 1096, 1107, 1119, 1133, 1143, 1151, 1163, 1176, 1191, 1204, 1216, 1246, 1259, 1273, 1281, 1336, 1347, 1355, 1364, 1428, 1439, 1446, 1453, 1511, 1807, 5124, 5196, 5208, 5210, 5221, 5228, 5233, 5239, 5241, 5245, 5250, 5252, 5258, 5264, 5271, 5277, 5282, 5289, 5297, 5301, 1, 6, 0, 0] \ No newline at end of file +[4, 0, 520, 5404, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 1, 0, 4, 0, 1101, 8, 0, 11, 0, 12, 0, 1102, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1112, 8, 1, 10, 1, 12, 1, 1115, 9, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1124, 8, 2, 10, 2, 12, 2, 1127, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 1138, 8, 3, 10, 3, 12, 3, 1141, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 4, 4, 1148, 8, 4, 11, 4, 12, 4, 1149, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 1156, 8, 4, 11, 4, 12, 4, 1157, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 4, 5, 1168, 8, 5, 11, 5, 12, 5, 1169, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 4, 6, 1181, 8, 6, 11, 6, 12, 6, 1182, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 4, 7, 1196, 8, 7, 11, 7, 12, 7, 1197, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 4, 8, 1209, 8, 8, 11, 8, 12, 8, 1210, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 4, 9, 1221, 8, 9, 11, 9, 12, 9, 1222, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1253, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 4, 12, 1264, 8, 12, 11, 12, 12, 12, 1265, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 4, 13, 1278, 8, 13, 11, 13, 12, 13, 1279, 1, 13, 1, 13, 1, 13, 1, 13, 4, 13, 1286, 8, 13, 11, 13, 12, 13, 1287, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1343, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 1352, 8, 14, 11, 14, 12, 14, 1353, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 1360, 8, 14, 11, 14, 12, 14, 1361, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 1369, 8, 14, 11, 14, 12, 14, 1370, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1435, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 4, 15, 1444, 8, 15, 11, 15, 12, 15, 1445, 1, 15, 1, 15, 1, 15, 4, 15, 1451, 8, 15, 11, 15, 12, 15, 1452, 1, 15, 1, 15, 1, 15, 4, 15, 1458, 8, 15, 11, 15, 12, 15, 1459, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1518, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1814, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 3, 483, 5168, 8, 483, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 487, 1, 487, 1, 488, 1, 488, 1, 489, 1, 489, 1, 490, 1, 490, 1, 491, 1, 491, 1, 492, 1, 492, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 497, 1, 497, 1, 498, 1, 498, 1, 499, 1, 499, 1, 500, 1, 500, 1, 501, 1, 501, 1, 502, 1, 502, 1, 503, 1, 503, 1, 504, 1, 504, 1, 505, 1, 505, 1, 506, 1, 506, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, 511, 1, 511, 1, 512, 1, 512, 1, 512, 1, 512, 5, 512, 5238, 8, 512, 10, 512, 12, 512, 5241, 9, 512, 1, 512, 1, 512, 1, 512, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 5, 513, 5252, 8, 513, 10, 513, 12, 513, 5255, 9, 513, 1, 513, 1, 513, 1, 514, 1, 514, 1, 514, 1, 514, 5, 514, 5263, 8, 514, 10, 514, 12, 514, 5266, 9, 514, 1, 514, 1, 514, 1, 514, 1, 515, 3, 515, 5272, 8, 515, 1, 515, 4, 515, 5275, 8, 515, 11, 515, 12, 515, 5276, 1, 515, 1, 515, 4, 515, 5281, 8, 515, 11, 515, 12, 515, 5282, 3, 515, 5285, 8, 515, 1, 515, 1, 515, 3, 515, 5289, 8, 515, 1, 515, 4, 515, 5292, 8, 515, 11, 515, 12, 515, 5293, 3, 515, 5296, 8, 515, 1, 516, 1, 516, 4, 516, 5300, 8, 516, 11, 516, 12, 516, 5301, 1, 517, 1, 517, 5, 517, 5306, 8, 517, 10, 517, 12, 517, 5309, 9, 517, 1, 518, 1, 518, 5, 518, 5313, 8, 518, 10, 518, 12, 518, 5316, 9, 518, 1, 518, 4, 518, 5319, 8, 518, 11, 518, 12, 518, 5320, 1, 518, 5, 518, 5324, 8, 518, 10, 518, 12, 518, 5327, 9, 518, 1, 519, 1, 519, 5, 519, 5331, 8, 519, 10, 519, 12, 519, 5334, 9, 519, 1, 519, 1, 519, 1, 519, 5, 519, 5339, 8, 519, 10, 519, 12, 519, 5342, 9, 519, 1, 519, 3, 519, 5345, 8, 519, 1, 520, 1, 520, 1, 521, 1, 521, 1, 522, 1, 522, 1, 523, 1, 523, 1, 524, 1, 524, 1, 525, 1, 525, 1, 526, 1, 526, 1, 527, 1, 527, 1, 528, 1, 528, 1, 529, 1, 529, 1, 530, 1, 530, 1, 531, 1, 531, 1, 532, 1, 532, 1, 533, 1, 533, 1, 534, 1, 534, 1, 535, 1, 535, 1, 536, 1, 536, 1, 537, 1, 537, 1, 538, 1, 538, 1, 539, 1, 539, 1, 540, 1, 540, 1, 541, 1, 541, 1, 542, 1, 542, 1, 543, 1, 543, 1, 544, 1, 544, 1, 545, 1, 545, 1, 546, 1, 546, 1, 547, 1, 547, 1, 548, 1, 548, 4, 1113, 1125, 5239, 5264, 0, 549, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 273, 547, 274, 549, 275, 551, 276, 553, 277, 555, 278, 557, 279, 559, 280, 561, 281, 563, 282, 565, 283, 567, 284, 569, 285, 571, 286, 573, 287, 575, 288, 577, 289, 579, 290, 581, 291, 583, 292, 585, 293, 587, 294, 589, 295, 591, 296, 593, 297, 595, 298, 597, 299, 599, 300, 601, 301, 603, 302, 605, 303, 607, 304, 609, 305, 611, 306, 613, 307, 615, 308, 617, 309, 619, 310, 621, 311, 623, 312, 625, 313, 627, 314, 629, 315, 631, 316, 633, 317, 635, 318, 637, 319, 639, 320, 641, 321, 643, 322, 645, 323, 647, 324, 649, 325, 651, 326, 653, 327, 655, 328, 657, 329, 659, 330, 661, 331, 663, 332, 665, 333, 667, 334, 669, 335, 671, 336, 673, 337, 675, 338, 677, 339, 679, 340, 681, 341, 683, 342, 685, 343, 687, 344, 689, 345, 691, 346, 693, 347, 695, 348, 697, 349, 699, 350, 701, 351, 703, 352, 705, 353, 707, 354, 709, 355, 711, 356, 713, 357, 715, 358, 717, 359, 719, 360, 721, 361, 723, 362, 725, 363, 727, 364, 729, 365, 731, 366, 733, 367, 735, 368, 737, 369, 739, 370, 741, 371, 743, 372, 745, 373, 747, 374, 749, 375, 751, 376, 753, 377, 755, 378, 757, 379, 759, 380, 761, 381, 763, 382, 765, 383, 767, 384, 769, 385, 771, 386, 773, 387, 775, 388, 777, 389, 779, 390, 781, 391, 783, 392, 785, 393, 787, 394, 789, 395, 791, 396, 793, 397, 795, 398, 797, 399, 799, 400, 801, 401, 803, 402, 805, 403, 807, 404, 809, 405, 811, 406, 813, 407, 815, 408, 817, 409, 819, 410, 821, 411, 823, 412, 825, 413, 827, 414, 829, 415, 831, 416, 833, 417, 835, 418, 837, 419, 839, 420, 841, 421, 843, 422, 845, 423, 847, 424, 849, 425, 851, 426, 853, 427, 855, 428, 857, 429, 859, 430, 861, 431, 863, 432, 865, 433, 867, 434, 869, 435, 871, 436, 873, 437, 875, 438, 877, 439, 879, 440, 881, 441, 883, 442, 885, 443, 887, 444, 889, 445, 891, 446, 893, 447, 895, 448, 897, 449, 899, 450, 901, 451, 903, 452, 905, 453, 907, 454, 909, 455, 911, 456, 913, 457, 915, 458, 917, 459, 919, 460, 921, 461, 923, 462, 925, 463, 927, 464, 929, 465, 931, 466, 933, 467, 935, 468, 937, 469, 939, 470, 941, 471, 943, 472, 945, 473, 947, 474, 949, 475, 951, 476, 953, 477, 955, 478, 957, 479, 959, 480, 961, 481, 963, 482, 965, 483, 967, 484, 969, 485, 971, 486, 973, 487, 975, 488, 977, 489, 979, 490, 981, 491, 983, 492, 985, 493, 987, 494, 989, 495, 991, 496, 993, 497, 995, 498, 997, 499, 999, 500, 1001, 501, 1003, 502, 1005, 503, 1007, 504, 1009, 505, 1011, 506, 1013, 507, 1015, 508, 1017, 509, 1019, 510, 1021, 511, 1023, 512, 1025, 513, 1027, 514, 1029, 515, 1031, 516, 1033, 517, 1035, 518, 1037, 519, 1039, 520, 1041, 0, 1043, 0, 1045, 0, 1047, 0, 1049, 0, 1051, 0, 1053, 0, 1055, 0, 1057, 0, 1059, 0, 1061, 0, 1063, 0, 1065, 0, 1067, 0, 1069, 0, 1071, 0, 1073, 0, 1075, 0, 1077, 0, 1079, 0, 1081, 0, 1083, 0, 1085, 0, 1087, 0, 1089, 0, 1091, 0, 1093, 0, 1095, 0, 1097, 0, 1, 0, 35, 2, 0, 9, 13, 32, 32, 2, 0, 10, 10, 13, 13, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 3, 0, 10, 10, 13, 13, 34, 34, 3, 0, 10, 10, 13, 13, 96, 96, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 5423, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 0, 1035, 1, 0, 0, 0, 0, 1037, 1, 0, 0, 0, 0, 1039, 1, 0, 0, 0, 1, 1100, 1, 0, 0, 0, 3, 1106, 1, 0, 0, 0, 5, 1119, 1, 0, 0, 0, 7, 1133, 1, 0, 0, 0, 9, 1144, 1, 0, 0, 0, 11, 1164, 1, 0, 0, 0, 13, 1176, 1, 0, 0, 0, 15, 1189, 1, 0, 0, 0, 17, 1202, 1, 0, 0, 0, 19, 1215, 1, 0, 0, 0, 21, 1227, 1, 0, 0, 0, 23, 1242, 1, 0, 0, 0, 25, 1258, 1, 0, 0, 0, 27, 1342, 1, 0, 0, 0, 29, 1434, 1, 0, 0, 0, 31, 1517, 1, 0, 0, 0, 33, 1519, 1, 0, 0, 0, 35, 1526, 1, 0, 0, 0, 37, 1532, 1, 0, 0, 0, 39, 1537, 1, 0, 0, 0, 41, 1544, 1, 0, 0, 0, 43, 1549, 1, 0, 0, 0, 45, 1556, 1, 0, 0, 0, 47, 1563, 1, 0, 0, 0, 49, 1574, 1, 0, 0, 0, 51, 1579, 1, 0, 0, 0, 53, 1588, 1, 0, 0, 0, 55, 1600, 1, 0, 0, 0, 57, 1612, 1, 0, 0, 0, 59, 1619, 1, 0, 0, 0, 61, 1629, 1, 0, 0, 0, 63, 1638, 1, 0, 0, 0, 65, 1647, 1, 0, 0, 0, 67, 1652, 1, 0, 0, 0, 69, 1660, 1, 0, 0, 0, 71, 1667, 1, 0, 0, 0, 73, 1676, 1, 0, 0, 0, 75, 1685, 1, 0, 0, 0, 77, 1695, 1, 0, 0, 0, 79, 1702, 1, 0, 0, 0, 81, 1710, 1, 0, 0, 0, 83, 1716, 1, 0, 0, 0, 85, 1722, 1, 0, 0, 0, 87, 1728, 1, 0, 0, 0, 89, 1738, 1, 0, 0, 0, 91, 1753, 1, 0, 0, 0, 93, 1761, 1, 0, 0, 0, 95, 1765, 1, 0, 0, 0, 97, 1769, 1, 0, 0, 0, 99, 1778, 1, 0, 0, 0, 101, 1792, 1, 0, 0, 0, 103, 1800, 1, 0, 0, 0, 105, 1806, 1, 0, 0, 0, 107, 1824, 1, 0, 0, 0, 109, 1832, 1, 0, 0, 0, 111, 1840, 1, 0, 0, 0, 113, 1848, 1, 0, 0, 0, 115, 1859, 1, 0, 0, 0, 117, 1865, 1, 0, 0, 0, 119, 1873, 1, 0, 0, 0, 121, 1881, 1, 0, 0, 0, 123, 1888, 1, 0, 0, 0, 125, 1894, 1, 0, 0, 0, 127, 1899, 1, 0, 0, 0, 129, 1904, 1, 0, 0, 0, 131, 1909, 1, 0, 0, 0, 133, 1918, 1, 0, 0, 0, 135, 1922, 1, 0, 0, 0, 137, 1933, 1, 0, 0, 0, 139, 1939, 1, 0, 0, 0, 141, 1946, 1, 0, 0, 0, 143, 1951, 1, 0, 0, 0, 145, 1957, 1, 0, 0, 0, 147, 1964, 1, 0, 0, 0, 149, 1971, 1, 0, 0, 0, 151, 1977, 1, 0, 0, 0, 153, 1980, 1, 0, 0, 0, 155, 1988, 1, 0, 0, 0, 157, 1998, 1, 0, 0, 0, 159, 2003, 1, 0, 0, 0, 161, 2008, 1, 0, 0, 0, 163, 2013, 1, 0, 0, 0, 165, 2018, 1, 0, 0, 0, 167, 2022, 1, 0, 0, 0, 169, 2031, 1, 0, 0, 0, 171, 2035, 1, 0, 0, 0, 173, 2040, 1, 0, 0, 0, 175, 2045, 1, 0, 0, 0, 177, 2051, 1, 0, 0, 0, 179, 2057, 1, 0, 0, 0, 181, 2063, 1, 0, 0, 0, 183, 2068, 1, 0, 0, 0, 185, 2074, 1, 0, 0, 0, 187, 2077, 1, 0, 0, 0, 189, 2081, 1, 0, 0, 0, 191, 2086, 1, 0, 0, 0, 193, 2092, 1, 0, 0, 0, 195, 2100, 1, 0, 0, 0, 197, 2107, 1, 0, 0, 0, 199, 2116, 1, 0, 0, 0, 201, 2123, 1, 0, 0, 0, 203, 2130, 1, 0, 0, 0, 205, 2139, 1, 0, 0, 0, 207, 2144, 1, 0, 0, 0, 209, 2150, 1, 0, 0, 0, 211, 2153, 1, 0, 0, 0, 213, 2159, 1, 0, 0, 0, 215, 2166, 1, 0, 0, 0, 217, 2175, 1, 0, 0, 0, 219, 2181, 1, 0, 0, 0, 221, 2188, 1, 0, 0, 0, 223, 2194, 1, 0, 0, 0, 225, 2198, 1, 0, 0, 0, 227, 2203, 1, 0, 0, 0, 229, 2208, 1, 0, 0, 0, 231, 2219, 1, 0, 0, 0, 233, 2226, 1, 0, 0, 0, 235, 2234, 1, 0, 0, 0, 237, 2240, 1, 0, 0, 0, 239, 2245, 1, 0, 0, 0, 241, 2252, 1, 0, 0, 0, 243, 2257, 1, 0, 0, 0, 245, 2262, 1, 0, 0, 0, 247, 2267, 1, 0, 0, 0, 249, 2272, 1, 0, 0, 0, 251, 2278, 1, 0, 0, 0, 253, 2288, 1, 0, 0, 0, 255, 2297, 1, 0, 0, 0, 257, 2306, 1, 0, 0, 0, 259, 2314, 1, 0, 0, 0, 261, 2322, 1, 0, 0, 0, 263, 2330, 1, 0, 0, 0, 265, 2335, 1, 0, 0, 0, 267, 2342, 1, 0, 0, 0, 269, 2349, 1, 0, 0, 0, 271, 2354, 1, 0, 0, 0, 273, 2362, 1, 0, 0, 0, 275, 2368, 1, 0, 0, 0, 277, 2377, 1, 0, 0, 0, 279, 2382, 1, 0, 0, 0, 281, 2388, 1, 0, 0, 0, 283, 2395, 1, 0, 0, 0, 285, 2403, 1, 0, 0, 0, 287, 2409, 1, 0, 0, 0, 289, 2417, 1, 0, 0, 0, 291, 2426, 1, 0, 0, 0, 293, 2436, 1, 0, 0, 0, 295, 2448, 1, 0, 0, 0, 297, 2460, 1, 0, 0, 0, 299, 2471, 1, 0, 0, 0, 301, 2480, 1, 0, 0, 0, 303, 2489, 1, 0, 0, 0, 305, 2498, 1, 0, 0, 0, 307, 2506, 1, 0, 0, 0, 309, 2516, 1, 0, 0, 0, 311, 2520, 1, 0, 0, 0, 313, 2525, 1, 0, 0, 0, 315, 2536, 1, 0, 0, 0, 317, 2543, 1, 0, 0, 0, 319, 2553, 1, 0, 0, 0, 321, 2568, 1, 0, 0, 0, 323, 2581, 1, 0, 0, 0, 325, 2592, 1, 0, 0, 0, 327, 2599, 1, 0, 0, 0, 329, 2605, 1, 0, 0, 0, 331, 2617, 1, 0, 0, 0, 333, 2625, 1, 0, 0, 0, 335, 2636, 1, 0, 0, 0, 337, 2642, 1, 0, 0, 0, 339, 2650, 1, 0, 0, 0, 341, 2659, 1, 0, 0, 0, 343, 2670, 1, 0, 0, 0, 345, 2683, 1, 0, 0, 0, 347, 2692, 1, 0, 0, 0, 349, 2701, 1, 0, 0, 0, 351, 2710, 1, 0, 0, 0, 353, 2728, 1, 0, 0, 0, 355, 2754, 1, 0, 0, 0, 357, 2764, 1, 0, 0, 0, 359, 2775, 1, 0, 0, 0, 361, 2788, 1, 0, 0, 0, 363, 2804, 1, 0, 0, 0, 365, 2815, 1, 0, 0, 0, 367, 2828, 1, 0, 0, 0, 369, 2843, 1, 0, 0, 0, 371, 2854, 1, 0, 0, 0, 373, 2861, 1, 0, 0, 0, 375, 2868, 1, 0, 0, 0, 377, 2876, 1, 0, 0, 0, 379, 2884, 1, 0, 0, 0, 381, 2889, 1, 0, 0, 0, 383, 2897, 1, 0, 0, 0, 385, 2908, 1, 0, 0, 0, 387, 2915, 1, 0, 0, 0, 389, 2925, 1, 0, 0, 0, 391, 2932, 1, 0, 0, 0, 393, 2939, 1, 0, 0, 0, 395, 2947, 1, 0, 0, 0, 397, 2958, 1, 0, 0, 0, 399, 2964, 1, 0, 0, 0, 401, 2969, 1, 0, 0, 0, 403, 2983, 1, 0, 0, 0, 405, 2997, 1, 0, 0, 0, 407, 3004, 1, 0, 0, 0, 409, 3014, 1, 0, 0, 0, 411, 3027, 1, 0, 0, 0, 413, 3039, 1, 0, 0, 0, 415, 3050, 1, 0, 0, 0, 417, 3056, 1, 0, 0, 0, 419, 3062, 1, 0, 0, 0, 421, 3074, 1, 0, 0, 0, 423, 3081, 1, 0, 0, 0, 425, 3092, 1, 0, 0, 0, 427, 3109, 1, 0, 0, 0, 429, 3117, 1, 0, 0, 0, 431, 3123, 1, 0, 0, 0, 433, 3129, 1, 0, 0, 0, 435, 3136, 1, 0, 0, 0, 437, 3145, 1, 0, 0, 0, 439, 3149, 1, 0, 0, 0, 441, 3156, 1, 0, 0, 0, 443, 3164, 1, 0, 0, 0, 445, 3172, 1, 0, 0, 0, 447, 3181, 1, 0, 0, 0, 449, 3190, 1, 0, 0, 0, 451, 3201, 1, 0, 0, 0, 453, 3212, 1, 0, 0, 0, 455, 3218, 1, 0, 0, 0, 457, 3229, 1, 0, 0, 0, 459, 3241, 1, 0, 0, 0, 461, 3254, 1, 0, 0, 0, 463, 3270, 1, 0, 0, 0, 465, 3283, 1, 0, 0, 0, 467, 3291, 1, 0, 0, 0, 469, 3300, 1, 0, 0, 0, 471, 3308, 1, 0, 0, 0, 473, 3320, 1, 0, 0, 0, 475, 3333, 1, 0, 0, 0, 477, 3348, 1, 0, 0, 0, 479, 3359, 1, 0, 0, 0, 481, 3369, 1, 0, 0, 0, 483, 3383, 1, 0, 0, 0, 485, 3397, 1, 0, 0, 0, 487, 3411, 1, 0, 0, 0, 489, 3426, 1, 0, 0, 0, 491, 3440, 1, 0, 0, 0, 493, 3450, 1, 0, 0, 0, 495, 3459, 1, 0, 0, 0, 497, 3466, 1, 0, 0, 0, 499, 3474, 1, 0, 0, 0, 501, 3482, 1, 0, 0, 0, 503, 3489, 1, 0, 0, 0, 505, 3497, 1, 0, 0, 0, 507, 3502, 1, 0, 0, 0, 509, 3511, 1, 0, 0, 0, 511, 3519, 1, 0, 0, 0, 513, 3528, 1, 0, 0, 0, 515, 3537, 1, 0, 0, 0, 517, 3540, 1, 0, 0, 0, 519, 3543, 1, 0, 0, 0, 521, 3546, 1, 0, 0, 0, 523, 3549, 1, 0, 0, 0, 525, 3552, 1, 0, 0, 0, 527, 3555, 1, 0, 0, 0, 529, 3565, 1, 0, 0, 0, 531, 3572, 1, 0, 0, 0, 533, 3580, 1, 0, 0, 0, 535, 3585, 1, 0, 0, 0, 537, 3593, 1, 0, 0, 0, 539, 3601, 1, 0, 0, 0, 541, 3610, 1, 0, 0, 0, 543, 3615, 1, 0, 0, 0, 545, 3626, 1, 0, 0, 0, 547, 3633, 1, 0, 0, 0, 549, 3646, 1, 0, 0, 0, 551, 3655, 1, 0, 0, 0, 553, 3661, 1, 0, 0, 0, 555, 3676, 1, 0, 0, 0, 557, 3681, 1, 0, 0, 0, 559, 3687, 1, 0, 0, 0, 561, 3691, 1, 0, 0, 0, 563, 3695, 1, 0, 0, 0, 565, 3699, 1, 0, 0, 0, 567, 3703, 1, 0, 0, 0, 569, 3710, 1, 0, 0, 0, 571, 3715, 1, 0, 0, 0, 573, 3724, 1, 0, 0, 0, 575, 3729, 1, 0, 0, 0, 577, 3733, 1, 0, 0, 0, 579, 3736, 1, 0, 0, 0, 581, 3740, 1, 0, 0, 0, 583, 3745, 1, 0, 0, 0, 585, 3748, 1, 0, 0, 0, 587, 3756, 1, 0, 0, 0, 589, 3761, 1, 0, 0, 0, 591, 3767, 1, 0, 0, 0, 593, 3774, 1, 0, 0, 0, 595, 3781, 1, 0, 0, 0, 597, 3789, 1, 0, 0, 0, 599, 3794, 1, 0, 0, 0, 601, 3800, 1, 0, 0, 0, 603, 3811, 1, 0, 0, 0, 605, 3820, 1, 0, 0, 0, 607, 3825, 1, 0, 0, 0, 609, 3834, 1, 0, 0, 0, 611, 3840, 1, 0, 0, 0, 613, 3846, 1, 0, 0, 0, 615, 3852, 1, 0, 0, 0, 617, 3858, 1, 0, 0, 0, 619, 3866, 1, 0, 0, 0, 621, 3877, 1, 0, 0, 0, 623, 3883, 1, 0, 0, 0, 625, 3894, 1, 0, 0, 0, 627, 3905, 1, 0, 0, 0, 629, 3910, 1, 0, 0, 0, 631, 3918, 1, 0, 0, 0, 633, 3927, 1, 0, 0, 0, 635, 3933, 1, 0, 0, 0, 637, 3938, 1, 0, 0, 0, 639, 3943, 1, 0, 0, 0, 641, 3958, 1, 0, 0, 0, 643, 3964, 1, 0, 0, 0, 645, 3972, 1, 0, 0, 0, 647, 3978, 1, 0, 0, 0, 649, 3988, 1, 0, 0, 0, 651, 3995, 1, 0, 0, 0, 653, 4000, 1, 0, 0, 0, 655, 4008, 1, 0, 0, 0, 657, 4013, 1, 0, 0, 0, 659, 4022, 1, 0, 0, 0, 661, 4030, 1, 0, 0, 0, 663, 4035, 1, 0, 0, 0, 665, 4040, 1, 0, 0, 0, 667, 4044, 1, 0, 0, 0, 669, 4051, 1, 0, 0, 0, 671, 4056, 1, 0, 0, 0, 673, 4064, 1, 0, 0, 0, 675, 4068, 1, 0, 0, 0, 677, 4073, 1, 0, 0, 0, 679, 4077, 1, 0, 0, 0, 681, 4083, 1, 0, 0, 0, 683, 4087, 1, 0, 0, 0, 685, 4094, 1, 0, 0, 0, 687, 4102, 1, 0, 0, 0, 689, 4110, 1, 0, 0, 0, 691, 4120, 1, 0, 0, 0, 693, 4127, 1, 0, 0, 0, 695, 4136, 1, 0, 0, 0, 697, 4146, 1, 0, 0, 0, 699, 4154, 1, 0, 0, 0, 701, 4160, 1, 0, 0, 0, 703, 4167, 1, 0, 0, 0, 705, 4181, 1, 0, 0, 0, 707, 4190, 1, 0, 0, 0, 709, 4199, 1, 0, 0, 0, 711, 4210, 1, 0, 0, 0, 713, 4219, 1, 0, 0, 0, 715, 4225, 1, 0, 0, 0, 717, 4229, 1, 0, 0, 0, 719, 4237, 1, 0, 0, 0, 721, 4244, 1, 0, 0, 0, 723, 4249, 1, 0, 0, 0, 725, 4255, 1, 0, 0, 0, 727, 4260, 1, 0, 0, 0, 729, 4267, 1, 0, 0, 0, 731, 4276, 1, 0, 0, 0, 733, 4286, 1, 0, 0, 0, 735, 4291, 1, 0, 0, 0, 737, 4298, 1, 0, 0, 0, 739, 4304, 1, 0, 0, 0, 741, 4312, 1, 0, 0, 0, 743, 4322, 1, 0, 0, 0, 745, 4333, 1, 0, 0, 0, 747, 4341, 1, 0, 0, 0, 749, 4352, 1, 0, 0, 0, 751, 4357, 1, 0, 0, 0, 753, 4363, 1, 0, 0, 0, 755, 4368, 1, 0, 0, 0, 757, 4374, 1, 0, 0, 0, 759, 4380, 1, 0, 0, 0, 761, 4388, 1, 0, 0, 0, 763, 4397, 1, 0, 0, 0, 765, 4410, 1, 0, 0, 0, 767, 4421, 1, 0, 0, 0, 769, 4431, 1, 0, 0, 0, 771, 4441, 1, 0, 0, 0, 773, 4454, 1, 0, 0, 0, 775, 4464, 1, 0, 0, 0, 777, 4476, 1, 0, 0, 0, 779, 4483, 1, 0, 0, 0, 781, 4492, 1, 0, 0, 0, 783, 4502, 1, 0, 0, 0, 785, 4509, 1, 0, 0, 0, 787, 4516, 1, 0, 0, 0, 789, 4522, 1, 0, 0, 0, 791, 4529, 1, 0, 0, 0, 793, 4537, 1, 0, 0, 0, 795, 4543, 1, 0, 0, 0, 797, 4549, 1, 0, 0, 0, 799, 4557, 1, 0, 0, 0, 801, 4564, 1, 0, 0, 0, 803, 4569, 1, 0, 0, 0, 805, 4575, 1, 0, 0, 0, 807, 4580, 1, 0, 0, 0, 809, 4586, 1, 0, 0, 0, 811, 4594, 1, 0, 0, 0, 813, 4603, 1, 0, 0, 0, 815, 4612, 1, 0, 0, 0, 817, 4620, 1, 0, 0, 0, 819, 4628, 1, 0, 0, 0, 821, 4634, 1, 0, 0, 0, 823, 4645, 1, 0, 0, 0, 825, 4653, 1, 0, 0, 0, 827, 4661, 1, 0, 0, 0, 829, 4672, 1, 0, 0, 0, 831, 4683, 1, 0, 0, 0, 833, 4690, 1, 0, 0, 0, 835, 4696, 1, 0, 0, 0, 837, 4706, 1, 0, 0, 0, 839, 4711, 1, 0, 0, 0, 841, 4717, 1, 0, 0, 0, 843, 4724, 1, 0, 0, 0, 845, 4731, 1, 0, 0, 0, 847, 4740, 1, 0, 0, 0, 849, 4745, 1, 0, 0, 0, 851, 4750, 1, 0, 0, 0, 853, 4753, 1, 0, 0, 0, 855, 4756, 1, 0, 0, 0, 857, 4761, 1, 0, 0, 0, 859, 4765, 1, 0, 0, 0, 861, 4773, 1, 0, 0, 0, 863, 4781, 1, 0, 0, 0, 865, 4795, 1, 0, 0, 0, 867, 4802, 1, 0, 0, 0, 869, 4806, 1, 0, 0, 0, 871, 4814, 1, 0, 0, 0, 873, 4818, 1, 0, 0, 0, 875, 4822, 1, 0, 0, 0, 877, 4833, 1, 0, 0, 0, 879, 4836, 1, 0, 0, 0, 881, 4845, 1, 0, 0, 0, 883, 4851, 1, 0, 0, 0, 885, 4861, 1, 0, 0, 0, 887, 4870, 1, 0, 0, 0, 889, 4884, 1, 0, 0, 0, 891, 4893, 1, 0, 0, 0, 893, 4898, 1, 0, 0, 0, 895, 4904, 1, 0, 0, 0, 897, 4910, 1, 0, 0, 0, 899, 4917, 1, 0, 0, 0, 901, 4928, 1, 0, 0, 0, 903, 4938, 1, 0, 0, 0, 905, 4945, 1, 0, 0, 0, 907, 4950, 1, 0, 0, 0, 909, 4957, 1, 0, 0, 0, 911, 4963, 1, 0, 0, 0, 913, 4970, 1, 0, 0, 0, 915, 4976, 1, 0, 0, 0, 917, 4981, 1, 0, 0, 0, 919, 4986, 1, 0, 0, 0, 921, 4995, 1, 0, 0, 0, 923, 5001, 1, 0, 0, 0, 925, 5010, 1, 0, 0, 0, 927, 5020, 1, 0, 0, 0, 929, 5033, 1, 0, 0, 0, 931, 5039, 1, 0, 0, 0, 933, 5044, 1, 0, 0, 0, 935, 5048, 1, 0, 0, 0, 937, 5057, 1, 0, 0, 0, 939, 5062, 1, 0, 0, 0, 941, 5071, 1, 0, 0, 0, 943, 5076, 1, 0, 0, 0, 945, 5087, 1, 0, 0, 0, 947, 5096, 1, 0, 0, 0, 949, 5109, 1, 0, 0, 0, 951, 5113, 1, 0, 0, 0, 953, 5119, 1, 0, 0, 0, 955, 5122, 1, 0, 0, 0, 957, 5127, 1, 0, 0, 0, 959, 5133, 1, 0, 0, 0, 961, 5145, 1, 0, 0, 0, 963, 5153, 1, 0, 0, 0, 965, 5157, 1, 0, 0, 0, 967, 5167, 1, 0, 0, 0, 969, 5169, 1, 0, 0, 0, 971, 5172, 1, 0, 0, 0, 973, 5175, 1, 0, 0, 0, 975, 5177, 1, 0, 0, 0, 977, 5179, 1, 0, 0, 0, 979, 5181, 1, 0, 0, 0, 981, 5183, 1, 0, 0, 0, 983, 5185, 1, 0, 0, 0, 985, 5187, 1, 0, 0, 0, 987, 5189, 1, 0, 0, 0, 989, 5191, 1, 0, 0, 0, 991, 5195, 1, 0, 0, 0, 993, 5199, 1, 0, 0, 0, 995, 5201, 1, 0, 0, 0, 997, 5203, 1, 0, 0, 0, 999, 5205, 1, 0, 0, 0, 1001, 5207, 1, 0, 0, 0, 1003, 5209, 1, 0, 0, 0, 1005, 5211, 1, 0, 0, 0, 1007, 5213, 1, 0, 0, 0, 1009, 5215, 1, 0, 0, 0, 1011, 5217, 1, 0, 0, 0, 1013, 5219, 1, 0, 0, 0, 1015, 5221, 1, 0, 0, 0, 1017, 5223, 1, 0, 0, 0, 1019, 5226, 1, 0, 0, 0, 1021, 5229, 1, 0, 0, 0, 1023, 5231, 1, 0, 0, 0, 1025, 5233, 1, 0, 0, 0, 1027, 5245, 1, 0, 0, 0, 1029, 5258, 1, 0, 0, 0, 1031, 5271, 1, 0, 0, 0, 1033, 5297, 1, 0, 0, 0, 1035, 5303, 1, 0, 0, 0, 1037, 5310, 1, 0, 0, 0, 1039, 5344, 1, 0, 0, 0, 1041, 5346, 1, 0, 0, 0, 1043, 5348, 1, 0, 0, 0, 1045, 5350, 1, 0, 0, 0, 1047, 5352, 1, 0, 0, 0, 1049, 5354, 1, 0, 0, 0, 1051, 5356, 1, 0, 0, 0, 1053, 5358, 1, 0, 0, 0, 1055, 5360, 1, 0, 0, 0, 1057, 5362, 1, 0, 0, 0, 1059, 5364, 1, 0, 0, 0, 1061, 5366, 1, 0, 0, 0, 1063, 5368, 1, 0, 0, 0, 1065, 5370, 1, 0, 0, 0, 1067, 5372, 1, 0, 0, 0, 1069, 5374, 1, 0, 0, 0, 1071, 5376, 1, 0, 0, 0, 1073, 5378, 1, 0, 0, 0, 1075, 5380, 1, 0, 0, 0, 1077, 5382, 1, 0, 0, 0, 1079, 5384, 1, 0, 0, 0, 1081, 5386, 1, 0, 0, 0, 1083, 5388, 1, 0, 0, 0, 1085, 5390, 1, 0, 0, 0, 1087, 5392, 1, 0, 0, 0, 1089, 5394, 1, 0, 0, 0, 1091, 5396, 1, 0, 0, 0, 1093, 5398, 1, 0, 0, 0, 1095, 5400, 1, 0, 0, 0, 1097, 5402, 1, 0, 0, 0, 1099, 1101, 7, 0, 0, 0, 1100, 1099, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1100, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 6, 0, 0, 0, 1105, 2, 1, 0, 0, 0, 1106, 1107, 5, 47, 0, 0, 1107, 1108, 5, 42, 0, 0, 1108, 1109, 5, 42, 0, 0, 1109, 1113, 1, 0, 0, 0, 1110, 1112, 9, 0, 0, 0, 1111, 1110, 1, 0, 0, 0, 1112, 1115, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1113, 1111, 1, 0, 0, 0, 1114, 1116, 1, 0, 0, 0, 1115, 1113, 1, 0, 0, 0, 1116, 1117, 5, 42, 0, 0, 1117, 1118, 5, 47, 0, 0, 1118, 4, 1, 0, 0, 0, 1119, 1120, 5, 47, 0, 0, 1120, 1121, 5, 42, 0, 0, 1121, 1125, 1, 0, 0, 0, 1122, 1124, 9, 0, 0, 0, 1123, 1122, 1, 0, 0, 0, 1124, 1127, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1125, 1123, 1, 0, 0, 0, 1126, 1128, 1, 0, 0, 0, 1127, 1125, 1, 0, 0, 0, 1128, 1129, 5, 42, 0, 0, 1129, 1130, 5, 47, 0, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1132, 6, 2, 0, 0, 1132, 6, 1, 0, 0, 0, 1133, 1134, 5, 45, 0, 0, 1134, 1135, 5, 45, 0, 0, 1135, 1139, 1, 0, 0, 0, 1136, 1138, 8, 1, 0, 0, 1137, 1136, 1, 0, 0, 0, 1138, 1141, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1142, 1, 0, 0, 0, 1141, 1139, 1, 0, 0, 0, 1142, 1143, 6, 3, 0, 0, 1143, 8, 1, 0, 0, 0, 1144, 1145, 3, 1063, 531, 0, 1145, 1147, 3, 1083, 541, 0, 1146, 1148, 3, 1, 0, 0, 1147, 1146, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 3, 1073, 536, 0, 1152, 1153, 3, 1075, 537, 0, 1153, 1155, 3, 1085, 542, 0, 1154, 1156, 3, 1, 0, 0, 1155, 1154, 1, 0, 0, 0, 1156, 1157, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1158, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1160, 3, 1073, 536, 0, 1160, 1161, 3, 1087, 543, 0, 1161, 1162, 3, 1069, 534, 0, 1162, 1163, 3, 1069, 534, 0, 1163, 10, 1, 0, 0, 0, 1164, 1165, 3, 1063, 531, 0, 1165, 1167, 3, 1083, 541, 0, 1166, 1168, 3, 1, 0, 0, 1167, 1166, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1167, 1, 0, 0, 0, 1169, 1170, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 3, 1073, 536, 0, 1172, 1173, 3, 1087, 543, 0, 1173, 1174, 3, 1069, 534, 0, 1174, 1175, 3, 1069, 534, 0, 1175, 12, 1, 0, 0, 0, 1176, 1177, 3, 1073, 536, 0, 1177, 1178, 3, 1075, 537, 0, 1178, 1180, 3, 1085, 542, 0, 1179, 1181, 3, 1, 0, 0, 1180, 1179, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1180, 1, 0, 0, 0, 1182, 1183, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1185, 3, 1073, 536, 0, 1185, 1186, 3, 1087, 543, 0, 1186, 1187, 3, 1069, 534, 0, 1187, 1188, 3, 1069, 534, 0, 1188, 14, 1, 0, 0, 0, 1189, 1190, 3, 1059, 529, 0, 1190, 1191, 3, 1081, 540, 0, 1191, 1192, 3, 1075, 537, 0, 1192, 1193, 3, 1087, 543, 0, 1193, 1195, 3, 1077, 538, 0, 1194, 1196, 3, 1, 0, 0, 1195, 1194, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1195, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 1200, 3, 1049, 524, 0, 1200, 1201, 3, 1095, 547, 0, 1201, 16, 1, 0, 0, 0, 1202, 1203, 3, 1075, 537, 0, 1203, 1204, 3, 1081, 540, 0, 1204, 1205, 3, 1053, 526, 0, 1205, 1206, 3, 1055, 527, 0, 1206, 1208, 3, 1081, 540, 0, 1207, 1209, 3, 1, 0, 0, 1208, 1207, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0, 1210, 1208, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 3, 1049, 524, 0, 1213, 1214, 3, 1095, 547, 0, 1214, 18, 1, 0, 0, 0, 1215, 1216, 3, 1083, 541, 0, 1216, 1217, 3, 1075, 537, 0, 1217, 1218, 3, 1081, 540, 0, 1218, 1220, 3, 1085, 542, 0, 1219, 1221, 3, 1, 0, 0, 1220, 1219, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1220, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 1, 0, 0, 0, 1224, 1225, 3, 1049, 524, 0, 1225, 1226, 3, 1095, 547, 0, 1226, 20, 1, 0, 0, 0, 1227, 1228, 3, 1073, 536, 0, 1228, 1229, 3, 1075, 537, 0, 1229, 1230, 3, 1073, 536, 0, 1230, 1231, 5, 45, 0, 0, 1231, 1232, 3, 1077, 538, 0, 1232, 1233, 3, 1055, 527, 0, 1233, 1234, 3, 1081, 540, 0, 1234, 1235, 3, 1083, 541, 0, 1235, 1236, 3, 1063, 531, 0, 1236, 1237, 3, 1083, 541, 0, 1237, 1238, 3, 1085, 542, 0, 1238, 1239, 3, 1055, 527, 0, 1239, 1240, 3, 1073, 536, 0, 1240, 1241, 3, 1085, 542, 0, 1241, 22, 1, 0, 0, 0, 1242, 1243, 3, 1081, 540, 0, 1243, 1244, 3, 1055, 527, 0, 1244, 1245, 3, 1057, 528, 0, 1245, 1246, 3, 1055, 527, 0, 1246, 1247, 3, 1081, 540, 0, 1247, 1248, 3, 1055, 527, 0, 1248, 1249, 3, 1073, 536, 0, 1249, 1250, 3, 1051, 525, 0, 1250, 1252, 3, 1055, 527, 0, 1251, 1253, 5, 95, 0, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 1255, 3, 1083, 541, 0, 1255, 1256, 3, 1055, 527, 0, 1256, 1257, 3, 1085, 542, 0, 1257, 24, 1, 0, 0, 0, 1258, 1259, 3, 1069, 534, 0, 1259, 1260, 3, 1063, 531, 0, 1260, 1261, 3, 1083, 541, 0, 1261, 1263, 3, 1085, 542, 0, 1262, 1264, 3, 1, 0, 0, 1263, 1262, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1263, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1268, 3, 1075, 537, 0, 1268, 1269, 3, 1057, 528, 0, 1269, 26, 1, 0, 0, 0, 1270, 1271, 3, 1053, 526, 0, 1271, 1272, 3, 1055, 527, 0, 1272, 1273, 3, 1069, 534, 0, 1273, 1274, 3, 1055, 527, 0, 1274, 1275, 3, 1085, 542, 0, 1275, 1277, 3, 1055, 527, 0, 1276, 1278, 3, 1, 0, 0, 1277, 1276, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1277, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1281, 1, 0, 0, 0, 1281, 1282, 3, 1047, 523, 0, 1282, 1283, 3, 1073, 536, 0, 1283, 1285, 3, 1053, 526, 0, 1284, 1286, 3, 1, 0, 0, 1285, 1284, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1285, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 3, 1081, 540, 0, 1290, 1291, 3, 1055, 527, 0, 1291, 1292, 3, 1057, 528, 0, 1292, 1293, 3, 1055, 527, 0, 1293, 1294, 3, 1081, 540, 0, 1294, 1295, 3, 1055, 527, 0, 1295, 1296, 3, 1073, 536, 0, 1296, 1297, 3, 1051, 525, 0, 1297, 1298, 3, 1055, 527, 0, 1298, 1299, 3, 1083, 541, 0, 1299, 1343, 1, 0, 0, 0, 1300, 1301, 3, 1053, 526, 0, 1301, 1302, 3, 1055, 527, 0, 1302, 1303, 3, 1069, 534, 0, 1303, 1304, 3, 1055, 527, 0, 1304, 1305, 3, 1085, 542, 0, 1305, 1306, 3, 1055, 527, 0, 1306, 1307, 5, 95, 0, 0, 1307, 1308, 3, 1047, 523, 0, 1308, 1309, 3, 1073, 536, 0, 1309, 1310, 3, 1053, 526, 0, 1310, 1311, 5, 95, 0, 0, 1311, 1312, 3, 1081, 540, 0, 1312, 1313, 3, 1055, 527, 0, 1313, 1314, 3, 1057, 528, 0, 1314, 1315, 3, 1055, 527, 0, 1315, 1316, 3, 1081, 540, 0, 1316, 1317, 3, 1055, 527, 0, 1317, 1318, 3, 1073, 536, 0, 1318, 1319, 3, 1051, 525, 0, 1319, 1320, 3, 1055, 527, 0, 1320, 1321, 3, 1083, 541, 0, 1321, 1343, 1, 0, 0, 0, 1322, 1323, 3, 1053, 526, 0, 1323, 1324, 3, 1055, 527, 0, 1324, 1325, 3, 1069, 534, 0, 1325, 1326, 3, 1055, 527, 0, 1326, 1327, 3, 1085, 542, 0, 1327, 1328, 3, 1055, 527, 0, 1328, 1329, 3, 1047, 523, 0, 1329, 1330, 3, 1073, 536, 0, 1330, 1331, 3, 1053, 526, 0, 1331, 1332, 3, 1081, 540, 0, 1332, 1333, 3, 1055, 527, 0, 1333, 1334, 3, 1057, 528, 0, 1334, 1335, 3, 1055, 527, 0, 1335, 1336, 3, 1081, 540, 0, 1336, 1337, 3, 1055, 527, 0, 1337, 1338, 3, 1073, 536, 0, 1338, 1339, 3, 1051, 525, 0, 1339, 1340, 3, 1055, 527, 0, 1340, 1341, 3, 1083, 541, 0, 1341, 1343, 1, 0, 0, 0, 1342, 1270, 1, 0, 0, 0, 1342, 1300, 1, 0, 0, 0, 1342, 1322, 1, 0, 0, 0, 1343, 28, 1, 0, 0, 0, 1344, 1345, 3, 1053, 526, 0, 1345, 1346, 3, 1055, 527, 0, 1346, 1347, 3, 1069, 534, 0, 1347, 1348, 3, 1055, 527, 0, 1348, 1349, 3, 1085, 542, 0, 1349, 1351, 3, 1055, 527, 0, 1350, 1352, 3, 1, 0, 0, 1351, 1350, 1, 0, 0, 0, 1352, 1353, 1, 0, 0, 0, 1353, 1351, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1356, 3, 1049, 524, 0, 1356, 1357, 3, 1087, 543, 0, 1357, 1359, 3, 1085, 542, 0, 1358, 1360, 3, 1, 0, 0, 1359, 1358, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1359, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 1364, 3, 1067, 533, 0, 1364, 1365, 3, 1055, 527, 0, 1365, 1366, 3, 1055, 527, 0, 1366, 1368, 3, 1077, 538, 0, 1367, 1369, 3, 1, 0, 0, 1368, 1367, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 3, 1081, 540, 0, 1373, 1374, 3, 1055, 527, 0, 1374, 1375, 3, 1057, 528, 0, 1375, 1376, 3, 1055, 527, 0, 1376, 1377, 3, 1081, 540, 0, 1377, 1378, 3, 1055, 527, 0, 1378, 1379, 3, 1073, 536, 0, 1379, 1380, 3, 1051, 525, 0, 1380, 1381, 3, 1055, 527, 0, 1381, 1382, 3, 1083, 541, 0, 1382, 1435, 1, 0, 0, 0, 1383, 1384, 3, 1053, 526, 0, 1384, 1385, 3, 1055, 527, 0, 1385, 1386, 3, 1069, 534, 0, 1386, 1387, 3, 1055, 527, 0, 1387, 1388, 3, 1085, 542, 0, 1388, 1389, 3, 1055, 527, 0, 1389, 1390, 5, 95, 0, 0, 1390, 1391, 3, 1049, 524, 0, 1391, 1392, 3, 1087, 543, 0, 1392, 1393, 3, 1085, 542, 0, 1393, 1394, 5, 95, 0, 0, 1394, 1395, 3, 1067, 533, 0, 1395, 1396, 3, 1055, 527, 0, 1396, 1397, 3, 1055, 527, 0, 1397, 1398, 3, 1077, 538, 0, 1398, 1399, 5, 95, 0, 0, 1399, 1400, 3, 1081, 540, 0, 1400, 1401, 3, 1055, 527, 0, 1401, 1402, 3, 1057, 528, 0, 1402, 1403, 3, 1055, 527, 0, 1403, 1404, 3, 1081, 540, 0, 1404, 1405, 3, 1055, 527, 0, 1405, 1406, 3, 1073, 536, 0, 1406, 1407, 3, 1051, 525, 0, 1407, 1408, 3, 1055, 527, 0, 1408, 1409, 3, 1083, 541, 0, 1409, 1435, 1, 0, 0, 0, 1410, 1411, 3, 1053, 526, 0, 1411, 1412, 3, 1055, 527, 0, 1412, 1413, 3, 1069, 534, 0, 1413, 1414, 3, 1055, 527, 0, 1414, 1415, 3, 1085, 542, 0, 1415, 1416, 3, 1055, 527, 0, 1416, 1417, 3, 1049, 524, 0, 1417, 1418, 3, 1087, 543, 0, 1418, 1419, 3, 1085, 542, 0, 1419, 1420, 3, 1067, 533, 0, 1420, 1421, 3, 1055, 527, 0, 1421, 1422, 3, 1055, 527, 0, 1422, 1423, 3, 1077, 538, 0, 1423, 1424, 3, 1081, 540, 0, 1424, 1425, 3, 1055, 527, 0, 1425, 1426, 3, 1057, 528, 0, 1426, 1427, 3, 1055, 527, 0, 1427, 1428, 3, 1081, 540, 0, 1428, 1429, 3, 1055, 527, 0, 1429, 1430, 3, 1073, 536, 0, 1430, 1431, 3, 1051, 525, 0, 1431, 1432, 3, 1055, 527, 0, 1432, 1433, 3, 1083, 541, 0, 1433, 1435, 1, 0, 0, 0, 1434, 1344, 1, 0, 0, 0, 1434, 1383, 1, 0, 0, 0, 1434, 1410, 1, 0, 0, 0, 1435, 30, 1, 0, 0, 0, 1436, 1437, 3, 1053, 526, 0, 1437, 1438, 3, 1055, 527, 0, 1438, 1439, 3, 1069, 534, 0, 1439, 1440, 3, 1055, 527, 0, 1440, 1441, 3, 1085, 542, 0, 1441, 1443, 3, 1055, 527, 0, 1442, 1444, 3, 1, 0, 0, 1443, 1442, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 1443, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1447, 1448, 3, 1063, 531, 0, 1448, 1450, 3, 1057, 528, 0, 1449, 1451, 3, 1, 0, 0, 1450, 1449, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 1450, 1, 0, 0, 0, 1452, 1453, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 3, 1073, 536, 0, 1455, 1457, 3, 1075, 537, 0, 1456, 1458, 3, 1, 0, 0, 1457, 1456, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1457, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1462, 3, 1081, 540, 0, 1462, 1463, 3, 1055, 527, 0, 1463, 1464, 3, 1057, 528, 0, 1464, 1465, 3, 1055, 527, 0, 1465, 1466, 3, 1081, 540, 0, 1466, 1467, 3, 1055, 527, 0, 1467, 1468, 3, 1073, 536, 0, 1468, 1469, 3, 1051, 525, 0, 1469, 1470, 3, 1055, 527, 0, 1470, 1471, 3, 1083, 541, 0, 1471, 1518, 1, 0, 0, 0, 1472, 1473, 3, 1053, 526, 0, 1473, 1474, 3, 1055, 527, 0, 1474, 1475, 3, 1069, 534, 0, 1475, 1476, 3, 1055, 527, 0, 1476, 1477, 3, 1085, 542, 0, 1477, 1478, 3, 1055, 527, 0, 1478, 1479, 5, 95, 0, 0, 1479, 1480, 3, 1063, 531, 0, 1480, 1481, 3, 1057, 528, 0, 1481, 1482, 5, 95, 0, 0, 1482, 1483, 3, 1073, 536, 0, 1483, 1484, 3, 1075, 537, 0, 1484, 1485, 5, 95, 0, 0, 1485, 1486, 3, 1081, 540, 0, 1486, 1487, 3, 1055, 527, 0, 1487, 1488, 3, 1057, 528, 0, 1488, 1489, 3, 1055, 527, 0, 1489, 1490, 3, 1081, 540, 0, 1490, 1491, 3, 1055, 527, 0, 1491, 1492, 3, 1073, 536, 0, 1492, 1493, 3, 1051, 525, 0, 1493, 1494, 3, 1055, 527, 0, 1494, 1495, 3, 1083, 541, 0, 1495, 1518, 1, 0, 0, 0, 1496, 1497, 3, 1053, 526, 0, 1497, 1498, 3, 1055, 527, 0, 1498, 1499, 3, 1069, 534, 0, 1499, 1500, 3, 1055, 527, 0, 1500, 1501, 3, 1085, 542, 0, 1501, 1502, 3, 1055, 527, 0, 1502, 1503, 3, 1063, 531, 0, 1503, 1504, 3, 1057, 528, 0, 1504, 1505, 3, 1073, 536, 0, 1505, 1506, 3, 1075, 537, 0, 1506, 1507, 3, 1081, 540, 0, 1507, 1508, 3, 1055, 527, 0, 1508, 1509, 3, 1057, 528, 0, 1509, 1510, 3, 1055, 527, 0, 1510, 1511, 3, 1081, 540, 0, 1511, 1512, 3, 1055, 527, 0, 1512, 1513, 3, 1073, 536, 0, 1513, 1514, 3, 1051, 525, 0, 1514, 1515, 3, 1055, 527, 0, 1515, 1516, 3, 1083, 541, 0, 1516, 1518, 1, 0, 0, 0, 1517, 1436, 1, 0, 0, 0, 1517, 1472, 1, 0, 0, 0, 1517, 1496, 1, 0, 0, 0, 1518, 32, 1, 0, 0, 0, 1519, 1520, 3, 1051, 525, 0, 1520, 1521, 3, 1081, 540, 0, 1521, 1522, 3, 1055, 527, 0, 1522, 1523, 3, 1047, 523, 0, 1523, 1524, 3, 1085, 542, 0, 1524, 1525, 3, 1055, 527, 0, 1525, 34, 1, 0, 0, 0, 1526, 1527, 3, 1047, 523, 0, 1527, 1528, 3, 1069, 534, 0, 1528, 1529, 3, 1085, 542, 0, 1529, 1530, 3, 1055, 527, 0, 1530, 1531, 3, 1081, 540, 0, 1531, 36, 1, 0, 0, 0, 1532, 1533, 3, 1053, 526, 0, 1533, 1534, 3, 1081, 540, 0, 1534, 1535, 3, 1075, 537, 0, 1535, 1536, 3, 1077, 538, 0, 1536, 38, 1, 0, 0, 0, 1537, 1538, 3, 1081, 540, 0, 1538, 1539, 3, 1055, 527, 0, 1539, 1540, 3, 1073, 536, 0, 1540, 1541, 3, 1047, 523, 0, 1541, 1542, 3, 1071, 535, 0, 1542, 1543, 3, 1055, 527, 0, 1543, 40, 1, 0, 0, 0, 1544, 1545, 3, 1071, 535, 0, 1545, 1546, 3, 1075, 537, 0, 1546, 1547, 3, 1089, 544, 0, 1547, 1548, 3, 1055, 527, 0, 1548, 42, 1, 0, 0, 0, 1549, 1550, 3, 1071, 535, 0, 1550, 1551, 3, 1075, 537, 0, 1551, 1552, 3, 1053, 526, 0, 1552, 1553, 3, 1063, 531, 0, 1553, 1554, 3, 1057, 528, 0, 1554, 1555, 3, 1095, 547, 0, 1555, 44, 1, 0, 0, 0, 1556, 1557, 3, 1055, 527, 0, 1557, 1558, 3, 1073, 536, 0, 1558, 1559, 3, 1085, 542, 0, 1559, 1560, 3, 1063, 531, 0, 1560, 1561, 3, 1085, 542, 0, 1561, 1562, 3, 1095, 547, 0, 1562, 46, 1, 0, 0, 0, 1563, 1564, 3, 1077, 538, 0, 1564, 1565, 3, 1055, 527, 0, 1565, 1566, 3, 1081, 540, 0, 1566, 1567, 3, 1083, 541, 0, 1567, 1568, 3, 1063, 531, 0, 1568, 1569, 3, 1083, 541, 0, 1569, 1570, 3, 1085, 542, 0, 1570, 1571, 3, 1055, 527, 0, 1571, 1572, 3, 1073, 536, 0, 1572, 1573, 3, 1085, 542, 0, 1573, 48, 1, 0, 0, 0, 1574, 1575, 3, 1089, 544, 0, 1575, 1576, 3, 1063, 531, 0, 1576, 1577, 3, 1055, 527, 0, 1577, 1578, 3, 1091, 545, 0, 1578, 50, 1, 0, 0, 0, 1579, 1580, 3, 1055, 527, 0, 1580, 1581, 3, 1093, 546, 0, 1581, 1582, 3, 1085, 542, 0, 1582, 1583, 3, 1055, 527, 0, 1583, 1584, 3, 1081, 540, 0, 1584, 1585, 3, 1073, 536, 0, 1585, 1586, 3, 1047, 523, 0, 1586, 1587, 3, 1069, 534, 0, 1587, 52, 1, 0, 0, 0, 1588, 1589, 3, 1047, 523, 0, 1589, 1590, 3, 1083, 541, 0, 1590, 1591, 3, 1083, 541, 0, 1591, 1592, 3, 1075, 537, 0, 1592, 1593, 3, 1051, 525, 0, 1593, 1594, 3, 1063, 531, 0, 1594, 1595, 3, 1047, 523, 0, 1595, 1596, 3, 1085, 542, 0, 1596, 1597, 3, 1063, 531, 0, 1597, 1598, 3, 1075, 537, 0, 1598, 1599, 3, 1073, 536, 0, 1599, 54, 1, 0, 0, 0, 1600, 1601, 3, 1055, 527, 0, 1601, 1602, 3, 1073, 536, 0, 1602, 1603, 3, 1087, 543, 0, 1603, 1604, 3, 1071, 535, 0, 1604, 1605, 3, 1055, 527, 0, 1605, 1606, 3, 1081, 540, 0, 1606, 1607, 3, 1047, 523, 0, 1607, 1608, 3, 1085, 542, 0, 1608, 1609, 3, 1063, 531, 0, 1609, 1610, 3, 1075, 537, 0, 1610, 1611, 3, 1073, 536, 0, 1611, 56, 1, 0, 0, 0, 1612, 1613, 3, 1071, 535, 0, 1613, 1614, 3, 1075, 537, 0, 1614, 1615, 3, 1053, 526, 0, 1615, 1616, 3, 1087, 543, 0, 1616, 1617, 3, 1069, 534, 0, 1617, 1618, 3, 1055, 527, 0, 1618, 58, 1, 0, 0, 0, 1619, 1620, 3, 1071, 535, 0, 1620, 1621, 3, 1063, 531, 0, 1621, 1622, 3, 1051, 525, 0, 1622, 1623, 3, 1081, 540, 0, 1623, 1624, 3, 1075, 537, 0, 1624, 1625, 3, 1057, 528, 0, 1625, 1626, 3, 1069, 534, 0, 1626, 1627, 3, 1075, 537, 0, 1627, 1628, 3, 1091, 545, 0, 1628, 60, 1, 0, 0, 0, 1629, 1630, 3, 1073, 536, 0, 1630, 1631, 3, 1047, 523, 0, 1631, 1632, 3, 1073, 536, 0, 1632, 1633, 3, 1075, 537, 0, 1633, 1634, 3, 1057, 528, 0, 1634, 1635, 3, 1069, 534, 0, 1635, 1636, 3, 1075, 537, 0, 1636, 1637, 3, 1091, 545, 0, 1637, 62, 1, 0, 0, 0, 1638, 1639, 3, 1091, 545, 0, 1639, 1640, 3, 1075, 537, 0, 1640, 1641, 3, 1081, 540, 0, 1641, 1642, 3, 1067, 533, 0, 1642, 1643, 3, 1057, 528, 0, 1643, 1644, 3, 1069, 534, 0, 1644, 1645, 3, 1075, 537, 0, 1645, 1646, 3, 1091, 545, 0, 1646, 64, 1, 0, 0, 0, 1647, 1648, 3, 1077, 538, 0, 1648, 1649, 3, 1047, 523, 0, 1649, 1650, 3, 1059, 529, 0, 1650, 1651, 3, 1055, 527, 0, 1651, 66, 1, 0, 0, 0, 1652, 1653, 3, 1083, 541, 0, 1653, 1654, 3, 1073, 536, 0, 1654, 1655, 3, 1063, 531, 0, 1655, 1656, 3, 1077, 538, 0, 1656, 1657, 3, 1077, 538, 0, 1657, 1658, 3, 1055, 527, 0, 1658, 1659, 3, 1085, 542, 0, 1659, 68, 1, 0, 0, 0, 1660, 1661, 3, 1069, 534, 0, 1661, 1662, 3, 1047, 523, 0, 1662, 1663, 3, 1095, 547, 0, 1663, 1664, 3, 1075, 537, 0, 1664, 1665, 3, 1087, 543, 0, 1665, 1666, 3, 1085, 542, 0, 1666, 70, 1, 0, 0, 0, 1667, 1668, 3, 1073, 536, 0, 1668, 1669, 3, 1075, 537, 0, 1669, 1670, 3, 1085, 542, 0, 1670, 1671, 3, 1055, 527, 0, 1671, 1672, 3, 1049, 524, 0, 1672, 1673, 3, 1075, 537, 0, 1673, 1674, 3, 1075, 537, 0, 1674, 1675, 3, 1067, 533, 0, 1675, 72, 1, 0, 0, 0, 1676, 1677, 3, 1051, 525, 0, 1677, 1678, 3, 1075, 537, 0, 1678, 1679, 3, 1073, 536, 0, 1679, 1680, 3, 1083, 541, 0, 1680, 1681, 3, 1085, 542, 0, 1681, 1682, 3, 1047, 523, 0, 1682, 1683, 3, 1073, 536, 0, 1683, 1684, 3, 1085, 542, 0, 1684, 74, 1, 0, 0, 0, 1685, 1686, 3, 1047, 523, 0, 1686, 1687, 3, 1085, 542, 0, 1687, 1688, 3, 1085, 542, 0, 1688, 1689, 3, 1081, 540, 0, 1689, 1690, 3, 1063, 531, 0, 1690, 1691, 3, 1049, 524, 0, 1691, 1692, 3, 1087, 543, 0, 1692, 1693, 3, 1085, 542, 0, 1693, 1694, 3, 1055, 527, 0, 1694, 76, 1, 0, 0, 0, 1695, 1696, 3, 1051, 525, 0, 1696, 1697, 3, 1075, 537, 0, 1697, 1698, 3, 1069, 534, 0, 1698, 1699, 3, 1087, 543, 0, 1699, 1700, 3, 1071, 535, 0, 1700, 1701, 3, 1073, 536, 0, 1701, 78, 1, 0, 0, 0, 1702, 1703, 3, 1051, 525, 0, 1703, 1704, 3, 1075, 537, 0, 1704, 1705, 3, 1069, 534, 0, 1705, 1706, 3, 1087, 543, 0, 1706, 1707, 3, 1071, 535, 0, 1707, 1708, 3, 1073, 536, 0, 1708, 1709, 3, 1083, 541, 0, 1709, 80, 1, 0, 0, 0, 1710, 1711, 3, 1063, 531, 0, 1711, 1712, 3, 1073, 536, 0, 1712, 1713, 3, 1053, 526, 0, 1713, 1714, 3, 1055, 527, 0, 1714, 1715, 3, 1093, 546, 0, 1715, 82, 1, 0, 0, 0, 1716, 1717, 3, 1075, 537, 0, 1717, 1718, 3, 1091, 545, 0, 1718, 1719, 3, 1073, 536, 0, 1719, 1720, 3, 1055, 527, 0, 1720, 1721, 3, 1081, 540, 0, 1721, 84, 1, 0, 0, 0, 1722, 1723, 3, 1083, 541, 0, 1723, 1724, 3, 1085, 542, 0, 1724, 1725, 3, 1075, 537, 0, 1725, 1726, 3, 1081, 540, 0, 1726, 1727, 3, 1055, 527, 0, 1727, 86, 1, 0, 0, 0, 1728, 1729, 3, 1081, 540, 0, 1729, 1730, 3, 1055, 527, 0, 1730, 1731, 3, 1057, 528, 0, 1731, 1732, 3, 1055, 527, 0, 1732, 1733, 3, 1081, 540, 0, 1733, 1734, 3, 1055, 527, 0, 1734, 1735, 3, 1073, 536, 0, 1735, 1736, 3, 1051, 525, 0, 1736, 1737, 3, 1055, 527, 0, 1737, 88, 1, 0, 0, 0, 1738, 1739, 3, 1059, 529, 0, 1739, 1740, 3, 1055, 527, 0, 1740, 1741, 3, 1073, 536, 0, 1741, 1742, 3, 1055, 527, 0, 1742, 1743, 3, 1081, 540, 0, 1743, 1744, 3, 1047, 523, 0, 1744, 1745, 3, 1069, 534, 0, 1745, 1746, 3, 1063, 531, 0, 1746, 1747, 3, 1097, 548, 0, 1747, 1748, 3, 1047, 523, 0, 1748, 1749, 3, 1085, 542, 0, 1749, 1750, 3, 1063, 531, 0, 1750, 1751, 3, 1075, 537, 0, 1751, 1752, 3, 1073, 536, 0, 1752, 90, 1, 0, 0, 0, 1753, 1754, 3, 1055, 527, 0, 1754, 1755, 3, 1093, 546, 0, 1755, 1756, 3, 1085, 542, 0, 1756, 1757, 3, 1055, 527, 0, 1757, 1758, 3, 1073, 536, 0, 1758, 1759, 3, 1053, 526, 0, 1759, 1760, 3, 1083, 541, 0, 1760, 92, 1, 0, 0, 0, 1761, 1762, 3, 1047, 523, 0, 1762, 1763, 3, 1053, 526, 0, 1763, 1764, 3, 1053, 526, 0, 1764, 94, 1, 0, 0, 0, 1765, 1766, 3, 1083, 541, 0, 1766, 1767, 3, 1055, 527, 0, 1767, 1768, 3, 1085, 542, 0, 1768, 96, 1, 0, 0, 0, 1769, 1770, 3, 1077, 538, 0, 1770, 1771, 3, 1075, 537, 0, 1771, 1772, 3, 1083, 541, 0, 1772, 1773, 3, 1063, 531, 0, 1773, 1774, 3, 1085, 542, 0, 1774, 1775, 3, 1063, 531, 0, 1775, 1776, 3, 1075, 537, 0, 1776, 1777, 3, 1073, 536, 0, 1777, 98, 1, 0, 0, 0, 1778, 1779, 3, 1053, 526, 0, 1779, 1780, 3, 1075, 537, 0, 1780, 1781, 3, 1051, 525, 0, 1781, 1782, 3, 1087, 543, 0, 1782, 1783, 3, 1071, 535, 0, 1783, 1784, 3, 1055, 527, 0, 1784, 1785, 3, 1073, 536, 0, 1785, 1786, 3, 1085, 542, 0, 1786, 1787, 3, 1047, 523, 0, 1787, 1788, 3, 1085, 542, 0, 1788, 1789, 3, 1063, 531, 0, 1789, 1790, 3, 1075, 537, 0, 1790, 1791, 3, 1073, 536, 0, 1791, 100, 1, 0, 0, 0, 1792, 1793, 3, 1083, 541, 0, 1793, 1794, 3, 1085, 542, 0, 1794, 1795, 3, 1075, 537, 0, 1795, 1796, 3, 1081, 540, 0, 1796, 1797, 3, 1047, 523, 0, 1797, 1798, 3, 1059, 529, 0, 1798, 1799, 3, 1055, 527, 0, 1799, 102, 1, 0, 0, 0, 1800, 1801, 3, 1085, 542, 0, 1801, 1802, 3, 1047, 523, 0, 1802, 1803, 3, 1049, 524, 0, 1803, 1804, 3, 1069, 534, 0, 1804, 1805, 3, 1055, 527, 0, 1805, 104, 1, 0, 0, 0, 1806, 1807, 3, 1053, 526, 0, 1807, 1808, 3, 1055, 527, 0, 1808, 1809, 3, 1069, 534, 0, 1809, 1810, 3, 1055, 527, 0, 1810, 1811, 3, 1085, 542, 0, 1811, 1813, 3, 1055, 527, 0, 1812, 1814, 5, 95, 0, 0, 1813, 1812, 1, 0, 0, 0, 1813, 1814, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1816, 3, 1049, 524, 0, 1816, 1817, 3, 1055, 527, 0, 1817, 1818, 3, 1061, 530, 0, 1818, 1819, 3, 1047, 523, 0, 1819, 1820, 3, 1089, 544, 0, 1820, 1821, 3, 1063, 531, 0, 1821, 1822, 3, 1075, 537, 0, 1822, 1823, 3, 1081, 540, 0, 1823, 106, 1, 0, 0, 0, 1824, 1825, 3, 1051, 525, 0, 1825, 1826, 3, 1047, 523, 0, 1826, 1827, 3, 1083, 541, 0, 1827, 1828, 3, 1051, 525, 0, 1828, 1829, 3, 1047, 523, 0, 1829, 1830, 3, 1053, 526, 0, 1830, 1831, 3, 1055, 527, 0, 1831, 108, 1, 0, 0, 0, 1832, 1833, 3, 1077, 538, 0, 1833, 1834, 3, 1081, 540, 0, 1834, 1835, 3, 1055, 527, 0, 1835, 1836, 3, 1089, 544, 0, 1836, 1837, 3, 1055, 527, 0, 1837, 1838, 3, 1073, 536, 0, 1838, 1839, 3, 1085, 542, 0, 1839, 110, 1, 0, 0, 0, 1840, 1841, 3, 1051, 525, 0, 1841, 1842, 3, 1075, 537, 0, 1842, 1843, 3, 1073, 536, 0, 1843, 1844, 3, 1073, 536, 0, 1844, 1845, 3, 1055, 527, 0, 1845, 1846, 3, 1051, 525, 0, 1846, 1847, 3, 1085, 542, 0, 1847, 112, 1, 0, 0, 0, 1848, 1849, 3, 1053, 526, 0, 1849, 1850, 3, 1063, 531, 0, 1850, 1851, 3, 1083, 541, 0, 1851, 1852, 3, 1051, 525, 0, 1852, 1853, 3, 1075, 537, 0, 1853, 1854, 3, 1073, 536, 0, 1854, 1855, 3, 1073, 536, 0, 1855, 1856, 3, 1055, 527, 0, 1856, 1857, 3, 1051, 525, 0, 1857, 1858, 3, 1085, 542, 0, 1858, 114, 1, 0, 0, 0, 1859, 1860, 3, 1069, 534, 0, 1860, 1861, 3, 1075, 537, 0, 1861, 1862, 3, 1051, 525, 0, 1862, 1863, 3, 1047, 523, 0, 1863, 1864, 3, 1069, 534, 0, 1864, 116, 1, 0, 0, 0, 1865, 1866, 3, 1077, 538, 0, 1866, 1867, 3, 1081, 540, 0, 1867, 1868, 3, 1075, 537, 0, 1868, 1869, 3, 1065, 532, 0, 1869, 1870, 3, 1055, 527, 0, 1870, 1871, 3, 1051, 525, 0, 1871, 1872, 3, 1085, 542, 0, 1872, 118, 1, 0, 0, 0, 1873, 1874, 3, 1081, 540, 0, 1874, 1875, 3, 1087, 543, 0, 1875, 1876, 3, 1073, 536, 0, 1876, 1877, 3, 1085, 542, 0, 1877, 1878, 3, 1063, 531, 0, 1878, 1879, 3, 1071, 535, 0, 1879, 1880, 3, 1055, 527, 0, 1880, 120, 1, 0, 0, 0, 1881, 1882, 3, 1049, 524, 0, 1882, 1883, 3, 1081, 540, 0, 1883, 1884, 3, 1047, 523, 0, 1884, 1885, 3, 1073, 536, 0, 1885, 1886, 3, 1051, 525, 0, 1886, 1887, 3, 1061, 530, 0, 1887, 122, 1, 0, 0, 0, 1888, 1889, 3, 1085, 542, 0, 1889, 1890, 3, 1075, 537, 0, 1890, 1891, 3, 1067, 533, 0, 1891, 1892, 3, 1055, 527, 0, 1892, 1893, 3, 1073, 536, 0, 1893, 124, 1, 0, 0, 0, 1894, 1895, 3, 1061, 530, 0, 1895, 1896, 3, 1075, 537, 0, 1896, 1897, 3, 1083, 541, 0, 1897, 1898, 3, 1085, 542, 0, 1898, 126, 1, 0, 0, 0, 1899, 1900, 3, 1077, 538, 0, 1900, 1901, 3, 1075, 537, 0, 1901, 1902, 3, 1081, 540, 0, 1902, 1903, 3, 1085, 542, 0, 1903, 128, 1, 0, 0, 0, 1904, 1905, 3, 1083, 541, 0, 1905, 1906, 3, 1061, 530, 0, 1906, 1907, 3, 1075, 537, 0, 1907, 1908, 3, 1091, 545, 0, 1908, 130, 1, 0, 0, 0, 1909, 1910, 3, 1053, 526, 0, 1910, 1911, 3, 1055, 527, 0, 1911, 1912, 3, 1083, 541, 0, 1912, 1913, 3, 1051, 525, 0, 1913, 1914, 3, 1081, 540, 0, 1914, 1915, 3, 1063, 531, 0, 1915, 1916, 3, 1049, 524, 0, 1916, 1917, 3, 1055, 527, 0, 1917, 132, 1, 0, 0, 0, 1918, 1919, 3, 1087, 543, 0, 1919, 1920, 3, 1083, 541, 0, 1920, 1921, 3, 1055, 527, 0, 1921, 134, 1, 0, 0, 0, 1922, 1923, 3, 1063, 531, 0, 1923, 1924, 3, 1073, 536, 0, 1924, 1925, 3, 1085, 542, 0, 1925, 1926, 3, 1081, 540, 0, 1926, 1927, 3, 1075, 537, 0, 1927, 1928, 3, 1083, 541, 0, 1928, 1929, 3, 1077, 538, 0, 1929, 1930, 3, 1055, 527, 0, 1930, 1931, 3, 1051, 525, 0, 1931, 1932, 3, 1085, 542, 0, 1932, 136, 1, 0, 0, 0, 1933, 1934, 3, 1053, 526, 0, 1934, 1935, 3, 1055, 527, 0, 1935, 1936, 3, 1049, 524, 0, 1936, 1937, 3, 1087, 543, 0, 1937, 1938, 3, 1059, 529, 0, 1938, 138, 1, 0, 0, 0, 1939, 1940, 3, 1083, 541, 0, 1940, 1941, 3, 1055, 527, 0, 1941, 1942, 3, 1069, 534, 0, 1942, 1943, 3, 1055, 527, 0, 1943, 1944, 3, 1051, 525, 0, 1944, 1945, 3, 1085, 542, 0, 1945, 140, 1, 0, 0, 0, 1946, 1947, 3, 1057, 528, 0, 1947, 1948, 3, 1081, 540, 0, 1948, 1949, 3, 1075, 537, 0, 1949, 1950, 3, 1071, 535, 0, 1950, 142, 1, 0, 0, 0, 1951, 1952, 3, 1091, 545, 0, 1952, 1953, 3, 1061, 530, 0, 1953, 1954, 3, 1055, 527, 0, 1954, 1955, 3, 1081, 540, 0, 1955, 1956, 3, 1055, 527, 0, 1956, 144, 1, 0, 0, 0, 1957, 1958, 3, 1061, 530, 0, 1958, 1959, 3, 1047, 523, 0, 1959, 1960, 3, 1089, 544, 0, 1960, 1961, 3, 1063, 531, 0, 1961, 1962, 3, 1073, 536, 0, 1962, 1963, 3, 1059, 529, 0, 1963, 146, 1, 0, 0, 0, 1964, 1965, 3, 1075, 537, 0, 1965, 1966, 3, 1057, 528, 0, 1966, 1967, 3, 1057, 528, 0, 1967, 1968, 3, 1083, 541, 0, 1968, 1969, 3, 1055, 527, 0, 1969, 1970, 3, 1085, 542, 0, 1970, 148, 1, 0, 0, 0, 1971, 1972, 3, 1069, 534, 0, 1972, 1973, 3, 1063, 531, 0, 1973, 1974, 3, 1071, 535, 0, 1974, 1975, 3, 1063, 531, 0, 1975, 1976, 3, 1085, 542, 0, 1976, 150, 1, 0, 0, 0, 1977, 1978, 3, 1047, 523, 0, 1978, 1979, 3, 1083, 541, 0, 1979, 152, 1, 0, 0, 0, 1980, 1981, 3, 1081, 540, 0, 1981, 1982, 3, 1055, 527, 0, 1982, 1983, 3, 1085, 542, 0, 1983, 1984, 3, 1087, 543, 0, 1984, 1985, 3, 1081, 540, 0, 1985, 1986, 3, 1073, 536, 0, 1986, 1987, 3, 1083, 541, 0, 1987, 154, 1, 0, 0, 0, 1988, 1989, 3, 1081, 540, 0, 1989, 1990, 3, 1055, 527, 0, 1990, 1991, 3, 1085, 542, 0, 1991, 1992, 3, 1087, 543, 0, 1992, 1993, 3, 1081, 540, 0, 1993, 1994, 3, 1073, 536, 0, 1994, 1995, 3, 1063, 531, 0, 1995, 1996, 3, 1073, 536, 0, 1996, 1997, 3, 1059, 529, 0, 1997, 156, 1, 0, 0, 0, 1998, 1999, 3, 1051, 525, 0, 1999, 2000, 3, 1047, 523, 0, 2000, 2001, 3, 1083, 541, 0, 2001, 2002, 3, 1055, 527, 0, 2002, 158, 1, 0, 0, 0, 2003, 2004, 3, 1091, 545, 0, 2004, 2005, 3, 1061, 530, 0, 2005, 2006, 3, 1055, 527, 0, 2006, 2007, 3, 1073, 536, 0, 2007, 160, 1, 0, 0, 0, 2008, 2009, 3, 1085, 542, 0, 2009, 2010, 3, 1061, 530, 0, 2010, 2011, 3, 1055, 527, 0, 2011, 2012, 3, 1073, 536, 0, 2012, 162, 1, 0, 0, 0, 2013, 2014, 3, 1055, 527, 0, 2014, 2015, 3, 1069, 534, 0, 2015, 2016, 3, 1083, 541, 0, 2016, 2017, 3, 1055, 527, 0, 2017, 164, 1, 0, 0, 0, 2018, 2019, 3, 1055, 527, 0, 2019, 2020, 3, 1073, 536, 0, 2020, 2021, 3, 1053, 526, 0, 2021, 166, 1, 0, 0, 0, 2022, 2023, 3, 1053, 526, 0, 2023, 2024, 3, 1063, 531, 0, 2024, 2025, 3, 1083, 541, 0, 2025, 2026, 3, 1085, 542, 0, 2026, 2027, 3, 1063, 531, 0, 2027, 2028, 3, 1073, 536, 0, 2028, 2029, 3, 1051, 525, 0, 2029, 2030, 3, 1085, 542, 0, 2030, 168, 1, 0, 0, 0, 2031, 2032, 3, 1047, 523, 0, 2032, 2033, 3, 1069, 534, 0, 2033, 2034, 3, 1069, 534, 0, 2034, 170, 1, 0, 0, 0, 2035, 2036, 3, 1065, 532, 0, 2036, 2037, 3, 1075, 537, 0, 2037, 2038, 3, 1063, 531, 0, 2038, 2039, 3, 1073, 536, 0, 2039, 172, 1, 0, 0, 0, 2040, 2041, 3, 1069, 534, 0, 2041, 2042, 3, 1055, 527, 0, 2042, 2043, 3, 1057, 528, 0, 2043, 2044, 3, 1085, 542, 0, 2044, 174, 1, 0, 0, 0, 2045, 2046, 3, 1081, 540, 0, 2046, 2047, 3, 1063, 531, 0, 2047, 2048, 3, 1059, 529, 0, 2048, 2049, 3, 1061, 530, 0, 2049, 2050, 3, 1085, 542, 0, 2050, 176, 1, 0, 0, 0, 2051, 2052, 3, 1063, 531, 0, 2052, 2053, 3, 1073, 536, 0, 2053, 2054, 3, 1073, 536, 0, 2054, 2055, 3, 1055, 527, 0, 2055, 2056, 3, 1081, 540, 0, 2056, 178, 1, 0, 0, 0, 2057, 2058, 3, 1075, 537, 0, 2058, 2059, 3, 1087, 543, 0, 2059, 2060, 3, 1085, 542, 0, 2060, 2061, 3, 1055, 527, 0, 2061, 2062, 3, 1081, 540, 0, 2062, 180, 1, 0, 0, 0, 2063, 2064, 3, 1057, 528, 0, 2064, 2065, 3, 1087, 543, 0, 2065, 2066, 3, 1069, 534, 0, 2066, 2067, 3, 1069, 534, 0, 2067, 182, 1, 0, 0, 0, 2068, 2069, 3, 1051, 525, 0, 2069, 2070, 3, 1081, 540, 0, 2070, 2071, 3, 1075, 537, 0, 2071, 2072, 3, 1083, 541, 0, 2072, 2073, 3, 1083, 541, 0, 2073, 184, 1, 0, 0, 0, 2074, 2075, 3, 1075, 537, 0, 2075, 2076, 3, 1073, 536, 0, 2076, 186, 1, 0, 0, 0, 2077, 2078, 3, 1047, 523, 0, 2078, 2079, 3, 1083, 541, 0, 2079, 2080, 3, 1051, 525, 0, 2080, 188, 1, 0, 0, 0, 2081, 2082, 3, 1053, 526, 0, 2082, 2083, 3, 1055, 527, 0, 2083, 2084, 3, 1083, 541, 0, 2084, 2085, 3, 1051, 525, 0, 2085, 190, 1, 0, 0, 0, 2086, 2087, 3, 1049, 524, 0, 2087, 2088, 3, 1055, 527, 0, 2088, 2089, 3, 1059, 529, 0, 2089, 2090, 3, 1063, 531, 0, 2090, 2091, 3, 1073, 536, 0, 2091, 192, 1, 0, 0, 0, 2092, 2093, 3, 1053, 526, 0, 2093, 2094, 3, 1055, 527, 0, 2094, 2095, 3, 1051, 525, 0, 2095, 2096, 3, 1069, 534, 0, 2096, 2097, 3, 1047, 523, 0, 2097, 2098, 3, 1081, 540, 0, 2098, 2099, 3, 1055, 527, 0, 2099, 194, 1, 0, 0, 0, 2100, 2101, 3, 1051, 525, 0, 2101, 2102, 3, 1061, 530, 0, 2102, 2103, 3, 1047, 523, 0, 2103, 2104, 3, 1073, 536, 0, 2104, 2105, 3, 1059, 529, 0, 2105, 2106, 3, 1055, 527, 0, 2106, 196, 1, 0, 0, 0, 2107, 2108, 3, 1081, 540, 0, 2108, 2109, 3, 1055, 527, 0, 2109, 2110, 3, 1085, 542, 0, 2110, 2111, 3, 1081, 540, 0, 2111, 2112, 3, 1063, 531, 0, 2112, 2113, 3, 1055, 527, 0, 2113, 2114, 3, 1089, 544, 0, 2114, 2115, 3, 1055, 527, 0, 2115, 198, 1, 0, 0, 0, 2116, 2117, 3, 1053, 526, 0, 2117, 2118, 3, 1055, 527, 0, 2118, 2119, 3, 1069, 534, 0, 2119, 2120, 3, 1055, 527, 0, 2120, 2121, 3, 1085, 542, 0, 2121, 2122, 3, 1055, 527, 0, 2122, 200, 1, 0, 0, 0, 2123, 2124, 3, 1051, 525, 0, 2124, 2125, 3, 1075, 537, 0, 2125, 2126, 3, 1071, 535, 0, 2126, 2127, 3, 1071, 535, 0, 2127, 2128, 3, 1063, 531, 0, 2128, 2129, 3, 1085, 542, 0, 2129, 202, 1, 0, 0, 0, 2130, 2131, 3, 1081, 540, 0, 2131, 2132, 3, 1075, 537, 0, 2132, 2133, 3, 1069, 534, 0, 2133, 2134, 3, 1069, 534, 0, 2134, 2135, 3, 1049, 524, 0, 2135, 2136, 3, 1047, 523, 0, 2136, 2137, 3, 1051, 525, 0, 2137, 2138, 3, 1067, 533, 0, 2138, 204, 1, 0, 0, 0, 2139, 2140, 3, 1069, 534, 0, 2140, 2141, 3, 1075, 537, 0, 2141, 2142, 3, 1075, 537, 0, 2142, 2143, 3, 1077, 538, 0, 2143, 206, 1, 0, 0, 0, 2144, 2145, 3, 1091, 545, 0, 2145, 2146, 3, 1061, 530, 0, 2146, 2147, 3, 1063, 531, 0, 2147, 2148, 3, 1069, 534, 0, 2148, 2149, 3, 1055, 527, 0, 2149, 208, 1, 0, 0, 0, 2150, 2151, 3, 1063, 531, 0, 2151, 2152, 3, 1057, 528, 0, 2152, 210, 1, 0, 0, 0, 2153, 2154, 3, 1055, 527, 0, 2154, 2155, 3, 1069, 534, 0, 2155, 2156, 3, 1083, 541, 0, 2156, 2157, 3, 1063, 531, 0, 2157, 2158, 3, 1057, 528, 0, 2158, 212, 1, 0, 0, 0, 2159, 2160, 3, 1055, 527, 0, 2160, 2161, 3, 1069, 534, 0, 2161, 2162, 3, 1083, 541, 0, 2162, 2163, 3, 1055, 527, 0, 2163, 2164, 3, 1063, 531, 0, 2164, 2165, 3, 1057, 528, 0, 2165, 214, 1, 0, 0, 0, 2166, 2167, 3, 1051, 525, 0, 2167, 2168, 3, 1075, 537, 0, 2168, 2169, 3, 1073, 536, 0, 2169, 2170, 3, 1085, 542, 0, 2170, 2171, 3, 1063, 531, 0, 2171, 2172, 3, 1073, 536, 0, 2172, 2173, 3, 1087, 543, 0, 2173, 2174, 3, 1055, 527, 0, 2174, 216, 1, 0, 0, 0, 2175, 2176, 3, 1049, 524, 0, 2176, 2177, 3, 1081, 540, 0, 2177, 2178, 3, 1055, 527, 0, 2178, 2179, 3, 1047, 523, 0, 2179, 2180, 3, 1067, 533, 0, 2180, 218, 1, 0, 0, 0, 2181, 2182, 3, 1081, 540, 0, 2182, 2183, 3, 1055, 527, 0, 2183, 2184, 3, 1085, 542, 0, 2184, 2185, 3, 1087, 543, 0, 2185, 2186, 3, 1081, 540, 0, 2186, 2187, 3, 1073, 536, 0, 2187, 220, 1, 0, 0, 0, 2188, 2189, 3, 1085, 542, 0, 2189, 2190, 3, 1061, 530, 0, 2190, 2191, 3, 1081, 540, 0, 2191, 2192, 3, 1075, 537, 0, 2192, 2193, 3, 1091, 545, 0, 2193, 222, 1, 0, 0, 0, 2194, 2195, 3, 1069, 534, 0, 2195, 2196, 3, 1075, 537, 0, 2196, 2197, 3, 1059, 529, 0, 2197, 224, 1, 0, 0, 0, 2198, 2199, 3, 1051, 525, 0, 2199, 2200, 3, 1047, 523, 0, 2200, 2201, 3, 1069, 534, 0, 2201, 2202, 3, 1069, 534, 0, 2202, 226, 1, 0, 0, 0, 2203, 2204, 3, 1065, 532, 0, 2204, 2205, 3, 1047, 523, 0, 2205, 2206, 3, 1089, 544, 0, 2206, 2207, 3, 1047, 523, 0, 2207, 228, 1, 0, 0, 0, 2208, 2209, 3, 1065, 532, 0, 2209, 2210, 3, 1047, 523, 0, 2210, 2211, 3, 1089, 544, 0, 2211, 2212, 3, 1047, 523, 0, 2212, 2213, 3, 1083, 541, 0, 2213, 2214, 3, 1051, 525, 0, 2214, 2215, 3, 1081, 540, 0, 2215, 2216, 3, 1063, 531, 0, 2216, 2217, 3, 1077, 538, 0, 2217, 2218, 3, 1085, 542, 0, 2218, 230, 1, 0, 0, 0, 2219, 2220, 3, 1047, 523, 0, 2220, 2221, 3, 1051, 525, 0, 2221, 2222, 3, 1085, 542, 0, 2222, 2223, 3, 1063, 531, 0, 2223, 2224, 3, 1075, 537, 0, 2224, 2225, 3, 1073, 536, 0, 2225, 232, 1, 0, 0, 0, 2226, 2227, 3, 1047, 523, 0, 2227, 2228, 3, 1051, 525, 0, 2228, 2229, 3, 1085, 542, 0, 2229, 2230, 3, 1063, 531, 0, 2230, 2231, 3, 1075, 537, 0, 2231, 2232, 3, 1073, 536, 0, 2232, 2233, 3, 1083, 541, 0, 2233, 234, 1, 0, 0, 0, 2234, 2235, 3, 1051, 525, 0, 2235, 2236, 3, 1069, 534, 0, 2236, 2237, 3, 1075, 537, 0, 2237, 2238, 3, 1083, 541, 0, 2238, 2239, 3, 1055, 527, 0, 2239, 236, 1, 0, 0, 0, 2240, 2241, 3, 1073, 536, 0, 2241, 2242, 3, 1075, 537, 0, 2242, 2243, 3, 1053, 526, 0, 2243, 2244, 3, 1055, 527, 0, 2244, 238, 1, 0, 0, 0, 2245, 2246, 3, 1055, 527, 0, 2246, 2247, 3, 1089, 544, 0, 2247, 2248, 3, 1055, 527, 0, 2248, 2249, 3, 1073, 536, 0, 2249, 2250, 3, 1085, 542, 0, 2250, 2251, 3, 1083, 541, 0, 2251, 240, 1, 0, 0, 0, 2252, 2253, 3, 1061, 530, 0, 2253, 2254, 3, 1055, 527, 0, 2254, 2255, 3, 1047, 523, 0, 2255, 2256, 3, 1053, 526, 0, 2256, 242, 1, 0, 0, 0, 2257, 2258, 3, 1085, 542, 0, 2258, 2259, 3, 1047, 523, 0, 2259, 2260, 3, 1063, 531, 0, 2260, 2261, 3, 1069, 534, 0, 2261, 244, 1, 0, 0, 0, 2262, 2263, 3, 1057, 528, 0, 2263, 2264, 3, 1063, 531, 0, 2264, 2265, 3, 1073, 536, 0, 2265, 2266, 3, 1053, 526, 0, 2266, 246, 1, 0, 0, 0, 2267, 2268, 3, 1083, 541, 0, 2268, 2269, 3, 1075, 537, 0, 2269, 2270, 3, 1081, 540, 0, 2270, 2271, 3, 1085, 542, 0, 2271, 248, 1, 0, 0, 0, 2272, 2273, 3, 1087, 543, 0, 2273, 2274, 3, 1073, 536, 0, 2274, 2275, 3, 1063, 531, 0, 2275, 2276, 3, 1075, 537, 0, 2276, 2277, 3, 1073, 536, 0, 2277, 250, 1, 0, 0, 0, 2278, 2279, 3, 1063, 531, 0, 2279, 2280, 3, 1073, 536, 0, 2280, 2281, 3, 1085, 542, 0, 2281, 2282, 3, 1055, 527, 0, 2282, 2283, 3, 1081, 540, 0, 2283, 2284, 3, 1083, 541, 0, 2284, 2285, 3, 1055, 527, 0, 2285, 2286, 3, 1051, 525, 0, 2286, 2287, 3, 1085, 542, 0, 2287, 252, 1, 0, 0, 0, 2288, 2289, 3, 1083, 541, 0, 2289, 2290, 3, 1087, 543, 0, 2290, 2291, 3, 1049, 524, 0, 2291, 2292, 3, 1085, 542, 0, 2292, 2293, 3, 1081, 540, 0, 2293, 2294, 3, 1047, 523, 0, 2294, 2295, 3, 1051, 525, 0, 2295, 2296, 3, 1085, 542, 0, 2296, 254, 1, 0, 0, 0, 2297, 2298, 3, 1051, 525, 0, 2298, 2299, 3, 1075, 537, 0, 2299, 2300, 3, 1073, 536, 0, 2300, 2301, 3, 1085, 542, 0, 2301, 2302, 3, 1047, 523, 0, 2302, 2303, 3, 1063, 531, 0, 2303, 2304, 3, 1073, 536, 0, 2304, 2305, 3, 1083, 541, 0, 2305, 256, 1, 0, 0, 0, 2306, 2307, 3, 1047, 523, 0, 2307, 2308, 3, 1089, 544, 0, 2308, 2309, 3, 1055, 527, 0, 2309, 2310, 3, 1081, 540, 0, 2310, 2311, 3, 1047, 523, 0, 2311, 2312, 3, 1059, 529, 0, 2312, 2313, 3, 1055, 527, 0, 2313, 258, 1, 0, 0, 0, 2314, 2315, 3, 1071, 535, 0, 2315, 2316, 3, 1063, 531, 0, 2316, 2317, 3, 1073, 536, 0, 2317, 2318, 3, 1063, 531, 0, 2318, 2319, 3, 1071, 535, 0, 2319, 2320, 3, 1087, 543, 0, 2320, 2321, 3, 1071, 535, 0, 2321, 260, 1, 0, 0, 0, 2322, 2323, 3, 1071, 535, 0, 2323, 2324, 3, 1047, 523, 0, 2324, 2325, 3, 1093, 546, 0, 2325, 2326, 3, 1063, 531, 0, 2326, 2327, 3, 1071, 535, 0, 2327, 2328, 3, 1087, 543, 0, 2328, 2329, 3, 1071, 535, 0, 2329, 262, 1, 0, 0, 0, 2330, 2331, 3, 1069, 534, 0, 2331, 2332, 3, 1063, 531, 0, 2332, 2333, 3, 1083, 541, 0, 2333, 2334, 3, 1085, 542, 0, 2334, 264, 1, 0, 0, 0, 2335, 2336, 3, 1081, 540, 0, 2336, 2337, 3, 1055, 527, 0, 2337, 2338, 3, 1071, 535, 0, 2338, 2339, 3, 1075, 537, 0, 2339, 2340, 3, 1089, 544, 0, 2340, 2341, 3, 1055, 527, 0, 2341, 266, 1, 0, 0, 0, 2342, 2343, 3, 1055, 527, 0, 2343, 2344, 3, 1079, 539, 0, 2344, 2345, 3, 1087, 543, 0, 2345, 2346, 3, 1047, 523, 0, 2346, 2347, 3, 1069, 534, 0, 2347, 2348, 3, 1083, 541, 0, 2348, 268, 1, 0, 0, 0, 2349, 2350, 3, 1063, 531, 0, 2350, 2351, 3, 1073, 536, 0, 2351, 2352, 3, 1057, 528, 0, 2352, 2353, 3, 1075, 537, 0, 2353, 270, 1, 0, 0, 0, 2354, 2355, 3, 1091, 545, 0, 2355, 2356, 3, 1047, 523, 0, 2356, 2357, 3, 1081, 540, 0, 2357, 2358, 3, 1073, 536, 0, 2358, 2359, 3, 1063, 531, 0, 2359, 2360, 3, 1073, 536, 0, 2360, 2361, 3, 1059, 529, 0, 2361, 272, 1, 0, 0, 0, 2362, 2363, 3, 1085, 542, 0, 2363, 2364, 3, 1081, 540, 0, 2364, 2365, 3, 1047, 523, 0, 2365, 2366, 3, 1051, 525, 0, 2366, 2367, 3, 1055, 527, 0, 2367, 274, 1, 0, 0, 0, 2368, 2369, 3, 1051, 525, 0, 2369, 2370, 3, 1081, 540, 0, 2370, 2371, 3, 1063, 531, 0, 2371, 2372, 3, 1085, 542, 0, 2372, 2373, 3, 1063, 531, 0, 2373, 2374, 3, 1051, 525, 0, 2374, 2375, 3, 1047, 523, 0, 2375, 2376, 3, 1069, 534, 0, 2376, 276, 1, 0, 0, 0, 2377, 2378, 3, 1091, 545, 0, 2378, 2379, 3, 1063, 531, 0, 2379, 2380, 3, 1085, 542, 0, 2380, 2381, 3, 1061, 530, 0, 2381, 278, 1, 0, 0, 0, 2382, 2383, 3, 1055, 527, 0, 2383, 2384, 3, 1071, 535, 0, 2384, 2385, 3, 1077, 538, 0, 2385, 2386, 3, 1085, 542, 0, 2386, 2387, 3, 1095, 547, 0, 2387, 280, 1, 0, 0, 0, 2388, 2389, 3, 1075, 537, 0, 2389, 2390, 3, 1049, 524, 0, 2390, 2391, 3, 1065, 532, 0, 2391, 2392, 3, 1055, 527, 0, 2392, 2393, 3, 1051, 525, 0, 2393, 2394, 3, 1085, 542, 0, 2394, 282, 1, 0, 0, 0, 2395, 2396, 3, 1075, 537, 0, 2396, 2397, 3, 1049, 524, 0, 2397, 2398, 3, 1065, 532, 0, 2398, 2399, 3, 1055, 527, 0, 2399, 2400, 3, 1051, 525, 0, 2400, 2401, 3, 1085, 542, 0, 2401, 2402, 3, 1083, 541, 0, 2402, 284, 1, 0, 0, 0, 2403, 2404, 3, 1077, 538, 0, 2404, 2405, 3, 1047, 523, 0, 2405, 2406, 3, 1059, 529, 0, 2406, 2407, 3, 1055, 527, 0, 2407, 2408, 3, 1083, 541, 0, 2408, 286, 1, 0, 0, 0, 2409, 2410, 3, 1069, 534, 0, 2410, 2411, 3, 1047, 523, 0, 2411, 2412, 3, 1095, 547, 0, 2412, 2413, 3, 1075, 537, 0, 2413, 2414, 3, 1087, 543, 0, 2414, 2415, 3, 1085, 542, 0, 2415, 2416, 3, 1083, 541, 0, 2416, 288, 1, 0, 0, 0, 2417, 2418, 3, 1083, 541, 0, 2418, 2419, 3, 1073, 536, 0, 2419, 2420, 3, 1063, 531, 0, 2420, 2421, 3, 1077, 538, 0, 2421, 2422, 3, 1077, 538, 0, 2422, 2423, 3, 1055, 527, 0, 2423, 2424, 3, 1085, 542, 0, 2424, 2425, 3, 1083, 541, 0, 2425, 290, 1, 0, 0, 0, 2426, 2427, 3, 1073, 536, 0, 2427, 2428, 3, 1075, 537, 0, 2428, 2429, 3, 1085, 542, 0, 2429, 2430, 3, 1055, 527, 0, 2430, 2431, 3, 1049, 524, 0, 2431, 2432, 3, 1075, 537, 0, 2432, 2433, 3, 1075, 537, 0, 2433, 2434, 3, 1067, 533, 0, 2434, 2435, 3, 1083, 541, 0, 2435, 292, 1, 0, 0, 0, 2436, 2437, 3, 1077, 538, 0, 2437, 2438, 3, 1069, 534, 0, 2438, 2439, 3, 1047, 523, 0, 2439, 2440, 3, 1051, 525, 0, 2440, 2441, 3, 1055, 527, 0, 2441, 2442, 3, 1061, 530, 0, 2442, 2443, 3, 1075, 537, 0, 2443, 2444, 3, 1069, 534, 0, 2444, 2445, 3, 1053, 526, 0, 2445, 2446, 3, 1055, 527, 0, 2446, 2447, 3, 1081, 540, 0, 2447, 294, 1, 0, 0, 0, 2448, 2449, 3, 1083, 541, 0, 2449, 2450, 3, 1073, 536, 0, 2450, 2451, 3, 1063, 531, 0, 2451, 2452, 3, 1077, 538, 0, 2452, 2453, 3, 1077, 538, 0, 2453, 2454, 3, 1055, 527, 0, 2454, 2455, 3, 1085, 542, 0, 2455, 2456, 3, 1051, 525, 0, 2456, 2457, 3, 1047, 523, 0, 2457, 2458, 3, 1069, 534, 0, 2458, 2459, 3, 1069, 534, 0, 2459, 296, 1, 0, 0, 0, 2460, 2461, 3, 1069, 534, 0, 2461, 2462, 3, 1047, 523, 0, 2462, 2463, 3, 1095, 547, 0, 2463, 2464, 3, 1075, 537, 0, 2464, 2465, 3, 1087, 543, 0, 2465, 2466, 3, 1085, 542, 0, 2466, 2467, 3, 1059, 529, 0, 2467, 2468, 3, 1081, 540, 0, 2468, 2469, 3, 1063, 531, 0, 2469, 2470, 3, 1053, 526, 0, 2470, 298, 1, 0, 0, 0, 2471, 2472, 3, 1053, 526, 0, 2472, 2473, 3, 1047, 523, 0, 2473, 2474, 3, 1085, 542, 0, 2474, 2475, 3, 1047, 523, 0, 2475, 2476, 3, 1059, 529, 0, 2476, 2477, 3, 1081, 540, 0, 2477, 2478, 3, 1063, 531, 0, 2478, 2479, 3, 1053, 526, 0, 2479, 300, 1, 0, 0, 0, 2480, 2481, 3, 1053, 526, 0, 2481, 2482, 3, 1047, 523, 0, 2482, 2483, 3, 1085, 542, 0, 2483, 2484, 3, 1047, 523, 0, 2484, 2485, 3, 1089, 544, 0, 2485, 2486, 3, 1063, 531, 0, 2486, 2487, 3, 1055, 527, 0, 2487, 2488, 3, 1091, 545, 0, 2488, 302, 1, 0, 0, 0, 2489, 2490, 3, 1069, 534, 0, 2490, 2491, 3, 1063, 531, 0, 2491, 2492, 3, 1083, 541, 0, 2492, 2493, 3, 1085, 542, 0, 2493, 2494, 3, 1089, 544, 0, 2494, 2495, 3, 1063, 531, 0, 2495, 2496, 3, 1055, 527, 0, 2496, 2497, 3, 1091, 545, 0, 2497, 304, 1, 0, 0, 0, 2498, 2499, 3, 1059, 529, 0, 2499, 2500, 3, 1047, 523, 0, 2500, 2501, 3, 1069, 534, 0, 2501, 2502, 3, 1069, 534, 0, 2502, 2503, 3, 1055, 527, 0, 2503, 2504, 3, 1081, 540, 0, 2504, 2505, 3, 1095, 547, 0, 2505, 306, 1, 0, 0, 0, 2506, 2507, 3, 1051, 525, 0, 2507, 2508, 3, 1075, 537, 0, 2508, 2509, 3, 1073, 536, 0, 2509, 2510, 3, 1085, 542, 0, 2510, 2511, 3, 1047, 523, 0, 2511, 2512, 3, 1063, 531, 0, 2512, 2513, 3, 1073, 536, 0, 2513, 2514, 3, 1055, 527, 0, 2514, 2515, 3, 1081, 540, 0, 2515, 308, 1, 0, 0, 0, 2516, 2517, 3, 1081, 540, 0, 2517, 2518, 3, 1075, 537, 0, 2518, 2519, 3, 1091, 545, 0, 2519, 310, 1, 0, 0, 0, 2520, 2521, 3, 1063, 531, 0, 2521, 2522, 3, 1085, 542, 0, 2522, 2523, 3, 1055, 527, 0, 2523, 2524, 3, 1071, 535, 0, 2524, 312, 1, 0, 0, 0, 2525, 2526, 3, 1051, 525, 0, 2526, 2527, 3, 1075, 537, 0, 2527, 2528, 3, 1073, 536, 0, 2528, 2529, 3, 1085, 542, 0, 2529, 2530, 3, 1081, 540, 0, 2530, 2531, 3, 1075, 537, 0, 2531, 2532, 3, 1069, 534, 0, 2532, 2533, 3, 1049, 524, 0, 2533, 2534, 3, 1047, 523, 0, 2534, 2535, 3, 1081, 540, 0, 2535, 314, 1, 0, 0, 0, 2536, 2537, 3, 1083, 541, 0, 2537, 2538, 3, 1055, 527, 0, 2538, 2539, 3, 1047, 523, 0, 2539, 2540, 3, 1081, 540, 0, 2540, 2541, 3, 1051, 525, 0, 2541, 2542, 3, 1061, 530, 0, 2542, 316, 1, 0, 0, 0, 2543, 2544, 3, 1083, 541, 0, 2544, 2545, 3, 1055, 527, 0, 2545, 2546, 3, 1047, 523, 0, 2546, 2547, 3, 1081, 540, 0, 2547, 2548, 3, 1051, 525, 0, 2548, 2549, 3, 1061, 530, 0, 2549, 2550, 3, 1049, 524, 0, 2550, 2551, 3, 1047, 523, 0, 2551, 2552, 3, 1081, 540, 0, 2552, 318, 1, 0, 0, 0, 2553, 2554, 3, 1073, 536, 0, 2554, 2555, 3, 1047, 523, 0, 2555, 2556, 3, 1089, 544, 0, 2556, 2557, 3, 1063, 531, 0, 2557, 2558, 3, 1059, 529, 0, 2558, 2559, 3, 1047, 523, 0, 2559, 2560, 3, 1085, 542, 0, 2560, 2561, 3, 1063, 531, 0, 2561, 2562, 3, 1075, 537, 0, 2562, 2563, 3, 1073, 536, 0, 2563, 2564, 3, 1069, 534, 0, 2564, 2565, 3, 1063, 531, 0, 2565, 2566, 3, 1083, 541, 0, 2566, 2567, 3, 1085, 542, 0, 2567, 320, 1, 0, 0, 0, 2568, 2569, 3, 1047, 523, 0, 2569, 2570, 3, 1051, 525, 0, 2570, 2571, 3, 1085, 542, 0, 2571, 2572, 3, 1063, 531, 0, 2572, 2573, 3, 1075, 537, 0, 2573, 2574, 3, 1073, 536, 0, 2574, 2575, 3, 1049, 524, 0, 2575, 2576, 3, 1087, 543, 0, 2576, 2577, 3, 1085, 542, 0, 2577, 2578, 3, 1085, 542, 0, 2578, 2579, 3, 1075, 537, 0, 2579, 2580, 3, 1073, 536, 0, 2580, 322, 1, 0, 0, 0, 2581, 2582, 3, 1069, 534, 0, 2582, 2583, 3, 1063, 531, 0, 2583, 2584, 3, 1073, 536, 0, 2584, 2585, 3, 1067, 533, 0, 2585, 2586, 3, 1049, 524, 0, 2586, 2587, 3, 1087, 543, 0, 2587, 2588, 3, 1085, 542, 0, 2588, 2589, 3, 1085, 542, 0, 2589, 2590, 3, 1075, 537, 0, 2590, 2591, 3, 1073, 536, 0, 2591, 324, 1, 0, 0, 0, 2592, 2593, 3, 1049, 524, 0, 2593, 2594, 3, 1087, 543, 0, 2594, 2595, 3, 1085, 542, 0, 2595, 2596, 3, 1085, 542, 0, 2596, 2597, 3, 1075, 537, 0, 2597, 2598, 3, 1073, 536, 0, 2598, 326, 1, 0, 0, 0, 2599, 2600, 3, 1085, 542, 0, 2600, 2601, 3, 1063, 531, 0, 2601, 2602, 3, 1085, 542, 0, 2602, 2603, 3, 1069, 534, 0, 2603, 2604, 3, 1055, 527, 0, 2604, 328, 1, 0, 0, 0, 2605, 2606, 3, 1053, 526, 0, 2606, 2607, 3, 1095, 547, 0, 2607, 2608, 3, 1073, 536, 0, 2608, 2609, 3, 1047, 523, 0, 2609, 2610, 3, 1071, 535, 0, 2610, 2611, 3, 1063, 531, 0, 2611, 2612, 3, 1051, 525, 0, 2612, 2613, 3, 1085, 542, 0, 2613, 2614, 3, 1055, 527, 0, 2614, 2615, 3, 1093, 546, 0, 2615, 2616, 3, 1085, 542, 0, 2616, 330, 1, 0, 0, 0, 2617, 2618, 3, 1053, 526, 0, 2618, 2619, 3, 1095, 547, 0, 2619, 2620, 3, 1073, 536, 0, 2620, 2621, 3, 1047, 523, 0, 2621, 2622, 3, 1071, 535, 0, 2622, 2623, 3, 1063, 531, 0, 2623, 2624, 3, 1051, 525, 0, 2624, 332, 1, 0, 0, 0, 2625, 2626, 3, 1083, 541, 0, 2626, 2627, 3, 1085, 542, 0, 2627, 2628, 3, 1047, 523, 0, 2628, 2629, 3, 1085, 542, 0, 2629, 2630, 3, 1063, 531, 0, 2630, 2631, 3, 1051, 525, 0, 2631, 2632, 3, 1085, 542, 0, 2632, 2633, 3, 1055, 527, 0, 2633, 2634, 3, 1093, 546, 0, 2634, 2635, 3, 1085, 542, 0, 2635, 334, 1, 0, 0, 0, 2636, 2637, 3, 1069, 534, 0, 2637, 2638, 3, 1047, 523, 0, 2638, 2639, 3, 1049, 524, 0, 2639, 2640, 3, 1055, 527, 0, 2640, 2641, 3, 1069, 534, 0, 2641, 336, 1, 0, 0, 0, 2642, 2643, 3, 1085, 542, 0, 2643, 2644, 3, 1055, 527, 0, 2644, 2645, 3, 1093, 546, 0, 2645, 2646, 3, 1085, 542, 0, 2646, 2647, 3, 1049, 524, 0, 2647, 2648, 3, 1075, 537, 0, 2648, 2649, 3, 1093, 546, 0, 2649, 338, 1, 0, 0, 0, 2650, 2651, 3, 1085, 542, 0, 2651, 2652, 3, 1055, 527, 0, 2652, 2653, 3, 1093, 546, 0, 2653, 2654, 3, 1085, 542, 0, 2654, 2655, 3, 1047, 523, 0, 2655, 2656, 3, 1081, 540, 0, 2656, 2657, 3, 1055, 527, 0, 2657, 2658, 3, 1047, 523, 0, 2658, 340, 1, 0, 0, 0, 2659, 2660, 3, 1053, 526, 0, 2660, 2661, 3, 1047, 523, 0, 2661, 2662, 3, 1085, 542, 0, 2662, 2663, 3, 1055, 527, 0, 2663, 2664, 3, 1077, 538, 0, 2664, 2665, 3, 1063, 531, 0, 2665, 2666, 3, 1051, 525, 0, 2666, 2667, 3, 1067, 533, 0, 2667, 2668, 3, 1055, 527, 0, 2668, 2669, 3, 1081, 540, 0, 2669, 342, 1, 0, 0, 0, 2670, 2671, 3, 1081, 540, 0, 2671, 2672, 3, 1047, 523, 0, 2672, 2673, 3, 1053, 526, 0, 2673, 2674, 3, 1063, 531, 0, 2674, 2675, 3, 1075, 537, 0, 2675, 2676, 3, 1049, 524, 0, 2676, 2677, 3, 1087, 543, 0, 2677, 2678, 3, 1085, 542, 0, 2678, 2679, 3, 1085, 542, 0, 2679, 2680, 3, 1075, 537, 0, 2680, 2681, 3, 1073, 536, 0, 2681, 2682, 3, 1083, 541, 0, 2682, 344, 1, 0, 0, 0, 2683, 2684, 3, 1053, 526, 0, 2684, 2685, 3, 1081, 540, 0, 2685, 2686, 3, 1075, 537, 0, 2686, 2687, 3, 1077, 538, 0, 2687, 2688, 3, 1053, 526, 0, 2688, 2689, 3, 1075, 537, 0, 2689, 2690, 3, 1091, 545, 0, 2690, 2691, 3, 1073, 536, 0, 2691, 346, 1, 0, 0, 0, 2692, 2693, 3, 1051, 525, 0, 2693, 2694, 3, 1075, 537, 0, 2694, 2695, 3, 1071, 535, 0, 2695, 2696, 3, 1049, 524, 0, 2696, 2697, 3, 1075, 537, 0, 2697, 2698, 3, 1049, 524, 0, 2698, 2699, 3, 1075, 537, 0, 2699, 2700, 3, 1093, 546, 0, 2700, 348, 1, 0, 0, 0, 2701, 2702, 3, 1051, 525, 0, 2702, 2703, 3, 1061, 530, 0, 2703, 2704, 3, 1055, 527, 0, 2704, 2705, 3, 1051, 525, 0, 2705, 2706, 3, 1067, 533, 0, 2706, 2707, 3, 1049, 524, 0, 2707, 2708, 3, 1075, 537, 0, 2708, 2709, 3, 1093, 546, 0, 2709, 350, 1, 0, 0, 0, 2710, 2711, 3, 1081, 540, 0, 2711, 2712, 3, 1055, 527, 0, 2712, 2713, 3, 1057, 528, 0, 2713, 2714, 3, 1055, 527, 0, 2714, 2715, 3, 1081, 540, 0, 2715, 2716, 3, 1055, 527, 0, 2716, 2717, 3, 1073, 536, 0, 2717, 2718, 3, 1051, 525, 0, 2718, 2719, 3, 1055, 527, 0, 2719, 2720, 3, 1083, 541, 0, 2720, 2721, 3, 1055, 527, 0, 2721, 2722, 3, 1069, 534, 0, 2722, 2723, 3, 1055, 527, 0, 2723, 2724, 3, 1051, 525, 0, 2724, 2725, 3, 1085, 542, 0, 2725, 2726, 3, 1075, 537, 0, 2726, 2727, 3, 1081, 540, 0, 2727, 352, 1, 0, 0, 0, 2728, 2729, 3, 1063, 531, 0, 2729, 2730, 3, 1073, 536, 0, 2730, 2731, 3, 1077, 538, 0, 2731, 2732, 3, 1087, 543, 0, 2732, 2733, 3, 1085, 542, 0, 2733, 2734, 3, 1081, 540, 0, 2734, 2735, 3, 1055, 527, 0, 2735, 2736, 3, 1057, 528, 0, 2736, 2737, 3, 1055, 527, 0, 2737, 2738, 3, 1081, 540, 0, 2738, 2739, 3, 1055, 527, 0, 2739, 2740, 3, 1073, 536, 0, 2740, 2741, 3, 1051, 525, 0, 2741, 2742, 3, 1055, 527, 0, 2742, 2743, 3, 1083, 541, 0, 2743, 2744, 3, 1055, 527, 0, 2744, 2745, 3, 1085, 542, 0, 2745, 2746, 3, 1083, 541, 0, 2746, 2747, 3, 1055, 527, 0, 2747, 2748, 3, 1069, 534, 0, 2748, 2749, 3, 1055, 527, 0, 2749, 2750, 3, 1051, 525, 0, 2750, 2751, 3, 1085, 542, 0, 2751, 2752, 3, 1075, 537, 0, 2752, 2753, 3, 1081, 540, 0, 2753, 354, 1, 0, 0, 0, 2754, 2755, 3, 1057, 528, 0, 2755, 2756, 3, 1063, 531, 0, 2756, 2757, 3, 1069, 534, 0, 2757, 2758, 3, 1055, 527, 0, 2758, 2759, 3, 1063, 531, 0, 2759, 2760, 3, 1073, 536, 0, 2760, 2761, 3, 1077, 538, 0, 2761, 2762, 3, 1087, 543, 0, 2762, 2763, 3, 1085, 542, 0, 2763, 356, 1, 0, 0, 0, 2764, 2765, 3, 1063, 531, 0, 2765, 2766, 3, 1071, 535, 0, 2766, 2767, 3, 1047, 523, 0, 2767, 2768, 3, 1059, 529, 0, 2768, 2769, 3, 1055, 527, 0, 2769, 2770, 3, 1063, 531, 0, 2770, 2771, 3, 1073, 536, 0, 2771, 2772, 3, 1077, 538, 0, 2772, 2773, 3, 1087, 543, 0, 2773, 2774, 3, 1085, 542, 0, 2774, 358, 1, 0, 0, 0, 2775, 2776, 3, 1051, 525, 0, 2776, 2777, 3, 1087, 543, 0, 2777, 2778, 3, 1083, 541, 0, 2778, 2779, 3, 1085, 542, 0, 2779, 2780, 3, 1075, 537, 0, 2780, 2781, 3, 1071, 535, 0, 2781, 2782, 3, 1091, 545, 0, 2782, 2783, 3, 1063, 531, 0, 2783, 2784, 3, 1053, 526, 0, 2784, 2785, 3, 1059, 529, 0, 2785, 2786, 3, 1055, 527, 0, 2786, 2787, 3, 1085, 542, 0, 2787, 360, 1, 0, 0, 0, 2788, 2789, 3, 1077, 538, 0, 2789, 2790, 3, 1069, 534, 0, 2790, 2791, 3, 1087, 543, 0, 2791, 2792, 3, 1059, 529, 0, 2792, 2793, 3, 1059, 529, 0, 2793, 2794, 3, 1047, 523, 0, 2794, 2795, 3, 1049, 524, 0, 2795, 2796, 3, 1069, 534, 0, 2796, 2797, 3, 1055, 527, 0, 2797, 2798, 3, 1091, 545, 0, 2798, 2799, 3, 1063, 531, 0, 2799, 2800, 3, 1053, 526, 0, 2800, 2801, 3, 1059, 529, 0, 2801, 2802, 3, 1055, 527, 0, 2802, 2803, 3, 1085, 542, 0, 2803, 362, 1, 0, 0, 0, 2804, 2805, 3, 1085, 542, 0, 2805, 2806, 3, 1055, 527, 0, 2806, 2807, 3, 1093, 546, 0, 2807, 2808, 3, 1085, 542, 0, 2808, 2809, 3, 1057, 528, 0, 2809, 2810, 3, 1063, 531, 0, 2810, 2811, 3, 1069, 534, 0, 2811, 2812, 3, 1085, 542, 0, 2812, 2813, 3, 1055, 527, 0, 2813, 2814, 3, 1081, 540, 0, 2814, 364, 1, 0, 0, 0, 2815, 2816, 3, 1073, 536, 0, 2816, 2817, 3, 1087, 543, 0, 2817, 2818, 3, 1071, 535, 0, 2818, 2819, 3, 1049, 524, 0, 2819, 2820, 3, 1055, 527, 0, 2820, 2821, 3, 1081, 540, 0, 2821, 2822, 3, 1057, 528, 0, 2822, 2823, 3, 1063, 531, 0, 2823, 2824, 3, 1069, 534, 0, 2824, 2825, 3, 1085, 542, 0, 2825, 2826, 3, 1055, 527, 0, 2826, 2827, 3, 1081, 540, 0, 2827, 366, 1, 0, 0, 0, 2828, 2829, 3, 1053, 526, 0, 2829, 2830, 3, 1081, 540, 0, 2830, 2831, 3, 1075, 537, 0, 2831, 2832, 3, 1077, 538, 0, 2832, 2833, 3, 1053, 526, 0, 2833, 2834, 3, 1075, 537, 0, 2834, 2835, 3, 1091, 545, 0, 2835, 2836, 3, 1073, 536, 0, 2836, 2837, 3, 1057, 528, 0, 2837, 2838, 3, 1063, 531, 0, 2838, 2839, 3, 1069, 534, 0, 2839, 2840, 3, 1085, 542, 0, 2840, 2841, 3, 1055, 527, 0, 2841, 2842, 3, 1081, 540, 0, 2842, 368, 1, 0, 0, 0, 2843, 2844, 3, 1053, 526, 0, 2844, 2845, 3, 1047, 523, 0, 2845, 2846, 3, 1085, 542, 0, 2846, 2847, 3, 1055, 527, 0, 2847, 2848, 3, 1057, 528, 0, 2848, 2849, 3, 1063, 531, 0, 2849, 2850, 3, 1069, 534, 0, 2850, 2851, 3, 1085, 542, 0, 2851, 2852, 3, 1055, 527, 0, 2852, 2853, 3, 1081, 540, 0, 2853, 370, 1, 0, 0, 0, 2854, 2855, 3, 1057, 528, 0, 2855, 2856, 3, 1063, 531, 0, 2856, 2857, 3, 1069, 534, 0, 2857, 2858, 3, 1085, 542, 0, 2858, 2859, 3, 1055, 527, 0, 2859, 2860, 3, 1081, 540, 0, 2860, 372, 1, 0, 0, 0, 2861, 2862, 3, 1091, 545, 0, 2862, 2863, 3, 1063, 531, 0, 2863, 2864, 3, 1053, 526, 0, 2864, 2865, 3, 1059, 529, 0, 2865, 2866, 3, 1055, 527, 0, 2866, 2867, 3, 1085, 542, 0, 2867, 374, 1, 0, 0, 0, 2868, 2869, 3, 1091, 545, 0, 2869, 2870, 3, 1063, 531, 0, 2870, 2871, 3, 1053, 526, 0, 2871, 2872, 3, 1059, 529, 0, 2872, 2873, 3, 1055, 527, 0, 2873, 2874, 3, 1085, 542, 0, 2874, 2875, 3, 1083, 541, 0, 2875, 376, 1, 0, 0, 0, 2876, 2877, 3, 1051, 525, 0, 2877, 2878, 3, 1047, 523, 0, 2878, 2879, 3, 1077, 538, 0, 2879, 2880, 3, 1085, 542, 0, 2880, 2881, 3, 1063, 531, 0, 2881, 2882, 3, 1075, 537, 0, 2882, 2883, 3, 1073, 536, 0, 2883, 378, 1, 0, 0, 0, 2884, 2885, 3, 1063, 531, 0, 2885, 2886, 3, 1051, 525, 0, 2886, 2887, 3, 1075, 537, 0, 2887, 2888, 3, 1073, 536, 0, 2888, 380, 1, 0, 0, 0, 2889, 2890, 3, 1085, 542, 0, 2890, 2891, 3, 1075, 537, 0, 2891, 2892, 3, 1075, 537, 0, 2892, 2893, 3, 1069, 534, 0, 2893, 2894, 3, 1085, 542, 0, 2894, 2895, 3, 1063, 531, 0, 2895, 2896, 3, 1077, 538, 0, 2896, 382, 1, 0, 0, 0, 2897, 2898, 3, 1053, 526, 0, 2898, 2899, 3, 1047, 523, 0, 2899, 2900, 3, 1085, 542, 0, 2900, 2901, 3, 1047, 523, 0, 2901, 2902, 3, 1083, 541, 0, 2902, 2903, 3, 1075, 537, 0, 2903, 2904, 3, 1087, 543, 0, 2904, 2905, 3, 1081, 540, 0, 2905, 2906, 3, 1051, 525, 0, 2906, 2907, 3, 1055, 527, 0, 2907, 384, 1, 0, 0, 0, 2908, 2909, 3, 1083, 541, 0, 2909, 2910, 3, 1075, 537, 0, 2910, 2911, 3, 1087, 543, 0, 2911, 2912, 3, 1081, 540, 0, 2912, 2913, 3, 1051, 525, 0, 2913, 2914, 3, 1055, 527, 0, 2914, 386, 1, 0, 0, 0, 2915, 2916, 3, 1083, 541, 0, 2916, 2917, 3, 1055, 527, 0, 2917, 2918, 3, 1069, 534, 0, 2918, 2919, 3, 1055, 527, 0, 2919, 2920, 3, 1051, 525, 0, 2920, 2921, 3, 1085, 542, 0, 2921, 2922, 3, 1063, 531, 0, 2922, 2923, 3, 1075, 537, 0, 2923, 2924, 3, 1073, 536, 0, 2924, 388, 1, 0, 0, 0, 2925, 2926, 3, 1057, 528, 0, 2926, 2927, 3, 1075, 537, 0, 2927, 2928, 3, 1075, 537, 0, 2928, 2929, 3, 1085, 542, 0, 2929, 2930, 3, 1055, 527, 0, 2930, 2931, 3, 1081, 540, 0, 2931, 390, 1, 0, 0, 0, 2932, 2933, 3, 1061, 530, 0, 2933, 2934, 3, 1055, 527, 0, 2934, 2935, 3, 1047, 523, 0, 2935, 2936, 3, 1053, 526, 0, 2936, 2937, 3, 1055, 527, 0, 2937, 2938, 3, 1081, 540, 0, 2938, 392, 1, 0, 0, 0, 2939, 2940, 3, 1051, 525, 0, 2940, 2941, 3, 1075, 537, 0, 2941, 2942, 3, 1073, 536, 0, 2942, 2943, 3, 1085, 542, 0, 2943, 2944, 3, 1055, 527, 0, 2944, 2945, 3, 1073, 536, 0, 2945, 2946, 3, 1085, 542, 0, 2946, 394, 1, 0, 0, 0, 2947, 2948, 3, 1081, 540, 0, 2948, 2949, 3, 1055, 527, 0, 2949, 2950, 3, 1073, 536, 0, 2950, 2951, 3, 1053, 526, 0, 2951, 2952, 3, 1055, 527, 0, 2952, 2953, 3, 1081, 540, 0, 2953, 2954, 3, 1071, 535, 0, 2954, 2955, 3, 1075, 537, 0, 2955, 2956, 3, 1053, 526, 0, 2956, 2957, 3, 1055, 527, 0, 2957, 396, 1, 0, 0, 0, 2958, 2959, 3, 1049, 524, 0, 2959, 2960, 3, 1063, 531, 0, 2960, 2961, 3, 1073, 536, 0, 2961, 2962, 3, 1053, 526, 0, 2962, 2963, 3, 1083, 541, 0, 2963, 398, 1, 0, 0, 0, 2964, 2965, 3, 1047, 523, 0, 2965, 2966, 3, 1085, 542, 0, 2966, 2967, 3, 1085, 542, 0, 2967, 2968, 3, 1081, 540, 0, 2968, 400, 1, 0, 0, 0, 2969, 2970, 3, 1051, 525, 0, 2970, 2971, 3, 1075, 537, 0, 2971, 2972, 3, 1073, 536, 0, 2972, 2973, 3, 1085, 542, 0, 2973, 2974, 3, 1055, 527, 0, 2974, 2975, 3, 1073, 536, 0, 2975, 2976, 3, 1085, 542, 0, 2976, 2977, 3, 1077, 538, 0, 2977, 2978, 3, 1047, 523, 0, 2978, 2979, 3, 1081, 540, 0, 2979, 2980, 3, 1047, 523, 0, 2980, 2981, 3, 1071, 535, 0, 2981, 2982, 3, 1083, 541, 0, 2982, 402, 1, 0, 0, 0, 2983, 2984, 3, 1051, 525, 0, 2984, 2985, 3, 1047, 523, 0, 2985, 2986, 3, 1077, 538, 0, 2986, 2987, 3, 1085, 542, 0, 2987, 2988, 3, 1063, 531, 0, 2988, 2989, 3, 1075, 537, 0, 2989, 2990, 3, 1073, 536, 0, 2990, 2991, 3, 1077, 538, 0, 2991, 2992, 3, 1047, 523, 0, 2992, 2993, 3, 1081, 540, 0, 2993, 2994, 3, 1047, 523, 0, 2994, 2995, 3, 1071, 535, 0, 2995, 2996, 3, 1083, 541, 0, 2996, 404, 1, 0, 0, 0, 2997, 2998, 3, 1077, 538, 0, 2998, 2999, 3, 1047, 523, 0, 2999, 3000, 3, 1081, 540, 0, 3000, 3001, 3, 1047, 523, 0, 3001, 3002, 3, 1071, 535, 0, 3002, 3003, 3, 1083, 541, 0, 3003, 406, 1, 0, 0, 0, 3004, 3005, 3, 1089, 544, 0, 3005, 3006, 3, 1047, 523, 0, 3006, 3007, 3, 1081, 540, 0, 3007, 3008, 3, 1063, 531, 0, 3008, 3009, 3, 1047, 523, 0, 3009, 3010, 3, 1049, 524, 0, 3010, 3011, 3, 1069, 534, 0, 3011, 3012, 3, 1055, 527, 0, 3012, 3013, 3, 1083, 541, 0, 3013, 408, 1, 0, 0, 0, 3014, 3015, 3, 1053, 526, 0, 3015, 3016, 3, 1055, 527, 0, 3016, 3017, 3, 1083, 541, 0, 3017, 3018, 3, 1067, 533, 0, 3018, 3019, 3, 1085, 542, 0, 3019, 3020, 3, 1075, 537, 0, 3020, 3021, 3, 1077, 538, 0, 3021, 3022, 3, 1091, 545, 0, 3022, 3023, 3, 1063, 531, 0, 3023, 3024, 3, 1053, 526, 0, 3024, 3025, 3, 1085, 542, 0, 3025, 3026, 3, 1061, 530, 0, 3026, 410, 1, 0, 0, 0, 3027, 3028, 3, 1085, 542, 0, 3028, 3029, 3, 1047, 523, 0, 3029, 3030, 3, 1049, 524, 0, 3030, 3031, 3, 1069, 534, 0, 3031, 3032, 3, 1055, 527, 0, 3032, 3033, 3, 1085, 542, 0, 3033, 3034, 3, 1091, 545, 0, 3034, 3035, 3, 1063, 531, 0, 3035, 3036, 3, 1053, 526, 0, 3036, 3037, 3, 1085, 542, 0, 3037, 3038, 3, 1061, 530, 0, 3038, 412, 1, 0, 0, 0, 3039, 3040, 3, 1077, 538, 0, 3040, 3041, 3, 1061, 530, 0, 3041, 3042, 3, 1075, 537, 0, 3042, 3043, 3, 1073, 536, 0, 3043, 3044, 3, 1055, 527, 0, 3044, 3045, 3, 1091, 545, 0, 3045, 3046, 3, 1063, 531, 0, 3046, 3047, 3, 1053, 526, 0, 3047, 3048, 3, 1085, 542, 0, 3048, 3049, 3, 1061, 530, 0, 3049, 414, 1, 0, 0, 0, 3050, 3051, 3, 1051, 525, 0, 3051, 3052, 3, 1069, 534, 0, 3052, 3053, 3, 1047, 523, 0, 3053, 3054, 3, 1083, 541, 0, 3054, 3055, 3, 1083, 541, 0, 3055, 416, 1, 0, 0, 0, 3056, 3057, 3, 1083, 541, 0, 3057, 3058, 3, 1085, 542, 0, 3058, 3059, 3, 1095, 547, 0, 3059, 3060, 3, 1069, 534, 0, 3060, 3061, 3, 1055, 527, 0, 3061, 418, 1, 0, 0, 0, 3062, 3063, 3, 1049, 524, 0, 3063, 3064, 3, 1087, 543, 0, 3064, 3065, 3, 1085, 542, 0, 3065, 3066, 3, 1085, 542, 0, 3066, 3067, 3, 1075, 537, 0, 3067, 3068, 3, 1073, 536, 0, 3068, 3069, 3, 1083, 541, 0, 3069, 3070, 3, 1085, 542, 0, 3070, 3071, 3, 1095, 547, 0, 3071, 3072, 3, 1069, 534, 0, 3072, 3073, 3, 1055, 527, 0, 3073, 420, 1, 0, 0, 0, 3074, 3075, 3, 1053, 526, 0, 3075, 3076, 3, 1055, 527, 0, 3076, 3077, 3, 1083, 541, 0, 3077, 3078, 3, 1063, 531, 0, 3078, 3079, 3, 1059, 529, 0, 3079, 3080, 3, 1073, 536, 0, 3080, 422, 1, 0, 0, 0, 3081, 3082, 3, 1077, 538, 0, 3082, 3083, 3, 1081, 540, 0, 3083, 3084, 3, 1075, 537, 0, 3084, 3085, 3, 1077, 538, 0, 3085, 3086, 3, 1055, 527, 0, 3086, 3087, 3, 1081, 540, 0, 3087, 3088, 3, 1085, 542, 0, 3088, 3089, 3, 1063, 531, 0, 3089, 3090, 3, 1055, 527, 0, 3090, 3091, 3, 1083, 541, 0, 3091, 424, 1, 0, 0, 0, 3092, 3093, 3, 1053, 526, 0, 3093, 3094, 3, 1055, 527, 0, 3094, 3095, 3, 1083, 541, 0, 3095, 3096, 3, 1063, 531, 0, 3096, 3097, 3, 1059, 529, 0, 3097, 3098, 3, 1073, 536, 0, 3098, 3099, 3, 1077, 538, 0, 3099, 3100, 3, 1081, 540, 0, 3100, 3101, 3, 1075, 537, 0, 3101, 3102, 3, 1077, 538, 0, 3102, 3103, 3, 1055, 527, 0, 3103, 3104, 3, 1081, 540, 0, 3104, 3105, 3, 1085, 542, 0, 3105, 3106, 3, 1063, 531, 0, 3106, 3107, 3, 1055, 527, 0, 3107, 3108, 3, 1083, 541, 0, 3108, 426, 1, 0, 0, 0, 3109, 3110, 3, 1083, 541, 0, 3110, 3111, 3, 1085, 542, 0, 3111, 3112, 3, 1095, 547, 0, 3112, 3113, 3, 1069, 534, 0, 3113, 3114, 3, 1063, 531, 0, 3114, 3115, 3, 1073, 536, 0, 3115, 3116, 3, 1059, 529, 0, 3116, 428, 1, 0, 0, 0, 3117, 3118, 3, 1051, 525, 0, 3118, 3119, 3, 1069, 534, 0, 3119, 3120, 3, 1055, 527, 0, 3120, 3121, 3, 1047, 523, 0, 3121, 3122, 3, 1081, 540, 0, 3122, 430, 1, 0, 0, 0, 3123, 3124, 3, 1091, 545, 0, 3124, 3125, 3, 1063, 531, 0, 3125, 3126, 3, 1053, 526, 0, 3126, 3127, 3, 1085, 542, 0, 3127, 3128, 3, 1061, 530, 0, 3128, 432, 1, 0, 0, 0, 3129, 3130, 3, 1061, 530, 0, 3130, 3131, 3, 1055, 527, 0, 3131, 3132, 3, 1063, 531, 0, 3132, 3133, 3, 1059, 529, 0, 3133, 3134, 3, 1061, 530, 0, 3134, 3135, 3, 1085, 542, 0, 3135, 434, 1, 0, 0, 0, 3136, 3137, 3, 1047, 523, 0, 3137, 3138, 3, 1087, 543, 0, 3138, 3139, 3, 1085, 542, 0, 3139, 3140, 3, 1075, 537, 0, 3140, 3141, 3, 1057, 528, 0, 3141, 3142, 3, 1063, 531, 0, 3142, 3143, 3, 1069, 534, 0, 3143, 3144, 3, 1069, 534, 0, 3144, 436, 1, 0, 0, 0, 3145, 3146, 3, 1087, 543, 0, 3146, 3147, 3, 1081, 540, 0, 3147, 3148, 3, 1069, 534, 0, 3148, 438, 1, 0, 0, 0, 3149, 3150, 3, 1057, 528, 0, 3150, 3151, 3, 1075, 537, 0, 3151, 3152, 3, 1069, 534, 0, 3152, 3153, 3, 1053, 526, 0, 3153, 3154, 3, 1055, 527, 0, 3154, 3155, 3, 1081, 540, 0, 3155, 440, 1, 0, 0, 0, 3156, 3157, 3, 1077, 538, 0, 3157, 3158, 3, 1047, 523, 0, 3158, 3159, 3, 1083, 541, 0, 3159, 3160, 3, 1083, 541, 0, 3160, 3161, 3, 1063, 531, 0, 3161, 3162, 3, 1073, 536, 0, 3162, 3163, 3, 1059, 529, 0, 3163, 442, 1, 0, 0, 0, 3164, 3165, 3, 1051, 525, 0, 3165, 3166, 3, 1075, 537, 0, 3166, 3167, 3, 1073, 536, 0, 3167, 3168, 3, 1085, 542, 0, 3168, 3169, 3, 1055, 527, 0, 3169, 3170, 3, 1093, 546, 0, 3170, 3171, 3, 1085, 542, 0, 3171, 444, 1, 0, 0, 0, 3172, 3173, 3, 1055, 527, 0, 3173, 3174, 3, 1053, 526, 0, 3174, 3175, 3, 1063, 531, 0, 3175, 3176, 3, 1085, 542, 0, 3176, 3177, 3, 1047, 523, 0, 3177, 3178, 3, 1049, 524, 0, 3178, 3179, 3, 1069, 534, 0, 3179, 3180, 3, 1055, 527, 0, 3180, 446, 1, 0, 0, 0, 3181, 3182, 3, 1081, 540, 0, 3182, 3183, 3, 1055, 527, 0, 3183, 3184, 3, 1047, 523, 0, 3184, 3185, 3, 1053, 526, 0, 3185, 3186, 3, 1075, 537, 0, 3186, 3187, 3, 1073, 536, 0, 3187, 3188, 3, 1069, 534, 0, 3188, 3189, 3, 1095, 547, 0, 3189, 448, 1, 0, 0, 0, 3190, 3191, 3, 1047, 523, 0, 3191, 3192, 3, 1085, 542, 0, 3192, 3193, 3, 1085, 542, 0, 3193, 3194, 3, 1081, 540, 0, 3194, 3195, 3, 1063, 531, 0, 3195, 3196, 3, 1049, 524, 0, 3196, 3197, 3, 1087, 543, 0, 3197, 3198, 3, 1085, 542, 0, 3198, 3199, 3, 1055, 527, 0, 3199, 3200, 3, 1083, 541, 0, 3200, 450, 1, 0, 0, 0, 3201, 3202, 3, 1057, 528, 0, 3202, 3203, 3, 1063, 531, 0, 3203, 3204, 3, 1069, 534, 0, 3204, 3205, 3, 1085, 542, 0, 3205, 3206, 3, 1055, 527, 0, 3206, 3207, 3, 1081, 540, 0, 3207, 3208, 3, 1085, 542, 0, 3208, 3209, 3, 1095, 547, 0, 3209, 3210, 3, 1077, 538, 0, 3210, 3211, 3, 1055, 527, 0, 3211, 452, 1, 0, 0, 0, 3212, 3213, 3, 1063, 531, 0, 3213, 3214, 3, 1071, 535, 0, 3214, 3215, 3, 1047, 523, 0, 3215, 3216, 3, 1059, 529, 0, 3216, 3217, 3, 1055, 527, 0, 3217, 454, 1, 0, 0, 0, 3218, 3219, 3, 1051, 525, 0, 3219, 3220, 3, 1075, 537, 0, 3220, 3221, 3, 1069, 534, 0, 3221, 3222, 3, 1069, 534, 0, 3222, 3223, 3, 1055, 527, 0, 3223, 3224, 3, 1051, 525, 0, 3224, 3225, 3, 1085, 542, 0, 3225, 3226, 3, 1063, 531, 0, 3226, 3227, 3, 1075, 537, 0, 3227, 3228, 3, 1073, 536, 0, 3228, 456, 1, 0, 0, 0, 3229, 3230, 3, 1083, 541, 0, 3230, 3231, 3, 1085, 542, 0, 3231, 3232, 3, 1047, 523, 0, 3232, 3233, 3, 1085, 542, 0, 3233, 3234, 3, 1063, 531, 0, 3234, 3235, 3, 1051, 525, 0, 3235, 3236, 3, 1063, 531, 0, 3236, 3237, 3, 1071, 535, 0, 3237, 3238, 3, 1047, 523, 0, 3238, 3239, 3, 1059, 529, 0, 3239, 3240, 3, 1055, 527, 0, 3240, 458, 1, 0, 0, 0, 3241, 3242, 3, 1053, 526, 0, 3242, 3243, 3, 1095, 547, 0, 3243, 3244, 3, 1073, 536, 0, 3244, 3245, 3, 1047, 523, 0, 3245, 3246, 3, 1071, 535, 0, 3246, 3247, 3, 1063, 531, 0, 3247, 3248, 3, 1051, 525, 0, 3248, 3249, 3, 1063, 531, 0, 3249, 3250, 3, 1071, 535, 0, 3250, 3251, 3, 1047, 523, 0, 3251, 3252, 3, 1059, 529, 0, 3252, 3253, 3, 1055, 527, 0, 3253, 460, 1, 0, 0, 0, 3254, 3255, 3, 1051, 525, 0, 3255, 3256, 3, 1087, 543, 0, 3256, 3257, 3, 1083, 541, 0, 3257, 3258, 3, 1085, 542, 0, 3258, 3259, 3, 1075, 537, 0, 3259, 3260, 3, 1071, 535, 0, 3260, 3261, 3, 1051, 525, 0, 3261, 3262, 3, 1075, 537, 0, 3262, 3263, 3, 1073, 536, 0, 3263, 3264, 3, 1085, 542, 0, 3264, 3265, 3, 1047, 523, 0, 3265, 3266, 3, 1063, 531, 0, 3266, 3267, 3, 1073, 536, 0, 3267, 3268, 3, 1055, 527, 0, 3268, 3269, 3, 1081, 540, 0, 3269, 462, 1, 0, 0, 0, 3270, 3271, 3, 1085, 542, 0, 3271, 3272, 3, 1047, 523, 0, 3272, 3273, 3, 1049, 524, 0, 3273, 3274, 3, 1051, 525, 0, 3274, 3275, 3, 1075, 537, 0, 3275, 3276, 3, 1073, 536, 0, 3276, 3277, 3, 1085, 542, 0, 3277, 3278, 3, 1047, 523, 0, 3278, 3279, 3, 1063, 531, 0, 3279, 3280, 3, 1073, 536, 0, 3280, 3281, 3, 1055, 527, 0, 3281, 3282, 3, 1081, 540, 0, 3282, 464, 1, 0, 0, 0, 3283, 3284, 3, 1085, 542, 0, 3284, 3285, 3, 1047, 523, 0, 3285, 3286, 3, 1049, 524, 0, 3286, 3287, 3, 1077, 538, 0, 3287, 3288, 3, 1047, 523, 0, 3288, 3289, 3, 1059, 529, 0, 3289, 3290, 3, 1055, 527, 0, 3290, 466, 1, 0, 0, 0, 3291, 3292, 3, 1059, 529, 0, 3292, 3293, 3, 1081, 540, 0, 3293, 3294, 3, 1075, 537, 0, 3294, 3295, 3, 1087, 543, 0, 3295, 3296, 3, 1077, 538, 0, 3296, 3297, 3, 1049, 524, 0, 3297, 3298, 3, 1075, 537, 0, 3298, 3299, 3, 1093, 546, 0, 3299, 468, 1, 0, 0, 0, 3300, 3301, 3, 1089, 544, 0, 3301, 3302, 3, 1063, 531, 0, 3302, 3303, 3, 1083, 541, 0, 3303, 3304, 3, 1063, 531, 0, 3304, 3305, 3, 1049, 524, 0, 3305, 3306, 3, 1069, 534, 0, 3306, 3307, 3, 1055, 527, 0, 3307, 470, 1, 0, 0, 0, 3308, 3309, 3, 1083, 541, 0, 3309, 3310, 3, 1047, 523, 0, 3310, 3311, 3, 1089, 544, 0, 3311, 3312, 3, 1055, 527, 0, 3312, 3313, 3, 1051, 525, 0, 3313, 3314, 3, 1061, 530, 0, 3314, 3315, 3, 1047, 523, 0, 3315, 3316, 3, 1073, 536, 0, 3316, 3317, 3, 1059, 529, 0, 3317, 3318, 3, 1055, 527, 0, 3318, 3319, 3, 1083, 541, 0, 3319, 472, 1, 0, 0, 0, 3320, 3321, 3, 1083, 541, 0, 3321, 3322, 3, 1047, 523, 0, 3322, 3323, 3, 1089, 544, 0, 3323, 3324, 3, 1055, 527, 0, 3324, 3325, 5, 95, 0, 0, 3325, 3326, 3, 1051, 525, 0, 3326, 3327, 3, 1061, 530, 0, 3327, 3328, 3, 1047, 523, 0, 3328, 3329, 3, 1073, 536, 0, 3329, 3330, 3, 1059, 529, 0, 3330, 3331, 3, 1055, 527, 0, 3331, 3332, 3, 1083, 541, 0, 3332, 474, 1, 0, 0, 0, 3333, 3334, 3, 1051, 525, 0, 3334, 3335, 3, 1047, 523, 0, 3335, 3336, 3, 1073, 536, 0, 3336, 3337, 3, 1051, 525, 0, 3337, 3338, 3, 1055, 527, 0, 3338, 3339, 3, 1069, 534, 0, 3339, 3340, 5, 95, 0, 0, 3340, 3341, 3, 1051, 525, 0, 3341, 3342, 3, 1061, 530, 0, 3342, 3343, 3, 1047, 523, 0, 3343, 3344, 3, 1073, 536, 0, 3344, 3345, 3, 1059, 529, 0, 3345, 3346, 3, 1055, 527, 0, 3346, 3347, 3, 1083, 541, 0, 3347, 476, 1, 0, 0, 0, 3348, 3349, 3, 1051, 525, 0, 3349, 3350, 3, 1069, 534, 0, 3350, 3351, 3, 1075, 537, 0, 3351, 3352, 3, 1083, 541, 0, 3352, 3353, 3, 1055, 527, 0, 3353, 3354, 5, 95, 0, 0, 3354, 3355, 3, 1077, 538, 0, 3355, 3356, 3, 1047, 523, 0, 3356, 3357, 3, 1059, 529, 0, 3357, 3358, 3, 1055, 527, 0, 3358, 478, 1, 0, 0, 0, 3359, 3360, 3, 1083, 541, 0, 3360, 3361, 3, 1061, 530, 0, 3361, 3362, 3, 1075, 537, 0, 3362, 3363, 3, 1091, 545, 0, 3363, 3364, 5, 95, 0, 0, 3364, 3365, 3, 1077, 538, 0, 3365, 3366, 3, 1047, 523, 0, 3366, 3367, 3, 1059, 529, 0, 3367, 3368, 3, 1055, 527, 0, 3368, 480, 1, 0, 0, 0, 3369, 3370, 3, 1053, 526, 0, 3370, 3371, 3, 1055, 527, 0, 3371, 3372, 3, 1069, 534, 0, 3372, 3373, 3, 1055, 527, 0, 3373, 3374, 3, 1085, 542, 0, 3374, 3375, 3, 1055, 527, 0, 3375, 3376, 5, 95, 0, 0, 3376, 3377, 3, 1047, 523, 0, 3377, 3378, 3, 1051, 525, 0, 3378, 3379, 3, 1085, 542, 0, 3379, 3380, 3, 1063, 531, 0, 3380, 3381, 3, 1075, 537, 0, 3381, 3382, 3, 1073, 536, 0, 3382, 482, 1, 0, 0, 0, 3383, 3384, 3, 1053, 526, 0, 3384, 3385, 3, 1055, 527, 0, 3385, 3386, 3, 1069, 534, 0, 3386, 3387, 3, 1055, 527, 0, 3387, 3388, 3, 1085, 542, 0, 3388, 3389, 3, 1055, 527, 0, 3389, 3390, 5, 95, 0, 0, 3390, 3391, 3, 1075, 537, 0, 3391, 3392, 3, 1049, 524, 0, 3392, 3393, 3, 1065, 532, 0, 3393, 3394, 3, 1055, 527, 0, 3394, 3395, 3, 1051, 525, 0, 3395, 3396, 3, 1085, 542, 0, 3396, 484, 1, 0, 0, 0, 3397, 3398, 3, 1051, 525, 0, 3398, 3399, 3, 1081, 540, 0, 3399, 3400, 3, 1055, 527, 0, 3400, 3401, 3, 1047, 523, 0, 3401, 3402, 3, 1085, 542, 0, 3402, 3403, 3, 1055, 527, 0, 3403, 3404, 5, 95, 0, 0, 3404, 3405, 3, 1075, 537, 0, 3405, 3406, 3, 1049, 524, 0, 3406, 3407, 3, 1065, 532, 0, 3407, 3408, 3, 1055, 527, 0, 3408, 3409, 3, 1051, 525, 0, 3409, 3410, 3, 1085, 542, 0, 3410, 486, 1, 0, 0, 0, 3411, 3412, 3, 1051, 525, 0, 3412, 3413, 3, 1047, 523, 0, 3413, 3414, 3, 1069, 534, 0, 3414, 3415, 3, 1069, 534, 0, 3415, 3416, 5, 95, 0, 0, 3416, 3417, 3, 1071, 535, 0, 3417, 3418, 3, 1063, 531, 0, 3418, 3419, 3, 1051, 525, 0, 3419, 3420, 3, 1081, 540, 0, 3420, 3421, 3, 1075, 537, 0, 3421, 3422, 3, 1057, 528, 0, 3422, 3423, 3, 1069, 534, 0, 3423, 3424, 3, 1075, 537, 0, 3424, 3425, 3, 1091, 545, 0, 3425, 488, 1, 0, 0, 0, 3426, 3427, 3, 1051, 525, 0, 3427, 3428, 3, 1047, 523, 0, 3428, 3429, 3, 1069, 534, 0, 3429, 3430, 3, 1069, 534, 0, 3430, 3431, 5, 95, 0, 0, 3431, 3432, 3, 1073, 536, 0, 3432, 3433, 3, 1047, 523, 0, 3433, 3434, 3, 1073, 536, 0, 3434, 3435, 3, 1075, 537, 0, 3435, 3436, 3, 1057, 528, 0, 3436, 3437, 3, 1069, 534, 0, 3437, 3438, 3, 1075, 537, 0, 3438, 3439, 3, 1091, 545, 0, 3439, 490, 1, 0, 0, 0, 3440, 3441, 3, 1075, 537, 0, 3441, 3442, 3, 1077, 538, 0, 3442, 3443, 3, 1055, 527, 0, 3443, 3444, 3, 1073, 536, 0, 3444, 3445, 5, 95, 0, 0, 3445, 3446, 3, 1069, 534, 0, 3446, 3447, 3, 1063, 531, 0, 3447, 3448, 3, 1073, 536, 0, 3448, 3449, 3, 1067, 533, 0, 3449, 492, 1, 0, 0, 0, 3450, 3451, 3, 1083, 541, 0, 3451, 3452, 3, 1063, 531, 0, 3452, 3453, 3, 1059, 529, 0, 3453, 3454, 3, 1073, 536, 0, 3454, 3455, 5, 95, 0, 0, 3455, 3456, 3, 1075, 537, 0, 3456, 3457, 3, 1087, 543, 0, 3457, 3458, 3, 1085, 542, 0, 3458, 494, 1, 0, 0, 0, 3459, 3460, 3, 1051, 525, 0, 3460, 3461, 3, 1047, 523, 0, 3461, 3462, 3, 1073, 536, 0, 3462, 3463, 3, 1051, 525, 0, 3463, 3464, 3, 1055, 527, 0, 3464, 3465, 3, 1069, 534, 0, 3465, 496, 1, 0, 0, 0, 3466, 3467, 3, 1077, 538, 0, 3467, 3468, 3, 1081, 540, 0, 3468, 3469, 3, 1063, 531, 0, 3469, 3470, 3, 1071, 535, 0, 3470, 3471, 3, 1047, 523, 0, 3471, 3472, 3, 1081, 540, 0, 3472, 3473, 3, 1095, 547, 0, 3473, 498, 1, 0, 0, 0, 3474, 3475, 3, 1083, 541, 0, 3475, 3476, 3, 1087, 543, 0, 3476, 3477, 3, 1051, 525, 0, 3477, 3478, 3, 1051, 525, 0, 3478, 3479, 3, 1055, 527, 0, 3479, 3480, 3, 1083, 541, 0, 3480, 3481, 3, 1083, 541, 0, 3481, 500, 1, 0, 0, 0, 3482, 3483, 3, 1053, 526, 0, 3483, 3484, 3, 1047, 523, 0, 3484, 3485, 3, 1073, 536, 0, 3485, 3486, 3, 1059, 529, 0, 3486, 3487, 3, 1055, 527, 0, 3487, 3488, 3, 1081, 540, 0, 3488, 502, 1, 0, 0, 0, 3489, 3490, 3, 1091, 545, 0, 3490, 3491, 3, 1047, 523, 0, 3491, 3492, 3, 1081, 540, 0, 3492, 3493, 3, 1073, 536, 0, 3493, 3494, 3, 1063, 531, 0, 3494, 3495, 3, 1073, 536, 0, 3495, 3496, 3, 1059, 529, 0, 3496, 504, 1, 0, 0, 0, 3497, 3498, 3, 1063, 531, 0, 3498, 3499, 3, 1073, 536, 0, 3499, 3500, 3, 1057, 528, 0, 3500, 3501, 3, 1075, 537, 0, 3501, 506, 1, 0, 0, 0, 3502, 3503, 3, 1085, 542, 0, 3503, 3504, 3, 1055, 527, 0, 3504, 3505, 3, 1071, 535, 0, 3505, 3506, 3, 1077, 538, 0, 3506, 3507, 3, 1069, 534, 0, 3507, 3508, 3, 1047, 523, 0, 3508, 3509, 3, 1085, 542, 0, 3509, 3510, 3, 1055, 527, 0, 3510, 508, 1, 0, 0, 0, 3511, 3512, 3, 1075, 537, 0, 3512, 3513, 3, 1073, 536, 0, 3513, 3514, 3, 1051, 525, 0, 3514, 3515, 3, 1069, 534, 0, 3515, 3516, 3, 1063, 531, 0, 3516, 3517, 3, 1051, 525, 0, 3517, 3518, 3, 1067, 533, 0, 3518, 510, 1, 0, 0, 0, 3519, 3520, 3, 1075, 537, 0, 3520, 3521, 3, 1073, 536, 0, 3521, 3522, 3, 1051, 525, 0, 3522, 3523, 3, 1061, 530, 0, 3523, 3524, 3, 1047, 523, 0, 3524, 3525, 3, 1073, 536, 0, 3525, 3526, 3, 1059, 529, 0, 3526, 3527, 3, 1055, 527, 0, 3527, 512, 1, 0, 0, 0, 3528, 3529, 3, 1085, 542, 0, 3529, 3530, 3, 1047, 523, 0, 3530, 3531, 3, 1049, 524, 0, 3531, 3532, 3, 1063, 531, 0, 3532, 3533, 3, 1073, 536, 0, 3533, 3534, 3, 1053, 526, 0, 3534, 3535, 3, 1055, 527, 0, 3535, 3536, 3, 1093, 546, 0, 3536, 514, 1, 0, 0, 0, 3537, 3538, 3, 1061, 530, 0, 3538, 3539, 5, 49, 0, 0, 3539, 516, 1, 0, 0, 0, 3540, 3541, 3, 1061, 530, 0, 3541, 3542, 5, 50, 0, 0, 3542, 518, 1, 0, 0, 0, 3543, 3544, 3, 1061, 530, 0, 3544, 3545, 5, 51, 0, 0, 3545, 520, 1, 0, 0, 0, 3546, 3547, 3, 1061, 530, 0, 3547, 3548, 5, 52, 0, 0, 3548, 522, 1, 0, 0, 0, 3549, 3550, 3, 1061, 530, 0, 3550, 3551, 5, 53, 0, 0, 3551, 524, 1, 0, 0, 0, 3552, 3553, 3, 1061, 530, 0, 3553, 3554, 5, 54, 0, 0, 3554, 526, 1, 0, 0, 0, 3555, 3556, 3, 1077, 538, 0, 3556, 3557, 3, 1047, 523, 0, 3557, 3558, 3, 1081, 540, 0, 3558, 3559, 3, 1047, 523, 0, 3559, 3560, 3, 1059, 529, 0, 3560, 3561, 3, 1081, 540, 0, 3561, 3562, 3, 1047, 523, 0, 3562, 3563, 3, 1077, 538, 0, 3563, 3564, 3, 1061, 530, 0, 3564, 528, 1, 0, 0, 0, 3565, 3566, 3, 1083, 541, 0, 3566, 3567, 3, 1085, 542, 0, 3567, 3568, 3, 1081, 540, 0, 3568, 3569, 3, 1063, 531, 0, 3569, 3570, 3, 1073, 536, 0, 3570, 3571, 3, 1059, 529, 0, 3571, 530, 1, 0, 0, 0, 3572, 3573, 3, 1063, 531, 0, 3573, 3574, 3, 1073, 536, 0, 3574, 3575, 3, 1085, 542, 0, 3575, 3576, 3, 1055, 527, 0, 3576, 3577, 3, 1059, 529, 0, 3577, 3578, 3, 1055, 527, 0, 3578, 3579, 3, 1081, 540, 0, 3579, 532, 1, 0, 0, 0, 3580, 3581, 3, 1069, 534, 0, 3581, 3582, 3, 1075, 537, 0, 3582, 3583, 3, 1073, 536, 0, 3583, 3584, 3, 1059, 529, 0, 3584, 534, 1, 0, 0, 0, 3585, 3586, 3, 1053, 526, 0, 3586, 3587, 3, 1055, 527, 0, 3587, 3588, 3, 1051, 525, 0, 3588, 3589, 3, 1063, 531, 0, 3589, 3590, 3, 1071, 535, 0, 3590, 3591, 3, 1047, 523, 0, 3591, 3592, 3, 1069, 534, 0, 3592, 536, 1, 0, 0, 0, 3593, 3594, 3, 1049, 524, 0, 3594, 3595, 3, 1075, 537, 0, 3595, 3596, 3, 1075, 537, 0, 3596, 3597, 3, 1069, 534, 0, 3597, 3598, 3, 1055, 527, 0, 3598, 3599, 3, 1047, 523, 0, 3599, 3600, 3, 1073, 536, 0, 3600, 538, 1, 0, 0, 0, 3601, 3602, 3, 1053, 526, 0, 3602, 3603, 3, 1047, 523, 0, 3603, 3604, 3, 1085, 542, 0, 3604, 3605, 3, 1055, 527, 0, 3605, 3606, 3, 1085, 542, 0, 3606, 3607, 3, 1063, 531, 0, 3607, 3608, 3, 1071, 535, 0, 3608, 3609, 3, 1055, 527, 0, 3609, 540, 1, 0, 0, 0, 3610, 3611, 3, 1053, 526, 0, 3611, 3612, 3, 1047, 523, 0, 3612, 3613, 3, 1085, 542, 0, 3613, 3614, 3, 1055, 527, 0, 3614, 542, 1, 0, 0, 0, 3615, 3616, 3, 1047, 523, 0, 3616, 3617, 3, 1087, 543, 0, 3617, 3618, 3, 1085, 542, 0, 3618, 3619, 3, 1075, 537, 0, 3619, 3620, 3, 1073, 536, 0, 3620, 3621, 3, 1087, 543, 0, 3621, 3622, 3, 1071, 535, 0, 3622, 3623, 3, 1049, 524, 0, 3623, 3624, 3, 1055, 527, 0, 3624, 3625, 3, 1081, 540, 0, 3625, 544, 1, 0, 0, 0, 3626, 3627, 3, 1049, 524, 0, 3627, 3628, 3, 1063, 531, 0, 3628, 3629, 3, 1073, 536, 0, 3629, 3630, 3, 1047, 523, 0, 3630, 3631, 3, 1081, 540, 0, 3631, 3632, 3, 1095, 547, 0, 3632, 546, 1, 0, 0, 0, 3633, 3634, 3, 1061, 530, 0, 3634, 3635, 3, 1047, 523, 0, 3635, 3636, 3, 1083, 541, 0, 3636, 3637, 3, 1061, 530, 0, 3637, 3638, 3, 1055, 527, 0, 3638, 3639, 3, 1053, 526, 0, 3639, 3640, 3, 1083, 541, 0, 3640, 3641, 3, 1085, 542, 0, 3641, 3642, 3, 1081, 540, 0, 3642, 3643, 3, 1063, 531, 0, 3643, 3644, 3, 1073, 536, 0, 3644, 3645, 3, 1059, 529, 0, 3645, 548, 1, 0, 0, 0, 3646, 3647, 3, 1051, 525, 0, 3647, 3648, 3, 1087, 543, 0, 3648, 3649, 3, 1081, 540, 0, 3649, 3650, 3, 1081, 540, 0, 3650, 3651, 3, 1055, 527, 0, 3651, 3652, 3, 1073, 536, 0, 3652, 3653, 3, 1051, 525, 0, 3653, 3654, 3, 1095, 547, 0, 3654, 550, 1, 0, 0, 0, 3655, 3656, 3, 1057, 528, 0, 3656, 3657, 3, 1069, 534, 0, 3657, 3658, 3, 1075, 537, 0, 3658, 3659, 3, 1047, 523, 0, 3659, 3660, 3, 1085, 542, 0, 3660, 552, 1, 0, 0, 0, 3661, 3662, 3, 1083, 541, 0, 3662, 3663, 3, 1085, 542, 0, 3663, 3664, 3, 1081, 540, 0, 3664, 3665, 3, 1063, 531, 0, 3665, 3666, 3, 1073, 536, 0, 3666, 3667, 3, 1059, 529, 0, 3667, 3668, 3, 1085, 542, 0, 3668, 3669, 3, 1055, 527, 0, 3669, 3670, 3, 1071, 535, 0, 3670, 3671, 3, 1077, 538, 0, 3671, 3672, 3, 1069, 534, 0, 3672, 3673, 3, 1047, 523, 0, 3673, 3674, 3, 1085, 542, 0, 3674, 3675, 3, 1055, 527, 0, 3675, 554, 1, 0, 0, 0, 3676, 3677, 3, 1055, 527, 0, 3677, 3678, 3, 1073, 536, 0, 3678, 3679, 3, 1087, 543, 0, 3679, 3680, 3, 1071, 535, 0, 3680, 556, 1, 0, 0, 0, 3681, 3682, 3, 1051, 525, 0, 3682, 3683, 3, 1075, 537, 0, 3683, 3684, 3, 1087, 543, 0, 3684, 3685, 3, 1073, 536, 0, 3685, 3686, 3, 1085, 542, 0, 3686, 558, 1, 0, 0, 0, 3687, 3688, 3, 1083, 541, 0, 3688, 3689, 3, 1087, 543, 0, 3689, 3690, 3, 1071, 535, 0, 3690, 560, 1, 0, 0, 0, 3691, 3692, 3, 1047, 523, 0, 3692, 3693, 3, 1089, 544, 0, 3693, 3694, 3, 1059, 529, 0, 3694, 562, 1, 0, 0, 0, 3695, 3696, 3, 1071, 535, 0, 3696, 3697, 3, 1063, 531, 0, 3697, 3698, 3, 1073, 536, 0, 3698, 564, 1, 0, 0, 0, 3699, 3700, 3, 1071, 535, 0, 3700, 3701, 3, 1047, 523, 0, 3701, 3702, 3, 1093, 546, 0, 3702, 566, 1, 0, 0, 0, 3703, 3704, 3, 1069, 534, 0, 3704, 3705, 3, 1055, 527, 0, 3705, 3706, 3, 1073, 536, 0, 3706, 3707, 3, 1059, 529, 0, 3707, 3708, 3, 1085, 542, 0, 3708, 3709, 3, 1061, 530, 0, 3709, 568, 1, 0, 0, 0, 3710, 3711, 3, 1085, 542, 0, 3711, 3712, 3, 1081, 540, 0, 3712, 3713, 3, 1063, 531, 0, 3713, 3714, 3, 1071, 535, 0, 3714, 570, 1, 0, 0, 0, 3715, 3716, 3, 1051, 525, 0, 3716, 3717, 3, 1075, 537, 0, 3717, 3718, 3, 1047, 523, 0, 3718, 3719, 3, 1069, 534, 0, 3719, 3720, 3, 1055, 527, 0, 3720, 3721, 3, 1083, 541, 0, 3721, 3722, 3, 1051, 525, 0, 3722, 3723, 3, 1055, 527, 0, 3723, 572, 1, 0, 0, 0, 3724, 3725, 3, 1051, 525, 0, 3725, 3726, 3, 1047, 523, 0, 3726, 3727, 3, 1083, 541, 0, 3727, 3728, 3, 1085, 542, 0, 3728, 574, 1, 0, 0, 0, 3729, 3730, 3, 1047, 523, 0, 3730, 3731, 3, 1073, 536, 0, 3731, 3732, 3, 1053, 526, 0, 3732, 576, 1, 0, 0, 0, 3733, 3734, 3, 1075, 537, 0, 3734, 3735, 3, 1081, 540, 0, 3735, 578, 1, 0, 0, 0, 3736, 3737, 3, 1073, 536, 0, 3737, 3738, 3, 1075, 537, 0, 3738, 3739, 3, 1085, 542, 0, 3739, 580, 1, 0, 0, 0, 3740, 3741, 3, 1073, 536, 0, 3741, 3742, 3, 1087, 543, 0, 3742, 3743, 3, 1069, 534, 0, 3743, 3744, 3, 1069, 534, 0, 3744, 582, 1, 0, 0, 0, 3745, 3746, 3, 1063, 531, 0, 3746, 3747, 3, 1073, 536, 0, 3747, 584, 1, 0, 0, 0, 3748, 3749, 3, 1049, 524, 0, 3749, 3750, 3, 1055, 527, 0, 3750, 3751, 3, 1085, 542, 0, 3751, 3752, 3, 1091, 545, 0, 3752, 3753, 3, 1055, 527, 0, 3753, 3754, 3, 1055, 527, 0, 3754, 3755, 3, 1073, 536, 0, 3755, 586, 1, 0, 0, 0, 3756, 3757, 3, 1069, 534, 0, 3757, 3758, 3, 1063, 531, 0, 3758, 3759, 3, 1067, 533, 0, 3759, 3760, 3, 1055, 527, 0, 3760, 588, 1, 0, 0, 0, 3761, 3762, 3, 1071, 535, 0, 3762, 3763, 3, 1047, 523, 0, 3763, 3764, 3, 1085, 542, 0, 3764, 3765, 3, 1051, 525, 0, 3765, 3766, 3, 1061, 530, 0, 3766, 590, 1, 0, 0, 0, 3767, 3768, 3, 1055, 527, 0, 3768, 3769, 3, 1093, 546, 0, 3769, 3770, 3, 1063, 531, 0, 3770, 3771, 3, 1083, 541, 0, 3771, 3772, 3, 1085, 542, 0, 3772, 3773, 3, 1083, 541, 0, 3773, 592, 1, 0, 0, 0, 3774, 3775, 3, 1087, 543, 0, 3775, 3776, 3, 1073, 536, 0, 3776, 3777, 3, 1063, 531, 0, 3777, 3778, 3, 1079, 539, 0, 3778, 3779, 3, 1087, 543, 0, 3779, 3780, 3, 1055, 527, 0, 3780, 594, 1, 0, 0, 0, 3781, 3782, 3, 1053, 526, 0, 3782, 3783, 3, 1055, 527, 0, 3783, 3784, 3, 1057, 528, 0, 3784, 3785, 3, 1047, 523, 0, 3785, 3786, 3, 1087, 543, 0, 3786, 3787, 3, 1069, 534, 0, 3787, 3788, 3, 1085, 542, 0, 3788, 596, 1, 0, 0, 0, 3789, 3790, 3, 1085, 542, 0, 3790, 3791, 3, 1081, 540, 0, 3791, 3792, 3, 1087, 543, 0, 3792, 3793, 3, 1055, 527, 0, 3793, 598, 1, 0, 0, 0, 3794, 3795, 3, 1057, 528, 0, 3795, 3796, 3, 1047, 523, 0, 3796, 3797, 3, 1069, 534, 0, 3797, 3798, 3, 1083, 541, 0, 3798, 3799, 3, 1055, 527, 0, 3799, 600, 1, 0, 0, 0, 3800, 3801, 3, 1089, 544, 0, 3801, 3802, 3, 1047, 523, 0, 3802, 3803, 3, 1069, 534, 0, 3803, 3804, 3, 1063, 531, 0, 3804, 3805, 3, 1053, 526, 0, 3805, 3806, 3, 1047, 523, 0, 3806, 3807, 3, 1085, 542, 0, 3807, 3808, 3, 1063, 531, 0, 3808, 3809, 3, 1075, 537, 0, 3809, 3810, 3, 1073, 536, 0, 3810, 602, 1, 0, 0, 0, 3811, 3812, 3, 1057, 528, 0, 3812, 3813, 3, 1055, 527, 0, 3813, 3814, 3, 1055, 527, 0, 3814, 3815, 3, 1053, 526, 0, 3815, 3816, 3, 1049, 524, 0, 3816, 3817, 3, 1047, 523, 0, 3817, 3818, 3, 1051, 525, 0, 3818, 3819, 3, 1067, 533, 0, 3819, 604, 1, 0, 0, 0, 3820, 3821, 3, 1081, 540, 0, 3821, 3822, 3, 1087, 543, 0, 3822, 3823, 3, 1069, 534, 0, 3823, 3824, 3, 1055, 527, 0, 3824, 606, 1, 0, 0, 0, 3825, 3826, 3, 1081, 540, 0, 3826, 3827, 3, 1055, 527, 0, 3827, 3828, 3, 1079, 539, 0, 3828, 3829, 3, 1087, 543, 0, 3829, 3830, 3, 1063, 531, 0, 3830, 3831, 3, 1081, 540, 0, 3831, 3832, 3, 1055, 527, 0, 3832, 3833, 3, 1053, 526, 0, 3833, 608, 1, 0, 0, 0, 3834, 3835, 3, 1055, 527, 0, 3835, 3836, 3, 1081, 540, 0, 3836, 3837, 3, 1081, 540, 0, 3837, 3838, 3, 1075, 537, 0, 3838, 3839, 3, 1081, 540, 0, 3839, 610, 1, 0, 0, 0, 3840, 3841, 3, 1081, 540, 0, 3841, 3842, 3, 1047, 523, 0, 3842, 3843, 3, 1063, 531, 0, 3843, 3844, 3, 1083, 541, 0, 3844, 3845, 3, 1055, 527, 0, 3845, 612, 1, 0, 0, 0, 3846, 3847, 3, 1081, 540, 0, 3847, 3848, 3, 1047, 523, 0, 3848, 3849, 3, 1073, 536, 0, 3849, 3850, 3, 1059, 529, 0, 3850, 3851, 3, 1055, 527, 0, 3851, 614, 1, 0, 0, 0, 3852, 3853, 3, 1081, 540, 0, 3853, 3854, 3, 1055, 527, 0, 3854, 3855, 3, 1059, 529, 0, 3855, 3856, 3, 1055, 527, 0, 3856, 3857, 3, 1093, 546, 0, 3857, 616, 1, 0, 0, 0, 3858, 3859, 3, 1077, 538, 0, 3859, 3860, 3, 1047, 523, 0, 3860, 3861, 3, 1085, 542, 0, 3861, 3862, 3, 1085, 542, 0, 3862, 3863, 3, 1055, 527, 0, 3863, 3864, 3, 1081, 540, 0, 3864, 3865, 3, 1073, 536, 0, 3865, 618, 1, 0, 0, 0, 3866, 3867, 3, 1055, 527, 0, 3867, 3868, 3, 1093, 546, 0, 3868, 3869, 3, 1077, 538, 0, 3869, 3870, 3, 1081, 540, 0, 3870, 3871, 3, 1055, 527, 0, 3871, 3872, 3, 1083, 541, 0, 3872, 3873, 3, 1083, 541, 0, 3873, 3874, 3, 1063, 531, 0, 3874, 3875, 3, 1075, 537, 0, 3875, 3876, 3, 1073, 536, 0, 3876, 620, 1, 0, 0, 0, 3877, 3878, 3, 1093, 546, 0, 3878, 3879, 3, 1077, 538, 0, 3879, 3880, 3, 1047, 523, 0, 3880, 3881, 3, 1085, 542, 0, 3881, 3882, 3, 1061, 530, 0, 3882, 622, 1, 0, 0, 0, 3883, 3884, 3, 1051, 525, 0, 3884, 3885, 3, 1075, 537, 0, 3885, 3886, 3, 1073, 536, 0, 3886, 3887, 3, 1083, 541, 0, 3887, 3888, 3, 1085, 542, 0, 3888, 3889, 3, 1081, 540, 0, 3889, 3890, 3, 1047, 523, 0, 3890, 3891, 3, 1063, 531, 0, 3891, 3892, 3, 1073, 536, 0, 3892, 3893, 3, 1085, 542, 0, 3893, 624, 1, 0, 0, 0, 3894, 3895, 3, 1051, 525, 0, 3895, 3896, 3, 1047, 523, 0, 3896, 3897, 3, 1069, 534, 0, 3897, 3898, 3, 1051, 525, 0, 3898, 3899, 3, 1087, 543, 0, 3899, 3900, 3, 1069, 534, 0, 3900, 3901, 3, 1047, 523, 0, 3901, 3902, 3, 1085, 542, 0, 3902, 3903, 3, 1055, 527, 0, 3903, 3904, 3, 1053, 526, 0, 3904, 626, 1, 0, 0, 0, 3905, 3906, 3, 1081, 540, 0, 3906, 3907, 3, 1055, 527, 0, 3907, 3908, 3, 1083, 541, 0, 3908, 3909, 3, 1085, 542, 0, 3909, 628, 1, 0, 0, 0, 3910, 3911, 3, 1083, 541, 0, 3911, 3912, 3, 1055, 527, 0, 3912, 3913, 3, 1081, 540, 0, 3913, 3914, 3, 1089, 544, 0, 3914, 3915, 3, 1063, 531, 0, 3915, 3916, 3, 1051, 525, 0, 3916, 3917, 3, 1055, 527, 0, 3917, 630, 1, 0, 0, 0, 3918, 3919, 3, 1083, 541, 0, 3919, 3920, 3, 1055, 527, 0, 3920, 3921, 3, 1081, 540, 0, 3921, 3922, 3, 1089, 544, 0, 3922, 3923, 3, 1063, 531, 0, 3923, 3924, 3, 1051, 525, 0, 3924, 3925, 3, 1055, 527, 0, 3925, 3926, 3, 1083, 541, 0, 3926, 632, 1, 0, 0, 0, 3927, 3928, 3, 1075, 537, 0, 3928, 3929, 3, 1053, 526, 0, 3929, 3930, 3, 1047, 523, 0, 3930, 3931, 3, 1085, 542, 0, 3931, 3932, 3, 1047, 523, 0, 3932, 634, 1, 0, 0, 0, 3933, 3934, 3, 1049, 524, 0, 3934, 3935, 3, 1047, 523, 0, 3935, 3936, 3, 1083, 541, 0, 3936, 3937, 3, 1055, 527, 0, 3937, 636, 1, 0, 0, 0, 3938, 3939, 3, 1047, 523, 0, 3939, 3940, 3, 1087, 543, 0, 3940, 3941, 3, 1085, 542, 0, 3941, 3942, 3, 1061, 530, 0, 3942, 638, 1, 0, 0, 0, 3943, 3944, 3, 1047, 523, 0, 3944, 3945, 3, 1087, 543, 0, 3945, 3946, 3, 1085, 542, 0, 3946, 3947, 3, 1061, 530, 0, 3947, 3948, 3, 1055, 527, 0, 3948, 3949, 3, 1073, 536, 0, 3949, 3950, 3, 1085, 542, 0, 3950, 3951, 3, 1063, 531, 0, 3951, 3952, 3, 1051, 525, 0, 3952, 3953, 3, 1047, 523, 0, 3953, 3954, 3, 1085, 542, 0, 3954, 3955, 3, 1063, 531, 0, 3955, 3956, 3, 1075, 537, 0, 3956, 3957, 3, 1073, 536, 0, 3957, 640, 1, 0, 0, 0, 3958, 3959, 3, 1049, 524, 0, 3959, 3960, 3, 1047, 523, 0, 3960, 3961, 3, 1083, 541, 0, 3961, 3962, 3, 1063, 531, 0, 3962, 3963, 3, 1051, 525, 0, 3963, 642, 1, 0, 0, 0, 3964, 3965, 3, 1073, 536, 0, 3965, 3966, 3, 1075, 537, 0, 3966, 3967, 3, 1085, 542, 0, 3967, 3968, 3, 1061, 530, 0, 3968, 3969, 3, 1063, 531, 0, 3969, 3970, 3, 1073, 536, 0, 3970, 3971, 3, 1059, 529, 0, 3971, 644, 1, 0, 0, 0, 3972, 3973, 3, 1075, 537, 0, 3973, 3974, 3, 1047, 523, 0, 3974, 3975, 3, 1087, 543, 0, 3975, 3976, 3, 1085, 542, 0, 3976, 3977, 3, 1061, 530, 0, 3977, 646, 1, 0, 0, 0, 3978, 3979, 3, 1075, 537, 0, 3979, 3980, 3, 1077, 538, 0, 3980, 3981, 3, 1055, 527, 0, 3981, 3982, 3, 1081, 540, 0, 3982, 3983, 3, 1047, 523, 0, 3983, 3984, 3, 1085, 542, 0, 3984, 3985, 3, 1063, 531, 0, 3985, 3986, 3, 1075, 537, 0, 3986, 3987, 3, 1073, 536, 0, 3987, 648, 1, 0, 0, 0, 3988, 3989, 3, 1071, 535, 0, 3989, 3990, 3, 1055, 527, 0, 3990, 3991, 3, 1085, 542, 0, 3991, 3992, 3, 1061, 530, 0, 3992, 3993, 3, 1075, 537, 0, 3993, 3994, 3, 1053, 526, 0, 3994, 650, 1, 0, 0, 0, 3995, 3996, 3, 1077, 538, 0, 3996, 3997, 3, 1047, 523, 0, 3997, 3998, 3, 1085, 542, 0, 3998, 3999, 3, 1061, 530, 0, 3999, 652, 1, 0, 0, 0, 4000, 4001, 3, 1085, 542, 0, 4001, 4002, 3, 1063, 531, 0, 4002, 4003, 3, 1071, 535, 0, 4003, 4004, 3, 1055, 527, 0, 4004, 4005, 3, 1075, 537, 0, 4005, 4006, 3, 1087, 543, 0, 4006, 4007, 3, 1085, 542, 0, 4007, 654, 1, 0, 0, 0, 4008, 4009, 3, 1049, 524, 0, 4009, 4010, 3, 1075, 537, 0, 4010, 4011, 3, 1053, 526, 0, 4011, 4012, 3, 1095, 547, 0, 4012, 656, 1, 0, 0, 0, 4013, 4014, 3, 1081, 540, 0, 4014, 4015, 3, 1055, 527, 0, 4015, 4016, 3, 1083, 541, 0, 4016, 4017, 3, 1077, 538, 0, 4017, 4018, 3, 1075, 537, 0, 4018, 4019, 3, 1073, 536, 0, 4019, 4020, 3, 1083, 541, 0, 4020, 4021, 3, 1055, 527, 0, 4021, 658, 1, 0, 0, 0, 4022, 4023, 3, 1081, 540, 0, 4023, 4024, 3, 1055, 527, 0, 4024, 4025, 3, 1079, 539, 0, 4025, 4026, 3, 1087, 543, 0, 4026, 4027, 3, 1055, 527, 0, 4027, 4028, 3, 1083, 541, 0, 4028, 4029, 3, 1085, 542, 0, 4029, 660, 1, 0, 0, 0, 4030, 4031, 3, 1083, 541, 0, 4031, 4032, 3, 1055, 527, 0, 4032, 4033, 3, 1073, 536, 0, 4033, 4034, 3, 1053, 526, 0, 4034, 662, 1, 0, 0, 0, 4035, 4036, 3, 1065, 532, 0, 4036, 4037, 3, 1083, 541, 0, 4037, 4038, 3, 1075, 537, 0, 4038, 4039, 3, 1073, 536, 0, 4039, 664, 1, 0, 0, 0, 4040, 4041, 3, 1093, 546, 0, 4041, 4042, 3, 1071, 535, 0, 4042, 4043, 3, 1069, 534, 0, 4043, 666, 1, 0, 0, 0, 4044, 4045, 3, 1083, 541, 0, 4045, 4046, 3, 1085, 542, 0, 4046, 4047, 3, 1047, 523, 0, 4047, 4048, 3, 1085, 542, 0, 4048, 4049, 3, 1087, 543, 0, 4049, 4050, 3, 1083, 541, 0, 4050, 668, 1, 0, 0, 0, 4051, 4052, 3, 1057, 528, 0, 4052, 4053, 3, 1063, 531, 0, 4053, 4054, 3, 1069, 534, 0, 4054, 4055, 3, 1055, 527, 0, 4055, 670, 1, 0, 0, 0, 4056, 4057, 3, 1089, 544, 0, 4057, 4058, 3, 1055, 527, 0, 4058, 4059, 3, 1081, 540, 0, 4059, 4060, 3, 1083, 541, 0, 4060, 4061, 3, 1063, 531, 0, 4061, 4062, 3, 1075, 537, 0, 4062, 4063, 3, 1073, 536, 0, 4063, 672, 1, 0, 0, 0, 4064, 4065, 3, 1059, 529, 0, 4065, 4066, 3, 1055, 527, 0, 4066, 4067, 3, 1085, 542, 0, 4067, 674, 1, 0, 0, 0, 4068, 4069, 3, 1077, 538, 0, 4069, 4070, 3, 1075, 537, 0, 4070, 4071, 3, 1083, 541, 0, 4071, 4072, 3, 1085, 542, 0, 4072, 676, 1, 0, 0, 0, 4073, 4074, 3, 1077, 538, 0, 4074, 4075, 3, 1087, 543, 0, 4075, 4076, 3, 1085, 542, 0, 4076, 678, 1, 0, 0, 0, 4077, 4078, 3, 1077, 538, 0, 4078, 4079, 3, 1047, 523, 0, 4079, 4080, 3, 1085, 542, 0, 4080, 4081, 3, 1051, 525, 0, 4081, 4082, 3, 1061, 530, 0, 4082, 680, 1, 0, 0, 0, 4083, 4084, 3, 1047, 523, 0, 4084, 4085, 3, 1077, 538, 0, 4085, 4086, 3, 1063, 531, 0, 4086, 682, 1, 0, 0, 0, 4087, 4088, 3, 1051, 525, 0, 4088, 4089, 3, 1069, 534, 0, 4089, 4090, 3, 1063, 531, 0, 4090, 4091, 3, 1055, 527, 0, 4091, 4092, 3, 1073, 536, 0, 4092, 4093, 3, 1085, 542, 0, 4093, 684, 1, 0, 0, 0, 4094, 4095, 3, 1051, 525, 0, 4095, 4096, 3, 1069, 534, 0, 4096, 4097, 3, 1063, 531, 0, 4097, 4098, 3, 1055, 527, 0, 4098, 4099, 3, 1073, 536, 0, 4099, 4100, 3, 1085, 542, 0, 4100, 4101, 3, 1083, 541, 0, 4101, 686, 1, 0, 0, 0, 4102, 4103, 3, 1077, 538, 0, 4103, 4104, 3, 1087, 543, 0, 4104, 4105, 3, 1049, 524, 0, 4105, 4106, 3, 1069, 534, 0, 4106, 4107, 3, 1063, 531, 0, 4107, 4108, 3, 1083, 541, 0, 4108, 4109, 3, 1061, 530, 0, 4109, 688, 1, 0, 0, 0, 4110, 4111, 3, 1077, 538, 0, 4111, 4112, 3, 1087, 543, 0, 4112, 4113, 3, 1049, 524, 0, 4113, 4114, 3, 1069, 534, 0, 4114, 4115, 3, 1063, 531, 0, 4115, 4116, 3, 1083, 541, 0, 4116, 4117, 3, 1061, 530, 0, 4117, 4118, 3, 1055, 527, 0, 4118, 4119, 3, 1053, 526, 0, 4119, 690, 1, 0, 0, 0, 4120, 4121, 3, 1055, 527, 0, 4121, 4122, 3, 1093, 546, 0, 4122, 4123, 3, 1077, 538, 0, 4123, 4124, 3, 1075, 537, 0, 4124, 4125, 3, 1083, 541, 0, 4125, 4126, 3, 1055, 527, 0, 4126, 692, 1, 0, 0, 0, 4127, 4128, 3, 1051, 525, 0, 4128, 4129, 3, 1075, 537, 0, 4129, 4130, 3, 1073, 536, 0, 4130, 4131, 3, 1085, 542, 0, 4131, 4132, 3, 1081, 540, 0, 4132, 4133, 3, 1047, 523, 0, 4133, 4134, 3, 1051, 525, 0, 4134, 4135, 3, 1085, 542, 0, 4135, 694, 1, 0, 0, 0, 4136, 4137, 3, 1073, 536, 0, 4137, 4138, 3, 1047, 523, 0, 4138, 4139, 3, 1071, 535, 0, 4139, 4140, 3, 1055, 527, 0, 4140, 4141, 3, 1083, 541, 0, 4141, 4142, 3, 1077, 538, 0, 4142, 4143, 3, 1047, 523, 0, 4143, 4144, 3, 1051, 525, 0, 4144, 4145, 3, 1055, 527, 0, 4145, 696, 1, 0, 0, 0, 4146, 4147, 3, 1083, 541, 0, 4147, 4148, 3, 1055, 527, 0, 4148, 4149, 3, 1083, 541, 0, 4149, 4150, 3, 1083, 541, 0, 4150, 4151, 3, 1063, 531, 0, 4151, 4152, 3, 1075, 537, 0, 4152, 4153, 3, 1073, 536, 0, 4153, 698, 1, 0, 0, 0, 4154, 4155, 3, 1059, 529, 0, 4155, 4156, 3, 1087, 543, 0, 4156, 4157, 3, 1055, 527, 0, 4157, 4158, 3, 1083, 541, 0, 4158, 4159, 3, 1085, 542, 0, 4159, 700, 1, 0, 0, 0, 4160, 4161, 3, 1077, 538, 0, 4161, 4162, 3, 1047, 523, 0, 4162, 4163, 3, 1059, 529, 0, 4163, 4164, 3, 1063, 531, 0, 4164, 4165, 3, 1073, 536, 0, 4165, 4166, 3, 1059, 529, 0, 4166, 702, 1, 0, 0, 0, 4167, 4168, 3, 1073, 536, 0, 4168, 4169, 3, 1075, 537, 0, 4169, 4170, 3, 1085, 542, 0, 4170, 4171, 5, 95, 0, 0, 4171, 4172, 3, 1083, 541, 0, 4172, 4173, 3, 1087, 543, 0, 4173, 4174, 3, 1077, 538, 0, 4174, 4175, 3, 1077, 538, 0, 4175, 4176, 3, 1075, 537, 0, 4176, 4177, 3, 1081, 540, 0, 4177, 4178, 3, 1085, 542, 0, 4178, 4179, 3, 1055, 527, 0, 4179, 4180, 3, 1053, 526, 0, 4180, 704, 1, 0, 0, 0, 4181, 4182, 3, 1087, 543, 0, 4182, 4183, 3, 1083, 541, 0, 4183, 4184, 3, 1055, 527, 0, 4184, 4185, 3, 1081, 540, 0, 4185, 4186, 3, 1073, 536, 0, 4186, 4187, 3, 1047, 523, 0, 4187, 4188, 3, 1071, 535, 0, 4188, 4189, 3, 1055, 527, 0, 4189, 706, 1, 0, 0, 0, 4190, 4191, 3, 1077, 538, 0, 4191, 4192, 3, 1047, 523, 0, 4192, 4193, 3, 1083, 541, 0, 4193, 4194, 3, 1083, 541, 0, 4194, 4195, 3, 1091, 545, 0, 4195, 4196, 3, 1075, 537, 0, 4196, 4197, 3, 1081, 540, 0, 4197, 4198, 3, 1053, 526, 0, 4198, 708, 1, 0, 0, 0, 4199, 4200, 3, 1051, 525, 0, 4200, 4201, 3, 1075, 537, 0, 4201, 4202, 3, 1073, 536, 0, 4202, 4203, 3, 1073, 536, 0, 4203, 4204, 3, 1055, 527, 0, 4204, 4205, 3, 1051, 525, 0, 4205, 4206, 3, 1085, 542, 0, 4206, 4207, 3, 1063, 531, 0, 4207, 4208, 3, 1075, 537, 0, 4208, 4209, 3, 1073, 536, 0, 4209, 710, 1, 0, 0, 0, 4210, 4211, 3, 1053, 526, 0, 4211, 4212, 3, 1047, 523, 0, 4212, 4213, 3, 1085, 542, 0, 4213, 4214, 3, 1047, 523, 0, 4214, 4215, 3, 1049, 524, 0, 4215, 4216, 3, 1047, 523, 0, 4216, 4217, 3, 1083, 541, 0, 4217, 4218, 3, 1055, 527, 0, 4218, 712, 1, 0, 0, 0, 4219, 4220, 3, 1079, 539, 0, 4220, 4221, 3, 1087, 543, 0, 4221, 4222, 3, 1055, 527, 0, 4222, 4223, 3, 1081, 540, 0, 4223, 4224, 3, 1095, 547, 0, 4224, 714, 1, 0, 0, 0, 4225, 4226, 3, 1071, 535, 0, 4226, 4227, 3, 1047, 523, 0, 4227, 4228, 3, 1077, 538, 0, 4228, 716, 1, 0, 0, 0, 4229, 4230, 3, 1071, 535, 0, 4230, 4231, 3, 1047, 523, 0, 4231, 4232, 3, 1077, 538, 0, 4232, 4233, 3, 1077, 538, 0, 4233, 4234, 3, 1063, 531, 0, 4234, 4235, 3, 1073, 536, 0, 4235, 4236, 3, 1059, 529, 0, 4236, 718, 1, 0, 0, 0, 4237, 4238, 3, 1063, 531, 0, 4238, 4239, 3, 1071, 535, 0, 4239, 4240, 3, 1077, 538, 0, 4240, 4241, 3, 1075, 537, 0, 4241, 4242, 3, 1081, 540, 0, 4242, 4243, 3, 1085, 542, 0, 4243, 720, 1, 0, 0, 0, 4244, 4245, 3, 1063, 531, 0, 4245, 4246, 3, 1073, 536, 0, 4246, 4247, 3, 1085, 542, 0, 4247, 4248, 3, 1075, 537, 0, 4248, 722, 1, 0, 0, 0, 4249, 4250, 3, 1049, 524, 0, 4250, 4251, 3, 1047, 523, 0, 4251, 4252, 3, 1085, 542, 0, 4252, 4253, 3, 1051, 525, 0, 4253, 4254, 3, 1061, 530, 0, 4254, 724, 1, 0, 0, 0, 4255, 4256, 3, 1069, 534, 0, 4256, 4257, 3, 1063, 531, 0, 4257, 4258, 3, 1073, 536, 0, 4258, 4259, 3, 1067, 533, 0, 4259, 726, 1, 0, 0, 0, 4260, 4261, 3, 1055, 527, 0, 4261, 4262, 3, 1093, 546, 0, 4262, 4263, 3, 1077, 538, 0, 4263, 4264, 3, 1075, 537, 0, 4264, 4265, 3, 1081, 540, 0, 4265, 4266, 3, 1085, 542, 0, 4266, 728, 1, 0, 0, 0, 4267, 4268, 3, 1059, 529, 0, 4268, 4269, 3, 1055, 527, 0, 4269, 4270, 3, 1073, 536, 0, 4270, 4271, 3, 1055, 527, 0, 4271, 4272, 3, 1081, 540, 0, 4272, 4273, 3, 1047, 523, 0, 4273, 4274, 3, 1085, 542, 0, 4274, 4275, 3, 1055, 527, 0, 4275, 730, 1, 0, 0, 0, 4276, 4277, 3, 1051, 525, 0, 4277, 4278, 3, 1075, 537, 0, 4278, 4279, 3, 1073, 536, 0, 4279, 4280, 3, 1073, 536, 0, 4280, 4281, 3, 1055, 527, 0, 4281, 4282, 3, 1051, 525, 0, 4282, 4283, 3, 1085, 542, 0, 4283, 4284, 3, 1075, 537, 0, 4284, 4285, 3, 1081, 540, 0, 4285, 732, 1, 0, 0, 0, 4286, 4287, 3, 1055, 527, 0, 4287, 4288, 3, 1093, 546, 0, 4288, 4289, 3, 1055, 527, 0, 4289, 4290, 3, 1051, 525, 0, 4290, 734, 1, 0, 0, 0, 4291, 4292, 3, 1085, 542, 0, 4292, 4293, 3, 1047, 523, 0, 4293, 4294, 3, 1049, 524, 0, 4294, 4295, 3, 1069, 534, 0, 4295, 4296, 3, 1055, 527, 0, 4296, 4297, 3, 1083, 541, 0, 4297, 736, 1, 0, 0, 0, 4298, 4299, 3, 1089, 544, 0, 4299, 4300, 3, 1063, 531, 0, 4300, 4301, 3, 1055, 527, 0, 4301, 4302, 3, 1091, 545, 0, 4302, 4303, 3, 1083, 541, 0, 4303, 738, 1, 0, 0, 0, 4304, 4305, 3, 1055, 527, 0, 4305, 4306, 3, 1093, 546, 0, 4306, 4307, 3, 1077, 538, 0, 4307, 4308, 3, 1075, 537, 0, 4308, 4309, 3, 1083, 541, 0, 4309, 4310, 3, 1055, 527, 0, 4310, 4311, 3, 1053, 526, 0, 4311, 740, 1, 0, 0, 0, 4312, 4313, 3, 1077, 538, 0, 4313, 4314, 3, 1047, 523, 0, 4314, 4315, 3, 1081, 540, 0, 4315, 4316, 3, 1047, 523, 0, 4316, 4317, 3, 1071, 535, 0, 4317, 4318, 3, 1055, 527, 0, 4318, 4319, 3, 1085, 542, 0, 4319, 4320, 3, 1055, 527, 0, 4320, 4321, 3, 1081, 540, 0, 4321, 742, 1, 0, 0, 0, 4322, 4323, 3, 1077, 538, 0, 4323, 4324, 3, 1047, 523, 0, 4324, 4325, 3, 1081, 540, 0, 4325, 4326, 3, 1047, 523, 0, 4326, 4327, 3, 1071, 535, 0, 4327, 4328, 3, 1055, 527, 0, 4328, 4329, 3, 1085, 542, 0, 4329, 4330, 3, 1055, 527, 0, 4330, 4331, 3, 1081, 540, 0, 4331, 4332, 3, 1083, 541, 0, 4332, 744, 1, 0, 0, 0, 4333, 4334, 3, 1061, 530, 0, 4334, 4335, 3, 1055, 527, 0, 4335, 4336, 3, 1047, 523, 0, 4336, 4337, 3, 1053, 526, 0, 4337, 4338, 3, 1055, 527, 0, 4338, 4339, 3, 1081, 540, 0, 4339, 4340, 3, 1083, 541, 0, 4340, 746, 1, 0, 0, 0, 4341, 4342, 3, 1073, 536, 0, 4342, 4343, 3, 1047, 523, 0, 4343, 4344, 3, 1089, 544, 0, 4344, 4345, 3, 1063, 531, 0, 4345, 4346, 3, 1059, 529, 0, 4346, 4347, 3, 1047, 523, 0, 4347, 4348, 3, 1085, 542, 0, 4348, 4349, 3, 1063, 531, 0, 4349, 4350, 3, 1075, 537, 0, 4350, 4351, 3, 1073, 536, 0, 4351, 748, 1, 0, 0, 0, 4352, 4353, 3, 1071, 535, 0, 4353, 4354, 3, 1055, 527, 0, 4354, 4355, 3, 1073, 536, 0, 4355, 4356, 3, 1087, 543, 0, 4356, 750, 1, 0, 0, 0, 4357, 4358, 3, 1061, 530, 0, 4358, 4359, 3, 1075, 537, 0, 4359, 4360, 3, 1071, 535, 0, 4360, 4361, 3, 1055, 527, 0, 4361, 4362, 3, 1083, 541, 0, 4362, 752, 1, 0, 0, 0, 4363, 4364, 3, 1061, 530, 0, 4364, 4365, 3, 1075, 537, 0, 4365, 4366, 3, 1071, 535, 0, 4366, 4367, 3, 1055, 527, 0, 4367, 754, 1, 0, 0, 0, 4368, 4369, 3, 1069, 534, 0, 4369, 4370, 3, 1075, 537, 0, 4370, 4371, 3, 1059, 529, 0, 4371, 4372, 3, 1063, 531, 0, 4372, 4373, 3, 1073, 536, 0, 4373, 756, 1, 0, 0, 0, 4374, 4375, 3, 1057, 528, 0, 4375, 4376, 3, 1075, 537, 0, 4376, 4377, 3, 1087, 543, 0, 4377, 4378, 3, 1073, 536, 0, 4378, 4379, 3, 1053, 526, 0, 4379, 758, 1, 0, 0, 0, 4380, 4381, 3, 1071, 535, 0, 4381, 4382, 3, 1075, 537, 0, 4382, 4383, 3, 1053, 526, 0, 4383, 4384, 3, 1087, 543, 0, 4384, 4385, 3, 1069, 534, 0, 4385, 4386, 3, 1055, 527, 0, 4386, 4387, 3, 1083, 541, 0, 4387, 760, 1, 0, 0, 0, 4388, 4389, 3, 1055, 527, 0, 4389, 4390, 3, 1073, 536, 0, 4390, 4391, 3, 1085, 542, 0, 4391, 4392, 3, 1063, 531, 0, 4392, 4393, 3, 1085, 542, 0, 4393, 4394, 3, 1063, 531, 0, 4394, 4395, 3, 1055, 527, 0, 4395, 4396, 3, 1083, 541, 0, 4396, 762, 1, 0, 0, 0, 4397, 4398, 3, 1047, 523, 0, 4398, 4399, 3, 1083, 541, 0, 4399, 4400, 3, 1083, 541, 0, 4400, 4401, 3, 1075, 537, 0, 4401, 4402, 3, 1051, 525, 0, 4402, 4403, 3, 1063, 531, 0, 4403, 4404, 3, 1047, 523, 0, 4404, 4405, 3, 1085, 542, 0, 4405, 4406, 3, 1063, 531, 0, 4406, 4407, 3, 1075, 537, 0, 4407, 4408, 3, 1073, 536, 0, 4408, 4409, 3, 1083, 541, 0, 4409, 764, 1, 0, 0, 0, 4410, 4411, 3, 1071, 535, 0, 4411, 4412, 3, 1063, 531, 0, 4412, 4413, 3, 1051, 525, 0, 4413, 4414, 3, 1081, 540, 0, 4414, 4415, 3, 1075, 537, 0, 4415, 4416, 3, 1057, 528, 0, 4416, 4417, 3, 1069, 534, 0, 4417, 4418, 3, 1075, 537, 0, 4418, 4419, 3, 1091, 545, 0, 4419, 4420, 3, 1083, 541, 0, 4420, 766, 1, 0, 0, 0, 4421, 4422, 3, 1073, 536, 0, 4422, 4423, 3, 1047, 523, 0, 4423, 4424, 3, 1073, 536, 0, 4424, 4425, 3, 1075, 537, 0, 4425, 4426, 3, 1057, 528, 0, 4426, 4427, 3, 1069, 534, 0, 4427, 4428, 3, 1075, 537, 0, 4428, 4429, 3, 1091, 545, 0, 4429, 4430, 3, 1083, 541, 0, 4430, 768, 1, 0, 0, 0, 4431, 4432, 3, 1091, 545, 0, 4432, 4433, 3, 1075, 537, 0, 4433, 4434, 3, 1081, 540, 0, 4434, 4435, 3, 1067, 533, 0, 4435, 4436, 3, 1057, 528, 0, 4436, 4437, 3, 1069, 534, 0, 4437, 4438, 3, 1075, 537, 0, 4438, 4439, 3, 1091, 545, 0, 4439, 4440, 3, 1083, 541, 0, 4440, 770, 1, 0, 0, 0, 4441, 4442, 3, 1055, 527, 0, 4442, 4443, 3, 1073, 536, 0, 4443, 4444, 3, 1087, 543, 0, 4444, 4445, 3, 1071, 535, 0, 4445, 4446, 3, 1055, 527, 0, 4446, 4447, 3, 1081, 540, 0, 4447, 4448, 3, 1047, 523, 0, 4448, 4449, 3, 1085, 542, 0, 4449, 4450, 3, 1063, 531, 0, 4450, 4451, 3, 1075, 537, 0, 4451, 4452, 3, 1073, 536, 0, 4452, 4453, 3, 1083, 541, 0, 4453, 772, 1, 0, 0, 0, 4454, 4455, 3, 1051, 525, 0, 4455, 4456, 3, 1075, 537, 0, 4456, 4457, 3, 1073, 536, 0, 4457, 4458, 3, 1083, 541, 0, 4458, 4459, 3, 1085, 542, 0, 4459, 4460, 3, 1047, 523, 0, 4460, 4461, 3, 1073, 536, 0, 4461, 4462, 3, 1085, 542, 0, 4462, 4463, 3, 1083, 541, 0, 4463, 774, 1, 0, 0, 0, 4464, 4465, 3, 1051, 525, 0, 4465, 4466, 3, 1075, 537, 0, 4466, 4467, 3, 1073, 536, 0, 4467, 4468, 3, 1073, 536, 0, 4468, 4469, 3, 1055, 527, 0, 4469, 4470, 3, 1051, 525, 0, 4470, 4471, 3, 1085, 542, 0, 4471, 4472, 3, 1063, 531, 0, 4472, 4473, 3, 1075, 537, 0, 4473, 4474, 3, 1073, 536, 0, 4474, 4475, 3, 1083, 541, 0, 4475, 776, 1, 0, 0, 0, 4476, 4477, 3, 1053, 526, 0, 4477, 4478, 3, 1055, 527, 0, 4478, 4479, 3, 1057, 528, 0, 4479, 4480, 3, 1063, 531, 0, 4480, 4481, 3, 1073, 536, 0, 4481, 4482, 3, 1055, 527, 0, 4482, 778, 1, 0, 0, 0, 4483, 4484, 3, 1057, 528, 0, 4484, 4485, 3, 1081, 540, 0, 4485, 4486, 3, 1047, 523, 0, 4486, 4487, 3, 1059, 529, 0, 4487, 4488, 3, 1071, 535, 0, 4488, 4489, 3, 1055, 527, 0, 4489, 4490, 3, 1073, 536, 0, 4490, 4491, 3, 1085, 542, 0, 4491, 780, 1, 0, 0, 0, 4492, 4493, 3, 1057, 528, 0, 4493, 4494, 3, 1081, 540, 0, 4494, 4495, 3, 1047, 523, 0, 4495, 4496, 3, 1059, 529, 0, 4496, 4497, 3, 1071, 535, 0, 4497, 4498, 3, 1055, 527, 0, 4498, 4499, 3, 1073, 536, 0, 4499, 4500, 3, 1085, 542, 0, 4500, 4501, 3, 1083, 541, 0, 4501, 782, 1, 0, 0, 0, 4502, 4503, 3, 1063, 531, 0, 4503, 4504, 3, 1073, 536, 0, 4504, 4505, 3, 1083, 541, 0, 4505, 4506, 3, 1055, 527, 0, 4506, 4507, 3, 1081, 540, 0, 4507, 4508, 3, 1085, 542, 0, 4508, 784, 1, 0, 0, 0, 4509, 4510, 3, 1049, 524, 0, 4510, 4511, 3, 1055, 527, 0, 4511, 4512, 3, 1057, 528, 0, 4512, 4513, 3, 1075, 537, 0, 4513, 4514, 3, 1081, 540, 0, 4514, 4515, 3, 1055, 527, 0, 4515, 786, 1, 0, 0, 0, 4516, 4517, 3, 1047, 523, 0, 4517, 4518, 3, 1057, 528, 0, 4518, 4519, 3, 1085, 542, 0, 4519, 4520, 3, 1055, 527, 0, 4520, 4521, 3, 1081, 540, 0, 4521, 788, 1, 0, 0, 0, 4522, 4523, 3, 1087, 543, 0, 4523, 4524, 3, 1077, 538, 0, 4524, 4525, 3, 1053, 526, 0, 4525, 4526, 3, 1047, 523, 0, 4526, 4527, 3, 1085, 542, 0, 4527, 4528, 3, 1055, 527, 0, 4528, 790, 1, 0, 0, 0, 4529, 4530, 3, 1081, 540, 0, 4530, 4531, 3, 1055, 527, 0, 4531, 4532, 3, 1057, 528, 0, 4532, 4533, 3, 1081, 540, 0, 4533, 4534, 3, 1055, 527, 0, 4534, 4535, 3, 1083, 541, 0, 4535, 4536, 3, 1061, 530, 0, 4536, 792, 1, 0, 0, 0, 4537, 4538, 3, 1051, 525, 0, 4538, 4539, 3, 1061, 530, 0, 4539, 4540, 3, 1055, 527, 0, 4540, 4541, 3, 1051, 525, 0, 4541, 4542, 3, 1067, 533, 0, 4542, 794, 1, 0, 0, 0, 4543, 4544, 3, 1049, 524, 0, 4544, 4545, 3, 1087, 543, 0, 4545, 4546, 3, 1063, 531, 0, 4546, 4547, 3, 1069, 534, 0, 4547, 4548, 3, 1053, 526, 0, 4548, 796, 1, 0, 0, 0, 4549, 4550, 3, 1055, 527, 0, 4550, 4551, 3, 1093, 546, 0, 4551, 4552, 3, 1055, 527, 0, 4552, 4553, 3, 1051, 525, 0, 4553, 4554, 3, 1087, 543, 0, 4554, 4555, 3, 1085, 542, 0, 4555, 4556, 3, 1055, 527, 0, 4556, 798, 1, 0, 0, 0, 4557, 4558, 3, 1083, 541, 0, 4558, 4559, 3, 1051, 525, 0, 4559, 4560, 3, 1081, 540, 0, 4560, 4561, 3, 1063, 531, 0, 4561, 4562, 3, 1077, 538, 0, 4562, 4563, 3, 1085, 542, 0, 4563, 800, 1, 0, 0, 0, 4564, 4565, 3, 1069, 534, 0, 4565, 4566, 3, 1063, 531, 0, 4566, 4567, 3, 1073, 536, 0, 4567, 4568, 3, 1085, 542, 0, 4568, 802, 1, 0, 0, 0, 4569, 4570, 3, 1081, 540, 0, 4570, 4571, 3, 1087, 543, 0, 4571, 4572, 3, 1069, 534, 0, 4572, 4573, 3, 1055, 527, 0, 4573, 4574, 3, 1083, 541, 0, 4574, 804, 1, 0, 0, 0, 4575, 4576, 3, 1085, 542, 0, 4576, 4577, 3, 1055, 527, 0, 4577, 4578, 3, 1093, 546, 0, 4578, 4579, 3, 1085, 542, 0, 4579, 806, 1, 0, 0, 0, 4580, 4581, 3, 1083, 541, 0, 4581, 4582, 3, 1047, 523, 0, 4582, 4583, 3, 1081, 540, 0, 4583, 4584, 3, 1063, 531, 0, 4584, 4585, 3, 1057, 528, 0, 4585, 808, 1, 0, 0, 0, 4586, 4587, 3, 1071, 535, 0, 4587, 4588, 3, 1055, 527, 0, 4588, 4589, 3, 1083, 541, 0, 4589, 4590, 3, 1083, 541, 0, 4590, 4591, 3, 1047, 523, 0, 4591, 4592, 3, 1059, 529, 0, 4592, 4593, 3, 1055, 527, 0, 4593, 810, 1, 0, 0, 0, 4594, 4595, 3, 1071, 535, 0, 4595, 4596, 3, 1055, 527, 0, 4596, 4597, 3, 1083, 541, 0, 4597, 4598, 3, 1083, 541, 0, 4598, 4599, 3, 1047, 523, 0, 4599, 4600, 3, 1059, 529, 0, 4600, 4601, 3, 1055, 527, 0, 4601, 4602, 3, 1083, 541, 0, 4602, 812, 1, 0, 0, 0, 4603, 4604, 3, 1051, 525, 0, 4604, 4605, 3, 1061, 530, 0, 4605, 4606, 3, 1047, 523, 0, 4606, 4607, 3, 1073, 536, 0, 4607, 4608, 3, 1073, 536, 0, 4608, 4609, 3, 1055, 527, 0, 4609, 4610, 3, 1069, 534, 0, 4610, 4611, 3, 1083, 541, 0, 4611, 814, 1, 0, 0, 0, 4612, 4613, 3, 1051, 525, 0, 4613, 4614, 3, 1075, 537, 0, 4614, 4615, 3, 1071, 535, 0, 4615, 4616, 3, 1071, 535, 0, 4616, 4617, 3, 1055, 527, 0, 4617, 4618, 3, 1073, 536, 0, 4618, 4619, 3, 1085, 542, 0, 4619, 816, 1, 0, 0, 0, 4620, 4621, 3, 1051, 525, 0, 4621, 4622, 3, 1047, 523, 0, 4622, 4623, 3, 1085, 542, 0, 4623, 4624, 3, 1047, 523, 0, 4624, 4625, 3, 1069, 534, 0, 4625, 4626, 3, 1075, 537, 0, 4626, 4627, 3, 1059, 529, 0, 4627, 818, 1, 0, 0, 0, 4628, 4629, 3, 1057, 528, 0, 4629, 4630, 3, 1075, 537, 0, 4630, 4631, 3, 1081, 540, 0, 4631, 4632, 3, 1051, 525, 0, 4632, 4633, 3, 1055, 527, 0, 4633, 820, 1, 0, 0, 0, 4634, 4635, 3, 1049, 524, 0, 4635, 4636, 3, 1047, 523, 0, 4636, 4637, 3, 1051, 525, 0, 4637, 4638, 3, 1067, 533, 0, 4638, 4639, 3, 1059, 529, 0, 4639, 4640, 3, 1081, 540, 0, 4640, 4641, 3, 1075, 537, 0, 4641, 4642, 3, 1087, 543, 0, 4642, 4643, 3, 1073, 536, 0, 4643, 4644, 3, 1053, 526, 0, 4644, 822, 1, 0, 0, 0, 4645, 4646, 3, 1051, 525, 0, 4646, 4647, 3, 1047, 523, 0, 4647, 4648, 3, 1069, 534, 0, 4648, 4649, 3, 1069, 534, 0, 4649, 4650, 3, 1055, 527, 0, 4650, 4651, 3, 1081, 540, 0, 4651, 4652, 3, 1083, 541, 0, 4652, 824, 1, 0, 0, 0, 4653, 4654, 3, 1051, 525, 0, 4654, 4655, 3, 1047, 523, 0, 4655, 4656, 3, 1069, 534, 0, 4656, 4657, 3, 1069, 534, 0, 4657, 4658, 3, 1055, 527, 0, 4658, 4659, 3, 1055, 527, 0, 4659, 4660, 3, 1083, 541, 0, 4660, 826, 1, 0, 0, 0, 4661, 4662, 3, 1081, 540, 0, 4662, 4663, 3, 1055, 527, 0, 4663, 4664, 3, 1057, 528, 0, 4664, 4665, 3, 1055, 527, 0, 4665, 4666, 3, 1081, 540, 0, 4666, 4667, 3, 1055, 527, 0, 4667, 4668, 3, 1073, 536, 0, 4668, 4669, 3, 1051, 525, 0, 4669, 4670, 3, 1055, 527, 0, 4670, 4671, 3, 1083, 541, 0, 4671, 828, 1, 0, 0, 0, 4672, 4673, 3, 1085, 542, 0, 4673, 4674, 3, 1081, 540, 0, 4674, 4675, 3, 1047, 523, 0, 4675, 4676, 3, 1073, 536, 0, 4676, 4677, 3, 1083, 541, 0, 4677, 4678, 3, 1063, 531, 0, 4678, 4679, 3, 1085, 542, 0, 4679, 4680, 3, 1063, 531, 0, 4680, 4681, 3, 1089, 544, 0, 4681, 4682, 3, 1055, 527, 0, 4682, 830, 1, 0, 0, 0, 4683, 4684, 3, 1063, 531, 0, 4684, 4685, 3, 1071, 535, 0, 4685, 4686, 3, 1077, 538, 0, 4686, 4687, 3, 1047, 523, 0, 4687, 4688, 3, 1051, 525, 0, 4688, 4689, 3, 1085, 542, 0, 4689, 832, 1, 0, 0, 0, 4690, 4691, 3, 1053, 526, 0, 4691, 4692, 3, 1055, 527, 0, 4692, 4693, 3, 1077, 538, 0, 4693, 4694, 3, 1085, 542, 0, 4694, 4695, 3, 1061, 530, 0, 4695, 834, 1, 0, 0, 0, 4696, 4697, 3, 1083, 541, 0, 4697, 4698, 3, 1085, 542, 0, 4698, 4699, 3, 1081, 540, 0, 4699, 4700, 3, 1087, 543, 0, 4700, 4701, 3, 1051, 525, 0, 4701, 4702, 3, 1085, 542, 0, 4702, 4703, 3, 1087, 543, 0, 4703, 4704, 3, 1081, 540, 0, 4704, 4705, 3, 1055, 527, 0, 4705, 836, 1, 0, 0, 0, 4706, 4707, 3, 1085, 542, 0, 4707, 4708, 3, 1095, 547, 0, 4708, 4709, 3, 1077, 538, 0, 4709, 4710, 3, 1055, 527, 0, 4710, 838, 1, 0, 0, 0, 4711, 4712, 3, 1089, 544, 0, 4712, 4713, 3, 1047, 523, 0, 4713, 4714, 3, 1069, 534, 0, 4714, 4715, 3, 1087, 543, 0, 4715, 4716, 3, 1055, 527, 0, 4716, 840, 1, 0, 0, 0, 4717, 4718, 3, 1089, 544, 0, 4718, 4719, 3, 1047, 523, 0, 4719, 4720, 3, 1069, 534, 0, 4720, 4721, 3, 1087, 543, 0, 4721, 4722, 3, 1055, 527, 0, 4722, 4723, 3, 1083, 541, 0, 4723, 842, 1, 0, 0, 0, 4724, 4725, 3, 1083, 541, 0, 4725, 4726, 3, 1063, 531, 0, 4726, 4727, 3, 1073, 536, 0, 4727, 4728, 3, 1059, 529, 0, 4728, 4729, 3, 1069, 534, 0, 4729, 4730, 3, 1055, 527, 0, 4730, 844, 1, 0, 0, 0, 4731, 4732, 3, 1071, 535, 0, 4732, 4733, 3, 1087, 543, 0, 4733, 4734, 3, 1069, 534, 0, 4734, 4735, 3, 1085, 542, 0, 4735, 4736, 3, 1063, 531, 0, 4736, 4737, 3, 1077, 538, 0, 4737, 4738, 3, 1069, 534, 0, 4738, 4739, 3, 1055, 527, 0, 4739, 846, 1, 0, 0, 0, 4740, 4741, 3, 1073, 536, 0, 4741, 4742, 3, 1075, 537, 0, 4742, 4743, 3, 1073, 536, 0, 4743, 4744, 3, 1055, 527, 0, 4744, 848, 1, 0, 0, 0, 4745, 4746, 3, 1049, 524, 0, 4746, 4747, 3, 1075, 537, 0, 4747, 4748, 3, 1085, 542, 0, 4748, 4749, 3, 1061, 530, 0, 4749, 850, 1, 0, 0, 0, 4750, 4751, 3, 1085, 542, 0, 4751, 4752, 3, 1075, 537, 0, 4752, 852, 1, 0, 0, 0, 4753, 4754, 3, 1075, 537, 0, 4754, 4755, 3, 1057, 528, 0, 4755, 854, 1, 0, 0, 0, 4756, 4757, 3, 1075, 537, 0, 4757, 4758, 3, 1089, 544, 0, 4758, 4759, 3, 1055, 527, 0, 4759, 4760, 3, 1081, 540, 0, 4760, 856, 1, 0, 0, 0, 4761, 4762, 3, 1057, 528, 0, 4762, 4763, 3, 1075, 537, 0, 4763, 4764, 3, 1081, 540, 0, 4764, 858, 1, 0, 0, 0, 4765, 4766, 3, 1081, 540, 0, 4766, 4767, 3, 1055, 527, 0, 4767, 4768, 3, 1077, 538, 0, 4768, 4769, 3, 1069, 534, 0, 4769, 4770, 3, 1047, 523, 0, 4770, 4771, 3, 1051, 525, 0, 4771, 4772, 3, 1055, 527, 0, 4772, 860, 1, 0, 0, 0, 4773, 4774, 3, 1071, 535, 0, 4774, 4775, 3, 1055, 527, 0, 4775, 4776, 3, 1071, 535, 0, 4776, 4777, 3, 1049, 524, 0, 4777, 4778, 3, 1055, 527, 0, 4778, 4779, 3, 1081, 540, 0, 4779, 4780, 3, 1083, 541, 0, 4780, 862, 1, 0, 0, 0, 4781, 4782, 3, 1047, 523, 0, 4782, 4783, 3, 1085, 542, 0, 4783, 4784, 3, 1085, 542, 0, 4784, 4785, 3, 1081, 540, 0, 4785, 4786, 3, 1063, 531, 0, 4786, 4787, 3, 1049, 524, 0, 4787, 4788, 3, 1087, 543, 0, 4788, 4789, 3, 1085, 542, 0, 4789, 4790, 3, 1055, 527, 0, 4790, 4791, 3, 1073, 536, 0, 4791, 4792, 3, 1047, 523, 0, 4792, 4793, 3, 1071, 535, 0, 4793, 4794, 3, 1055, 527, 0, 4794, 864, 1, 0, 0, 0, 4795, 4796, 3, 1057, 528, 0, 4796, 4797, 3, 1075, 537, 0, 4797, 4798, 3, 1081, 540, 0, 4798, 4799, 3, 1071, 535, 0, 4799, 4800, 3, 1047, 523, 0, 4800, 4801, 3, 1085, 542, 0, 4801, 866, 1, 0, 0, 0, 4802, 4803, 3, 1083, 541, 0, 4803, 4804, 3, 1079, 539, 0, 4804, 4805, 3, 1069, 534, 0, 4805, 868, 1, 0, 0, 0, 4806, 4807, 3, 1091, 545, 0, 4807, 4808, 3, 1063, 531, 0, 4808, 4809, 3, 1085, 542, 0, 4809, 4810, 3, 1061, 530, 0, 4810, 4811, 3, 1075, 537, 0, 4811, 4812, 3, 1087, 543, 0, 4812, 4813, 3, 1085, 542, 0, 4813, 870, 1, 0, 0, 0, 4814, 4815, 3, 1053, 526, 0, 4815, 4816, 3, 1081, 540, 0, 4816, 4817, 3, 1095, 547, 0, 4817, 872, 1, 0, 0, 0, 4818, 4819, 3, 1081, 540, 0, 4819, 4820, 3, 1087, 543, 0, 4820, 4821, 3, 1073, 536, 0, 4821, 874, 1, 0, 0, 0, 4822, 4823, 3, 1091, 545, 0, 4823, 4824, 3, 1063, 531, 0, 4824, 4825, 3, 1053, 526, 0, 4825, 4826, 3, 1059, 529, 0, 4826, 4827, 3, 1055, 527, 0, 4827, 4828, 3, 1085, 542, 0, 4828, 4829, 3, 1085, 542, 0, 4829, 4830, 3, 1095, 547, 0, 4830, 4831, 3, 1077, 538, 0, 4831, 4832, 3, 1055, 527, 0, 4832, 876, 1, 0, 0, 0, 4833, 4834, 3, 1089, 544, 0, 4834, 4835, 5, 51, 0, 0, 4835, 878, 1, 0, 0, 0, 4836, 4837, 3, 1049, 524, 0, 4837, 4838, 3, 1087, 543, 0, 4838, 4839, 3, 1083, 541, 0, 4839, 4840, 3, 1063, 531, 0, 4840, 4841, 3, 1073, 536, 0, 4841, 4842, 3, 1055, 527, 0, 4842, 4843, 3, 1083, 541, 0, 4843, 4844, 3, 1083, 541, 0, 4844, 880, 1, 0, 0, 0, 4845, 4846, 3, 1055, 527, 0, 4846, 4847, 3, 1089, 544, 0, 4847, 4848, 3, 1055, 527, 0, 4848, 4849, 3, 1073, 536, 0, 4849, 4850, 3, 1085, 542, 0, 4850, 882, 1, 0, 0, 0, 4851, 4852, 3, 1083, 541, 0, 4852, 4853, 3, 1087, 543, 0, 4853, 4854, 3, 1049, 524, 0, 4854, 4855, 3, 1083, 541, 0, 4855, 4856, 3, 1051, 525, 0, 4856, 4857, 3, 1081, 540, 0, 4857, 4858, 3, 1063, 531, 0, 4858, 4859, 3, 1049, 524, 0, 4859, 4860, 3, 1055, 527, 0, 4860, 884, 1, 0, 0, 0, 4861, 4862, 3, 1083, 541, 0, 4862, 4863, 3, 1055, 527, 0, 4863, 4864, 3, 1085, 542, 0, 4864, 4865, 3, 1085, 542, 0, 4865, 4866, 3, 1063, 531, 0, 4866, 4867, 3, 1073, 536, 0, 4867, 4868, 3, 1059, 529, 0, 4868, 4869, 3, 1083, 541, 0, 4869, 886, 1, 0, 0, 0, 4870, 4871, 3, 1051, 525, 0, 4871, 4872, 3, 1075, 537, 0, 4872, 4873, 3, 1073, 536, 0, 4873, 4874, 3, 1057, 528, 0, 4874, 4875, 3, 1063, 531, 0, 4875, 4876, 3, 1059, 529, 0, 4876, 4877, 3, 1087, 543, 0, 4877, 4878, 3, 1081, 540, 0, 4878, 4879, 3, 1047, 523, 0, 4879, 4880, 3, 1085, 542, 0, 4880, 4881, 3, 1063, 531, 0, 4881, 4882, 3, 1075, 537, 0, 4882, 4883, 3, 1073, 536, 0, 4883, 888, 1, 0, 0, 0, 4884, 4885, 3, 1083, 541, 0, 4885, 4886, 3, 1055, 527, 0, 4886, 4887, 3, 1051, 525, 0, 4887, 4888, 3, 1087, 543, 0, 4888, 4889, 3, 1081, 540, 0, 4889, 4890, 3, 1063, 531, 0, 4890, 4891, 3, 1085, 542, 0, 4891, 4892, 3, 1095, 547, 0, 4892, 890, 1, 0, 0, 0, 4893, 4894, 3, 1081, 540, 0, 4894, 4895, 3, 1075, 537, 0, 4895, 4896, 3, 1069, 534, 0, 4896, 4897, 3, 1055, 527, 0, 4897, 892, 1, 0, 0, 0, 4898, 4899, 3, 1081, 540, 0, 4899, 4900, 3, 1075, 537, 0, 4900, 4901, 3, 1069, 534, 0, 4901, 4902, 3, 1055, 527, 0, 4902, 4903, 3, 1083, 541, 0, 4903, 894, 1, 0, 0, 0, 4904, 4905, 3, 1059, 529, 0, 4905, 4906, 3, 1081, 540, 0, 4906, 4907, 3, 1047, 523, 0, 4907, 4908, 3, 1073, 536, 0, 4908, 4909, 3, 1085, 542, 0, 4909, 896, 1, 0, 0, 0, 4910, 4911, 3, 1081, 540, 0, 4911, 4912, 3, 1055, 527, 0, 4912, 4913, 3, 1089, 544, 0, 4913, 4914, 3, 1075, 537, 0, 4914, 4915, 3, 1067, 533, 0, 4915, 4916, 3, 1055, 527, 0, 4916, 898, 1, 0, 0, 0, 4917, 4918, 3, 1077, 538, 0, 4918, 4919, 3, 1081, 540, 0, 4919, 4920, 3, 1075, 537, 0, 4920, 4921, 3, 1053, 526, 0, 4921, 4922, 3, 1087, 543, 0, 4922, 4923, 3, 1051, 525, 0, 4923, 4924, 3, 1085, 542, 0, 4924, 4925, 3, 1063, 531, 0, 4925, 4926, 3, 1075, 537, 0, 4926, 4927, 3, 1073, 536, 0, 4927, 900, 1, 0, 0, 0, 4928, 4929, 3, 1077, 538, 0, 4929, 4930, 3, 1081, 540, 0, 4930, 4931, 3, 1075, 537, 0, 4931, 4932, 3, 1085, 542, 0, 4932, 4933, 3, 1075, 537, 0, 4933, 4934, 3, 1085, 542, 0, 4934, 4935, 3, 1095, 547, 0, 4935, 4936, 3, 1077, 538, 0, 4936, 4937, 3, 1055, 527, 0, 4937, 902, 1, 0, 0, 0, 4938, 4939, 3, 1071, 535, 0, 4939, 4940, 3, 1047, 523, 0, 4940, 4941, 3, 1073, 536, 0, 4941, 4942, 3, 1047, 523, 0, 4942, 4943, 3, 1059, 529, 0, 4943, 4944, 3, 1055, 527, 0, 4944, 904, 1, 0, 0, 0, 4945, 4946, 3, 1053, 526, 0, 4946, 4947, 3, 1055, 527, 0, 4947, 4948, 3, 1071, 535, 0, 4948, 4949, 3, 1075, 537, 0, 4949, 906, 1, 0, 0, 0, 4950, 4951, 3, 1071, 535, 0, 4951, 4952, 3, 1047, 523, 0, 4952, 4953, 3, 1085, 542, 0, 4953, 4954, 3, 1081, 540, 0, 4954, 4955, 3, 1063, 531, 0, 4955, 4956, 3, 1093, 546, 0, 4956, 908, 1, 0, 0, 0, 4957, 4958, 3, 1047, 523, 0, 4958, 4959, 3, 1077, 538, 0, 4959, 4960, 3, 1077, 538, 0, 4960, 4961, 3, 1069, 534, 0, 4961, 4962, 3, 1095, 547, 0, 4962, 910, 1, 0, 0, 0, 4963, 4964, 3, 1047, 523, 0, 4964, 4965, 3, 1051, 525, 0, 4965, 4966, 3, 1051, 525, 0, 4966, 4967, 3, 1055, 527, 0, 4967, 4968, 3, 1083, 541, 0, 4968, 4969, 3, 1083, 541, 0, 4969, 912, 1, 0, 0, 0, 4970, 4971, 3, 1069, 534, 0, 4971, 4972, 3, 1055, 527, 0, 4972, 4973, 3, 1089, 544, 0, 4973, 4974, 3, 1055, 527, 0, 4974, 4975, 3, 1069, 534, 0, 4975, 914, 1, 0, 0, 0, 4976, 4977, 3, 1087, 543, 0, 4977, 4978, 3, 1083, 541, 0, 4978, 4979, 3, 1055, 527, 0, 4979, 4980, 3, 1081, 540, 0, 4980, 916, 1, 0, 0, 0, 4981, 4982, 3, 1085, 542, 0, 4982, 4983, 3, 1047, 523, 0, 4983, 4984, 3, 1083, 541, 0, 4984, 4985, 3, 1067, 533, 0, 4985, 918, 1, 0, 0, 0, 4986, 4987, 3, 1053, 526, 0, 4987, 4988, 3, 1055, 527, 0, 4988, 4989, 3, 1051, 525, 0, 4989, 4990, 3, 1063, 531, 0, 4990, 4991, 3, 1083, 541, 0, 4991, 4992, 3, 1063, 531, 0, 4992, 4993, 3, 1075, 537, 0, 4993, 4994, 3, 1073, 536, 0, 4994, 920, 1, 0, 0, 0, 4995, 4996, 3, 1083, 541, 0, 4996, 4997, 3, 1077, 538, 0, 4997, 4998, 3, 1069, 534, 0, 4998, 4999, 3, 1063, 531, 0, 4999, 5000, 3, 1085, 542, 0, 5000, 922, 1, 0, 0, 0, 5001, 5002, 3, 1075, 537, 0, 5002, 5003, 3, 1087, 543, 0, 5003, 5004, 3, 1085, 542, 0, 5004, 5005, 3, 1051, 525, 0, 5005, 5006, 3, 1075, 537, 0, 5006, 5007, 3, 1071, 535, 0, 5007, 5008, 3, 1055, 527, 0, 5008, 5009, 3, 1083, 541, 0, 5009, 924, 1, 0, 0, 0, 5010, 5011, 3, 1085, 542, 0, 5011, 5012, 3, 1047, 523, 0, 5012, 5013, 3, 1081, 540, 0, 5013, 5014, 3, 1059, 529, 0, 5014, 5015, 3, 1055, 527, 0, 5015, 5016, 3, 1085, 542, 0, 5016, 5017, 3, 1063, 531, 0, 5017, 5018, 3, 1073, 536, 0, 5018, 5019, 3, 1059, 529, 0, 5019, 926, 1, 0, 0, 0, 5020, 5021, 3, 1073, 536, 0, 5021, 5022, 3, 1075, 537, 0, 5022, 5023, 3, 1085, 542, 0, 5023, 5024, 3, 1063, 531, 0, 5024, 5025, 3, 1057, 528, 0, 5025, 5026, 3, 1063, 531, 0, 5026, 5027, 3, 1051, 525, 0, 5027, 5028, 3, 1047, 523, 0, 5028, 5029, 3, 1085, 542, 0, 5029, 5030, 3, 1063, 531, 0, 5030, 5031, 3, 1075, 537, 0, 5031, 5032, 3, 1073, 536, 0, 5032, 928, 1, 0, 0, 0, 5033, 5034, 3, 1085, 542, 0, 5034, 5035, 3, 1063, 531, 0, 5035, 5036, 3, 1071, 535, 0, 5036, 5037, 3, 1055, 527, 0, 5037, 5038, 3, 1081, 540, 0, 5038, 930, 1, 0, 0, 0, 5039, 5040, 3, 1065, 532, 0, 5040, 5041, 3, 1087, 543, 0, 5041, 5042, 3, 1071, 535, 0, 5042, 5043, 3, 1077, 538, 0, 5043, 932, 1, 0, 0, 0, 5044, 5045, 3, 1053, 526, 0, 5045, 5046, 3, 1087, 543, 0, 5046, 5047, 3, 1055, 527, 0, 5047, 934, 1, 0, 0, 0, 5048, 5049, 3, 1075, 537, 0, 5049, 5050, 3, 1089, 544, 0, 5050, 5051, 3, 1055, 527, 0, 5051, 5052, 3, 1081, 540, 0, 5052, 5053, 3, 1089, 544, 0, 5053, 5054, 3, 1063, 531, 0, 5054, 5055, 3, 1055, 527, 0, 5055, 5056, 3, 1091, 545, 0, 5056, 936, 1, 0, 0, 0, 5057, 5058, 3, 1053, 526, 0, 5058, 5059, 3, 1047, 523, 0, 5059, 5060, 3, 1085, 542, 0, 5060, 5061, 3, 1055, 527, 0, 5061, 938, 1, 0, 0, 0, 5062, 5063, 3, 1077, 538, 0, 5063, 5064, 3, 1047, 523, 0, 5064, 5065, 3, 1081, 540, 0, 5065, 5066, 3, 1047, 523, 0, 5066, 5067, 3, 1069, 534, 0, 5067, 5068, 3, 1069, 534, 0, 5068, 5069, 3, 1055, 527, 0, 5069, 5070, 3, 1069, 534, 0, 5070, 940, 1, 0, 0, 0, 5071, 5072, 3, 1091, 545, 0, 5072, 5073, 3, 1047, 523, 0, 5073, 5074, 3, 1063, 531, 0, 5074, 5075, 3, 1085, 542, 0, 5075, 942, 1, 0, 0, 0, 5076, 5077, 3, 1047, 523, 0, 5077, 5078, 3, 1073, 536, 0, 5078, 5079, 3, 1073, 536, 0, 5079, 5080, 3, 1075, 537, 0, 5080, 5081, 3, 1085, 542, 0, 5081, 5082, 3, 1047, 523, 0, 5082, 5083, 3, 1085, 542, 0, 5083, 5084, 3, 1063, 531, 0, 5084, 5085, 3, 1075, 537, 0, 5085, 5086, 3, 1073, 536, 0, 5086, 944, 1, 0, 0, 0, 5087, 5088, 3, 1049, 524, 0, 5088, 5089, 3, 1075, 537, 0, 5089, 5090, 3, 1087, 543, 0, 5090, 5091, 3, 1073, 536, 0, 5091, 5092, 3, 1053, 526, 0, 5092, 5093, 3, 1047, 523, 0, 5093, 5094, 3, 1081, 540, 0, 5094, 5095, 3, 1095, 547, 0, 5095, 946, 1, 0, 0, 0, 5096, 5097, 3, 1063, 531, 0, 5097, 5098, 3, 1073, 536, 0, 5098, 5099, 3, 1085, 542, 0, 5099, 5100, 3, 1055, 527, 0, 5100, 5101, 3, 1081, 540, 0, 5101, 5102, 3, 1081, 540, 0, 5102, 5103, 3, 1087, 543, 0, 5103, 5104, 3, 1077, 538, 0, 5104, 5105, 3, 1085, 542, 0, 5105, 5106, 3, 1063, 531, 0, 5106, 5107, 3, 1073, 536, 0, 5107, 5108, 3, 1059, 529, 0, 5108, 948, 1, 0, 0, 0, 5109, 5110, 3, 1073, 536, 0, 5110, 5111, 3, 1075, 537, 0, 5111, 5112, 3, 1073, 536, 0, 5112, 950, 1, 0, 0, 0, 5113, 5114, 3, 1071, 535, 0, 5114, 5115, 3, 1087, 543, 0, 5115, 5116, 3, 1069, 534, 0, 5116, 5117, 3, 1085, 542, 0, 5117, 5118, 3, 1063, 531, 0, 5118, 952, 1, 0, 0, 0, 5119, 5120, 3, 1049, 524, 0, 5120, 5121, 3, 1095, 547, 0, 5121, 954, 1, 0, 0, 0, 5122, 5123, 3, 1081, 540, 0, 5123, 5124, 3, 1055, 527, 0, 5124, 5125, 3, 1047, 523, 0, 5125, 5126, 3, 1053, 526, 0, 5126, 956, 1, 0, 0, 0, 5127, 5128, 3, 1091, 545, 0, 5128, 5129, 3, 1081, 540, 0, 5129, 5130, 3, 1063, 531, 0, 5130, 5131, 3, 1085, 542, 0, 5131, 5132, 3, 1055, 527, 0, 5132, 958, 1, 0, 0, 0, 5133, 5134, 3, 1053, 526, 0, 5134, 5135, 3, 1055, 527, 0, 5135, 5136, 3, 1083, 541, 0, 5136, 5137, 3, 1051, 525, 0, 5137, 5138, 3, 1081, 540, 0, 5138, 5139, 3, 1063, 531, 0, 5139, 5140, 3, 1077, 538, 0, 5140, 5141, 3, 1085, 542, 0, 5141, 5142, 3, 1063, 531, 0, 5142, 5143, 3, 1075, 537, 0, 5143, 5144, 3, 1073, 536, 0, 5144, 960, 1, 0, 0, 0, 5145, 5146, 3, 1053, 526, 0, 5146, 5147, 3, 1063, 531, 0, 5147, 5148, 3, 1083, 541, 0, 5148, 5149, 3, 1077, 538, 0, 5149, 5150, 3, 1069, 534, 0, 5150, 5151, 3, 1047, 523, 0, 5151, 5152, 3, 1095, 547, 0, 5152, 962, 1, 0, 0, 0, 5153, 5154, 3, 1075, 537, 0, 5154, 5155, 3, 1057, 528, 0, 5155, 5156, 3, 1057, 528, 0, 5156, 964, 1, 0, 0, 0, 5157, 5158, 3, 1087, 543, 0, 5158, 5159, 3, 1083, 541, 0, 5159, 5160, 3, 1055, 527, 0, 5160, 5161, 3, 1081, 540, 0, 5161, 5162, 3, 1083, 541, 0, 5162, 966, 1, 0, 0, 0, 5163, 5164, 5, 60, 0, 0, 5164, 5168, 5, 62, 0, 0, 5165, 5166, 5, 33, 0, 0, 5166, 5168, 5, 61, 0, 0, 5167, 5163, 1, 0, 0, 0, 5167, 5165, 1, 0, 0, 0, 5168, 968, 1, 0, 0, 0, 5169, 5170, 5, 60, 0, 0, 5170, 5171, 5, 61, 0, 0, 5171, 970, 1, 0, 0, 0, 5172, 5173, 5, 62, 0, 0, 5173, 5174, 5, 61, 0, 0, 5174, 972, 1, 0, 0, 0, 5175, 5176, 5, 61, 0, 0, 5176, 974, 1, 0, 0, 0, 5177, 5178, 5, 60, 0, 0, 5178, 976, 1, 0, 0, 0, 5179, 5180, 5, 62, 0, 0, 5180, 978, 1, 0, 0, 0, 5181, 5182, 5, 43, 0, 0, 5182, 980, 1, 0, 0, 0, 5183, 5184, 5, 45, 0, 0, 5184, 982, 1, 0, 0, 0, 5185, 5186, 5, 42, 0, 0, 5186, 984, 1, 0, 0, 0, 5187, 5188, 5, 47, 0, 0, 5188, 986, 1, 0, 0, 0, 5189, 5190, 5, 37, 0, 0, 5190, 988, 1, 0, 0, 0, 5191, 5192, 3, 1071, 535, 0, 5192, 5193, 3, 1075, 537, 0, 5193, 5194, 3, 1053, 526, 0, 5194, 990, 1, 0, 0, 0, 5195, 5196, 3, 1053, 526, 0, 5196, 5197, 3, 1063, 531, 0, 5197, 5198, 3, 1089, 544, 0, 5198, 992, 1, 0, 0, 0, 5199, 5200, 5, 59, 0, 0, 5200, 994, 1, 0, 0, 0, 5201, 5202, 5, 44, 0, 0, 5202, 996, 1, 0, 0, 0, 5203, 5204, 5, 46, 0, 0, 5204, 998, 1, 0, 0, 0, 5205, 5206, 5, 40, 0, 0, 5206, 1000, 1, 0, 0, 0, 5207, 5208, 5, 41, 0, 0, 5208, 1002, 1, 0, 0, 0, 5209, 5210, 5, 123, 0, 0, 5210, 1004, 1, 0, 0, 0, 5211, 5212, 5, 125, 0, 0, 5212, 1006, 1, 0, 0, 0, 5213, 5214, 5, 91, 0, 0, 5214, 1008, 1, 0, 0, 0, 5215, 5216, 5, 93, 0, 0, 5216, 1010, 1, 0, 0, 0, 5217, 5218, 5, 58, 0, 0, 5218, 1012, 1, 0, 0, 0, 5219, 5220, 5, 64, 0, 0, 5220, 1014, 1, 0, 0, 0, 5221, 5222, 5, 124, 0, 0, 5222, 1016, 1, 0, 0, 0, 5223, 5224, 5, 58, 0, 0, 5224, 5225, 5, 58, 0, 0, 5225, 1018, 1, 0, 0, 0, 5226, 5227, 5, 45, 0, 0, 5227, 5228, 5, 62, 0, 0, 5228, 1020, 1, 0, 0, 0, 5229, 5230, 5, 63, 0, 0, 5230, 1022, 1, 0, 0, 0, 5231, 5232, 5, 35, 0, 0, 5232, 1024, 1, 0, 0, 0, 5233, 5234, 5, 91, 0, 0, 5234, 5235, 5, 37, 0, 0, 5235, 5239, 1, 0, 0, 0, 5236, 5238, 9, 0, 0, 0, 5237, 5236, 1, 0, 0, 0, 5238, 5241, 1, 0, 0, 0, 5239, 5240, 1, 0, 0, 0, 5239, 5237, 1, 0, 0, 0, 5240, 5242, 1, 0, 0, 0, 5241, 5239, 1, 0, 0, 0, 5242, 5243, 5, 37, 0, 0, 5243, 5244, 5, 93, 0, 0, 5244, 1026, 1, 0, 0, 0, 5245, 5253, 5, 39, 0, 0, 5246, 5252, 8, 2, 0, 0, 5247, 5248, 5, 92, 0, 0, 5248, 5252, 9, 0, 0, 0, 5249, 5250, 5, 39, 0, 0, 5250, 5252, 5, 39, 0, 0, 5251, 5246, 1, 0, 0, 0, 5251, 5247, 1, 0, 0, 0, 5251, 5249, 1, 0, 0, 0, 5252, 5255, 1, 0, 0, 0, 5253, 5251, 1, 0, 0, 0, 5253, 5254, 1, 0, 0, 0, 5254, 5256, 1, 0, 0, 0, 5255, 5253, 1, 0, 0, 0, 5256, 5257, 5, 39, 0, 0, 5257, 1028, 1, 0, 0, 0, 5258, 5259, 5, 36, 0, 0, 5259, 5260, 5, 36, 0, 0, 5260, 5264, 1, 0, 0, 0, 5261, 5263, 9, 0, 0, 0, 5262, 5261, 1, 0, 0, 0, 5263, 5266, 1, 0, 0, 0, 5264, 5265, 1, 0, 0, 0, 5264, 5262, 1, 0, 0, 0, 5265, 5267, 1, 0, 0, 0, 5266, 5264, 1, 0, 0, 0, 5267, 5268, 5, 36, 0, 0, 5268, 5269, 5, 36, 0, 0, 5269, 1030, 1, 0, 0, 0, 5270, 5272, 5, 45, 0, 0, 5271, 5270, 1, 0, 0, 0, 5271, 5272, 1, 0, 0, 0, 5272, 5274, 1, 0, 0, 0, 5273, 5275, 3, 1045, 522, 0, 5274, 5273, 1, 0, 0, 0, 5275, 5276, 1, 0, 0, 0, 5276, 5274, 1, 0, 0, 0, 5276, 5277, 1, 0, 0, 0, 5277, 5284, 1, 0, 0, 0, 5278, 5280, 5, 46, 0, 0, 5279, 5281, 3, 1045, 522, 0, 5280, 5279, 1, 0, 0, 0, 5281, 5282, 1, 0, 0, 0, 5282, 5280, 1, 0, 0, 0, 5282, 5283, 1, 0, 0, 0, 5283, 5285, 1, 0, 0, 0, 5284, 5278, 1, 0, 0, 0, 5284, 5285, 1, 0, 0, 0, 5285, 5295, 1, 0, 0, 0, 5286, 5288, 7, 3, 0, 0, 5287, 5289, 7, 4, 0, 0, 5288, 5287, 1, 0, 0, 0, 5288, 5289, 1, 0, 0, 0, 5289, 5291, 1, 0, 0, 0, 5290, 5292, 3, 1045, 522, 0, 5291, 5290, 1, 0, 0, 0, 5292, 5293, 1, 0, 0, 0, 5293, 5291, 1, 0, 0, 0, 5293, 5294, 1, 0, 0, 0, 5294, 5296, 1, 0, 0, 0, 5295, 5286, 1, 0, 0, 0, 5295, 5296, 1, 0, 0, 0, 5296, 1032, 1, 0, 0, 0, 5297, 5299, 5, 36, 0, 0, 5298, 5300, 3, 1043, 521, 0, 5299, 5298, 1, 0, 0, 0, 5300, 5301, 1, 0, 0, 0, 5301, 5299, 1, 0, 0, 0, 5301, 5302, 1, 0, 0, 0, 5302, 1034, 1, 0, 0, 0, 5303, 5307, 3, 1041, 520, 0, 5304, 5306, 3, 1043, 521, 0, 5305, 5304, 1, 0, 0, 0, 5306, 5309, 1, 0, 0, 0, 5307, 5305, 1, 0, 0, 0, 5307, 5308, 1, 0, 0, 0, 5308, 1036, 1, 0, 0, 0, 5309, 5307, 1, 0, 0, 0, 5310, 5318, 3, 1041, 520, 0, 5311, 5313, 3, 1043, 521, 0, 5312, 5311, 1, 0, 0, 0, 5313, 5316, 1, 0, 0, 0, 5314, 5312, 1, 0, 0, 0, 5314, 5315, 1, 0, 0, 0, 5315, 5317, 1, 0, 0, 0, 5316, 5314, 1, 0, 0, 0, 5317, 5319, 5, 45, 0, 0, 5318, 5314, 1, 0, 0, 0, 5319, 5320, 1, 0, 0, 0, 5320, 5318, 1, 0, 0, 0, 5320, 5321, 1, 0, 0, 0, 5321, 5325, 1, 0, 0, 0, 5322, 5324, 3, 1043, 521, 0, 5323, 5322, 1, 0, 0, 0, 5324, 5327, 1, 0, 0, 0, 5325, 5323, 1, 0, 0, 0, 5325, 5326, 1, 0, 0, 0, 5326, 1038, 1, 0, 0, 0, 5327, 5325, 1, 0, 0, 0, 5328, 5332, 5, 34, 0, 0, 5329, 5331, 8, 5, 0, 0, 5330, 5329, 1, 0, 0, 0, 5331, 5334, 1, 0, 0, 0, 5332, 5330, 1, 0, 0, 0, 5332, 5333, 1, 0, 0, 0, 5333, 5335, 1, 0, 0, 0, 5334, 5332, 1, 0, 0, 0, 5335, 5345, 5, 34, 0, 0, 5336, 5340, 5, 96, 0, 0, 5337, 5339, 8, 6, 0, 0, 5338, 5337, 1, 0, 0, 0, 5339, 5342, 1, 0, 0, 0, 5340, 5338, 1, 0, 0, 0, 5340, 5341, 1, 0, 0, 0, 5341, 5343, 1, 0, 0, 0, 5342, 5340, 1, 0, 0, 0, 5343, 5345, 5, 96, 0, 0, 5344, 5328, 1, 0, 0, 0, 5344, 5336, 1, 0, 0, 0, 5345, 1040, 1, 0, 0, 0, 5346, 5347, 7, 7, 0, 0, 5347, 1042, 1, 0, 0, 0, 5348, 5349, 7, 8, 0, 0, 5349, 1044, 1, 0, 0, 0, 5350, 5351, 7, 9, 0, 0, 5351, 1046, 1, 0, 0, 0, 5352, 5353, 7, 10, 0, 0, 5353, 1048, 1, 0, 0, 0, 5354, 5355, 7, 11, 0, 0, 5355, 1050, 1, 0, 0, 0, 5356, 5357, 7, 12, 0, 0, 5357, 1052, 1, 0, 0, 0, 5358, 5359, 7, 13, 0, 0, 5359, 1054, 1, 0, 0, 0, 5360, 5361, 7, 3, 0, 0, 5361, 1056, 1, 0, 0, 0, 5362, 5363, 7, 14, 0, 0, 5363, 1058, 1, 0, 0, 0, 5364, 5365, 7, 15, 0, 0, 5365, 1060, 1, 0, 0, 0, 5366, 5367, 7, 16, 0, 0, 5367, 1062, 1, 0, 0, 0, 5368, 5369, 7, 17, 0, 0, 5369, 1064, 1, 0, 0, 0, 5370, 5371, 7, 18, 0, 0, 5371, 1066, 1, 0, 0, 0, 5372, 5373, 7, 19, 0, 0, 5373, 1068, 1, 0, 0, 0, 5374, 5375, 7, 20, 0, 0, 5375, 1070, 1, 0, 0, 0, 5376, 5377, 7, 21, 0, 0, 5377, 1072, 1, 0, 0, 0, 5378, 5379, 7, 22, 0, 0, 5379, 1074, 1, 0, 0, 0, 5380, 5381, 7, 23, 0, 0, 5381, 1076, 1, 0, 0, 0, 5382, 5383, 7, 24, 0, 0, 5383, 1078, 1, 0, 0, 0, 5384, 5385, 7, 25, 0, 0, 5385, 1080, 1, 0, 0, 0, 5386, 5387, 7, 26, 0, 0, 5387, 1082, 1, 0, 0, 0, 5388, 5389, 7, 27, 0, 0, 5389, 1084, 1, 0, 0, 0, 5390, 5391, 7, 28, 0, 0, 5391, 1086, 1, 0, 0, 0, 5392, 5393, 7, 29, 0, 0, 5393, 1088, 1, 0, 0, 0, 5394, 5395, 7, 30, 0, 0, 5395, 1090, 1, 0, 0, 0, 5396, 5397, 7, 31, 0, 0, 5397, 1092, 1, 0, 0, 0, 5398, 5399, 7, 32, 0, 0, 5399, 1094, 1, 0, 0, 0, 5400, 5401, 7, 33, 0, 0, 5401, 1096, 1, 0, 0, 0, 5402, 5403, 7, 34, 0, 0, 5403, 1098, 1, 0, 0, 0, 46, 0, 1102, 1113, 1125, 1139, 1149, 1157, 1169, 1182, 1197, 1210, 1222, 1252, 1265, 1279, 1287, 1342, 1353, 1361, 1370, 1434, 1445, 1452, 1459, 1517, 1813, 5167, 5239, 5251, 5253, 5264, 5271, 5276, 5282, 5284, 5288, 5293, 5295, 5301, 5307, 5314, 5320, 5325, 5332, 5340, 5344, 1, 6, 0, 0] \ No newline at end of file diff --git a/mdl/grammar/parser/MDLLexer.tokens b/mdl/grammar/parser/MDLLexer.tokens index 83ae116..2aa155b 100644 --- a/mdl/grammar/parser/MDLLexer.tokens +++ b/mdl/grammar/parser/MDLLexer.tokens @@ -178,366 +178,369 @@ INPUTREFERENCESETSELECTOR=177 FILEINPUT=178 IMAGEINPUT=179 CUSTOMWIDGET=180 -TEXTFILTER=181 -NUMBERFILTER=182 -DROPDOWNFILTER=183 -DATEFILTER=184 -FILTER=185 -WIDGET=186 -WIDGETS=187 -CAPTION=188 -ICON=189 -TOOLTIP=190 -DATASOURCE=191 -SOURCE_KW=192 -SELECTION=193 -FOOTER=194 -HEADER=195 -CONTENT=196 -RENDERMODE=197 -BINDS=198 -ATTR=199 -CONTENTPARAMS=200 -CAPTIONPARAMS=201 -PARAMS=202 -VARIABLES_KW=203 -DESKTOPWIDTH=204 -TABLETWIDTH=205 -PHONEWIDTH=206 -CLASS=207 -STYLE=208 -BUTTONSTYLE=209 -DESIGN=210 -PROPERTIES=211 -DESIGNPROPERTIES=212 -STYLING=213 -CLEAR=214 -WIDTH=215 -HEIGHT=216 -AUTOFILL=217 -URL=218 -FOLDER=219 -PASSING=220 -CONTEXT=221 -EDITABLE=222 -READONLY=223 -ATTRIBUTES=224 -FILTERTYPE=225 -IMAGE=226 -COLLECTION=227 -STATICIMAGE=228 -DYNAMICIMAGE=229 -CUSTOMCONTAINER=230 -GROUPBOX=231 -VISIBLE=232 -SAVECHANGES=233 -SAVE_CHANGES=234 -CANCEL_CHANGES=235 -CLOSE_PAGE=236 -SHOW_PAGE=237 -DELETE_ACTION=238 -DELETE_OBJECT=239 -CREATE_OBJECT=240 -CALL_MICROFLOW=241 -CALL_NANOFLOW=242 -OPEN_LINK=243 -SIGN_OUT=244 -CANCEL=245 -PRIMARY=246 -SUCCESS=247 -DANGER=248 -WARNING_STYLE=249 -INFO_STYLE=250 -TEMPLATE=251 -ONCLICK=252 -ONCHANGE=253 -TABINDEX=254 -H1=255 -H2=256 -H3=257 -H4=258 -H5=259 -H6=260 -PARAGRAPH=261 -STRING_TYPE=262 -INTEGER_TYPE=263 -LONG_TYPE=264 -DECIMAL_TYPE=265 -BOOLEAN_TYPE=266 -DATETIME_TYPE=267 -DATE_TYPE=268 -AUTONUMBER_TYPE=269 -BINARY_TYPE=270 -HASHEDSTRING_TYPE=271 -CURRENCY_TYPE=272 -FLOAT_TYPE=273 -STRINGTEMPLATE_TYPE=274 -ENUM_TYPE=275 -COUNT=276 -SUM=277 -AVG=278 -MIN=279 -MAX=280 -LENGTH=281 -TRIM=282 -COALESCE=283 -CAST=284 -AND=285 -OR=286 -NOT=287 -NULL=288 -IN=289 -BETWEEN=290 -LIKE=291 -MATCH=292 -EXISTS=293 -UNIQUE=294 -DEFAULT=295 -TRUE=296 -FALSE=297 -VALIDATION=298 -FEEDBACK=299 -RULE=300 -REQUIRED=301 -ERROR=302 -RAISE=303 -RANGE=304 -REGEX=305 -PATTERN=306 -EXPRESSION=307 -XPATH=308 -CONSTRAINT=309 -CALCULATED=310 -REST=311 -SERVICE=312 -SERVICES=313 -ODATA=314 -BASE=315 -AUTH=316 -AUTHENTICATION=317 -BASIC=318 -NOTHING=319 -OAUTH=320 -OPERATION=321 -METHOD=322 -PATH=323 -TIMEOUT=324 -BODY=325 -RESPONSE=326 -REQUEST=327 -SEND=328 -JSON=329 -XML=330 -STATUS=331 -FILE_KW=332 -VERSION=333 -GET=334 -POST=335 -PUT=336 -PATCH=337 -API=338 -CLIENT=339 -CLIENTS=340 -PUBLISH=341 -PUBLISHED=342 -EXPOSE=343 -CONTRACT=344 -NAMESPACE_KW=345 -SESSION=346 -GUEST=347 -PAGING=348 -NOT_SUPPORTED=349 -USERNAME=350 -PASSWORD=351 -CONNECTION=352 -DATABASE=353 -QUERY=354 -MAP=355 -MAPPING=356 -IMPORT=357 -INTO=358 -BATCH=359 -LINK=360 -EXPORT=361 -GENERATE=362 -CONNECTOR=363 -EXEC=364 -TABLES=365 -VIEWS=366 -EXPOSED=367 -PARAMETER=368 -PARAMETERS=369 -HEADERS=370 -NAVIGATION=371 -MENU_KW=372 -HOMES=373 -HOME=374 -LOGIN=375 -FOUND=376 -MODULES=377 -ENTITIES=378 -ASSOCIATIONS=379 -MICROFLOWS=380 -NANOFLOWS=381 -WORKFLOWS=382 -ENUMERATIONS=383 -CONSTANTS=384 -CONNECTIONS=385 -DEFINE=386 -FRAGMENT=387 -FRAGMENTS=388 -INSERT=389 -BEFORE=390 -AFTER=391 -UPDATE=392 -REFRESH=393 -CHECK=394 -BUILD=395 -EXECUTE=396 -SCRIPT=397 -LINT=398 -RULES=399 -TEXT=400 -SARIF=401 -MESSAGE=402 -MESSAGES=403 -CHANNELS=404 -COMMENT=405 -CATALOG=406 -FORCE=407 -BACKGROUND=408 -CALLERS=409 -CALLEES=410 -REFERENCES=411 -TRANSITIVE=412 -IMPACT=413 -DEPTH=414 -STRUCTURE=415 -TYPE=416 -VALUE=417 -VALUES=418 -SINGLE=419 -MULTIPLE=420 -NONE=421 -BOTH=422 -TO=423 -OF=424 -OVER=425 -FOR=426 -REPLACE=427 -MEMBERS=428 -ATTRIBUTE_NAME=429 -FORMAT=430 -SQL=431 -WITHOUT=432 -DRY=433 -RUN=434 -WIDGETTYPE=435 -V3=436 -BUSINESS=437 -EVENT=438 -SUBSCRIBE=439 -SETTINGS=440 -CONFIGURATION=441 -SECURITY=442 -ROLE=443 -ROLES=444 -GRANT=445 -REVOKE=446 -PRODUCTION=447 -PROTOTYPE=448 -MANAGE=449 -DEMO=450 -MATRIX=451 -APPLY=452 -ACCESS=453 -LEVEL=454 -USER=455 -TASK=456 -DECISION=457 -SPLIT=458 -OUTCOMES=459 -TARGETING=460 -NOTIFICATION=461 -TIMER=462 -JUMP=463 -DUE=464 -OVERVIEW=465 -DATE=466 -PARALLEL=467 -WAIT=468 -ANNOTATION=469 -BOUNDARY=470 -INTERRUPTING=471 -NON=472 -MULTI=473 -BY=474 -READ=475 -WRITE=476 -DESCRIPTION=477 -DISPLAY=478 -OFF=479 -USERS=480 -NOT_EQUALS=481 -LESS_THAN_OR_EQUAL=482 -GREATER_THAN_OR_EQUAL=483 -EQUALS=484 -LESS_THAN=485 -GREATER_THAN=486 -PLUS=487 -MINUS=488 -STAR=489 -SLASH=490 -PERCENT=491 -MOD=492 -DIV=493 -SEMICOLON=494 -COMMA=495 -DOT=496 -LPAREN=497 -RPAREN=498 -LBRACE=499 -RBRACE=500 -LBRACKET=501 -RBRACKET=502 -COLON=503 -AT=504 -PIPE=505 -DOUBLE_COLON=506 -ARROW=507 -QUESTION=508 -HASH=509 -MENDIX_TOKEN=510 -STRING_LITERAL=511 -DOLLAR_STRING=512 -NUMBER_LITERAL=513 -VARIABLE=514 -IDENTIFIER=515 -HYPHENATED_ID=516 -QUOTED_IDENTIFIER=517 -'<='=482 -'>='=483 -'='=484 -'<'=485 -'>'=486 -'+'=487 -'-'=488 -'*'=489 -'/'=490 -'%'=491 -';'=494 -','=495 -'.'=496 -'('=497 -')'=498 -'{'=499 -'}'=500 -'['=501 -']'=502 -':'=503 -'@'=504 -'|'=505 -'::'=506 -'->'=507 -'?'=508 -'#'=509 +PLUGGABLEWIDGET=181 +TEXTFILTER=182 +NUMBERFILTER=183 +DROPDOWNFILTER=184 +DATEFILTER=185 +FILTER=186 +WIDGET=187 +WIDGETS=188 +CAPTION=189 +ICON=190 +TOOLTIP=191 +DATASOURCE=192 +SOURCE_KW=193 +SELECTION=194 +FOOTER=195 +HEADER=196 +CONTENT=197 +RENDERMODE=198 +BINDS=199 +ATTR=200 +CONTENTPARAMS=201 +CAPTIONPARAMS=202 +PARAMS=203 +VARIABLES_KW=204 +DESKTOPWIDTH=205 +TABLETWIDTH=206 +PHONEWIDTH=207 +CLASS=208 +STYLE=209 +BUTTONSTYLE=210 +DESIGN=211 +PROPERTIES=212 +DESIGNPROPERTIES=213 +STYLING=214 +CLEAR=215 +WIDTH=216 +HEIGHT=217 +AUTOFILL=218 +URL=219 +FOLDER=220 +PASSING=221 +CONTEXT=222 +EDITABLE=223 +READONLY=224 +ATTRIBUTES=225 +FILTERTYPE=226 +IMAGE=227 +COLLECTION=228 +STATICIMAGE=229 +DYNAMICIMAGE=230 +CUSTOMCONTAINER=231 +TABCONTAINER=232 +TABPAGE=233 +GROUPBOX=234 +VISIBLE=235 +SAVECHANGES=236 +SAVE_CHANGES=237 +CANCEL_CHANGES=238 +CLOSE_PAGE=239 +SHOW_PAGE=240 +DELETE_ACTION=241 +DELETE_OBJECT=242 +CREATE_OBJECT=243 +CALL_MICROFLOW=244 +CALL_NANOFLOW=245 +OPEN_LINK=246 +SIGN_OUT=247 +CANCEL=248 +PRIMARY=249 +SUCCESS=250 +DANGER=251 +WARNING_STYLE=252 +INFO_STYLE=253 +TEMPLATE=254 +ONCLICK=255 +ONCHANGE=256 +TABINDEX=257 +H1=258 +H2=259 +H3=260 +H4=261 +H5=262 +H6=263 +PARAGRAPH=264 +STRING_TYPE=265 +INTEGER_TYPE=266 +LONG_TYPE=267 +DECIMAL_TYPE=268 +BOOLEAN_TYPE=269 +DATETIME_TYPE=270 +DATE_TYPE=271 +AUTONUMBER_TYPE=272 +BINARY_TYPE=273 +HASHEDSTRING_TYPE=274 +CURRENCY_TYPE=275 +FLOAT_TYPE=276 +STRINGTEMPLATE_TYPE=277 +ENUM_TYPE=278 +COUNT=279 +SUM=280 +AVG=281 +MIN=282 +MAX=283 +LENGTH=284 +TRIM=285 +COALESCE=286 +CAST=287 +AND=288 +OR=289 +NOT=290 +NULL=291 +IN=292 +BETWEEN=293 +LIKE=294 +MATCH=295 +EXISTS=296 +UNIQUE=297 +DEFAULT=298 +TRUE=299 +FALSE=300 +VALIDATION=301 +FEEDBACK=302 +RULE=303 +REQUIRED=304 +ERROR=305 +RAISE=306 +RANGE=307 +REGEX=308 +PATTERN=309 +EXPRESSION=310 +XPATH=311 +CONSTRAINT=312 +CALCULATED=313 +REST=314 +SERVICE=315 +SERVICES=316 +ODATA=317 +BASE=318 +AUTH=319 +AUTHENTICATION=320 +BASIC=321 +NOTHING=322 +OAUTH=323 +OPERATION=324 +METHOD=325 +PATH=326 +TIMEOUT=327 +BODY=328 +RESPONSE=329 +REQUEST=330 +SEND=331 +JSON=332 +XML=333 +STATUS=334 +FILE_KW=335 +VERSION=336 +GET=337 +POST=338 +PUT=339 +PATCH=340 +API=341 +CLIENT=342 +CLIENTS=343 +PUBLISH=344 +PUBLISHED=345 +EXPOSE=346 +CONTRACT=347 +NAMESPACE_KW=348 +SESSION=349 +GUEST=350 +PAGING=351 +NOT_SUPPORTED=352 +USERNAME=353 +PASSWORD=354 +CONNECTION=355 +DATABASE=356 +QUERY=357 +MAP=358 +MAPPING=359 +IMPORT=360 +INTO=361 +BATCH=362 +LINK=363 +EXPORT=364 +GENERATE=365 +CONNECTOR=366 +EXEC=367 +TABLES=368 +VIEWS=369 +EXPOSED=370 +PARAMETER=371 +PARAMETERS=372 +HEADERS=373 +NAVIGATION=374 +MENU_KW=375 +HOMES=376 +HOME=377 +LOGIN=378 +FOUND=379 +MODULES=380 +ENTITIES=381 +ASSOCIATIONS=382 +MICROFLOWS=383 +NANOFLOWS=384 +WORKFLOWS=385 +ENUMERATIONS=386 +CONSTANTS=387 +CONNECTIONS=388 +DEFINE=389 +FRAGMENT=390 +FRAGMENTS=391 +INSERT=392 +BEFORE=393 +AFTER=394 +UPDATE=395 +REFRESH=396 +CHECK=397 +BUILD=398 +EXECUTE=399 +SCRIPT=400 +LINT=401 +RULES=402 +TEXT=403 +SARIF=404 +MESSAGE=405 +MESSAGES=406 +CHANNELS=407 +COMMENT=408 +CATALOG=409 +FORCE=410 +BACKGROUND=411 +CALLERS=412 +CALLEES=413 +REFERENCES=414 +TRANSITIVE=415 +IMPACT=416 +DEPTH=417 +STRUCTURE=418 +TYPE=419 +VALUE=420 +VALUES=421 +SINGLE=422 +MULTIPLE=423 +NONE=424 +BOTH=425 +TO=426 +OF=427 +OVER=428 +FOR=429 +REPLACE=430 +MEMBERS=431 +ATTRIBUTE_NAME=432 +FORMAT=433 +SQL=434 +WITHOUT=435 +DRY=436 +RUN=437 +WIDGETTYPE=438 +V3=439 +BUSINESS=440 +EVENT=441 +SUBSCRIBE=442 +SETTINGS=443 +CONFIGURATION=444 +SECURITY=445 +ROLE=446 +ROLES=447 +GRANT=448 +REVOKE=449 +PRODUCTION=450 +PROTOTYPE=451 +MANAGE=452 +DEMO=453 +MATRIX=454 +APPLY=455 +ACCESS=456 +LEVEL=457 +USER=458 +TASK=459 +DECISION=460 +SPLIT=461 +OUTCOMES=462 +TARGETING=463 +NOTIFICATION=464 +TIMER=465 +JUMP=466 +DUE=467 +OVERVIEW=468 +DATE=469 +PARALLEL=470 +WAIT=471 +ANNOTATION=472 +BOUNDARY=473 +INTERRUPTING=474 +NON=475 +MULTI=476 +BY=477 +READ=478 +WRITE=479 +DESCRIPTION=480 +DISPLAY=481 +OFF=482 +USERS=483 +NOT_EQUALS=484 +LESS_THAN_OR_EQUAL=485 +GREATER_THAN_OR_EQUAL=486 +EQUALS=487 +LESS_THAN=488 +GREATER_THAN=489 +PLUS=490 +MINUS=491 +STAR=492 +SLASH=493 +PERCENT=494 +MOD=495 +DIV=496 +SEMICOLON=497 +COMMA=498 +DOT=499 +LPAREN=500 +RPAREN=501 +LBRACE=502 +RBRACE=503 +LBRACKET=504 +RBRACKET=505 +COLON=506 +AT=507 +PIPE=508 +DOUBLE_COLON=509 +ARROW=510 +QUESTION=511 +HASH=512 +MENDIX_TOKEN=513 +STRING_LITERAL=514 +DOLLAR_STRING=515 +NUMBER_LITERAL=516 +VARIABLE=517 +IDENTIFIER=518 +HYPHENATED_ID=519 +QUOTED_IDENTIFIER=520 +'<='=485 +'>='=486 +'='=487 +'<'=488 +'>'=489 +'+'=490 +'-'=491 +'*'=492 +'/'=493 +'%'=494 +';'=497 +','=498 +'.'=499 +'('=500 +')'=501 +'{'=502 +'}'=503 +'['=504 +']'=505 +':'=506 +'@'=507 +'|'=508 +'::'=509 +'->'=510 +'?'=511 +'#'=512 diff --git a/mdl/grammar/parser/MDLParser.interp b/mdl/grammar/parser/MDLParser.interp index 06c8944..75b6e20 100644 --- a/mdl/grammar/parser/MDLParser.interp +++ b/mdl/grammar/parser/MDLParser.interp @@ -481,6 +481,9 @@ null null null null +null +null +null '<=' '>=' '=' @@ -700,6 +703,7 @@ INPUTREFERENCESETSELECTOR FILEINPUT IMAGEINPUT CUSTOMWIDGET +PLUGGABLEWIDGET TEXTFILTER NUMBERFILTER DROPDOWNFILTER @@ -750,6 +754,8 @@ COLLECTION STATICIMAGE DYNAMICIMAGE CUSTOMCONTAINER +TABCONTAINER +TABPAGE GROUPBOX VISIBLE SAVECHANGES @@ -1409,4 +1415,4 @@ keyword atn: -[4, 1, 517, 6079, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 1, 0, 5, 0, 736, 8, 0, 10, 0, 12, 0, 739, 9, 0, 1, 0, 1, 0, 1, 1, 3, 1, 744, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 749, 8, 1, 1, 1, 3, 1, 752, 8, 1, 1, 1, 3, 1, 755, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 764, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 772, 8, 3, 10, 3, 12, 3, 775, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 781, 8, 3, 10, 3, 12, 3, 784, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 789, 8, 3, 3, 3, 791, 8, 3, 1, 3, 1, 3, 3, 3, 795, 8, 3, 1, 4, 3, 4, 798, 8, 4, 1, 4, 5, 4, 801, 8, 4, 10, 4, 12, 4, 804, 9, 4, 1, 4, 1, 4, 1, 4, 3, 4, 809, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 835, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 841, 8, 5, 11, 5, 12, 5, 842, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 849, 8, 5, 11, 5, 12, 5, 850, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 857, 8, 5, 11, 5, 12, 5, 858, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 865, 8, 5, 11, 5, 12, 5, 866, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 877, 8, 5, 10, 5, 12, 5, 880, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 890, 8, 5, 10, 5, 12, 5, 893, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 903, 8, 5, 11, 5, 12, 5, 904, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 915, 8, 5, 11, 5, 12, 5, 916, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 926, 8, 5, 11, 5, 12, 5, 927, 1, 5, 1, 5, 3, 5, 932, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 938, 8, 6, 10, 6, 12, 6, 941, 9, 6, 1, 6, 1, 6, 1, 6, 3, 6, 946, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 963, 8, 7, 1, 8, 1, 8, 3, 8, 967, 8, 8, 1, 8, 1, 8, 3, 8, 971, 8, 8, 1, 8, 1, 8, 3, 8, 975, 8, 8, 1, 8, 1, 8, 3, 8, 979, 8, 8, 1, 8, 1, 8, 3, 8, 983, 8, 8, 1, 8, 1, 8, 3, 8, 987, 8, 8, 3, 8, 989, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 1000, 8, 9, 10, 9, 12, 9, 1003, 9, 9, 1, 9, 1, 9, 3, 9, 1007, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 1019, 8, 9, 10, 9, 12, 9, 1022, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1030, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1043, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1059, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 1066, 8, 13, 10, 13, 12, 13, 1069, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1091, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 1103, 8, 17, 10, 17, 12, 17, 1106, 9, 17, 1, 17, 3, 17, 1109, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1118, 8, 18, 1, 18, 3, 18, 1121, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 1127, 8, 18, 10, 18, 12, 18, 1130, 9, 18, 1, 18, 1, 18, 3, 18, 1134, 8, 18, 3, 18, 1136, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1211, 8, 19, 3, 19, 1213, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1226, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1237, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1246, 8, 21, 3, 21, 1248, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1259, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1265, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1273, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1284, 8, 21, 3, 21, 1286, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1294, 8, 21, 3, 21, 1296, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1315, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1323, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1339, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1363, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1379, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1463, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1472, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1478, 8, 39, 10, 39, 12, 39, 1481, 9, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1494, 8, 41, 1, 42, 1, 42, 1, 42, 5, 42, 1499, 8, 42, 10, 42, 12, 42, 1502, 9, 42, 1, 43, 1, 43, 1, 43, 5, 43, 1507, 8, 43, 10, 43, 12, 43, 1510, 9, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1521, 8, 44, 10, 44, 12, 44, 1524, 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1534, 8, 44, 10, 44, 12, 44, 1537, 9, 44, 1, 44, 3, 44, 1540, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1546, 8, 45, 1, 45, 3, 45, 1549, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1555, 8, 45, 1, 45, 3, 45, 1558, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1564, 8, 45, 1, 45, 1, 45, 3, 45, 1568, 8, 45, 1, 45, 1, 45, 3, 45, 1572, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1578, 8, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1583, 8, 45, 1, 45, 3, 45, 1586, 8, 45, 3, 45, 1588, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1594, 8, 46, 1, 47, 1, 47, 3, 47, 1598, 8, 47, 1, 47, 1, 47, 3, 47, 1602, 8, 47, 1, 47, 3, 47, 1605, 8, 47, 1, 48, 1, 48, 3, 48, 1609, 8, 48, 1, 48, 5, 48, 1612, 8, 48, 10, 48, 12, 48, 1615, 9, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1621, 8, 49, 1, 50, 1, 50, 1, 50, 5, 50, 1626, 8, 50, 10, 50, 12, 50, 1629, 9, 50, 1, 51, 3, 51, 1632, 8, 51, 1, 51, 5, 51, 1635, 8, 51, 10, 51, 12, 51, 1638, 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 1644, 8, 51, 10, 51, 12, 51, 1647, 9, 51, 1, 52, 1, 52, 1, 52, 3, 52, 1652, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 1657, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1663, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1668, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1673, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1678, 8, 53, 1, 53, 1, 53, 3, 53, 1682, 8, 53, 1, 53, 3, 53, 1685, 8, 53, 3, 53, 1687, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1693, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1725, 8, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1733, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1754, 8, 56, 1, 57, 3, 57, 1757, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 1766, 8, 58, 10, 58, 12, 58, 1769, 9, 58, 1, 59, 1, 59, 3, 59, 1773, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 1778, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1787, 8, 61, 1, 62, 4, 62, 1790, 8, 62, 11, 62, 12, 62, 1791, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1804, 8, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1831, 8, 65, 10, 65, 12, 65, 1834, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1841, 8, 65, 10, 65, 12, 65, 1844, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1874, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1888, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1895, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1908, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1915, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1923, 8, 68, 1, 69, 1, 69, 1, 69, 3, 69, 1928, 8, 69, 1, 70, 4, 70, 1931, 8, 70, 11, 70, 12, 70, 1932, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1939, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1947, 8, 72, 1, 73, 1, 73, 1, 73, 5, 73, 1952, 8, 73, 10, 73, 12, 73, 1955, 9, 73, 1, 74, 3, 74, 1958, 8, 74, 1, 74, 1, 74, 3, 74, 1962, 8, 74, 1, 74, 3, 74, 1965, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1982, 8, 75, 1, 76, 4, 76, 1985, 8, 76, 11, 76, 12, 76, 1986, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1996, 8, 78, 1, 78, 3, 78, 1999, 8, 78, 1, 79, 4, 79, 2002, 8, 79, 11, 79, 12, 79, 2003, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 2011, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 2017, 8, 81, 10, 81, 12, 81, 2020, 9, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 3, 83, 2033, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2069, 8, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2084, 8, 86, 1, 87, 1, 87, 1, 87, 5, 87, 2089, 8, 87, 10, 87, 12, 87, 2092, 9, 87, 1, 88, 1, 88, 1, 88, 5, 88, 2097, 8, 88, 10, 88, 12, 88, 2100, 9, 88, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 2106, 8, 89, 1, 89, 1, 89, 3, 89, 2110, 8, 89, 1, 89, 3, 89, 2113, 8, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 2119, 8, 89, 1, 89, 3, 89, 2122, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 2129, 8, 90, 1, 90, 1, 90, 3, 90, 2133, 8, 90, 1, 90, 3, 90, 2136, 8, 90, 1, 90, 1, 90, 1, 90, 3, 90, 2141, 8, 90, 1, 91, 1, 91, 1, 91, 5, 91, 2146, 8, 91, 10, 91, 12, 91, 2149, 9, 91, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2155, 8, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 5, 95, 2169, 8, 95, 10, 95, 12, 95, 2172, 9, 95, 1, 96, 1, 96, 3, 96, 2176, 8, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 3, 97, 2184, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 2190, 8, 98, 1, 99, 4, 99, 2193, 8, 99, 11, 99, 12, 99, 2194, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2201, 8, 100, 1, 101, 5, 101, 2204, 8, 101, 10, 101, 12, 101, 2207, 9, 101, 1, 102, 5, 102, 2210, 8, 102, 10, 102, 12, 102, 2213, 9, 102, 1, 102, 1, 102, 3, 102, 2217, 8, 102, 1, 102, 5, 102, 2220, 8, 102, 10, 102, 12, 102, 2223, 9, 102, 1, 102, 1, 102, 3, 102, 2227, 8, 102, 1, 102, 5, 102, 2230, 8, 102, 10, 102, 12, 102, 2233, 9, 102, 1, 102, 1, 102, 3, 102, 2237, 8, 102, 1, 102, 5, 102, 2240, 8, 102, 10, 102, 12, 102, 2243, 9, 102, 1, 102, 1, 102, 3, 102, 2247, 8, 102, 1, 102, 5, 102, 2250, 8, 102, 10, 102, 12, 102, 2253, 9, 102, 1, 102, 1, 102, 3, 102, 2257, 8, 102, 1, 102, 5, 102, 2260, 8, 102, 10, 102, 12, 102, 2263, 9, 102, 1, 102, 1, 102, 3, 102, 2267, 8, 102, 1, 102, 5, 102, 2270, 8, 102, 10, 102, 12, 102, 2273, 9, 102, 1, 102, 1, 102, 3, 102, 2277, 8, 102, 1, 102, 5, 102, 2280, 8, 102, 10, 102, 12, 102, 2283, 9, 102, 1, 102, 1, 102, 3, 102, 2287, 8, 102, 1, 102, 5, 102, 2290, 8, 102, 10, 102, 12, 102, 2293, 9, 102, 1, 102, 1, 102, 3, 102, 2297, 8, 102, 1, 102, 5, 102, 2300, 8, 102, 10, 102, 12, 102, 2303, 9, 102, 1, 102, 1, 102, 3, 102, 2307, 8, 102, 1, 102, 5, 102, 2310, 8, 102, 10, 102, 12, 102, 2313, 9, 102, 1, 102, 1, 102, 3, 102, 2317, 8, 102, 1, 102, 5, 102, 2320, 8, 102, 10, 102, 12, 102, 2323, 9, 102, 1, 102, 1, 102, 3, 102, 2327, 8, 102, 1, 102, 5, 102, 2330, 8, 102, 10, 102, 12, 102, 2333, 9, 102, 1, 102, 1, 102, 3, 102, 2337, 8, 102, 1, 102, 5, 102, 2340, 8, 102, 10, 102, 12, 102, 2343, 9, 102, 1, 102, 1, 102, 3, 102, 2347, 8, 102, 1, 102, 5, 102, 2350, 8, 102, 10, 102, 12, 102, 2353, 9, 102, 1, 102, 1, 102, 3, 102, 2357, 8, 102, 1, 102, 5, 102, 2360, 8, 102, 10, 102, 12, 102, 2363, 9, 102, 1, 102, 1, 102, 3, 102, 2367, 8, 102, 1, 102, 5, 102, 2370, 8, 102, 10, 102, 12, 102, 2373, 9, 102, 1, 102, 1, 102, 3, 102, 2377, 8, 102, 1, 102, 5, 102, 2380, 8, 102, 10, 102, 12, 102, 2383, 9, 102, 1, 102, 1, 102, 3, 102, 2387, 8, 102, 1, 102, 5, 102, 2390, 8, 102, 10, 102, 12, 102, 2393, 9, 102, 1, 102, 1, 102, 3, 102, 2397, 8, 102, 1, 102, 5, 102, 2400, 8, 102, 10, 102, 12, 102, 2403, 9, 102, 1, 102, 1, 102, 3, 102, 2407, 8, 102, 1, 102, 5, 102, 2410, 8, 102, 10, 102, 12, 102, 2413, 9, 102, 1, 102, 1, 102, 3, 102, 2417, 8, 102, 1, 102, 5, 102, 2420, 8, 102, 10, 102, 12, 102, 2423, 9, 102, 1, 102, 1, 102, 3, 102, 2427, 8, 102, 1, 102, 5, 102, 2430, 8, 102, 10, 102, 12, 102, 2433, 9, 102, 1, 102, 1, 102, 3, 102, 2437, 8, 102, 1, 102, 5, 102, 2440, 8, 102, 10, 102, 12, 102, 2443, 9, 102, 1, 102, 1, 102, 3, 102, 2447, 8, 102, 1, 102, 5, 102, 2450, 8, 102, 10, 102, 12, 102, 2453, 9, 102, 1, 102, 1, 102, 3, 102, 2457, 8, 102, 1, 102, 5, 102, 2460, 8, 102, 10, 102, 12, 102, 2463, 9, 102, 1, 102, 1, 102, 3, 102, 2467, 8, 102, 1, 102, 5, 102, 2470, 8, 102, 10, 102, 12, 102, 2473, 9, 102, 1, 102, 1, 102, 3, 102, 2477, 8, 102, 1, 102, 5, 102, 2480, 8, 102, 10, 102, 12, 102, 2483, 9, 102, 1, 102, 1, 102, 3, 102, 2487, 8, 102, 1, 102, 5, 102, 2490, 8, 102, 10, 102, 12, 102, 2493, 9, 102, 1, 102, 1, 102, 3, 102, 2497, 8, 102, 1, 102, 5, 102, 2500, 8, 102, 10, 102, 12, 102, 2503, 9, 102, 1, 102, 1, 102, 3, 102, 2507, 8, 102, 1, 102, 5, 102, 2510, 8, 102, 10, 102, 12, 102, 2513, 9, 102, 1, 102, 1, 102, 3, 102, 2517, 8, 102, 1, 102, 5, 102, 2520, 8, 102, 10, 102, 12, 102, 2523, 9, 102, 1, 102, 1, 102, 3, 102, 2527, 8, 102, 1, 102, 5, 102, 2530, 8, 102, 10, 102, 12, 102, 2533, 9, 102, 1, 102, 1, 102, 3, 102, 2537, 8, 102, 3, 102, 2539, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2546, 8, 103, 1, 104, 1, 104, 1, 104, 3, 104, 2551, 8, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 3, 105, 2558, 8, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 2564, 8, 105, 1, 105, 3, 105, 2567, 8, 105, 1, 105, 3, 105, 2570, 8, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 2576, 8, 106, 1, 106, 3, 106, 2579, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 2585, 8, 107, 4, 107, 2587, 8, 107, 11, 107, 12, 107, 2588, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 2595, 8, 108, 1, 108, 3, 108, 2598, 8, 108, 1, 108, 3, 108, 2601, 8, 108, 1, 109, 1, 109, 1, 109, 3, 109, 2606, 8, 109, 1, 110, 1, 110, 1, 110, 3, 110, 2611, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 2620, 8, 111, 3, 111, 2622, 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 5, 111, 2628, 8, 111, 10, 111, 12, 111, 2631, 9, 111, 3, 111, 2633, 8, 111, 1, 111, 1, 111, 3, 111, 2637, 8, 111, 1, 111, 1, 111, 3, 111, 2641, 8, 111, 1, 111, 3, 111, 2644, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 2656, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 2678, 8, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 5, 114, 2689, 8, 114, 10, 114, 12, 114, 2692, 9, 114, 1, 114, 1, 114, 3, 114, 2696, 8, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 2706, 8, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 3, 116, 2716, 8, 116, 1, 116, 1, 116, 1, 116, 3, 116, 2721, 8, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 3, 119, 2729, 8, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 3, 121, 2736, 8, 121, 1, 121, 1, 121, 3, 121, 2740, 8, 121, 1, 121, 1, 121, 3, 121, 2744, 8, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, 2753, 8, 123, 10, 123, 12, 123, 2756, 9, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2762, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 3, 127, 2776, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 2783, 8, 127, 1, 127, 1, 127, 3, 127, 2787, 8, 127, 1, 128, 1, 128, 3, 128, 2791, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 2799, 8, 128, 1, 128, 1, 128, 3, 128, 2803, 8, 128, 1, 129, 1, 129, 3, 129, 2807, 8, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 2817, 8, 129, 3, 129, 2819, 8, 129, 1, 129, 1, 129, 3, 129, 2823, 8, 129, 1, 129, 3, 129, 2826, 8, 129, 1, 129, 1, 129, 1, 129, 3, 129, 2831, 8, 129, 1, 129, 3, 129, 2834, 8, 129, 1, 129, 3, 129, 2837, 8, 129, 1, 130, 1, 130, 3, 130, 2841, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 2849, 8, 130, 1, 130, 1, 130, 3, 130, 2853, 8, 130, 1, 131, 1, 131, 1, 131, 5, 131, 2858, 8, 131, 10, 131, 12, 131, 2861, 9, 131, 1, 132, 1, 132, 3, 132, 2865, 8, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 2875, 8, 133, 1, 133, 3, 133, 2878, 8, 133, 1, 133, 1, 133, 3, 133, 2882, 8, 133, 1, 133, 1, 133, 3, 133, 2886, 8, 133, 1, 134, 1, 134, 1, 134, 5, 134, 2891, 8, 134, 10, 134, 12, 134, 2894, 9, 134, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 2900, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 2906, 8, 135, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 2920, 8, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 2927, 8, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2942, 8, 140, 1, 141, 1, 141, 3, 141, 2946, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2953, 8, 141, 1, 141, 5, 141, 2956, 8, 141, 10, 141, 12, 141, 2959, 9, 141, 1, 141, 3, 141, 2962, 8, 141, 1, 141, 3, 141, 2965, 8, 141, 1, 141, 3, 141, 2968, 8, 141, 1, 141, 1, 141, 3, 141, 2972, 8, 141, 1, 142, 1, 142, 1, 143, 1, 143, 3, 143, 2978, 8, 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 3, 147, 2996, 8, 147, 1, 147, 1, 147, 1, 147, 3, 147, 3001, 8, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 3009, 8, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3028, 8, 149, 1, 150, 1, 150, 3, 150, 3032, 8, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 3039, 8, 150, 1, 150, 3, 150, 3042, 8, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 3110, 8, 153, 1, 154, 1, 154, 1, 154, 5, 154, 3115, 8, 154, 10, 154, 12, 154, 3118, 9, 154, 1, 155, 1, 155, 3, 155, 3122, 8, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 3, 157, 3152, 8, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 5, 161, 3173, 8, 161, 10, 161, 12, 161, 3176, 9, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 3186, 8, 163, 1, 164, 1, 164, 1, 164, 5, 164, 3191, 8, 164, 10, 164, 12, 164, 3194, 9, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 3, 167, 3210, 8, 167, 1, 167, 3, 167, 3213, 8, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 4, 168, 3220, 8, 168, 11, 168, 12, 168, 3221, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 5, 170, 3230, 8, 170, 10, 170, 12, 170, 3233, 9, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 5, 172, 3242, 8, 172, 10, 172, 12, 172, 3245, 9, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 5, 174, 3254, 8, 174, 10, 174, 12, 174, 3257, 9, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 3, 176, 3267, 8, 176, 1, 176, 3, 176, 3270, 8, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 5, 179, 3281, 8, 179, 10, 179, 12, 179, 3284, 9, 179, 1, 180, 1, 180, 1, 180, 5, 180, 3289, 8, 180, 10, 180, 12, 180, 3292, 9, 180, 1, 181, 1, 181, 1, 181, 3, 181, 3297, 8, 181, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 3303, 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 3311, 8, 183, 1, 184, 1, 184, 1, 184, 5, 184, 3316, 8, 184, 10, 184, 12, 184, 3319, 9, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, 3326, 8, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 3333, 8, 186, 1, 187, 1, 187, 1, 187, 5, 187, 3338, 8, 187, 10, 187, 12, 187, 3341, 9, 187, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 5, 189, 3350, 8, 189, 10, 189, 12, 189, 3353, 9, 189, 3, 189, 3355, 8, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 5, 191, 3365, 8, 191, 10, 191, 12, 191, 3368, 9, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 3391, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 3399, 8, 192, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 3405, 8, 193, 10, 193, 12, 193, 3408, 9, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 3427, 8, 194, 1, 195, 1, 195, 5, 195, 3431, 8, 195, 10, 195, 12, 195, 3434, 9, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 3441, 8, 196, 1, 197, 1, 197, 1, 197, 3, 197, 3446, 8, 197, 1, 197, 3, 197, 3449, 8, 197, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 5, 199, 3457, 8, 199, 10, 199, 12, 199, 3460, 9, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 3554, 8, 200, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 5, 202, 3562, 8, 202, 10, 202, 12, 202, 3565, 9, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 3, 203, 3572, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 5, 203, 3580, 8, 203, 10, 203, 12, 203, 3583, 9, 203, 1, 203, 3, 203, 3586, 8, 203, 3, 203, 3588, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 5, 203, 3594, 8, 203, 10, 203, 12, 203, 3597, 9, 203, 3, 203, 3599, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3604, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3609, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3615, 8, 203, 1, 204, 1, 204, 3, 204, 3619, 8, 204, 1, 204, 1, 204, 3, 204, 3623, 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3629, 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3635, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3640, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3645, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3650, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3655, 8, 204, 1, 205, 1, 205, 1, 205, 1, 205, 5, 205, 3661, 8, 205, 10, 205, 12, 205, 3664, 9, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 3674, 8, 206, 1, 207, 1, 207, 1, 207, 3, 207, 3679, 8, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 3685, 8, 207, 5, 207, 3687, 8, 207, 10, 207, 12, 207, 3690, 9, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 3698, 8, 208, 3, 208, 3700, 8, 208, 3, 208, 3702, 8, 208, 1, 209, 1, 209, 1, 209, 1, 209, 5, 209, 3708, 8, 209, 10, 209, 12, 209, 3711, 9, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 212, 1, 212, 1, 213, 1, 213, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 5, 215, 3744, 8, 215, 10, 215, 12, 215, 3747, 9, 215, 3, 215, 3749, 8, 215, 1, 215, 3, 215, 3752, 8, 215, 1, 216, 1, 216, 1, 216, 1, 216, 5, 216, 3758, 8, 216, 10, 216, 12, 216, 3761, 9, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 3767, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 3778, 8, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 3, 219, 3787, 8, 219, 1, 219, 1, 219, 5, 219, 3791, 8, 219, 10, 219, 12, 219, 3794, 9, 219, 1, 219, 1, 219, 1, 220, 4, 220, 3799, 8, 220, 11, 220, 12, 220, 3800, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 3, 222, 3810, 8, 222, 1, 223, 1, 223, 1, 223, 1, 223, 4, 223, 3816, 8, 223, 11, 223, 12, 223, 3817, 1, 223, 1, 223, 5, 223, 3822, 8, 223, 10, 223, 12, 223, 3825, 9, 223, 1, 223, 3, 223, 3828, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 3837, 8, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 3849, 8, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 3855, 8, 224, 3, 224, 3857, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 3, 225, 3870, 8, 225, 5, 225, 3872, 8, 225, 10, 225, 12, 225, 3875, 9, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 3884, 8, 225, 10, 225, 12, 225, 3887, 9, 225, 1, 225, 1, 225, 3, 225, 3891, 8, 225, 3, 225, 3893, 8, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 3908, 8, 227, 1, 228, 4, 228, 3911, 8, 228, 11, 228, 12, 228, 3912, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 3922, 8, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 5, 230, 3929, 8, 230, 10, 230, 12, 230, 3932, 9, 230, 3, 230, 3934, 8, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 5, 231, 3943, 8, 231, 10, 231, 12, 231, 3946, 9, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 3968, 8, 233, 1, 234, 1, 234, 1, 235, 3, 235, 3973, 8, 235, 1, 235, 1, 235, 1, 235, 3, 235, 3978, 8, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 5, 235, 3985, 8, 235, 10, 235, 12, 235, 3988, 9, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 3, 237, 4014, 8, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 4021, 8, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 4036, 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 5, 241, 4053, 8, 241, 10, 241, 12, 241, 4056, 9, 241, 1, 241, 1, 241, 3, 241, 4060, 8, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 5, 242, 4069, 8, 242, 10, 242, 12, 242, 4072, 9, 242, 1, 242, 1, 242, 3, 242, 4076, 8, 242, 1, 242, 1, 242, 5, 242, 4080, 8, 242, 10, 242, 12, 242, 4083, 9, 242, 1, 242, 3, 242, 4086, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 4094, 8, 243, 1, 243, 3, 243, 4097, 8, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 5, 246, 4111, 8, 246, 10, 246, 12, 246, 4114, 9, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 4121, 8, 247, 1, 247, 3, 247, 4124, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 4131, 8, 248, 1, 248, 1, 248, 1, 248, 1, 248, 5, 248, 4137, 8, 248, 10, 248, 12, 248, 4140, 9, 248, 1, 248, 1, 248, 3, 248, 4144, 8, 248, 1, 248, 3, 248, 4147, 8, 248, 1, 248, 3, 248, 4150, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 5, 249, 4158, 8, 249, 10, 249, 12, 249, 4161, 9, 249, 3, 249, 4163, 8, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 3, 250, 4170, 8, 250, 1, 250, 3, 250, 4173, 8, 250, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 4179, 8, 251, 10, 251, 12, 251, 4182, 9, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 5, 252, 4197, 8, 252, 10, 252, 12, 252, 4200, 9, 252, 1, 252, 1, 252, 1, 252, 3, 252, 4205, 8, 252, 1, 252, 3, 252, 4208, 8, 252, 1, 253, 1, 253, 1, 253, 3, 253, 4213, 8, 253, 1, 253, 5, 253, 4216, 8, 253, 10, 253, 12, 253, 4219, 9, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 5, 254, 4226, 8, 254, 10, 254, 12, 254, 4229, 9, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 5, 256, 4245, 8, 256, 10, 256, 12, 256, 4248, 9, 256, 1, 256, 1, 256, 1, 256, 4, 256, 4253, 8, 256, 11, 256, 12, 256, 4254, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 5, 257, 4265, 8, 257, 10, 257, 12, 257, 4268, 9, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 4274, 8, 257, 1, 257, 1, 257, 3, 257, 4278, 8, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4292, 8, 259, 1, 259, 1, 259, 3, 259, 4296, 8, 259, 1, 259, 1, 259, 3, 259, 4300, 8, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4305, 8, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4310, 8, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4315, 8, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4322, 8, 259, 1, 259, 3, 259, 4325, 8, 259, 1, 260, 5, 260, 4328, 8, 260, 10, 260, 12, 260, 4331, 9, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 4360, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4368, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4373, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4378, 8, 262, 1, 262, 1, 262, 3, 262, 4382, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4387, 8, 262, 1, 262, 1, 262, 3, 262, 4391, 8, 262, 1, 262, 1, 262, 4, 262, 4395, 8, 262, 11, 262, 12, 262, 4396, 3, 262, 4399, 8, 262, 1, 262, 1, 262, 1, 262, 4, 262, 4404, 8, 262, 11, 262, 12, 262, 4405, 3, 262, 4408, 8, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4417, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4422, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4427, 8, 262, 1, 262, 1, 262, 3, 262, 4431, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4436, 8, 262, 1, 262, 1, 262, 3, 262, 4440, 8, 262, 1, 262, 1, 262, 4, 262, 4444, 8, 262, 11, 262, 12, 262, 4445, 3, 262, 4448, 8, 262, 1, 262, 1, 262, 1, 262, 4, 262, 4453, 8, 262, 11, 262, 12, 262, 4454, 3, 262, 4457, 8, 262, 3, 262, 4459, 8, 262, 1, 263, 1, 263, 1, 263, 3, 263, 4464, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4470, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4476, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4482, 8, 263, 1, 263, 1, 263, 3, 263, 4486, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4492, 8, 263, 3, 263, 4494, 8, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 3, 265, 4506, 8, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 5, 265, 4513, 8, 265, 10, 265, 12, 265, 4516, 9, 265, 1, 265, 1, 265, 3, 265, 4520, 8, 265, 1, 265, 1, 265, 4, 265, 4524, 8, 265, 11, 265, 12, 265, 4525, 3, 265, 4528, 8, 265, 1, 265, 1, 265, 1, 265, 4, 265, 4533, 8, 265, 11, 265, 12, 265, 4534, 3, 265, 4537, 8, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 4548, 8, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 5, 267, 4555, 8, 267, 10, 267, 12, 267, 4558, 9, 267, 1, 267, 1, 267, 3, 267, 4562, 8, 267, 1, 268, 1, 268, 3, 268, 4566, 8, 268, 1, 268, 1, 268, 3, 268, 4570, 8, 268, 1, 268, 1, 268, 4, 268, 4574, 8, 268, 11, 268, 12, 268, 4575, 3, 268, 4578, 8, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 4590, 8, 270, 1, 270, 4, 270, 4593, 8, 270, 11, 270, 12, 270, 4594, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 3, 272, 4608, 8, 272, 1, 273, 1, 273, 1, 273, 1, 273, 3, 273, 4614, 8, 273, 1, 273, 1, 273, 3, 273, 4618, 8, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 4625, 8, 274, 1, 274, 1, 274, 1, 274, 4, 274, 4630, 8, 274, 11, 274, 12, 274, 4631, 3, 274, 4634, 8, 274, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 4643, 8, 276, 10, 276, 12, 276, 4646, 9, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 4653, 8, 276, 1, 276, 1, 276, 1, 276, 3, 276, 4658, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 4666, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 4673, 8, 276, 10, 276, 12, 276, 4676, 9, 276, 3, 276, 4678, 8, 276, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 3, 279, 4690, 8, 279, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 4696, 8, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4725, 8, 281, 3, 281, 4727, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4734, 8, 281, 3, 281, 4736, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4743, 8, 281, 3, 281, 4745, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4752, 8, 281, 3, 281, 4754, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4761, 8, 281, 3, 281, 4763, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4770, 8, 281, 3, 281, 4772, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4779, 8, 281, 3, 281, 4781, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4788, 8, 281, 3, 281, 4790, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4797, 8, 281, 3, 281, 4799, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4807, 8, 281, 3, 281, 4809, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4816, 8, 281, 3, 281, 4818, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4825, 8, 281, 3, 281, 4827, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4835, 8, 281, 3, 281, 4837, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4845, 8, 281, 3, 281, 4847, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4855, 8, 281, 3, 281, 4857, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4885, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4892, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4908, 8, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4913, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4924, 8, 281, 3, 281, 4926, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4959, 8, 281, 3, 281, 4961, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4969, 8, 281, 3, 281, 4971, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4979, 8, 281, 3, 281, 4981, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4989, 8, 281, 3, 281, 4991, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4999, 8, 281, 3, 281, 5001, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5010, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5020, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5026, 8, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5031, 8, 281, 3, 281, 5033, 8, 281, 1, 281, 3, 281, 5036, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5045, 8, 281, 3, 281, 5047, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5056, 8, 281, 3, 281, 5058, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5066, 8, 281, 3, 281, 5068, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5080, 8, 281, 3, 281, 5082, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5090, 8, 281, 3, 281, 5092, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5101, 8, 281, 3, 281, 5103, 8, 281, 3, 281, 5105, 8, 281, 1, 282, 1, 282, 1, 282, 1, 282, 5, 282, 5111, 8, 282, 10, 282, 12, 282, 5114, 9, 282, 1, 282, 1, 282, 1, 282, 3, 282, 5119, 8, 282, 3, 282, 5121, 8, 282, 1, 282, 1, 282, 1, 282, 3, 282, 5126, 8, 282, 3, 282, 5128, 8, 282, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 5138, 8, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5148, 8, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5156, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5164, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5213, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5243, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5252, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5301, 8, 287, 1, 288, 1, 288, 3, 288, 5305, 8, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, 5313, 8, 288, 1, 288, 3, 288, 5316, 8, 288, 1, 288, 5, 288, 5319, 8, 288, 10, 288, 12, 288, 5322, 9, 288, 1, 288, 1, 288, 3, 288, 5326, 8, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, 5332, 8, 288, 3, 288, 5334, 8, 288, 1, 288, 1, 288, 3, 288, 5338, 8, 288, 1, 288, 1, 288, 3, 288, 5342, 8, 288, 1, 288, 1, 288, 3, 288, 5346, 8, 288, 1, 289, 3, 289, 5349, 8, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 5356, 8, 289, 1, 289, 3, 289, 5359, 8, 289, 1, 289, 1, 289, 3, 289, 5363, 8, 289, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 3, 291, 5370, 8, 291, 1, 291, 5, 291, 5373, 8, 291, 10, 291, 12, 291, 5376, 9, 291, 1, 292, 1, 292, 3, 292, 5380, 8, 292, 1, 292, 3, 292, 5383, 8, 292, 1, 292, 3, 292, 5386, 8, 292, 1, 292, 3, 292, 5389, 8, 292, 1, 292, 3, 292, 5392, 8, 292, 1, 292, 3, 292, 5395, 8, 292, 1, 292, 1, 292, 3, 292, 5399, 8, 292, 1, 292, 3, 292, 5402, 8, 292, 1, 292, 3, 292, 5405, 8, 292, 1, 292, 1, 292, 3, 292, 5409, 8, 292, 1, 292, 3, 292, 5412, 8, 292, 3, 292, 5414, 8, 292, 1, 293, 1, 293, 3, 293, 5418, 8, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 5, 294, 5426, 8, 294, 10, 294, 12, 294, 5429, 9, 294, 3, 294, 5431, 8, 294, 1, 295, 1, 295, 1, 295, 3, 295, 5436, 8, 295, 1, 295, 1, 295, 1, 295, 3, 295, 5441, 8, 295, 3, 295, 5443, 8, 295, 1, 296, 1, 296, 3, 296, 5447, 8, 296, 1, 297, 1, 297, 1, 297, 5, 297, 5452, 8, 297, 10, 297, 12, 297, 5455, 9, 297, 1, 298, 1, 298, 3, 298, 5459, 8, 298, 1, 298, 3, 298, 5462, 8, 298, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 5468, 8, 298, 1, 298, 3, 298, 5471, 8, 298, 3, 298, 5473, 8, 298, 1, 299, 3, 299, 5476, 8, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 5482, 8, 299, 1, 299, 3, 299, 5485, 8, 299, 1, 299, 1, 299, 1, 299, 3, 299, 5490, 8, 299, 1, 299, 3, 299, 5493, 8, 299, 3, 299, 5495, 8, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 5507, 8, 300, 1, 301, 1, 301, 3, 301, 5511, 8, 301, 1, 301, 1, 301, 3, 301, 5515, 8, 301, 1, 301, 1, 301, 1, 301, 3, 301, 5520, 8, 301, 1, 301, 3, 301, 5523, 8, 301, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 5, 306, 5540, 8, 306, 10, 306, 12, 306, 5543, 9, 306, 1, 307, 1, 307, 3, 307, 5547, 8, 307, 1, 308, 1, 308, 1, 308, 5, 308, 5552, 8, 308, 10, 308, 12, 308, 5555, 9, 308, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 5561, 8, 309, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 5567, 8, 309, 3, 309, 5569, 8, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 3, 310, 5587, 8, 310, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 5598, 8, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 5613, 8, 312, 3, 312, 5615, 8, 312, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 3, 314, 5623, 8, 314, 1, 314, 3, 314, 5626, 8, 314, 1, 314, 3, 314, 5629, 8, 314, 1, 314, 3, 314, 5632, 8, 314, 1, 314, 3, 314, 5635, 8, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 3, 319, 5651, 8, 319, 1, 319, 1, 319, 3, 319, 5655, 8, 319, 1, 319, 1, 319, 1, 319, 3, 319, 5660, 8, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 3, 320, 5668, 8, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 3, 322, 5676, 8, 322, 1, 323, 1, 323, 1, 323, 5, 323, 5681, 8, 323, 10, 323, 12, 323, 5684, 9, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 5724, 8, 327, 10, 327, 12, 327, 5727, 9, 327, 1, 327, 1, 327, 3, 327, 5731, 8, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 5738, 8, 327, 10, 327, 12, 327, 5741, 9, 327, 1, 327, 1, 327, 3, 327, 5745, 8, 327, 1, 327, 3, 327, 5748, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 5753, 8, 327, 1, 328, 4, 328, 5756, 8, 328, 11, 328, 12, 328, 5757, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 5, 329, 5772, 8, 329, 10, 329, 12, 329, 5775, 9, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 5, 329, 5783, 8, 329, 10, 329, 12, 329, 5786, 9, 329, 1, 329, 1, 329, 3, 329, 5790, 8, 329, 1, 329, 1, 329, 3, 329, 5794, 8, 329, 1, 329, 1, 329, 3, 329, 5798, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 3, 331, 5814, 8, 331, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 5, 335, 5831, 8, 335, 10, 335, 12, 335, 5834, 9, 335, 1, 336, 1, 336, 1, 336, 5, 336, 5839, 8, 336, 10, 336, 12, 336, 5842, 9, 336, 1, 337, 3, 337, 5845, 8, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5859, 8, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5864, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5872, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5878, 8, 338, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 5, 340, 5885, 8, 340, 10, 340, 12, 340, 5888, 9, 340, 1, 341, 1, 341, 1, 341, 5, 341, 5893, 8, 341, 10, 341, 12, 341, 5896, 9, 341, 1, 342, 3, 342, 5899, 8, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 5924, 8, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 4, 344, 5932, 8, 344, 11, 344, 12, 344, 5933, 1, 344, 1, 344, 3, 344, 5938, 8, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 3, 348, 5961, 8, 348, 1, 348, 1, 348, 3, 348, 5965, 8, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 3, 349, 5972, 8, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 5, 351, 5981, 8, 351, 10, 351, 12, 351, 5984, 9, 351, 1, 352, 1, 352, 1, 352, 1, 352, 5, 352, 5990, 8, 352, 10, 352, 12, 352, 5993, 9, 352, 1, 352, 1, 352, 1, 352, 3, 352, 5998, 8, 352, 1, 353, 1, 353, 1, 353, 5, 353, 6003, 8, 353, 10, 353, 12, 353, 6006, 9, 353, 1, 354, 1, 354, 1, 354, 5, 354, 6011, 8, 354, 10, 354, 12, 354, 6014, 9, 354, 1, 355, 1, 355, 1, 355, 3, 355, 6019, 8, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 3, 356, 6026, 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 5, 357, 6032, 8, 357, 10, 357, 12, 357, 6035, 9, 357, 3, 357, 6037, 8, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 3, 360, 6052, 8, 360, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 5, 362, 6059, 8, 362, 10, 362, 12, 362, 6062, 9, 362, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 6068, 8, 363, 1, 364, 1, 364, 1, 364, 3, 364, 6073, 8, 364, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 0, 0, 367, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 0, 49, 2, 0, 22, 22, 427, 427, 1, 0, 33, 34, 2, 0, 30, 30, 33, 33, 2, 0, 447, 448, 479, 479, 2, 0, 93, 93, 479, 479, 2, 0, 400, 400, 431, 431, 1, 0, 94, 95, 2, 0, 12, 12, 44, 44, 2, 0, 295, 295, 422, 422, 2, 0, 39, 39, 52, 52, 2, 0, 14, 16, 54, 55, 2, 0, 490, 490, 496, 496, 3, 0, 69, 69, 135, 138, 302, 302, 2, 0, 100, 100, 334, 337, 2, 0, 511, 511, 515, 515, 1, 0, 514, 515, 1, 0, 285, 286, 6, 0, 285, 287, 481, 486, 490, 490, 494, 498, 501, 502, 510, 514, 4, 0, 128, 128, 287, 287, 296, 297, 515, 516, 11, 0, 39, 39, 148, 157, 160, 162, 164, 165, 167, 167, 169, 176, 180, 185, 194, 195, 226, 226, 228, 231, 251, 251, 3, 0, 128, 128, 140, 140, 515, 515, 3, 0, 255, 261, 400, 400, 515, 515, 4, 0, 135, 136, 246, 250, 295, 295, 515, 515, 2, 0, 217, 217, 513, 513, 1, 0, 419, 421, 1, 0, 511, 512, 2, 0, 511, 511, 514, 514, 2, 0, 329, 329, 332, 332, 2, 0, 341, 341, 439, 439, 2, 0, 338, 338, 515, 515, 2, 0, 295, 297, 511, 511, 2, 0, 382, 382, 515, 515, 8, 0, 148, 154, 160, 162, 165, 165, 169, 176, 194, 195, 226, 226, 228, 231, 515, 515, 2, 0, 291, 291, 484, 484, 1, 0, 84, 85, 8, 0, 143, 145, 187, 187, 192, 192, 224, 224, 314, 314, 377, 378, 380, 383, 515, 515, 2, 0, 329, 329, 400, 401, 1, 0, 515, 516, 2, 1, 490, 490, 494, 494, 1, 0, 481, 486, 1, 0, 487, 488, 2, 0, 489, 493, 503, 503, 1, 0, 262, 267, 1, 0, 276, 280, 7, 0, 123, 123, 128, 128, 140, 140, 185, 185, 276, 282, 296, 297, 515, 516, 1, 0, 296, 297, 7, 0, 49, 49, 188, 189, 219, 219, 301, 301, 405, 405, 469, 469, 515, 515, 40, 0, 41, 42, 44, 44, 49, 49, 51, 52, 54, 54, 69, 69, 116, 116, 124, 124, 135, 136, 138, 138, 164, 164, 168, 168, 188, 188, 191, 193, 196, 196, 205, 208, 215, 216, 218, 219, 222, 222, 232, 232, 247, 247, 276, 280, 302, 302, 304, 304, 331, 331, 333, 333, 350, 351, 371, 371, 374, 374, 394, 394, 400, 400, 402, 402, 416, 417, 419, 422, 430, 430, 443, 443, 447, 448, 453, 455, 477, 477, 479, 479, 58, 0, 8, 9, 17, 21, 23, 30, 32, 35, 38, 44, 48, 49, 51, 52, 54, 54, 56, 59, 65, 67, 69, 76, 81, 90, 93, 93, 96, 101, 103, 106, 110, 110, 112, 114, 116, 118, 120, 120, 124, 124, 132, 132, 135, 136, 138, 139, 141, 146, 148, 153, 156, 166, 168, 172, 174, 175, 179, 179, 187, 188, 191, 196, 207, 216, 218, 219, 221, 222, 226, 232, 245, 248, 251, 251, 262, 270, 276, 280, 285, 291, 294, 302, 304, 307, 311, 333, 338, 366, 368, 384, 386, 398, 400, 400, 402, 404, 406, 407, 409, 417, 419, 428, 430, 430, 432, 432, 435, 435, 437, 468, 474, 477, 479, 480, 492, 493, 6887, 0, 737, 1, 0, 0, 0, 2, 743, 1, 0, 0, 0, 4, 763, 1, 0, 0, 0, 6, 765, 1, 0, 0, 0, 8, 797, 1, 0, 0, 0, 10, 931, 1, 0, 0, 0, 12, 945, 1, 0, 0, 0, 14, 962, 1, 0, 0, 0, 16, 988, 1, 0, 0, 0, 18, 1029, 1, 0, 0, 0, 20, 1031, 1, 0, 0, 0, 22, 1042, 1, 0, 0, 0, 24, 1058, 1, 0, 0, 0, 26, 1060, 1, 0, 0, 0, 28, 1070, 1, 0, 0, 0, 30, 1077, 1, 0, 0, 0, 32, 1081, 1, 0, 0, 0, 34, 1108, 1, 0, 0, 0, 36, 1135, 1, 0, 0, 0, 38, 1212, 1, 0, 0, 0, 40, 1225, 1, 0, 0, 0, 42, 1295, 1, 0, 0, 0, 44, 1314, 1, 0, 0, 0, 46, 1316, 1, 0, 0, 0, 48, 1324, 1, 0, 0, 0, 50, 1329, 1, 0, 0, 0, 52, 1362, 1, 0, 0, 0, 54, 1364, 1, 0, 0, 0, 56, 1369, 1, 0, 0, 0, 58, 1380, 1, 0, 0, 0, 60, 1385, 1, 0, 0, 0, 62, 1393, 1, 0, 0, 0, 64, 1401, 1, 0, 0, 0, 66, 1409, 1, 0, 0, 0, 68, 1417, 1, 0, 0, 0, 70, 1425, 1, 0, 0, 0, 72, 1433, 1, 0, 0, 0, 74, 1442, 1, 0, 0, 0, 76, 1462, 1, 0, 0, 0, 78, 1464, 1, 0, 0, 0, 80, 1484, 1, 0, 0, 0, 82, 1489, 1, 0, 0, 0, 84, 1495, 1, 0, 0, 0, 86, 1503, 1, 0, 0, 0, 88, 1539, 1, 0, 0, 0, 90, 1587, 1, 0, 0, 0, 92, 1593, 1, 0, 0, 0, 94, 1604, 1, 0, 0, 0, 96, 1606, 1, 0, 0, 0, 98, 1620, 1, 0, 0, 0, 100, 1622, 1, 0, 0, 0, 102, 1631, 1, 0, 0, 0, 104, 1651, 1, 0, 0, 0, 106, 1686, 1, 0, 0, 0, 108, 1724, 1, 0, 0, 0, 110, 1726, 1, 0, 0, 0, 112, 1753, 1, 0, 0, 0, 114, 1756, 1, 0, 0, 0, 116, 1762, 1, 0, 0, 0, 118, 1770, 1, 0, 0, 0, 120, 1777, 1, 0, 0, 0, 122, 1779, 1, 0, 0, 0, 124, 1789, 1, 0, 0, 0, 126, 1803, 1, 0, 0, 0, 128, 1805, 1, 0, 0, 0, 130, 1873, 1, 0, 0, 0, 132, 1887, 1, 0, 0, 0, 134, 1907, 1, 0, 0, 0, 136, 1922, 1, 0, 0, 0, 138, 1924, 1, 0, 0, 0, 140, 1930, 1, 0, 0, 0, 142, 1938, 1, 0, 0, 0, 144, 1940, 1, 0, 0, 0, 146, 1948, 1, 0, 0, 0, 148, 1957, 1, 0, 0, 0, 150, 1981, 1, 0, 0, 0, 152, 1984, 1, 0, 0, 0, 154, 1988, 1, 0, 0, 0, 156, 1991, 1, 0, 0, 0, 158, 2001, 1, 0, 0, 0, 160, 2010, 1, 0, 0, 0, 162, 2012, 1, 0, 0, 0, 164, 2023, 1, 0, 0, 0, 166, 2032, 1, 0, 0, 0, 168, 2034, 1, 0, 0, 0, 170, 2068, 1, 0, 0, 0, 172, 2083, 1, 0, 0, 0, 174, 2085, 1, 0, 0, 0, 176, 2093, 1, 0, 0, 0, 178, 2101, 1, 0, 0, 0, 180, 2123, 1, 0, 0, 0, 182, 2142, 1, 0, 0, 0, 184, 2150, 1, 0, 0, 0, 186, 2156, 1, 0, 0, 0, 188, 2159, 1, 0, 0, 0, 190, 2165, 1, 0, 0, 0, 192, 2175, 1, 0, 0, 0, 194, 2183, 1, 0, 0, 0, 196, 2185, 1, 0, 0, 0, 198, 2192, 1, 0, 0, 0, 200, 2200, 1, 0, 0, 0, 202, 2205, 1, 0, 0, 0, 204, 2538, 1, 0, 0, 0, 206, 2540, 1, 0, 0, 0, 208, 2547, 1, 0, 0, 0, 210, 2557, 1, 0, 0, 0, 212, 2571, 1, 0, 0, 0, 214, 2580, 1, 0, 0, 0, 216, 2590, 1, 0, 0, 0, 218, 2602, 1, 0, 0, 0, 220, 2607, 1, 0, 0, 0, 222, 2612, 1, 0, 0, 0, 224, 2655, 1, 0, 0, 0, 226, 2677, 1, 0, 0, 0, 228, 2679, 1, 0, 0, 0, 230, 2700, 1, 0, 0, 0, 232, 2712, 1, 0, 0, 0, 234, 2722, 1, 0, 0, 0, 236, 2724, 1, 0, 0, 0, 238, 2726, 1, 0, 0, 0, 240, 2730, 1, 0, 0, 0, 242, 2733, 1, 0, 0, 0, 244, 2745, 1, 0, 0, 0, 246, 2761, 1, 0, 0, 0, 248, 2763, 1, 0, 0, 0, 250, 2769, 1, 0, 0, 0, 252, 2771, 1, 0, 0, 0, 254, 2775, 1, 0, 0, 0, 256, 2790, 1, 0, 0, 0, 258, 2806, 1, 0, 0, 0, 260, 2840, 1, 0, 0, 0, 262, 2854, 1, 0, 0, 0, 264, 2864, 1, 0, 0, 0, 266, 2869, 1, 0, 0, 0, 268, 2887, 1, 0, 0, 0, 270, 2905, 1, 0, 0, 0, 272, 2907, 1, 0, 0, 0, 274, 2910, 1, 0, 0, 0, 276, 2914, 1, 0, 0, 0, 278, 2928, 1, 0, 0, 0, 280, 2931, 1, 0, 0, 0, 282, 2945, 1, 0, 0, 0, 284, 2973, 1, 0, 0, 0, 286, 2977, 1, 0, 0, 0, 288, 2979, 1, 0, 0, 0, 290, 2981, 1, 0, 0, 0, 292, 2986, 1, 0, 0, 0, 294, 3008, 1, 0, 0, 0, 296, 3010, 1, 0, 0, 0, 298, 3027, 1, 0, 0, 0, 300, 3031, 1, 0, 0, 0, 302, 3043, 1, 0, 0, 0, 304, 3046, 1, 0, 0, 0, 306, 3109, 1, 0, 0, 0, 308, 3111, 1, 0, 0, 0, 310, 3119, 1, 0, 0, 0, 312, 3123, 1, 0, 0, 0, 314, 3151, 1, 0, 0, 0, 316, 3153, 1, 0, 0, 0, 318, 3159, 1, 0, 0, 0, 320, 3164, 1, 0, 0, 0, 322, 3169, 1, 0, 0, 0, 324, 3177, 1, 0, 0, 0, 326, 3185, 1, 0, 0, 0, 328, 3187, 1, 0, 0, 0, 330, 3195, 1, 0, 0, 0, 332, 3199, 1, 0, 0, 0, 334, 3206, 1, 0, 0, 0, 336, 3219, 1, 0, 0, 0, 338, 3223, 1, 0, 0, 0, 340, 3226, 1, 0, 0, 0, 342, 3234, 1, 0, 0, 0, 344, 3238, 1, 0, 0, 0, 346, 3246, 1, 0, 0, 0, 348, 3250, 1, 0, 0, 0, 350, 3258, 1, 0, 0, 0, 352, 3266, 1, 0, 0, 0, 354, 3271, 1, 0, 0, 0, 356, 3275, 1, 0, 0, 0, 358, 3277, 1, 0, 0, 0, 360, 3285, 1, 0, 0, 0, 362, 3296, 1, 0, 0, 0, 364, 3298, 1, 0, 0, 0, 366, 3310, 1, 0, 0, 0, 368, 3312, 1, 0, 0, 0, 370, 3320, 1, 0, 0, 0, 372, 3332, 1, 0, 0, 0, 374, 3334, 1, 0, 0, 0, 376, 3342, 1, 0, 0, 0, 378, 3344, 1, 0, 0, 0, 380, 3358, 1, 0, 0, 0, 382, 3360, 1, 0, 0, 0, 384, 3398, 1, 0, 0, 0, 386, 3400, 1, 0, 0, 0, 388, 3426, 1, 0, 0, 0, 390, 3432, 1, 0, 0, 0, 392, 3435, 1, 0, 0, 0, 394, 3442, 1, 0, 0, 0, 396, 3450, 1, 0, 0, 0, 398, 3452, 1, 0, 0, 0, 400, 3553, 1, 0, 0, 0, 402, 3555, 1, 0, 0, 0, 404, 3557, 1, 0, 0, 0, 406, 3614, 1, 0, 0, 0, 408, 3654, 1, 0, 0, 0, 410, 3656, 1, 0, 0, 0, 412, 3673, 1, 0, 0, 0, 414, 3678, 1, 0, 0, 0, 416, 3701, 1, 0, 0, 0, 418, 3703, 1, 0, 0, 0, 420, 3714, 1, 0, 0, 0, 422, 3720, 1, 0, 0, 0, 424, 3722, 1, 0, 0, 0, 426, 3724, 1, 0, 0, 0, 428, 3726, 1, 0, 0, 0, 430, 3751, 1, 0, 0, 0, 432, 3766, 1, 0, 0, 0, 434, 3777, 1, 0, 0, 0, 436, 3779, 1, 0, 0, 0, 438, 3783, 1, 0, 0, 0, 440, 3798, 1, 0, 0, 0, 442, 3802, 1, 0, 0, 0, 444, 3805, 1, 0, 0, 0, 446, 3811, 1, 0, 0, 0, 448, 3856, 1, 0, 0, 0, 450, 3858, 1, 0, 0, 0, 452, 3896, 1, 0, 0, 0, 454, 3900, 1, 0, 0, 0, 456, 3910, 1, 0, 0, 0, 458, 3921, 1, 0, 0, 0, 460, 3923, 1, 0, 0, 0, 462, 3935, 1, 0, 0, 0, 464, 3949, 1, 0, 0, 0, 466, 3967, 1, 0, 0, 0, 468, 3969, 1, 0, 0, 0, 470, 3972, 1, 0, 0, 0, 472, 3993, 1, 0, 0, 0, 474, 4013, 1, 0, 0, 0, 476, 4020, 1, 0, 0, 0, 478, 4035, 1, 0, 0, 0, 480, 4037, 1, 0, 0, 0, 482, 4045, 1, 0, 0, 0, 484, 4061, 1, 0, 0, 0, 486, 4096, 1, 0, 0, 0, 488, 4098, 1, 0, 0, 0, 490, 4102, 1, 0, 0, 0, 492, 4106, 1, 0, 0, 0, 494, 4123, 1, 0, 0, 0, 496, 4125, 1, 0, 0, 0, 498, 4151, 1, 0, 0, 0, 500, 4166, 1, 0, 0, 0, 502, 4174, 1, 0, 0, 0, 504, 4185, 1, 0, 0, 0, 506, 4209, 1, 0, 0, 0, 508, 4220, 1, 0, 0, 0, 510, 4232, 1, 0, 0, 0, 512, 4236, 1, 0, 0, 0, 514, 4258, 1, 0, 0, 0, 516, 4281, 1, 0, 0, 0, 518, 4285, 1, 0, 0, 0, 520, 4329, 1, 0, 0, 0, 522, 4359, 1, 0, 0, 0, 524, 4458, 1, 0, 0, 0, 526, 4493, 1, 0, 0, 0, 528, 4495, 1, 0, 0, 0, 530, 4500, 1, 0, 0, 0, 532, 4538, 1, 0, 0, 0, 534, 4542, 1, 0, 0, 0, 536, 4563, 1, 0, 0, 0, 538, 4579, 1, 0, 0, 0, 540, 4585, 1, 0, 0, 0, 542, 4596, 1, 0, 0, 0, 544, 4602, 1, 0, 0, 0, 546, 4609, 1, 0, 0, 0, 548, 4619, 1, 0, 0, 0, 550, 4635, 1, 0, 0, 0, 552, 4677, 1, 0, 0, 0, 554, 4679, 1, 0, 0, 0, 556, 4681, 1, 0, 0, 0, 558, 4689, 1, 0, 0, 0, 560, 4695, 1, 0, 0, 0, 562, 5104, 1, 0, 0, 0, 564, 5127, 1, 0, 0, 0, 566, 5129, 1, 0, 0, 0, 568, 5137, 1, 0, 0, 0, 570, 5139, 1, 0, 0, 0, 572, 5147, 1, 0, 0, 0, 574, 5300, 1, 0, 0, 0, 576, 5302, 1, 0, 0, 0, 578, 5348, 1, 0, 0, 0, 580, 5364, 1, 0, 0, 0, 582, 5366, 1, 0, 0, 0, 584, 5413, 1, 0, 0, 0, 586, 5415, 1, 0, 0, 0, 588, 5430, 1, 0, 0, 0, 590, 5442, 1, 0, 0, 0, 592, 5446, 1, 0, 0, 0, 594, 5448, 1, 0, 0, 0, 596, 5472, 1, 0, 0, 0, 598, 5494, 1, 0, 0, 0, 600, 5506, 1, 0, 0, 0, 602, 5522, 1, 0, 0, 0, 604, 5524, 1, 0, 0, 0, 606, 5527, 1, 0, 0, 0, 608, 5530, 1, 0, 0, 0, 610, 5533, 1, 0, 0, 0, 612, 5536, 1, 0, 0, 0, 614, 5544, 1, 0, 0, 0, 616, 5548, 1, 0, 0, 0, 618, 5568, 1, 0, 0, 0, 620, 5586, 1, 0, 0, 0, 622, 5588, 1, 0, 0, 0, 624, 5614, 1, 0, 0, 0, 626, 5616, 1, 0, 0, 0, 628, 5634, 1, 0, 0, 0, 630, 5636, 1, 0, 0, 0, 632, 5638, 1, 0, 0, 0, 634, 5640, 1, 0, 0, 0, 636, 5644, 1, 0, 0, 0, 638, 5659, 1, 0, 0, 0, 640, 5667, 1, 0, 0, 0, 642, 5669, 1, 0, 0, 0, 644, 5675, 1, 0, 0, 0, 646, 5677, 1, 0, 0, 0, 648, 5685, 1, 0, 0, 0, 650, 5687, 1, 0, 0, 0, 652, 5690, 1, 0, 0, 0, 654, 5752, 1, 0, 0, 0, 656, 5755, 1, 0, 0, 0, 658, 5759, 1, 0, 0, 0, 660, 5799, 1, 0, 0, 0, 662, 5813, 1, 0, 0, 0, 664, 5815, 1, 0, 0, 0, 666, 5817, 1, 0, 0, 0, 668, 5825, 1, 0, 0, 0, 670, 5827, 1, 0, 0, 0, 672, 5835, 1, 0, 0, 0, 674, 5844, 1, 0, 0, 0, 676, 5848, 1, 0, 0, 0, 678, 5879, 1, 0, 0, 0, 680, 5881, 1, 0, 0, 0, 682, 5889, 1, 0, 0, 0, 684, 5898, 1, 0, 0, 0, 686, 5923, 1, 0, 0, 0, 688, 5925, 1, 0, 0, 0, 690, 5941, 1, 0, 0, 0, 692, 5948, 1, 0, 0, 0, 694, 5955, 1, 0, 0, 0, 696, 5957, 1, 0, 0, 0, 698, 5968, 1, 0, 0, 0, 700, 5975, 1, 0, 0, 0, 702, 5977, 1, 0, 0, 0, 704, 5997, 1, 0, 0, 0, 706, 5999, 1, 0, 0, 0, 708, 6007, 1, 0, 0, 0, 710, 6018, 1, 0, 0, 0, 712, 6025, 1, 0, 0, 0, 714, 6027, 1, 0, 0, 0, 716, 6040, 1, 0, 0, 0, 718, 6042, 1, 0, 0, 0, 720, 6044, 1, 0, 0, 0, 722, 6053, 1, 0, 0, 0, 724, 6055, 1, 0, 0, 0, 726, 6067, 1, 0, 0, 0, 728, 6072, 1, 0, 0, 0, 730, 6074, 1, 0, 0, 0, 732, 6076, 1, 0, 0, 0, 734, 736, 3, 2, 1, 0, 735, 734, 1, 0, 0, 0, 736, 739, 1, 0, 0, 0, 737, 735, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, 740, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, 740, 741, 5, 0, 0, 1, 741, 1, 1, 0, 0, 0, 742, 744, 3, 718, 359, 0, 743, 742, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, 748, 1, 0, 0, 0, 745, 749, 3, 4, 2, 0, 746, 749, 3, 560, 280, 0, 747, 749, 3, 620, 310, 0, 748, 745, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 748, 747, 1, 0, 0, 0, 749, 751, 1, 0, 0, 0, 750, 752, 5, 494, 0, 0, 751, 750, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 754, 1, 0, 0, 0, 753, 755, 5, 490, 0, 0, 754, 753, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 3, 1, 0, 0, 0, 756, 764, 3, 8, 4, 0, 757, 764, 3, 10, 5, 0, 758, 764, 3, 38, 19, 0, 759, 764, 3, 40, 20, 0, 760, 764, 3, 42, 21, 0, 761, 764, 3, 6, 3, 0, 762, 764, 3, 44, 22, 0, 763, 756, 1, 0, 0, 0, 763, 757, 1, 0, 0, 0, 763, 758, 1, 0, 0, 0, 763, 759, 1, 0, 0, 0, 763, 760, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 763, 762, 1, 0, 0, 0, 764, 5, 1, 0, 0, 0, 765, 766, 5, 392, 0, 0, 766, 767, 5, 187, 0, 0, 767, 768, 5, 48, 0, 0, 768, 773, 3, 570, 285, 0, 769, 770, 5, 495, 0, 0, 770, 772, 3, 570, 285, 0, 771, 769, 1, 0, 0, 0, 772, 775, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 776, 1, 0, 0, 0, 775, 773, 1, 0, 0, 0, 776, 777, 5, 72, 0, 0, 777, 782, 3, 568, 284, 0, 778, 779, 5, 285, 0, 0, 779, 781, 3, 568, 284, 0, 780, 778, 1, 0, 0, 0, 781, 784, 1, 0, 0, 0, 782, 780, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 790, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 785, 788, 5, 289, 0, 0, 786, 789, 3, 708, 354, 0, 787, 789, 5, 515, 0, 0, 788, 786, 1, 0, 0, 0, 788, 787, 1, 0, 0, 0, 789, 791, 1, 0, 0, 0, 790, 785, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 794, 1, 0, 0, 0, 792, 793, 5, 433, 0, 0, 793, 795, 5, 434, 0, 0, 794, 792, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 7, 1, 0, 0, 0, 796, 798, 3, 718, 359, 0, 797, 796, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 802, 1, 0, 0, 0, 799, 801, 3, 720, 360, 0, 800, 799, 1, 0, 0, 0, 801, 804, 1, 0, 0, 0, 802, 800, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 805, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 805, 808, 5, 17, 0, 0, 806, 807, 5, 286, 0, 0, 807, 809, 7, 0, 0, 0, 808, 806, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 834, 1, 0, 0, 0, 810, 835, 3, 90, 45, 0, 811, 835, 3, 122, 61, 0, 812, 835, 3, 138, 69, 0, 813, 835, 3, 178, 89, 0, 814, 835, 3, 180, 90, 0, 815, 835, 3, 332, 166, 0, 816, 835, 3, 334, 167, 0, 817, 835, 3, 144, 72, 0, 818, 835, 3, 168, 84, 0, 819, 835, 3, 438, 219, 0, 820, 835, 3, 446, 223, 0, 821, 835, 3, 454, 227, 0, 822, 835, 3, 462, 231, 0, 823, 835, 3, 480, 240, 0, 824, 835, 3, 482, 241, 0, 825, 835, 3, 484, 242, 0, 826, 835, 3, 504, 252, 0, 827, 835, 3, 506, 253, 0, 828, 835, 3, 512, 256, 0, 829, 835, 3, 518, 259, 0, 830, 835, 3, 50, 25, 0, 831, 835, 3, 78, 39, 0, 832, 835, 3, 156, 78, 0, 833, 835, 3, 460, 230, 0, 834, 810, 1, 0, 0, 0, 834, 811, 1, 0, 0, 0, 834, 812, 1, 0, 0, 0, 834, 813, 1, 0, 0, 0, 834, 814, 1, 0, 0, 0, 834, 815, 1, 0, 0, 0, 834, 816, 1, 0, 0, 0, 834, 817, 1, 0, 0, 0, 834, 818, 1, 0, 0, 0, 834, 819, 1, 0, 0, 0, 834, 820, 1, 0, 0, 0, 834, 821, 1, 0, 0, 0, 834, 822, 1, 0, 0, 0, 834, 823, 1, 0, 0, 0, 834, 824, 1, 0, 0, 0, 834, 825, 1, 0, 0, 0, 834, 826, 1, 0, 0, 0, 834, 827, 1, 0, 0, 0, 834, 828, 1, 0, 0, 0, 834, 829, 1, 0, 0, 0, 834, 830, 1, 0, 0, 0, 834, 831, 1, 0, 0, 0, 834, 832, 1, 0, 0, 0, 834, 833, 1, 0, 0, 0, 835, 9, 1, 0, 0, 0, 836, 837, 5, 18, 0, 0, 837, 838, 5, 23, 0, 0, 838, 840, 3, 708, 354, 0, 839, 841, 3, 130, 65, 0, 840, 839, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 932, 1, 0, 0, 0, 844, 845, 5, 18, 0, 0, 845, 846, 5, 27, 0, 0, 846, 848, 3, 708, 354, 0, 847, 849, 3, 132, 66, 0, 848, 847, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 932, 1, 0, 0, 0, 852, 853, 5, 18, 0, 0, 853, 854, 5, 28, 0, 0, 854, 856, 3, 708, 354, 0, 855, 857, 3, 134, 67, 0, 856, 855, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 856, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 932, 1, 0, 0, 0, 860, 861, 5, 18, 0, 0, 861, 862, 5, 36, 0, 0, 862, 864, 3, 708, 354, 0, 863, 865, 3, 136, 68, 0, 864, 863, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 864, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 932, 1, 0, 0, 0, 868, 869, 5, 18, 0, 0, 869, 870, 5, 314, 0, 0, 870, 871, 5, 339, 0, 0, 871, 872, 3, 708, 354, 0, 872, 873, 5, 48, 0, 0, 873, 878, 3, 490, 245, 0, 874, 875, 5, 495, 0, 0, 875, 877, 3, 490, 245, 0, 876, 874, 1, 0, 0, 0, 877, 880, 1, 0, 0, 0, 878, 876, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 932, 1, 0, 0, 0, 880, 878, 1, 0, 0, 0, 881, 882, 5, 18, 0, 0, 882, 883, 5, 314, 0, 0, 883, 884, 5, 312, 0, 0, 884, 885, 3, 708, 354, 0, 885, 886, 5, 48, 0, 0, 886, 891, 3, 490, 245, 0, 887, 888, 5, 495, 0, 0, 888, 890, 3, 490, 245, 0, 889, 887, 1, 0, 0, 0, 890, 893, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 932, 1, 0, 0, 0, 893, 891, 1, 0, 0, 0, 894, 895, 5, 18, 0, 0, 895, 896, 5, 213, 0, 0, 896, 897, 5, 93, 0, 0, 897, 898, 7, 1, 0, 0, 898, 899, 3, 708, 354, 0, 899, 900, 5, 186, 0, 0, 900, 902, 5, 515, 0, 0, 901, 903, 3, 12, 6, 0, 902, 901, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 902, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, 905, 932, 1, 0, 0, 0, 906, 907, 5, 18, 0, 0, 907, 908, 5, 440, 0, 0, 908, 932, 3, 552, 276, 0, 909, 910, 5, 18, 0, 0, 910, 911, 5, 33, 0, 0, 911, 912, 3, 708, 354, 0, 912, 914, 5, 499, 0, 0, 913, 915, 3, 16, 8, 0, 914, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 914, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 918, 1, 0, 0, 0, 918, 919, 5, 500, 0, 0, 919, 932, 1, 0, 0, 0, 920, 921, 5, 18, 0, 0, 921, 922, 5, 34, 0, 0, 922, 923, 3, 708, 354, 0, 923, 925, 5, 499, 0, 0, 924, 926, 3, 16, 8, 0, 925, 924, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 925, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 929, 1, 0, 0, 0, 929, 930, 5, 500, 0, 0, 930, 932, 1, 0, 0, 0, 931, 836, 1, 0, 0, 0, 931, 844, 1, 0, 0, 0, 931, 852, 1, 0, 0, 0, 931, 860, 1, 0, 0, 0, 931, 868, 1, 0, 0, 0, 931, 881, 1, 0, 0, 0, 931, 894, 1, 0, 0, 0, 931, 906, 1, 0, 0, 0, 931, 909, 1, 0, 0, 0, 931, 920, 1, 0, 0, 0, 932, 11, 1, 0, 0, 0, 933, 934, 5, 48, 0, 0, 934, 939, 3, 14, 7, 0, 935, 936, 5, 495, 0, 0, 936, 938, 3, 14, 7, 0, 937, 935, 1, 0, 0, 0, 938, 941, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 946, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 942, 943, 5, 214, 0, 0, 943, 944, 5, 210, 0, 0, 944, 946, 5, 211, 0, 0, 945, 933, 1, 0, 0, 0, 945, 942, 1, 0, 0, 0, 946, 13, 1, 0, 0, 0, 947, 948, 5, 207, 0, 0, 948, 949, 5, 484, 0, 0, 949, 963, 5, 511, 0, 0, 950, 951, 5, 208, 0, 0, 951, 952, 5, 484, 0, 0, 952, 963, 5, 511, 0, 0, 953, 954, 5, 511, 0, 0, 954, 955, 5, 484, 0, 0, 955, 963, 5, 511, 0, 0, 956, 957, 5, 511, 0, 0, 957, 958, 5, 484, 0, 0, 958, 963, 5, 93, 0, 0, 959, 960, 5, 511, 0, 0, 960, 961, 5, 484, 0, 0, 961, 963, 5, 479, 0, 0, 962, 947, 1, 0, 0, 0, 962, 950, 1, 0, 0, 0, 962, 953, 1, 0, 0, 0, 962, 956, 1, 0, 0, 0, 962, 959, 1, 0, 0, 0, 963, 15, 1, 0, 0, 0, 964, 966, 3, 18, 9, 0, 965, 967, 5, 494, 0, 0, 966, 965, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 989, 1, 0, 0, 0, 968, 970, 3, 24, 12, 0, 969, 971, 5, 494, 0, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 989, 1, 0, 0, 0, 972, 974, 3, 26, 13, 0, 973, 975, 5, 494, 0, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 989, 1, 0, 0, 0, 976, 978, 3, 28, 14, 0, 977, 979, 5, 494, 0, 0, 978, 977, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 989, 1, 0, 0, 0, 980, 982, 3, 30, 15, 0, 981, 983, 5, 494, 0, 0, 982, 981, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 989, 1, 0, 0, 0, 984, 986, 3, 32, 16, 0, 985, 987, 5, 494, 0, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 989, 1, 0, 0, 0, 988, 964, 1, 0, 0, 0, 988, 968, 1, 0, 0, 0, 988, 972, 1, 0, 0, 0, 988, 976, 1, 0, 0, 0, 988, 980, 1, 0, 0, 0, 988, 984, 1, 0, 0, 0, 989, 17, 1, 0, 0, 0, 990, 991, 5, 48, 0, 0, 991, 992, 5, 35, 0, 0, 992, 993, 5, 484, 0, 0, 993, 1006, 3, 708, 354, 0, 994, 995, 5, 355, 0, 0, 995, 996, 5, 497, 0, 0, 996, 1001, 3, 20, 10, 0, 997, 998, 5, 495, 0, 0, 998, 1000, 3, 20, 10, 0, 999, 997, 1, 0, 0, 0, 1000, 1003, 1, 0, 0, 0, 1001, 999, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1004, 1, 0, 0, 0, 1003, 1001, 1, 0, 0, 0, 1004, 1005, 5, 498, 0, 0, 1005, 1007, 1, 0, 0, 0, 1006, 994, 1, 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1030, 1, 0, 0, 0, 1008, 1009, 5, 48, 0, 0, 1009, 1010, 3, 22, 11, 0, 1010, 1011, 5, 93, 0, 0, 1011, 1012, 3, 710, 355, 0, 1012, 1030, 1, 0, 0, 0, 1013, 1014, 5, 48, 0, 0, 1014, 1015, 5, 497, 0, 0, 1015, 1020, 3, 22, 11, 0, 1016, 1017, 5, 495, 0, 0, 1017, 1019, 3, 22, 11, 0, 1018, 1016, 1, 0, 0, 0, 1019, 1022, 1, 0, 0, 0, 1020, 1018, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1023, 1, 0, 0, 0, 1022, 1020, 1, 0, 0, 0, 1023, 1024, 5, 498, 0, 0, 1024, 1025, 5, 93, 0, 0, 1025, 1026, 3, 710, 355, 0, 1026, 1030, 1, 0, 0, 0, 1027, 1028, 5, 48, 0, 0, 1028, 1030, 3, 22, 11, 0, 1029, 990, 1, 0, 0, 0, 1029, 1008, 1, 0, 0, 0, 1029, 1013, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1030, 19, 1, 0, 0, 0, 1031, 1032, 3, 710, 355, 0, 1032, 1033, 5, 76, 0, 0, 1033, 1034, 3, 710, 355, 0, 1034, 21, 1, 0, 0, 0, 1035, 1036, 3, 710, 355, 0, 1036, 1037, 5, 484, 0, 0, 1037, 1038, 3, 430, 215, 0, 1038, 1043, 1, 0, 0, 0, 1039, 1040, 5, 511, 0, 0, 1040, 1041, 5, 484, 0, 0, 1041, 1043, 3, 430, 215, 0, 1042, 1035, 1, 0, 0, 0, 1042, 1039, 1, 0, 0, 0, 1043, 23, 1, 0, 0, 0, 1044, 1045, 5, 389, 0, 0, 1045, 1046, 5, 391, 0, 0, 1046, 1047, 3, 710, 355, 0, 1047, 1048, 5, 499, 0, 0, 1048, 1049, 3, 390, 195, 0, 1049, 1050, 5, 500, 0, 0, 1050, 1059, 1, 0, 0, 0, 1051, 1052, 5, 389, 0, 0, 1052, 1053, 5, 390, 0, 0, 1053, 1054, 3, 710, 355, 0, 1054, 1055, 5, 499, 0, 0, 1055, 1056, 3, 390, 195, 0, 1056, 1057, 5, 500, 0, 0, 1057, 1059, 1, 0, 0, 0, 1058, 1044, 1, 0, 0, 0, 1058, 1051, 1, 0, 0, 0, 1059, 25, 1, 0, 0, 0, 1060, 1061, 5, 19, 0, 0, 1061, 1062, 5, 186, 0, 0, 1062, 1067, 3, 710, 355, 0, 1063, 1064, 5, 495, 0, 0, 1064, 1066, 3, 710, 355, 0, 1065, 1063, 1, 0, 0, 0, 1066, 1069, 1, 0, 0, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 27, 1, 0, 0, 0, 1069, 1067, 1, 0, 0, 0, 1070, 1071, 5, 427, 0, 0, 1071, 1072, 3, 710, 355, 0, 1072, 1073, 5, 139, 0, 0, 1073, 1074, 5, 499, 0, 0, 1074, 1075, 3, 390, 195, 0, 1075, 1076, 5, 500, 0, 0, 1076, 29, 1, 0, 0, 0, 1077, 1078, 5, 47, 0, 0, 1078, 1079, 5, 203, 0, 0, 1079, 1080, 3, 350, 175, 0, 1080, 31, 1, 0, 0, 0, 1081, 1082, 5, 19, 0, 0, 1082, 1083, 5, 203, 0, 0, 1083, 1084, 5, 514, 0, 0, 1084, 33, 1, 0, 0, 0, 1085, 1086, 5, 374, 0, 0, 1086, 1087, 7, 2, 0, 0, 1087, 1090, 3, 708, 354, 0, 1088, 1089, 5, 426, 0, 0, 1089, 1091, 3, 708, 354, 0, 1090, 1088, 1, 0, 0, 0, 1090, 1091, 1, 0, 0, 0, 1091, 1109, 1, 0, 0, 0, 1092, 1093, 5, 375, 0, 0, 1093, 1094, 5, 33, 0, 0, 1094, 1109, 3, 708, 354, 0, 1095, 1096, 5, 287, 0, 0, 1096, 1097, 5, 376, 0, 0, 1097, 1098, 5, 33, 0, 0, 1098, 1109, 3, 708, 354, 0, 1099, 1100, 5, 372, 0, 0, 1100, 1104, 5, 497, 0, 0, 1101, 1103, 3, 36, 18, 0, 1102, 1101, 1, 0, 0, 0, 1103, 1106, 1, 0, 0, 0, 1104, 1102, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1107, 1, 0, 0, 0, 1106, 1104, 1, 0, 0, 0, 1107, 1109, 5, 498, 0, 0, 1108, 1085, 1, 0, 0, 0, 1108, 1092, 1, 0, 0, 0, 1108, 1095, 1, 0, 0, 0, 1108, 1099, 1, 0, 0, 0, 1109, 35, 1, 0, 0, 0, 1110, 1111, 5, 372, 0, 0, 1111, 1112, 5, 156, 0, 0, 1112, 1117, 5, 511, 0, 0, 1113, 1114, 5, 33, 0, 0, 1114, 1118, 3, 708, 354, 0, 1115, 1116, 5, 30, 0, 0, 1116, 1118, 3, 708, 354, 0, 1117, 1113, 1, 0, 0, 0, 1117, 1115, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, 1121, 5, 494, 0, 0, 1120, 1119, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 1136, 1, 0, 0, 0, 1122, 1123, 5, 372, 0, 0, 1123, 1124, 5, 511, 0, 0, 1124, 1128, 5, 497, 0, 0, 1125, 1127, 3, 36, 18, 0, 1126, 1125, 1, 0, 0, 0, 1127, 1130, 1, 0, 0, 0, 1128, 1126, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1131, 1, 0, 0, 0, 1130, 1128, 1, 0, 0, 0, 1131, 1133, 5, 498, 0, 0, 1132, 1134, 5, 494, 0, 0, 1133, 1132, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1136, 1, 0, 0, 0, 1135, 1110, 1, 0, 0, 0, 1135, 1122, 1, 0, 0, 0, 1136, 37, 1, 0, 0, 0, 1137, 1138, 5, 19, 0, 0, 1138, 1139, 5, 23, 0, 0, 1139, 1213, 3, 708, 354, 0, 1140, 1141, 5, 19, 0, 0, 1141, 1142, 5, 27, 0, 0, 1142, 1213, 3, 708, 354, 0, 1143, 1144, 5, 19, 0, 0, 1144, 1145, 5, 28, 0, 0, 1145, 1213, 3, 708, 354, 0, 1146, 1147, 5, 19, 0, 0, 1147, 1148, 5, 37, 0, 0, 1148, 1213, 3, 708, 354, 0, 1149, 1150, 5, 19, 0, 0, 1150, 1151, 5, 30, 0, 0, 1151, 1213, 3, 708, 354, 0, 1152, 1153, 5, 19, 0, 0, 1153, 1154, 5, 31, 0, 0, 1154, 1213, 3, 708, 354, 0, 1155, 1156, 5, 19, 0, 0, 1156, 1157, 5, 33, 0, 0, 1157, 1213, 3, 708, 354, 0, 1158, 1159, 5, 19, 0, 0, 1159, 1160, 5, 34, 0, 0, 1160, 1213, 3, 708, 354, 0, 1161, 1162, 5, 19, 0, 0, 1162, 1163, 5, 29, 0, 0, 1163, 1213, 3, 708, 354, 0, 1164, 1165, 5, 19, 0, 0, 1165, 1166, 5, 36, 0, 0, 1166, 1213, 3, 708, 354, 0, 1167, 1168, 5, 19, 0, 0, 1168, 1169, 5, 114, 0, 0, 1169, 1170, 5, 116, 0, 0, 1170, 1213, 3, 708, 354, 0, 1171, 1172, 5, 19, 0, 0, 1172, 1173, 5, 41, 0, 0, 1173, 1174, 3, 708, 354, 0, 1174, 1175, 5, 93, 0, 0, 1175, 1176, 3, 708, 354, 0, 1176, 1213, 1, 0, 0, 0, 1177, 1178, 5, 19, 0, 0, 1178, 1179, 5, 314, 0, 0, 1179, 1180, 5, 339, 0, 0, 1180, 1213, 3, 708, 354, 0, 1181, 1182, 5, 19, 0, 0, 1182, 1183, 5, 314, 0, 0, 1183, 1184, 5, 312, 0, 0, 1184, 1213, 3, 708, 354, 0, 1185, 1186, 5, 19, 0, 0, 1186, 1187, 5, 437, 0, 0, 1187, 1188, 5, 438, 0, 0, 1188, 1189, 5, 312, 0, 0, 1189, 1213, 3, 708, 354, 0, 1190, 1191, 5, 19, 0, 0, 1191, 1192, 5, 32, 0, 0, 1192, 1213, 3, 708, 354, 0, 1193, 1194, 5, 19, 0, 0, 1194, 1195, 5, 226, 0, 0, 1195, 1196, 5, 227, 0, 0, 1196, 1213, 3, 708, 354, 0, 1197, 1198, 5, 19, 0, 0, 1198, 1199, 5, 311, 0, 0, 1199, 1200, 5, 339, 0, 0, 1200, 1213, 3, 708, 354, 0, 1201, 1202, 5, 19, 0, 0, 1202, 1203, 5, 441, 0, 0, 1203, 1213, 5, 511, 0, 0, 1204, 1205, 5, 19, 0, 0, 1205, 1206, 5, 219, 0, 0, 1206, 1207, 5, 511, 0, 0, 1207, 1210, 5, 289, 0, 0, 1208, 1211, 3, 708, 354, 0, 1209, 1211, 5, 515, 0, 0, 1210, 1208, 1, 0, 0, 0, 1210, 1209, 1, 0, 0, 0, 1211, 1213, 1, 0, 0, 0, 1212, 1137, 1, 0, 0, 0, 1212, 1140, 1, 0, 0, 0, 1212, 1143, 1, 0, 0, 0, 1212, 1146, 1, 0, 0, 0, 1212, 1149, 1, 0, 0, 0, 1212, 1152, 1, 0, 0, 0, 1212, 1155, 1, 0, 0, 0, 1212, 1158, 1, 0, 0, 0, 1212, 1161, 1, 0, 0, 0, 1212, 1164, 1, 0, 0, 0, 1212, 1167, 1, 0, 0, 0, 1212, 1171, 1, 0, 0, 0, 1212, 1177, 1, 0, 0, 0, 1212, 1181, 1, 0, 0, 0, 1212, 1185, 1, 0, 0, 0, 1212, 1190, 1, 0, 0, 0, 1212, 1193, 1, 0, 0, 0, 1212, 1197, 1, 0, 0, 0, 1212, 1201, 1, 0, 0, 0, 1212, 1204, 1, 0, 0, 0, 1213, 39, 1, 0, 0, 0, 1214, 1215, 5, 20, 0, 0, 1215, 1216, 5, 23, 0, 0, 1216, 1217, 3, 708, 354, 0, 1217, 1218, 5, 423, 0, 0, 1218, 1219, 5, 515, 0, 0, 1219, 1226, 1, 0, 0, 0, 1220, 1221, 5, 20, 0, 0, 1221, 1222, 5, 29, 0, 0, 1222, 1223, 5, 515, 0, 0, 1223, 1224, 5, 423, 0, 0, 1224, 1226, 5, 515, 0, 0, 1225, 1214, 1, 0, 0, 0, 1225, 1220, 1, 0, 0, 0, 1226, 41, 1, 0, 0, 0, 1227, 1236, 5, 21, 0, 0, 1228, 1237, 5, 33, 0, 0, 1229, 1237, 5, 30, 0, 0, 1230, 1237, 5, 34, 0, 0, 1231, 1237, 5, 31, 0, 0, 1232, 1237, 5, 28, 0, 0, 1233, 1237, 5, 37, 0, 0, 1234, 1235, 5, 353, 0, 0, 1235, 1237, 5, 352, 0, 0, 1236, 1228, 1, 0, 0, 0, 1236, 1229, 1, 0, 0, 0, 1236, 1230, 1, 0, 0, 0, 1236, 1231, 1, 0, 0, 0, 1236, 1232, 1, 0, 0, 0, 1236, 1233, 1, 0, 0, 0, 1236, 1234, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 3, 708, 354, 0, 1239, 1240, 5, 423, 0, 0, 1240, 1241, 5, 219, 0, 0, 1241, 1247, 5, 511, 0, 0, 1242, 1245, 5, 289, 0, 0, 1243, 1246, 3, 708, 354, 0, 1244, 1246, 5, 515, 0, 0, 1245, 1243, 1, 0, 0, 0, 1245, 1244, 1, 0, 0, 0, 1246, 1248, 1, 0, 0, 0, 1247, 1242, 1, 0, 0, 0, 1247, 1248, 1, 0, 0, 0, 1248, 1296, 1, 0, 0, 0, 1249, 1258, 5, 21, 0, 0, 1250, 1259, 5, 33, 0, 0, 1251, 1259, 5, 30, 0, 0, 1252, 1259, 5, 34, 0, 0, 1253, 1259, 5, 31, 0, 0, 1254, 1259, 5, 28, 0, 0, 1255, 1259, 5, 37, 0, 0, 1256, 1257, 5, 353, 0, 0, 1257, 1259, 5, 352, 0, 0, 1258, 1250, 1, 0, 0, 0, 1258, 1251, 1, 0, 0, 0, 1258, 1252, 1, 0, 0, 0, 1258, 1253, 1, 0, 0, 0, 1258, 1254, 1, 0, 0, 0, 1258, 1255, 1, 0, 0, 0, 1258, 1256, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1261, 3, 708, 354, 0, 1261, 1264, 5, 423, 0, 0, 1262, 1265, 3, 708, 354, 0, 1263, 1265, 5, 515, 0, 0, 1264, 1262, 1, 0, 0, 0, 1264, 1263, 1, 0, 0, 0, 1265, 1296, 1, 0, 0, 0, 1266, 1267, 5, 21, 0, 0, 1267, 1268, 5, 23, 0, 0, 1268, 1269, 3, 708, 354, 0, 1269, 1272, 5, 423, 0, 0, 1270, 1273, 3, 708, 354, 0, 1271, 1273, 5, 515, 0, 0, 1272, 1270, 1, 0, 0, 0, 1272, 1271, 1, 0, 0, 0, 1273, 1296, 1, 0, 0, 0, 1274, 1275, 5, 21, 0, 0, 1275, 1276, 5, 219, 0, 0, 1276, 1277, 3, 708, 354, 0, 1277, 1278, 5, 423, 0, 0, 1278, 1279, 5, 219, 0, 0, 1279, 1285, 5, 511, 0, 0, 1280, 1283, 5, 289, 0, 0, 1281, 1284, 3, 708, 354, 0, 1282, 1284, 5, 515, 0, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1282, 1, 0, 0, 0, 1284, 1286, 1, 0, 0, 0, 1285, 1280, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1296, 1, 0, 0, 0, 1287, 1288, 5, 21, 0, 0, 1288, 1289, 5, 219, 0, 0, 1289, 1290, 3, 708, 354, 0, 1290, 1293, 5, 423, 0, 0, 1291, 1294, 3, 708, 354, 0, 1292, 1294, 5, 515, 0, 0, 1293, 1291, 1, 0, 0, 0, 1293, 1292, 1, 0, 0, 0, 1294, 1296, 1, 0, 0, 0, 1295, 1227, 1, 0, 0, 0, 1295, 1249, 1, 0, 0, 0, 1295, 1266, 1, 0, 0, 0, 1295, 1274, 1, 0, 0, 0, 1295, 1287, 1, 0, 0, 0, 1296, 43, 1, 0, 0, 0, 1297, 1315, 3, 46, 23, 0, 1298, 1315, 3, 48, 24, 0, 1299, 1315, 3, 52, 26, 0, 1300, 1315, 3, 54, 27, 0, 1301, 1315, 3, 56, 28, 0, 1302, 1315, 3, 58, 29, 0, 1303, 1315, 3, 60, 30, 0, 1304, 1315, 3, 62, 31, 0, 1305, 1315, 3, 64, 32, 0, 1306, 1315, 3, 66, 33, 0, 1307, 1315, 3, 68, 34, 0, 1308, 1315, 3, 70, 35, 0, 1309, 1315, 3, 72, 36, 0, 1310, 1315, 3, 74, 37, 0, 1311, 1315, 3, 76, 38, 0, 1312, 1315, 3, 80, 40, 0, 1313, 1315, 3, 82, 41, 0, 1314, 1297, 1, 0, 0, 0, 1314, 1298, 1, 0, 0, 0, 1314, 1299, 1, 0, 0, 0, 1314, 1300, 1, 0, 0, 0, 1314, 1301, 1, 0, 0, 0, 1314, 1302, 1, 0, 0, 0, 1314, 1303, 1, 0, 0, 0, 1314, 1304, 1, 0, 0, 0, 1314, 1305, 1, 0, 0, 0, 1314, 1306, 1, 0, 0, 0, 1314, 1307, 1, 0, 0, 0, 1314, 1308, 1, 0, 0, 0, 1314, 1309, 1, 0, 0, 0, 1314, 1310, 1, 0, 0, 0, 1314, 1311, 1, 0, 0, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1313, 1, 0, 0, 0, 1315, 45, 1, 0, 0, 0, 1316, 1317, 5, 17, 0, 0, 1317, 1318, 5, 29, 0, 0, 1318, 1319, 5, 443, 0, 0, 1319, 1322, 3, 708, 354, 0, 1320, 1321, 5, 477, 0, 0, 1321, 1323, 5, 511, 0, 0, 1322, 1320, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 47, 1, 0, 0, 0, 1324, 1325, 5, 19, 0, 0, 1325, 1326, 5, 29, 0, 0, 1326, 1327, 5, 443, 0, 0, 1327, 1328, 3, 708, 354, 0, 1328, 49, 1, 0, 0, 0, 1329, 1330, 5, 455, 0, 0, 1330, 1331, 5, 443, 0, 0, 1331, 1332, 3, 710, 355, 0, 1332, 1333, 5, 497, 0, 0, 1333, 1334, 3, 84, 42, 0, 1334, 1338, 5, 498, 0, 0, 1335, 1336, 5, 449, 0, 0, 1336, 1337, 5, 85, 0, 0, 1337, 1339, 5, 444, 0, 0, 1338, 1335, 1, 0, 0, 0, 1338, 1339, 1, 0, 0, 0, 1339, 51, 1, 0, 0, 0, 1340, 1341, 5, 18, 0, 0, 1341, 1342, 5, 455, 0, 0, 1342, 1343, 5, 443, 0, 0, 1343, 1344, 3, 710, 355, 0, 1344, 1345, 5, 47, 0, 0, 1345, 1346, 5, 29, 0, 0, 1346, 1347, 5, 444, 0, 0, 1347, 1348, 5, 497, 0, 0, 1348, 1349, 3, 84, 42, 0, 1349, 1350, 5, 498, 0, 0, 1350, 1363, 1, 0, 0, 0, 1351, 1352, 5, 18, 0, 0, 1352, 1353, 5, 455, 0, 0, 1353, 1354, 5, 443, 0, 0, 1354, 1355, 3, 710, 355, 0, 1355, 1356, 5, 133, 0, 0, 1356, 1357, 5, 29, 0, 0, 1357, 1358, 5, 444, 0, 0, 1358, 1359, 5, 497, 0, 0, 1359, 1360, 3, 84, 42, 0, 1360, 1361, 5, 498, 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, 1340, 1, 0, 0, 0, 1362, 1351, 1, 0, 0, 0, 1363, 53, 1, 0, 0, 0, 1364, 1365, 5, 19, 0, 0, 1365, 1366, 5, 455, 0, 0, 1366, 1367, 5, 443, 0, 0, 1367, 1368, 3, 710, 355, 0, 1368, 55, 1, 0, 0, 0, 1369, 1370, 5, 445, 0, 0, 1370, 1371, 3, 84, 42, 0, 1371, 1372, 5, 93, 0, 0, 1372, 1373, 3, 708, 354, 0, 1373, 1374, 5, 497, 0, 0, 1374, 1375, 3, 86, 43, 0, 1375, 1378, 5, 498, 0, 0, 1376, 1377, 5, 72, 0, 0, 1377, 1379, 5, 511, 0, 0, 1378, 1376, 1, 0, 0, 0, 1378, 1379, 1, 0, 0, 0, 1379, 57, 1, 0, 0, 0, 1380, 1381, 5, 446, 0, 0, 1381, 1382, 3, 84, 42, 0, 1382, 1383, 5, 93, 0, 0, 1383, 1384, 3, 708, 354, 0, 1384, 59, 1, 0, 0, 0, 1385, 1386, 5, 445, 0, 0, 1386, 1387, 5, 396, 0, 0, 1387, 1388, 5, 93, 0, 0, 1388, 1389, 5, 30, 0, 0, 1389, 1390, 3, 708, 354, 0, 1390, 1391, 5, 423, 0, 0, 1391, 1392, 3, 84, 42, 0, 1392, 61, 1, 0, 0, 0, 1393, 1394, 5, 446, 0, 0, 1394, 1395, 5, 396, 0, 0, 1395, 1396, 5, 93, 0, 0, 1396, 1397, 5, 30, 0, 0, 1397, 1398, 3, 708, 354, 0, 1398, 1399, 5, 71, 0, 0, 1399, 1400, 3, 84, 42, 0, 1400, 63, 1, 0, 0, 0, 1401, 1402, 5, 445, 0, 0, 1402, 1403, 5, 25, 0, 0, 1403, 1404, 5, 93, 0, 0, 1404, 1405, 5, 33, 0, 0, 1405, 1406, 3, 708, 354, 0, 1406, 1407, 5, 423, 0, 0, 1407, 1408, 3, 84, 42, 0, 1408, 65, 1, 0, 0, 0, 1409, 1410, 5, 446, 0, 0, 1410, 1411, 5, 25, 0, 0, 1411, 1412, 5, 93, 0, 0, 1412, 1413, 5, 33, 0, 0, 1413, 1414, 3, 708, 354, 0, 1414, 1415, 5, 71, 0, 0, 1415, 1416, 3, 84, 42, 0, 1416, 67, 1, 0, 0, 0, 1417, 1418, 5, 445, 0, 0, 1418, 1419, 5, 396, 0, 0, 1419, 1420, 5, 93, 0, 0, 1420, 1421, 5, 32, 0, 0, 1421, 1422, 3, 708, 354, 0, 1422, 1423, 5, 423, 0, 0, 1423, 1424, 3, 84, 42, 0, 1424, 69, 1, 0, 0, 0, 1425, 1426, 5, 446, 0, 0, 1426, 1427, 5, 396, 0, 0, 1427, 1428, 5, 93, 0, 0, 1428, 1429, 5, 32, 0, 0, 1429, 1430, 3, 708, 354, 0, 1430, 1431, 5, 71, 0, 0, 1431, 1432, 3, 84, 42, 0, 1432, 71, 1, 0, 0, 0, 1433, 1434, 5, 445, 0, 0, 1434, 1435, 5, 453, 0, 0, 1435, 1436, 5, 93, 0, 0, 1436, 1437, 5, 314, 0, 0, 1437, 1438, 5, 312, 0, 0, 1438, 1439, 3, 708, 354, 0, 1439, 1440, 5, 423, 0, 0, 1440, 1441, 3, 84, 42, 0, 1441, 73, 1, 0, 0, 0, 1442, 1443, 5, 446, 0, 0, 1443, 1444, 5, 453, 0, 0, 1444, 1445, 5, 93, 0, 0, 1445, 1446, 5, 314, 0, 0, 1446, 1447, 5, 312, 0, 0, 1447, 1448, 3, 708, 354, 0, 1448, 1449, 5, 71, 0, 0, 1449, 1450, 3, 84, 42, 0, 1450, 75, 1, 0, 0, 0, 1451, 1452, 5, 18, 0, 0, 1452, 1453, 5, 59, 0, 0, 1453, 1454, 5, 442, 0, 0, 1454, 1455, 5, 454, 0, 0, 1455, 1463, 7, 3, 0, 0, 1456, 1457, 5, 18, 0, 0, 1457, 1458, 5, 59, 0, 0, 1458, 1459, 5, 442, 0, 0, 1459, 1460, 5, 450, 0, 0, 1460, 1461, 5, 480, 0, 0, 1461, 1463, 7, 4, 0, 0, 1462, 1451, 1, 0, 0, 0, 1462, 1456, 1, 0, 0, 0, 1463, 77, 1, 0, 0, 0, 1464, 1465, 5, 450, 0, 0, 1465, 1466, 5, 455, 0, 0, 1466, 1467, 5, 511, 0, 0, 1467, 1468, 5, 351, 0, 0, 1468, 1471, 5, 511, 0, 0, 1469, 1470, 5, 23, 0, 0, 1470, 1472, 3, 708, 354, 0, 1471, 1469, 1, 0, 0, 0, 1471, 1472, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 1474, 5, 497, 0, 0, 1474, 1479, 3, 710, 355, 0, 1475, 1476, 5, 495, 0, 0, 1476, 1478, 3, 710, 355, 0, 1477, 1475, 1, 0, 0, 0, 1478, 1481, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1482, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1482, 1483, 5, 498, 0, 0, 1483, 79, 1, 0, 0, 0, 1484, 1485, 5, 19, 0, 0, 1485, 1486, 5, 450, 0, 0, 1486, 1487, 5, 455, 0, 0, 1487, 1488, 5, 511, 0, 0, 1488, 81, 1, 0, 0, 0, 1489, 1490, 5, 392, 0, 0, 1490, 1493, 5, 442, 0, 0, 1491, 1492, 5, 289, 0, 0, 1492, 1494, 3, 708, 354, 0, 1493, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 83, 1, 0, 0, 0, 1495, 1500, 3, 708, 354, 0, 1496, 1497, 5, 495, 0, 0, 1497, 1499, 3, 708, 354, 0, 1498, 1496, 1, 0, 0, 0, 1499, 1502, 1, 0, 0, 0, 1500, 1498, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 85, 1, 0, 0, 0, 1502, 1500, 1, 0, 0, 0, 1503, 1508, 3, 88, 44, 0, 1504, 1505, 5, 495, 0, 0, 1505, 1507, 3, 88, 44, 0, 1506, 1504, 1, 0, 0, 0, 1507, 1510, 1, 0, 0, 0, 1508, 1506, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 87, 1, 0, 0, 0, 1510, 1508, 1, 0, 0, 0, 1511, 1540, 5, 17, 0, 0, 1512, 1540, 5, 100, 0, 0, 1513, 1514, 5, 475, 0, 0, 1514, 1540, 5, 489, 0, 0, 1515, 1516, 5, 475, 0, 0, 1516, 1517, 5, 497, 0, 0, 1517, 1522, 5, 515, 0, 0, 1518, 1519, 5, 495, 0, 0, 1519, 1521, 5, 515, 0, 0, 1520, 1518, 1, 0, 0, 0, 1521, 1524, 1, 0, 0, 0, 1522, 1520, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1525, 1, 0, 0, 0, 1524, 1522, 1, 0, 0, 0, 1525, 1540, 5, 498, 0, 0, 1526, 1527, 5, 476, 0, 0, 1527, 1540, 5, 489, 0, 0, 1528, 1529, 5, 476, 0, 0, 1529, 1530, 5, 497, 0, 0, 1530, 1535, 5, 515, 0, 0, 1531, 1532, 5, 495, 0, 0, 1532, 1534, 5, 515, 0, 0, 1533, 1531, 1, 0, 0, 0, 1534, 1537, 1, 0, 0, 0, 1535, 1533, 1, 0, 0, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1538, 1, 0, 0, 0, 1537, 1535, 1, 0, 0, 0, 1538, 1540, 5, 498, 0, 0, 1539, 1511, 1, 0, 0, 0, 1539, 1512, 1, 0, 0, 0, 1539, 1513, 1, 0, 0, 0, 1539, 1515, 1, 0, 0, 0, 1539, 1526, 1, 0, 0, 0, 1539, 1528, 1, 0, 0, 0, 1540, 89, 1, 0, 0, 0, 1541, 1542, 5, 24, 0, 0, 1542, 1543, 5, 23, 0, 0, 1543, 1545, 3, 708, 354, 0, 1544, 1546, 3, 92, 46, 0, 1545, 1544, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1548, 1, 0, 0, 0, 1547, 1549, 3, 94, 47, 0, 1548, 1547, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1588, 1, 0, 0, 0, 1550, 1551, 5, 11, 0, 0, 1551, 1552, 5, 23, 0, 0, 1552, 1554, 3, 708, 354, 0, 1553, 1555, 3, 92, 46, 0, 1554, 1553, 1, 0, 0, 0, 1554, 1555, 1, 0, 0, 0, 1555, 1557, 1, 0, 0, 0, 1556, 1558, 3, 94, 47, 0, 1557, 1556, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1588, 1, 0, 0, 0, 1559, 1560, 5, 25, 0, 0, 1560, 1561, 5, 23, 0, 0, 1561, 1563, 3, 708, 354, 0, 1562, 1564, 3, 94, 47, 0, 1563, 1562, 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, 1565, 1, 0, 0, 0, 1565, 1567, 5, 76, 0, 0, 1566, 1568, 5, 497, 0, 0, 1567, 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 1, 0, 0, 0, 1569, 1571, 3, 582, 291, 0, 1570, 1572, 5, 498, 0, 0, 1571, 1570, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1588, 1, 0, 0, 0, 1573, 1574, 5, 26, 0, 0, 1574, 1575, 5, 23, 0, 0, 1575, 1577, 3, 708, 354, 0, 1576, 1578, 3, 94, 47, 0, 1577, 1576, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 1588, 1, 0, 0, 0, 1579, 1580, 5, 23, 0, 0, 1580, 1582, 3, 708, 354, 0, 1581, 1583, 3, 92, 46, 0, 1582, 1581, 1, 0, 0, 0, 1582, 1583, 1, 0, 0, 0, 1583, 1585, 1, 0, 0, 0, 1584, 1586, 3, 94, 47, 0, 1585, 1584, 1, 0, 0, 0, 1585, 1586, 1, 0, 0, 0, 1586, 1588, 1, 0, 0, 0, 1587, 1541, 1, 0, 0, 0, 1587, 1550, 1, 0, 0, 0, 1587, 1559, 1, 0, 0, 0, 1587, 1573, 1, 0, 0, 0, 1587, 1579, 1, 0, 0, 0, 1588, 91, 1, 0, 0, 0, 1589, 1590, 5, 46, 0, 0, 1590, 1594, 3, 708, 354, 0, 1591, 1592, 5, 45, 0, 0, 1592, 1594, 3, 708, 354, 0, 1593, 1589, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1594, 93, 1, 0, 0, 0, 1595, 1597, 5, 497, 0, 0, 1596, 1598, 3, 100, 50, 0, 1597, 1596, 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1599, 1, 0, 0, 0, 1599, 1601, 5, 498, 0, 0, 1600, 1602, 3, 96, 48, 0, 1601, 1600, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1605, 1, 0, 0, 0, 1603, 1605, 3, 96, 48, 0, 1604, 1595, 1, 0, 0, 0, 1604, 1603, 1, 0, 0, 0, 1605, 95, 1, 0, 0, 0, 1606, 1613, 3, 98, 49, 0, 1607, 1609, 5, 495, 0, 0, 1608, 1607, 1, 0, 0, 0, 1608, 1609, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1612, 3, 98, 49, 0, 1611, 1608, 1, 0, 0, 0, 1612, 1615, 1, 0, 0, 0, 1613, 1611, 1, 0, 0, 0, 1613, 1614, 1, 0, 0, 0, 1614, 97, 1, 0, 0, 0, 1615, 1613, 1, 0, 0, 0, 1616, 1617, 5, 405, 0, 0, 1617, 1621, 5, 511, 0, 0, 1618, 1619, 5, 41, 0, 0, 1619, 1621, 3, 114, 57, 0, 1620, 1616, 1, 0, 0, 0, 1620, 1618, 1, 0, 0, 0, 1621, 99, 1, 0, 0, 0, 1622, 1627, 3, 102, 51, 0, 1623, 1624, 5, 495, 0, 0, 1624, 1626, 3, 102, 51, 0, 1625, 1623, 1, 0, 0, 0, 1626, 1629, 1, 0, 0, 0, 1627, 1625, 1, 0, 0, 0, 1627, 1628, 1, 0, 0, 0, 1628, 101, 1, 0, 0, 0, 1629, 1627, 1, 0, 0, 0, 1630, 1632, 3, 718, 359, 0, 1631, 1630, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 1636, 1, 0, 0, 0, 1633, 1635, 3, 720, 360, 0, 1634, 1633, 1, 0, 0, 0, 1635, 1638, 1, 0, 0, 0, 1636, 1634, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1639, 1, 0, 0, 0, 1638, 1636, 1, 0, 0, 0, 1639, 1640, 3, 104, 52, 0, 1640, 1641, 5, 503, 0, 0, 1641, 1645, 3, 108, 54, 0, 1642, 1644, 3, 106, 53, 0, 1643, 1642, 1, 0, 0, 0, 1644, 1647, 1, 0, 0, 0, 1645, 1643, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 103, 1, 0, 0, 0, 1647, 1645, 1, 0, 0, 0, 1648, 1652, 5, 515, 0, 0, 1649, 1652, 5, 517, 0, 0, 1650, 1652, 3, 730, 365, 0, 1651, 1648, 1, 0, 0, 0, 1651, 1649, 1, 0, 0, 0, 1651, 1650, 1, 0, 0, 0, 1652, 105, 1, 0, 0, 0, 1653, 1656, 5, 7, 0, 0, 1654, 1655, 5, 302, 0, 0, 1655, 1657, 5, 511, 0, 0, 1656, 1654, 1, 0, 0, 0, 1656, 1657, 1, 0, 0, 0, 1657, 1687, 1, 0, 0, 0, 1658, 1659, 5, 287, 0, 0, 1659, 1662, 5, 288, 0, 0, 1660, 1661, 5, 302, 0, 0, 1661, 1663, 5, 511, 0, 0, 1662, 1660, 1, 0, 0, 0, 1662, 1663, 1, 0, 0, 0, 1663, 1687, 1, 0, 0, 0, 1664, 1667, 5, 294, 0, 0, 1665, 1666, 5, 302, 0, 0, 1666, 1668, 5, 511, 0, 0, 1667, 1665, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, 1687, 1, 0, 0, 0, 1669, 1672, 5, 295, 0, 0, 1670, 1673, 3, 712, 356, 0, 1671, 1673, 3, 668, 334, 0, 1672, 1670, 1, 0, 0, 0, 1672, 1671, 1, 0, 0, 0, 1673, 1687, 1, 0, 0, 0, 1674, 1677, 5, 301, 0, 0, 1675, 1676, 5, 302, 0, 0, 1676, 1678, 5, 511, 0, 0, 1677, 1675, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1687, 1, 0, 0, 0, 1679, 1684, 5, 310, 0, 0, 1680, 1682, 5, 474, 0, 0, 1681, 1680, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 1685, 3, 708, 354, 0, 1684, 1681, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1687, 1, 0, 0, 0, 1686, 1653, 1, 0, 0, 0, 1686, 1658, 1, 0, 0, 0, 1686, 1664, 1, 0, 0, 0, 1686, 1669, 1, 0, 0, 0, 1686, 1674, 1, 0, 0, 0, 1686, 1679, 1, 0, 0, 0, 1687, 107, 1, 0, 0, 0, 1688, 1692, 5, 262, 0, 0, 1689, 1690, 5, 497, 0, 0, 1690, 1691, 5, 513, 0, 0, 1691, 1693, 5, 498, 0, 0, 1692, 1689, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1725, 1, 0, 0, 0, 1694, 1725, 5, 263, 0, 0, 1695, 1725, 5, 264, 0, 0, 1696, 1725, 5, 265, 0, 0, 1697, 1725, 5, 266, 0, 0, 1698, 1725, 5, 267, 0, 0, 1699, 1725, 5, 268, 0, 0, 1700, 1725, 5, 269, 0, 0, 1701, 1725, 5, 270, 0, 0, 1702, 1725, 5, 271, 0, 0, 1703, 1725, 5, 272, 0, 0, 1704, 1725, 5, 273, 0, 0, 1705, 1706, 5, 274, 0, 0, 1706, 1707, 5, 497, 0, 0, 1707, 1708, 3, 110, 55, 0, 1708, 1709, 5, 498, 0, 0, 1709, 1725, 1, 0, 0, 0, 1710, 1711, 5, 23, 0, 0, 1711, 1712, 5, 485, 0, 0, 1712, 1713, 5, 515, 0, 0, 1713, 1725, 5, 486, 0, 0, 1714, 1715, 5, 275, 0, 0, 1715, 1725, 3, 708, 354, 0, 1716, 1717, 5, 28, 0, 0, 1717, 1718, 5, 497, 0, 0, 1718, 1719, 3, 708, 354, 0, 1719, 1720, 5, 498, 0, 0, 1720, 1725, 1, 0, 0, 0, 1721, 1722, 5, 13, 0, 0, 1722, 1725, 3, 708, 354, 0, 1723, 1725, 3, 708, 354, 0, 1724, 1688, 1, 0, 0, 0, 1724, 1694, 1, 0, 0, 0, 1724, 1695, 1, 0, 0, 0, 1724, 1696, 1, 0, 0, 0, 1724, 1697, 1, 0, 0, 0, 1724, 1698, 1, 0, 0, 0, 1724, 1699, 1, 0, 0, 0, 1724, 1700, 1, 0, 0, 0, 1724, 1701, 1, 0, 0, 0, 1724, 1702, 1, 0, 0, 0, 1724, 1703, 1, 0, 0, 0, 1724, 1704, 1, 0, 0, 0, 1724, 1705, 1, 0, 0, 0, 1724, 1710, 1, 0, 0, 0, 1724, 1714, 1, 0, 0, 0, 1724, 1716, 1, 0, 0, 0, 1724, 1721, 1, 0, 0, 0, 1724, 1723, 1, 0, 0, 0, 1725, 109, 1, 0, 0, 0, 1726, 1727, 7, 5, 0, 0, 1727, 111, 1, 0, 0, 0, 1728, 1732, 5, 262, 0, 0, 1729, 1730, 5, 497, 0, 0, 1730, 1731, 5, 513, 0, 0, 1731, 1733, 5, 498, 0, 0, 1732, 1729, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1754, 1, 0, 0, 0, 1734, 1754, 5, 263, 0, 0, 1735, 1754, 5, 264, 0, 0, 1736, 1754, 5, 265, 0, 0, 1737, 1754, 5, 266, 0, 0, 1738, 1754, 5, 267, 0, 0, 1739, 1754, 5, 268, 0, 0, 1740, 1754, 5, 269, 0, 0, 1741, 1754, 5, 270, 0, 0, 1742, 1754, 5, 271, 0, 0, 1743, 1754, 5, 272, 0, 0, 1744, 1754, 5, 273, 0, 0, 1745, 1746, 5, 275, 0, 0, 1746, 1754, 3, 708, 354, 0, 1747, 1748, 5, 28, 0, 0, 1748, 1749, 5, 497, 0, 0, 1749, 1750, 3, 708, 354, 0, 1750, 1751, 5, 498, 0, 0, 1751, 1754, 1, 0, 0, 0, 1752, 1754, 3, 708, 354, 0, 1753, 1728, 1, 0, 0, 0, 1753, 1734, 1, 0, 0, 0, 1753, 1735, 1, 0, 0, 0, 1753, 1736, 1, 0, 0, 0, 1753, 1737, 1, 0, 0, 0, 1753, 1738, 1, 0, 0, 0, 1753, 1739, 1, 0, 0, 0, 1753, 1740, 1, 0, 0, 0, 1753, 1741, 1, 0, 0, 0, 1753, 1742, 1, 0, 0, 0, 1753, 1743, 1, 0, 0, 0, 1753, 1744, 1, 0, 0, 0, 1753, 1745, 1, 0, 0, 0, 1753, 1747, 1, 0, 0, 0, 1753, 1752, 1, 0, 0, 0, 1754, 113, 1, 0, 0, 0, 1755, 1757, 5, 515, 0, 0, 1756, 1755, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1759, 5, 497, 0, 0, 1759, 1760, 3, 116, 58, 0, 1760, 1761, 5, 498, 0, 0, 1761, 115, 1, 0, 0, 0, 1762, 1767, 3, 118, 59, 0, 1763, 1764, 5, 495, 0, 0, 1764, 1766, 3, 118, 59, 0, 1765, 1763, 1, 0, 0, 0, 1766, 1769, 1, 0, 0, 0, 1767, 1765, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 117, 1, 0, 0, 0, 1769, 1767, 1, 0, 0, 0, 1770, 1772, 3, 120, 60, 0, 1771, 1773, 7, 6, 0, 0, 1772, 1771, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 119, 1, 0, 0, 0, 1774, 1778, 5, 515, 0, 0, 1775, 1778, 5, 517, 0, 0, 1776, 1778, 3, 730, 365, 0, 1777, 1774, 1, 0, 0, 0, 1777, 1775, 1, 0, 0, 0, 1777, 1776, 1, 0, 0, 0, 1778, 121, 1, 0, 0, 0, 1779, 1780, 5, 27, 0, 0, 1780, 1781, 3, 708, 354, 0, 1781, 1782, 5, 71, 0, 0, 1782, 1783, 3, 708, 354, 0, 1783, 1784, 5, 423, 0, 0, 1784, 1786, 3, 708, 354, 0, 1785, 1787, 3, 124, 62, 0, 1786, 1785, 1, 0, 0, 0, 1786, 1787, 1, 0, 0, 0, 1787, 123, 1, 0, 0, 0, 1788, 1790, 3, 126, 63, 0, 1789, 1788, 1, 0, 0, 0, 1790, 1791, 1, 0, 0, 0, 1791, 1789, 1, 0, 0, 0, 1791, 1792, 1, 0, 0, 0, 1792, 125, 1, 0, 0, 0, 1793, 1794, 5, 416, 0, 0, 1794, 1804, 7, 7, 0, 0, 1795, 1796, 5, 42, 0, 0, 1796, 1804, 7, 8, 0, 0, 1797, 1798, 5, 51, 0, 0, 1798, 1804, 7, 9, 0, 0, 1799, 1800, 5, 53, 0, 0, 1800, 1804, 3, 128, 64, 0, 1801, 1802, 5, 405, 0, 0, 1802, 1804, 5, 511, 0, 0, 1803, 1793, 1, 0, 0, 0, 1803, 1795, 1, 0, 0, 0, 1803, 1797, 1, 0, 0, 0, 1803, 1799, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1804, 127, 1, 0, 0, 0, 1805, 1806, 7, 10, 0, 0, 1806, 129, 1, 0, 0, 0, 1807, 1808, 5, 47, 0, 0, 1808, 1809, 5, 38, 0, 0, 1809, 1874, 3, 102, 51, 0, 1810, 1811, 5, 47, 0, 0, 1811, 1812, 5, 39, 0, 0, 1812, 1874, 3, 102, 51, 0, 1813, 1814, 5, 20, 0, 0, 1814, 1815, 5, 38, 0, 0, 1815, 1816, 3, 104, 52, 0, 1816, 1817, 5, 423, 0, 0, 1817, 1818, 3, 104, 52, 0, 1818, 1874, 1, 0, 0, 0, 1819, 1820, 5, 20, 0, 0, 1820, 1821, 5, 39, 0, 0, 1821, 1822, 3, 104, 52, 0, 1822, 1823, 5, 423, 0, 0, 1823, 1824, 3, 104, 52, 0, 1824, 1874, 1, 0, 0, 0, 1825, 1826, 5, 22, 0, 0, 1826, 1827, 5, 38, 0, 0, 1827, 1828, 3, 104, 52, 0, 1828, 1832, 3, 108, 54, 0, 1829, 1831, 3, 106, 53, 0, 1830, 1829, 1, 0, 0, 0, 1831, 1834, 1, 0, 0, 0, 1832, 1830, 1, 0, 0, 0, 1832, 1833, 1, 0, 0, 0, 1833, 1874, 1, 0, 0, 0, 1834, 1832, 1, 0, 0, 0, 1835, 1836, 5, 22, 0, 0, 1836, 1837, 5, 39, 0, 0, 1837, 1838, 3, 104, 52, 0, 1838, 1842, 3, 108, 54, 0, 1839, 1841, 3, 106, 53, 0, 1840, 1839, 1, 0, 0, 0, 1841, 1844, 1, 0, 0, 0, 1842, 1840, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1874, 1, 0, 0, 0, 1844, 1842, 1, 0, 0, 0, 1845, 1846, 5, 19, 0, 0, 1846, 1847, 5, 38, 0, 0, 1847, 1874, 3, 104, 52, 0, 1848, 1849, 5, 19, 0, 0, 1849, 1850, 5, 39, 0, 0, 1850, 1874, 3, 104, 52, 0, 1851, 1852, 5, 48, 0, 0, 1852, 1853, 5, 50, 0, 0, 1853, 1874, 5, 511, 0, 0, 1854, 1855, 5, 48, 0, 0, 1855, 1856, 5, 405, 0, 0, 1856, 1874, 5, 511, 0, 0, 1857, 1858, 5, 48, 0, 0, 1858, 1859, 5, 43, 0, 0, 1859, 1874, 5, 42, 0, 0, 1860, 1861, 5, 48, 0, 0, 1861, 1862, 5, 49, 0, 0, 1862, 1863, 5, 497, 0, 0, 1863, 1864, 5, 513, 0, 0, 1864, 1865, 5, 495, 0, 0, 1865, 1866, 5, 513, 0, 0, 1866, 1874, 5, 498, 0, 0, 1867, 1868, 5, 47, 0, 0, 1868, 1869, 5, 41, 0, 0, 1869, 1874, 3, 114, 57, 0, 1870, 1871, 5, 19, 0, 0, 1871, 1872, 5, 41, 0, 0, 1872, 1874, 5, 515, 0, 0, 1873, 1807, 1, 0, 0, 0, 1873, 1810, 1, 0, 0, 0, 1873, 1813, 1, 0, 0, 0, 1873, 1819, 1, 0, 0, 0, 1873, 1825, 1, 0, 0, 0, 1873, 1835, 1, 0, 0, 0, 1873, 1845, 1, 0, 0, 0, 1873, 1848, 1, 0, 0, 0, 1873, 1851, 1, 0, 0, 0, 1873, 1854, 1, 0, 0, 0, 1873, 1857, 1, 0, 0, 0, 1873, 1860, 1, 0, 0, 0, 1873, 1867, 1, 0, 0, 0, 1873, 1870, 1, 0, 0, 0, 1874, 131, 1, 0, 0, 0, 1875, 1876, 5, 48, 0, 0, 1876, 1877, 5, 53, 0, 0, 1877, 1888, 3, 128, 64, 0, 1878, 1879, 5, 48, 0, 0, 1879, 1880, 5, 42, 0, 0, 1880, 1888, 7, 8, 0, 0, 1881, 1882, 5, 48, 0, 0, 1882, 1883, 5, 51, 0, 0, 1883, 1888, 7, 9, 0, 0, 1884, 1885, 5, 48, 0, 0, 1885, 1886, 5, 405, 0, 0, 1886, 1888, 5, 511, 0, 0, 1887, 1875, 1, 0, 0, 0, 1887, 1878, 1, 0, 0, 0, 1887, 1881, 1, 0, 0, 0, 1887, 1884, 1, 0, 0, 0, 1888, 133, 1, 0, 0, 0, 1889, 1890, 5, 47, 0, 0, 1890, 1891, 5, 417, 0, 0, 1891, 1894, 5, 515, 0, 0, 1892, 1893, 5, 188, 0, 0, 1893, 1895, 5, 511, 0, 0, 1894, 1892, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1908, 1, 0, 0, 0, 1896, 1897, 5, 20, 0, 0, 1897, 1898, 5, 417, 0, 0, 1898, 1899, 5, 515, 0, 0, 1899, 1900, 5, 423, 0, 0, 1900, 1908, 5, 515, 0, 0, 1901, 1902, 5, 19, 0, 0, 1902, 1903, 5, 417, 0, 0, 1903, 1908, 5, 515, 0, 0, 1904, 1905, 5, 48, 0, 0, 1905, 1906, 5, 405, 0, 0, 1906, 1908, 5, 511, 0, 0, 1907, 1889, 1, 0, 0, 0, 1907, 1896, 1, 0, 0, 0, 1907, 1901, 1, 0, 0, 0, 1907, 1904, 1, 0, 0, 0, 1908, 135, 1, 0, 0, 0, 1909, 1910, 5, 47, 0, 0, 1910, 1911, 5, 33, 0, 0, 1911, 1914, 3, 708, 354, 0, 1912, 1913, 5, 49, 0, 0, 1913, 1915, 5, 513, 0, 0, 1914, 1912, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1923, 1, 0, 0, 0, 1916, 1917, 5, 19, 0, 0, 1917, 1918, 5, 33, 0, 0, 1918, 1923, 3, 708, 354, 0, 1919, 1920, 5, 48, 0, 0, 1920, 1921, 5, 405, 0, 0, 1921, 1923, 5, 511, 0, 0, 1922, 1909, 1, 0, 0, 0, 1922, 1916, 1, 0, 0, 0, 1922, 1919, 1, 0, 0, 0, 1923, 137, 1, 0, 0, 0, 1924, 1925, 5, 29, 0, 0, 1925, 1927, 5, 515, 0, 0, 1926, 1928, 3, 140, 70, 0, 1927, 1926, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 139, 1, 0, 0, 0, 1929, 1931, 3, 142, 71, 0, 1930, 1929, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 1930, 1, 0, 0, 0, 1932, 1933, 1, 0, 0, 0, 1933, 141, 1, 0, 0, 0, 1934, 1935, 5, 405, 0, 0, 1935, 1939, 5, 511, 0, 0, 1936, 1937, 5, 219, 0, 0, 1937, 1939, 5, 511, 0, 0, 1938, 1934, 1, 0, 0, 0, 1938, 1936, 1, 0, 0, 0, 1939, 143, 1, 0, 0, 0, 1940, 1941, 5, 28, 0, 0, 1941, 1942, 3, 708, 354, 0, 1942, 1943, 5, 497, 0, 0, 1943, 1944, 3, 146, 73, 0, 1944, 1946, 5, 498, 0, 0, 1945, 1947, 3, 152, 76, 0, 1946, 1945, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 145, 1, 0, 0, 0, 1948, 1953, 3, 148, 74, 0, 1949, 1950, 5, 495, 0, 0, 1950, 1952, 3, 148, 74, 0, 1951, 1949, 1, 0, 0, 0, 1952, 1955, 1, 0, 0, 0, 1953, 1951, 1, 0, 0, 0, 1953, 1954, 1, 0, 0, 0, 1954, 147, 1, 0, 0, 0, 1955, 1953, 1, 0, 0, 0, 1956, 1958, 3, 718, 359, 0, 1957, 1956, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 1964, 3, 150, 75, 0, 1960, 1962, 5, 188, 0, 0, 1961, 1960, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 1965, 5, 511, 0, 0, 1964, 1961, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 149, 1, 0, 0, 0, 1966, 1982, 5, 515, 0, 0, 1967, 1982, 5, 517, 0, 0, 1968, 1982, 3, 730, 365, 0, 1969, 1982, 5, 312, 0, 0, 1970, 1982, 5, 313, 0, 0, 1971, 1982, 5, 347, 0, 0, 1972, 1982, 5, 346, 0, 0, 1973, 1982, 5, 318, 0, 0, 1974, 1982, 5, 339, 0, 0, 1975, 1982, 5, 340, 0, 0, 1976, 1982, 5, 341, 0, 0, 1977, 1982, 5, 343, 0, 0, 1978, 1982, 5, 26, 0, 0, 1979, 1982, 5, 348, 0, 0, 1980, 1982, 5, 370, 0, 0, 1981, 1966, 1, 0, 0, 0, 1981, 1967, 1, 0, 0, 0, 1981, 1968, 1, 0, 0, 0, 1981, 1969, 1, 0, 0, 0, 1981, 1970, 1, 0, 0, 0, 1981, 1971, 1, 0, 0, 0, 1981, 1972, 1, 0, 0, 0, 1981, 1973, 1, 0, 0, 0, 1981, 1974, 1, 0, 0, 0, 1981, 1975, 1, 0, 0, 0, 1981, 1976, 1, 0, 0, 0, 1981, 1977, 1, 0, 0, 0, 1981, 1978, 1, 0, 0, 0, 1981, 1979, 1, 0, 0, 0, 1981, 1980, 1, 0, 0, 0, 1982, 151, 1, 0, 0, 0, 1983, 1985, 3, 154, 77, 0, 1984, 1983, 1, 0, 0, 0, 1985, 1986, 1, 0, 0, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1987, 1, 0, 0, 0, 1987, 153, 1, 0, 0, 0, 1988, 1989, 5, 405, 0, 0, 1989, 1990, 5, 511, 0, 0, 1990, 155, 1, 0, 0, 0, 1991, 1992, 5, 226, 0, 0, 1992, 1993, 5, 227, 0, 0, 1993, 1995, 3, 708, 354, 0, 1994, 1996, 3, 158, 79, 0, 1995, 1994, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1998, 1, 0, 0, 0, 1997, 1999, 3, 162, 81, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 157, 1, 0, 0, 0, 2000, 2002, 3, 160, 80, 0, 2001, 2000, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2001, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 159, 1, 0, 0, 0, 2005, 2006, 5, 361, 0, 0, 2006, 2007, 5, 454, 0, 0, 2007, 2011, 5, 511, 0, 0, 2008, 2009, 5, 405, 0, 0, 2009, 2011, 5, 511, 0, 0, 2010, 2005, 1, 0, 0, 0, 2010, 2008, 1, 0, 0, 0, 2011, 161, 1, 0, 0, 0, 2012, 2013, 5, 497, 0, 0, 2013, 2018, 3, 164, 82, 0, 2014, 2015, 5, 495, 0, 0, 2015, 2017, 3, 164, 82, 0, 2016, 2014, 1, 0, 0, 0, 2017, 2020, 1, 0, 0, 0, 2018, 2016, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2021, 1, 0, 0, 0, 2020, 2018, 1, 0, 0, 0, 2021, 2022, 5, 498, 0, 0, 2022, 163, 1, 0, 0, 0, 2023, 2024, 5, 226, 0, 0, 2024, 2025, 3, 166, 83, 0, 2025, 2026, 5, 71, 0, 0, 2026, 2027, 5, 332, 0, 0, 2027, 2028, 5, 511, 0, 0, 2028, 165, 1, 0, 0, 0, 2029, 2033, 5, 515, 0, 0, 2030, 2033, 5, 517, 0, 0, 2031, 2033, 3, 730, 365, 0, 2032, 2029, 1, 0, 0, 0, 2032, 2030, 1, 0, 0, 0, 2032, 2031, 1, 0, 0, 0, 2033, 167, 1, 0, 0, 0, 2034, 2035, 5, 298, 0, 0, 2035, 2036, 5, 300, 0, 0, 2036, 2037, 3, 708, 354, 0, 2037, 2038, 5, 426, 0, 0, 2038, 2039, 3, 708, 354, 0, 2039, 2040, 3, 170, 85, 0, 2040, 169, 1, 0, 0, 0, 2041, 2042, 5, 307, 0, 0, 2042, 2043, 3, 668, 334, 0, 2043, 2044, 5, 299, 0, 0, 2044, 2045, 5, 511, 0, 0, 2045, 2069, 1, 0, 0, 0, 2046, 2047, 5, 301, 0, 0, 2047, 2048, 3, 174, 87, 0, 2048, 2049, 5, 299, 0, 0, 2049, 2050, 5, 511, 0, 0, 2050, 2069, 1, 0, 0, 0, 2051, 2052, 5, 294, 0, 0, 2052, 2053, 3, 176, 88, 0, 2053, 2054, 5, 299, 0, 0, 2054, 2055, 5, 511, 0, 0, 2055, 2069, 1, 0, 0, 0, 2056, 2057, 5, 304, 0, 0, 2057, 2058, 3, 174, 87, 0, 2058, 2059, 3, 172, 86, 0, 2059, 2060, 5, 299, 0, 0, 2060, 2061, 5, 511, 0, 0, 2061, 2069, 1, 0, 0, 0, 2062, 2063, 5, 305, 0, 0, 2063, 2064, 3, 174, 87, 0, 2064, 2065, 5, 511, 0, 0, 2065, 2066, 5, 299, 0, 0, 2066, 2067, 5, 511, 0, 0, 2067, 2069, 1, 0, 0, 0, 2068, 2041, 1, 0, 0, 0, 2068, 2046, 1, 0, 0, 0, 2068, 2051, 1, 0, 0, 0, 2068, 2056, 1, 0, 0, 0, 2068, 2062, 1, 0, 0, 0, 2069, 171, 1, 0, 0, 0, 2070, 2071, 5, 290, 0, 0, 2071, 2072, 3, 712, 356, 0, 2072, 2073, 5, 285, 0, 0, 2073, 2074, 3, 712, 356, 0, 2074, 2084, 1, 0, 0, 0, 2075, 2076, 5, 485, 0, 0, 2076, 2084, 3, 712, 356, 0, 2077, 2078, 5, 482, 0, 0, 2078, 2084, 3, 712, 356, 0, 2079, 2080, 5, 486, 0, 0, 2080, 2084, 3, 712, 356, 0, 2081, 2082, 5, 483, 0, 0, 2082, 2084, 3, 712, 356, 0, 2083, 2070, 1, 0, 0, 0, 2083, 2075, 1, 0, 0, 0, 2083, 2077, 1, 0, 0, 0, 2083, 2079, 1, 0, 0, 0, 2083, 2081, 1, 0, 0, 0, 2084, 173, 1, 0, 0, 0, 2085, 2090, 5, 515, 0, 0, 2086, 2087, 5, 490, 0, 0, 2087, 2089, 5, 515, 0, 0, 2088, 2086, 1, 0, 0, 0, 2089, 2092, 1, 0, 0, 0, 2090, 2088, 1, 0, 0, 0, 2090, 2091, 1, 0, 0, 0, 2091, 175, 1, 0, 0, 0, 2092, 2090, 1, 0, 0, 0, 2093, 2098, 3, 174, 87, 0, 2094, 2095, 5, 495, 0, 0, 2095, 2097, 3, 174, 87, 0, 2096, 2094, 1, 0, 0, 0, 2097, 2100, 1, 0, 0, 0, 2098, 2096, 1, 0, 0, 0, 2098, 2099, 1, 0, 0, 0, 2099, 177, 1, 0, 0, 0, 2100, 2098, 1, 0, 0, 0, 2101, 2102, 5, 30, 0, 0, 2102, 2103, 3, 708, 354, 0, 2103, 2105, 5, 497, 0, 0, 2104, 2106, 3, 190, 95, 0, 2105, 2104, 1, 0, 0, 0, 2105, 2106, 1, 0, 0, 0, 2106, 2107, 1, 0, 0, 0, 2107, 2109, 5, 498, 0, 0, 2108, 2110, 3, 196, 98, 0, 2109, 2108, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2112, 1, 0, 0, 0, 2111, 2113, 3, 198, 99, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2115, 5, 96, 0, 0, 2115, 2116, 3, 202, 101, 0, 2116, 2118, 5, 83, 0, 0, 2117, 2119, 5, 494, 0, 0, 2118, 2117, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2121, 1, 0, 0, 0, 2120, 2122, 5, 490, 0, 0, 2121, 2120, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 179, 1, 0, 0, 0, 2123, 2124, 5, 114, 0, 0, 2124, 2125, 5, 116, 0, 0, 2125, 2126, 3, 708, 354, 0, 2126, 2128, 5, 497, 0, 0, 2127, 2129, 3, 182, 91, 0, 2128, 2127, 1, 0, 0, 0, 2128, 2129, 1, 0, 0, 0, 2129, 2130, 1, 0, 0, 0, 2130, 2132, 5, 498, 0, 0, 2131, 2133, 3, 186, 93, 0, 2132, 2131, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2135, 1, 0, 0, 0, 2134, 2136, 3, 188, 94, 0, 2135, 2134, 1, 0, 0, 0, 2135, 2136, 1, 0, 0, 0, 2136, 2137, 1, 0, 0, 0, 2137, 2138, 5, 76, 0, 0, 2138, 2140, 5, 512, 0, 0, 2139, 2141, 5, 494, 0, 0, 2140, 2139, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 181, 1, 0, 0, 0, 2142, 2147, 3, 184, 92, 0, 2143, 2144, 5, 495, 0, 0, 2144, 2146, 3, 184, 92, 0, 2145, 2143, 1, 0, 0, 0, 2146, 2149, 1, 0, 0, 0, 2147, 2145, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 183, 1, 0, 0, 0, 2149, 2147, 1, 0, 0, 0, 2150, 2151, 3, 194, 97, 0, 2151, 2152, 5, 503, 0, 0, 2152, 2154, 3, 108, 54, 0, 2153, 2155, 5, 7, 0, 0, 2154, 2153, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 185, 1, 0, 0, 0, 2156, 2157, 5, 77, 0, 0, 2157, 2158, 3, 108, 54, 0, 2158, 187, 1, 0, 0, 0, 2159, 2160, 5, 367, 0, 0, 2160, 2161, 5, 76, 0, 0, 2161, 2162, 5, 511, 0, 0, 2162, 2163, 5, 289, 0, 0, 2163, 2164, 5, 511, 0, 0, 2164, 189, 1, 0, 0, 0, 2165, 2170, 3, 192, 96, 0, 2166, 2167, 5, 495, 0, 0, 2167, 2169, 3, 192, 96, 0, 2168, 2166, 1, 0, 0, 0, 2169, 2172, 1, 0, 0, 0, 2170, 2168, 1, 0, 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 191, 1, 0, 0, 0, 2172, 2170, 1, 0, 0, 0, 2173, 2176, 3, 194, 97, 0, 2174, 2176, 5, 514, 0, 0, 2175, 2173, 1, 0, 0, 0, 2175, 2174, 1, 0, 0, 0, 2176, 2177, 1, 0, 0, 0, 2177, 2178, 5, 503, 0, 0, 2178, 2179, 3, 108, 54, 0, 2179, 193, 1, 0, 0, 0, 2180, 2184, 5, 515, 0, 0, 2181, 2184, 5, 517, 0, 0, 2182, 2184, 3, 730, 365, 0, 2183, 2180, 1, 0, 0, 0, 2183, 2181, 1, 0, 0, 0, 2183, 2182, 1, 0, 0, 0, 2184, 195, 1, 0, 0, 0, 2185, 2186, 5, 77, 0, 0, 2186, 2189, 3, 108, 54, 0, 2187, 2188, 5, 76, 0, 0, 2188, 2190, 5, 514, 0, 0, 2189, 2187, 1, 0, 0, 0, 2189, 2190, 1, 0, 0, 0, 2190, 197, 1, 0, 0, 0, 2191, 2193, 3, 200, 100, 0, 2192, 2191, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2192, 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 199, 1, 0, 0, 0, 2196, 2197, 5, 219, 0, 0, 2197, 2201, 5, 511, 0, 0, 2198, 2199, 5, 405, 0, 0, 2199, 2201, 5, 511, 0, 0, 2200, 2196, 1, 0, 0, 0, 2200, 2198, 1, 0, 0, 0, 2201, 201, 1, 0, 0, 0, 2202, 2204, 3, 204, 102, 0, 2203, 2202, 1, 0, 0, 0, 2204, 2207, 1, 0, 0, 0, 2205, 2203, 1, 0, 0, 0, 2205, 2206, 1, 0, 0, 0, 2206, 203, 1, 0, 0, 0, 2207, 2205, 1, 0, 0, 0, 2208, 2210, 3, 720, 360, 0, 2209, 2208, 1, 0, 0, 0, 2210, 2213, 1, 0, 0, 0, 2211, 2209, 1, 0, 0, 0, 2211, 2212, 1, 0, 0, 0, 2212, 2214, 1, 0, 0, 0, 2213, 2211, 1, 0, 0, 0, 2214, 2216, 3, 206, 103, 0, 2215, 2217, 5, 494, 0, 0, 2216, 2215, 1, 0, 0, 0, 2216, 2217, 1, 0, 0, 0, 2217, 2539, 1, 0, 0, 0, 2218, 2220, 3, 720, 360, 0, 2219, 2218, 1, 0, 0, 0, 2220, 2223, 1, 0, 0, 0, 2221, 2219, 1, 0, 0, 0, 2221, 2222, 1, 0, 0, 0, 2222, 2224, 1, 0, 0, 0, 2223, 2221, 1, 0, 0, 0, 2224, 2226, 3, 208, 104, 0, 2225, 2227, 5, 494, 0, 0, 2226, 2225, 1, 0, 0, 0, 2226, 2227, 1, 0, 0, 0, 2227, 2539, 1, 0, 0, 0, 2228, 2230, 3, 720, 360, 0, 2229, 2228, 1, 0, 0, 0, 2230, 2233, 1, 0, 0, 0, 2231, 2229, 1, 0, 0, 0, 2231, 2232, 1, 0, 0, 0, 2232, 2234, 1, 0, 0, 0, 2233, 2231, 1, 0, 0, 0, 2234, 2236, 3, 316, 158, 0, 2235, 2237, 5, 494, 0, 0, 2236, 2235, 1, 0, 0, 0, 2236, 2237, 1, 0, 0, 0, 2237, 2539, 1, 0, 0, 0, 2238, 2240, 3, 720, 360, 0, 2239, 2238, 1, 0, 0, 0, 2240, 2243, 1, 0, 0, 0, 2241, 2239, 1, 0, 0, 0, 2241, 2242, 1, 0, 0, 0, 2242, 2244, 1, 0, 0, 0, 2243, 2241, 1, 0, 0, 0, 2244, 2246, 3, 210, 105, 0, 2245, 2247, 5, 494, 0, 0, 2246, 2245, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2539, 1, 0, 0, 0, 2248, 2250, 3, 720, 360, 0, 2249, 2248, 1, 0, 0, 0, 2250, 2253, 1, 0, 0, 0, 2251, 2249, 1, 0, 0, 0, 2251, 2252, 1, 0, 0, 0, 2252, 2254, 1, 0, 0, 0, 2253, 2251, 1, 0, 0, 0, 2254, 2256, 3, 212, 106, 0, 2255, 2257, 5, 494, 0, 0, 2256, 2255, 1, 0, 0, 0, 2256, 2257, 1, 0, 0, 0, 2257, 2539, 1, 0, 0, 0, 2258, 2260, 3, 720, 360, 0, 2259, 2258, 1, 0, 0, 0, 2260, 2263, 1, 0, 0, 0, 2261, 2259, 1, 0, 0, 0, 2261, 2262, 1, 0, 0, 0, 2262, 2264, 1, 0, 0, 0, 2263, 2261, 1, 0, 0, 0, 2264, 2266, 3, 216, 108, 0, 2265, 2267, 5, 494, 0, 0, 2266, 2265, 1, 0, 0, 0, 2266, 2267, 1, 0, 0, 0, 2267, 2539, 1, 0, 0, 0, 2268, 2270, 3, 720, 360, 0, 2269, 2268, 1, 0, 0, 0, 2270, 2273, 1, 0, 0, 0, 2271, 2269, 1, 0, 0, 0, 2271, 2272, 1, 0, 0, 0, 2272, 2274, 1, 0, 0, 0, 2273, 2271, 1, 0, 0, 0, 2274, 2276, 3, 218, 109, 0, 2275, 2277, 5, 494, 0, 0, 2276, 2275, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2539, 1, 0, 0, 0, 2278, 2280, 3, 720, 360, 0, 2279, 2278, 1, 0, 0, 0, 2280, 2283, 1, 0, 0, 0, 2281, 2279, 1, 0, 0, 0, 2281, 2282, 1, 0, 0, 0, 2282, 2284, 1, 0, 0, 0, 2283, 2281, 1, 0, 0, 0, 2284, 2286, 3, 220, 110, 0, 2285, 2287, 5, 494, 0, 0, 2286, 2285, 1, 0, 0, 0, 2286, 2287, 1, 0, 0, 0, 2287, 2539, 1, 0, 0, 0, 2288, 2290, 3, 720, 360, 0, 2289, 2288, 1, 0, 0, 0, 2290, 2293, 1, 0, 0, 0, 2291, 2289, 1, 0, 0, 0, 2291, 2292, 1, 0, 0, 0, 2292, 2294, 1, 0, 0, 0, 2293, 2291, 1, 0, 0, 0, 2294, 2296, 3, 222, 111, 0, 2295, 2297, 5, 494, 0, 0, 2296, 2295, 1, 0, 0, 0, 2296, 2297, 1, 0, 0, 0, 2297, 2539, 1, 0, 0, 0, 2298, 2300, 3, 720, 360, 0, 2299, 2298, 1, 0, 0, 0, 2300, 2303, 1, 0, 0, 0, 2301, 2299, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2302, 2304, 1, 0, 0, 0, 2303, 2301, 1, 0, 0, 0, 2304, 2306, 3, 228, 114, 0, 2305, 2307, 5, 494, 0, 0, 2306, 2305, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2539, 1, 0, 0, 0, 2308, 2310, 3, 720, 360, 0, 2309, 2308, 1, 0, 0, 0, 2310, 2313, 1, 0, 0, 0, 2311, 2309, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 2314, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2314, 2316, 3, 230, 115, 0, 2315, 2317, 5, 494, 0, 0, 2316, 2315, 1, 0, 0, 0, 2316, 2317, 1, 0, 0, 0, 2317, 2539, 1, 0, 0, 0, 2318, 2320, 3, 720, 360, 0, 2319, 2318, 1, 0, 0, 0, 2320, 2323, 1, 0, 0, 0, 2321, 2319, 1, 0, 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2324, 1, 0, 0, 0, 2323, 2321, 1, 0, 0, 0, 2324, 2326, 3, 232, 116, 0, 2325, 2327, 5, 494, 0, 0, 2326, 2325, 1, 0, 0, 0, 2326, 2327, 1, 0, 0, 0, 2327, 2539, 1, 0, 0, 0, 2328, 2330, 3, 720, 360, 0, 2329, 2328, 1, 0, 0, 0, 2330, 2333, 1, 0, 0, 0, 2331, 2329, 1, 0, 0, 0, 2331, 2332, 1, 0, 0, 0, 2332, 2334, 1, 0, 0, 0, 2333, 2331, 1, 0, 0, 0, 2334, 2336, 3, 234, 117, 0, 2335, 2337, 5, 494, 0, 0, 2336, 2335, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2539, 1, 0, 0, 0, 2338, 2340, 3, 720, 360, 0, 2339, 2338, 1, 0, 0, 0, 2340, 2343, 1, 0, 0, 0, 2341, 2339, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2344, 1, 0, 0, 0, 2343, 2341, 1, 0, 0, 0, 2344, 2346, 3, 236, 118, 0, 2345, 2347, 5, 494, 0, 0, 2346, 2345, 1, 0, 0, 0, 2346, 2347, 1, 0, 0, 0, 2347, 2539, 1, 0, 0, 0, 2348, 2350, 3, 720, 360, 0, 2349, 2348, 1, 0, 0, 0, 2350, 2353, 1, 0, 0, 0, 2351, 2349, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 2354, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2354, 2356, 3, 238, 119, 0, 2355, 2357, 5, 494, 0, 0, 2356, 2355, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2539, 1, 0, 0, 0, 2358, 2360, 3, 720, 360, 0, 2359, 2358, 1, 0, 0, 0, 2360, 2363, 1, 0, 0, 0, 2361, 2359, 1, 0, 0, 0, 2361, 2362, 1, 0, 0, 0, 2362, 2364, 1, 0, 0, 0, 2363, 2361, 1, 0, 0, 0, 2364, 2366, 3, 240, 120, 0, 2365, 2367, 5, 494, 0, 0, 2366, 2365, 1, 0, 0, 0, 2366, 2367, 1, 0, 0, 0, 2367, 2539, 1, 0, 0, 0, 2368, 2370, 3, 720, 360, 0, 2369, 2368, 1, 0, 0, 0, 2370, 2373, 1, 0, 0, 0, 2371, 2369, 1, 0, 0, 0, 2371, 2372, 1, 0, 0, 0, 2372, 2374, 1, 0, 0, 0, 2373, 2371, 1, 0, 0, 0, 2374, 2376, 3, 242, 121, 0, 2375, 2377, 5, 494, 0, 0, 2376, 2375, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2539, 1, 0, 0, 0, 2378, 2380, 3, 720, 360, 0, 2379, 2378, 1, 0, 0, 0, 2380, 2383, 1, 0, 0, 0, 2381, 2379, 1, 0, 0, 0, 2381, 2382, 1, 0, 0, 0, 2382, 2384, 1, 0, 0, 0, 2383, 2381, 1, 0, 0, 0, 2384, 2386, 3, 254, 127, 0, 2385, 2387, 5, 494, 0, 0, 2386, 2385, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2539, 1, 0, 0, 0, 2388, 2390, 3, 720, 360, 0, 2389, 2388, 1, 0, 0, 0, 2390, 2393, 1, 0, 0, 0, 2391, 2389, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 1, 0, 0, 0, 2393, 2391, 1, 0, 0, 0, 2394, 2396, 3, 256, 128, 0, 2395, 2397, 5, 494, 0, 0, 2396, 2395, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2539, 1, 0, 0, 0, 2398, 2400, 3, 720, 360, 0, 2399, 2398, 1, 0, 0, 0, 2400, 2403, 1, 0, 0, 0, 2401, 2399, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2404, 1, 0, 0, 0, 2403, 2401, 1, 0, 0, 0, 2404, 2406, 3, 258, 129, 0, 2405, 2407, 5, 494, 0, 0, 2406, 2405, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2539, 1, 0, 0, 0, 2408, 2410, 3, 720, 360, 0, 2409, 2408, 1, 0, 0, 0, 2410, 2413, 1, 0, 0, 0, 2411, 2409, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2414, 1, 0, 0, 0, 2413, 2411, 1, 0, 0, 0, 2414, 2416, 3, 260, 130, 0, 2415, 2417, 5, 494, 0, 0, 2416, 2415, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2539, 1, 0, 0, 0, 2418, 2420, 3, 720, 360, 0, 2419, 2418, 1, 0, 0, 0, 2420, 2423, 1, 0, 0, 0, 2421, 2419, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 2424, 1, 0, 0, 0, 2423, 2421, 1, 0, 0, 0, 2424, 2426, 3, 266, 133, 0, 2425, 2427, 5, 494, 0, 0, 2426, 2425, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2539, 1, 0, 0, 0, 2428, 2430, 3, 720, 360, 0, 2429, 2428, 1, 0, 0, 0, 2430, 2433, 1, 0, 0, 0, 2431, 2429, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2434, 1, 0, 0, 0, 2433, 2431, 1, 0, 0, 0, 2434, 2436, 3, 272, 136, 0, 2435, 2437, 5, 494, 0, 0, 2436, 2435, 1, 0, 0, 0, 2436, 2437, 1, 0, 0, 0, 2437, 2539, 1, 0, 0, 0, 2438, 2440, 3, 720, 360, 0, 2439, 2438, 1, 0, 0, 0, 2440, 2443, 1, 0, 0, 0, 2441, 2439, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2444, 1, 0, 0, 0, 2443, 2441, 1, 0, 0, 0, 2444, 2446, 3, 274, 137, 0, 2445, 2447, 5, 494, 0, 0, 2446, 2445, 1, 0, 0, 0, 2446, 2447, 1, 0, 0, 0, 2447, 2539, 1, 0, 0, 0, 2448, 2450, 3, 720, 360, 0, 2449, 2448, 1, 0, 0, 0, 2450, 2453, 1, 0, 0, 0, 2451, 2449, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2454, 1, 0, 0, 0, 2453, 2451, 1, 0, 0, 0, 2454, 2456, 3, 276, 138, 0, 2455, 2457, 5, 494, 0, 0, 2456, 2455, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 2539, 1, 0, 0, 0, 2458, 2460, 3, 720, 360, 0, 2459, 2458, 1, 0, 0, 0, 2460, 2463, 1, 0, 0, 0, 2461, 2459, 1, 0, 0, 0, 2461, 2462, 1, 0, 0, 0, 2462, 2464, 1, 0, 0, 0, 2463, 2461, 1, 0, 0, 0, 2464, 2466, 3, 278, 139, 0, 2465, 2467, 5, 494, 0, 0, 2466, 2465, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0, 2467, 2539, 1, 0, 0, 0, 2468, 2470, 3, 720, 360, 0, 2469, 2468, 1, 0, 0, 0, 2470, 2473, 1, 0, 0, 0, 2471, 2469, 1, 0, 0, 0, 2471, 2472, 1, 0, 0, 0, 2472, 2474, 1, 0, 0, 0, 2473, 2471, 1, 0, 0, 0, 2474, 2476, 3, 304, 152, 0, 2475, 2477, 5, 494, 0, 0, 2476, 2475, 1, 0, 0, 0, 2476, 2477, 1, 0, 0, 0, 2477, 2539, 1, 0, 0, 0, 2478, 2480, 3, 720, 360, 0, 2479, 2478, 1, 0, 0, 0, 2480, 2483, 1, 0, 0, 0, 2481, 2479, 1, 0, 0, 0, 2481, 2482, 1, 0, 0, 0, 2482, 2484, 1, 0, 0, 0, 2483, 2481, 1, 0, 0, 0, 2484, 2486, 3, 312, 156, 0, 2485, 2487, 5, 494, 0, 0, 2486, 2485, 1, 0, 0, 0, 2486, 2487, 1, 0, 0, 0, 2487, 2539, 1, 0, 0, 0, 2488, 2490, 3, 720, 360, 0, 2489, 2488, 1, 0, 0, 0, 2490, 2493, 1, 0, 0, 0, 2491, 2489, 1, 0, 0, 0, 2491, 2492, 1, 0, 0, 0, 2492, 2494, 1, 0, 0, 0, 2493, 2491, 1, 0, 0, 0, 2494, 2496, 3, 318, 159, 0, 2495, 2497, 5, 494, 0, 0, 2496, 2495, 1, 0, 0, 0, 2496, 2497, 1, 0, 0, 0, 2497, 2539, 1, 0, 0, 0, 2498, 2500, 3, 720, 360, 0, 2499, 2498, 1, 0, 0, 0, 2500, 2503, 1, 0, 0, 0, 2501, 2499, 1, 0, 0, 0, 2501, 2502, 1, 0, 0, 0, 2502, 2504, 1, 0, 0, 0, 2503, 2501, 1, 0, 0, 0, 2504, 2506, 3, 320, 160, 0, 2505, 2507, 5, 494, 0, 0, 2506, 2505, 1, 0, 0, 0, 2506, 2507, 1, 0, 0, 0, 2507, 2539, 1, 0, 0, 0, 2508, 2510, 3, 720, 360, 0, 2509, 2508, 1, 0, 0, 0, 2510, 2513, 1, 0, 0, 0, 2511, 2509, 1, 0, 0, 0, 2511, 2512, 1, 0, 0, 0, 2512, 2514, 1, 0, 0, 0, 2513, 2511, 1, 0, 0, 0, 2514, 2516, 3, 280, 140, 0, 2515, 2517, 5, 494, 0, 0, 2516, 2515, 1, 0, 0, 0, 2516, 2517, 1, 0, 0, 0, 2517, 2539, 1, 0, 0, 0, 2518, 2520, 3, 720, 360, 0, 2519, 2518, 1, 0, 0, 0, 2520, 2523, 1, 0, 0, 0, 2521, 2519, 1, 0, 0, 0, 2521, 2522, 1, 0, 0, 0, 2522, 2524, 1, 0, 0, 0, 2523, 2521, 1, 0, 0, 0, 2524, 2526, 3, 282, 141, 0, 2525, 2527, 5, 494, 0, 0, 2526, 2525, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527, 2539, 1, 0, 0, 0, 2528, 2530, 3, 720, 360, 0, 2529, 2528, 1, 0, 0, 0, 2530, 2533, 1, 0, 0, 0, 2531, 2529, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 2534, 1, 0, 0, 0, 2533, 2531, 1, 0, 0, 0, 2534, 2536, 3, 300, 150, 0, 2535, 2537, 5, 494, 0, 0, 2536, 2535, 1, 0, 0, 0, 2536, 2537, 1, 0, 0, 0, 2537, 2539, 1, 0, 0, 0, 2538, 2211, 1, 0, 0, 0, 2538, 2221, 1, 0, 0, 0, 2538, 2231, 1, 0, 0, 0, 2538, 2241, 1, 0, 0, 0, 2538, 2251, 1, 0, 0, 0, 2538, 2261, 1, 0, 0, 0, 2538, 2271, 1, 0, 0, 0, 2538, 2281, 1, 0, 0, 0, 2538, 2291, 1, 0, 0, 0, 2538, 2301, 1, 0, 0, 0, 2538, 2311, 1, 0, 0, 0, 2538, 2321, 1, 0, 0, 0, 2538, 2331, 1, 0, 0, 0, 2538, 2341, 1, 0, 0, 0, 2538, 2351, 1, 0, 0, 0, 2538, 2361, 1, 0, 0, 0, 2538, 2371, 1, 0, 0, 0, 2538, 2381, 1, 0, 0, 0, 2538, 2391, 1, 0, 0, 0, 2538, 2401, 1, 0, 0, 0, 2538, 2411, 1, 0, 0, 0, 2538, 2421, 1, 0, 0, 0, 2538, 2431, 1, 0, 0, 0, 2538, 2441, 1, 0, 0, 0, 2538, 2451, 1, 0, 0, 0, 2538, 2461, 1, 0, 0, 0, 2538, 2471, 1, 0, 0, 0, 2538, 2481, 1, 0, 0, 0, 2538, 2491, 1, 0, 0, 0, 2538, 2501, 1, 0, 0, 0, 2538, 2511, 1, 0, 0, 0, 2538, 2521, 1, 0, 0, 0, 2538, 2531, 1, 0, 0, 0, 2539, 205, 1, 0, 0, 0, 2540, 2541, 5, 97, 0, 0, 2541, 2542, 5, 514, 0, 0, 2542, 2545, 3, 108, 54, 0, 2543, 2544, 5, 484, 0, 0, 2544, 2546, 3, 668, 334, 0, 2545, 2543, 1, 0, 0, 0, 2545, 2546, 1, 0, 0, 0, 2546, 207, 1, 0, 0, 0, 2547, 2550, 5, 48, 0, 0, 2548, 2551, 5, 514, 0, 0, 2549, 2551, 3, 214, 107, 0, 2550, 2548, 1, 0, 0, 0, 2550, 2549, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552, 2553, 5, 484, 0, 0, 2553, 2554, 3, 668, 334, 0, 2554, 209, 1, 0, 0, 0, 2555, 2556, 5, 514, 0, 0, 2556, 2558, 5, 484, 0, 0, 2557, 2555, 1, 0, 0, 0, 2557, 2558, 1, 0, 0, 0, 2558, 2559, 1, 0, 0, 0, 2559, 2560, 5, 17, 0, 0, 2560, 2566, 3, 112, 56, 0, 2561, 2563, 5, 497, 0, 0, 2562, 2564, 3, 322, 161, 0, 2563, 2562, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2567, 5, 498, 0, 0, 2566, 2561, 1, 0, 0, 0, 2566, 2567, 1, 0, 0, 0, 2567, 2569, 1, 0, 0, 0, 2568, 2570, 3, 226, 113, 0, 2569, 2568, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 211, 1, 0, 0, 0, 2571, 2572, 5, 98, 0, 0, 2572, 2578, 5, 514, 0, 0, 2573, 2575, 5, 497, 0, 0, 2574, 2576, 3, 322, 161, 0, 2575, 2574, 1, 0, 0, 0, 2575, 2576, 1, 0, 0, 0, 2576, 2577, 1, 0, 0, 0, 2577, 2579, 5, 498, 0, 0, 2578, 2573, 1, 0, 0, 0, 2578, 2579, 1, 0, 0, 0, 2579, 213, 1, 0, 0, 0, 2580, 2586, 5, 514, 0, 0, 2581, 2584, 7, 11, 0, 0, 2582, 2585, 5, 515, 0, 0, 2583, 2585, 3, 708, 354, 0, 2584, 2582, 1, 0, 0, 0, 2584, 2583, 1, 0, 0, 0, 2585, 2587, 1, 0, 0, 0, 2586, 2581, 1, 0, 0, 0, 2587, 2588, 1, 0, 0, 0, 2588, 2586, 1, 0, 0, 0, 2588, 2589, 1, 0, 0, 0, 2589, 215, 1, 0, 0, 0, 2590, 2591, 5, 101, 0, 0, 2591, 2594, 5, 514, 0, 0, 2592, 2593, 5, 139, 0, 0, 2593, 2595, 5, 120, 0, 0, 2594, 2592, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 2597, 1, 0, 0, 0, 2596, 2598, 5, 393, 0, 0, 2597, 2596, 1, 0, 0, 0, 2597, 2598, 1, 0, 0, 0, 2598, 2600, 1, 0, 0, 0, 2599, 2601, 3, 226, 113, 0, 2600, 2599, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 217, 1, 0, 0, 0, 2602, 2603, 5, 100, 0, 0, 2603, 2605, 5, 514, 0, 0, 2604, 2606, 3, 226, 113, 0, 2605, 2604, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 219, 1, 0, 0, 0, 2607, 2608, 5, 102, 0, 0, 2608, 2610, 5, 514, 0, 0, 2609, 2611, 5, 393, 0, 0, 2610, 2609, 1, 0, 0, 0, 2610, 2611, 1, 0, 0, 0, 2611, 221, 1, 0, 0, 0, 2612, 2613, 5, 99, 0, 0, 2613, 2614, 5, 514, 0, 0, 2614, 2615, 5, 71, 0, 0, 2615, 2621, 3, 224, 112, 0, 2616, 2619, 5, 72, 0, 0, 2617, 2620, 3, 354, 177, 0, 2618, 2620, 3, 668, 334, 0, 2619, 2617, 1, 0, 0, 0, 2619, 2618, 1, 0, 0, 0, 2620, 2622, 1, 0, 0, 0, 2621, 2616, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2632, 1, 0, 0, 0, 2623, 2624, 5, 10, 0, 0, 2624, 2629, 3, 352, 176, 0, 2625, 2626, 5, 495, 0, 0, 2626, 2628, 3, 352, 176, 0, 2627, 2625, 1, 0, 0, 0, 2628, 2631, 1, 0, 0, 0, 2629, 2627, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 2633, 1, 0, 0, 0, 2631, 2629, 1, 0, 0, 0, 2632, 2623, 1, 0, 0, 0, 2632, 2633, 1, 0, 0, 0, 2633, 2636, 1, 0, 0, 0, 2634, 2635, 5, 75, 0, 0, 2635, 2637, 3, 668, 334, 0, 2636, 2634, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2640, 1, 0, 0, 0, 2638, 2639, 5, 74, 0, 0, 2639, 2641, 3, 668, 334, 0, 2640, 2638, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2643, 1, 0, 0, 0, 2642, 2644, 3, 226, 113, 0, 2643, 2642, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 223, 1, 0, 0, 0, 2645, 2656, 3, 708, 354, 0, 2646, 2647, 5, 514, 0, 0, 2647, 2648, 5, 490, 0, 0, 2648, 2656, 3, 708, 354, 0, 2649, 2650, 5, 497, 0, 0, 2650, 2651, 3, 582, 291, 0, 2651, 2652, 5, 498, 0, 0, 2652, 2656, 1, 0, 0, 0, 2653, 2654, 5, 353, 0, 0, 2654, 2656, 5, 511, 0, 0, 2655, 2645, 1, 0, 0, 0, 2655, 2646, 1, 0, 0, 0, 2655, 2649, 1, 0, 0, 0, 2655, 2653, 1, 0, 0, 0, 2656, 225, 1, 0, 0, 0, 2657, 2658, 5, 93, 0, 0, 2658, 2659, 5, 302, 0, 0, 2659, 2678, 5, 108, 0, 0, 2660, 2661, 5, 93, 0, 0, 2661, 2662, 5, 302, 0, 0, 2662, 2678, 5, 102, 0, 0, 2663, 2664, 5, 93, 0, 0, 2664, 2665, 5, 302, 0, 0, 2665, 2666, 5, 499, 0, 0, 2666, 2667, 3, 202, 101, 0, 2667, 2668, 5, 500, 0, 0, 2668, 2678, 1, 0, 0, 0, 2669, 2670, 5, 93, 0, 0, 2670, 2671, 5, 302, 0, 0, 2671, 2672, 5, 432, 0, 0, 2672, 2673, 5, 102, 0, 0, 2673, 2674, 5, 499, 0, 0, 2674, 2675, 3, 202, 101, 0, 2675, 2676, 5, 500, 0, 0, 2676, 2678, 1, 0, 0, 0, 2677, 2657, 1, 0, 0, 0, 2677, 2660, 1, 0, 0, 0, 2677, 2663, 1, 0, 0, 0, 2677, 2669, 1, 0, 0, 0, 2678, 227, 1, 0, 0, 0, 2679, 2680, 5, 105, 0, 0, 2680, 2681, 3, 668, 334, 0, 2681, 2682, 5, 81, 0, 0, 2682, 2690, 3, 202, 101, 0, 2683, 2684, 5, 106, 0, 0, 2684, 2685, 3, 668, 334, 0, 2685, 2686, 5, 81, 0, 0, 2686, 2687, 3, 202, 101, 0, 2687, 2689, 1, 0, 0, 0, 2688, 2683, 1, 0, 0, 0, 2689, 2692, 1, 0, 0, 0, 2690, 2688, 1, 0, 0, 0, 2690, 2691, 1, 0, 0, 0, 2691, 2695, 1, 0, 0, 0, 2692, 2690, 1, 0, 0, 0, 2693, 2694, 5, 82, 0, 0, 2694, 2696, 3, 202, 101, 0, 2695, 2693, 1, 0, 0, 0, 2695, 2696, 1, 0, 0, 0, 2696, 2697, 1, 0, 0, 0, 2697, 2698, 5, 83, 0, 0, 2698, 2699, 5, 105, 0, 0, 2699, 229, 1, 0, 0, 0, 2700, 2701, 5, 103, 0, 0, 2701, 2702, 5, 514, 0, 0, 2702, 2705, 5, 289, 0, 0, 2703, 2706, 5, 514, 0, 0, 2704, 2706, 3, 214, 107, 0, 2705, 2703, 1, 0, 0, 0, 2705, 2704, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 2708, 5, 96, 0, 0, 2708, 2709, 3, 202, 101, 0, 2709, 2710, 5, 83, 0, 0, 2710, 2711, 5, 103, 0, 0, 2711, 231, 1, 0, 0, 0, 2712, 2713, 5, 104, 0, 0, 2713, 2715, 3, 668, 334, 0, 2714, 2716, 5, 96, 0, 0, 2715, 2714, 1, 0, 0, 0, 2715, 2716, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2718, 3, 202, 101, 0, 2718, 2720, 5, 83, 0, 0, 2719, 2721, 5, 104, 0, 0, 2720, 2719, 1, 0, 0, 0, 2720, 2721, 1, 0, 0, 0, 2721, 233, 1, 0, 0, 0, 2722, 2723, 5, 108, 0, 0, 2723, 235, 1, 0, 0, 0, 2724, 2725, 5, 109, 0, 0, 2725, 237, 1, 0, 0, 0, 2726, 2728, 5, 110, 0, 0, 2727, 2729, 3, 668, 334, 0, 2728, 2727, 1, 0, 0, 0, 2728, 2729, 1, 0, 0, 0, 2729, 239, 1, 0, 0, 0, 2730, 2731, 5, 303, 0, 0, 2731, 2732, 5, 302, 0, 0, 2732, 241, 1, 0, 0, 0, 2733, 2735, 5, 112, 0, 0, 2734, 2736, 3, 244, 122, 0, 2735, 2734, 1, 0, 0, 0, 2735, 2736, 1, 0, 0, 0, 2736, 2739, 1, 0, 0, 0, 2737, 2738, 5, 119, 0, 0, 2738, 2740, 5, 511, 0, 0, 2739, 2737, 1, 0, 0, 0, 2739, 2740, 1, 0, 0, 0, 2740, 2741, 1, 0, 0, 0, 2741, 2743, 3, 668, 334, 0, 2742, 2744, 3, 250, 125, 0, 2743, 2742, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, 0, 2744, 243, 1, 0, 0, 0, 2745, 2746, 7, 12, 0, 0, 2746, 245, 1, 0, 0, 0, 2747, 2748, 5, 139, 0, 0, 2748, 2749, 5, 497, 0, 0, 2749, 2754, 3, 248, 124, 0, 2750, 2751, 5, 495, 0, 0, 2751, 2753, 3, 248, 124, 0, 2752, 2750, 1, 0, 0, 0, 2753, 2756, 1, 0, 0, 0, 2754, 2752, 1, 0, 0, 0, 2754, 2755, 1, 0, 0, 0, 2755, 2757, 1, 0, 0, 0, 2756, 2754, 1, 0, 0, 0, 2757, 2758, 5, 498, 0, 0, 2758, 2762, 1, 0, 0, 0, 2759, 2760, 5, 369, 0, 0, 2760, 2762, 3, 714, 357, 0, 2761, 2747, 1, 0, 0, 0, 2761, 2759, 1, 0, 0, 0, 2762, 247, 1, 0, 0, 0, 2763, 2764, 5, 499, 0, 0, 2764, 2765, 5, 513, 0, 0, 2765, 2766, 5, 500, 0, 0, 2766, 2767, 5, 484, 0, 0, 2767, 2768, 3, 668, 334, 0, 2768, 249, 1, 0, 0, 0, 2769, 2770, 3, 246, 123, 0, 2770, 251, 1, 0, 0, 0, 2771, 2772, 3, 248, 124, 0, 2772, 253, 1, 0, 0, 0, 2773, 2774, 5, 514, 0, 0, 2774, 2776, 5, 484, 0, 0, 2775, 2773, 1, 0, 0, 0, 2775, 2776, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 2778, 5, 113, 0, 0, 2778, 2779, 5, 30, 0, 0, 2779, 2780, 3, 708, 354, 0, 2780, 2782, 5, 497, 0, 0, 2781, 2783, 3, 262, 131, 0, 2782, 2781, 1, 0, 0, 0, 2782, 2783, 1, 0, 0, 0, 2783, 2784, 1, 0, 0, 0, 2784, 2786, 5, 498, 0, 0, 2785, 2787, 3, 226, 113, 0, 2786, 2785, 1, 0, 0, 0, 2786, 2787, 1, 0, 0, 0, 2787, 255, 1, 0, 0, 0, 2788, 2789, 5, 514, 0, 0, 2789, 2791, 5, 484, 0, 0, 2790, 2788, 1, 0, 0, 0, 2790, 2791, 1, 0, 0, 0, 2791, 2792, 1, 0, 0, 0, 2792, 2793, 5, 113, 0, 0, 2793, 2794, 5, 114, 0, 0, 2794, 2795, 5, 116, 0, 0, 2795, 2796, 3, 708, 354, 0, 2796, 2798, 5, 497, 0, 0, 2797, 2799, 3, 262, 131, 0, 2798, 2797, 1, 0, 0, 0, 2798, 2799, 1, 0, 0, 0, 2799, 2800, 1, 0, 0, 0, 2800, 2802, 5, 498, 0, 0, 2801, 2803, 3, 226, 113, 0, 2802, 2801, 1, 0, 0, 0, 2802, 2803, 1, 0, 0, 0, 2803, 257, 1, 0, 0, 0, 2804, 2805, 5, 514, 0, 0, 2805, 2807, 5, 484, 0, 0, 2806, 2804, 1, 0, 0, 0, 2806, 2807, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 2809, 5, 396, 0, 0, 2809, 2810, 5, 353, 0, 0, 2810, 2811, 5, 354, 0, 0, 2811, 2818, 3, 708, 354, 0, 2812, 2816, 5, 166, 0, 0, 2813, 2817, 5, 511, 0, 0, 2814, 2817, 5, 512, 0, 0, 2815, 2817, 3, 668, 334, 0, 2816, 2813, 1, 0, 0, 0, 2816, 2814, 1, 0, 0, 0, 2816, 2815, 1, 0, 0, 0, 2817, 2819, 1, 0, 0, 0, 2818, 2812, 1, 0, 0, 0, 2818, 2819, 1, 0, 0, 0, 2819, 2825, 1, 0, 0, 0, 2820, 2822, 5, 497, 0, 0, 2821, 2823, 3, 262, 131, 0, 2822, 2821, 1, 0, 0, 0, 2822, 2823, 1, 0, 0, 0, 2823, 2824, 1, 0, 0, 0, 2824, 2826, 5, 498, 0, 0, 2825, 2820, 1, 0, 0, 0, 2825, 2826, 1, 0, 0, 0, 2826, 2833, 1, 0, 0, 0, 2827, 2828, 5, 352, 0, 0, 2828, 2830, 5, 497, 0, 0, 2829, 2831, 3, 262, 131, 0, 2830, 2829, 1, 0, 0, 0, 2830, 2831, 1, 0, 0, 0, 2831, 2832, 1, 0, 0, 0, 2832, 2834, 5, 498, 0, 0, 2833, 2827, 1, 0, 0, 0, 2833, 2834, 1, 0, 0, 0, 2834, 2836, 1, 0, 0, 0, 2835, 2837, 3, 226, 113, 0, 2836, 2835, 1, 0, 0, 0, 2836, 2837, 1, 0, 0, 0, 2837, 259, 1, 0, 0, 0, 2838, 2839, 5, 514, 0, 0, 2839, 2841, 5, 484, 0, 0, 2840, 2838, 1, 0, 0, 0, 2840, 2841, 1, 0, 0, 0, 2841, 2842, 1, 0, 0, 0, 2842, 2843, 5, 113, 0, 0, 2843, 2844, 5, 26, 0, 0, 2844, 2845, 5, 116, 0, 0, 2845, 2846, 3, 708, 354, 0, 2846, 2848, 5, 497, 0, 0, 2847, 2849, 3, 262, 131, 0, 2848, 2847, 1, 0, 0, 0, 2848, 2849, 1, 0, 0, 0, 2849, 2850, 1, 0, 0, 0, 2850, 2852, 5, 498, 0, 0, 2851, 2853, 3, 226, 113, 0, 2852, 2851, 1, 0, 0, 0, 2852, 2853, 1, 0, 0, 0, 2853, 261, 1, 0, 0, 0, 2854, 2859, 3, 264, 132, 0, 2855, 2856, 5, 495, 0, 0, 2856, 2858, 3, 264, 132, 0, 2857, 2855, 1, 0, 0, 0, 2858, 2861, 1, 0, 0, 0, 2859, 2857, 1, 0, 0, 0, 2859, 2860, 1, 0, 0, 0, 2860, 263, 1, 0, 0, 0, 2861, 2859, 1, 0, 0, 0, 2862, 2865, 5, 514, 0, 0, 2863, 2865, 3, 194, 97, 0, 2864, 2862, 1, 0, 0, 0, 2864, 2863, 1, 0, 0, 0, 2865, 2866, 1, 0, 0, 0, 2866, 2867, 5, 484, 0, 0, 2867, 2868, 3, 668, 334, 0, 2868, 265, 1, 0, 0, 0, 2869, 2870, 5, 65, 0, 0, 2870, 2871, 5, 33, 0, 0, 2871, 2877, 3, 708, 354, 0, 2872, 2874, 5, 497, 0, 0, 2873, 2875, 3, 268, 134, 0, 2874, 2873, 1, 0, 0, 0, 2874, 2875, 1, 0, 0, 0, 2875, 2876, 1, 0, 0, 0, 2876, 2878, 5, 498, 0, 0, 2877, 2872, 1, 0, 0, 0, 2877, 2878, 1, 0, 0, 0, 2878, 2881, 1, 0, 0, 0, 2879, 2880, 5, 426, 0, 0, 2880, 2882, 5, 514, 0, 0, 2881, 2879, 1, 0, 0, 0, 2881, 2882, 1, 0, 0, 0, 2882, 2885, 1, 0, 0, 0, 2883, 2884, 5, 139, 0, 0, 2884, 2886, 3, 322, 161, 0, 2885, 2883, 1, 0, 0, 0, 2885, 2886, 1, 0, 0, 0, 2886, 267, 1, 0, 0, 0, 2887, 2892, 3, 270, 135, 0, 2888, 2889, 5, 495, 0, 0, 2889, 2891, 3, 270, 135, 0, 2890, 2888, 1, 0, 0, 0, 2891, 2894, 1, 0, 0, 0, 2892, 2890, 1, 0, 0, 0, 2892, 2893, 1, 0, 0, 0, 2893, 269, 1, 0, 0, 0, 2894, 2892, 1, 0, 0, 0, 2895, 2896, 5, 514, 0, 0, 2896, 2899, 5, 484, 0, 0, 2897, 2900, 5, 514, 0, 0, 2898, 2900, 3, 668, 334, 0, 2899, 2897, 1, 0, 0, 0, 2899, 2898, 1, 0, 0, 0, 2900, 2906, 1, 0, 0, 0, 2901, 2902, 3, 710, 355, 0, 2902, 2903, 5, 503, 0, 0, 2903, 2904, 3, 668, 334, 0, 2904, 2906, 1, 0, 0, 0, 2905, 2895, 1, 0, 0, 0, 2905, 2901, 1, 0, 0, 0, 2906, 271, 1, 0, 0, 0, 2907, 2908, 5, 118, 0, 0, 2908, 2909, 5, 33, 0, 0, 2909, 273, 1, 0, 0, 0, 2910, 2911, 5, 65, 0, 0, 2911, 2912, 5, 374, 0, 0, 2912, 2913, 5, 33, 0, 0, 2913, 275, 1, 0, 0, 0, 2914, 2915, 5, 65, 0, 0, 2915, 2916, 5, 402, 0, 0, 2916, 2919, 3, 668, 334, 0, 2917, 2918, 5, 416, 0, 0, 2918, 2920, 3, 710, 355, 0, 2919, 2917, 1, 0, 0, 0, 2919, 2920, 1, 0, 0, 0, 2920, 2926, 1, 0, 0, 0, 2921, 2922, 5, 142, 0, 0, 2922, 2923, 5, 501, 0, 0, 2923, 2924, 3, 706, 353, 0, 2924, 2925, 5, 502, 0, 0, 2925, 2927, 1, 0, 0, 0, 2926, 2921, 1, 0, 0, 0, 2926, 2927, 1, 0, 0, 0, 2927, 277, 1, 0, 0, 0, 2928, 2929, 5, 111, 0, 0, 2929, 2930, 3, 668, 334, 0, 2930, 279, 1, 0, 0, 0, 2931, 2932, 5, 298, 0, 0, 2932, 2933, 5, 299, 0, 0, 2933, 2934, 3, 214, 107, 0, 2934, 2935, 5, 402, 0, 0, 2935, 2941, 3, 668, 334, 0, 2936, 2937, 5, 142, 0, 0, 2937, 2938, 5, 501, 0, 0, 2938, 2939, 3, 706, 353, 0, 2939, 2940, 5, 502, 0, 0, 2940, 2942, 1, 0, 0, 0, 2941, 2936, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 281, 1, 0, 0, 0, 2943, 2944, 5, 514, 0, 0, 2944, 2946, 5, 484, 0, 0, 2945, 2943, 1, 0, 0, 0, 2945, 2946, 1, 0, 0, 0, 2946, 2947, 1, 0, 0, 0, 2947, 2948, 5, 311, 0, 0, 2948, 2949, 5, 113, 0, 0, 2949, 2950, 3, 284, 142, 0, 2950, 2952, 3, 286, 143, 0, 2951, 2953, 3, 288, 144, 0, 2952, 2951, 1, 0, 0, 0, 2952, 2953, 1, 0, 0, 0, 2953, 2957, 1, 0, 0, 0, 2954, 2956, 3, 290, 145, 0, 2955, 2954, 1, 0, 0, 0, 2956, 2959, 1, 0, 0, 0, 2957, 2955, 1, 0, 0, 0, 2957, 2958, 1, 0, 0, 0, 2958, 2961, 1, 0, 0, 0, 2959, 2957, 1, 0, 0, 0, 2960, 2962, 3, 292, 146, 0, 2961, 2960, 1, 0, 0, 0, 2961, 2962, 1, 0, 0, 0, 2962, 2964, 1, 0, 0, 0, 2963, 2965, 3, 294, 147, 0, 2964, 2963, 1, 0, 0, 0, 2964, 2965, 1, 0, 0, 0, 2965, 2967, 1, 0, 0, 0, 2966, 2968, 3, 296, 148, 0, 2967, 2966, 1, 0, 0, 0, 2967, 2968, 1, 0, 0, 0, 2968, 2969, 1, 0, 0, 0, 2969, 2971, 3, 298, 149, 0, 2970, 2972, 3, 226, 113, 0, 2971, 2970, 1, 0, 0, 0, 2971, 2972, 1, 0, 0, 0, 2972, 283, 1, 0, 0, 0, 2973, 2974, 7, 13, 0, 0, 2974, 285, 1, 0, 0, 0, 2975, 2978, 5, 511, 0, 0, 2976, 2978, 3, 668, 334, 0, 2977, 2975, 1, 0, 0, 0, 2977, 2976, 1, 0, 0, 0, 2978, 287, 1, 0, 0, 0, 2979, 2980, 3, 246, 123, 0, 2980, 289, 1, 0, 0, 0, 2981, 2982, 5, 195, 0, 0, 2982, 2983, 7, 14, 0, 0, 2983, 2984, 5, 484, 0, 0, 2984, 2985, 3, 668, 334, 0, 2985, 291, 1, 0, 0, 0, 2986, 2987, 5, 316, 0, 0, 2987, 2988, 5, 318, 0, 0, 2988, 2989, 3, 668, 334, 0, 2989, 2990, 5, 351, 0, 0, 2990, 2991, 3, 668, 334, 0, 2991, 293, 1, 0, 0, 0, 2992, 2993, 5, 325, 0, 0, 2993, 2995, 5, 511, 0, 0, 2994, 2996, 3, 246, 123, 0, 2995, 2994, 1, 0, 0, 0, 2995, 2996, 1, 0, 0, 0, 2996, 3009, 1, 0, 0, 0, 2997, 2998, 5, 325, 0, 0, 2998, 3000, 3, 668, 334, 0, 2999, 3001, 3, 246, 123, 0, 3000, 2999, 1, 0, 0, 0, 3000, 3001, 1, 0, 0, 0, 3001, 3009, 1, 0, 0, 0, 3002, 3003, 5, 325, 0, 0, 3003, 3004, 5, 356, 0, 0, 3004, 3005, 3, 708, 354, 0, 3005, 3006, 5, 71, 0, 0, 3006, 3007, 5, 514, 0, 0, 3007, 3009, 1, 0, 0, 0, 3008, 2992, 1, 0, 0, 0, 3008, 2997, 1, 0, 0, 0, 3008, 3002, 1, 0, 0, 0, 3009, 295, 1, 0, 0, 0, 3010, 3011, 5, 324, 0, 0, 3011, 3012, 3, 668, 334, 0, 3012, 297, 1, 0, 0, 0, 3013, 3014, 5, 77, 0, 0, 3014, 3028, 5, 262, 0, 0, 3015, 3016, 5, 77, 0, 0, 3016, 3028, 5, 326, 0, 0, 3017, 3018, 5, 77, 0, 0, 3018, 3019, 5, 356, 0, 0, 3019, 3020, 3, 708, 354, 0, 3020, 3021, 5, 76, 0, 0, 3021, 3022, 3, 708, 354, 0, 3022, 3028, 1, 0, 0, 0, 3023, 3024, 5, 77, 0, 0, 3024, 3028, 5, 421, 0, 0, 3025, 3026, 5, 77, 0, 0, 3026, 3028, 5, 319, 0, 0, 3027, 3013, 1, 0, 0, 0, 3027, 3015, 1, 0, 0, 0, 3027, 3017, 1, 0, 0, 0, 3027, 3023, 1, 0, 0, 0, 3027, 3025, 1, 0, 0, 0, 3028, 299, 1, 0, 0, 0, 3029, 3030, 5, 514, 0, 0, 3030, 3032, 5, 484, 0, 0, 3031, 3029, 1, 0, 0, 0, 3031, 3032, 1, 0, 0, 0, 3032, 3033, 1, 0, 0, 0, 3033, 3034, 5, 328, 0, 0, 3034, 3035, 5, 311, 0, 0, 3035, 3036, 5, 327, 0, 0, 3036, 3038, 3, 708, 354, 0, 3037, 3039, 3, 302, 151, 0, 3038, 3037, 1, 0, 0, 0, 3038, 3039, 1, 0, 0, 0, 3039, 3041, 1, 0, 0, 0, 3040, 3042, 3, 226, 113, 0, 3041, 3040, 1, 0, 0, 0, 3041, 3042, 1, 0, 0, 0, 3042, 301, 1, 0, 0, 0, 3043, 3044, 5, 325, 0, 0, 3044, 3045, 5, 514, 0, 0, 3045, 303, 1, 0, 0, 0, 3046, 3047, 5, 514, 0, 0, 3047, 3048, 5, 484, 0, 0, 3048, 3049, 3, 306, 153, 0, 3049, 305, 1, 0, 0, 0, 3050, 3051, 5, 121, 0, 0, 3051, 3052, 5, 497, 0, 0, 3052, 3053, 5, 514, 0, 0, 3053, 3110, 5, 498, 0, 0, 3054, 3055, 5, 122, 0, 0, 3055, 3056, 5, 497, 0, 0, 3056, 3057, 5, 514, 0, 0, 3057, 3110, 5, 498, 0, 0, 3058, 3059, 5, 123, 0, 0, 3059, 3060, 5, 497, 0, 0, 3060, 3061, 5, 514, 0, 0, 3061, 3062, 5, 495, 0, 0, 3062, 3063, 3, 668, 334, 0, 3063, 3064, 5, 498, 0, 0, 3064, 3110, 1, 0, 0, 0, 3065, 3066, 5, 185, 0, 0, 3066, 3067, 5, 497, 0, 0, 3067, 3068, 5, 514, 0, 0, 3068, 3069, 5, 495, 0, 0, 3069, 3070, 3, 668, 334, 0, 3070, 3071, 5, 498, 0, 0, 3071, 3110, 1, 0, 0, 0, 3072, 3073, 5, 124, 0, 0, 3073, 3074, 5, 497, 0, 0, 3074, 3075, 5, 514, 0, 0, 3075, 3076, 5, 495, 0, 0, 3076, 3077, 3, 308, 154, 0, 3077, 3078, 5, 498, 0, 0, 3078, 3110, 1, 0, 0, 0, 3079, 3080, 5, 125, 0, 0, 3080, 3081, 5, 497, 0, 0, 3081, 3082, 5, 514, 0, 0, 3082, 3083, 5, 495, 0, 0, 3083, 3084, 5, 514, 0, 0, 3084, 3110, 5, 498, 0, 0, 3085, 3086, 5, 126, 0, 0, 3086, 3087, 5, 497, 0, 0, 3087, 3088, 5, 514, 0, 0, 3088, 3089, 5, 495, 0, 0, 3089, 3090, 5, 514, 0, 0, 3090, 3110, 5, 498, 0, 0, 3091, 3092, 5, 127, 0, 0, 3092, 3093, 5, 497, 0, 0, 3093, 3094, 5, 514, 0, 0, 3094, 3095, 5, 495, 0, 0, 3095, 3096, 5, 514, 0, 0, 3096, 3110, 5, 498, 0, 0, 3097, 3098, 5, 128, 0, 0, 3098, 3099, 5, 497, 0, 0, 3099, 3100, 5, 514, 0, 0, 3100, 3101, 5, 495, 0, 0, 3101, 3102, 5, 514, 0, 0, 3102, 3110, 5, 498, 0, 0, 3103, 3104, 5, 134, 0, 0, 3104, 3105, 5, 497, 0, 0, 3105, 3106, 5, 514, 0, 0, 3106, 3107, 5, 495, 0, 0, 3107, 3108, 5, 514, 0, 0, 3108, 3110, 5, 498, 0, 0, 3109, 3050, 1, 0, 0, 0, 3109, 3054, 1, 0, 0, 0, 3109, 3058, 1, 0, 0, 0, 3109, 3065, 1, 0, 0, 0, 3109, 3072, 1, 0, 0, 0, 3109, 3079, 1, 0, 0, 0, 3109, 3085, 1, 0, 0, 0, 3109, 3091, 1, 0, 0, 0, 3109, 3097, 1, 0, 0, 0, 3109, 3103, 1, 0, 0, 0, 3110, 307, 1, 0, 0, 0, 3111, 3116, 3, 310, 155, 0, 3112, 3113, 5, 495, 0, 0, 3113, 3115, 3, 310, 155, 0, 3114, 3112, 1, 0, 0, 0, 3115, 3118, 1, 0, 0, 0, 3116, 3114, 1, 0, 0, 0, 3116, 3117, 1, 0, 0, 0, 3117, 309, 1, 0, 0, 0, 3118, 3116, 1, 0, 0, 0, 3119, 3121, 5, 515, 0, 0, 3120, 3122, 7, 6, 0, 0, 3121, 3120, 1, 0, 0, 0, 3121, 3122, 1, 0, 0, 0, 3122, 311, 1, 0, 0, 0, 3123, 3124, 5, 514, 0, 0, 3124, 3125, 5, 484, 0, 0, 3125, 3126, 3, 314, 157, 0, 3126, 313, 1, 0, 0, 0, 3127, 3128, 5, 276, 0, 0, 3128, 3129, 5, 497, 0, 0, 3129, 3130, 5, 514, 0, 0, 3130, 3152, 5, 498, 0, 0, 3131, 3132, 5, 277, 0, 0, 3132, 3133, 5, 497, 0, 0, 3133, 3134, 3, 214, 107, 0, 3134, 3135, 5, 498, 0, 0, 3135, 3152, 1, 0, 0, 0, 3136, 3137, 5, 129, 0, 0, 3137, 3138, 5, 497, 0, 0, 3138, 3139, 3, 214, 107, 0, 3139, 3140, 5, 498, 0, 0, 3140, 3152, 1, 0, 0, 0, 3141, 3142, 5, 130, 0, 0, 3142, 3143, 5, 497, 0, 0, 3143, 3144, 3, 214, 107, 0, 3144, 3145, 5, 498, 0, 0, 3145, 3152, 1, 0, 0, 0, 3146, 3147, 5, 131, 0, 0, 3147, 3148, 5, 497, 0, 0, 3148, 3149, 3, 214, 107, 0, 3149, 3150, 5, 498, 0, 0, 3150, 3152, 1, 0, 0, 0, 3151, 3127, 1, 0, 0, 0, 3151, 3131, 1, 0, 0, 0, 3151, 3136, 1, 0, 0, 0, 3151, 3141, 1, 0, 0, 0, 3151, 3146, 1, 0, 0, 0, 3152, 315, 1, 0, 0, 0, 3153, 3154, 5, 514, 0, 0, 3154, 3155, 5, 484, 0, 0, 3155, 3156, 5, 17, 0, 0, 3156, 3157, 5, 13, 0, 0, 3157, 3158, 3, 708, 354, 0, 3158, 317, 1, 0, 0, 0, 3159, 3160, 5, 47, 0, 0, 3160, 3161, 5, 514, 0, 0, 3161, 3162, 5, 423, 0, 0, 3162, 3163, 5, 514, 0, 0, 3163, 319, 1, 0, 0, 0, 3164, 3165, 5, 133, 0, 0, 3165, 3166, 5, 514, 0, 0, 3166, 3167, 5, 71, 0, 0, 3167, 3168, 5, 514, 0, 0, 3168, 321, 1, 0, 0, 0, 3169, 3174, 3, 324, 162, 0, 3170, 3171, 5, 495, 0, 0, 3171, 3173, 3, 324, 162, 0, 3172, 3170, 1, 0, 0, 0, 3173, 3176, 1, 0, 0, 0, 3174, 3172, 1, 0, 0, 0, 3174, 3175, 1, 0, 0, 0, 3175, 323, 1, 0, 0, 0, 3176, 3174, 1, 0, 0, 0, 3177, 3178, 3, 326, 163, 0, 3178, 3179, 5, 484, 0, 0, 3179, 3180, 3, 668, 334, 0, 3180, 325, 1, 0, 0, 0, 3181, 3186, 3, 708, 354, 0, 3182, 3186, 5, 515, 0, 0, 3183, 3186, 5, 517, 0, 0, 3184, 3186, 3, 730, 365, 0, 3185, 3181, 1, 0, 0, 0, 3185, 3182, 1, 0, 0, 0, 3185, 3183, 1, 0, 0, 0, 3185, 3184, 1, 0, 0, 0, 3186, 327, 1, 0, 0, 0, 3187, 3192, 3, 330, 165, 0, 3188, 3189, 5, 495, 0, 0, 3189, 3191, 3, 330, 165, 0, 3190, 3188, 1, 0, 0, 0, 3191, 3194, 1, 0, 0, 0, 3192, 3190, 1, 0, 0, 0, 3192, 3193, 1, 0, 0, 0, 3193, 329, 1, 0, 0, 0, 3194, 3192, 1, 0, 0, 0, 3195, 3196, 5, 515, 0, 0, 3196, 3197, 5, 484, 0, 0, 3197, 3198, 3, 668, 334, 0, 3198, 331, 1, 0, 0, 0, 3199, 3200, 5, 33, 0, 0, 3200, 3201, 3, 708, 354, 0, 3201, 3202, 3, 382, 191, 0, 3202, 3203, 5, 499, 0, 0, 3203, 3204, 3, 390, 195, 0, 3204, 3205, 5, 500, 0, 0, 3205, 333, 1, 0, 0, 0, 3206, 3207, 5, 34, 0, 0, 3207, 3209, 3, 708, 354, 0, 3208, 3210, 3, 386, 193, 0, 3209, 3208, 1, 0, 0, 0, 3209, 3210, 1, 0, 0, 0, 3210, 3212, 1, 0, 0, 0, 3211, 3213, 3, 336, 168, 0, 3212, 3211, 1, 0, 0, 0, 3212, 3213, 1, 0, 0, 0, 3213, 3214, 1, 0, 0, 0, 3214, 3215, 5, 499, 0, 0, 3215, 3216, 3, 390, 195, 0, 3216, 3217, 5, 500, 0, 0, 3217, 335, 1, 0, 0, 0, 3218, 3220, 3, 338, 169, 0, 3219, 3218, 1, 0, 0, 0, 3220, 3221, 1, 0, 0, 0, 3221, 3219, 1, 0, 0, 0, 3221, 3222, 1, 0, 0, 0, 3222, 337, 1, 0, 0, 0, 3223, 3224, 5, 219, 0, 0, 3224, 3225, 5, 511, 0, 0, 3225, 339, 1, 0, 0, 0, 3226, 3231, 3, 342, 171, 0, 3227, 3228, 5, 495, 0, 0, 3228, 3230, 3, 342, 171, 0, 3229, 3227, 1, 0, 0, 0, 3230, 3233, 1, 0, 0, 0, 3231, 3229, 1, 0, 0, 0, 3231, 3232, 1, 0, 0, 0, 3232, 341, 1, 0, 0, 0, 3233, 3231, 1, 0, 0, 0, 3234, 3235, 7, 15, 0, 0, 3235, 3236, 5, 503, 0, 0, 3236, 3237, 3, 108, 54, 0, 3237, 343, 1, 0, 0, 0, 3238, 3243, 3, 346, 173, 0, 3239, 3240, 5, 495, 0, 0, 3240, 3242, 3, 346, 173, 0, 3241, 3239, 1, 0, 0, 0, 3242, 3245, 1, 0, 0, 0, 3243, 3241, 1, 0, 0, 0, 3243, 3244, 1, 0, 0, 0, 3244, 345, 1, 0, 0, 0, 3245, 3243, 1, 0, 0, 0, 3246, 3247, 7, 15, 0, 0, 3247, 3248, 5, 503, 0, 0, 3248, 3249, 3, 108, 54, 0, 3249, 347, 1, 0, 0, 0, 3250, 3255, 3, 350, 175, 0, 3251, 3252, 5, 495, 0, 0, 3252, 3254, 3, 350, 175, 0, 3253, 3251, 1, 0, 0, 0, 3254, 3257, 1, 0, 0, 0, 3255, 3253, 1, 0, 0, 0, 3255, 3256, 1, 0, 0, 0, 3256, 349, 1, 0, 0, 0, 3257, 3255, 1, 0, 0, 0, 3258, 3259, 5, 514, 0, 0, 3259, 3260, 5, 503, 0, 0, 3260, 3261, 3, 108, 54, 0, 3261, 3262, 5, 484, 0, 0, 3262, 3263, 5, 511, 0, 0, 3263, 351, 1, 0, 0, 0, 3264, 3267, 3, 708, 354, 0, 3265, 3267, 5, 515, 0, 0, 3266, 3264, 1, 0, 0, 0, 3266, 3265, 1, 0, 0, 0, 3267, 3269, 1, 0, 0, 0, 3268, 3270, 7, 6, 0, 0, 3269, 3268, 1, 0, 0, 0, 3269, 3270, 1, 0, 0, 0, 3270, 353, 1, 0, 0, 0, 3271, 3272, 5, 501, 0, 0, 3272, 3273, 3, 358, 179, 0, 3273, 3274, 5, 502, 0, 0, 3274, 355, 1, 0, 0, 0, 3275, 3276, 7, 16, 0, 0, 3276, 357, 1, 0, 0, 0, 3277, 3282, 3, 360, 180, 0, 3278, 3279, 5, 286, 0, 0, 3279, 3281, 3, 360, 180, 0, 3280, 3278, 1, 0, 0, 0, 3281, 3284, 1, 0, 0, 0, 3282, 3280, 1, 0, 0, 0, 3282, 3283, 1, 0, 0, 0, 3283, 359, 1, 0, 0, 0, 3284, 3282, 1, 0, 0, 0, 3285, 3290, 3, 362, 181, 0, 3286, 3287, 5, 285, 0, 0, 3287, 3289, 3, 362, 181, 0, 3288, 3286, 1, 0, 0, 0, 3289, 3292, 1, 0, 0, 0, 3290, 3288, 1, 0, 0, 0, 3290, 3291, 1, 0, 0, 0, 3291, 361, 1, 0, 0, 0, 3292, 3290, 1, 0, 0, 0, 3293, 3294, 5, 287, 0, 0, 3294, 3297, 3, 362, 181, 0, 3295, 3297, 3, 364, 182, 0, 3296, 3293, 1, 0, 0, 0, 3296, 3295, 1, 0, 0, 0, 3297, 363, 1, 0, 0, 0, 3298, 3302, 3, 366, 183, 0, 3299, 3300, 3, 678, 339, 0, 3300, 3301, 3, 366, 183, 0, 3301, 3303, 1, 0, 0, 0, 3302, 3299, 1, 0, 0, 0, 3302, 3303, 1, 0, 0, 0, 3303, 365, 1, 0, 0, 0, 3304, 3311, 3, 378, 189, 0, 3305, 3311, 3, 368, 184, 0, 3306, 3307, 5, 497, 0, 0, 3307, 3308, 3, 358, 179, 0, 3308, 3309, 5, 498, 0, 0, 3309, 3311, 1, 0, 0, 0, 3310, 3304, 1, 0, 0, 0, 3310, 3305, 1, 0, 0, 0, 3310, 3306, 1, 0, 0, 0, 3311, 367, 1, 0, 0, 0, 3312, 3317, 3, 370, 185, 0, 3313, 3314, 5, 490, 0, 0, 3314, 3316, 3, 370, 185, 0, 3315, 3313, 1, 0, 0, 0, 3316, 3319, 1, 0, 0, 0, 3317, 3315, 1, 0, 0, 0, 3317, 3318, 1, 0, 0, 0, 3318, 369, 1, 0, 0, 0, 3319, 3317, 1, 0, 0, 0, 3320, 3325, 3, 372, 186, 0, 3321, 3322, 5, 501, 0, 0, 3322, 3323, 3, 358, 179, 0, 3323, 3324, 5, 502, 0, 0, 3324, 3326, 1, 0, 0, 0, 3325, 3321, 1, 0, 0, 0, 3325, 3326, 1, 0, 0, 0, 3326, 371, 1, 0, 0, 0, 3327, 3333, 3, 374, 187, 0, 3328, 3333, 5, 514, 0, 0, 3329, 3333, 5, 511, 0, 0, 3330, 3333, 5, 513, 0, 0, 3331, 3333, 5, 510, 0, 0, 3332, 3327, 1, 0, 0, 0, 3332, 3328, 1, 0, 0, 0, 3332, 3329, 1, 0, 0, 0, 3332, 3330, 1, 0, 0, 0, 3332, 3331, 1, 0, 0, 0, 3333, 373, 1, 0, 0, 0, 3334, 3339, 3, 376, 188, 0, 3335, 3336, 5, 496, 0, 0, 3336, 3338, 3, 376, 188, 0, 3337, 3335, 1, 0, 0, 0, 3338, 3341, 1, 0, 0, 0, 3339, 3337, 1, 0, 0, 0, 3339, 3340, 1, 0, 0, 0, 3340, 375, 1, 0, 0, 0, 3341, 3339, 1, 0, 0, 0, 3342, 3343, 8, 17, 0, 0, 3343, 377, 1, 0, 0, 0, 3344, 3345, 3, 380, 190, 0, 3345, 3354, 5, 497, 0, 0, 3346, 3351, 3, 358, 179, 0, 3347, 3348, 5, 495, 0, 0, 3348, 3350, 3, 358, 179, 0, 3349, 3347, 1, 0, 0, 0, 3350, 3353, 1, 0, 0, 0, 3351, 3349, 1, 0, 0, 0, 3351, 3352, 1, 0, 0, 0, 3352, 3355, 1, 0, 0, 0, 3353, 3351, 1, 0, 0, 0, 3354, 3346, 1, 0, 0, 0, 3354, 3355, 1, 0, 0, 0, 3355, 3356, 1, 0, 0, 0, 3356, 3357, 5, 498, 0, 0, 3357, 379, 1, 0, 0, 0, 3358, 3359, 7, 18, 0, 0, 3359, 381, 1, 0, 0, 0, 3360, 3361, 5, 497, 0, 0, 3361, 3366, 3, 384, 192, 0, 3362, 3363, 5, 495, 0, 0, 3363, 3365, 3, 384, 192, 0, 3364, 3362, 1, 0, 0, 0, 3365, 3368, 1, 0, 0, 0, 3366, 3364, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3369, 1, 0, 0, 0, 3368, 3366, 1, 0, 0, 0, 3369, 3370, 5, 498, 0, 0, 3370, 383, 1, 0, 0, 0, 3371, 3372, 5, 202, 0, 0, 3372, 3373, 5, 503, 0, 0, 3373, 3374, 5, 499, 0, 0, 3374, 3375, 3, 340, 170, 0, 3375, 3376, 5, 500, 0, 0, 3376, 3399, 1, 0, 0, 0, 3377, 3378, 5, 203, 0, 0, 3378, 3379, 5, 503, 0, 0, 3379, 3380, 5, 499, 0, 0, 3380, 3381, 3, 348, 174, 0, 3381, 3382, 5, 500, 0, 0, 3382, 3399, 1, 0, 0, 0, 3383, 3384, 5, 164, 0, 0, 3384, 3385, 5, 503, 0, 0, 3385, 3399, 5, 511, 0, 0, 3386, 3387, 5, 35, 0, 0, 3387, 3390, 5, 503, 0, 0, 3388, 3391, 3, 708, 354, 0, 3389, 3391, 5, 511, 0, 0, 3390, 3388, 1, 0, 0, 0, 3390, 3389, 1, 0, 0, 0, 3391, 3399, 1, 0, 0, 0, 3392, 3393, 5, 218, 0, 0, 3393, 3394, 5, 503, 0, 0, 3394, 3399, 5, 511, 0, 0, 3395, 3396, 5, 219, 0, 0, 3396, 3397, 5, 503, 0, 0, 3397, 3399, 5, 511, 0, 0, 3398, 3371, 1, 0, 0, 0, 3398, 3377, 1, 0, 0, 0, 3398, 3383, 1, 0, 0, 0, 3398, 3386, 1, 0, 0, 0, 3398, 3392, 1, 0, 0, 0, 3398, 3395, 1, 0, 0, 0, 3399, 385, 1, 0, 0, 0, 3400, 3401, 5, 497, 0, 0, 3401, 3406, 3, 388, 194, 0, 3402, 3403, 5, 495, 0, 0, 3403, 3405, 3, 388, 194, 0, 3404, 3402, 1, 0, 0, 0, 3405, 3408, 1, 0, 0, 0, 3406, 3404, 1, 0, 0, 0, 3406, 3407, 1, 0, 0, 0, 3407, 3409, 1, 0, 0, 0, 3408, 3406, 1, 0, 0, 0, 3409, 3410, 5, 498, 0, 0, 3410, 387, 1, 0, 0, 0, 3411, 3412, 5, 202, 0, 0, 3412, 3413, 5, 503, 0, 0, 3413, 3414, 5, 499, 0, 0, 3414, 3415, 3, 344, 172, 0, 3415, 3416, 5, 500, 0, 0, 3416, 3427, 1, 0, 0, 0, 3417, 3418, 5, 203, 0, 0, 3418, 3419, 5, 503, 0, 0, 3419, 3420, 5, 499, 0, 0, 3420, 3421, 3, 348, 174, 0, 3421, 3422, 5, 500, 0, 0, 3422, 3427, 1, 0, 0, 0, 3423, 3424, 5, 219, 0, 0, 3424, 3425, 5, 503, 0, 0, 3425, 3427, 5, 511, 0, 0, 3426, 3411, 1, 0, 0, 0, 3426, 3417, 1, 0, 0, 0, 3426, 3423, 1, 0, 0, 0, 3427, 389, 1, 0, 0, 0, 3428, 3431, 3, 394, 197, 0, 3429, 3431, 3, 392, 196, 0, 3430, 3428, 1, 0, 0, 0, 3430, 3429, 1, 0, 0, 0, 3431, 3434, 1, 0, 0, 0, 3432, 3430, 1, 0, 0, 0, 3432, 3433, 1, 0, 0, 0, 3433, 391, 1, 0, 0, 0, 3434, 3432, 1, 0, 0, 0, 3435, 3436, 5, 67, 0, 0, 3436, 3437, 5, 387, 0, 0, 3437, 3440, 3, 710, 355, 0, 3438, 3439, 5, 76, 0, 0, 3439, 3441, 3, 710, 355, 0, 3440, 3438, 1, 0, 0, 0, 3440, 3441, 1, 0, 0, 0, 3441, 393, 1, 0, 0, 0, 3442, 3443, 3, 396, 198, 0, 3443, 3445, 5, 515, 0, 0, 3444, 3446, 3, 398, 199, 0, 3445, 3444, 1, 0, 0, 0, 3445, 3446, 1, 0, 0, 0, 3446, 3448, 1, 0, 0, 0, 3447, 3449, 3, 436, 218, 0, 3448, 3447, 1, 0, 0, 0, 3448, 3449, 1, 0, 0, 0, 3449, 395, 1, 0, 0, 0, 3450, 3451, 7, 19, 0, 0, 3451, 397, 1, 0, 0, 0, 3452, 3453, 5, 497, 0, 0, 3453, 3458, 3, 400, 200, 0, 3454, 3455, 5, 495, 0, 0, 3455, 3457, 3, 400, 200, 0, 3456, 3454, 1, 0, 0, 0, 3457, 3460, 1, 0, 0, 0, 3458, 3456, 1, 0, 0, 0, 3458, 3459, 1, 0, 0, 0, 3459, 3461, 1, 0, 0, 0, 3460, 3458, 1, 0, 0, 0, 3461, 3462, 5, 498, 0, 0, 3462, 399, 1, 0, 0, 0, 3463, 3464, 5, 191, 0, 0, 3464, 3465, 5, 503, 0, 0, 3465, 3554, 3, 406, 203, 0, 3466, 3467, 5, 38, 0, 0, 3467, 3468, 5, 503, 0, 0, 3468, 3554, 3, 414, 207, 0, 3469, 3470, 5, 198, 0, 0, 3470, 3471, 5, 503, 0, 0, 3471, 3554, 3, 414, 207, 0, 3472, 3473, 5, 116, 0, 0, 3473, 3474, 5, 503, 0, 0, 3474, 3554, 3, 408, 204, 0, 3475, 3476, 5, 188, 0, 0, 3476, 3477, 5, 503, 0, 0, 3477, 3554, 3, 416, 208, 0, 3478, 3479, 5, 168, 0, 0, 3479, 3480, 5, 503, 0, 0, 3480, 3554, 5, 511, 0, 0, 3481, 3482, 5, 199, 0, 0, 3482, 3483, 5, 503, 0, 0, 3483, 3554, 3, 414, 207, 0, 3484, 3485, 5, 196, 0, 0, 3485, 3486, 5, 503, 0, 0, 3486, 3554, 3, 416, 208, 0, 3487, 3488, 5, 197, 0, 0, 3488, 3489, 5, 503, 0, 0, 3489, 3554, 3, 422, 211, 0, 3490, 3491, 5, 200, 0, 0, 3491, 3492, 5, 503, 0, 0, 3492, 3554, 3, 418, 209, 0, 3493, 3494, 5, 201, 0, 0, 3494, 3495, 5, 503, 0, 0, 3495, 3554, 3, 418, 209, 0, 3496, 3497, 5, 209, 0, 0, 3497, 3498, 5, 503, 0, 0, 3498, 3554, 3, 424, 212, 0, 3499, 3500, 5, 207, 0, 0, 3500, 3501, 5, 503, 0, 0, 3501, 3554, 5, 511, 0, 0, 3502, 3503, 5, 208, 0, 0, 3503, 3504, 5, 503, 0, 0, 3504, 3554, 5, 511, 0, 0, 3505, 3506, 5, 204, 0, 0, 3506, 3507, 5, 503, 0, 0, 3507, 3554, 3, 426, 213, 0, 3508, 3509, 5, 205, 0, 0, 3509, 3510, 5, 503, 0, 0, 3510, 3554, 3, 426, 213, 0, 3511, 3512, 5, 206, 0, 0, 3512, 3513, 5, 503, 0, 0, 3513, 3554, 3, 426, 213, 0, 3514, 3515, 5, 193, 0, 0, 3515, 3516, 5, 503, 0, 0, 3516, 3554, 3, 428, 214, 0, 3517, 3518, 5, 34, 0, 0, 3518, 3519, 5, 503, 0, 0, 3519, 3554, 3, 708, 354, 0, 3520, 3521, 5, 224, 0, 0, 3521, 3522, 5, 503, 0, 0, 3522, 3554, 3, 404, 202, 0, 3523, 3524, 5, 225, 0, 0, 3524, 3525, 5, 503, 0, 0, 3525, 3554, 3, 402, 201, 0, 3526, 3527, 5, 212, 0, 0, 3527, 3528, 5, 503, 0, 0, 3528, 3554, 3, 432, 216, 0, 3529, 3530, 5, 215, 0, 0, 3530, 3531, 5, 503, 0, 0, 3531, 3554, 5, 513, 0, 0, 3532, 3533, 5, 216, 0, 0, 3533, 3534, 5, 503, 0, 0, 3534, 3554, 5, 513, 0, 0, 3535, 3536, 5, 232, 0, 0, 3536, 3537, 5, 503, 0, 0, 3537, 3554, 3, 354, 177, 0, 3538, 3539, 5, 232, 0, 0, 3539, 3540, 5, 503, 0, 0, 3540, 3554, 3, 430, 215, 0, 3541, 3542, 5, 222, 0, 0, 3542, 3543, 5, 503, 0, 0, 3543, 3554, 3, 354, 177, 0, 3544, 3545, 5, 222, 0, 0, 3545, 3546, 5, 503, 0, 0, 3546, 3554, 3, 430, 215, 0, 3547, 3548, 5, 190, 0, 0, 3548, 3549, 5, 503, 0, 0, 3549, 3554, 3, 430, 215, 0, 3550, 3551, 5, 515, 0, 0, 3551, 3552, 5, 503, 0, 0, 3552, 3554, 3, 430, 215, 0, 3553, 3463, 1, 0, 0, 0, 3553, 3466, 1, 0, 0, 0, 3553, 3469, 1, 0, 0, 0, 3553, 3472, 1, 0, 0, 0, 3553, 3475, 1, 0, 0, 0, 3553, 3478, 1, 0, 0, 0, 3553, 3481, 1, 0, 0, 0, 3553, 3484, 1, 0, 0, 0, 3553, 3487, 1, 0, 0, 0, 3553, 3490, 1, 0, 0, 0, 3553, 3493, 1, 0, 0, 0, 3553, 3496, 1, 0, 0, 0, 3553, 3499, 1, 0, 0, 0, 3553, 3502, 1, 0, 0, 0, 3553, 3505, 1, 0, 0, 0, 3553, 3508, 1, 0, 0, 0, 3553, 3511, 1, 0, 0, 0, 3553, 3514, 1, 0, 0, 0, 3553, 3517, 1, 0, 0, 0, 3553, 3520, 1, 0, 0, 0, 3553, 3523, 1, 0, 0, 0, 3553, 3526, 1, 0, 0, 0, 3553, 3529, 1, 0, 0, 0, 3553, 3532, 1, 0, 0, 0, 3553, 3535, 1, 0, 0, 0, 3553, 3538, 1, 0, 0, 0, 3553, 3541, 1, 0, 0, 0, 3553, 3544, 1, 0, 0, 0, 3553, 3547, 1, 0, 0, 0, 3553, 3550, 1, 0, 0, 0, 3554, 401, 1, 0, 0, 0, 3555, 3556, 7, 20, 0, 0, 3556, 403, 1, 0, 0, 0, 3557, 3558, 5, 501, 0, 0, 3558, 3563, 3, 708, 354, 0, 3559, 3560, 5, 495, 0, 0, 3560, 3562, 3, 708, 354, 0, 3561, 3559, 1, 0, 0, 0, 3562, 3565, 1, 0, 0, 0, 3563, 3561, 1, 0, 0, 0, 3563, 3564, 1, 0, 0, 0, 3564, 3566, 1, 0, 0, 0, 3565, 3563, 1, 0, 0, 0, 3566, 3567, 5, 502, 0, 0, 3567, 405, 1, 0, 0, 0, 3568, 3615, 5, 514, 0, 0, 3569, 3571, 5, 353, 0, 0, 3570, 3572, 5, 71, 0, 0, 3571, 3570, 1, 0, 0, 0, 3571, 3572, 1, 0, 0, 0, 3572, 3573, 1, 0, 0, 0, 3573, 3587, 3, 708, 354, 0, 3574, 3585, 5, 72, 0, 0, 3575, 3581, 3, 354, 177, 0, 3576, 3577, 3, 356, 178, 0, 3577, 3578, 3, 354, 177, 0, 3578, 3580, 1, 0, 0, 0, 3579, 3576, 1, 0, 0, 0, 3580, 3583, 1, 0, 0, 0, 3581, 3579, 1, 0, 0, 0, 3581, 3582, 1, 0, 0, 0, 3582, 3586, 1, 0, 0, 0, 3583, 3581, 1, 0, 0, 0, 3584, 3586, 3, 668, 334, 0, 3585, 3575, 1, 0, 0, 0, 3585, 3584, 1, 0, 0, 0, 3586, 3588, 1, 0, 0, 0, 3587, 3574, 1, 0, 0, 0, 3587, 3588, 1, 0, 0, 0, 3588, 3598, 1, 0, 0, 0, 3589, 3590, 5, 10, 0, 0, 3590, 3595, 3, 352, 176, 0, 3591, 3592, 5, 495, 0, 0, 3592, 3594, 3, 352, 176, 0, 3593, 3591, 1, 0, 0, 0, 3594, 3597, 1, 0, 0, 0, 3595, 3593, 1, 0, 0, 0, 3595, 3596, 1, 0, 0, 0, 3596, 3599, 1, 0, 0, 0, 3597, 3595, 1, 0, 0, 0, 3598, 3589, 1, 0, 0, 0, 3598, 3599, 1, 0, 0, 0, 3599, 3615, 1, 0, 0, 0, 3600, 3601, 5, 30, 0, 0, 3601, 3603, 3, 708, 354, 0, 3602, 3604, 3, 410, 205, 0, 3603, 3602, 1, 0, 0, 0, 3603, 3604, 1, 0, 0, 0, 3604, 3615, 1, 0, 0, 0, 3605, 3606, 5, 31, 0, 0, 3606, 3608, 3, 708, 354, 0, 3607, 3609, 3, 410, 205, 0, 3608, 3607, 1, 0, 0, 0, 3608, 3609, 1, 0, 0, 0, 3609, 3615, 1, 0, 0, 0, 3610, 3611, 5, 27, 0, 0, 3611, 3615, 3, 414, 207, 0, 3612, 3613, 5, 193, 0, 0, 3613, 3615, 5, 515, 0, 0, 3614, 3568, 1, 0, 0, 0, 3614, 3569, 1, 0, 0, 0, 3614, 3600, 1, 0, 0, 0, 3614, 3605, 1, 0, 0, 0, 3614, 3610, 1, 0, 0, 0, 3614, 3612, 1, 0, 0, 0, 3615, 407, 1, 0, 0, 0, 3616, 3618, 5, 234, 0, 0, 3617, 3619, 5, 236, 0, 0, 3618, 3617, 1, 0, 0, 0, 3618, 3619, 1, 0, 0, 0, 3619, 3655, 1, 0, 0, 0, 3620, 3622, 5, 235, 0, 0, 3621, 3623, 5, 236, 0, 0, 3622, 3621, 1, 0, 0, 0, 3622, 3623, 1, 0, 0, 0, 3623, 3655, 1, 0, 0, 0, 3624, 3655, 5, 236, 0, 0, 3625, 3655, 5, 239, 0, 0, 3626, 3628, 5, 100, 0, 0, 3627, 3629, 5, 236, 0, 0, 3628, 3627, 1, 0, 0, 0, 3628, 3629, 1, 0, 0, 0, 3629, 3655, 1, 0, 0, 0, 3630, 3631, 5, 240, 0, 0, 3631, 3634, 3, 708, 354, 0, 3632, 3633, 5, 81, 0, 0, 3633, 3635, 3, 408, 204, 0, 3634, 3632, 1, 0, 0, 0, 3634, 3635, 1, 0, 0, 0, 3635, 3655, 1, 0, 0, 0, 3636, 3637, 5, 237, 0, 0, 3637, 3639, 3, 708, 354, 0, 3638, 3640, 3, 410, 205, 0, 3639, 3638, 1, 0, 0, 0, 3639, 3640, 1, 0, 0, 0, 3640, 3655, 1, 0, 0, 0, 3641, 3642, 5, 30, 0, 0, 3642, 3644, 3, 708, 354, 0, 3643, 3645, 3, 410, 205, 0, 3644, 3643, 1, 0, 0, 0, 3644, 3645, 1, 0, 0, 0, 3645, 3655, 1, 0, 0, 0, 3646, 3647, 5, 31, 0, 0, 3647, 3649, 3, 708, 354, 0, 3648, 3650, 3, 410, 205, 0, 3649, 3648, 1, 0, 0, 0, 3649, 3650, 1, 0, 0, 0, 3650, 3655, 1, 0, 0, 0, 3651, 3652, 5, 243, 0, 0, 3652, 3655, 5, 511, 0, 0, 3653, 3655, 5, 244, 0, 0, 3654, 3616, 1, 0, 0, 0, 3654, 3620, 1, 0, 0, 0, 3654, 3624, 1, 0, 0, 0, 3654, 3625, 1, 0, 0, 0, 3654, 3626, 1, 0, 0, 0, 3654, 3630, 1, 0, 0, 0, 3654, 3636, 1, 0, 0, 0, 3654, 3641, 1, 0, 0, 0, 3654, 3646, 1, 0, 0, 0, 3654, 3651, 1, 0, 0, 0, 3654, 3653, 1, 0, 0, 0, 3655, 409, 1, 0, 0, 0, 3656, 3657, 5, 497, 0, 0, 3657, 3662, 3, 412, 206, 0, 3658, 3659, 5, 495, 0, 0, 3659, 3661, 3, 412, 206, 0, 3660, 3658, 1, 0, 0, 0, 3661, 3664, 1, 0, 0, 0, 3662, 3660, 1, 0, 0, 0, 3662, 3663, 1, 0, 0, 0, 3663, 3665, 1, 0, 0, 0, 3664, 3662, 1, 0, 0, 0, 3665, 3666, 5, 498, 0, 0, 3666, 411, 1, 0, 0, 0, 3667, 3668, 5, 515, 0, 0, 3668, 3669, 5, 503, 0, 0, 3669, 3674, 3, 668, 334, 0, 3670, 3671, 5, 514, 0, 0, 3671, 3672, 5, 484, 0, 0, 3672, 3674, 3, 668, 334, 0, 3673, 3667, 1, 0, 0, 0, 3673, 3670, 1, 0, 0, 0, 3674, 413, 1, 0, 0, 0, 3675, 3679, 5, 515, 0, 0, 3676, 3679, 5, 517, 0, 0, 3677, 3679, 3, 732, 366, 0, 3678, 3675, 1, 0, 0, 0, 3678, 3676, 1, 0, 0, 0, 3678, 3677, 1, 0, 0, 0, 3679, 3688, 1, 0, 0, 0, 3680, 3684, 5, 490, 0, 0, 3681, 3685, 5, 515, 0, 0, 3682, 3685, 5, 517, 0, 0, 3683, 3685, 3, 732, 366, 0, 3684, 3681, 1, 0, 0, 0, 3684, 3682, 1, 0, 0, 0, 3684, 3683, 1, 0, 0, 0, 3685, 3687, 1, 0, 0, 0, 3686, 3680, 1, 0, 0, 0, 3687, 3690, 1, 0, 0, 0, 3688, 3686, 1, 0, 0, 0, 3688, 3689, 1, 0, 0, 0, 3689, 415, 1, 0, 0, 0, 3690, 3688, 1, 0, 0, 0, 3691, 3702, 5, 511, 0, 0, 3692, 3702, 3, 414, 207, 0, 3693, 3699, 5, 514, 0, 0, 3694, 3697, 5, 496, 0, 0, 3695, 3698, 5, 515, 0, 0, 3696, 3698, 3, 732, 366, 0, 3697, 3695, 1, 0, 0, 0, 3697, 3696, 1, 0, 0, 0, 3698, 3700, 1, 0, 0, 0, 3699, 3694, 1, 0, 0, 0, 3699, 3700, 1, 0, 0, 0, 3700, 3702, 1, 0, 0, 0, 3701, 3691, 1, 0, 0, 0, 3701, 3692, 1, 0, 0, 0, 3701, 3693, 1, 0, 0, 0, 3702, 417, 1, 0, 0, 0, 3703, 3704, 5, 501, 0, 0, 3704, 3709, 3, 420, 210, 0, 3705, 3706, 5, 495, 0, 0, 3706, 3708, 3, 420, 210, 0, 3707, 3705, 1, 0, 0, 0, 3708, 3711, 1, 0, 0, 0, 3709, 3707, 1, 0, 0, 0, 3709, 3710, 1, 0, 0, 0, 3710, 3712, 1, 0, 0, 0, 3711, 3709, 1, 0, 0, 0, 3712, 3713, 5, 502, 0, 0, 3713, 419, 1, 0, 0, 0, 3714, 3715, 5, 499, 0, 0, 3715, 3716, 5, 513, 0, 0, 3716, 3717, 5, 500, 0, 0, 3717, 3718, 5, 484, 0, 0, 3718, 3719, 3, 668, 334, 0, 3719, 421, 1, 0, 0, 0, 3720, 3721, 7, 21, 0, 0, 3721, 423, 1, 0, 0, 0, 3722, 3723, 7, 22, 0, 0, 3723, 425, 1, 0, 0, 0, 3724, 3725, 7, 23, 0, 0, 3725, 427, 1, 0, 0, 0, 3726, 3727, 7, 24, 0, 0, 3727, 429, 1, 0, 0, 0, 3728, 3752, 5, 511, 0, 0, 3729, 3752, 5, 513, 0, 0, 3730, 3752, 3, 716, 358, 0, 3731, 3752, 3, 708, 354, 0, 3732, 3752, 5, 515, 0, 0, 3733, 3752, 5, 255, 0, 0, 3734, 3752, 5, 256, 0, 0, 3735, 3752, 5, 257, 0, 0, 3736, 3752, 5, 258, 0, 0, 3737, 3752, 5, 259, 0, 0, 3738, 3752, 5, 260, 0, 0, 3739, 3748, 5, 501, 0, 0, 3740, 3745, 3, 668, 334, 0, 3741, 3742, 5, 495, 0, 0, 3742, 3744, 3, 668, 334, 0, 3743, 3741, 1, 0, 0, 0, 3744, 3747, 1, 0, 0, 0, 3745, 3743, 1, 0, 0, 0, 3745, 3746, 1, 0, 0, 0, 3746, 3749, 1, 0, 0, 0, 3747, 3745, 1, 0, 0, 0, 3748, 3740, 1, 0, 0, 0, 3748, 3749, 1, 0, 0, 0, 3749, 3750, 1, 0, 0, 0, 3750, 3752, 5, 502, 0, 0, 3751, 3728, 1, 0, 0, 0, 3751, 3729, 1, 0, 0, 0, 3751, 3730, 1, 0, 0, 0, 3751, 3731, 1, 0, 0, 0, 3751, 3732, 1, 0, 0, 0, 3751, 3733, 1, 0, 0, 0, 3751, 3734, 1, 0, 0, 0, 3751, 3735, 1, 0, 0, 0, 3751, 3736, 1, 0, 0, 0, 3751, 3737, 1, 0, 0, 0, 3751, 3738, 1, 0, 0, 0, 3751, 3739, 1, 0, 0, 0, 3752, 431, 1, 0, 0, 0, 3753, 3754, 5, 501, 0, 0, 3754, 3759, 3, 434, 217, 0, 3755, 3756, 5, 495, 0, 0, 3756, 3758, 3, 434, 217, 0, 3757, 3755, 1, 0, 0, 0, 3758, 3761, 1, 0, 0, 0, 3759, 3757, 1, 0, 0, 0, 3759, 3760, 1, 0, 0, 0, 3760, 3762, 1, 0, 0, 0, 3761, 3759, 1, 0, 0, 0, 3762, 3763, 5, 502, 0, 0, 3763, 3767, 1, 0, 0, 0, 3764, 3765, 5, 501, 0, 0, 3765, 3767, 5, 502, 0, 0, 3766, 3753, 1, 0, 0, 0, 3766, 3764, 1, 0, 0, 0, 3767, 433, 1, 0, 0, 0, 3768, 3769, 5, 511, 0, 0, 3769, 3770, 5, 503, 0, 0, 3770, 3778, 5, 511, 0, 0, 3771, 3772, 5, 511, 0, 0, 3772, 3773, 5, 503, 0, 0, 3773, 3778, 5, 93, 0, 0, 3774, 3775, 5, 511, 0, 0, 3775, 3776, 5, 503, 0, 0, 3776, 3778, 5, 479, 0, 0, 3777, 3768, 1, 0, 0, 0, 3777, 3771, 1, 0, 0, 0, 3777, 3774, 1, 0, 0, 0, 3778, 435, 1, 0, 0, 0, 3779, 3780, 5, 499, 0, 0, 3780, 3781, 3, 390, 195, 0, 3781, 3782, 5, 500, 0, 0, 3782, 437, 1, 0, 0, 0, 3783, 3784, 5, 36, 0, 0, 3784, 3786, 3, 708, 354, 0, 3785, 3787, 3, 440, 220, 0, 3786, 3785, 1, 0, 0, 0, 3786, 3787, 1, 0, 0, 0, 3787, 3788, 1, 0, 0, 0, 3788, 3792, 5, 96, 0, 0, 3789, 3791, 3, 444, 222, 0, 3790, 3789, 1, 0, 0, 0, 3791, 3794, 1, 0, 0, 0, 3792, 3790, 1, 0, 0, 0, 3792, 3793, 1, 0, 0, 0, 3793, 3795, 1, 0, 0, 0, 3794, 3792, 1, 0, 0, 0, 3795, 3796, 5, 83, 0, 0, 3796, 439, 1, 0, 0, 0, 3797, 3799, 3, 442, 221, 0, 3798, 3797, 1, 0, 0, 0, 3799, 3800, 1, 0, 0, 0, 3800, 3798, 1, 0, 0, 0, 3800, 3801, 1, 0, 0, 0, 3801, 441, 1, 0, 0, 0, 3802, 3803, 5, 405, 0, 0, 3803, 3804, 5, 511, 0, 0, 3804, 443, 1, 0, 0, 0, 3805, 3806, 5, 33, 0, 0, 3806, 3809, 3, 708, 354, 0, 3807, 3808, 5, 188, 0, 0, 3808, 3810, 5, 511, 0, 0, 3809, 3807, 1, 0, 0, 0, 3809, 3810, 1, 0, 0, 0, 3810, 445, 1, 0, 0, 0, 3811, 3812, 5, 353, 0, 0, 3812, 3813, 5, 352, 0, 0, 3813, 3815, 3, 708, 354, 0, 3814, 3816, 3, 448, 224, 0, 3815, 3814, 1, 0, 0, 0, 3816, 3817, 1, 0, 0, 0, 3817, 3815, 1, 0, 0, 0, 3817, 3818, 1, 0, 0, 0, 3818, 3827, 1, 0, 0, 0, 3819, 3823, 5, 96, 0, 0, 3820, 3822, 3, 450, 225, 0, 3821, 3820, 1, 0, 0, 0, 3822, 3825, 1, 0, 0, 0, 3823, 3821, 1, 0, 0, 0, 3823, 3824, 1, 0, 0, 0, 3824, 3826, 1, 0, 0, 0, 3825, 3823, 1, 0, 0, 0, 3826, 3828, 5, 83, 0, 0, 3827, 3819, 1, 0, 0, 0, 3827, 3828, 1, 0, 0, 0, 3828, 447, 1, 0, 0, 0, 3829, 3830, 5, 416, 0, 0, 3830, 3857, 5, 511, 0, 0, 3831, 3832, 5, 352, 0, 0, 3832, 3836, 5, 262, 0, 0, 3833, 3837, 5, 511, 0, 0, 3834, 3835, 5, 504, 0, 0, 3835, 3837, 3, 708, 354, 0, 3836, 3833, 1, 0, 0, 0, 3836, 3834, 1, 0, 0, 0, 3837, 3857, 1, 0, 0, 0, 3838, 3839, 5, 63, 0, 0, 3839, 3857, 5, 511, 0, 0, 3840, 3841, 5, 64, 0, 0, 3841, 3857, 5, 513, 0, 0, 3842, 3843, 5, 353, 0, 0, 3843, 3857, 5, 511, 0, 0, 3844, 3848, 5, 350, 0, 0, 3845, 3849, 5, 511, 0, 0, 3846, 3847, 5, 504, 0, 0, 3847, 3849, 3, 708, 354, 0, 3848, 3845, 1, 0, 0, 0, 3848, 3846, 1, 0, 0, 0, 3849, 3857, 1, 0, 0, 0, 3850, 3854, 5, 351, 0, 0, 3851, 3855, 5, 511, 0, 0, 3852, 3853, 5, 504, 0, 0, 3853, 3855, 3, 708, 354, 0, 3854, 3851, 1, 0, 0, 0, 3854, 3852, 1, 0, 0, 0, 3855, 3857, 1, 0, 0, 0, 3856, 3829, 1, 0, 0, 0, 3856, 3831, 1, 0, 0, 0, 3856, 3838, 1, 0, 0, 0, 3856, 3840, 1, 0, 0, 0, 3856, 3842, 1, 0, 0, 0, 3856, 3844, 1, 0, 0, 0, 3856, 3850, 1, 0, 0, 0, 3857, 449, 1, 0, 0, 0, 3858, 3859, 5, 354, 0, 0, 3859, 3860, 3, 710, 355, 0, 3860, 3861, 5, 431, 0, 0, 3861, 3873, 7, 25, 0, 0, 3862, 3863, 5, 368, 0, 0, 3863, 3864, 3, 710, 355, 0, 3864, 3865, 5, 503, 0, 0, 3865, 3869, 3, 108, 54, 0, 3866, 3867, 5, 295, 0, 0, 3867, 3870, 5, 511, 0, 0, 3868, 3870, 5, 288, 0, 0, 3869, 3866, 1, 0, 0, 0, 3869, 3868, 1, 0, 0, 0, 3869, 3870, 1, 0, 0, 0, 3870, 3872, 1, 0, 0, 0, 3871, 3862, 1, 0, 0, 0, 3872, 3875, 1, 0, 0, 0, 3873, 3871, 1, 0, 0, 0, 3873, 3874, 1, 0, 0, 0, 3874, 3892, 1, 0, 0, 0, 3875, 3873, 1, 0, 0, 0, 3876, 3877, 5, 77, 0, 0, 3877, 3890, 3, 708, 354, 0, 3878, 3879, 5, 355, 0, 0, 3879, 3880, 5, 497, 0, 0, 3880, 3885, 3, 452, 226, 0, 3881, 3882, 5, 495, 0, 0, 3882, 3884, 3, 452, 226, 0, 3883, 3881, 1, 0, 0, 0, 3884, 3887, 1, 0, 0, 0, 3885, 3883, 1, 0, 0, 0, 3885, 3886, 1, 0, 0, 0, 3886, 3888, 1, 0, 0, 0, 3887, 3885, 1, 0, 0, 0, 3888, 3889, 5, 498, 0, 0, 3889, 3891, 1, 0, 0, 0, 3890, 3878, 1, 0, 0, 0, 3890, 3891, 1, 0, 0, 0, 3891, 3893, 1, 0, 0, 0, 3892, 3876, 1, 0, 0, 0, 3892, 3893, 1, 0, 0, 0, 3893, 3894, 1, 0, 0, 0, 3894, 3895, 5, 494, 0, 0, 3895, 451, 1, 0, 0, 0, 3896, 3897, 3, 710, 355, 0, 3897, 3898, 5, 76, 0, 0, 3898, 3899, 3, 710, 355, 0, 3899, 453, 1, 0, 0, 0, 3900, 3901, 5, 37, 0, 0, 3901, 3902, 3, 708, 354, 0, 3902, 3903, 5, 416, 0, 0, 3903, 3904, 3, 108, 54, 0, 3904, 3905, 5, 295, 0, 0, 3905, 3907, 3, 712, 356, 0, 3906, 3908, 3, 456, 228, 0, 3907, 3906, 1, 0, 0, 0, 3907, 3908, 1, 0, 0, 0, 3908, 455, 1, 0, 0, 0, 3909, 3911, 3, 458, 229, 0, 3910, 3909, 1, 0, 0, 0, 3911, 3912, 1, 0, 0, 0, 3912, 3910, 1, 0, 0, 0, 3912, 3913, 1, 0, 0, 0, 3913, 457, 1, 0, 0, 0, 3914, 3915, 5, 405, 0, 0, 3915, 3922, 5, 511, 0, 0, 3916, 3917, 5, 219, 0, 0, 3917, 3922, 5, 511, 0, 0, 3918, 3919, 5, 367, 0, 0, 3919, 3920, 5, 423, 0, 0, 3920, 3922, 5, 339, 0, 0, 3921, 3914, 1, 0, 0, 0, 3921, 3916, 1, 0, 0, 0, 3921, 3918, 1, 0, 0, 0, 3922, 459, 1, 0, 0, 0, 3923, 3924, 5, 441, 0, 0, 3924, 3933, 5, 511, 0, 0, 3925, 3930, 3, 556, 278, 0, 3926, 3927, 5, 495, 0, 0, 3927, 3929, 3, 556, 278, 0, 3928, 3926, 1, 0, 0, 0, 3929, 3932, 1, 0, 0, 0, 3930, 3928, 1, 0, 0, 0, 3930, 3931, 1, 0, 0, 0, 3931, 3934, 1, 0, 0, 0, 3932, 3930, 1, 0, 0, 0, 3933, 3925, 1, 0, 0, 0, 3933, 3934, 1, 0, 0, 0, 3934, 461, 1, 0, 0, 0, 3935, 3936, 5, 311, 0, 0, 3936, 3937, 5, 339, 0, 0, 3937, 3938, 3, 708, 354, 0, 3938, 3939, 3, 464, 232, 0, 3939, 3940, 3, 466, 233, 0, 3940, 3944, 5, 96, 0, 0, 3941, 3943, 3, 470, 235, 0, 3942, 3941, 1, 0, 0, 0, 3943, 3946, 1, 0, 0, 0, 3944, 3942, 1, 0, 0, 0, 3944, 3945, 1, 0, 0, 0, 3945, 3947, 1, 0, 0, 0, 3946, 3944, 1, 0, 0, 0, 3947, 3948, 5, 83, 0, 0, 3948, 463, 1, 0, 0, 0, 3949, 3950, 5, 315, 0, 0, 3950, 3951, 5, 218, 0, 0, 3951, 3952, 5, 511, 0, 0, 3952, 465, 1, 0, 0, 0, 3953, 3954, 5, 317, 0, 0, 3954, 3968, 5, 421, 0, 0, 3955, 3956, 5, 317, 0, 0, 3956, 3957, 5, 318, 0, 0, 3957, 3958, 5, 497, 0, 0, 3958, 3959, 5, 350, 0, 0, 3959, 3960, 5, 484, 0, 0, 3960, 3961, 3, 468, 234, 0, 3961, 3962, 5, 495, 0, 0, 3962, 3963, 5, 351, 0, 0, 3963, 3964, 5, 484, 0, 0, 3964, 3965, 3, 468, 234, 0, 3965, 3966, 5, 498, 0, 0, 3966, 3968, 1, 0, 0, 0, 3967, 3953, 1, 0, 0, 0, 3967, 3955, 1, 0, 0, 0, 3968, 467, 1, 0, 0, 0, 3969, 3970, 7, 26, 0, 0, 3970, 469, 1, 0, 0, 0, 3971, 3973, 3, 718, 359, 0, 3972, 3971, 1, 0, 0, 0, 3972, 3973, 1, 0, 0, 0, 3973, 3974, 1, 0, 0, 0, 3974, 3977, 5, 321, 0, 0, 3975, 3978, 3, 710, 355, 0, 3976, 3978, 5, 511, 0, 0, 3977, 3975, 1, 0, 0, 0, 3977, 3976, 1, 0, 0, 0, 3978, 3979, 1, 0, 0, 0, 3979, 3980, 5, 322, 0, 0, 3980, 3981, 3, 472, 236, 0, 3981, 3982, 5, 323, 0, 0, 3982, 3986, 5, 511, 0, 0, 3983, 3985, 3, 474, 237, 0, 3984, 3983, 1, 0, 0, 0, 3985, 3988, 1, 0, 0, 0, 3986, 3984, 1, 0, 0, 0, 3986, 3987, 1, 0, 0, 0, 3987, 3989, 1, 0, 0, 0, 3988, 3986, 1, 0, 0, 0, 3989, 3990, 5, 326, 0, 0, 3990, 3991, 3, 478, 239, 0, 3991, 3992, 5, 494, 0, 0, 3992, 471, 1, 0, 0, 0, 3993, 3994, 7, 13, 0, 0, 3994, 473, 1, 0, 0, 0, 3995, 3996, 5, 368, 0, 0, 3996, 3997, 5, 514, 0, 0, 3997, 3998, 5, 503, 0, 0, 3998, 4014, 3, 108, 54, 0, 3999, 4000, 5, 354, 0, 0, 4000, 4001, 5, 514, 0, 0, 4001, 4002, 5, 503, 0, 0, 4002, 4014, 3, 108, 54, 0, 4003, 4004, 5, 195, 0, 0, 4004, 4005, 5, 511, 0, 0, 4005, 4006, 5, 484, 0, 0, 4006, 4014, 3, 476, 238, 0, 4007, 4008, 5, 325, 0, 0, 4008, 4009, 7, 27, 0, 0, 4009, 4010, 5, 71, 0, 0, 4010, 4014, 5, 514, 0, 0, 4011, 4012, 5, 324, 0, 0, 4012, 4014, 5, 513, 0, 0, 4013, 3995, 1, 0, 0, 0, 4013, 3999, 1, 0, 0, 0, 4013, 4003, 1, 0, 0, 0, 4013, 4007, 1, 0, 0, 0, 4013, 4011, 1, 0, 0, 0, 4014, 475, 1, 0, 0, 0, 4015, 4021, 5, 511, 0, 0, 4016, 4021, 5, 514, 0, 0, 4017, 4018, 5, 511, 0, 0, 4018, 4019, 5, 487, 0, 0, 4019, 4021, 5, 514, 0, 0, 4020, 4015, 1, 0, 0, 0, 4020, 4016, 1, 0, 0, 0, 4020, 4017, 1, 0, 0, 0, 4021, 477, 1, 0, 0, 0, 4022, 4023, 5, 329, 0, 0, 4023, 4024, 5, 76, 0, 0, 4024, 4036, 5, 514, 0, 0, 4025, 4026, 5, 262, 0, 0, 4026, 4027, 5, 76, 0, 0, 4027, 4036, 5, 514, 0, 0, 4028, 4029, 5, 332, 0, 0, 4029, 4030, 5, 76, 0, 0, 4030, 4036, 5, 514, 0, 0, 4031, 4032, 5, 331, 0, 0, 4032, 4033, 5, 76, 0, 0, 4033, 4036, 5, 514, 0, 0, 4034, 4036, 5, 421, 0, 0, 4035, 4022, 1, 0, 0, 0, 4035, 4025, 1, 0, 0, 0, 4035, 4028, 1, 0, 0, 0, 4035, 4031, 1, 0, 0, 0, 4035, 4034, 1, 0, 0, 0, 4036, 479, 1, 0, 0, 0, 4037, 4038, 5, 41, 0, 0, 4038, 4039, 5, 515, 0, 0, 4039, 4040, 5, 93, 0, 0, 4040, 4041, 3, 708, 354, 0, 4041, 4042, 5, 497, 0, 0, 4042, 4043, 3, 116, 58, 0, 4043, 4044, 5, 498, 0, 0, 4044, 481, 1, 0, 0, 0, 4045, 4046, 5, 314, 0, 0, 4046, 4047, 5, 339, 0, 0, 4047, 4048, 3, 708, 354, 0, 4048, 4049, 5, 497, 0, 0, 4049, 4054, 3, 488, 244, 0, 4050, 4051, 5, 495, 0, 0, 4051, 4053, 3, 488, 244, 0, 4052, 4050, 1, 0, 0, 0, 4053, 4056, 1, 0, 0, 0, 4054, 4052, 1, 0, 0, 0, 4054, 4055, 1, 0, 0, 0, 4055, 4057, 1, 0, 0, 0, 4056, 4054, 1, 0, 0, 0, 4057, 4059, 5, 498, 0, 0, 4058, 4060, 3, 508, 254, 0, 4059, 4058, 1, 0, 0, 0, 4059, 4060, 1, 0, 0, 0, 4060, 483, 1, 0, 0, 0, 4061, 4062, 5, 314, 0, 0, 4062, 4063, 5, 312, 0, 0, 4063, 4064, 3, 708, 354, 0, 4064, 4065, 5, 497, 0, 0, 4065, 4070, 3, 488, 244, 0, 4066, 4067, 5, 495, 0, 0, 4067, 4069, 3, 488, 244, 0, 4068, 4066, 1, 0, 0, 0, 4069, 4072, 1, 0, 0, 0, 4070, 4068, 1, 0, 0, 0, 4070, 4071, 1, 0, 0, 0, 4071, 4073, 1, 0, 0, 0, 4072, 4070, 1, 0, 0, 0, 4073, 4075, 5, 498, 0, 0, 4074, 4076, 3, 492, 246, 0, 4075, 4074, 1, 0, 0, 0, 4075, 4076, 1, 0, 0, 0, 4076, 4085, 1, 0, 0, 0, 4077, 4081, 5, 499, 0, 0, 4078, 4080, 3, 496, 248, 0, 4079, 4078, 1, 0, 0, 0, 4080, 4083, 1, 0, 0, 0, 4081, 4079, 1, 0, 0, 0, 4081, 4082, 1, 0, 0, 0, 4082, 4084, 1, 0, 0, 0, 4083, 4081, 1, 0, 0, 0, 4084, 4086, 5, 500, 0, 0, 4085, 4077, 1, 0, 0, 0, 4085, 4086, 1, 0, 0, 0, 4086, 485, 1, 0, 0, 0, 4087, 4097, 5, 511, 0, 0, 4088, 4097, 5, 513, 0, 0, 4089, 4097, 5, 296, 0, 0, 4090, 4097, 5, 297, 0, 0, 4091, 4093, 5, 30, 0, 0, 4092, 4094, 3, 708, 354, 0, 4093, 4092, 1, 0, 0, 0, 4093, 4094, 1, 0, 0, 0, 4094, 4097, 1, 0, 0, 0, 4095, 4097, 3, 708, 354, 0, 4096, 4087, 1, 0, 0, 0, 4096, 4088, 1, 0, 0, 0, 4096, 4089, 1, 0, 0, 0, 4096, 4090, 1, 0, 0, 0, 4096, 4091, 1, 0, 0, 0, 4096, 4095, 1, 0, 0, 0, 4097, 487, 1, 0, 0, 0, 4098, 4099, 3, 710, 355, 0, 4099, 4100, 5, 503, 0, 0, 4100, 4101, 3, 486, 243, 0, 4101, 489, 1, 0, 0, 0, 4102, 4103, 3, 710, 355, 0, 4103, 4104, 5, 484, 0, 0, 4104, 4105, 3, 486, 243, 0, 4105, 491, 1, 0, 0, 0, 4106, 4107, 5, 317, 0, 0, 4107, 4112, 3, 494, 247, 0, 4108, 4109, 5, 495, 0, 0, 4109, 4111, 3, 494, 247, 0, 4110, 4108, 1, 0, 0, 0, 4111, 4114, 1, 0, 0, 0, 4112, 4110, 1, 0, 0, 0, 4112, 4113, 1, 0, 0, 0, 4113, 493, 1, 0, 0, 0, 4114, 4112, 1, 0, 0, 0, 4115, 4124, 5, 318, 0, 0, 4116, 4124, 5, 346, 0, 0, 4117, 4124, 5, 347, 0, 0, 4118, 4120, 5, 30, 0, 0, 4119, 4121, 3, 708, 354, 0, 4120, 4119, 1, 0, 0, 0, 4120, 4121, 1, 0, 0, 0, 4121, 4124, 1, 0, 0, 0, 4122, 4124, 5, 515, 0, 0, 4123, 4115, 1, 0, 0, 0, 4123, 4116, 1, 0, 0, 0, 4123, 4117, 1, 0, 0, 0, 4123, 4118, 1, 0, 0, 0, 4123, 4122, 1, 0, 0, 0, 4124, 495, 1, 0, 0, 0, 4125, 4126, 5, 341, 0, 0, 4126, 4127, 5, 23, 0, 0, 4127, 4130, 3, 708, 354, 0, 4128, 4129, 5, 76, 0, 0, 4129, 4131, 5, 511, 0, 0, 4130, 4128, 1, 0, 0, 0, 4130, 4131, 1, 0, 0, 0, 4131, 4143, 1, 0, 0, 0, 4132, 4133, 5, 497, 0, 0, 4133, 4138, 3, 488, 244, 0, 4134, 4135, 5, 495, 0, 0, 4135, 4137, 3, 488, 244, 0, 4136, 4134, 1, 0, 0, 0, 4137, 4140, 1, 0, 0, 0, 4138, 4136, 1, 0, 0, 0, 4138, 4139, 1, 0, 0, 0, 4139, 4141, 1, 0, 0, 0, 4140, 4138, 1, 0, 0, 0, 4141, 4142, 5, 498, 0, 0, 4142, 4144, 1, 0, 0, 0, 4143, 4132, 1, 0, 0, 0, 4143, 4144, 1, 0, 0, 0, 4144, 4146, 1, 0, 0, 0, 4145, 4147, 3, 498, 249, 0, 4146, 4145, 1, 0, 0, 0, 4146, 4147, 1, 0, 0, 0, 4147, 4149, 1, 0, 0, 0, 4148, 4150, 5, 494, 0, 0, 4149, 4148, 1, 0, 0, 0, 4149, 4150, 1, 0, 0, 0, 4150, 497, 1, 0, 0, 0, 4151, 4152, 5, 343, 0, 0, 4152, 4162, 5, 497, 0, 0, 4153, 4163, 5, 489, 0, 0, 4154, 4159, 3, 500, 250, 0, 4155, 4156, 5, 495, 0, 0, 4156, 4158, 3, 500, 250, 0, 4157, 4155, 1, 0, 0, 0, 4158, 4161, 1, 0, 0, 0, 4159, 4157, 1, 0, 0, 0, 4159, 4160, 1, 0, 0, 0, 4160, 4163, 1, 0, 0, 0, 4161, 4159, 1, 0, 0, 0, 4162, 4153, 1, 0, 0, 0, 4162, 4154, 1, 0, 0, 0, 4163, 4164, 1, 0, 0, 0, 4164, 4165, 5, 498, 0, 0, 4165, 499, 1, 0, 0, 0, 4166, 4169, 5, 515, 0, 0, 4167, 4168, 5, 76, 0, 0, 4168, 4170, 5, 511, 0, 0, 4169, 4167, 1, 0, 0, 0, 4169, 4170, 1, 0, 0, 0, 4170, 4172, 1, 0, 0, 0, 4171, 4173, 3, 502, 251, 0, 4172, 4171, 1, 0, 0, 0, 4172, 4173, 1, 0, 0, 0, 4173, 501, 1, 0, 0, 0, 4174, 4175, 5, 497, 0, 0, 4175, 4180, 5, 515, 0, 0, 4176, 4177, 5, 495, 0, 0, 4177, 4179, 5, 515, 0, 0, 4178, 4176, 1, 0, 0, 0, 4179, 4182, 1, 0, 0, 0, 4180, 4178, 1, 0, 0, 0, 4180, 4181, 1, 0, 0, 0, 4181, 4183, 1, 0, 0, 0, 4182, 4180, 1, 0, 0, 0, 4183, 4184, 5, 498, 0, 0, 4184, 503, 1, 0, 0, 0, 4185, 4186, 5, 26, 0, 0, 4186, 4187, 5, 23, 0, 0, 4187, 4188, 3, 708, 354, 0, 4188, 4189, 5, 71, 0, 0, 4189, 4190, 5, 314, 0, 0, 4190, 4191, 5, 339, 0, 0, 4191, 4192, 3, 708, 354, 0, 4192, 4193, 5, 497, 0, 0, 4193, 4198, 3, 488, 244, 0, 4194, 4195, 5, 495, 0, 0, 4195, 4197, 3, 488, 244, 0, 4196, 4194, 1, 0, 0, 0, 4197, 4200, 1, 0, 0, 0, 4198, 4196, 1, 0, 0, 0, 4198, 4199, 1, 0, 0, 0, 4199, 4201, 1, 0, 0, 0, 4200, 4198, 1, 0, 0, 0, 4201, 4207, 5, 498, 0, 0, 4202, 4204, 5, 497, 0, 0, 4203, 4205, 3, 100, 50, 0, 4204, 4203, 1, 0, 0, 0, 4204, 4205, 1, 0, 0, 0, 4205, 4206, 1, 0, 0, 0, 4206, 4208, 5, 498, 0, 0, 4207, 4202, 1, 0, 0, 0, 4207, 4208, 1, 0, 0, 0, 4208, 505, 1, 0, 0, 0, 4209, 4212, 5, 371, 0, 0, 4210, 4213, 3, 708, 354, 0, 4211, 4213, 5, 515, 0, 0, 4212, 4210, 1, 0, 0, 0, 4212, 4211, 1, 0, 0, 0, 4213, 4217, 1, 0, 0, 0, 4214, 4216, 3, 34, 17, 0, 4215, 4214, 1, 0, 0, 0, 4216, 4219, 1, 0, 0, 0, 4217, 4215, 1, 0, 0, 0, 4217, 4218, 1, 0, 0, 0, 4218, 507, 1, 0, 0, 0, 4219, 4217, 1, 0, 0, 0, 4220, 4221, 5, 370, 0, 0, 4221, 4222, 5, 497, 0, 0, 4222, 4227, 3, 510, 255, 0, 4223, 4224, 5, 495, 0, 0, 4224, 4226, 3, 510, 255, 0, 4225, 4223, 1, 0, 0, 0, 4226, 4229, 1, 0, 0, 0, 4227, 4225, 1, 0, 0, 0, 4227, 4228, 1, 0, 0, 0, 4228, 4230, 1, 0, 0, 0, 4229, 4227, 1, 0, 0, 0, 4230, 4231, 5, 498, 0, 0, 4231, 509, 1, 0, 0, 0, 4232, 4233, 5, 511, 0, 0, 4233, 4234, 5, 503, 0, 0, 4234, 4235, 3, 486, 243, 0, 4235, 511, 1, 0, 0, 0, 4236, 4237, 5, 437, 0, 0, 4237, 4238, 5, 438, 0, 0, 4238, 4239, 5, 312, 0, 0, 4239, 4240, 3, 708, 354, 0, 4240, 4241, 5, 497, 0, 0, 4241, 4246, 3, 488, 244, 0, 4242, 4243, 5, 495, 0, 0, 4243, 4245, 3, 488, 244, 0, 4244, 4242, 1, 0, 0, 0, 4245, 4248, 1, 0, 0, 0, 4246, 4244, 1, 0, 0, 0, 4246, 4247, 1, 0, 0, 0, 4247, 4249, 1, 0, 0, 0, 4248, 4246, 1, 0, 0, 0, 4249, 4250, 5, 498, 0, 0, 4250, 4252, 5, 499, 0, 0, 4251, 4253, 3, 514, 257, 0, 4252, 4251, 1, 0, 0, 0, 4253, 4254, 1, 0, 0, 0, 4254, 4252, 1, 0, 0, 0, 4254, 4255, 1, 0, 0, 0, 4255, 4256, 1, 0, 0, 0, 4256, 4257, 5, 500, 0, 0, 4257, 513, 1, 0, 0, 0, 4258, 4259, 5, 402, 0, 0, 4259, 4260, 5, 515, 0, 0, 4260, 4261, 5, 497, 0, 0, 4261, 4266, 3, 516, 258, 0, 4262, 4263, 5, 495, 0, 0, 4263, 4265, 3, 516, 258, 0, 4264, 4262, 1, 0, 0, 0, 4265, 4268, 1, 0, 0, 0, 4266, 4264, 1, 0, 0, 0, 4266, 4267, 1, 0, 0, 0, 4267, 4269, 1, 0, 0, 0, 4268, 4266, 1, 0, 0, 0, 4269, 4270, 5, 498, 0, 0, 4270, 4273, 7, 28, 0, 0, 4271, 4272, 5, 23, 0, 0, 4272, 4274, 3, 708, 354, 0, 4273, 4271, 1, 0, 0, 0, 4273, 4274, 1, 0, 0, 0, 4274, 4277, 1, 0, 0, 0, 4275, 4276, 5, 30, 0, 0, 4276, 4278, 3, 708, 354, 0, 4277, 4275, 1, 0, 0, 0, 4277, 4278, 1, 0, 0, 0, 4278, 4279, 1, 0, 0, 0, 4279, 4280, 5, 494, 0, 0, 4280, 515, 1, 0, 0, 0, 4281, 4282, 5, 515, 0, 0, 4282, 4283, 5, 503, 0, 0, 4283, 4284, 3, 108, 54, 0, 4284, 517, 1, 0, 0, 0, 4285, 4286, 5, 32, 0, 0, 4286, 4291, 3, 708, 354, 0, 4287, 4288, 5, 368, 0, 0, 4288, 4289, 5, 514, 0, 0, 4289, 4290, 5, 503, 0, 0, 4290, 4292, 3, 708, 354, 0, 4291, 4287, 1, 0, 0, 0, 4291, 4292, 1, 0, 0, 0, 4292, 4295, 1, 0, 0, 0, 4293, 4294, 5, 478, 0, 0, 4294, 4296, 5, 511, 0, 0, 4295, 4293, 1, 0, 0, 0, 4295, 4296, 1, 0, 0, 0, 4296, 4299, 1, 0, 0, 0, 4297, 4298, 5, 477, 0, 0, 4298, 4300, 5, 511, 0, 0, 4299, 4297, 1, 0, 0, 0, 4299, 4300, 1, 0, 0, 0, 4300, 4304, 1, 0, 0, 0, 4301, 4302, 5, 361, 0, 0, 4302, 4303, 5, 454, 0, 0, 4303, 4305, 7, 29, 0, 0, 4304, 4301, 1, 0, 0, 0, 4304, 4305, 1, 0, 0, 0, 4305, 4309, 1, 0, 0, 0, 4306, 4307, 5, 465, 0, 0, 4307, 4308, 5, 33, 0, 0, 4308, 4310, 3, 708, 354, 0, 4309, 4306, 1, 0, 0, 0, 4309, 4310, 1, 0, 0, 0, 4310, 4314, 1, 0, 0, 0, 4311, 4312, 5, 464, 0, 0, 4312, 4313, 5, 268, 0, 0, 4313, 4315, 5, 511, 0, 0, 4314, 4311, 1, 0, 0, 0, 4314, 4315, 1, 0, 0, 0, 4315, 4316, 1, 0, 0, 0, 4316, 4317, 5, 96, 0, 0, 4317, 4318, 3, 520, 260, 0, 4318, 4319, 5, 83, 0, 0, 4319, 4321, 5, 32, 0, 0, 4320, 4322, 5, 494, 0, 0, 4321, 4320, 1, 0, 0, 0, 4321, 4322, 1, 0, 0, 0, 4322, 4324, 1, 0, 0, 0, 4323, 4325, 5, 490, 0, 0, 4324, 4323, 1, 0, 0, 0, 4324, 4325, 1, 0, 0, 0, 4325, 519, 1, 0, 0, 0, 4326, 4328, 3, 522, 261, 0, 4327, 4326, 1, 0, 0, 0, 4328, 4331, 1, 0, 0, 0, 4329, 4327, 1, 0, 0, 0, 4329, 4330, 1, 0, 0, 0, 4330, 521, 1, 0, 0, 0, 4331, 4329, 1, 0, 0, 0, 4332, 4333, 3, 524, 262, 0, 4333, 4334, 5, 494, 0, 0, 4334, 4360, 1, 0, 0, 0, 4335, 4336, 3, 530, 265, 0, 4336, 4337, 5, 494, 0, 0, 4337, 4360, 1, 0, 0, 0, 4338, 4339, 3, 534, 267, 0, 4339, 4340, 5, 494, 0, 0, 4340, 4360, 1, 0, 0, 0, 4341, 4342, 3, 536, 268, 0, 4342, 4343, 5, 494, 0, 0, 4343, 4360, 1, 0, 0, 0, 4344, 4345, 3, 540, 270, 0, 4345, 4346, 5, 494, 0, 0, 4346, 4360, 1, 0, 0, 0, 4347, 4348, 3, 544, 272, 0, 4348, 4349, 5, 494, 0, 0, 4349, 4360, 1, 0, 0, 0, 4350, 4351, 3, 546, 273, 0, 4351, 4352, 5, 494, 0, 0, 4352, 4360, 1, 0, 0, 0, 4353, 4354, 3, 548, 274, 0, 4354, 4355, 5, 494, 0, 0, 4355, 4360, 1, 0, 0, 0, 4356, 4357, 3, 550, 275, 0, 4357, 4358, 5, 494, 0, 0, 4358, 4360, 1, 0, 0, 0, 4359, 4332, 1, 0, 0, 0, 4359, 4335, 1, 0, 0, 0, 4359, 4338, 1, 0, 0, 0, 4359, 4341, 1, 0, 0, 0, 4359, 4344, 1, 0, 0, 0, 4359, 4347, 1, 0, 0, 0, 4359, 4350, 1, 0, 0, 0, 4359, 4353, 1, 0, 0, 0, 4359, 4356, 1, 0, 0, 0, 4360, 523, 1, 0, 0, 0, 4361, 4362, 5, 455, 0, 0, 4362, 4363, 5, 456, 0, 0, 4363, 4364, 5, 515, 0, 0, 4364, 4367, 5, 511, 0, 0, 4365, 4366, 5, 33, 0, 0, 4366, 4368, 3, 708, 354, 0, 4367, 4365, 1, 0, 0, 0, 4367, 4368, 1, 0, 0, 0, 4368, 4372, 1, 0, 0, 0, 4369, 4370, 5, 460, 0, 0, 4370, 4371, 5, 30, 0, 0, 4371, 4373, 3, 708, 354, 0, 4372, 4369, 1, 0, 0, 0, 4372, 4373, 1, 0, 0, 0, 4373, 4377, 1, 0, 0, 0, 4374, 4375, 5, 460, 0, 0, 4375, 4376, 5, 308, 0, 0, 4376, 4378, 5, 511, 0, 0, 4377, 4374, 1, 0, 0, 0, 4377, 4378, 1, 0, 0, 0, 4378, 4381, 1, 0, 0, 0, 4379, 4380, 5, 23, 0, 0, 4380, 4382, 3, 708, 354, 0, 4381, 4379, 1, 0, 0, 0, 4381, 4382, 1, 0, 0, 0, 4382, 4386, 1, 0, 0, 0, 4383, 4384, 5, 464, 0, 0, 4384, 4385, 5, 268, 0, 0, 4385, 4387, 5, 511, 0, 0, 4386, 4383, 1, 0, 0, 0, 4386, 4387, 1, 0, 0, 0, 4387, 4390, 1, 0, 0, 0, 4388, 4389, 5, 477, 0, 0, 4389, 4391, 5, 511, 0, 0, 4390, 4388, 1, 0, 0, 0, 4390, 4391, 1, 0, 0, 0, 4391, 4398, 1, 0, 0, 0, 4392, 4394, 5, 459, 0, 0, 4393, 4395, 3, 528, 264, 0, 4394, 4393, 1, 0, 0, 0, 4395, 4396, 1, 0, 0, 0, 4396, 4394, 1, 0, 0, 0, 4396, 4397, 1, 0, 0, 0, 4397, 4399, 1, 0, 0, 0, 4398, 4392, 1, 0, 0, 0, 4398, 4399, 1, 0, 0, 0, 4399, 4407, 1, 0, 0, 0, 4400, 4401, 5, 470, 0, 0, 4401, 4403, 5, 438, 0, 0, 4402, 4404, 3, 526, 263, 0, 4403, 4402, 1, 0, 0, 0, 4404, 4405, 1, 0, 0, 0, 4405, 4403, 1, 0, 0, 0, 4405, 4406, 1, 0, 0, 0, 4406, 4408, 1, 0, 0, 0, 4407, 4400, 1, 0, 0, 0, 4407, 4408, 1, 0, 0, 0, 4408, 4459, 1, 0, 0, 0, 4409, 4410, 5, 473, 0, 0, 4410, 4411, 5, 455, 0, 0, 4411, 4412, 5, 456, 0, 0, 4412, 4413, 5, 515, 0, 0, 4413, 4416, 5, 511, 0, 0, 4414, 4415, 5, 33, 0, 0, 4415, 4417, 3, 708, 354, 0, 4416, 4414, 1, 0, 0, 0, 4416, 4417, 1, 0, 0, 0, 4417, 4421, 1, 0, 0, 0, 4418, 4419, 5, 460, 0, 0, 4419, 4420, 5, 30, 0, 0, 4420, 4422, 3, 708, 354, 0, 4421, 4418, 1, 0, 0, 0, 4421, 4422, 1, 0, 0, 0, 4422, 4426, 1, 0, 0, 0, 4423, 4424, 5, 460, 0, 0, 4424, 4425, 5, 308, 0, 0, 4425, 4427, 5, 511, 0, 0, 4426, 4423, 1, 0, 0, 0, 4426, 4427, 1, 0, 0, 0, 4427, 4430, 1, 0, 0, 0, 4428, 4429, 5, 23, 0, 0, 4429, 4431, 3, 708, 354, 0, 4430, 4428, 1, 0, 0, 0, 4430, 4431, 1, 0, 0, 0, 4431, 4435, 1, 0, 0, 0, 4432, 4433, 5, 464, 0, 0, 4433, 4434, 5, 268, 0, 0, 4434, 4436, 5, 511, 0, 0, 4435, 4432, 1, 0, 0, 0, 4435, 4436, 1, 0, 0, 0, 4436, 4439, 1, 0, 0, 0, 4437, 4438, 5, 477, 0, 0, 4438, 4440, 5, 511, 0, 0, 4439, 4437, 1, 0, 0, 0, 4439, 4440, 1, 0, 0, 0, 4440, 4447, 1, 0, 0, 0, 4441, 4443, 5, 459, 0, 0, 4442, 4444, 3, 528, 264, 0, 4443, 4442, 1, 0, 0, 0, 4444, 4445, 1, 0, 0, 0, 4445, 4443, 1, 0, 0, 0, 4445, 4446, 1, 0, 0, 0, 4446, 4448, 1, 0, 0, 0, 4447, 4441, 1, 0, 0, 0, 4447, 4448, 1, 0, 0, 0, 4448, 4456, 1, 0, 0, 0, 4449, 4450, 5, 470, 0, 0, 4450, 4452, 5, 438, 0, 0, 4451, 4453, 3, 526, 263, 0, 4452, 4451, 1, 0, 0, 0, 4453, 4454, 1, 0, 0, 0, 4454, 4452, 1, 0, 0, 0, 4454, 4455, 1, 0, 0, 0, 4455, 4457, 1, 0, 0, 0, 4456, 4449, 1, 0, 0, 0, 4456, 4457, 1, 0, 0, 0, 4457, 4459, 1, 0, 0, 0, 4458, 4361, 1, 0, 0, 0, 4458, 4409, 1, 0, 0, 0, 4459, 525, 1, 0, 0, 0, 4460, 4461, 5, 471, 0, 0, 4461, 4463, 5, 462, 0, 0, 4462, 4464, 5, 511, 0, 0, 4463, 4462, 1, 0, 0, 0, 4463, 4464, 1, 0, 0, 0, 4464, 4469, 1, 0, 0, 0, 4465, 4466, 5, 499, 0, 0, 4466, 4467, 3, 520, 260, 0, 4467, 4468, 5, 500, 0, 0, 4468, 4470, 1, 0, 0, 0, 4469, 4465, 1, 0, 0, 0, 4469, 4470, 1, 0, 0, 0, 4470, 4494, 1, 0, 0, 0, 4471, 4472, 5, 472, 0, 0, 4472, 4473, 5, 471, 0, 0, 4473, 4475, 5, 462, 0, 0, 4474, 4476, 5, 511, 0, 0, 4475, 4474, 1, 0, 0, 0, 4475, 4476, 1, 0, 0, 0, 4476, 4481, 1, 0, 0, 0, 4477, 4478, 5, 499, 0, 0, 4478, 4479, 3, 520, 260, 0, 4479, 4480, 5, 500, 0, 0, 4480, 4482, 1, 0, 0, 0, 4481, 4477, 1, 0, 0, 0, 4481, 4482, 1, 0, 0, 0, 4482, 4494, 1, 0, 0, 0, 4483, 4485, 5, 462, 0, 0, 4484, 4486, 5, 511, 0, 0, 4485, 4484, 1, 0, 0, 0, 4485, 4486, 1, 0, 0, 0, 4486, 4491, 1, 0, 0, 0, 4487, 4488, 5, 499, 0, 0, 4488, 4489, 3, 520, 260, 0, 4489, 4490, 5, 500, 0, 0, 4490, 4492, 1, 0, 0, 0, 4491, 4487, 1, 0, 0, 0, 4491, 4492, 1, 0, 0, 0, 4492, 4494, 1, 0, 0, 0, 4493, 4460, 1, 0, 0, 0, 4493, 4471, 1, 0, 0, 0, 4493, 4483, 1, 0, 0, 0, 4494, 527, 1, 0, 0, 0, 4495, 4496, 5, 511, 0, 0, 4496, 4497, 5, 499, 0, 0, 4497, 4498, 3, 520, 260, 0, 4498, 4499, 5, 500, 0, 0, 4499, 529, 1, 0, 0, 0, 4500, 4501, 5, 113, 0, 0, 4501, 4502, 5, 30, 0, 0, 4502, 4505, 3, 708, 354, 0, 4503, 4504, 5, 405, 0, 0, 4504, 4506, 5, 511, 0, 0, 4505, 4503, 1, 0, 0, 0, 4505, 4506, 1, 0, 0, 0, 4506, 4519, 1, 0, 0, 0, 4507, 4508, 5, 139, 0, 0, 4508, 4509, 5, 497, 0, 0, 4509, 4514, 3, 532, 266, 0, 4510, 4511, 5, 495, 0, 0, 4511, 4513, 3, 532, 266, 0, 4512, 4510, 1, 0, 0, 0, 4513, 4516, 1, 0, 0, 0, 4514, 4512, 1, 0, 0, 0, 4514, 4515, 1, 0, 0, 0, 4515, 4517, 1, 0, 0, 0, 4516, 4514, 1, 0, 0, 0, 4517, 4518, 5, 498, 0, 0, 4518, 4520, 1, 0, 0, 0, 4519, 4507, 1, 0, 0, 0, 4519, 4520, 1, 0, 0, 0, 4520, 4527, 1, 0, 0, 0, 4521, 4523, 5, 459, 0, 0, 4522, 4524, 3, 538, 269, 0, 4523, 4522, 1, 0, 0, 0, 4524, 4525, 1, 0, 0, 0, 4525, 4523, 1, 0, 0, 0, 4525, 4526, 1, 0, 0, 0, 4526, 4528, 1, 0, 0, 0, 4527, 4521, 1, 0, 0, 0, 4527, 4528, 1, 0, 0, 0, 4528, 4536, 1, 0, 0, 0, 4529, 4530, 5, 470, 0, 0, 4530, 4532, 5, 438, 0, 0, 4531, 4533, 3, 526, 263, 0, 4532, 4531, 1, 0, 0, 0, 4533, 4534, 1, 0, 0, 0, 4534, 4532, 1, 0, 0, 0, 4534, 4535, 1, 0, 0, 0, 4535, 4537, 1, 0, 0, 0, 4536, 4529, 1, 0, 0, 0, 4536, 4537, 1, 0, 0, 0, 4537, 531, 1, 0, 0, 0, 4538, 4539, 3, 708, 354, 0, 4539, 4540, 5, 484, 0, 0, 4540, 4541, 5, 511, 0, 0, 4541, 533, 1, 0, 0, 0, 4542, 4543, 5, 113, 0, 0, 4543, 4544, 5, 32, 0, 0, 4544, 4547, 3, 708, 354, 0, 4545, 4546, 5, 405, 0, 0, 4546, 4548, 5, 511, 0, 0, 4547, 4545, 1, 0, 0, 0, 4547, 4548, 1, 0, 0, 0, 4548, 4561, 1, 0, 0, 0, 4549, 4550, 5, 139, 0, 0, 4550, 4551, 5, 497, 0, 0, 4551, 4556, 3, 532, 266, 0, 4552, 4553, 5, 495, 0, 0, 4553, 4555, 3, 532, 266, 0, 4554, 4552, 1, 0, 0, 0, 4555, 4558, 1, 0, 0, 0, 4556, 4554, 1, 0, 0, 0, 4556, 4557, 1, 0, 0, 0, 4557, 4559, 1, 0, 0, 0, 4558, 4556, 1, 0, 0, 0, 4559, 4560, 5, 498, 0, 0, 4560, 4562, 1, 0, 0, 0, 4561, 4549, 1, 0, 0, 0, 4561, 4562, 1, 0, 0, 0, 4562, 535, 1, 0, 0, 0, 4563, 4565, 5, 457, 0, 0, 4564, 4566, 5, 511, 0, 0, 4565, 4564, 1, 0, 0, 0, 4565, 4566, 1, 0, 0, 0, 4566, 4569, 1, 0, 0, 0, 4567, 4568, 5, 405, 0, 0, 4568, 4570, 5, 511, 0, 0, 4569, 4567, 1, 0, 0, 0, 4569, 4570, 1, 0, 0, 0, 4570, 4577, 1, 0, 0, 0, 4571, 4573, 5, 459, 0, 0, 4572, 4574, 3, 538, 269, 0, 4573, 4572, 1, 0, 0, 0, 4574, 4575, 1, 0, 0, 0, 4575, 4573, 1, 0, 0, 0, 4575, 4576, 1, 0, 0, 0, 4576, 4578, 1, 0, 0, 0, 4577, 4571, 1, 0, 0, 0, 4577, 4578, 1, 0, 0, 0, 4578, 537, 1, 0, 0, 0, 4579, 4580, 7, 30, 0, 0, 4580, 4581, 5, 507, 0, 0, 4581, 4582, 5, 499, 0, 0, 4582, 4583, 3, 520, 260, 0, 4583, 4584, 5, 500, 0, 0, 4584, 539, 1, 0, 0, 0, 4585, 4586, 5, 467, 0, 0, 4586, 4589, 5, 458, 0, 0, 4587, 4588, 5, 405, 0, 0, 4588, 4590, 5, 511, 0, 0, 4589, 4587, 1, 0, 0, 0, 4589, 4590, 1, 0, 0, 0, 4590, 4592, 1, 0, 0, 0, 4591, 4593, 3, 542, 271, 0, 4592, 4591, 1, 0, 0, 0, 4593, 4594, 1, 0, 0, 0, 4594, 4592, 1, 0, 0, 0, 4594, 4595, 1, 0, 0, 0, 4595, 541, 1, 0, 0, 0, 4596, 4597, 5, 323, 0, 0, 4597, 4598, 5, 513, 0, 0, 4598, 4599, 5, 499, 0, 0, 4599, 4600, 3, 520, 260, 0, 4600, 4601, 5, 500, 0, 0, 4601, 543, 1, 0, 0, 0, 4602, 4603, 5, 463, 0, 0, 4603, 4604, 5, 423, 0, 0, 4604, 4607, 5, 515, 0, 0, 4605, 4606, 5, 405, 0, 0, 4606, 4608, 5, 511, 0, 0, 4607, 4605, 1, 0, 0, 0, 4607, 4608, 1, 0, 0, 0, 4608, 545, 1, 0, 0, 0, 4609, 4610, 5, 468, 0, 0, 4610, 4611, 5, 426, 0, 0, 4611, 4613, 5, 462, 0, 0, 4612, 4614, 5, 511, 0, 0, 4613, 4612, 1, 0, 0, 0, 4613, 4614, 1, 0, 0, 0, 4614, 4617, 1, 0, 0, 0, 4615, 4616, 5, 405, 0, 0, 4616, 4618, 5, 511, 0, 0, 4617, 4615, 1, 0, 0, 0, 4617, 4618, 1, 0, 0, 0, 4618, 547, 1, 0, 0, 0, 4619, 4620, 5, 468, 0, 0, 4620, 4621, 5, 426, 0, 0, 4621, 4624, 5, 461, 0, 0, 4622, 4623, 5, 405, 0, 0, 4623, 4625, 5, 511, 0, 0, 4624, 4622, 1, 0, 0, 0, 4624, 4625, 1, 0, 0, 0, 4625, 4633, 1, 0, 0, 0, 4626, 4627, 5, 470, 0, 0, 4627, 4629, 5, 438, 0, 0, 4628, 4630, 3, 526, 263, 0, 4629, 4628, 1, 0, 0, 0, 4630, 4631, 1, 0, 0, 0, 4631, 4629, 1, 0, 0, 0, 4631, 4632, 1, 0, 0, 0, 4632, 4634, 1, 0, 0, 0, 4633, 4626, 1, 0, 0, 0, 4633, 4634, 1, 0, 0, 0, 4634, 549, 1, 0, 0, 0, 4635, 4636, 5, 469, 0, 0, 4636, 4637, 5, 511, 0, 0, 4637, 551, 1, 0, 0, 0, 4638, 4639, 3, 554, 277, 0, 4639, 4644, 3, 556, 278, 0, 4640, 4641, 5, 495, 0, 0, 4641, 4643, 3, 556, 278, 0, 4642, 4640, 1, 0, 0, 0, 4643, 4646, 1, 0, 0, 0, 4644, 4642, 1, 0, 0, 0, 4644, 4645, 1, 0, 0, 0, 4645, 4678, 1, 0, 0, 0, 4646, 4644, 1, 0, 0, 0, 4647, 4648, 5, 37, 0, 0, 4648, 4652, 5, 511, 0, 0, 4649, 4650, 5, 417, 0, 0, 4650, 4653, 3, 558, 279, 0, 4651, 4653, 5, 19, 0, 0, 4652, 4649, 1, 0, 0, 0, 4652, 4651, 1, 0, 0, 0, 4653, 4657, 1, 0, 0, 0, 4654, 4655, 5, 289, 0, 0, 4655, 4656, 5, 441, 0, 0, 4656, 4658, 5, 511, 0, 0, 4657, 4654, 1, 0, 0, 0, 4657, 4658, 1, 0, 0, 0, 4658, 4678, 1, 0, 0, 0, 4659, 4660, 5, 19, 0, 0, 4660, 4661, 5, 37, 0, 0, 4661, 4665, 5, 511, 0, 0, 4662, 4663, 5, 289, 0, 0, 4663, 4664, 5, 441, 0, 0, 4664, 4666, 5, 511, 0, 0, 4665, 4662, 1, 0, 0, 0, 4665, 4666, 1, 0, 0, 0, 4666, 4678, 1, 0, 0, 0, 4667, 4668, 5, 441, 0, 0, 4668, 4669, 5, 511, 0, 0, 4669, 4674, 3, 556, 278, 0, 4670, 4671, 5, 495, 0, 0, 4671, 4673, 3, 556, 278, 0, 4672, 4670, 1, 0, 0, 0, 4673, 4676, 1, 0, 0, 0, 4674, 4672, 1, 0, 0, 0, 4674, 4675, 1, 0, 0, 0, 4675, 4678, 1, 0, 0, 0, 4676, 4674, 1, 0, 0, 0, 4677, 4638, 1, 0, 0, 0, 4677, 4647, 1, 0, 0, 0, 4677, 4659, 1, 0, 0, 0, 4677, 4667, 1, 0, 0, 0, 4678, 553, 1, 0, 0, 0, 4679, 4680, 7, 31, 0, 0, 4680, 555, 1, 0, 0, 0, 4681, 4682, 5, 515, 0, 0, 4682, 4683, 5, 484, 0, 0, 4683, 4684, 3, 558, 279, 0, 4684, 557, 1, 0, 0, 0, 4685, 4690, 5, 511, 0, 0, 4686, 4690, 5, 513, 0, 0, 4687, 4690, 3, 716, 358, 0, 4688, 4690, 3, 708, 354, 0, 4689, 4685, 1, 0, 0, 0, 4689, 4686, 1, 0, 0, 0, 4689, 4687, 1, 0, 0, 0, 4689, 4688, 1, 0, 0, 0, 4690, 559, 1, 0, 0, 0, 4691, 4696, 3, 562, 281, 0, 4692, 4696, 3, 574, 287, 0, 4693, 4696, 3, 576, 288, 0, 4694, 4696, 3, 582, 291, 0, 4695, 4691, 1, 0, 0, 0, 4695, 4692, 1, 0, 0, 0, 4695, 4693, 1, 0, 0, 0, 4695, 4694, 1, 0, 0, 0, 4696, 561, 1, 0, 0, 0, 4697, 4698, 5, 65, 0, 0, 4698, 5105, 5, 377, 0, 0, 4699, 4700, 5, 65, 0, 0, 4700, 4701, 5, 344, 0, 0, 4701, 4702, 5, 378, 0, 0, 4702, 4703, 5, 71, 0, 0, 4703, 5105, 3, 708, 354, 0, 4704, 4705, 5, 65, 0, 0, 4705, 4706, 5, 344, 0, 0, 4706, 4707, 5, 117, 0, 0, 4707, 4708, 5, 71, 0, 0, 4708, 5105, 3, 708, 354, 0, 4709, 4710, 5, 65, 0, 0, 4710, 4711, 5, 344, 0, 0, 4711, 4712, 5, 404, 0, 0, 4712, 4713, 5, 71, 0, 0, 4713, 5105, 3, 708, 354, 0, 4714, 4715, 5, 65, 0, 0, 4715, 4716, 5, 344, 0, 0, 4716, 4717, 5, 403, 0, 0, 4717, 4718, 5, 71, 0, 0, 4718, 5105, 3, 708, 354, 0, 4719, 4720, 5, 65, 0, 0, 4720, 4726, 5, 378, 0, 0, 4721, 4724, 5, 289, 0, 0, 4722, 4725, 3, 708, 354, 0, 4723, 4725, 5, 515, 0, 0, 4724, 4722, 1, 0, 0, 0, 4724, 4723, 1, 0, 0, 0, 4725, 4727, 1, 0, 0, 0, 4726, 4721, 1, 0, 0, 0, 4726, 4727, 1, 0, 0, 0, 4727, 5105, 1, 0, 0, 0, 4728, 4729, 5, 65, 0, 0, 4729, 4735, 5, 379, 0, 0, 4730, 4733, 5, 289, 0, 0, 4731, 4734, 3, 708, 354, 0, 4732, 4734, 5, 515, 0, 0, 4733, 4731, 1, 0, 0, 0, 4733, 4732, 1, 0, 0, 0, 4734, 4736, 1, 0, 0, 0, 4735, 4730, 1, 0, 0, 0, 4735, 4736, 1, 0, 0, 0, 4736, 5105, 1, 0, 0, 0, 4737, 4738, 5, 65, 0, 0, 4738, 4744, 5, 380, 0, 0, 4739, 4742, 5, 289, 0, 0, 4740, 4743, 3, 708, 354, 0, 4741, 4743, 5, 515, 0, 0, 4742, 4740, 1, 0, 0, 0, 4742, 4741, 1, 0, 0, 0, 4743, 4745, 1, 0, 0, 0, 4744, 4739, 1, 0, 0, 0, 4744, 4745, 1, 0, 0, 0, 4745, 5105, 1, 0, 0, 0, 4746, 4747, 5, 65, 0, 0, 4747, 4753, 5, 381, 0, 0, 4748, 4751, 5, 289, 0, 0, 4749, 4752, 3, 708, 354, 0, 4750, 4752, 5, 515, 0, 0, 4751, 4749, 1, 0, 0, 0, 4751, 4750, 1, 0, 0, 0, 4752, 4754, 1, 0, 0, 0, 4753, 4748, 1, 0, 0, 0, 4753, 4754, 1, 0, 0, 0, 4754, 5105, 1, 0, 0, 0, 4755, 4756, 5, 65, 0, 0, 4756, 4762, 5, 382, 0, 0, 4757, 4760, 5, 289, 0, 0, 4758, 4761, 3, 708, 354, 0, 4759, 4761, 5, 515, 0, 0, 4760, 4758, 1, 0, 0, 0, 4760, 4759, 1, 0, 0, 0, 4761, 4763, 1, 0, 0, 0, 4762, 4757, 1, 0, 0, 0, 4762, 4763, 1, 0, 0, 0, 4763, 5105, 1, 0, 0, 0, 4764, 4765, 5, 65, 0, 0, 4765, 4771, 5, 143, 0, 0, 4766, 4769, 5, 289, 0, 0, 4767, 4770, 3, 708, 354, 0, 4768, 4770, 5, 515, 0, 0, 4769, 4767, 1, 0, 0, 0, 4769, 4768, 1, 0, 0, 0, 4770, 4772, 1, 0, 0, 0, 4771, 4766, 1, 0, 0, 0, 4771, 4772, 1, 0, 0, 0, 4772, 5105, 1, 0, 0, 0, 4773, 4774, 5, 65, 0, 0, 4774, 4780, 5, 145, 0, 0, 4775, 4778, 5, 289, 0, 0, 4776, 4779, 3, 708, 354, 0, 4777, 4779, 5, 515, 0, 0, 4778, 4776, 1, 0, 0, 0, 4778, 4777, 1, 0, 0, 0, 4779, 4781, 1, 0, 0, 0, 4780, 4775, 1, 0, 0, 0, 4780, 4781, 1, 0, 0, 0, 4781, 5105, 1, 0, 0, 0, 4782, 4783, 5, 65, 0, 0, 4783, 4789, 5, 383, 0, 0, 4784, 4787, 5, 289, 0, 0, 4785, 4788, 3, 708, 354, 0, 4786, 4788, 5, 515, 0, 0, 4787, 4785, 1, 0, 0, 0, 4787, 4786, 1, 0, 0, 0, 4788, 4790, 1, 0, 0, 0, 4789, 4784, 1, 0, 0, 0, 4789, 4790, 1, 0, 0, 0, 4790, 5105, 1, 0, 0, 0, 4791, 4792, 5, 65, 0, 0, 4792, 4798, 5, 384, 0, 0, 4793, 4796, 5, 289, 0, 0, 4794, 4797, 3, 708, 354, 0, 4795, 4797, 5, 515, 0, 0, 4796, 4794, 1, 0, 0, 0, 4796, 4795, 1, 0, 0, 0, 4797, 4799, 1, 0, 0, 0, 4798, 4793, 1, 0, 0, 0, 4798, 4799, 1, 0, 0, 0, 4799, 5105, 1, 0, 0, 0, 4800, 4801, 5, 65, 0, 0, 4801, 4802, 5, 37, 0, 0, 4802, 4808, 5, 418, 0, 0, 4803, 4806, 5, 289, 0, 0, 4804, 4807, 3, 708, 354, 0, 4805, 4807, 5, 515, 0, 0, 4806, 4804, 1, 0, 0, 0, 4806, 4805, 1, 0, 0, 0, 4807, 4809, 1, 0, 0, 0, 4808, 4803, 1, 0, 0, 0, 4808, 4809, 1, 0, 0, 0, 4809, 5105, 1, 0, 0, 0, 4810, 4811, 5, 65, 0, 0, 4811, 4817, 5, 144, 0, 0, 4812, 4815, 5, 289, 0, 0, 4813, 4816, 3, 708, 354, 0, 4814, 4816, 5, 515, 0, 0, 4815, 4813, 1, 0, 0, 0, 4815, 4814, 1, 0, 0, 0, 4816, 4818, 1, 0, 0, 0, 4817, 4812, 1, 0, 0, 0, 4817, 4818, 1, 0, 0, 0, 4818, 5105, 1, 0, 0, 0, 4819, 4820, 5, 65, 0, 0, 4820, 4826, 5, 146, 0, 0, 4821, 4824, 5, 289, 0, 0, 4822, 4825, 3, 708, 354, 0, 4823, 4825, 5, 515, 0, 0, 4824, 4822, 1, 0, 0, 0, 4824, 4823, 1, 0, 0, 0, 4825, 4827, 1, 0, 0, 0, 4826, 4821, 1, 0, 0, 0, 4826, 4827, 1, 0, 0, 0, 4827, 5105, 1, 0, 0, 0, 4828, 4829, 5, 65, 0, 0, 4829, 4830, 5, 114, 0, 0, 4830, 4836, 5, 117, 0, 0, 4831, 4834, 5, 289, 0, 0, 4832, 4835, 3, 708, 354, 0, 4833, 4835, 5, 515, 0, 0, 4834, 4832, 1, 0, 0, 0, 4834, 4833, 1, 0, 0, 0, 4835, 4837, 1, 0, 0, 0, 4836, 4831, 1, 0, 0, 0, 4836, 4837, 1, 0, 0, 0, 4837, 5105, 1, 0, 0, 0, 4838, 4839, 5, 65, 0, 0, 4839, 4840, 5, 115, 0, 0, 4840, 4846, 5, 117, 0, 0, 4841, 4844, 5, 289, 0, 0, 4842, 4845, 3, 708, 354, 0, 4843, 4845, 5, 515, 0, 0, 4844, 4842, 1, 0, 0, 0, 4844, 4843, 1, 0, 0, 0, 4845, 4847, 1, 0, 0, 0, 4846, 4841, 1, 0, 0, 0, 4846, 4847, 1, 0, 0, 0, 4847, 5105, 1, 0, 0, 0, 4848, 4849, 5, 65, 0, 0, 4849, 4850, 5, 226, 0, 0, 4850, 4856, 5, 227, 0, 0, 4851, 4854, 5, 289, 0, 0, 4852, 4855, 3, 708, 354, 0, 4853, 4855, 5, 515, 0, 0, 4854, 4852, 1, 0, 0, 0, 4854, 4853, 1, 0, 0, 0, 4855, 4857, 1, 0, 0, 0, 4856, 4851, 1, 0, 0, 0, 4856, 4857, 1, 0, 0, 0, 4857, 5105, 1, 0, 0, 0, 4858, 4859, 5, 65, 0, 0, 4859, 4860, 5, 23, 0, 0, 4860, 5105, 3, 708, 354, 0, 4861, 4862, 5, 65, 0, 0, 4862, 4863, 5, 27, 0, 0, 4863, 5105, 3, 708, 354, 0, 4864, 4865, 5, 65, 0, 0, 4865, 4866, 5, 33, 0, 0, 4866, 5105, 3, 708, 354, 0, 4867, 4868, 5, 65, 0, 0, 4868, 5105, 5, 385, 0, 0, 4869, 4870, 5, 65, 0, 0, 4870, 5105, 5, 331, 0, 0, 4871, 4872, 5, 65, 0, 0, 4872, 5105, 5, 333, 0, 0, 4873, 4874, 5, 65, 0, 0, 4874, 4875, 5, 406, 0, 0, 4875, 5105, 5, 331, 0, 0, 4876, 4877, 5, 65, 0, 0, 4877, 4878, 5, 406, 0, 0, 4878, 5105, 5, 365, 0, 0, 4879, 4880, 5, 65, 0, 0, 4880, 4881, 5, 409, 0, 0, 4881, 4882, 5, 424, 0, 0, 4882, 4884, 3, 708, 354, 0, 4883, 4885, 5, 412, 0, 0, 4884, 4883, 1, 0, 0, 0, 4884, 4885, 1, 0, 0, 0, 4885, 5105, 1, 0, 0, 0, 4886, 4887, 5, 65, 0, 0, 4887, 4888, 5, 410, 0, 0, 4888, 4889, 5, 424, 0, 0, 4889, 4891, 3, 708, 354, 0, 4890, 4892, 5, 412, 0, 0, 4891, 4890, 1, 0, 0, 0, 4891, 4892, 1, 0, 0, 0, 4892, 5105, 1, 0, 0, 0, 4893, 4894, 5, 65, 0, 0, 4894, 4895, 5, 411, 0, 0, 4895, 4896, 5, 423, 0, 0, 4896, 5105, 3, 708, 354, 0, 4897, 4898, 5, 65, 0, 0, 4898, 4899, 5, 413, 0, 0, 4899, 4900, 5, 424, 0, 0, 4900, 5105, 3, 708, 354, 0, 4901, 4902, 5, 65, 0, 0, 4902, 4903, 5, 221, 0, 0, 4903, 4904, 5, 424, 0, 0, 4904, 4907, 3, 708, 354, 0, 4905, 4906, 5, 414, 0, 0, 4906, 4908, 5, 513, 0, 0, 4907, 4905, 1, 0, 0, 0, 4907, 4908, 1, 0, 0, 0, 4908, 5105, 1, 0, 0, 0, 4909, 4910, 5, 65, 0, 0, 4910, 4912, 5, 187, 0, 0, 4911, 4913, 3, 564, 282, 0, 4912, 4911, 1, 0, 0, 0, 4912, 4913, 1, 0, 0, 0, 4913, 5105, 1, 0, 0, 0, 4914, 4915, 5, 65, 0, 0, 4915, 4916, 5, 59, 0, 0, 4916, 5105, 5, 442, 0, 0, 4917, 4918, 5, 65, 0, 0, 4918, 4919, 5, 29, 0, 0, 4919, 4925, 5, 444, 0, 0, 4920, 4923, 5, 289, 0, 0, 4921, 4924, 3, 708, 354, 0, 4922, 4924, 5, 515, 0, 0, 4923, 4921, 1, 0, 0, 0, 4923, 4922, 1, 0, 0, 0, 4924, 4926, 1, 0, 0, 0, 4925, 4920, 1, 0, 0, 0, 4925, 4926, 1, 0, 0, 0, 4926, 5105, 1, 0, 0, 0, 4927, 4928, 5, 65, 0, 0, 4928, 4929, 5, 455, 0, 0, 4929, 5105, 5, 444, 0, 0, 4930, 4931, 5, 65, 0, 0, 4931, 4932, 5, 450, 0, 0, 4932, 5105, 5, 480, 0, 0, 4933, 4934, 5, 65, 0, 0, 4934, 4935, 5, 453, 0, 0, 4935, 4936, 5, 93, 0, 0, 4936, 5105, 3, 708, 354, 0, 4937, 4938, 5, 65, 0, 0, 4938, 4939, 5, 453, 0, 0, 4939, 4940, 5, 93, 0, 0, 4940, 4941, 5, 30, 0, 0, 4941, 5105, 3, 708, 354, 0, 4942, 4943, 5, 65, 0, 0, 4943, 4944, 5, 453, 0, 0, 4944, 4945, 5, 93, 0, 0, 4945, 4946, 5, 33, 0, 0, 4946, 5105, 3, 708, 354, 0, 4947, 4948, 5, 65, 0, 0, 4948, 4949, 5, 453, 0, 0, 4949, 4950, 5, 93, 0, 0, 4950, 4951, 5, 32, 0, 0, 4951, 5105, 3, 708, 354, 0, 4952, 4953, 5, 65, 0, 0, 4953, 4954, 5, 442, 0, 0, 4954, 4960, 5, 451, 0, 0, 4955, 4958, 5, 289, 0, 0, 4956, 4959, 3, 708, 354, 0, 4957, 4959, 5, 515, 0, 0, 4958, 4956, 1, 0, 0, 0, 4958, 4957, 1, 0, 0, 0, 4959, 4961, 1, 0, 0, 0, 4960, 4955, 1, 0, 0, 0, 4960, 4961, 1, 0, 0, 0, 4961, 5105, 1, 0, 0, 0, 4962, 4963, 5, 65, 0, 0, 4963, 4964, 5, 314, 0, 0, 4964, 4970, 5, 340, 0, 0, 4965, 4968, 5, 289, 0, 0, 4966, 4969, 3, 708, 354, 0, 4967, 4969, 5, 515, 0, 0, 4968, 4966, 1, 0, 0, 0, 4968, 4967, 1, 0, 0, 0, 4969, 4971, 1, 0, 0, 0, 4970, 4965, 1, 0, 0, 0, 4970, 4971, 1, 0, 0, 0, 4971, 5105, 1, 0, 0, 0, 4972, 4973, 5, 65, 0, 0, 4973, 4974, 5, 314, 0, 0, 4974, 4980, 5, 313, 0, 0, 4975, 4978, 5, 289, 0, 0, 4976, 4979, 3, 708, 354, 0, 4977, 4979, 5, 515, 0, 0, 4978, 4976, 1, 0, 0, 0, 4978, 4977, 1, 0, 0, 0, 4979, 4981, 1, 0, 0, 0, 4980, 4975, 1, 0, 0, 0, 4980, 4981, 1, 0, 0, 0, 4981, 5105, 1, 0, 0, 0, 4982, 4983, 5, 65, 0, 0, 4983, 4984, 5, 26, 0, 0, 4984, 4990, 5, 378, 0, 0, 4985, 4988, 5, 289, 0, 0, 4986, 4989, 3, 708, 354, 0, 4987, 4989, 5, 515, 0, 0, 4988, 4986, 1, 0, 0, 0, 4988, 4987, 1, 0, 0, 0, 4989, 4991, 1, 0, 0, 0, 4990, 4985, 1, 0, 0, 0, 4990, 4991, 1, 0, 0, 0, 4991, 5105, 1, 0, 0, 0, 4992, 4993, 5, 65, 0, 0, 4993, 4994, 5, 26, 0, 0, 4994, 5000, 5, 117, 0, 0, 4995, 4998, 5, 289, 0, 0, 4996, 4999, 3, 708, 354, 0, 4997, 4999, 5, 515, 0, 0, 4998, 4996, 1, 0, 0, 0, 4998, 4997, 1, 0, 0, 0, 4999, 5001, 1, 0, 0, 0, 5000, 4995, 1, 0, 0, 0, 5000, 5001, 1, 0, 0, 0, 5001, 5105, 1, 0, 0, 0, 5002, 5003, 5, 65, 0, 0, 5003, 5105, 5, 371, 0, 0, 5004, 5005, 5, 65, 0, 0, 5005, 5006, 5, 371, 0, 0, 5006, 5009, 5, 372, 0, 0, 5007, 5010, 3, 708, 354, 0, 5008, 5010, 5, 515, 0, 0, 5009, 5007, 1, 0, 0, 0, 5009, 5008, 1, 0, 0, 0, 5009, 5010, 1, 0, 0, 0, 5010, 5105, 1, 0, 0, 0, 5011, 5012, 5, 65, 0, 0, 5012, 5013, 5, 371, 0, 0, 5013, 5105, 5, 373, 0, 0, 5014, 5015, 5, 65, 0, 0, 5015, 5016, 5, 210, 0, 0, 5016, 5019, 5, 211, 0, 0, 5017, 5018, 5, 426, 0, 0, 5018, 5020, 3, 566, 283, 0, 5019, 5017, 1, 0, 0, 0, 5019, 5020, 1, 0, 0, 0, 5020, 5105, 1, 0, 0, 0, 5021, 5022, 5, 65, 0, 0, 5022, 5025, 5, 415, 0, 0, 5023, 5024, 5, 414, 0, 0, 5024, 5026, 5, 513, 0, 0, 5025, 5023, 1, 0, 0, 0, 5025, 5026, 1, 0, 0, 0, 5026, 5032, 1, 0, 0, 0, 5027, 5030, 5, 289, 0, 0, 5028, 5031, 3, 708, 354, 0, 5029, 5031, 5, 515, 0, 0, 5030, 5028, 1, 0, 0, 0, 5030, 5029, 1, 0, 0, 0, 5031, 5033, 1, 0, 0, 0, 5032, 5027, 1, 0, 0, 0, 5032, 5033, 1, 0, 0, 0, 5033, 5035, 1, 0, 0, 0, 5034, 5036, 5, 85, 0, 0, 5035, 5034, 1, 0, 0, 0, 5035, 5036, 1, 0, 0, 0, 5036, 5105, 1, 0, 0, 0, 5037, 5038, 5, 65, 0, 0, 5038, 5039, 5, 437, 0, 0, 5039, 5040, 5, 438, 0, 0, 5040, 5046, 5, 313, 0, 0, 5041, 5044, 5, 289, 0, 0, 5042, 5045, 3, 708, 354, 0, 5043, 5045, 5, 515, 0, 0, 5044, 5042, 1, 0, 0, 0, 5044, 5043, 1, 0, 0, 0, 5045, 5047, 1, 0, 0, 0, 5046, 5041, 1, 0, 0, 0, 5046, 5047, 1, 0, 0, 0, 5047, 5105, 1, 0, 0, 0, 5048, 5049, 5, 65, 0, 0, 5049, 5050, 5, 437, 0, 0, 5050, 5051, 5, 438, 0, 0, 5051, 5057, 5, 340, 0, 0, 5052, 5055, 5, 289, 0, 0, 5053, 5056, 3, 708, 354, 0, 5054, 5056, 5, 515, 0, 0, 5055, 5053, 1, 0, 0, 0, 5055, 5054, 1, 0, 0, 0, 5056, 5058, 1, 0, 0, 0, 5057, 5052, 1, 0, 0, 0, 5057, 5058, 1, 0, 0, 0, 5058, 5105, 1, 0, 0, 0, 5059, 5060, 5, 65, 0, 0, 5060, 5061, 5, 437, 0, 0, 5061, 5067, 5, 120, 0, 0, 5062, 5065, 5, 289, 0, 0, 5063, 5066, 3, 708, 354, 0, 5064, 5066, 5, 515, 0, 0, 5065, 5063, 1, 0, 0, 0, 5065, 5064, 1, 0, 0, 0, 5066, 5068, 1, 0, 0, 0, 5067, 5062, 1, 0, 0, 0, 5067, 5068, 1, 0, 0, 0, 5068, 5105, 1, 0, 0, 0, 5069, 5070, 5, 65, 0, 0, 5070, 5105, 5, 440, 0, 0, 5071, 5072, 5, 65, 0, 0, 5072, 5105, 5, 388, 0, 0, 5073, 5074, 5, 65, 0, 0, 5074, 5075, 5, 353, 0, 0, 5075, 5081, 5, 385, 0, 0, 5076, 5079, 5, 289, 0, 0, 5077, 5080, 3, 708, 354, 0, 5078, 5080, 5, 515, 0, 0, 5079, 5077, 1, 0, 0, 0, 5079, 5078, 1, 0, 0, 0, 5080, 5082, 1, 0, 0, 0, 5081, 5076, 1, 0, 0, 0, 5081, 5082, 1, 0, 0, 0, 5082, 5105, 1, 0, 0, 0, 5083, 5084, 5, 65, 0, 0, 5084, 5085, 5, 311, 0, 0, 5085, 5091, 5, 340, 0, 0, 5086, 5089, 5, 289, 0, 0, 5087, 5090, 3, 708, 354, 0, 5088, 5090, 5, 515, 0, 0, 5089, 5087, 1, 0, 0, 0, 5089, 5088, 1, 0, 0, 0, 5090, 5092, 1, 0, 0, 0, 5091, 5086, 1, 0, 0, 0, 5091, 5092, 1, 0, 0, 0, 5092, 5105, 1, 0, 0, 0, 5093, 5094, 5, 65, 0, 0, 5094, 5095, 5, 342, 0, 0, 5095, 5096, 5, 311, 0, 0, 5096, 5102, 5, 313, 0, 0, 5097, 5100, 5, 289, 0, 0, 5098, 5101, 3, 708, 354, 0, 5099, 5101, 5, 515, 0, 0, 5100, 5098, 1, 0, 0, 0, 5100, 5099, 1, 0, 0, 0, 5101, 5103, 1, 0, 0, 0, 5102, 5097, 1, 0, 0, 0, 5102, 5103, 1, 0, 0, 0, 5103, 5105, 1, 0, 0, 0, 5104, 4697, 1, 0, 0, 0, 5104, 4699, 1, 0, 0, 0, 5104, 4704, 1, 0, 0, 0, 5104, 4709, 1, 0, 0, 0, 5104, 4714, 1, 0, 0, 0, 5104, 4719, 1, 0, 0, 0, 5104, 4728, 1, 0, 0, 0, 5104, 4737, 1, 0, 0, 0, 5104, 4746, 1, 0, 0, 0, 5104, 4755, 1, 0, 0, 0, 5104, 4764, 1, 0, 0, 0, 5104, 4773, 1, 0, 0, 0, 5104, 4782, 1, 0, 0, 0, 5104, 4791, 1, 0, 0, 0, 5104, 4800, 1, 0, 0, 0, 5104, 4810, 1, 0, 0, 0, 5104, 4819, 1, 0, 0, 0, 5104, 4828, 1, 0, 0, 0, 5104, 4838, 1, 0, 0, 0, 5104, 4848, 1, 0, 0, 0, 5104, 4858, 1, 0, 0, 0, 5104, 4861, 1, 0, 0, 0, 5104, 4864, 1, 0, 0, 0, 5104, 4867, 1, 0, 0, 0, 5104, 4869, 1, 0, 0, 0, 5104, 4871, 1, 0, 0, 0, 5104, 4873, 1, 0, 0, 0, 5104, 4876, 1, 0, 0, 0, 5104, 4879, 1, 0, 0, 0, 5104, 4886, 1, 0, 0, 0, 5104, 4893, 1, 0, 0, 0, 5104, 4897, 1, 0, 0, 0, 5104, 4901, 1, 0, 0, 0, 5104, 4909, 1, 0, 0, 0, 5104, 4914, 1, 0, 0, 0, 5104, 4917, 1, 0, 0, 0, 5104, 4927, 1, 0, 0, 0, 5104, 4930, 1, 0, 0, 0, 5104, 4933, 1, 0, 0, 0, 5104, 4937, 1, 0, 0, 0, 5104, 4942, 1, 0, 0, 0, 5104, 4947, 1, 0, 0, 0, 5104, 4952, 1, 0, 0, 0, 5104, 4962, 1, 0, 0, 0, 5104, 4972, 1, 0, 0, 0, 5104, 4982, 1, 0, 0, 0, 5104, 4992, 1, 0, 0, 0, 5104, 5002, 1, 0, 0, 0, 5104, 5004, 1, 0, 0, 0, 5104, 5011, 1, 0, 0, 0, 5104, 5014, 1, 0, 0, 0, 5104, 5021, 1, 0, 0, 0, 5104, 5037, 1, 0, 0, 0, 5104, 5048, 1, 0, 0, 0, 5104, 5059, 1, 0, 0, 0, 5104, 5069, 1, 0, 0, 0, 5104, 5071, 1, 0, 0, 0, 5104, 5073, 1, 0, 0, 0, 5104, 5083, 1, 0, 0, 0, 5104, 5093, 1, 0, 0, 0, 5105, 563, 1, 0, 0, 0, 5106, 5107, 5, 72, 0, 0, 5107, 5112, 3, 568, 284, 0, 5108, 5109, 5, 285, 0, 0, 5109, 5111, 3, 568, 284, 0, 5110, 5108, 1, 0, 0, 0, 5111, 5114, 1, 0, 0, 0, 5112, 5110, 1, 0, 0, 0, 5112, 5113, 1, 0, 0, 0, 5113, 5120, 1, 0, 0, 0, 5114, 5112, 1, 0, 0, 0, 5115, 5118, 5, 289, 0, 0, 5116, 5119, 3, 708, 354, 0, 5117, 5119, 5, 515, 0, 0, 5118, 5116, 1, 0, 0, 0, 5118, 5117, 1, 0, 0, 0, 5119, 5121, 1, 0, 0, 0, 5120, 5115, 1, 0, 0, 0, 5120, 5121, 1, 0, 0, 0, 5121, 5128, 1, 0, 0, 0, 5122, 5125, 5, 289, 0, 0, 5123, 5126, 3, 708, 354, 0, 5124, 5126, 5, 515, 0, 0, 5125, 5123, 1, 0, 0, 0, 5125, 5124, 1, 0, 0, 0, 5126, 5128, 1, 0, 0, 0, 5127, 5106, 1, 0, 0, 0, 5127, 5122, 1, 0, 0, 0, 5128, 565, 1, 0, 0, 0, 5129, 5130, 7, 32, 0, 0, 5130, 567, 1, 0, 0, 0, 5131, 5132, 5, 435, 0, 0, 5132, 5133, 7, 33, 0, 0, 5133, 5138, 5, 511, 0, 0, 5134, 5135, 5, 515, 0, 0, 5135, 5136, 7, 33, 0, 0, 5136, 5138, 5, 511, 0, 0, 5137, 5131, 1, 0, 0, 0, 5137, 5134, 1, 0, 0, 0, 5138, 569, 1, 0, 0, 0, 5139, 5140, 5, 511, 0, 0, 5140, 5141, 5, 484, 0, 0, 5141, 5142, 3, 572, 286, 0, 5142, 571, 1, 0, 0, 0, 5143, 5148, 5, 511, 0, 0, 5144, 5148, 5, 513, 0, 0, 5145, 5148, 3, 716, 358, 0, 5146, 5148, 5, 288, 0, 0, 5147, 5143, 1, 0, 0, 0, 5147, 5144, 1, 0, 0, 0, 5147, 5145, 1, 0, 0, 0, 5147, 5146, 1, 0, 0, 0, 5148, 573, 1, 0, 0, 0, 5149, 5150, 5, 66, 0, 0, 5150, 5151, 5, 344, 0, 0, 5151, 5152, 5, 23, 0, 0, 5152, 5155, 3, 708, 354, 0, 5153, 5154, 5, 430, 0, 0, 5154, 5156, 5, 515, 0, 0, 5155, 5153, 1, 0, 0, 0, 5155, 5156, 1, 0, 0, 0, 5156, 5301, 1, 0, 0, 0, 5157, 5158, 5, 66, 0, 0, 5158, 5159, 5, 344, 0, 0, 5159, 5160, 5, 116, 0, 0, 5160, 5163, 3, 708, 354, 0, 5161, 5162, 5, 430, 0, 0, 5162, 5164, 5, 515, 0, 0, 5163, 5161, 1, 0, 0, 0, 5163, 5164, 1, 0, 0, 0, 5164, 5301, 1, 0, 0, 0, 5165, 5166, 5, 66, 0, 0, 5166, 5167, 5, 344, 0, 0, 5167, 5168, 5, 402, 0, 0, 5168, 5301, 3, 708, 354, 0, 5169, 5170, 5, 66, 0, 0, 5170, 5171, 5, 23, 0, 0, 5171, 5301, 3, 708, 354, 0, 5172, 5173, 5, 66, 0, 0, 5173, 5174, 5, 27, 0, 0, 5174, 5301, 3, 708, 354, 0, 5175, 5176, 5, 66, 0, 0, 5176, 5177, 5, 30, 0, 0, 5177, 5301, 3, 708, 354, 0, 5178, 5179, 5, 66, 0, 0, 5179, 5180, 5, 31, 0, 0, 5180, 5301, 3, 708, 354, 0, 5181, 5182, 5, 66, 0, 0, 5182, 5183, 5, 32, 0, 0, 5183, 5301, 3, 708, 354, 0, 5184, 5185, 5, 66, 0, 0, 5185, 5186, 5, 33, 0, 0, 5186, 5301, 3, 708, 354, 0, 5187, 5188, 5, 66, 0, 0, 5188, 5189, 5, 34, 0, 0, 5189, 5301, 3, 708, 354, 0, 5190, 5191, 5, 66, 0, 0, 5191, 5192, 5, 35, 0, 0, 5192, 5301, 3, 708, 354, 0, 5193, 5194, 5, 66, 0, 0, 5194, 5195, 5, 28, 0, 0, 5195, 5301, 3, 708, 354, 0, 5196, 5197, 5, 66, 0, 0, 5197, 5198, 5, 37, 0, 0, 5198, 5301, 3, 708, 354, 0, 5199, 5200, 5, 66, 0, 0, 5200, 5201, 5, 114, 0, 0, 5201, 5202, 5, 116, 0, 0, 5202, 5301, 3, 708, 354, 0, 5203, 5204, 5, 66, 0, 0, 5204, 5205, 5, 115, 0, 0, 5205, 5206, 5, 116, 0, 0, 5206, 5301, 3, 708, 354, 0, 5207, 5208, 5, 66, 0, 0, 5208, 5209, 5, 29, 0, 0, 5209, 5212, 5, 515, 0, 0, 5210, 5211, 5, 139, 0, 0, 5211, 5213, 5, 85, 0, 0, 5212, 5210, 1, 0, 0, 0, 5212, 5213, 1, 0, 0, 0, 5213, 5301, 1, 0, 0, 0, 5214, 5215, 5, 66, 0, 0, 5215, 5216, 5, 29, 0, 0, 5216, 5217, 5, 443, 0, 0, 5217, 5301, 3, 708, 354, 0, 5218, 5219, 5, 66, 0, 0, 5219, 5220, 5, 455, 0, 0, 5220, 5221, 5, 443, 0, 0, 5221, 5301, 5, 511, 0, 0, 5222, 5223, 5, 66, 0, 0, 5223, 5224, 5, 450, 0, 0, 5224, 5225, 5, 455, 0, 0, 5225, 5301, 5, 511, 0, 0, 5226, 5227, 5, 66, 0, 0, 5227, 5228, 5, 314, 0, 0, 5228, 5229, 5, 339, 0, 0, 5229, 5301, 3, 708, 354, 0, 5230, 5231, 5, 66, 0, 0, 5231, 5232, 5, 314, 0, 0, 5232, 5233, 5, 312, 0, 0, 5233, 5301, 3, 708, 354, 0, 5234, 5235, 5, 66, 0, 0, 5235, 5236, 5, 26, 0, 0, 5236, 5237, 5, 23, 0, 0, 5237, 5301, 3, 708, 354, 0, 5238, 5239, 5, 66, 0, 0, 5239, 5242, 5, 371, 0, 0, 5240, 5243, 3, 708, 354, 0, 5241, 5243, 5, 515, 0, 0, 5242, 5240, 1, 0, 0, 0, 5242, 5241, 1, 0, 0, 0, 5242, 5243, 1, 0, 0, 0, 5243, 5301, 1, 0, 0, 0, 5244, 5245, 5, 66, 0, 0, 5245, 5246, 5, 213, 0, 0, 5246, 5247, 5, 93, 0, 0, 5247, 5248, 7, 1, 0, 0, 5248, 5251, 3, 708, 354, 0, 5249, 5250, 5, 186, 0, 0, 5250, 5252, 5, 515, 0, 0, 5251, 5249, 1, 0, 0, 0, 5251, 5252, 1, 0, 0, 0, 5252, 5301, 1, 0, 0, 0, 5253, 5254, 5, 66, 0, 0, 5254, 5255, 5, 406, 0, 0, 5255, 5256, 5, 496, 0, 0, 5256, 5301, 3, 580, 290, 0, 5257, 5258, 5, 66, 0, 0, 5258, 5259, 5, 437, 0, 0, 5259, 5260, 5, 438, 0, 0, 5260, 5261, 5, 312, 0, 0, 5261, 5301, 3, 708, 354, 0, 5262, 5263, 5, 66, 0, 0, 5263, 5264, 5, 353, 0, 0, 5264, 5265, 5, 352, 0, 0, 5265, 5301, 3, 708, 354, 0, 5266, 5267, 5, 66, 0, 0, 5267, 5301, 5, 440, 0, 0, 5268, 5269, 5, 66, 0, 0, 5269, 5270, 5, 387, 0, 0, 5270, 5271, 5, 71, 0, 0, 5271, 5272, 5, 33, 0, 0, 5272, 5273, 3, 708, 354, 0, 5273, 5274, 5, 186, 0, 0, 5274, 5275, 3, 710, 355, 0, 5275, 5301, 1, 0, 0, 0, 5276, 5277, 5, 66, 0, 0, 5277, 5278, 5, 387, 0, 0, 5278, 5279, 5, 71, 0, 0, 5279, 5280, 5, 34, 0, 0, 5280, 5281, 3, 708, 354, 0, 5281, 5282, 5, 186, 0, 0, 5282, 5283, 3, 710, 355, 0, 5283, 5301, 1, 0, 0, 0, 5284, 5285, 5, 66, 0, 0, 5285, 5286, 5, 226, 0, 0, 5286, 5287, 5, 227, 0, 0, 5287, 5301, 3, 708, 354, 0, 5288, 5289, 5, 66, 0, 0, 5289, 5290, 5, 311, 0, 0, 5290, 5291, 5, 339, 0, 0, 5291, 5301, 3, 708, 354, 0, 5292, 5293, 5, 66, 0, 0, 5293, 5294, 5, 342, 0, 0, 5294, 5295, 5, 311, 0, 0, 5295, 5296, 5, 312, 0, 0, 5296, 5301, 3, 708, 354, 0, 5297, 5298, 5, 66, 0, 0, 5298, 5299, 5, 387, 0, 0, 5299, 5301, 3, 710, 355, 0, 5300, 5149, 1, 0, 0, 0, 5300, 5157, 1, 0, 0, 0, 5300, 5165, 1, 0, 0, 0, 5300, 5169, 1, 0, 0, 0, 5300, 5172, 1, 0, 0, 0, 5300, 5175, 1, 0, 0, 0, 5300, 5178, 1, 0, 0, 0, 5300, 5181, 1, 0, 0, 0, 5300, 5184, 1, 0, 0, 0, 5300, 5187, 1, 0, 0, 0, 5300, 5190, 1, 0, 0, 0, 5300, 5193, 1, 0, 0, 0, 5300, 5196, 1, 0, 0, 0, 5300, 5199, 1, 0, 0, 0, 5300, 5203, 1, 0, 0, 0, 5300, 5207, 1, 0, 0, 0, 5300, 5214, 1, 0, 0, 0, 5300, 5218, 1, 0, 0, 0, 5300, 5222, 1, 0, 0, 0, 5300, 5226, 1, 0, 0, 0, 5300, 5230, 1, 0, 0, 0, 5300, 5234, 1, 0, 0, 0, 5300, 5238, 1, 0, 0, 0, 5300, 5244, 1, 0, 0, 0, 5300, 5253, 1, 0, 0, 0, 5300, 5257, 1, 0, 0, 0, 5300, 5262, 1, 0, 0, 0, 5300, 5266, 1, 0, 0, 0, 5300, 5268, 1, 0, 0, 0, 5300, 5276, 1, 0, 0, 0, 5300, 5284, 1, 0, 0, 0, 5300, 5288, 1, 0, 0, 0, 5300, 5292, 1, 0, 0, 0, 5300, 5297, 1, 0, 0, 0, 5301, 575, 1, 0, 0, 0, 5302, 5304, 5, 70, 0, 0, 5303, 5305, 7, 34, 0, 0, 5304, 5303, 1, 0, 0, 0, 5304, 5305, 1, 0, 0, 0, 5305, 5306, 1, 0, 0, 0, 5306, 5307, 3, 588, 294, 0, 5307, 5308, 5, 71, 0, 0, 5308, 5309, 5, 406, 0, 0, 5309, 5310, 5, 496, 0, 0, 5310, 5315, 3, 580, 290, 0, 5311, 5313, 5, 76, 0, 0, 5312, 5311, 1, 0, 0, 0, 5312, 5313, 1, 0, 0, 0, 5313, 5314, 1, 0, 0, 0, 5314, 5316, 5, 515, 0, 0, 5315, 5312, 1, 0, 0, 0, 5315, 5316, 1, 0, 0, 0, 5316, 5320, 1, 0, 0, 0, 5317, 5319, 3, 578, 289, 0, 5318, 5317, 1, 0, 0, 0, 5319, 5322, 1, 0, 0, 0, 5320, 5318, 1, 0, 0, 0, 5320, 5321, 1, 0, 0, 0, 5321, 5325, 1, 0, 0, 0, 5322, 5320, 1, 0, 0, 0, 5323, 5324, 5, 72, 0, 0, 5324, 5326, 3, 668, 334, 0, 5325, 5323, 1, 0, 0, 0, 5325, 5326, 1, 0, 0, 0, 5326, 5333, 1, 0, 0, 0, 5327, 5328, 5, 8, 0, 0, 5328, 5331, 3, 616, 308, 0, 5329, 5330, 5, 73, 0, 0, 5330, 5332, 3, 668, 334, 0, 5331, 5329, 1, 0, 0, 0, 5331, 5332, 1, 0, 0, 0, 5332, 5334, 1, 0, 0, 0, 5333, 5327, 1, 0, 0, 0, 5333, 5334, 1, 0, 0, 0, 5334, 5337, 1, 0, 0, 0, 5335, 5336, 5, 9, 0, 0, 5336, 5338, 3, 612, 306, 0, 5337, 5335, 1, 0, 0, 0, 5337, 5338, 1, 0, 0, 0, 5338, 5341, 1, 0, 0, 0, 5339, 5340, 5, 75, 0, 0, 5340, 5342, 5, 513, 0, 0, 5341, 5339, 1, 0, 0, 0, 5341, 5342, 1, 0, 0, 0, 5342, 5345, 1, 0, 0, 0, 5343, 5344, 5, 74, 0, 0, 5344, 5346, 5, 513, 0, 0, 5345, 5343, 1, 0, 0, 0, 5345, 5346, 1, 0, 0, 0, 5346, 577, 1, 0, 0, 0, 5347, 5349, 3, 602, 301, 0, 5348, 5347, 1, 0, 0, 0, 5348, 5349, 1, 0, 0, 0, 5349, 5350, 1, 0, 0, 0, 5350, 5351, 5, 86, 0, 0, 5351, 5352, 5, 406, 0, 0, 5352, 5353, 5, 496, 0, 0, 5353, 5358, 3, 580, 290, 0, 5354, 5356, 5, 76, 0, 0, 5355, 5354, 1, 0, 0, 0, 5355, 5356, 1, 0, 0, 0, 5356, 5357, 1, 0, 0, 0, 5357, 5359, 5, 515, 0, 0, 5358, 5355, 1, 0, 0, 0, 5358, 5359, 1, 0, 0, 0, 5359, 5362, 1, 0, 0, 0, 5360, 5361, 5, 93, 0, 0, 5361, 5363, 3, 668, 334, 0, 5362, 5360, 1, 0, 0, 0, 5362, 5363, 1, 0, 0, 0, 5363, 579, 1, 0, 0, 0, 5364, 5365, 7, 35, 0, 0, 5365, 581, 1, 0, 0, 0, 5366, 5374, 3, 584, 292, 0, 5367, 5369, 5, 125, 0, 0, 5368, 5370, 5, 85, 0, 0, 5369, 5368, 1, 0, 0, 0, 5369, 5370, 1, 0, 0, 0, 5370, 5371, 1, 0, 0, 0, 5371, 5373, 3, 584, 292, 0, 5372, 5367, 1, 0, 0, 0, 5373, 5376, 1, 0, 0, 0, 5374, 5372, 1, 0, 0, 0, 5374, 5375, 1, 0, 0, 0, 5375, 583, 1, 0, 0, 0, 5376, 5374, 1, 0, 0, 0, 5377, 5379, 3, 586, 293, 0, 5378, 5380, 3, 594, 297, 0, 5379, 5378, 1, 0, 0, 0, 5379, 5380, 1, 0, 0, 0, 5380, 5382, 1, 0, 0, 0, 5381, 5383, 3, 604, 302, 0, 5382, 5381, 1, 0, 0, 0, 5382, 5383, 1, 0, 0, 0, 5383, 5385, 1, 0, 0, 0, 5384, 5386, 3, 606, 303, 0, 5385, 5384, 1, 0, 0, 0, 5385, 5386, 1, 0, 0, 0, 5386, 5388, 1, 0, 0, 0, 5387, 5389, 3, 608, 304, 0, 5388, 5387, 1, 0, 0, 0, 5388, 5389, 1, 0, 0, 0, 5389, 5391, 1, 0, 0, 0, 5390, 5392, 3, 610, 305, 0, 5391, 5390, 1, 0, 0, 0, 5391, 5392, 1, 0, 0, 0, 5392, 5394, 1, 0, 0, 0, 5393, 5395, 3, 618, 309, 0, 5394, 5393, 1, 0, 0, 0, 5394, 5395, 1, 0, 0, 0, 5395, 5414, 1, 0, 0, 0, 5396, 5398, 3, 594, 297, 0, 5397, 5399, 3, 604, 302, 0, 5398, 5397, 1, 0, 0, 0, 5398, 5399, 1, 0, 0, 0, 5399, 5401, 1, 0, 0, 0, 5400, 5402, 3, 606, 303, 0, 5401, 5400, 1, 0, 0, 0, 5401, 5402, 1, 0, 0, 0, 5402, 5404, 1, 0, 0, 0, 5403, 5405, 3, 608, 304, 0, 5404, 5403, 1, 0, 0, 0, 5404, 5405, 1, 0, 0, 0, 5405, 5406, 1, 0, 0, 0, 5406, 5408, 3, 586, 293, 0, 5407, 5409, 3, 610, 305, 0, 5408, 5407, 1, 0, 0, 0, 5408, 5409, 1, 0, 0, 0, 5409, 5411, 1, 0, 0, 0, 5410, 5412, 3, 618, 309, 0, 5411, 5410, 1, 0, 0, 0, 5411, 5412, 1, 0, 0, 0, 5412, 5414, 1, 0, 0, 0, 5413, 5377, 1, 0, 0, 0, 5413, 5396, 1, 0, 0, 0, 5414, 585, 1, 0, 0, 0, 5415, 5417, 5, 70, 0, 0, 5416, 5418, 7, 34, 0, 0, 5417, 5416, 1, 0, 0, 0, 5417, 5418, 1, 0, 0, 0, 5418, 5419, 1, 0, 0, 0, 5419, 5420, 3, 588, 294, 0, 5420, 587, 1, 0, 0, 0, 5421, 5431, 5, 489, 0, 0, 5422, 5427, 3, 590, 295, 0, 5423, 5424, 5, 495, 0, 0, 5424, 5426, 3, 590, 295, 0, 5425, 5423, 1, 0, 0, 0, 5426, 5429, 1, 0, 0, 0, 5427, 5425, 1, 0, 0, 0, 5427, 5428, 1, 0, 0, 0, 5428, 5431, 1, 0, 0, 0, 5429, 5427, 1, 0, 0, 0, 5430, 5421, 1, 0, 0, 0, 5430, 5422, 1, 0, 0, 0, 5431, 589, 1, 0, 0, 0, 5432, 5435, 3, 668, 334, 0, 5433, 5434, 5, 76, 0, 0, 5434, 5436, 3, 592, 296, 0, 5435, 5433, 1, 0, 0, 0, 5435, 5436, 1, 0, 0, 0, 5436, 5443, 1, 0, 0, 0, 5437, 5440, 3, 696, 348, 0, 5438, 5439, 5, 76, 0, 0, 5439, 5441, 3, 592, 296, 0, 5440, 5438, 1, 0, 0, 0, 5440, 5441, 1, 0, 0, 0, 5441, 5443, 1, 0, 0, 0, 5442, 5432, 1, 0, 0, 0, 5442, 5437, 1, 0, 0, 0, 5443, 591, 1, 0, 0, 0, 5444, 5447, 5, 515, 0, 0, 5445, 5447, 3, 730, 365, 0, 5446, 5444, 1, 0, 0, 0, 5446, 5445, 1, 0, 0, 0, 5447, 593, 1, 0, 0, 0, 5448, 5449, 5, 71, 0, 0, 5449, 5453, 3, 596, 298, 0, 5450, 5452, 3, 598, 299, 0, 5451, 5450, 1, 0, 0, 0, 5452, 5455, 1, 0, 0, 0, 5453, 5451, 1, 0, 0, 0, 5453, 5454, 1, 0, 0, 0, 5454, 595, 1, 0, 0, 0, 5455, 5453, 1, 0, 0, 0, 5456, 5461, 3, 708, 354, 0, 5457, 5459, 5, 76, 0, 0, 5458, 5457, 1, 0, 0, 0, 5458, 5459, 1, 0, 0, 0, 5459, 5460, 1, 0, 0, 0, 5460, 5462, 5, 515, 0, 0, 5461, 5458, 1, 0, 0, 0, 5461, 5462, 1, 0, 0, 0, 5462, 5473, 1, 0, 0, 0, 5463, 5464, 5, 497, 0, 0, 5464, 5465, 3, 582, 291, 0, 5465, 5470, 5, 498, 0, 0, 5466, 5468, 5, 76, 0, 0, 5467, 5466, 1, 0, 0, 0, 5467, 5468, 1, 0, 0, 0, 5468, 5469, 1, 0, 0, 0, 5469, 5471, 5, 515, 0, 0, 5470, 5467, 1, 0, 0, 0, 5470, 5471, 1, 0, 0, 0, 5471, 5473, 1, 0, 0, 0, 5472, 5456, 1, 0, 0, 0, 5472, 5463, 1, 0, 0, 0, 5473, 597, 1, 0, 0, 0, 5474, 5476, 3, 602, 301, 0, 5475, 5474, 1, 0, 0, 0, 5475, 5476, 1, 0, 0, 0, 5476, 5477, 1, 0, 0, 0, 5477, 5478, 5, 86, 0, 0, 5478, 5481, 3, 596, 298, 0, 5479, 5480, 5, 93, 0, 0, 5480, 5482, 3, 668, 334, 0, 5481, 5479, 1, 0, 0, 0, 5481, 5482, 1, 0, 0, 0, 5482, 5495, 1, 0, 0, 0, 5483, 5485, 3, 602, 301, 0, 5484, 5483, 1, 0, 0, 0, 5484, 5485, 1, 0, 0, 0, 5485, 5486, 1, 0, 0, 0, 5486, 5487, 5, 86, 0, 0, 5487, 5492, 3, 600, 300, 0, 5488, 5490, 5, 76, 0, 0, 5489, 5488, 1, 0, 0, 0, 5489, 5490, 1, 0, 0, 0, 5490, 5491, 1, 0, 0, 0, 5491, 5493, 5, 515, 0, 0, 5492, 5489, 1, 0, 0, 0, 5492, 5493, 1, 0, 0, 0, 5493, 5495, 1, 0, 0, 0, 5494, 5475, 1, 0, 0, 0, 5494, 5484, 1, 0, 0, 0, 5495, 599, 1, 0, 0, 0, 5496, 5497, 5, 515, 0, 0, 5497, 5498, 5, 490, 0, 0, 5498, 5499, 3, 708, 354, 0, 5499, 5500, 5, 490, 0, 0, 5500, 5501, 3, 708, 354, 0, 5501, 5507, 1, 0, 0, 0, 5502, 5503, 3, 708, 354, 0, 5503, 5504, 5, 490, 0, 0, 5504, 5505, 3, 708, 354, 0, 5505, 5507, 1, 0, 0, 0, 5506, 5496, 1, 0, 0, 0, 5506, 5502, 1, 0, 0, 0, 5507, 601, 1, 0, 0, 0, 5508, 5510, 5, 87, 0, 0, 5509, 5511, 5, 90, 0, 0, 5510, 5509, 1, 0, 0, 0, 5510, 5511, 1, 0, 0, 0, 5511, 5523, 1, 0, 0, 0, 5512, 5514, 5, 88, 0, 0, 5513, 5515, 5, 90, 0, 0, 5514, 5513, 1, 0, 0, 0, 5514, 5515, 1, 0, 0, 0, 5515, 5523, 1, 0, 0, 0, 5516, 5523, 5, 89, 0, 0, 5517, 5519, 5, 91, 0, 0, 5518, 5520, 5, 90, 0, 0, 5519, 5518, 1, 0, 0, 0, 5519, 5520, 1, 0, 0, 0, 5520, 5523, 1, 0, 0, 0, 5521, 5523, 5, 92, 0, 0, 5522, 5508, 1, 0, 0, 0, 5522, 5512, 1, 0, 0, 0, 5522, 5516, 1, 0, 0, 0, 5522, 5517, 1, 0, 0, 0, 5522, 5521, 1, 0, 0, 0, 5523, 603, 1, 0, 0, 0, 5524, 5525, 5, 72, 0, 0, 5525, 5526, 3, 668, 334, 0, 5526, 605, 1, 0, 0, 0, 5527, 5528, 5, 8, 0, 0, 5528, 5529, 3, 706, 353, 0, 5529, 607, 1, 0, 0, 0, 5530, 5531, 5, 73, 0, 0, 5531, 5532, 3, 668, 334, 0, 5532, 609, 1, 0, 0, 0, 5533, 5534, 5, 9, 0, 0, 5534, 5535, 3, 612, 306, 0, 5535, 611, 1, 0, 0, 0, 5536, 5541, 3, 614, 307, 0, 5537, 5538, 5, 495, 0, 0, 5538, 5540, 3, 614, 307, 0, 5539, 5537, 1, 0, 0, 0, 5540, 5543, 1, 0, 0, 0, 5541, 5539, 1, 0, 0, 0, 5541, 5542, 1, 0, 0, 0, 5542, 613, 1, 0, 0, 0, 5543, 5541, 1, 0, 0, 0, 5544, 5546, 3, 668, 334, 0, 5545, 5547, 7, 6, 0, 0, 5546, 5545, 1, 0, 0, 0, 5546, 5547, 1, 0, 0, 0, 5547, 615, 1, 0, 0, 0, 5548, 5553, 3, 668, 334, 0, 5549, 5550, 5, 495, 0, 0, 5550, 5552, 3, 668, 334, 0, 5551, 5549, 1, 0, 0, 0, 5552, 5555, 1, 0, 0, 0, 5553, 5551, 1, 0, 0, 0, 5553, 5554, 1, 0, 0, 0, 5554, 617, 1, 0, 0, 0, 5555, 5553, 1, 0, 0, 0, 5556, 5557, 5, 75, 0, 0, 5557, 5560, 5, 513, 0, 0, 5558, 5559, 5, 74, 0, 0, 5559, 5561, 5, 513, 0, 0, 5560, 5558, 1, 0, 0, 0, 5560, 5561, 1, 0, 0, 0, 5561, 5569, 1, 0, 0, 0, 5562, 5563, 5, 74, 0, 0, 5563, 5566, 5, 513, 0, 0, 5564, 5565, 5, 75, 0, 0, 5565, 5567, 5, 513, 0, 0, 5566, 5564, 1, 0, 0, 0, 5566, 5567, 1, 0, 0, 0, 5567, 5569, 1, 0, 0, 0, 5568, 5556, 1, 0, 0, 0, 5568, 5562, 1, 0, 0, 0, 5569, 619, 1, 0, 0, 0, 5570, 5587, 3, 624, 312, 0, 5571, 5587, 3, 626, 313, 0, 5572, 5587, 3, 628, 314, 0, 5573, 5587, 3, 630, 315, 0, 5574, 5587, 3, 632, 316, 0, 5575, 5587, 3, 634, 317, 0, 5576, 5587, 3, 636, 318, 0, 5577, 5587, 3, 638, 319, 0, 5578, 5587, 3, 622, 311, 0, 5579, 5587, 3, 644, 322, 0, 5580, 5587, 3, 650, 325, 0, 5581, 5587, 3, 652, 326, 0, 5582, 5587, 3, 666, 333, 0, 5583, 5587, 3, 654, 327, 0, 5584, 5587, 3, 658, 329, 0, 5585, 5587, 3, 664, 332, 0, 5586, 5570, 1, 0, 0, 0, 5586, 5571, 1, 0, 0, 0, 5586, 5572, 1, 0, 0, 0, 5586, 5573, 1, 0, 0, 0, 5586, 5574, 1, 0, 0, 0, 5586, 5575, 1, 0, 0, 0, 5586, 5576, 1, 0, 0, 0, 5586, 5577, 1, 0, 0, 0, 5586, 5578, 1, 0, 0, 0, 5586, 5579, 1, 0, 0, 0, 5586, 5580, 1, 0, 0, 0, 5586, 5581, 1, 0, 0, 0, 5586, 5582, 1, 0, 0, 0, 5586, 5583, 1, 0, 0, 0, 5586, 5584, 1, 0, 0, 0, 5586, 5585, 1, 0, 0, 0, 5587, 621, 1, 0, 0, 0, 5588, 5589, 5, 158, 0, 0, 5589, 5590, 5, 511, 0, 0, 5590, 623, 1, 0, 0, 0, 5591, 5592, 5, 56, 0, 0, 5592, 5593, 5, 423, 0, 0, 5593, 5594, 5, 59, 0, 0, 5594, 5597, 5, 511, 0, 0, 5595, 5596, 5, 61, 0, 0, 5596, 5598, 5, 511, 0, 0, 5597, 5595, 1, 0, 0, 0, 5597, 5598, 1, 0, 0, 0, 5598, 5599, 1, 0, 0, 0, 5599, 5600, 5, 62, 0, 0, 5600, 5615, 5, 511, 0, 0, 5601, 5602, 5, 56, 0, 0, 5602, 5603, 5, 58, 0, 0, 5603, 5615, 5, 511, 0, 0, 5604, 5605, 5, 56, 0, 0, 5605, 5606, 5, 60, 0, 0, 5606, 5607, 5, 63, 0, 0, 5607, 5608, 5, 511, 0, 0, 5608, 5609, 5, 64, 0, 0, 5609, 5612, 5, 513, 0, 0, 5610, 5611, 5, 62, 0, 0, 5611, 5613, 5, 511, 0, 0, 5612, 5610, 1, 0, 0, 0, 5612, 5613, 1, 0, 0, 0, 5613, 5615, 1, 0, 0, 0, 5614, 5591, 1, 0, 0, 0, 5614, 5601, 1, 0, 0, 0, 5614, 5604, 1, 0, 0, 0, 5615, 625, 1, 0, 0, 0, 5616, 5617, 5, 57, 0, 0, 5617, 627, 1, 0, 0, 0, 5618, 5635, 5, 392, 0, 0, 5619, 5620, 5, 393, 0, 0, 5620, 5622, 5, 406, 0, 0, 5621, 5623, 5, 91, 0, 0, 5622, 5621, 1, 0, 0, 0, 5622, 5623, 1, 0, 0, 0, 5623, 5625, 1, 0, 0, 0, 5624, 5626, 5, 192, 0, 0, 5625, 5624, 1, 0, 0, 0, 5625, 5626, 1, 0, 0, 0, 5626, 5628, 1, 0, 0, 0, 5627, 5629, 5, 407, 0, 0, 5628, 5627, 1, 0, 0, 0, 5628, 5629, 1, 0, 0, 0, 5629, 5631, 1, 0, 0, 0, 5630, 5632, 5, 408, 0, 0, 5631, 5630, 1, 0, 0, 0, 5631, 5632, 1, 0, 0, 0, 5632, 5635, 1, 0, 0, 0, 5633, 5635, 5, 393, 0, 0, 5634, 5618, 1, 0, 0, 0, 5634, 5619, 1, 0, 0, 0, 5634, 5633, 1, 0, 0, 0, 5635, 629, 1, 0, 0, 0, 5636, 5637, 5, 394, 0, 0, 5637, 631, 1, 0, 0, 0, 5638, 5639, 5, 395, 0, 0, 5639, 633, 1, 0, 0, 0, 5640, 5641, 5, 396, 0, 0, 5641, 5642, 5, 397, 0, 0, 5642, 5643, 5, 511, 0, 0, 5643, 635, 1, 0, 0, 0, 5644, 5645, 5, 396, 0, 0, 5645, 5646, 5, 60, 0, 0, 5646, 5647, 5, 511, 0, 0, 5647, 637, 1, 0, 0, 0, 5648, 5650, 5, 398, 0, 0, 5649, 5651, 3, 640, 320, 0, 5650, 5649, 1, 0, 0, 0, 5650, 5651, 1, 0, 0, 0, 5651, 5654, 1, 0, 0, 0, 5652, 5653, 5, 430, 0, 0, 5653, 5655, 3, 642, 321, 0, 5654, 5652, 1, 0, 0, 0, 5654, 5655, 1, 0, 0, 0, 5655, 5660, 1, 0, 0, 0, 5656, 5657, 5, 65, 0, 0, 5657, 5658, 5, 398, 0, 0, 5658, 5660, 5, 399, 0, 0, 5659, 5648, 1, 0, 0, 0, 5659, 5656, 1, 0, 0, 0, 5660, 639, 1, 0, 0, 0, 5661, 5662, 3, 708, 354, 0, 5662, 5663, 5, 496, 0, 0, 5663, 5664, 5, 489, 0, 0, 5664, 5668, 1, 0, 0, 0, 5665, 5668, 3, 708, 354, 0, 5666, 5668, 5, 489, 0, 0, 5667, 5661, 1, 0, 0, 0, 5667, 5665, 1, 0, 0, 0, 5667, 5666, 1, 0, 0, 0, 5668, 641, 1, 0, 0, 0, 5669, 5670, 7, 36, 0, 0, 5670, 643, 1, 0, 0, 0, 5671, 5672, 5, 67, 0, 0, 5672, 5676, 3, 646, 323, 0, 5673, 5674, 5, 67, 0, 0, 5674, 5676, 5, 85, 0, 0, 5675, 5671, 1, 0, 0, 0, 5675, 5673, 1, 0, 0, 0, 5676, 645, 1, 0, 0, 0, 5677, 5682, 3, 648, 324, 0, 5678, 5679, 5, 495, 0, 0, 5679, 5681, 3, 648, 324, 0, 5680, 5678, 1, 0, 0, 0, 5681, 5684, 1, 0, 0, 0, 5682, 5680, 1, 0, 0, 0, 5682, 5683, 1, 0, 0, 0, 5683, 647, 1, 0, 0, 0, 5684, 5682, 1, 0, 0, 0, 5685, 5686, 7, 37, 0, 0, 5686, 649, 1, 0, 0, 0, 5687, 5688, 5, 68, 0, 0, 5688, 5689, 5, 338, 0, 0, 5689, 651, 1, 0, 0, 0, 5690, 5691, 5, 69, 0, 0, 5691, 5692, 5, 511, 0, 0, 5692, 653, 1, 0, 0, 0, 5693, 5694, 5, 431, 0, 0, 5694, 5695, 5, 56, 0, 0, 5695, 5696, 5, 515, 0, 0, 5696, 5697, 5, 511, 0, 0, 5697, 5698, 5, 76, 0, 0, 5698, 5753, 5, 515, 0, 0, 5699, 5700, 5, 431, 0, 0, 5700, 5701, 5, 57, 0, 0, 5701, 5753, 5, 515, 0, 0, 5702, 5703, 5, 431, 0, 0, 5703, 5753, 5, 385, 0, 0, 5704, 5705, 5, 431, 0, 0, 5705, 5706, 5, 515, 0, 0, 5706, 5707, 5, 65, 0, 0, 5707, 5753, 5, 515, 0, 0, 5708, 5709, 5, 431, 0, 0, 5709, 5710, 5, 515, 0, 0, 5710, 5711, 5, 66, 0, 0, 5711, 5753, 5, 515, 0, 0, 5712, 5713, 5, 431, 0, 0, 5713, 5714, 5, 515, 0, 0, 5714, 5715, 5, 362, 0, 0, 5715, 5716, 5, 363, 0, 0, 5716, 5717, 5, 358, 0, 0, 5717, 5730, 3, 710, 355, 0, 5718, 5719, 5, 365, 0, 0, 5719, 5720, 5, 497, 0, 0, 5720, 5725, 3, 710, 355, 0, 5721, 5722, 5, 495, 0, 0, 5722, 5724, 3, 710, 355, 0, 5723, 5721, 1, 0, 0, 0, 5724, 5727, 1, 0, 0, 0, 5725, 5723, 1, 0, 0, 0, 5725, 5726, 1, 0, 0, 0, 5726, 5728, 1, 0, 0, 0, 5727, 5725, 1, 0, 0, 0, 5728, 5729, 5, 498, 0, 0, 5729, 5731, 1, 0, 0, 0, 5730, 5718, 1, 0, 0, 0, 5730, 5731, 1, 0, 0, 0, 5731, 5744, 1, 0, 0, 0, 5732, 5733, 5, 366, 0, 0, 5733, 5734, 5, 497, 0, 0, 5734, 5739, 3, 710, 355, 0, 5735, 5736, 5, 495, 0, 0, 5736, 5738, 3, 710, 355, 0, 5737, 5735, 1, 0, 0, 0, 5738, 5741, 1, 0, 0, 0, 5739, 5737, 1, 0, 0, 0, 5739, 5740, 1, 0, 0, 0, 5740, 5742, 1, 0, 0, 0, 5741, 5739, 1, 0, 0, 0, 5742, 5743, 5, 498, 0, 0, 5743, 5745, 1, 0, 0, 0, 5744, 5732, 1, 0, 0, 0, 5744, 5745, 1, 0, 0, 0, 5745, 5747, 1, 0, 0, 0, 5746, 5748, 5, 364, 0, 0, 5747, 5746, 1, 0, 0, 0, 5747, 5748, 1, 0, 0, 0, 5748, 5753, 1, 0, 0, 0, 5749, 5750, 5, 431, 0, 0, 5750, 5751, 5, 515, 0, 0, 5751, 5753, 3, 656, 328, 0, 5752, 5693, 1, 0, 0, 0, 5752, 5699, 1, 0, 0, 0, 5752, 5702, 1, 0, 0, 0, 5752, 5704, 1, 0, 0, 0, 5752, 5708, 1, 0, 0, 0, 5752, 5712, 1, 0, 0, 0, 5752, 5749, 1, 0, 0, 0, 5753, 655, 1, 0, 0, 0, 5754, 5756, 8, 38, 0, 0, 5755, 5754, 1, 0, 0, 0, 5756, 5757, 1, 0, 0, 0, 5757, 5755, 1, 0, 0, 0, 5757, 5758, 1, 0, 0, 0, 5758, 657, 1, 0, 0, 0, 5759, 5760, 5, 357, 0, 0, 5760, 5761, 5, 71, 0, 0, 5761, 5762, 3, 710, 355, 0, 5762, 5763, 5, 354, 0, 0, 5763, 5764, 7, 25, 0, 0, 5764, 5765, 5, 358, 0, 0, 5765, 5766, 3, 708, 354, 0, 5766, 5767, 5, 355, 0, 0, 5767, 5768, 5, 497, 0, 0, 5768, 5773, 3, 660, 330, 0, 5769, 5770, 5, 495, 0, 0, 5770, 5772, 3, 660, 330, 0, 5771, 5769, 1, 0, 0, 0, 5772, 5775, 1, 0, 0, 0, 5773, 5771, 1, 0, 0, 0, 5773, 5774, 1, 0, 0, 0, 5774, 5776, 1, 0, 0, 0, 5775, 5773, 1, 0, 0, 0, 5776, 5789, 5, 498, 0, 0, 5777, 5778, 5, 360, 0, 0, 5778, 5779, 5, 497, 0, 0, 5779, 5784, 3, 662, 331, 0, 5780, 5781, 5, 495, 0, 0, 5781, 5783, 3, 662, 331, 0, 5782, 5780, 1, 0, 0, 0, 5783, 5786, 1, 0, 0, 0, 5784, 5782, 1, 0, 0, 0, 5784, 5785, 1, 0, 0, 0, 5785, 5787, 1, 0, 0, 0, 5786, 5784, 1, 0, 0, 0, 5787, 5788, 5, 498, 0, 0, 5788, 5790, 1, 0, 0, 0, 5789, 5777, 1, 0, 0, 0, 5789, 5790, 1, 0, 0, 0, 5790, 5793, 1, 0, 0, 0, 5791, 5792, 5, 359, 0, 0, 5792, 5794, 5, 513, 0, 0, 5793, 5791, 1, 0, 0, 0, 5793, 5794, 1, 0, 0, 0, 5794, 5797, 1, 0, 0, 0, 5795, 5796, 5, 75, 0, 0, 5796, 5798, 5, 513, 0, 0, 5797, 5795, 1, 0, 0, 0, 5797, 5798, 1, 0, 0, 0, 5798, 659, 1, 0, 0, 0, 5799, 5800, 3, 710, 355, 0, 5800, 5801, 5, 76, 0, 0, 5801, 5802, 3, 710, 355, 0, 5802, 661, 1, 0, 0, 0, 5803, 5804, 3, 710, 355, 0, 5804, 5805, 5, 423, 0, 0, 5805, 5806, 3, 710, 355, 0, 5806, 5807, 5, 93, 0, 0, 5807, 5808, 3, 710, 355, 0, 5808, 5814, 1, 0, 0, 0, 5809, 5810, 3, 710, 355, 0, 5810, 5811, 5, 423, 0, 0, 5811, 5812, 3, 710, 355, 0, 5812, 5814, 1, 0, 0, 0, 5813, 5803, 1, 0, 0, 0, 5813, 5809, 1, 0, 0, 0, 5814, 663, 1, 0, 0, 0, 5815, 5816, 5, 515, 0, 0, 5816, 665, 1, 0, 0, 0, 5817, 5818, 5, 386, 0, 0, 5818, 5819, 5, 387, 0, 0, 5819, 5820, 3, 710, 355, 0, 5820, 5821, 5, 76, 0, 0, 5821, 5822, 5, 499, 0, 0, 5822, 5823, 3, 390, 195, 0, 5823, 5824, 5, 500, 0, 0, 5824, 667, 1, 0, 0, 0, 5825, 5826, 3, 670, 335, 0, 5826, 669, 1, 0, 0, 0, 5827, 5832, 3, 672, 336, 0, 5828, 5829, 5, 286, 0, 0, 5829, 5831, 3, 672, 336, 0, 5830, 5828, 1, 0, 0, 0, 5831, 5834, 1, 0, 0, 0, 5832, 5830, 1, 0, 0, 0, 5832, 5833, 1, 0, 0, 0, 5833, 671, 1, 0, 0, 0, 5834, 5832, 1, 0, 0, 0, 5835, 5840, 3, 674, 337, 0, 5836, 5837, 5, 285, 0, 0, 5837, 5839, 3, 674, 337, 0, 5838, 5836, 1, 0, 0, 0, 5839, 5842, 1, 0, 0, 0, 5840, 5838, 1, 0, 0, 0, 5840, 5841, 1, 0, 0, 0, 5841, 673, 1, 0, 0, 0, 5842, 5840, 1, 0, 0, 0, 5843, 5845, 5, 287, 0, 0, 5844, 5843, 1, 0, 0, 0, 5844, 5845, 1, 0, 0, 0, 5845, 5846, 1, 0, 0, 0, 5846, 5847, 3, 676, 338, 0, 5847, 675, 1, 0, 0, 0, 5848, 5877, 3, 680, 340, 0, 5849, 5850, 3, 678, 339, 0, 5850, 5851, 3, 680, 340, 0, 5851, 5878, 1, 0, 0, 0, 5852, 5878, 5, 6, 0, 0, 5853, 5878, 5, 5, 0, 0, 5854, 5855, 5, 289, 0, 0, 5855, 5858, 5, 497, 0, 0, 5856, 5859, 3, 582, 291, 0, 5857, 5859, 3, 706, 353, 0, 5858, 5856, 1, 0, 0, 0, 5858, 5857, 1, 0, 0, 0, 5859, 5860, 1, 0, 0, 0, 5860, 5861, 5, 498, 0, 0, 5861, 5878, 1, 0, 0, 0, 5862, 5864, 5, 287, 0, 0, 5863, 5862, 1, 0, 0, 0, 5863, 5864, 1, 0, 0, 0, 5864, 5865, 1, 0, 0, 0, 5865, 5866, 5, 290, 0, 0, 5866, 5867, 3, 680, 340, 0, 5867, 5868, 5, 285, 0, 0, 5868, 5869, 3, 680, 340, 0, 5869, 5878, 1, 0, 0, 0, 5870, 5872, 5, 287, 0, 0, 5871, 5870, 1, 0, 0, 0, 5871, 5872, 1, 0, 0, 0, 5872, 5873, 1, 0, 0, 0, 5873, 5874, 5, 291, 0, 0, 5874, 5878, 3, 680, 340, 0, 5875, 5876, 5, 292, 0, 0, 5876, 5878, 3, 680, 340, 0, 5877, 5849, 1, 0, 0, 0, 5877, 5852, 1, 0, 0, 0, 5877, 5853, 1, 0, 0, 0, 5877, 5854, 1, 0, 0, 0, 5877, 5863, 1, 0, 0, 0, 5877, 5871, 1, 0, 0, 0, 5877, 5875, 1, 0, 0, 0, 5877, 5878, 1, 0, 0, 0, 5878, 677, 1, 0, 0, 0, 5879, 5880, 7, 39, 0, 0, 5880, 679, 1, 0, 0, 0, 5881, 5886, 3, 682, 341, 0, 5882, 5883, 7, 40, 0, 0, 5883, 5885, 3, 682, 341, 0, 5884, 5882, 1, 0, 0, 0, 5885, 5888, 1, 0, 0, 0, 5886, 5884, 1, 0, 0, 0, 5886, 5887, 1, 0, 0, 0, 5887, 681, 1, 0, 0, 0, 5888, 5886, 1, 0, 0, 0, 5889, 5894, 3, 684, 342, 0, 5890, 5891, 7, 41, 0, 0, 5891, 5893, 3, 684, 342, 0, 5892, 5890, 1, 0, 0, 0, 5893, 5896, 1, 0, 0, 0, 5894, 5892, 1, 0, 0, 0, 5894, 5895, 1, 0, 0, 0, 5895, 683, 1, 0, 0, 0, 5896, 5894, 1, 0, 0, 0, 5897, 5899, 7, 40, 0, 0, 5898, 5897, 1, 0, 0, 0, 5898, 5899, 1, 0, 0, 0, 5899, 5900, 1, 0, 0, 0, 5900, 5901, 3, 686, 343, 0, 5901, 685, 1, 0, 0, 0, 5902, 5903, 5, 497, 0, 0, 5903, 5904, 3, 668, 334, 0, 5904, 5905, 5, 498, 0, 0, 5905, 5924, 1, 0, 0, 0, 5906, 5907, 5, 497, 0, 0, 5907, 5908, 3, 582, 291, 0, 5908, 5909, 5, 498, 0, 0, 5909, 5924, 1, 0, 0, 0, 5910, 5911, 5, 293, 0, 0, 5911, 5912, 5, 497, 0, 0, 5912, 5913, 3, 582, 291, 0, 5913, 5914, 5, 498, 0, 0, 5914, 5924, 1, 0, 0, 0, 5915, 5924, 3, 690, 345, 0, 5916, 5924, 3, 688, 344, 0, 5917, 5924, 3, 692, 346, 0, 5918, 5924, 3, 314, 157, 0, 5919, 5924, 3, 306, 153, 0, 5920, 5924, 3, 696, 348, 0, 5921, 5924, 3, 698, 349, 0, 5922, 5924, 3, 704, 352, 0, 5923, 5902, 1, 0, 0, 0, 5923, 5906, 1, 0, 0, 0, 5923, 5910, 1, 0, 0, 0, 5923, 5915, 1, 0, 0, 0, 5923, 5916, 1, 0, 0, 0, 5923, 5917, 1, 0, 0, 0, 5923, 5918, 1, 0, 0, 0, 5923, 5919, 1, 0, 0, 0, 5923, 5920, 1, 0, 0, 0, 5923, 5921, 1, 0, 0, 0, 5923, 5922, 1, 0, 0, 0, 5924, 687, 1, 0, 0, 0, 5925, 5931, 5, 79, 0, 0, 5926, 5927, 5, 80, 0, 0, 5927, 5928, 3, 668, 334, 0, 5928, 5929, 5, 81, 0, 0, 5929, 5930, 3, 668, 334, 0, 5930, 5932, 1, 0, 0, 0, 5931, 5926, 1, 0, 0, 0, 5932, 5933, 1, 0, 0, 0, 5933, 5931, 1, 0, 0, 0, 5933, 5934, 1, 0, 0, 0, 5934, 5937, 1, 0, 0, 0, 5935, 5936, 5, 82, 0, 0, 5936, 5938, 3, 668, 334, 0, 5937, 5935, 1, 0, 0, 0, 5937, 5938, 1, 0, 0, 0, 5938, 5939, 1, 0, 0, 0, 5939, 5940, 5, 83, 0, 0, 5940, 689, 1, 0, 0, 0, 5941, 5942, 5, 105, 0, 0, 5942, 5943, 3, 668, 334, 0, 5943, 5944, 5, 81, 0, 0, 5944, 5945, 3, 668, 334, 0, 5945, 5946, 5, 82, 0, 0, 5946, 5947, 3, 668, 334, 0, 5947, 691, 1, 0, 0, 0, 5948, 5949, 5, 284, 0, 0, 5949, 5950, 5, 497, 0, 0, 5950, 5951, 3, 668, 334, 0, 5951, 5952, 5, 76, 0, 0, 5952, 5953, 3, 694, 347, 0, 5953, 5954, 5, 498, 0, 0, 5954, 693, 1, 0, 0, 0, 5955, 5956, 7, 42, 0, 0, 5956, 695, 1, 0, 0, 0, 5957, 5958, 7, 43, 0, 0, 5958, 5964, 5, 497, 0, 0, 5959, 5961, 5, 84, 0, 0, 5960, 5959, 1, 0, 0, 0, 5960, 5961, 1, 0, 0, 0, 5961, 5962, 1, 0, 0, 0, 5962, 5965, 3, 668, 334, 0, 5963, 5965, 5, 489, 0, 0, 5964, 5960, 1, 0, 0, 0, 5964, 5963, 1, 0, 0, 0, 5965, 5966, 1, 0, 0, 0, 5966, 5967, 5, 498, 0, 0, 5967, 697, 1, 0, 0, 0, 5968, 5969, 3, 700, 350, 0, 5969, 5971, 5, 497, 0, 0, 5970, 5972, 3, 702, 351, 0, 5971, 5970, 1, 0, 0, 0, 5971, 5972, 1, 0, 0, 0, 5972, 5973, 1, 0, 0, 0, 5973, 5974, 5, 498, 0, 0, 5974, 699, 1, 0, 0, 0, 5975, 5976, 7, 44, 0, 0, 5976, 701, 1, 0, 0, 0, 5977, 5982, 3, 668, 334, 0, 5978, 5979, 5, 495, 0, 0, 5979, 5981, 3, 668, 334, 0, 5980, 5978, 1, 0, 0, 0, 5981, 5984, 1, 0, 0, 0, 5982, 5980, 1, 0, 0, 0, 5982, 5983, 1, 0, 0, 0, 5983, 703, 1, 0, 0, 0, 5984, 5982, 1, 0, 0, 0, 5985, 5998, 3, 712, 356, 0, 5986, 5991, 5, 514, 0, 0, 5987, 5988, 5, 496, 0, 0, 5988, 5990, 3, 104, 52, 0, 5989, 5987, 1, 0, 0, 0, 5990, 5993, 1, 0, 0, 0, 5991, 5989, 1, 0, 0, 0, 5991, 5992, 1, 0, 0, 0, 5992, 5998, 1, 0, 0, 0, 5993, 5991, 1, 0, 0, 0, 5994, 5998, 3, 708, 354, 0, 5995, 5998, 5, 515, 0, 0, 5996, 5998, 5, 510, 0, 0, 5997, 5985, 1, 0, 0, 0, 5997, 5986, 1, 0, 0, 0, 5997, 5994, 1, 0, 0, 0, 5997, 5995, 1, 0, 0, 0, 5997, 5996, 1, 0, 0, 0, 5998, 705, 1, 0, 0, 0, 5999, 6004, 3, 668, 334, 0, 6000, 6001, 5, 495, 0, 0, 6001, 6003, 3, 668, 334, 0, 6002, 6000, 1, 0, 0, 0, 6003, 6006, 1, 0, 0, 0, 6004, 6002, 1, 0, 0, 0, 6004, 6005, 1, 0, 0, 0, 6005, 707, 1, 0, 0, 0, 6006, 6004, 1, 0, 0, 0, 6007, 6012, 3, 710, 355, 0, 6008, 6009, 5, 496, 0, 0, 6009, 6011, 3, 710, 355, 0, 6010, 6008, 1, 0, 0, 0, 6011, 6014, 1, 0, 0, 0, 6012, 6010, 1, 0, 0, 0, 6012, 6013, 1, 0, 0, 0, 6013, 709, 1, 0, 0, 0, 6014, 6012, 1, 0, 0, 0, 6015, 6019, 5, 515, 0, 0, 6016, 6019, 5, 517, 0, 0, 6017, 6019, 3, 732, 366, 0, 6018, 6015, 1, 0, 0, 0, 6018, 6016, 1, 0, 0, 0, 6018, 6017, 1, 0, 0, 0, 6019, 711, 1, 0, 0, 0, 6020, 6026, 5, 511, 0, 0, 6021, 6026, 5, 513, 0, 0, 6022, 6026, 3, 716, 358, 0, 6023, 6026, 5, 288, 0, 0, 6024, 6026, 5, 140, 0, 0, 6025, 6020, 1, 0, 0, 0, 6025, 6021, 1, 0, 0, 0, 6025, 6022, 1, 0, 0, 0, 6025, 6023, 1, 0, 0, 0, 6025, 6024, 1, 0, 0, 0, 6026, 713, 1, 0, 0, 0, 6027, 6036, 5, 501, 0, 0, 6028, 6033, 3, 712, 356, 0, 6029, 6030, 5, 495, 0, 0, 6030, 6032, 3, 712, 356, 0, 6031, 6029, 1, 0, 0, 0, 6032, 6035, 1, 0, 0, 0, 6033, 6031, 1, 0, 0, 0, 6033, 6034, 1, 0, 0, 0, 6034, 6037, 1, 0, 0, 0, 6035, 6033, 1, 0, 0, 0, 6036, 6028, 1, 0, 0, 0, 6036, 6037, 1, 0, 0, 0, 6037, 6038, 1, 0, 0, 0, 6038, 6039, 5, 502, 0, 0, 6039, 715, 1, 0, 0, 0, 6040, 6041, 7, 45, 0, 0, 6041, 717, 1, 0, 0, 0, 6042, 6043, 5, 2, 0, 0, 6043, 719, 1, 0, 0, 0, 6044, 6045, 5, 504, 0, 0, 6045, 6051, 3, 722, 361, 0, 6046, 6047, 5, 497, 0, 0, 6047, 6048, 3, 724, 362, 0, 6048, 6049, 5, 498, 0, 0, 6049, 6052, 1, 0, 0, 0, 6050, 6052, 3, 728, 364, 0, 6051, 6046, 1, 0, 0, 0, 6051, 6050, 1, 0, 0, 0, 6051, 6052, 1, 0, 0, 0, 6052, 721, 1, 0, 0, 0, 6053, 6054, 7, 46, 0, 0, 6054, 723, 1, 0, 0, 0, 6055, 6060, 3, 726, 363, 0, 6056, 6057, 5, 495, 0, 0, 6057, 6059, 3, 726, 363, 0, 6058, 6056, 1, 0, 0, 0, 6059, 6062, 1, 0, 0, 0, 6060, 6058, 1, 0, 0, 0, 6060, 6061, 1, 0, 0, 0, 6061, 725, 1, 0, 0, 0, 6062, 6060, 1, 0, 0, 0, 6063, 6064, 5, 515, 0, 0, 6064, 6065, 5, 503, 0, 0, 6065, 6068, 3, 728, 364, 0, 6066, 6068, 3, 728, 364, 0, 6067, 6063, 1, 0, 0, 0, 6067, 6066, 1, 0, 0, 0, 6068, 727, 1, 0, 0, 0, 6069, 6073, 3, 712, 356, 0, 6070, 6073, 3, 668, 334, 0, 6071, 6073, 3, 708, 354, 0, 6072, 6069, 1, 0, 0, 0, 6072, 6070, 1, 0, 0, 0, 6072, 6071, 1, 0, 0, 0, 6073, 729, 1, 0, 0, 0, 6074, 6075, 7, 47, 0, 0, 6075, 731, 1, 0, 0, 0, 6076, 6077, 7, 48, 0, 0, 6077, 733, 1, 0, 0, 0, 704, 737, 743, 748, 751, 754, 763, 773, 782, 788, 790, 794, 797, 802, 808, 834, 842, 850, 858, 866, 878, 891, 904, 916, 927, 931, 939, 945, 962, 966, 970, 974, 978, 982, 986, 988, 1001, 1006, 1020, 1029, 1042, 1058, 1067, 1090, 1104, 1108, 1117, 1120, 1128, 1133, 1135, 1210, 1212, 1225, 1236, 1245, 1247, 1258, 1264, 1272, 1283, 1285, 1293, 1295, 1314, 1322, 1338, 1362, 1378, 1462, 1471, 1479, 1493, 1500, 1508, 1522, 1535, 1539, 1545, 1548, 1554, 1557, 1563, 1567, 1571, 1577, 1582, 1585, 1587, 1593, 1597, 1601, 1604, 1608, 1613, 1620, 1627, 1631, 1636, 1645, 1651, 1656, 1662, 1667, 1672, 1677, 1681, 1684, 1686, 1692, 1724, 1732, 1753, 1756, 1767, 1772, 1777, 1786, 1791, 1803, 1832, 1842, 1873, 1887, 1894, 1907, 1914, 1922, 1927, 1932, 1938, 1946, 1953, 1957, 1961, 1964, 1981, 1986, 1995, 1998, 2003, 2010, 2018, 2032, 2068, 2083, 2090, 2098, 2105, 2109, 2112, 2118, 2121, 2128, 2132, 2135, 2140, 2147, 2154, 2170, 2175, 2183, 2189, 2194, 2200, 2205, 2211, 2216, 2221, 2226, 2231, 2236, 2241, 2246, 2251, 2256, 2261, 2266, 2271, 2276, 2281, 2286, 2291, 2296, 2301, 2306, 2311, 2316, 2321, 2326, 2331, 2336, 2341, 2346, 2351, 2356, 2361, 2366, 2371, 2376, 2381, 2386, 2391, 2396, 2401, 2406, 2411, 2416, 2421, 2426, 2431, 2436, 2441, 2446, 2451, 2456, 2461, 2466, 2471, 2476, 2481, 2486, 2491, 2496, 2501, 2506, 2511, 2516, 2521, 2526, 2531, 2536, 2538, 2545, 2550, 2557, 2563, 2566, 2569, 2575, 2578, 2584, 2588, 2594, 2597, 2600, 2605, 2610, 2619, 2621, 2629, 2632, 2636, 2640, 2643, 2655, 2677, 2690, 2695, 2705, 2715, 2720, 2728, 2735, 2739, 2743, 2754, 2761, 2775, 2782, 2786, 2790, 2798, 2802, 2806, 2816, 2818, 2822, 2825, 2830, 2833, 2836, 2840, 2848, 2852, 2859, 2864, 2874, 2877, 2881, 2885, 2892, 2899, 2905, 2919, 2926, 2941, 2945, 2952, 2957, 2961, 2964, 2967, 2971, 2977, 2995, 3000, 3008, 3027, 3031, 3038, 3041, 3109, 3116, 3121, 3151, 3174, 3185, 3192, 3209, 3212, 3221, 3231, 3243, 3255, 3266, 3269, 3282, 3290, 3296, 3302, 3310, 3317, 3325, 3332, 3339, 3351, 3354, 3366, 3390, 3398, 3406, 3426, 3430, 3432, 3440, 3445, 3448, 3458, 3553, 3563, 3571, 3581, 3585, 3587, 3595, 3598, 3603, 3608, 3614, 3618, 3622, 3628, 3634, 3639, 3644, 3649, 3654, 3662, 3673, 3678, 3684, 3688, 3697, 3699, 3701, 3709, 3745, 3748, 3751, 3759, 3766, 3777, 3786, 3792, 3800, 3809, 3817, 3823, 3827, 3836, 3848, 3854, 3856, 3869, 3873, 3885, 3890, 3892, 3907, 3912, 3921, 3930, 3933, 3944, 3967, 3972, 3977, 3986, 4013, 4020, 4035, 4054, 4059, 4070, 4075, 4081, 4085, 4093, 4096, 4112, 4120, 4123, 4130, 4138, 4143, 4146, 4149, 4159, 4162, 4169, 4172, 4180, 4198, 4204, 4207, 4212, 4217, 4227, 4246, 4254, 4266, 4273, 4277, 4291, 4295, 4299, 4304, 4309, 4314, 4321, 4324, 4329, 4359, 4367, 4372, 4377, 4381, 4386, 4390, 4396, 4398, 4405, 4407, 4416, 4421, 4426, 4430, 4435, 4439, 4445, 4447, 4454, 4456, 4458, 4463, 4469, 4475, 4481, 4485, 4491, 4493, 4505, 4514, 4519, 4525, 4527, 4534, 4536, 4547, 4556, 4561, 4565, 4569, 4575, 4577, 4589, 4594, 4607, 4613, 4617, 4624, 4631, 4633, 4644, 4652, 4657, 4665, 4674, 4677, 4689, 4695, 4724, 4726, 4733, 4735, 4742, 4744, 4751, 4753, 4760, 4762, 4769, 4771, 4778, 4780, 4787, 4789, 4796, 4798, 4806, 4808, 4815, 4817, 4824, 4826, 4834, 4836, 4844, 4846, 4854, 4856, 4884, 4891, 4907, 4912, 4923, 4925, 4958, 4960, 4968, 4970, 4978, 4980, 4988, 4990, 4998, 5000, 5009, 5019, 5025, 5030, 5032, 5035, 5044, 5046, 5055, 5057, 5065, 5067, 5079, 5081, 5089, 5091, 5100, 5102, 5104, 5112, 5118, 5120, 5125, 5127, 5137, 5147, 5155, 5163, 5212, 5242, 5251, 5300, 5304, 5312, 5315, 5320, 5325, 5331, 5333, 5337, 5341, 5345, 5348, 5355, 5358, 5362, 5369, 5374, 5379, 5382, 5385, 5388, 5391, 5394, 5398, 5401, 5404, 5408, 5411, 5413, 5417, 5427, 5430, 5435, 5440, 5442, 5446, 5453, 5458, 5461, 5467, 5470, 5472, 5475, 5481, 5484, 5489, 5492, 5494, 5506, 5510, 5514, 5519, 5522, 5541, 5546, 5553, 5560, 5566, 5568, 5586, 5597, 5612, 5614, 5622, 5625, 5628, 5631, 5634, 5650, 5654, 5659, 5667, 5675, 5682, 5725, 5730, 5739, 5744, 5747, 5752, 5757, 5773, 5784, 5789, 5793, 5797, 5813, 5832, 5840, 5844, 5858, 5863, 5871, 5877, 5886, 5894, 5898, 5923, 5933, 5937, 5960, 5964, 5971, 5982, 5991, 5997, 6004, 6012, 6018, 6025, 6033, 6036, 6051, 6060, 6067, 6072] \ No newline at end of file +[4, 1, 520, 6136, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 1, 0, 5, 0, 736, 8, 0, 10, 0, 12, 0, 739, 9, 0, 1, 0, 1, 0, 1, 1, 3, 1, 744, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 749, 8, 1, 1, 1, 3, 1, 752, 8, 1, 1, 1, 3, 1, 755, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 764, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 772, 8, 3, 10, 3, 12, 3, 775, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 781, 8, 3, 10, 3, 12, 3, 784, 9, 3, 1, 3, 1, 3, 1, 3, 3, 3, 789, 8, 3, 3, 3, 791, 8, 3, 1, 3, 1, 3, 3, 3, 795, 8, 3, 1, 4, 3, 4, 798, 8, 4, 1, 4, 5, 4, 801, 8, 4, 10, 4, 12, 4, 804, 9, 4, 1, 4, 1, 4, 1, 4, 3, 4, 809, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 835, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 841, 8, 5, 11, 5, 12, 5, 842, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 849, 8, 5, 11, 5, 12, 5, 850, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 857, 8, 5, 11, 5, 12, 5, 858, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 865, 8, 5, 11, 5, 12, 5, 866, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 877, 8, 5, 10, 5, 12, 5, 880, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 890, 8, 5, 10, 5, 12, 5, 893, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 903, 8, 5, 11, 5, 12, 5, 904, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 915, 8, 5, 11, 5, 12, 5, 916, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 926, 8, 5, 11, 5, 12, 5, 927, 1, 5, 1, 5, 3, 5, 932, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 938, 8, 6, 10, 6, 12, 6, 941, 9, 6, 1, 6, 1, 6, 1, 6, 3, 6, 946, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 963, 8, 7, 1, 8, 1, 8, 3, 8, 967, 8, 8, 1, 8, 1, 8, 3, 8, 971, 8, 8, 1, 8, 1, 8, 3, 8, 975, 8, 8, 1, 8, 1, 8, 3, 8, 979, 8, 8, 1, 8, 1, 8, 3, 8, 983, 8, 8, 1, 8, 1, 8, 3, 8, 987, 8, 8, 3, 8, 989, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 1000, 8, 9, 10, 9, 12, 9, 1003, 9, 9, 1, 9, 1, 9, 3, 9, 1007, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 1019, 8, 9, 10, 9, 12, 9, 1022, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1030, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1046, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1062, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 1069, 8, 13, 10, 13, 12, 13, 1072, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1094, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 1106, 8, 17, 10, 17, 12, 17, 1109, 9, 17, 1, 17, 3, 17, 1112, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1121, 8, 18, 1, 18, 3, 18, 1124, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 1130, 8, 18, 10, 18, 12, 18, 1133, 9, 18, 1, 18, 1, 18, 3, 18, 1137, 8, 18, 3, 18, 1139, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1214, 8, 19, 3, 19, 1216, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1229, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1240, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1249, 8, 21, 3, 21, 1251, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1262, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1268, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1276, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1287, 8, 21, 3, 21, 1289, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1297, 8, 21, 3, 21, 1299, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1318, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1326, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1342, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1366, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1382, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1466, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1475, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1481, 8, 39, 10, 39, 12, 39, 1484, 9, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1497, 8, 41, 1, 42, 1, 42, 1, 42, 5, 42, 1502, 8, 42, 10, 42, 12, 42, 1505, 9, 42, 1, 43, 1, 43, 1, 43, 5, 43, 1510, 8, 43, 10, 43, 12, 43, 1513, 9, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1524, 8, 44, 10, 44, 12, 44, 1527, 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1537, 8, 44, 10, 44, 12, 44, 1540, 9, 44, 1, 44, 3, 44, 1543, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1549, 8, 45, 1, 45, 3, 45, 1552, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1558, 8, 45, 1, 45, 3, 45, 1561, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1567, 8, 45, 1, 45, 1, 45, 3, 45, 1571, 8, 45, 1, 45, 1, 45, 3, 45, 1575, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1581, 8, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1586, 8, 45, 1, 45, 3, 45, 1589, 8, 45, 3, 45, 1591, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1597, 8, 46, 1, 47, 1, 47, 3, 47, 1601, 8, 47, 1, 47, 1, 47, 3, 47, 1605, 8, 47, 1, 47, 3, 47, 1608, 8, 47, 1, 48, 1, 48, 3, 48, 1612, 8, 48, 1, 48, 5, 48, 1615, 8, 48, 10, 48, 12, 48, 1618, 9, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1624, 8, 49, 1, 50, 1, 50, 1, 50, 5, 50, 1629, 8, 50, 10, 50, 12, 50, 1632, 9, 50, 1, 51, 3, 51, 1635, 8, 51, 1, 51, 5, 51, 1638, 8, 51, 10, 51, 12, 51, 1641, 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 1647, 8, 51, 10, 51, 12, 51, 1650, 9, 51, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1656, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 1661, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1667, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1672, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1677, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1682, 8, 53, 1, 53, 1, 53, 3, 53, 1686, 8, 53, 1, 53, 3, 53, 1689, 8, 53, 3, 53, 1691, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1697, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1729, 8, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1737, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1758, 8, 56, 1, 57, 3, 57, 1761, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 1770, 8, 58, 10, 58, 12, 58, 1773, 9, 58, 1, 59, 1, 59, 3, 59, 1777, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 1782, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1791, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 1802, 8, 61, 10, 61, 12, 61, 1805, 9, 61, 1, 61, 1, 61, 3, 61, 1809, 8, 61, 1, 62, 4, 62, 1812, 8, 62, 11, 62, 12, 62, 1813, 1, 63, 1, 63, 3, 63, 1818, 8, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1823, 8, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1828, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1835, 8, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1862, 8, 65, 10, 65, 12, 65, 1865, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1872, 8, 65, 10, 65, 12, 65, 1875, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1905, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1919, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1926, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1939, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1946, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1954, 8, 68, 1, 69, 1, 69, 1, 69, 3, 69, 1959, 8, 69, 1, 70, 4, 70, 1962, 8, 70, 11, 70, 12, 70, 1963, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1970, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1978, 8, 72, 1, 73, 1, 73, 1, 73, 5, 73, 1983, 8, 73, 10, 73, 12, 73, 1986, 9, 73, 1, 74, 3, 74, 1989, 8, 74, 1, 74, 1, 74, 3, 74, 1993, 8, 74, 1, 74, 3, 74, 1996, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2015, 8, 75, 1, 76, 4, 76, 2018, 8, 76, 11, 76, 12, 76, 2019, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 2029, 8, 78, 1, 78, 3, 78, 2032, 8, 78, 1, 79, 4, 79, 2035, 8, 79, 11, 79, 12, 79, 2036, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 2044, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 2050, 8, 81, 10, 81, 12, 81, 2053, 9, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 3, 83, 2066, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2102, 8, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2117, 8, 86, 1, 87, 1, 87, 1, 87, 5, 87, 2122, 8, 87, 10, 87, 12, 87, 2125, 9, 87, 1, 88, 1, 88, 1, 88, 5, 88, 2130, 8, 88, 10, 88, 12, 88, 2133, 9, 88, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 2139, 8, 89, 1, 89, 1, 89, 3, 89, 2143, 8, 89, 1, 89, 3, 89, 2146, 8, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 2152, 8, 89, 1, 89, 3, 89, 2155, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 2162, 8, 90, 1, 90, 1, 90, 3, 90, 2166, 8, 90, 1, 90, 3, 90, 2169, 8, 90, 1, 90, 1, 90, 1, 90, 3, 90, 2174, 8, 90, 1, 91, 1, 91, 1, 91, 5, 91, 2179, 8, 91, 10, 91, 12, 91, 2182, 9, 91, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2188, 8, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 5, 95, 2202, 8, 95, 10, 95, 12, 95, 2205, 9, 95, 1, 96, 1, 96, 3, 96, 2209, 8, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 3, 97, 2217, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 2223, 8, 98, 1, 99, 4, 99, 2226, 8, 99, 11, 99, 12, 99, 2227, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2234, 8, 100, 1, 101, 5, 101, 2237, 8, 101, 10, 101, 12, 101, 2240, 9, 101, 1, 102, 5, 102, 2243, 8, 102, 10, 102, 12, 102, 2246, 9, 102, 1, 102, 1, 102, 3, 102, 2250, 8, 102, 1, 102, 5, 102, 2253, 8, 102, 10, 102, 12, 102, 2256, 9, 102, 1, 102, 1, 102, 3, 102, 2260, 8, 102, 1, 102, 5, 102, 2263, 8, 102, 10, 102, 12, 102, 2266, 9, 102, 1, 102, 1, 102, 3, 102, 2270, 8, 102, 1, 102, 5, 102, 2273, 8, 102, 10, 102, 12, 102, 2276, 9, 102, 1, 102, 1, 102, 3, 102, 2280, 8, 102, 1, 102, 5, 102, 2283, 8, 102, 10, 102, 12, 102, 2286, 9, 102, 1, 102, 1, 102, 3, 102, 2290, 8, 102, 1, 102, 5, 102, 2293, 8, 102, 10, 102, 12, 102, 2296, 9, 102, 1, 102, 1, 102, 3, 102, 2300, 8, 102, 1, 102, 5, 102, 2303, 8, 102, 10, 102, 12, 102, 2306, 9, 102, 1, 102, 1, 102, 3, 102, 2310, 8, 102, 1, 102, 5, 102, 2313, 8, 102, 10, 102, 12, 102, 2316, 9, 102, 1, 102, 1, 102, 3, 102, 2320, 8, 102, 1, 102, 5, 102, 2323, 8, 102, 10, 102, 12, 102, 2326, 9, 102, 1, 102, 1, 102, 3, 102, 2330, 8, 102, 1, 102, 5, 102, 2333, 8, 102, 10, 102, 12, 102, 2336, 9, 102, 1, 102, 1, 102, 3, 102, 2340, 8, 102, 1, 102, 5, 102, 2343, 8, 102, 10, 102, 12, 102, 2346, 9, 102, 1, 102, 1, 102, 3, 102, 2350, 8, 102, 1, 102, 5, 102, 2353, 8, 102, 10, 102, 12, 102, 2356, 9, 102, 1, 102, 1, 102, 3, 102, 2360, 8, 102, 1, 102, 5, 102, 2363, 8, 102, 10, 102, 12, 102, 2366, 9, 102, 1, 102, 1, 102, 3, 102, 2370, 8, 102, 1, 102, 5, 102, 2373, 8, 102, 10, 102, 12, 102, 2376, 9, 102, 1, 102, 1, 102, 3, 102, 2380, 8, 102, 1, 102, 5, 102, 2383, 8, 102, 10, 102, 12, 102, 2386, 9, 102, 1, 102, 1, 102, 3, 102, 2390, 8, 102, 1, 102, 5, 102, 2393, 8, 102, 10, 102, 12, 102, 2396, 9, 102, 1, 102, 1, 102, 3, 102, 2400, 8, 102, 1, 102, 5, 102, 2403, 8, 102, 10, 102, 12, 102, 2406, 9, 102, 1, 102, 1, 102, 3, 102, 2410, 8, 102, 1, 102, 5, 102, 2413, 8, 102, 10, 102, 12, 102, 2416, 9, 102, 1, 102, 1, 102, 3, 102, 2420, 8, 102, 1, 102, 5, 102, 2423, 8, 102, 10, 102, 12, 102, 2426, 9, 102, 1, 102, 1, 102, 3, 102, 2430, 8, 102, 1, 102, 5, 102, 2433, 8, 102, 10, 102, 12, 102, 2436, 9, 102, 1, 102, 1, 102, 3, 102, 2440, 8, 102, 1, 102, 5, 102, 2443, 8, 102, 10, 102, 12, 102, 2446, 9, 102, 1, 102, 1, 102, 3, 102, 2450, 8, 102, 1, 102, 5, 102, 2453, 8, 102, 10, 102, 12, 102, 2456, 9, 102, 1, 102, 1, 102, 3, 102, 2460, 8, 102, 1, 102, 5, 102, 2463, 8, 102, 10, 102, 12, 102, 2466, 9, 102, 1, 102, 1, 102, 3, 102, 2470, 8, 102, 1, 102, 5, 102, 2473, 8, 102, 10, 102, 12, 102, 2476, 9, 102, 1, 102, 1, 102, 3, 102, 2480, 8, 102, 1, 102, 5, 102, 2483, 8, 102, 10, 102, 12, 102, 2486, 9, 102, 1, 102, 1, 102, 3, 102, 2490, 8, 102, 1, 102, 5, 102, 2493, 8, 102, 10, 102, 12, 102, 2496, 9, 102, 1, 102, 1, 102, 3, 102, 2500, 8, 102, 1, 102, 5, 102, 2503, 8, 102, 10, 102, 12, 102, 2506, 9, 102, 1, 102, 1, 102, 3, 102, 2510, 8, 102, 1, 102, 5, 102, 2513, 8, 102, 10, 102, 12, 102, 2516, 9, 102, 1, 102, 1, 102, 3, 102, 2520, 8, 102, 1, 102, 5, 102, 2523, 8, 102, 10, 102, 12, 102, 2526, 9, 102, 1, 102, 1, 102, 3, 102, 2530, 8, 102, 1, 102, 5, 102, 2533, 8, 102, 10, 102, 12, 102, 2536, 9, 102, 1, 102, 1, 102, 3, 102, 2540, 8, 102, 1, 102, 5, 102, 2543, 8, 102, 10, 102, 12, 102, 2546, 9, 102, 1, 102, 1, 102, 3, 102, 2550, 8, 102, 1, 102, 5, 102, 2553, 8, 102, 10, 102, 12, 102, 2556, 9, 102, 1, 102, 1, 102, 3, 102, 2560, 8, 102, 1, 102, 5, 102, 2563, 8, 102, 10, 102, 12, 102, 2566, 9, 102, 1, 102, 1, 102, 3, 102, 2570, 8, 102, 3, 102, 2572, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2579, 8, 103, 1, 104, 1, 104, 1, 104, 3, 104, 2584, 8, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 3, 105, 2591, 8, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 2597, 8, 105, 1, 105, 3, 105, 2600, 8, 105, 1, 105, 3, 105, 2603, 8, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 2609, 8, 106, 1, 106, 3, 106, 2612, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 2618, 8, 107, 4, 107, 2620, 8, 107, 11, 107, 12, 107, 2621, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 2628, 8, 108, 1, 108, 3, 108, 2631, 8, 108, 1, 108, 3, 108, 2634, 8, 108, 1, 109, 1, 109, 1, 109, 3, 109, 2639, 8, 109, 1, 110, 1, 110, 1, 110, 3, 110, 2644, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 2653, 8, 111, 3, 111, 2655, 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 5, 111, 2661, 8, 111, 10, 111, 12, 111, 2664, 9, 111, 3, 111, 2666, 8, 111, 1, 111, 1, 111, 3, 111, 2670, 8, 111, 1, 111, 1, 111, 3, 111, 2674, 8, 111, 1, 111, 3, 111, 2677, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 2689, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 2711, 8, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 5, 114, 2722, 8, 114, 10, 114, 12, 114, 2725, 9, 114, 1, 114, 1, 114, 3, 114, 2729, 8, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 2739, 8, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 3, 116, 2749, 8, 116, 1, 116, 1, 116, 1, 116, 3, 116, 2754, 8, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 3, 119, 2762, 8, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 3, 121, 2769, 8, 121, 1, 121, 1, 121, 3, 121, 2773, 8, 121, 1, 121, 1, 121, 3, 121, 2777, 8, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, 2786, 8, 123, 10, 123, 12, 123, 2789, 9, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2795, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 3, 127, 2809, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 2816, 8, 127, 1, 127, 1, 127, 3, 127, 2820, 8, 127, 1, 128, 1, 128, 3, 128, 2824, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 2832, 8, 128, 1, 128, 1, 128, 3, 128, 2836, 8, 128, 1, 129, 1, 129, 3, 129, 2840, 8, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 2850, 8, 129, 3, 129, 2852, 8, 129, 1, 129, 1, 129, 3, 129, 2856, 8, 129, 1, 129, 3, 129, 2859, 8, 129, 1, 129, 1, 129, 1, 129, 3, 129, 2864, 8, 129, 1, 129, 3, 129, 2867, 8, 129, 1, 129, 3, 129, 2870, 8, 129, 1, 130, 1, 130, 3, 130, 2874, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 2882, 8, 130, 1, 130, 1, 130, 3, 130, 2886, 8, 130, 1, 131, 1, 131, 1, 131, 5, 131, 2891, 8, 131, 10, 131, 12, 131, 2894, 9, 131, 1, 132, 1, 132, 3, 132, 2898, 8, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 2908, 8, 133, 1, 133, 3, 133, 2911, 8, 133, 1, 133, 1, 133, 3, 133, 2915, 8, 133, 1, 133, 1, 133, 3, 133, 2919, 8, 133, 1, 134, 1, 134, 1, 134, 5, 134, 2924, 8, 134, 10, 134, 12, 134, 2927, 9, 134, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 2933, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 2939, 8, 135, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 2953, 8, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 2960, 8, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2975, 8, 140, 1, 141, 1, 141, 3, 141, 2979, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2986, 8, 141, 1, 141, 5, 141, 2989, 8, 141, 10, 141, 12, 141, 2992, 9, 141, 1, 141, 3, 141, 2995, 8, 141, 1, 141, 3, 141, 2998, 8, 141, 1, 141, 3, 141, 3001, 8, 141, 1, 141, 1, 141, 3, 141, 3005, 8, 141, 1, 142, 1, 142, 1, 143, 1, 143, 3, 143, 3011, 8, 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 3, 147, 3029, 8, 147, 1, 147, 1, 147, 1, 147, 3, 147, 3034, 8, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 3042, 8, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3061, 8, 149, 1, 150, 1, 150, 3, 150, 3065, 8, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 3072, 8, 150, 1, 150, 3, 150, 3075, 8, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 3143, 8, 153, 1, 154, 1, 154, 1, 154, 5, 154, 3148, 8, 154, 10, 154, 12, 154, 3151, 9, 154, 1, 155, 1, 155, 3, 155, 3155, 8, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 3, 157, 3185, 8, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 5, 161, 3206, 8, 161, 10, 161, 12, 161, 3209, 9, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 3219, 8, 163, 1, 164, 1, 164, 1, 164, 5, 164, 3224, 8, 164, 10, 164, 12, 164, 3227, 9, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 3, 167, 3243, 8, 167, 1, 167, 3, 167, 3246, 8, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 4, 168, 3253, 8, 168, 11, 168, 12, 168, 3254, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 5, 170, 3263, 8, 170, 10, 170, 12, 170, 3266, 9, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 5, 172, 3275, 8, 172, 10, 172, 12, 172, 3278, 9, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 5, 174, 3287, 8, 174, 10, 174, 12, 174, 3290, 9, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 3, 176, 3300, 8, 176, 1, 176, 3, 176, 3303, 8, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 5, 179, 3314, 8, 179, 10, 179, 12, 179, 3317, 9, 179, 1, 180, 1, 180, 1, 180, 5, 180, 3322, 8, 180, 10, 180, 12, 180, 3325, 9, 180, 1, 181, 1, 181, 1, 181, 3, 181, 3330, 8, 181, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 3336, 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 3344, 8, 183, 1, 184, 1, 184, 1, 184, 5, 184, 3349, 8, 184, 10, 184, 12, 184, 3352, 9, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, 3359, 8, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 3366, 8, 186, 1, 187, 1, 187, 1, 187, 5, 187, 3371, 8, 187, 10, 187, 12, 187, 3374, 9, 187, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 5, 189, 3383, 8, 189, 10, 189, 12, 189, 3386, 9, 189, 3, 189, 3388, 8, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 5, 191, 3398, 8, 191, 10, 191, 12, 191, 3401, 9, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 3424, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 3432, 8, 192, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 3438, 8, 193, 10, 193, 12, 193, 3441, 9, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 3460, 8, 194, 1, 195, 1, 195, 5, 195, 3464, 8, 195, 10, 195, 12, 195, 3467, 9, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 3474, 8, 196, 1, 197, 1, 197, 1, 197, 3, 197, 3479, 8, 197, 1, 197, 3, 197, 3482, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 3488, 8, 197, 1, 197, 3, 197, 3491, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 3497, 8, 197, 1, 197, 3, 197, 3500, 8, 197, 3, 197, 3502, 8, 197, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 5, 199, 3510, 8, 199, 10, 199, 12, 199, 3513, 9, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 3611, 8, 200, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 5, 202, 3619, 8, 202, 10, 202, 12, 202, 3622, 9, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 3, 203, 3629, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 5, 203, 3637, 8, 203, 10, 203, 12, 203, 3640, 9, 203, 1, 203, 3, 203, 3643, 8, 203, 3, 203, 3645, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 5, 203, 3651, 8, 203, 10, 203, 12, 203, 3654, 9, 203, 3, 203, 3656, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3661, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3666, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3672, 8, 203, 1, 204, 1, 204, 3, 204, 3676, 8, 204, 1, 204, 1, 204, 3, 204, 3680, 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3686, 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3692, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3697, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3702, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3707, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3712, 8, 204, 1, 205, 1, 205, 1, 205, 1, 205, 5, 205, 3718, 8, 205, 10, 205, 12, 205, 3721, 9, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 3731, 8, 206, 1, 207, 1, 207, 1, 207, 3, 207, 3736, 8, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 3742, 8, 207, 5, 207, 3744, 8, 207, 10, 207, 12, 207, 3747, 9, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 3755, 8, 208, 3, 208, 3757, 8, 208, 3, 208, 3759, 8, 208, 1, 209, 1, 209, 1, 209, 1, 209, 5, 209, 3765, 8, 209, 10, 209, 12, 209, 3768, 9, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 212, 1, 212, 1, 213, 1, 213, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 5, 215, 3801, 8, 215, 10, 215, 12, 215, 3804, 9, 215, 3, 215, 3806, 8, 215, 1, 215, 3, 215, 3809, 8, 215, 1, 216, 1, 216, 1, 216, 1, 216, 5, 216, 3815, 8, 216, 10, 216, 12, 216, 3818, 9, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 3824, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 3835, 8, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 3, 219, 3844, 8, 219, 1, 219, 1, 219, 5, 219, 3848, 8, 219, 10, 219, 12, 219, 3851, 9, 219, 1, 219, 1, 219, 1, 220, 4, 220, 3856, 8, 220, 11, 220, 12, 220, 3857, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 3, 222, 3867, 8, 222, 1, 223, 1, 223, 1, 223, 1, 223, 4, 223, 3873, 8, 223, 11, 223, 12, 223, 3874, 1, 223, 1, 223, 5, 223, 3879, 8, 223, 10, 223, 12, 223, 3882, 9, 223, 1, 223, 3, 223, 3885, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 3894, 8, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 3906, 8, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 3912, 8, 224, 3, 224, 3914, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 3, 225, 3927, 8, 225, 5, 225, 3929, 8, 225, 10, 225, 12, 225, 3932, 9, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 3941, 8, 225, 10, 225, 12, 225, 3944, 9, 225, 1, 225, 1, 225, 3, 225, 3948, 8, 225, 3, 225, 3950, 8, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 3965, 8, 227, 1, 228, 4, 228, 3968, 8, 228, 11, 228, 12, 228, 3969, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 3979, 8, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 5, 230, 3986, 8, 230, 10, 230, 12, 230, 3989, 9, 230, 3, 230, 3991, 8, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 5, 231, 4000, 8, 231, 10, 231, 12, 231, 4003, 9, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 4025, 8, 233, 1, 234, 1, 234, 1, 235, 3, 235, 4030, 8, 235, 1, 235, 1, 235, 1, 235, 3, 235, 4035, 8, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 5, 235, 4042, 8, 235, 10, 235, 12, 235, 4045, 9, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 3, 237, 4071, 8, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 4078, 8, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 4093, 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 5, 241, 4110, 8, 241, 10, 241, 12, 241, 4113, 9, 241, 1, 241, 1, 241, 3, 241, 4117, 8, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 5, 242, 4126, 8, 242, 10, 242, 12, 242, 4129, 9, 242, 1, 242, 1, 242, 3, 242, 4133, 8, 242, 1, 242, 1, 242, 5, 242, 4137, 8, 242, 10, 242, 12, 242, 4140, 9, 242, 1, 242, 3, 242, 4143, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 4151, 8, 243, 1, 243, 3, 243, 4154, 8, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 5, 246, 4168, 8, 246, 10, 246, 12, 246, 4171, 9, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 4178, 8, 247, 1, 247, 3, 247, 4181, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 4188, 8, 248, 1, 248, 1, 248, 1, 248, 1, 248, 5, 248, 4194, 8, 248, 10, 248, 12, 248, 4197, 9, 248, 1, 248, 1, 248, 3, 248, 4201, 8, 248, 1, 248, 3, 248, 4204, 8, 248, 1, 248, 3, 248, 4207, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 5, 249, 4215, 8, 249, 10, 249, 12, 249, 4218, 9, 249, 3, 249, 4220, 8, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 3, 250, 4227, 8, 250, 1, 250, 3, 250, 4230, 8, 250, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 4236, 8, 251, 10, 251, 12, 251, 4239, 9, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 5, 252, 4254, 8, 252, 10, 252, 12, 252, 4257, 9, 252, 1, 252, 1, 252, 1, 252, 3, 252, 4262, 8, 252, 1, 252, 3, 252, 4265, 8, 252, 1, 253, 1, 253, 1, 253, 3, 253, 4270, 8, 253, 1, 253, 5, 253, 4273, 8, 253, 10, 253, 12, 253, 4276, 9, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 5, 254, 4283, 8, 254, 10, 254, 12, 254, 4286, 9, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 5, 256, 4302, 8, 256, 10, 256, 12, 256, 4305, 9, 256, 1, 256, 1, 256, 1, 256, 4, 256, 4310, 8, 256, 11, 256, 12, 256, 4311, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 5, 257, 4322, 8, 257, 10, 257, 12, 257, 4325, 9, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 4331, 8, 257, 1, 257, 1, 257, 3, 257, 4335, 8, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4349, 8, 259, 1, 259, 1, 259, 3, 259, 4353, 8, 259, 1, 259, 1, 259, 3, 259, 4357, 8, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4362, 8, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4367, 8, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4372, 8, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4379, 8, 259, 1, 259, 3, 259, 4382, 8, 259, 1, 260, 5, 260, 4385, 8, 260, 10, 260, 12, 260, 4388, 9, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 4417, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4425, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4430, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4435, 8, 262, 1, 262, 1, 262, 3, 262, 4439, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4444, 8, 262, 1, 262, 1, 262, 3, 262, 4448, 8, 262, 1, 262, 1, 262, 4, 262, 4452, 8, 262, 11, 262, 12, 262, 4453, 3, 262, 4456, 8, 262, 1, 262, 1, 262, 1, 262, 4, 262, 4461, 8, 262, 11, 262, 12, 262, 4462, 3, 262, 4465, 8, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4474, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4479, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4484, 8, 262, 1, 262, 1, 262, 3, 262, 4488, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4493, 8, 262, 1, 262, 1, 262, 3, 262, 4497, 8, 262, 1, 262, 1, 262, 4, 262, 4501, 8, 262, 11, 262, 12, 262, 4502, 3, 262, 4505, 8, 262, 1, 262, 1, 262, 1, 262, 4, 262, 4510, 8, 262, 11, 262, 12, 262, 4511, 3, 262, 4514, 8, 262, 3, 262, 4516, 8, 262, 1, 263, 1, 263, 1, 263, 3, 263, 4521, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4527, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4533, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4539, 8, 263, 1, 263, 1, 263, 3, 263, 4543, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4549, 8, 263, 3, 263, 4551, 8, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 3, 265, 4563, 8, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 5, 265, 4570, 8, 265, 10, 265, 12, 265, 4573, 9, 265, 1, 265, 1, 265, 3, 265, 4577, 8, 265, 1, 265, 1, 265, 4, 265, 4581, 8, 265, 11, 265, 12, 265, 4582, 3, 265, 4585, 8, 265, 1, 265, 1, 265, 1, 265, 4, 265, 4590, 8, 265, 11, 265, 12, 265, 4591, 3, 265, 4594, 8, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 4605, 8, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 5, 267, 4612, 8, 267, 10, 267, 12, 267, 4615, 9, 267, 1, 267, 1, 267, 3, 267, 4619, 8, 267, 1, 268, 1, 268, 3, 268, 4623, 8, 268, 1, 268, 1, 268, 3, 268, 4627, 8, 268, 1, 268, 1, 268, 4, 268, 4631, 8, 268, 11, 268, 12, 268, 4632, 3, 268, 4635, 8, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 4647, 8, 270, 1, 270, 4, 270, 4650, 8, 270, 11, 270, 12, 270, 4651, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 3, 272, 4665, 8, 272, 1, 273, 1, 273, 1, 273, 1, 273, 3, 273, 4671, 8, 273, 1, 273, 1, 273, 3, 273, 4675, 8, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 4682, 8, 274, 1, 274, 1, 274, 1, 274, 4, 274, 4687, 8, 274, 11, 274, 12, 274, 4688, 3, 274, 4691, 8, 274, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 4700, 8, 276, 10, 276, 12, 276, 4703, 9, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 4710, 8, 276, 1, 276, 1, 276, 1, 276, 3, 276, 4715, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 4723, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 4730, 8, 276, 10, 276, 12, 276, 4733, 9, 276, 3, 276, 4735, 8, 276, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 3, 279, 4747, 8, 279, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 4753, 8, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4782, 8, 281, 3, 281, 4784, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4791, 8, 281, 3, 281, 4793, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4800, 8, 281, 3, 281, 4802, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4809, 8, 281, 3, 281, 4811, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4818, 8, 281, 3, 281, 4820, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4827, 8, 281, 3, 281, 4829, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4836, 8, 281, 3, 281, 4838, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4845, 8, 281, 3, 281, 4847, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4854, 8, 281, 3, 281, 4856, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4864, 8, 281, 3, 281, 4866, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4873, 8, 281, 3, 281, 4875, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4882, 8, 281, 3, 281, 4884, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4892, 8, 281, 3, 281, 4894, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4902, 8, 281, 3, 281, 4904, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4912, 8, 281, 3, 281, 4914, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4942, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4949, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4965, 8, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4970, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4981, 8, 281, 3, 281, 4983, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5016, 8, 281, 3, 281, 5018, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5026, 8, 281, 3, 281, 5028, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5036, 8, 281, 3, 281, 5038, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5046, 8, 281, 3, 281, 5048, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5056, 8, 281, 3, 281, 5058, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5067, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5077, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5083, 8, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5088, 8, 281, 3, 281, 5090, 8, 281, 1, 281, 3, 281, 5093, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5102, 8, 281, 3, 281, 5104, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5113, 8, 281, 3, 281, 5115, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5123, 8, 281, 3, 281, 5125, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5137, 8, 281, 3, 281, 5139, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5147, 8, 281, 3, 281, 5149, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5158, 8, 281, 3, 281, 5160, 8, 281, 3, 281, 5162, 8, 281, 1, 282, 1, 282, 1, 282, 1, 282, 5, 282, 5168, 8, 282, 10, 282, 12, 282, 5171, 9, 282, 1, 282, 1, 282, 1, 282, 3, 282, 5176, 8, 282, 3, 282, 5178, 8, 282, 1, 282, 1, 282, 1, 282, 3, 282, 5183, 8, 282, 3, 282, 5185, 8, 282, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 5195, 8, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5205, 8, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5213, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5221, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5270, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5300, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5309, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5358, 8, 287, 1, 288, 1, 288, 3, 288, 5362, 8, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, 5370, 8, 288, 1, 288, 3, 288, 5373, 8, 288, 1, 288, 5, 288, 5376, 8, 288, 10, 288, 12, 288, 5379, 9, 288, 1, 288, 1, 288, 3, 288, 5383, 8, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, 5389, 8, 288, 3, 288, 5391, 8, 288, 1, 288, 1, 288, 3, 288, 5395, 8, 288, 1, 288, 1, 288, 3, 288, 5399, 8, 288, 1, 288, 1, 288, 3, 288, 5403, 8, 288, 1, 289, 3, 289, 5406, 8, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 5413, 8, 289, 1, 289, 3, 289, 5416, 8, 289, 1, 289, 1, 289, 3, 289, 5420, 8, 289, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 3, 291, 5427, 8, 291, 1, 291, 5, 291, 5430, 8, 291, 10, 291, 12, 291, 5433, 9, 291, 1, 292, 1, 292, 3, 292, 5437, 8, 292, 1, 292, 3, 292, 5440, 8, 292, 1, 292, 3, 292, 5443, 8, 292, 1, 292, 3, 292, 5446, 8, 292, 1, 292, 3, 292, 5449, 8, 292, 1, 292, 3, 292, 5452, 8, 292, 1, 292, 1, 292, 3, 292, 5456, 8, 292, 1, 292, 3, 292, 5459, 8, 292, 1, 292, 3, 292, 5462, 8, 292, 1, 292, 1, 292, 3, 292, 5466, 8, 292, 1, 292, 3, 292, 5469, 8, 292, 3, 292, 5471, 8, 292, 1, 293, 1, 293, 3, 293, 5475, 8, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 5, 294, 5483, 8, 294, 10, 294, 12, 294, 5486, 9, 294, 3, 294, 5488, 8, 294, 1, 295, 1, 295, 1, 295, 3, 295, 5493, 8, 295, 1, 295, 1, 295, 1, 295, 3, 295, 5498, 8, 295, 3, 295, 5500, 8, 295, 1, 296, 1, 296, 3, 296, 5504, 8, 296, 1, 297, 1, 297, 1, 297, 5, 297, 5509, 8, 297, 10, 297, 12, 297, 5512, 9, 297, 1, 298, 1, 298, 3, 298, 5516, 8, 298, 1, 298, 3, 298, 5519, 8, 298, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 5525, 8, 298, 1, 298, 3, 298, 5528, 8, 298, 3, 298, 5530, 8, 298, 1, 299, 3, 299, 5533, 8, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 5539, 8, 299, 1, 299, 3, 299, 5542, 8, 299, 1, 299, 1, 299, 1, 299, 3, 299, 5547, 8, 299, 1, 299, 3, 299, 5550, 8, 299, 3, 299, 5552, 8, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 5564, 8, 300, 1, 301, 1, 301, 3, 301, 5568, 8, 301, 1, 301, 1, 301, 3, 301, 5572, 8, 301, 1, 301, 1, 301, 1, 301, 3, 301, 5577, 8, 301, 1, 301, 3, 301, 5580, 8, 301, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 5, 306, 5597, 8, 306, 10, 306, 12, 306, 5600, 9, 306, 1, 307, 1, 307, 3, 307, 5604, 8, 307, 1, 308, 1, 308, 1, 308, 5, 308, 5609, 8, 308, 10, 308, 12, 308, 5612, 9, 308, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 5618, 8, 309, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 5624, 8, 309, 3, 309, 5626, 8, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 3, 310, 5644, 8, 310, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 5655, 8, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 5670, 8, 312, 3, 312, 5672, 8, 312, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 3, 314, 5680, 8, 314, 1, 314, 3, 314, 5683, 8, 314, 1, 314, 3, 314, 5686, 8, 314, 1, 314, 3, 314, 5689, 8, 314, 1, 314, 3, 314, 5692, 8, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 3, 319, 5708, 8, 319, 1, 319, 1, 319, 3, 319, 5712, 8, 319, 1, 319, 1, 319, 1, 319, 3, 319, 5717, 8, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 3, 320, 5725, 8, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 3, 322, 5733, 8, 322, 1, 323, 1, 323, 1, 323, 5, 323, 5738, 8, 323, 10, 323, 12, 323, 5741, 9, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 5781, 8, 327, 10, 327, 12, 327, 5784, 9, 327, 1, 327, 1, 327, 3, 327, 5788, 8, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 5795, 8, 327, 10, 327, 12, 327, 5798, 9, 327, 1, 327, 1, 327, 3, 327, 5802, 8, 327, 1, 327, 3, 327, 5805, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 5810, 8, 327, 1, 328, 4, 328, 5813, 8, 328, 11, 328, 12, 328, 5814, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 5, 329, 5829, 8, 329, 10, 329, 12, 329, 5832, 9, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 5, 329, 5840, 8, 329, 10, 329, 12, 329, 5843, 9, 329, 1, 329, 1, 329, 3, 329, 5847, 8, 329, 1, 329, 1, 329, 3, 329, 5851, 8, 329, 1, 329, 1, 329, 3, 329, 5855, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 3, 331, 5871, 8, 331, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 5, 335, 5888, 8, 335, 10, 335, 12, 335, 5891, 9, 335, 1, 336, 1, 336, 1, 336, 5, 336, 5896, 8, 336, 10, 336, 12, 336, 5899, 9, 336, 1, 337, 3, 337, 5902, 8, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5916, 8, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5921, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5929, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5935, 8, 338, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 5, 340, 5942, 8, 340, 10, 340, 12, 340, 5945, 9, 340, 1, 341, 1, 341, 1, 341, 5, 341, 5950, 8, 341, 10, 341, 12, 341, 5953, 9, 341, 1, 342, 3, 342, 5956, 8, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 5981, 8, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 4, 344, 5989, 8, 344, 11, 344, 12, 344, 5990, 1, 344, 1, 344, 3, 344, 5995, 8, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 3, 348, 6018, 8, 348, 1, 348, 1, 348, 3, 348, 6022, 8, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 3, 349, 6029, 8, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 5, 351, 6038, 8, 351, 10, 351, 12, 351, 6041, 9, 351, 1, 352, 1, 352, 1, 352, 1, 352, 5, 352, 6047, 8, 352, 10, 352, 12, 352, 6050, 9, 352, 1, 352, 1, 352, 1, 352, 3, 352, 6055, 8, 352, 1, 353, 1, 353, 1, 353, 5, 353, 6060, 8, 353, 10, 353, 12, 353, 6063, 9, 353, 1, 354, 1, 354, 1, 354, 5, 354, 6068, 8, 354, 10, 354, 12, 354, 6071, 9, 354, 1, 355, 1, 355, 1, 355, 3, 355, 6076, 8, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 3, 356, 6083, 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 5, 357, 6089, 8, 357, 10, 357, 12, 357, 6092, 9, 357, 3, 357, 6094, 8, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 3, 360, 6109, 8, 360, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 5, 362, 6116, 8, 362, 10, 362, 12, 362, 6119, 9, 362, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 6125, 8, 363, 1, 364, 1, 364, 1, 364, 3, 364, 6130, 8, 364, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 0, 0, 367, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 0, 50, 2, 0, 22, 22, 430, 430, 1, 0, 33, 34, 2, 0, 30, 30, 33, 33, 2, 0, 450, 451, 482, 482, 2, 0, 93, 93, 482, 482, 2, 0, 516, 516, 518, 518, 2, 0, 403, 403, 434, 434, 1, 0, 94, 95, 2, 0, 12, 12, 44, 44, 2, 0, 298, 298, 425, 425, 2, 0, 39, 39, 52, 52, 2, 0, 14, 16, 54, 55, 2, 0, 493, 493, 499, 499, 3, 0, 69, 69, 135, 138, 305, 305, 2, 0, 100, 100, 337, 340, 2, 0, 514, 514, 518, 518, 1, 0, 517, 518, 1, 0, 288, 289, 6, 0, 288, 290, 484, 489, 493, 493, 497, 501, 504, 505, 513, 517, 4, 0, 128, 128, 290, 290, 299, 300, 518, 519, 12, 0, 39, 39, 148, 157, 160, 162, 164, 165, 167, 167, 169, 176, 180, 180, 182, 186, 195, 196, 227, 227, 229, 234, 254, 254, 3, 0, 128, 128, 140, 140, 518, 518, 3, 0, 258, 264, 403, 403, 518, 518, 4, 0, 135, 136, 249, 253, 298, 298, 518, 518, 2, 0, 218, 218, 516, 516, 1, 0, 422, 424, 1, 0, 514, 515, 2, 0, 514, 514, 517, 517, 2, 0, 332, 332, 335, 335, 2, 0, 344, 344, 442, 442, 2, 0, 341, 341, 518, 518, 2, 0, 298, 300, 514, 514, 2, 0, 385, 385, 518, 518, 8, 0, 148, 154, 160, 162, 165, 165, 169, 176, 195, 196, 227, 227, 229, 234, 518, 518, 2, 0, 294, 294, 487, 487, 1, 0, 84, 85, 8, 0, 143, 145, 188, 188, 193, 193, 225, 225, 317, 317, 380, 381, 383, 386, 518, 518, 2, 0, 332, 332, 403, 404, 1, 0, 518, 519, 2, 1, 493, 493, 497, 497, 1, 0, 484, 489, 1, 0, 490, 491, 2, 0, 492, 496, 506, 506, 1, 0, 265, 270, 1, 0, 279, 283, 7, 0, 123, 123, 128, 128, 140, 140, 186, 186, 279, 285, 299, 300, 518, 519, 1, 0, 299, 300, 7, 0, 49, 49, 189, 190, 220, 220, 304, 304, 408, 408, 472, 472, 518, 518, 40, 0, 41, 42, 44, 44, 49, 49, 51, 52, 54, 54, 69, 69, 116, 116, 124, 124, 135, 136, 138, 138, 164, 164, 168, 168, 189, 189, 192, 194, 197, 197, 206, 209, 216, 217, 219, 220, 223, 223, 235, 235, 250, 250, 279, 283, 305, 305, 307, 307, 334, 334, 336, 336, 353, 354, 374, 374, 377, 377, 397, 397, 403, 403, 405, 405, 419, 420, 422, 425, 433, 433, 446, 446, 450, 451, 456, 458, 480, 480, 482, 482, 58, 0, 8, 9, 17, 21, 23, 30, 32, 35, 38, 44, 48, 49, 51, 52, 54, 54, 56, 59, 65, 67, 69, 76, 81, 90, 93, 93, 96, 101, 103, 106, 110, 110, 112, 114, 116, 118, 120, 120, 124, 124, 132, 132, 135, 136, 138, 139, 141, 146, 148, 153, 156, 166, 168, 172, 174, 175, 179, 179, 188, 189, 192, 197, 208, 217, 219, 220, 222, 223, 227, 235, 248, 251, 254, 254, 265, 273, 279, 283, 288, 294, 297, 305, 307, 310, 314, 336, 341, 369, 371, 387, 389, 401, 403, 403, 405, 407, 409, 410, 412, 420, 422, 431, 433, 433, 435, 435, 438, 438, 440, 471, 477, 480, 482, 483, 495, 496, 6960, 0, 737, 1, 0, 0, 0, 2, 743, 1, 0, 0, 0, 4, 763, 1, 0, 0, 0, 6, 765, 1, 0, 0, 0, 8, 797, 1, 0, 0, 0, 10, 931, 1, 0, 0, 0, 12, 945, 1, 0, 0, 0, 14, 962, 1, 0, 0, 0, 16, 988, 1, 0, 0, 0, 18, 1029, 1, 0, 0, 0, 20, 1031, 1, 0, 0, 0, 22, 1045, 1, 0, 0, 0, 24, 1061, 1, 0, 0, 0, 26, 1063, 1, 0, 0, 0, 28, 1073, 1, 0, 0, 0, 30, 1080, 1, 0, 0, 0, 32, 1084, 1, 0, 0, 0, 34, 1111, 1, 0, 0, 0, 36, 1138, 1, 0, 0, 0, 38, 1215, 1, 0, 0, 0, 40, 1228, 1, 0, 0, 0, 42, 1298, 1, 0, 0, 0, 44, 1317, 1, 0, 0, 0, 46, 1319, 1, 0, 0, 0, 48, 1327, 1, 0, 0, 0, 50, 1332, 1, 0, 0, 0, 52, 1365, 1, 0, 0, 0, 54, 1367, 1, 0, 0, 0, 56, 1372, 1, 0, 0, 0, 58, 1383, 1, 0, 0, 0, 60, 1388, 1, 0, 0, 0, 62, 1396, 1, 0, 0, 0, 64, 1404, 1, 0, 0, 0, 66, 1412, 1, 0, 0, 0, 68, 1420, 1, 0, 0, 0, 70, 1428, 1, 0, 0, 0, 72, 1436, 1, 0, 0, 0, 74, 1445, 1, 0, 0, 0, 76, 1465, 1, 0, 0, 0, 78, 1467, 1, 0, 0, 0, 80, 1487, 1, 0, 0, 0, 82, 1492, 1, 0, 0, 0, 84, 1498, 1, 0, 0, 0, 86, 1506, 1, 0, 0, 0, 88, 1542, 1, 0, 0, 0, 90, 1590, 1, 0, 0, 0, 92, 1596, 1, 0, 0, 0, 94, 1607, 1, 0, 0, 0, 96, 1609, 1, 0, 0, 0, 98, 1623, 1, 0, 0, 0, 100, 1625, 1, 0, 0, 0, 102, 1634, 1, 0, 0, 0, 104, 1655, 1, 0, 0, 0, 106, 1690, 1, 0, 0, 0, 108, 1728, 1, 0, 0, 0, 110, 1730, 1, 0, 0, 0, 112, 1757, 1, 0, 0, 0, 114, 1760, 1, 0, 0, 0, 116, 1766, 1, 0, 0, 0, 118, 1774, 1, 0, 0, 0, 120, 1781, 1, 0, 0, 0, 122, 1808, 1, 0, 0, 0, 124, 1811, 1, 0, 0, 0, 126, 1834, 1, 0, 0, 0, 128, 1836, 1, 0, 0, 0, 130, 1904, 1, 0, 0, 0, 132, 1918, 1, 0, 0, 0, 134, 1938, 1, 0, 0, 0, 136, 1953, 1, 0, 0, 0, 138, 1955, 1, 0, 0, 0, 140, 1961, 1, 0, 0, 0, 142, 1969, 1, 0, 0, 0, 144, 1971, 1, 0, 0, 0, 146, 1979, 1, 0, 0, 0, 148, 1988, 1, 0, 0, 0, 150, 2014, 1, 0, 0, 0, 152, 2017, 1, 0, 0, 0, 154, 2021, 1, 0, 0, 0, 156, 2024, 1, 0, 0, 0, 158, 2034, 1, 0, 0, 0, 160, 2043, 1, 0, 0, 0, 162, 2045, 1, 0, 0, 0, 164, 2056, 1, 0, 0, 0, 166, 2065, 1, 0, 0, 0, 168, 2067, 1, 0, 0, 0, 170, 2101, 1, 0, 0, 0, 172, 2116, 1, 0, 0, 0, 174, 2118, 1, 0, 0, 0, 176, 2126, 1, 0, 0, 0, 178, 2134, 1, 0, 0, 0, 180, 2156, 1, 0, 0, 0, 182, 2175, 1, 0, 0, 0, 184, 2183, 1, 0, 0, 0, 186, 2189, 1, 0, 0, 0, 188, 2192, 1, 0, 0, 0, 190, 2198, 1, 0, 0, 0, 192, 2208, 1, 0, 0, 0, 194, 2216, 1, 0, 0, 0, 196, 2218, 1, 0, 0, 0, 198, 2225, 1, 0, 0, 0, 200, 2233, 1, 0, 0, 0, 202, 2238, 1, 0, 0, 0, 204, 2571, 1, 0, 0, 0, 206, 2573, 1, 0, 0, 0, 208, 2580, 1, 0, 0, 0, 210, 2590, 1, 0, 0, 0, 212, 2604, 1, 0, 0, 0, 214, 2613, 1, 0, 0, 0, 216, 2623, 1, 0, 0, 0, 218, 2635, 1, 0, 0, 0, 220, 2640, 1, 0, 0, 0, 222, 2645, 1, 0, 0, 0, 224, 2688, 1, 0, 0, 0, 226, 2710, 1, 0, 0, 0, 228, 2712, 1, 0, 0, 0, 230, 2733, 1, 0, 0, 0, 232, 2745, 1, 0, 0, 0, 234, 2755, 1, 0, 0, 0, 236, 2757, 1, 0, 0, 0, 238, 2759, 1, 0, 0, 0, 240, 2763, 1, 0, 0, 0, 242, 2766, 1, 0, 0, 0, 244, 2778, 1, 0, 0, 0, 246, 2794, 1, 0, 0, 0, 248, 2796, 1, 0, 0, 0, 250, 2802, 1, 0, 0, 0, 252, 2804, 1, 0, 0, 0, 254, 2808, 1, 0, 0, 0, 256, 2823, 1, 0, 0, 0, 258, 2839, 1, 0, 0, 0, 260, 2873, 1, 0, 0, 0, 262, 2887, 1, 0, 0, 0, 264, 2897, 1, 0, 0, 0, 266, 2902, 1, 0, 0, 0, 268, 2920, 1, 0, 0, 0, 270, 2938, 1, 0, 0, 0, 272, 2940, 1, 0, 0, 0, 274, 2943, 1, 0, 0, 0, 276, 2947, 1, 0, 0, 0, 278, 2961, 1, 0, 0, 0, 280, 2964, 1, 0, 0, 0, 282, 2978, 1, 0, 0, 0, 284, 3006, 1, 0, 0, 0, 286, 3010, 1, 0, 0, 0, 288, 3012, 1, 0, 0, 0, 290, 3014, 1, 0, 0, 0, 292, 3019, 1, 0, 0, 0, 294, 3041, 1, 0, 0, 0, 296, 3043, 1, 0, 0, 0, 298, 3060, 1, 0, 0, 0, 300, 3064, 1, 0, 0, 0, 302, 3076, 1, 0, 0, 0, 304, 3079, 1, 0, 0, 0, 306, 3142, 1, 0, 0, 0, 308, 3144, 1, 0, 0, 0, 310, 3152, 1, 0, 0, 0, 312, 3156, 1, 0, 0, 0, 314, 3184, 1, 0, 0, 0, 316, 3186, 1, 0, 0, 0, 318, 3192, 1, 0, 0, 0, 320, 3197, 1, 0, 0, 0, 322, 3202, 1, 0, 0, 0, 324, 3210, 1, 0, 0, 0, 326, 3218, 1, 0, 0, 0, 328, 3220, 1, 0, 0, 0, 330, 3228, 1, 0, 0, 0, 332, 3232, 1, 0, 0, 0, 334, 3239, 1, 0, 0, 0, 336, 3252, 1, 0, 0, 0, 338, 3256, 1, 0, 0, 0, 340, 3259, 1, 0, 0, 0, 342, 3267, 1, 0, 0, 0, 344, 3271, 1, 0, 0, 0, 346, 3279, 1, 0, 0, 0, 348, 3283, 1, 0, 0, 0, 350, 3291, 1, 0, 0, 0, 352, 3299, 1, 0, 0, 0, 354, 3304, 1, 0, 0, 0, 356, 3308, 1, 0, 0, 0, 358, 3310, 1, 0, 0, 0, 360, 3318, 1, 0, 0, 0, 362, 3329, 1, 0, 0, 0, 364, 3331, 1, 0, 0, 0, 366, 3343, 1, 0, 0, 0, 368, 3345, 1, 0, 0, 0, 370, 3353, 1, 0, 0, 0, 372, 3365, 1, 0, 0, 0, 374, 3367, 1, 0, 0, 0, 376, 3375, 1, 0, 0, 0, 378, 3377, 1, 0, 0, 0, 380, 3391, 1, 0, 0, 0, 382, 3393, 1, 0, 0, 0, 384, 3431, 1, 0, 0, 0, 386, 3433, 1, 0, 0, 0, 388, 3459, 1, 0, 0, 0, 390, 3465, 1, 0, 0, 0, 392, 3468, 1, 0, 0, 0, 394, 3501, 1, 0, 0, 0, 396, 3503, 1, 0, 0, 0, 398, 3505, 1, 0, 0, 0, 400, 3610, 1, 0, 0, 0, 402, 3612, 1, 0, 0, 0, 404, 3614, 1, 0, 0, 0, 406, 3671, 1, 0, 0, 0, 408, 3711, 1, 0, 0, 0, 410, 3713, 1, 0, 0, 0, 412, 3730, 1, 0, 0, 0, 414, 3735, 1, 0, 0, 0, 416, 3758, 1, 0, 0, 0, 418, 3760, 1, 0, 0, 0, 420, 3771, 1, 0, 0, 0, 422, 3777, 1, 0, 0, 0, 424, 3779, 1, 0, 0, 0, 426, 3781, 1, 0, 0, 0, 428, 3783, 1, 0, 0, 0, 430, 3808, 1, 0, 0, 0, 432, 3823, 1, 0, 0, 0, 434, 3834, 1, 0, 0, 0, 436, 3836, 1, 0, 0, 0, 438, 3840, 1, 0, 0, 0, 440, 3855, 1, 0, 0, 0, 442, 3859, 1, 0, 0, 0, 444, 3862, 1, 0, 0, 0, 446, 3868, 1, 0, 0, 0, 448, 3913, 1, 0, 0, 0, 450, 3915, 1, 0, 0, 0, 452, 3953, 1, 0, 0, 0, 454, 3957, 1, 0, 0, 0, 456, 3967, 1, 0, 0, 0, 458, 3978, 1, 0, 0, 0, 460, 3980, 1, 0, 0, 0, 462, 3992, 1, 0, 0, 0, 464, 4006, 1, 0, 0, 0, 466, 4024, 1, 0, 0, 0, 468, 4026, 1, 0, 0, 0, 470, 4029, 1, 0, 0, 0, 472, 4050, 1, 0, 0, 0, 474, 4070, 1, 0, 0, 0, 476, 4077, 1, 0, 0, 0, 478, 4092, 1, 0, 0, 0, 480, 4094, 1, 0, 0, 0, 482, 4102, 1, 0, 0, 0, 484, 4118, 1, 0, 0, 0, 486, 4153, 1, 0, 0, 0, 488, 4155, 1, 0, 0, 0, 490, 4159, 1, 0, 0, 0, 492, 4163, 1, 0, 0, 0, 494, 4180, 1, 0, 0, 0, 496, 4182, 1, 0, 0, 0, 498, 4208, 1, 0, 0, 0, 500, 4223, 1, 0, 0, 0, 502, 4231, 1, 0, 0, 0, 504, 4242, 1, 0, 0, 0, 506, 4266, 1, 0, 0, 0, 508, 4277, 1, 0, 0, 0, 510, 4289, 1, 0, 0, 0, 512, 4293, 1, 0, 0, 0, 514, 4315, 1, 0, 0, 0, 516, 4338, 1, 0, 0, 0, 518, 4342, 1, 0, 0, 0, 520, 4386, 1, 0, 0, 0, 522, 4416, 1, 0, 0, 0, 524, 4515, 1, 0, 0, 0, 526, 4550, 1, 0, 0, 0, 528, 4552, 1, 0, 0, 0, 530, 4557, 1, 0, 0, 0, 532, 4595, 1, 0, 0, 0, 534, 4599, 1, 0, 0, 0, 536, 4620, 1, 0, 0, 0, 538, 4636, 1, 0, 0, 0, 540, 4642, 1, 0, 0, 0, 542, 4653, 1, 0, 0, 0, 544, 4659, 1, 0, 0, 0, 546, 4666, 1, 0, 0, 0, 548, 4676, 1, 0, 0, 0, 550, 4692, 1, 0, 0, 0, 552, 4734, 1, 0, 0, 0, 554, 4736, 1, 0, 0, 0, 556, 4738, 1, 0, 0, 0, 558, 4746, 1, 0, 0, 0, 560, 4752, 1, 0, 0, 0, 562, 5161, 1, 0, 0, 0, 564, 5184, 1, 0, 0, 0, 566, 5186, 1, 0, 0, 0, 568, 5194, 1, 0, 0, 0, 570, 5196, 1, 0, 0, 0, 572, 5204, 1, 0, 0, 0, 574, 5357, 1, 0, 0, 0, 576, 5359, 1, 0, 0, 0, 578, 5405, 1, 0, 0, 0, 580, 5421, 1, 0, 0, 0, 582, 5423, 1, 0, 0, 0, 584, 5470, 1, 0, 0, 0, 586, 5472, 1, 0, 0, 0, 588, 5487, 1, 0, 0, 0, 590, 5499, 1, 0, 0, 0, 592, 5503, 1, 0, 0, 0, 594, 5505, 1, 0, 0, 0, 596, 5529, 1, 0, 0, 0, 598, 5551, 1, 0, 0, 0, 600, 5563, 1, 0, 0, 0, 602, 5579, 1, 0, 0, 0, 604, 5581, 1, 0, 0, 0, 606, 5584, 1, 0, 0, 0, 608, 5587, 1, 0, 0, 0, 610, 5590, 1, 0, 0, 0, 612, 5593, 1, 0, 0, 0, 614, 5601, 1, 0, 0, 0, 616, 5605, 1, 0, 0, 0, 618, 5625, 1, 0, 0, 0, 620, 5643, 1, 0, 0, 0, 622, 5645, 1, 0, 0, 0, 624, 5671, 1, 0, 0, 0, 626, 5673, 1, 0, 0, 0, 628, 5691, 1, 0, 0, 0, 630, 5693, 1, 0, 0, 0, 632, 5695, 1, 0, 0, 0, 634, 5697, 1, 0, 0, 0, 636, 5701, 1, 0, 0, 0, 638, 5716, 1, 0, 0, 0, 640, 5724, 1, 0, 0, 0, 642, 5726, 1, 0, 0, 0, 644, 5732, 1, 0, 0, 0, 646, 5734, 1, 0, 0, 0, 648, 5742, 1, 0, 0, 0, 650, 5744, 1, 0, 0, 0, 652, 5747, 1, 0, 0, 0, 654, 5809, 1, 0, 0, 0, 656, 5812, 1, 0, 0, 0, 658, 5816, 1, 0, 0, 0, 660, 5856, 1, 0, 0, 0, 662, 5870, 1, 0, 0, 0, 664, 5872, 1, 0, 0, 0, 666, 5874, 1, 0, 0, 0, 668, 5882, 1, 0, 0, 0, 670, 5884, 1, 0, 0, 0, 672, 5892, 1, 0, 0, 0, 674, 5901, 1, 0, 0, 0, 676, 5905, 1, 0, 0, 0, 678, 5936, 1, 0, 0, 0, 680, 5938, 1, 0, 0, 0, 682, 5946, 1, 0, 0, 0, 684, 5955, 1, 0, 0, 0, 686, 5980, 1, 0, 0, 0, 688, 5982, 1, 0, 0, 0, 690, 5998, 1, 0, 0, 0, 692, 6005, 1, 0, 0, 0, 694, 6012, 1, 0, 0, 0, 696, 6014, 1, 0, 0, 0, 698, 6025, 1, 0, 0, 0, 700, 6032, 1, 0, 0, 0, 702, 6034, 1, 0, 0, 0, 704, 6054, 1, 0, 0, 0, 706, 6056, 1, 0, 0, 0, 708, 6064, 1, 0, 0, 0, 710, 6075, 1, 0, 0, 0, 712, 6082, 1, 0, 0, 0, 714, 6084, 1, 0, 0, 0, 716, 6097, 1, 0, 0, 0, 718, 6099, 1, 0, 0, 0, 720, 6101, 1, 0, 0, 0, 722, 6110, 1, 0, 0, 0, 724, 6112, 1, 0, 0, 0, 726, 6124, 1, 0, 0, 0, 728, 6129, 1, 0, 0, 0, 730, 6131, 1, 0, 0, 0, 732, 6133, 1, 0, 0, 0, 734, 736, 3, 2, 1, 0, 735, 734, 1, 0, 0, 0, 736, 739, 1, 0, 0, 0, 737, 735, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, 740, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, 740, 741, 5, 0, 0, 1, 741, 1, 1, 0, 0, 0, 742, 744, 3, 718, 359, 0, 743, 742, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, 748, 1, 0, 0, 0, 745, 749, 3, 4, 2, 0, 746, 749, 3, 560, 280, 0, 747, 749, 3, 620, 310, 0, 748, 745, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 748, 747, 1, 0, 0, 0, 749, 751, 1, 0, 0, 0, 750, 752, 5, 497, 0, 0, 751, 750, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 754, 1, 0, 0, 0, 753, 755, 5, 493, 0, 0, 754, 753, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 3, 1, 0, 0, 0, 756, 764, 3, 8, 4, 0, 757, 764, 3, 10, 5, 0, 758, 764, 3, 38, 19, 0, 759, 764, 3, 40, 20, 0, 760, 764, 3, 42, 21, 0, 761, 764, 3, 6, 3, 0, 762, 764, 3, 44, 22, 0, 763, 756, 1, 0, 0, 0, 763, 757, 1, 0, 0, 0, 763, 758, 1, 0, 0, 0, 763, 759, 1, 0, 0, 0, 763, 760, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 763, 762, 1, 0, 0, 0, 764, 5, 1, 0, 0, 0, 765, 766, 5, 395, 0, 0, 766, 767, 5, 188, 0, 0, 767, 768, 5, 48, 0, 0, 768, 773, 3, 570, 285, 0, 769, 770, 5, 498, 0, 0, 770, 772, 3, 570, 285, 0, 771, 769, 1, 0, 0, 0, 772, 775, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 776, 1, 0, 0, 0, 775, 773, 1, 0, 0, 0, 776, 777, 5, 72, 0, 0, 777, 782, 3, 568, 284, 0, 778, 779, 5, 288, 0, 0, 779, 781, 3, 568, 284, 0, 780, 778, 1, 0, 0, 0, 781, 784, 1, 0, 0, 0, 782, 780, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 790, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 785, 788, 5, 292, 0, 0, 786, 789, 3, 708, 354, 0, 787, 789, 5, 518, 0, 0, 788, 786, 1, 0, 0, 0, 788, 787, 1, 0, 0, 0, 789, 791, 1, 0, 0, 0, 790, 785, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 794, 1, 0, 0, 0, 792, 793, 5, 436, 0, 0, 793, 795, 5, 437, 0, 0, 794, 792, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 7, 1, 0, 0, 0, 796, 798, 3, 718, 359, 0, 797, 796, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 802, 1, 0, 0, 0, 799, 801, 3, 720, 360, 0, 800, 799, 1, 0, 0, 0, 801, 804, 1, 0, 0, 0, 802, 800, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 805, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 805, 808, 5, 17, 0, 0, 806, 807, 5, 289, 0, 0, 807, 809, 7, 0, 0, 0, 808, 806, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 834, 1, 0, 0, 0, 810, 835, 3, 90, 45, 0, 811, 835, 3, 122, 61, 0, 812, 835, 3, 138, 69, 0, 813, 835, 3, 178, 89, 0, 814, 835, 3, 180, 90, 0, 815, 835, 3, 332, 166, 0, 816, 835, 3, 334, 167, 0, 817, 835, 3, 144, 72, 0, 818, 835, 3, 168, 84, 0, 819, 835, 3, 438, 219, 0, 820, 835, 3, 446, 223, 0, 821, 835, 3, 454, 227, 0, 822, 835, 3, 462, 231, 0, 823, 835, 3, 480, 240, 0, 824, 835, 3, 482, 241, 0, 825, 835, 3, 484, 242, 0, 826, 835, 3, 504, 252, 0, 827, 835, 3, 506, 253, 0, 828, 835, 3, 512, 256, 0, 829, 835, 3, 518, 259, 0, 830, 835, 3, 50, 25, 0, 831, 835, 3, 78, 39, 0, 832, 835, 3, 156, 78, 0, 833, 835, 3, 460, 230, 0, 834, 810, 1, 0, 0, 0, 834, 811, 1, 0, 0, 0, 834, 812, 1, 0, 0, 0, 834, 813, 1, 0, 0, 0, 834, 814, 1, 0, 0, 0, 834, 815, 1, 0, 0, 0, 834, 816, 1, 0, 0, 0, 834, 817, 1, 0, 0, 0, 834, 818, 1, 0, 0, 0, 834, 819, 1, 0, 0, 0, 834, 820, 1, 0, 0, 0, 834, 821, 1, 0, 0, 0, 834, 822, 1, 0, 0, 0, 834, 823, 1, 0, 0, 0, 834, 824, 1, 0, 0, 0, 834, 825, 1, 0, 0, 0, 834, 826, 1, 0, 0, 0, 834, 827, 1, 0, 0, 0, 834, 828, 1, 0, 0, 0, 834, 829, 1, 0, 0, 0, 834, 830, 1, 0, 0, 0, 834, 831, 1, 0, 0, 0, 834, 832, 1, 0, 0, 0, 834, 833, 1, 0, 0, 0, 835, 9, 1, 0, 0, 0, 836, 837, 5, 18, 0, 0, 837, 838, 5, 23, 0, 0, 838, 840, 3, 708, 354, 0, 839, 841, 3, 130, 65, 0, 840, 839, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 932, 1, 0, 0, 0, 844, 845, 5, 18, 0, 0, 845, 846, 5, 27, 0, 0, 846, 848, 3, 708, 354, 0, 847, 849, 3, 132, 66, 0, 848, 847, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 932, 1, 0, 0, 0, 852, 853, 5, 18, 0, 0, 853, 854, 5, 28, 0, 0, 854, 856, 3, 708, 354, 0, 855, 857, 3, 134, 67, 0, 856, 855, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 856, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 932, 1, 0, 0, 0, 860, 861, 5, 18, 0, 0, 861, 862, 5, 36, 0, 0, 862, 864, 3, 708, 354, 0, 863, 865, 3, 136, 68, 0, 864, 863, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 864, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 932, 1, 0, 0, 0, 868, 869, 5, 18, 0, 0, 869, 870, 5, 317, 0, 0, 870, 871, 5, 342, 0, 0, 871, 872, 3, 708, 354, 0, 872, 873, 5, 48, 0, 0, 873, 878, 3, 490, 245, 0, 874, 875, 5, 498, 0, 0, 875, 877, 3, 490, 245, 0, 876, 874, 1, 0, 0, 0, 877, 880, 1, 0, 0, 0, 878, 876, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 932, 1, 0, 0, 0, 880, 878, 1, 0, 0, 0, 881, 882, 5, 18, 0, 0, 882, 883, 5, 317, 0, 0, 883, 884, 5, 315, 0, 0, 884, 885, 3, 708, 354, 0, 885, 886, 5, 48, 0, 0, 886, 891, 3, 490, 245, 0, 887, 888, 5, 498, 0, 0, 888, 890, 3, 490, 245, 0, 889, 887, 1, 0, 0, 0, 890, 893, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 932, 1, 0, 0, 0, 893, 891, 1, 0, 0, 0, 894, 895, 5, 18, 0, 0, 895, 896, 5, 214, 0, 0, 896, 897, 5, 93, 0, 0, 897, 898, 7, 1, 0, 0, 898, 899, 3, 708, 354, 0, 899, 900, 5, 187, 0, 0, 900, 902, 5, 518, 0, 0, 901, 903, 3, 12, 6, 0, 902, 901, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 902, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, 905, 932, 1, 0, 0, 0, 906, 907, 5, 18, 0, 0, 907, 908, 5, 443, 0, 0, 908, 932, 3, 552, 276, 0, 909, 910, 5, 18, 0, 0, 910, 911, 5, 33, 0, 0, 911, 912, 3, 708, 354, 0, 912, 914, 5, 502, 0, 0, 913, 915, 3, 16, 8, 0, 914, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 914, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 918, 1, 0, 0, 0, 918, 919, 5, 503, 0, 0, 919, 932, 1, 0, 0, 0, 920, 921, 5, 18, 0, 0, 921, 922, 5, 34, 0, 0, 922, 923, 3, 708, 354, 0, 923, 925, 5, 502, 0, 0, 924, 926, 3, 16, 8, 0, 925, 924, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 925, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 929, 1, 0, 0, 0, 929, 930, 5, 503, 0, 0, 930, 932, 1, 0, 0, 0, 931, 836, 1, 0, 0, 0, 931, 844, 1, 0, 0, 0, 931, 852, 1, 0, 0, 0, 931, 860, 1, 0, 0, 0, 931, 868, 1, 0, 0, 0, 931, 881, 1, 0, 0, 0, 931, 894, 1, 0, 0, 0, 931, 906, 1, 0, 0, 0, 931, 909, 1, 0, 0, 0, 931, 920, 1, 0, 0, 0, 932, 11, 1, 0, 0, 0, 933, 934, 5, 48, 0, 0, 934, 939, 3, 14, 7, 0, 935, 936, 5, 498, 0, 0, 936, 938, 3, 14, 7, 0, 937, 935, 1, 0, 0, 0, 938, 941, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 946, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 942, 943, 5, 215, 0, 0, 943, 944, 5, 211, 0, 0, 944, 946, 5, 212, 0, 0, 945, 933, 1, 0, 0, 0, 945, 942, 1, 0, 0, 0, 946, 13, 1, 0, 0, 0, 947, 948, 5, 208, 0, 0, 948, 949, 5, 487, 0, 0, 949, 963, 5, 514, 0, 0, 950, 951, 5, 209, 0, 0, 951, 952, 5, 487, 0, 0, 952, 963, 5, 514, 0, 0, 953, 954, 5, 514, 0, 0, 954, 955, 5, 487, 0, 0, 955, 963, 5, 514, 0, 0, 956, 957, 5, 514, 0, 0, 957, 958, 5, 487, 0, 0, 958, 963, 5, 93, 0, 0, 959, 960, 5, 514, 0, 0, 960, 961, 5, 487, 0, 0, 961, 963, 5, 482, 0, 0, 962, 947, 1, 0, 0, 0, 962, 950, 1, 0, 0, 0, 962, 953, 1, 0, 0, 0, 962, 956, 1, 0, 0, 0, 962, 959, 1, 0, 0, 0, 963, 15, 1, 0, 0, 0, 964, 966, 3, 18, 9, 0, 965, 967, 5, 497, 0, 0, 966, 965, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 989, 1, 0, 0, 0, 968, 970, 3, 24, 12, 0, 969, 971, 5, 497, 0, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 989, 1, 0, 0, 0, 972, 974, 3, 26, 13, 0, 973, 975, 5, 497, 0, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 989, 1, 0, 0, 0, 976, 978, 3, 28, 14, 0, 977, 979, 5, 497, 0, 0, 978, 977, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 989, 1, 0, 0, 0, 980, 982, 3, 30, 15, 0, 981, 983, 5, 497, 0, 0, 982, 981, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 989, 1, 0, 0, 0, 984, 986, 3, 32, 16, 0, 985, 987, 5, 497, 0, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 989, 1, 0, 0, 0, 988, 964, 1, 0, 0, 0, 988, 968, 1, 0, 0, 0, 988, 972, 1, 0, 0, 0, 988, 976, 1, 0, 0, 0, 988, 980, 1, 0, 0, 0, 988, 984, 1, 0, 0, 0, 989, 17, 1, 0, 0, 0, 990, 991, 5, 48, 0, 0, 991, 992, 5, 35, 0, 0, 992, 993, 5, 487, 0, 0, 993, 1006, 3, 708, 354, 0, 994, 995, 5, 358, 0, 0, 995, 996, 5, 500, 0, 0, 996, 1001, 3, 20, 10, 0, 997, 998, 5, 498, 0, 0, 998, 1000, 3, 20, 10, 0, 999, 997, 1, 0, 0, 0, 1000, 1003, 1, 0, 0, 0, 1001, 999, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1004, 1, 0, 0, 0, 1003, 1001, 1, 0, 0, 0, 1004, 1005, 5, 501, 0, 0, 1005, 1007, 1, 0, 0, 0, 1006, 994, 1, 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1030, 1, 0, 0, 0, 1008, 1009, 5, 48, 0, 0, 1009, 1010, 3, 22, 11, 0, 1010, 1011, 5, 93, 0, 0, 1011, 1012, 3, 710, 355, 0, 1012, 1030, 1, 0, 0, 0, 1013, 1014, 5, 48, 0, 0, 1014, 1015, 5, 500, 0, 0, 1015, 1020, 3, 22, 11, 0, 1016, 1017, 5, 498, 0, 0, 1017, 1019, 3, 22, 11, 0, 1018, 1016, 1, 0, 0, 0, 1019, 1022, 1, 0, 0, 0, 1020, 1018, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1023, 1, 0, 0, 0, 1022, 1020, 1, 0, 0, 0, 1023, 1024, 5, 501, 0, 0, 1024, 1025, 5, 93, 0, 0, 1025, 1026, 3, 710, 355, 0, 1026, 1030, 1, 0, 0, 0, 1027, 1028, 5, 48, 0, 0, 1028, 1030, 3, 22, 11, 0, 1029, 990, 1, 0, 0, 0, 1029, 1008, 1, 0, 0, 0, 1029, 1013, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1030, 19, 1, 0, 0, 0, 1031, 1032, 3, 710, 355, 0, 1032, 1033, 5, 76, 0, 0, 1033, 1034, 3, 710, 355, 0, 1034, 21, 1, 0, 0, 0, 1035, 1036, 5, 192, 0, 0, 1036, 1037, 5, 487, 0, 0, 1037, 1046, 3, 406, 203, 0, 1038, 1039, 3, 710, 355, 0, 1039, 1040, 5, 487, 0, 0, 1040, 1041, 3, 430, 215, 0, 1041, 1046, 1, 0, 0, 0, 1042, 1043, 5, 514, 0, 0, 1043, 1044, 5, 487, 0, 0, 1044, 1046, 3, 430, 215, 0, 1045, 1035, 1, 0, 0, 0, 1045, 1038, 1, 0, 0, 0, 1045, 1042, 1, 0, 0, 0, 1046, 23, 1, 0, 0, 0, 1047, 1048, 5, 392, 0, 0, 1048, 1049, 5, 394, 0, 0, 1049, 1050, 3, 710, 355, 0, 1050, 1051, 5, 502, 0, 0, 1051, 1052, 3, 390, 195, 0, 1052, 1053, 5, 503, 0, 0, 1053, 1062, 1, 0, 0, 0, 1054, 1055, 5, 392, 0, 0, 1055, 1056, 5, 393, 0, 0, 1056, 1057, 3, 710, 355, 0, 1057, 1058, 5, 502, 0, 0, 1058, 1059, 3, 390, 195, 0, 1059, 1060, 5, 503, 0, 0, 1060, 1062, 1, 0, 0, 0, 1061, 1047, 1, 0, 0, 0, 1061, 1054, 1, 0, 0, 0, 1062, 25, 1, 0, 0, 0, 1063, 1064, 5, 19, 0, 0, 1064, 1065, 5, 187, 0, 0, 1065, 1070, 3, 710, 355, 0, 1066, 1067, 5, 498, 0, 0, 1067, 1069, 3, 710, 355, 0, 1068, 1066, 1, 0, 0, 0, 1069, 1072, 1, 0, 0, 0, 1070, 1068, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 27, 1, 0, 0, 0, 1072, 1070, 1, 0, 0, 0, 1073, 1074, 5, 430, 0, 0, 1074, 1075, 3, 710, 355, 0, 1075, 1076, 5, 139, 0, 0, 1076, 1077, 5, 502, 0, 0, 1077, 1078, 3, 390, 195, 0, 1078, 1079, 5, 503, 0, 0, 1079, 29, 1, 0, 0, 0, 1080, 1081, 5, 47, 0, 0, 1081, 1082, 5, 204, 0, 0, 1082, 1083, 3, 350, 175, 0, 1083, 31, 1, 0, 0, 0, 1084, 1085, 5, 19, 0, 0, 1085, 1086, 5, 204, 0, 0, 1086, 1087, 5, 517, 0, 0, 1087, 33, 1, 0, 0, 0, 1088, 1089, 5, 377, 0, 0, 1089, 1090, 7, 2, 0, 0, 1090, 1093, 3, 708, 354, 0, 1091, 1092, 5, 429, 0, 0, 1092, 1094, 3, 708, 354, 0, 1093, 1091, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1112, 1, 0, 0, 0, 1095, 1096, 5, 378, 0, 0, 1096, 1097, 5, 33, 0, 0, 1097, 1112, 3, 708, 354, 0, 1098, 1099, 5, 290, 0, 0, 1099, 1100, 5, 379, 0, 0, 1100, 1101, 5, 33, 0, 0, 1101, 1112, 3, 708, 354, 0, 1102, 1103, 5, 375, 0, 0, 1103, 1107, 5, 500, 0, 0, 1104, 1106, 3, 36, 18, 0, 1105, 1104, 1, 0, 0, 0, 1106, 1109, 1, 0, 0, 0, 1107, 1105, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1110, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1110, 1112, 5, 501, 0, 0, 1111, 1088, 1, 0, 0, 0, 1111, 1095, 1, 0, 0, 0, 1111, 1098, 1, 0, 0, 0, 1111, 1102, 1, 0, 0, 0, 1112, 35, 1, 0, 0, 0, 1113, 1114, 5, 375, 0, 0, 1114, 1115, 5, 156, 0, 0, 1115, 1120, 5, 514, 0, 0, 1116, 1117, 5, 33, 0, 0, 1117, 1121, 3, 708, 354, 0, 1118, 1119, 5, 30, 0, 0, 1119, 1121, 3, 708, 354, 0, 1120, 1116, 1, 0, 0, 0, 1120, 1118, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 1123, 1, 0, 0, 0, 1122, 1124, 5, 497, 0, 0, 1123, 1122, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1139, 1, 0, 0, 0, 1125, 1126, 5, 375, 0, 0, 1126, 1127, 5, 514, 0, 0, 1127, 1131, 5, 500, 0, 0, 1128, 1130, 3, 36, 18, 0, 1129, 1128, 1, 0, 0, 0, 1130, 1133, 1, 0, 0, 0, 1131, 1129, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, 1132, 1134, 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, 1134, 1136, 5, 501, 0, 0, 1135, 1137, 5, 497, 0, 0, 1136, 1135, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1139, 1, 0, 0, 0, 1138, 1113, 1, 0, 0, 0, 1138, 1125, 1, 0, 0, 0, 1139, 37, 1, 0, 0, 0, 1140, 1141, 5, 19, 0, 0, 1141, 1142, 5, 23, 0, 0, 1142, 1216, 3, 708, 354, 0, 1143, 1144, 5, 19, 0, 0, 1144, 1145, 5, 27, 0, 0, 1145, 1216, 3, 708, 354, 0, 1146, 1147, 5, 19, 0, 0, 1147, 1148, 5, 28, 0, 0, 1148, 1216, 3, 708, 354, 0, 1149, 1150, 5, 19, 0, 0, 1150, 1151, 5, 37, 0, 0, 1151, 1216, 3, 708, 354, 0, 1152, 1153, 5, 19, 0, 0, 1153, 1154, 5, 30, 0, 0, 1154, 1216, 3, 708, 354, 0, 1155, 1156, 5, 19, 0, 0, 1156, 1157, 5, 31, 0, 0, 1157, 1216, 3, 708, 354, 0, 1158, 1159, 5, 19, 0, 0, 1159, 1160, 5, 33, 0, 0, 1160, 1216, 3, 708, 354, 0, 1161, 1162, 5, 19, 0, 0, 1162, 1163, 5, 34, 0, 0, 1163, 1216, 3, 708, 354, 0, 1164, 1165, 5, 19, 0, 0, 1165, 1166, 5, 29, 0, 0, 1166, 1216, 3, 708, 354, 0, 1167, 1168, 5, 19, 0, 0, 1168, 1169, 5, 36, 0, 0, 1169, 1216, 3, 708, 354, 0, 1170, 1171, 5, 19, 0, 0, 1171, 1172, 5, 114, 0, 0, 1172, 1173, 5, 116, 0, 0, 1173, 1216, 3, 708, 354, 0, 1174, 1175, 5, 19, 0, 0, 1175, 1176, 5, 41, 0, 0, 1176, 1177, 3, 708, 354, 0, 1177, 1178, 5, 93, 0, 0, 1178, 1179, 3, 708, 354, 0, 1179, 1216, 1, 0, 0, 0, 1180, 1181, 5, 19, 0, 0, 1181, 1182, 5, 317, 0, 0, 1182, 1183, 5, 342, 0, 0, 1183, 1216, 3, 708, 354, 0, 1184, 1185, 5, 19, 0, 0, 1185, 1186, 5, 317, 0, 0, 1186, 1187, 5, 315, 0, 0, 1187, 1216, 3, 708, 354, 0, 1188, 1189, 5, 19, 0, 0, 1189, 1190, 5, 440, 0, 0, 1190, 1191, 5, 441, 0, 0, 1191, 1192, 5, 315, 0, 0, 1192, 1216, 3, 708, 354, 0, 1193, 1194, 5, 19, 0, 0, 1194, 1195, 5, 32, 0, 0, 1195, 1216, 3, 708, 354, 0, 1196, 1197, 5, 19, 0, 0, 1197, 1198, 5, 227, 0, 0, 1198, 1199, 5, 228, 0, 0, 1199, 1216, 3, 708, 354, 0, 1200, 1201, 5, 19, 0, 0, 1201, 1202, 5, 314, 0, 0, 1202, 1203, 5, 342, 0, 0, 1203, 1216, 3, 708, 354, 0, 1204, 1205, 5, 19, 0, 0, 1205, 1206, 5, 444, 0, 0, 1206, 1216, 5, 514, 0, 0, 1207, 1208, 5, 19, 0, 0, 1208, 1209, 5, 220, 0, 0, 1209, 1210, 5, 514, 0, 0, 1210, 1213, 5, 292, 0, 0, 1211, 1214, 3, 708, 354, 0, 1212, 1214, 5, 518, 0, 0, 1213, 1211, 1, 0, 0, 0, 1213, 1212, 1, 0, 0, 0, 1214, 1216, 1, 0, 0, 0, 1215, 1140, 1, 0, 0, 0, 1215, 1143, 1, 0, 0, 0, 1215, 1146, 1, 0, 0, 0, 1215, 1149, 1, 0, 0, 0, 1215, 1152, 1, 0, 0, 0, 1215, 1155, 1, 0, 0, 0, 1215, 1158, 1, 0, 0, 0, 1215, 1161, 1, 0, 0, 0, 1215, 1164, 1, 0, 0, 0, 1215, 1167, 1, 0, 0, 0, 1215, 1170, 1, 0, 0, 0, 1215, 1174, 1, 0, 0, 0, 1215, 1180, 1, 0, 0, 0, 1215, 1184, 1, 0, 0, 0, 1215, 1188, 1, 0, 0, 0, 1215, 1193, 1, 0, 0, 0, 1215, 1196, 1, 0, 0, 0, 1215, 1200, 1, 0, 0, 0, 1215, 1204, 1, 0, 0, 0, 1215, 1207, 1, 0, 0, 0, 1216, 39, 1, 0, 0, 0, 1217, 1218, 5, 20, 0, 0, 1218, 1219, 5, 23, 0, 0, 1219, 1220, 3, 708, 354, 0, 1220, 1221, 5, 426, 0, 0, 1221, 1222, 5, 518, 0, 0, 1222, 1229, 1, 0, 0, 0, 1223, 1224, 5, 20, 0, 0, 1224, 1225, 5, 29, 0, 0, 1225, 1226, 5, 518, 0, 0, 1226, 1227, 5, 426, 0, 0, 1227, 1229, 5, 518, 0, 0, 1228, 1217, 1, 0, 0, 0, 1228, 1223, 1, 0, 0, 0, 1229, 41, 1, 0, 0, 0, 1230, 1239, 5, 21, 0, 0, 1231, 1240, 5, 33, 0, 0, 1232, 1240, 5, 30, 0, 0, 1233, 1240, 5, 34, 0, 0, 1234, 1240, 5, 31, 0, 0, 1235, 1240, 5, 28, 0, 0, 1236, 1240, 5, 37, 0, 0, 1237, 1238, 5, 356, 0, 0, 1238, 1240, 5, 355, 0, 0, 1239, 1231, 1, 0, 0, 0, 1239, 1232, 1, 0, 0, 0, 1239, 1233, 1, 0, 0, 0, 1239, 1234, 1, 0, 0, 0, 1239, 1235, 1, 0, 0, 0, 1239, 1236, 1, 0, 0, 0, 1239, 1237, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1242, 3, 708, 354, 0, 1242, 1243, 5, 426, 0, 0, 1243, 1244, 5, 220, 0, 0, 1244, 1250, 5, 514, 0, 0, 1245, 1248, 5, 292, 0, 0, 1246, 1249, 3, 708, 354, 0, 1247, 1249, 5, 518, 0, 0, 1248, 1246, 1, 0, 0, 0, 1248, 1247, 1, 0, 0, 0, 1249, 1251, 1, 0, 0, 0, 1250, 1245, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1299, 1, 0, 0, 0, 1252, 1261, 5, 21, 0, 0, 1253, 1262, 5, 33, 0, 0, 1254, 1262, 5, 30, 0, 0, 1255, 1262, 5, 34, 0, 0, 1256, 1262, 5, 31, 0, 0, 1257, 1262, 5, 28, 0, 0, 1258, 1262, 5, 37, 0, 0, 1259, 1260, 5, 356, 0, 0, 1260, 1262, 5, 355, 0, 0, 1261, 1253, 1, 0, 0, 0, 1261, 1254, 1, 0, 0, 0, 1261, 1255, 1, 0, 0, 0, 1261, 1256, 1, 0, 0, 0, 1261, 1257, 1, 0, 0, 0, 1261, 1258, 1, 0, 0, 0, 1261, 1259, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 3, 708, 354, 0, 1264, 1267, 5, 426, 0, 0, 1265, 1268, 3, 708, 354, 0, 1266, 1268, 5, 518, 0, 0, 1267, 1265, 1, 0, 0, 0, 1267, 1266, 1, 0, 0, 0, 1268, 1299, 1, 0, 0, 0, 1269, 1270, 5, 21, 0, 0, 1270, 1271, 5, 23, 0, 0, 1271, 1272, 3, 708, 354, 0, 1272, 1275, 5, 426, 0, 0, 1273, 1276, 3, 708, 354, 0, 1274, 1276, 5, 518, 0, 0, 1275, 1273, 1, 0, 0, 0, 1275, 1274, 1, 0, 0, 0, 1276, 1299, 1, 0, 0, 0, 1277, 1278, 5, 21, 0, 0, 1278, 1279, 5, 220, 0, 0, 1279, 1280, 3, 708, 354, 0, 1280, 1281, 5, 426, 0, 0, 1281, 1282, 5, 220, 0, 0, 1282, 1288, 5, 514, 0, 0, 1283, 1286, 5, 292, 0, 0, 1284, 1287, 3, 708, 354, 0, 1285, 1287, 5, 518, 0, 0, 1286, 1284, 1, 0, 0, 0, 1286, 1285, 1, 0, 0, 0, 1287, 1289, 1, 0, 0, 0, 1288, 1283, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1299, 1, 0, 0, 0, 1290, 1291, 5, 21, 0, 0, 1291, 1292, 5, 220, 0, 0, 1292, 1293, 3, 708, 354, 0, 1293, 1296, 5, 426, 0, 0, 1294, 1297, 3, 708, 354, 0, 1295, 1297, 5, 518, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1295, 1, 0, 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1230, 1, 0, 0, 0, 1298, 1252, 1, 0, 0, 0, 1298, 1269, 1, 0, 0, 0, 1298, 1277, 1, 0, 0, 0, 1298, 1290, 1, 0, 0, 0, 1299, 43, 1, 0, 0, 0, 1300, 1318, 3, 46, 23, 0, 1301, 1318, 3, 48, 24, 0, 1302, 1318, 3, 52, 26, 0, 1303, 1318, 3, 54, 27, 0, 1304, 1318, 3, 56, 28, 0, 1305, 1318, 3, 58, 29, 0, 1306, 1318, 3, 60, 30, 0, 1307, 1318, 3, 62, 31, 0, 1308, 1318, 3, 64, 32, 0, 1309, 1318, 3, 66, 33, 0, 1310, 1318, 3, 68, 34, 0, 1311, 1318, 3, 70, 35, 0, 1312, 1318, 3, 72, 36, 0, 1313, 1318, 3, 74, 37, 0, 1314, 1318, 3, 76, 38, 0, 1315, 1318, 3, 80, 40, 0, 1316, 1318, 3, 82, 41, 0, 1317, 1300, 1, 0, 0, 0, 1317, 1301, 1, 0, 0, 0, 1317, 1302, 1, 0, 0, 0, 1317, 1303, 1, 0, 0, 0, 1317, 1304, 1, 0, 0, 0, 1317, 1305, 1, 0, 0, 0, 1317, 1306, 1, 0, 0, 0, 1317, 1307, 1, 0, 0, 0, 1317, 1308, 1, 0, 0, 0, 1317, 1309, 1, 0, 0, 0, 1317, 1310, 1, 0, 0, 0, 1317, 1311, 1, 0, 0, 0, 1317, 1312, 1, 0, 0, 0, 1317, 1313, 1, 0, 0, 0, 1317, 1314, 1, 0, 0, 0, 1317, 1315, 1, 0, 0, 0, 1317, 1316, 1, 0, 0, 0, 1318, 45, 1, 0, 0, 0, 1319, 1320, 5, 17, 0, 0, 1320, 1321, 5, 29, 0, 0, 1321, 1322, 5, 446, 0, 0, 1322, 1325, 3, 708, 354, 0, 1323, 1324, 5, 480, 0, 0, 1324, 1326, 5, 514, 0, 0, 1325, 1323, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 47, 1, 0, 0, 0, 1327, 1328, 5, 19, 0, 0, 1328, 1329, 5, 29, 0, 0, 1329, 1330, 5, 446, 0, 0, 1330, 1331, 3, 708, 354, 0, 1331, 49, 1, 0, 0, 0, 1332, 1333, 5, 458, 0, 0, 1333, 1334, 5, 446, 0, 0, 1334, 1335, 3, 710, 355, 0, 1335, 1336, 5, 500, 0, 0, 1336, 1337, 3, 84, 42, 0, 1337, 1341, 5, 501, 0, 0, 1338, 1339, 5, 452, 0, 0, 1339, 1340, 5, 85, 0, 0, 1340, 1342, 5, 447, 0, 0, 1341, 1338, 1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 51, 1, 0, 0, 0, 1343, 1344, 5, 18, 0, 0, 1344, 1345, 5, 458, 0, 0, 1345, 1346, 5, 446, 0, 0, 1346, 1347, 3, 710, 355, 0, 1347, 1348, 5, 47, 0, 0, 1348, 1349, 5, 29, 0, 0, 1349, 1350, 5, 447, 0, 0, 1350, 1351, 5, 500, 0, 0, 1351, 1352, 3, 84, 42, 0, 1352, 1353, 5, 501, 0, 0, 1353, 1366, 1, 0, 0, 0, 1354, 1355, 5, 18, 0, 0, 1355, 1356, 5, 458, 0, 0, 1356, 1357, 5, 446, 0, 0, 1357, 1358, 3, 710, 355, 0, 1358, 1359, 5, 133, 0, 0, 1359, 1360, 5, 29, 0, 0, 1360, 1361, 5, 447, 0, 0, 1361, 1362, 5, 500, 0, 0, 1362, 1363, 3, 84, 42, 0, 1363, 1364, 5, 501, 0, 0, 1364, 1366, 1, 0, 0, 0, 1365, 1343, 1, 0, 0, 0, 1365, 1354, 1, 0, 0, 0, 1366, 53, 1, 0, 0, 0, 1367, 1368, 5, 19, 0, 0, 1368, 1369, 5, 458, 0, 0, 1369, 1370, 5, 446, 0, 0, 1370, 1371, 3, 710, 355, 0, 1371, 55, 1, 0, 0, 0, 1372, 1373, 5, 448, 0, 0, 1373, 1374, 3, 84, 42, 0, 1374, 1375, 5, 93, 0, 0, 1375, 1376, 3, 708, 354, 0, 1376, 1377, 5, 500, 0, 0, 1377, 1378, 3, 86, 43, 0, 1378, 1381, 5, 501, 0, 0, 1379, 1380, 5, 72, 0, 0, 1380, 1382, 5, 514, 0, 0, 1381, 1379, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 57, 1, 0, 0, 0, 1383, 1384, 5, 449, 0, 0, 1384, 1385, 3, 84, 42, 0, 1385, 1386, 5, 93, 0, 0, 1386, 1387, 3, 708, 354, 0, 1387, 59, 1, 0, 0, 0, 1388, 1389, 5, 448, 0, 0, 1389, 1390, 5, 399, 0, 0, 1390, 1391, 5, 93, 0, 0, 1391, 1392, 5, 30, 0, 0, 1392, 1393, 3, 708, 354, 0, 1393, 1394, 5, 426, 0, 0, 1394, 1395, 3, 84, 42, 0, 1395, 61, 1, 0, 0, 0, 1396, 1397, 5, 449, 0, 0, 1397, 1398, 5, 399, 0, 0, 1398, 1399, 5, 93, 0, 0, 1399, 1400, 5, 30, 0, 0, 1400, 1401, 3, 708, 354, 0, 1401, 1402, 5, 71, 0, 0, 1402, 1403, 3, 84, 42, 0, 1403, 63, 1, 0, 0, 0, 1404, 1405, 5, 448, 0, 0, 1405, 1406, 5, 25, 0, 0, 1406, 1407, 5, 93, 0, 0, 1407, 1408, 5, 33, 0, 0, 1408, 1409, 3, 708, 354, 0, 1409, 1410, 5, 426, 0, 0, 1410, 1411, 3, 84, 42, 0, 1411, 65, 1, 0, 0, 0, 1412, 1413, 5, 449, 0, 0, 1413, 1414, 5, 25, 0, 0, 1414, 1415, 5, 93, 0, 0, 1415, 1416, 5, 33, 0, 0, 1416, 1417, 3, 708, 354, 0, 1417, 1418, 5, 71, 0, 0, 1418, 1419, 3, 84, 42, 0, 1419, 67, 1, 0, 0, 0, 1420, 1421, 5, 448, 0, 0, 1421, 1422, 5, 399, 0, 0, 1422, 1423, 5, 93, 0, 0, 1423, 1424, 5, 32, 0, 0, 1424, 1425, 3, 708, 354, 0, 1425, 1426, 5, 426, 0, 0, 1426, 1427, 3, 84, 42, 0, 1427, 69, 1, 0, 0, 0, 1428, 1429, 5, 449, 0, 0, 1429, 1430, 5, 399, 0, 0, 1430, 1431, 5, 93, 0, 0, 1431, 1432, 5, 32, 0, 0, 1432, 1433, 3, 708, 354, 0, 1433, 1434, 5, 71, 0, 0, 1434, 1435, 3, 84, 42, 0, 1435, 71, 1, 0, 0, 0, 1436, 1437, 5, 448, 0, 0, 1437, 1438, 5, 456, 0, 0, 1438, 1439, 5, 93, 0, 0, 1439, 1440, 5, 317, 0, 0, 1440, 1441, 5, 315, 0, 0, 1441, 1442, 3, 708, 354, 0, 1442, 1443, 5, 426, 0, 0, 1443, 1444, 3, 84, 42, 0, 1444, 73, 1, 0, 0, 0, 1445, 1446, 5, 449, 0, 0, 1446, 1447, 5, 456, 0, 0, 1447, 1448, 5, 93, 0, 0, 1448, 1449, 5, 317, 0, 0, 1449, 1450, 5, 315, 0, 0, 1450, 1451, 3, 708, 354, 0, 1451, 1452, 5, 71, 0, 0, 1452, 1453, 3, 84, 42, 0, 1453, 75, 1, 0, 0, 0, 1454, 1455, 5, 18, 0, 0, 1455, 1456, 5, 59, 0, 0, 1456, 1457, 5, 445, 0, 0, 1457, 1458, 5, 457, 0, 0, 1458, 1466, 7, 3, 0, 0, 1459, 1460, 5, 18, 0, 0, 1460, 1461, 5, 59, 0, 0, 1461, 1462, 5, 445, 0, 0, 1462, 1463, 5, 453, 0, 0, 1463, 1464, 5, 483, 0, 0, 1464, 1466, 7, 4, 0, 0, 1465, 1454, 1, 0, 0, 0, 1465, 1459, 1, 0, 0, 0, 1466, 77, 1, 0, 0, 0, 1467, 1468, 5, 453, 0, 0, 1468, 1469, 5, 458, 0, 0, 1469, 1470, 5, 514, 0, 0, 1470, 1471, 5, 354, 0, 0, 1471, 1474, 5, 514, 0, 0, 1472, 1473, 5, 23, 0, 0, 1473, 1475, 3, 708, 354, 0, 1474, 1472, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1476, 1, 0, 0, 0, 1476, 1477, 5, 500, 0, 0, 1477, 1482, 3, 710, 355, 0, 1478, 1479, 5, 498, 0, 0, 1479, 1481, 3, 710, 355, 0, 1480, 1478, 1, 0, 0, 0, 1481, 1484, 1, 0, 0, 0, 1482, 1480, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1485, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1485, 1486, 5, 501, 0, 0, 1486, 79, 1, 0, 0, 0, 1487, 1488, 5, 19, 0, 0, 1488, 1489, 5, 453, 0, 0, 1489, 1490, 5, 458, 0, 0, 1490, 1491, 5, 514, 0, 0, 1491, 81, 1, 0, 0, 0, 1492, 1493, 5, 395, 0, 0, 1493, 1496, 5, 445, 0, 0, 1494, 1495, 5, 292, 0, 0, 1495, 1497, 3, 708, 354, 0, 1496, 1494, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 83, 1, 0, 0, 0, 1498, 1503, 3, 708, 354, 0, 1499, 1500, 5, 498, 0, 0, 1500, 1502, 3, 708, 354, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 85, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1511, 3, 88, 44, 0, 1507, 1508, 5, 498, 0, 0, 1508, 1510, 3, 88, 44, 0, 1509, 1507, 1, 0, 0, 0, 1510, 1513, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 87, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1543, 5, 17, 0, 0, 1515, 1543, 5, 100, 0, 0, 1516, 1517, 5, 478, 0, 0, 1517, 1543, 5, 492, 0, 0, 1518, 1519, 5, 478, 0, 0, 1519, 1520, 5, 500, 0, 0, 1520, 1525, 5, 518, 0, 0, 1521, 1522, 5, 498, 0, 0, 1522, 1524, 5, 518, 0, 0, 1523, 1521, 1, 0, 0, 0, 1524, 1527, 1, 0, 0, 0, 1525, 1523, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1528, 1, 0, 0, 0, 1527, 1525, 1, 0, 0, 0, 1528, 1543, 5, 501, 0, 0, 1529, 1530, 5, 479, 0, 0, 1530, 1543, 5, 492, 0, 0, 1531, 1532, 5, 479, 0, 0, 1532, 1533, 5, 500, 0, 0, 1533, 1538, 5, 518, 0, 0, 1534, 1535, 5, 498, 0, 0, 1535, 1537, 5, 518, 0, 0, 1536, 1534, 1, 0, 0, 0, 1537, 1540, 1, 0, 0, 0, 1538, 1536, 1, 0, 0, 0, 1538, 1539, 1, 0, 0, 0, 1539, 1541, 1, 0, 0, 0, 1540, 1538, 1, 0, 0, 0, 1541, 1543, 5, 501, 0, 0, 1542, 1514, 1, 0, 0, 0, 1542, 1515, 1, 0, 0, 0, 1542, 1516, 1, 0, 0, 0, 1542, 1518, 1, 0, 0, 0, 1542, 1529, 1, 0, 0, 0, 1542, 1531, 1, 0, 0, 0, 1543, 89, 1, 0, 0, 0, 1544, 1545, 5, 24, 0, 0, 1545, 1546, 5, 23, 0, 0, 1546, 1548, 3, 708, 354, 0, 1547, 1549, 3, 92, 46, 0, 1548, 1547, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1551, 1, 0, 0, 0, 1550, 1552, 3, 94, 47, 0, 1551, 1550, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1591, 1, 0, 0, 0, 1553, 1554, 5, 11, 0, 0, 1554, 1555, 5, 23, 0, 0, 1555, 1557, 3, 708, 354, 0, 1556, 1558, 3, 92, 46, 0, 1557, 1556, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1560, 1, 0, 0, 0, 1559, 1561, 3, 94, 47, 0, 1560, 1559, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1591, 1, 0, 0, 0, 1562, 1563, 5, 25, 0, 0, 1563, 1564, 5, 23, 0, 0, 1564, 1566, 3, 708, 354, 0, 1565, 1567, 3, 94, 47, 0, 1566, 1565, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1570, 5, 76, 0, 0, 1569, 1571, 5, 500, 0, 0, 1570, 1569, 1, 0, 0, 0, 1570, 1571, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1574, 3, 582, 291, 0, 1573, 1575, 5, 501, 0, 0, 1574, 1573, 1, 0, 0, 0, 1574, 1575, 1, 0, 0, 0, 1575, 1591, 1, 0, 0, 0, 1576, 1577, 5, 26, 0, 0, 1577, 1578, 5, 23, 0, 0, 1578, 1580, 3, 708, 354, 0, 1579, 1581, 3, 94, 47, 0, 1580, 1579, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 1591, 1, 0, 0, 0, 1582, 1583, 5, 23, 0, 0, 1583, 1585, 3, 708, 354, 0, 1584, 1586, 3, 92, 46, 0, 1585, 1584, 1, 0, 0, 0, 1585, 1586, 1, 0, 0, 0, 1586, 1588, 1, 0, 0, 0, 1587, 1589, 3, 94, 47, 0, 1588, 1587, 1, 0, 0, 0, 1588, 1589, 1, 0, 0, 0, 1589, 1591, 1, 0, 0, 0, 1590, 1544, 1, 0, 0, 0, 1590, 1553, 1, 0, 0, 0, 1590, 1562, 1, 0, 0, 0, 1590, 1576, 1, 0, 0, 0, 1590, 1582, 1, 0, 0, 0, 1591, 91, 1, 0, 0, 0, 1592, 1593, 5, 46, 0, 0, 1593, 1597, 3, 708, 354, 0, 1594, 1595, 5, 45, 0, 0, 1595, 1597, 3, 708, 354, 0, 1596, 1592, 1, 0, 0, 0, 1596, 1594, 1, 0, 0, 0, 1597, 93, 1, 0, 0, 0, 1598, 1600, 5, 500, 0, 0, 1599, 1601, 3, 100, 50, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 5, 501, 0, 0, 1603, 1605, 3, 96, 48, 0, 1604, 1603, 1, 0, 0, 0, 1604, 1605, 1, 0, 0, 0, 1605, 1608, 1, 0, 0, 0, 1606, 1608, 3, 96, 48, 0, 1607, 1598, 1, 0, 0, 0, 1607, 1606, 1, 0, 0, 0, 1608, 95, 1, 0, 0, 0, 1609, 1616, 3, 98, 49, 0, 1610, 1612, 5, 498, 0, 0, 1611, 1610, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1613, 1, 0, 0, 0, 1613, 1615, 3, 98, 49, 0, 1614, 1611, 1, 0, 0, 0, 1615, 1618, 1, 0, 0, 0, 1616, 1614, 1, 0, 0, 0, 1616, 1617, 1, 0, 0, 0, 1617, 97, 1, 0, 0, 0, 1618, 1616, 1, 0, 0, 0, 1619, 1620, 5, 408, 0, 0, 1620, 1624, 5, 514, 0, 0, 1621, 1622, 5, 41, 0, 0, 1622, 1624, 3, 114, 57, 0, 1623, 1619, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1624, 99, 1, 0, 0, 0, 1625, 1630, 3, 102, 51, 0, 1626, 1627, 5, 498, 0, 0, 1627, 1629, 3, 102, 51, 0, 1628, 1626, 1, 0, 0, 0, 1629, 1632, 1, 0, 0, 0, 1630, 1628, 1, 0, 0, 0, 1630, 1631, 1, 0, 0, 0, 1631, 101, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1633, 1635, 3, 718, 359, 0, 1634, 1633, 1, 0, 0, 0, 1634, 1635, 1, 0, 0, 0, 1635, 1639, 1, 0, 0, 0, 1636, 1638, 3, 720, 360, 0, 1637, 1636, 1, 0, 0, 0, 1638, 1641, 1, 0, 0, 0, 1639, 1637, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 1642, 1, 0, 0, 0, 1641, 1639, 1, 0, 0, 0, 1642, 1643, 3, 104, 52, 0, 1643, 1644, 5, 506, 0, 0, 1644, 1648, 3, 108, 54, 0, 1645, 1647, 3, 106, 53, 0, 1646, 1645, 1, 0, 0, 0, 1647, 1650, 1, 0, 0, 0, 1648, 1646, 1, 0, 0, 0, 1648, 1649, 1, 0, 0, 0, 1649, 103, 1, 0, 0, 0, 1650, 1648, 1, 0, 0, 0, 1651, 1656, 5, 518, 0, 0, 1652, 1656, 5, 520, 0, 0, 1653, 1656, 3, 730, 365, 0, 1654, 1656, 5, 38, 0, 0, 1655, 1651, 1, 0, 0, 0, 1655, 1652, 1, 0, 0, 0, 1655, 1653, 1, 0, 0, 0, 1655, 1654, 1, 0, 0, 0, 1656, 105, 1, 0, 0, 0, 1657, 1660, 5, 7, 0, 0, 1658, 1659, 5, 305, 0, 0, 1659, 1661, 5, 514, 0, 0, 1660, 1658, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1691, 1, 0, 0, 0, 1662, 1663, 5, 290, 0, 0, 1663, 1666, 5, 291, 0, 0, 1664, 1665, 5, 305, 0, 0, 1665, 1667, 5, 514, 0, 0, 1666, 1664, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1691, 1, 0, 0, 0, 1668, 1671, 5, 297, 0, 0, 1669, 1670, 5, 305, 0, 0, 1670, 1672, 5, 514, 0, 0, 1671, 1669, 1, 0, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 1691, 1, 0, 0, 0, 1673, 1676, 5, 298, 0, 0, 1674, 1677, 3, 712, 356, 0, 1675, 1677, 3, 668, 334, 0, 1676, 1674, 1, 0, 0, 0, 1676, 1675, 1, 0, 0, 0, 1677, 1691, 1, 0, 0, 0, 1678, 1681, 5, 304, 0, 0, 1679, 1680, 5, 305, 0, 0, 1680, 1682, 5, 514, 0, 0, 1681, 1679, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1691, 1, 0, 0, 0, 1683, 1688, 5, 313, 0, 0, 1684, 1686, 5, 477, 0, 0, 1685, 1684, 1, 0, 0, 0, 1685, 1686, 1, 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1687, 1689, 3, 708, 354, 0, 1688, 1685, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1691, 1, 0, 0, 0, 1690, 1657, 1, 0, 0, 0, 1690, 1662, 1, 0, 0, 0, 1690, 1668, 1, 0, 0, 0, 1690, 1673, 1, 0, 0, 0, 1690, 1678, 1, 0, 0, 0, 1690, 1683, 1, 0, 0, 0, 1691, 107, 1, 0, 0, 0, 1692, 1696, 5, 265, 0, 0, 1693, 1694, 5, 500, 0, 0, 1694, 1695, 7, 5, 0, 0, 1695, 1697, 5, 501, 0, 0, 1696, 1693, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1729, 1, 0, 0, 0, 1698, 1729, 5, 266, 0, 0, 1699, 1729, 5, 267, 0, 0, 1700, 1729, 5, 268, 0, 0, 1701, 1729, 5, 269, 0, 0, 1702, 1729, 5, 270, 0, 0, 1703, 1729, 5, 271, 0, 0, 1704, 1729, 5, 272, 0, 0, 1705, 1729, 5, 273, 0, 0, 1706, 1729, 5, 274, 0, 0, 1707, 1729, 5, 275, 0, 0, 1708, 1729, 5, 276, 0, 0, 1709, 1710, 5, 277, 0, 0, 1710, 1711, 5, 500, 0, 0, 1711, 1712, 3, 110, 55, 0, 1712, 1713, 5, 501, 0, 0, 1713, 1729, 1, 0, 0, 0, 1714, 1715, 5, 23, 0, 0, 1715, 1716, 5, 488, 0, 0, 1716, 1717, 5, 518, 0, 0, 1717, 1729, 5, 489, 0, 0, 1718, 1719, 5, 278, 0, 0, 1719, 1729, 3, 708, 354, 0, 1720, 1721, 5, 28, 0, 0, 1721, 1722, 5, 500, 0, 0, 1722, 1723, 3, 708, 354, 0, 1723, 1724, 5, 501, 0, 0, 1724, 1729, 1, 0, 0, 0, 1725, 1726, 5, 13, 0, 0, 1726, 1729, 3, 708, 354, 0, 1727, 1729, 3, 708, 354, 0, 1728, 1692, 1, 0, 0, 0, 1728, 1698, 1, 0, 0, 0, 1728, 1699, 1, 0, 0, 0, 1728, 1700, 1, 0, 0, 0, 1728, 1701, 1, 0, 0, 0, 1728, 1702, 1, 0, 0, 0, 1728, 1703, 1, 0, 0, 0, 1728, 1704, 1, 0, 0, 0, 1728, 1705, 1, 0, 0, 0, 1728, 1706, 1, 0, 0, 0, 1728, 1707, 1, 0, 0, 0, 1728, 1708, 1, 0, 0, 0, 1728, 1709, 1, 0, 0, 0, 1728, 1714, 1, 0, 0, 0, 1728, 1718, 1, 0, 0, 0, 1728, 1720, 1, 0, 0, 0, 1728, 1725, 1, 0, 0, 0, 1728, 1727, 1, 0, 0, 0, 1729, 109, 1, 0, 0, 0, 1730, 1731, 7, 6, 0, 0, 1731, 111, 1, 0, 0, 0, 1732, 1736, 5, 265, 0, 0, 1733, 1734, 5, 500, 0, 0, 1734, 1735, 7, 5, 0, 0, 1735, 1737, 5, 501, 0, 0, 1736, 1733, 1, 0, 0, 0, 1736, 1737, 1, 0, 0, 0, 1737, 1758, 1, 0, 0, 0, 1738, 1758, 5, 266, 0, 0, 1739, 1758, 5, 267, 0, 0, 1740, 1758, 5, 268, 0, 0, 1741, 1758, 5, 269, 0, 0, 1742, 1758, 5, 270, 0, 0, 1743, 1758, 5, 271, 0, 0, 1744, 1758, 5, 272, 0, 0, 1745, 1758, 5, 273, 0, 0, 1746, 1758, 5, 274, 0, 0, 1747, 1758, 5, 275, 0, 0, 1748, 1758, 5, 276, 0, 0, 1749, 1750, 5, 278, 0, 0, 1750, 1758, 3, 708, 354, 0, 1751, 1752, 5, 28, 0, 0, 1752, 1753, 5, 500, 0, 0, 1753, 1754, 3, 708, 354, 0, 1754, 1755, 5, 501, 0, 0, 1755, 1758, 1, 0, 0, 0, 1756, 1758, 3, 708, 354, 0, 1757, 1732, 1, 0, 0, 0, 1757, 1738, 1, 0, 0, 0, 1757, 1739, 1, 0, 0, 0, 1757, 1740, 1, 0, 0, 0, 1757, 1741, 1, 0, 0, 0, 1757, 1742, 1, 0, 0, 0, 1757, 1743, 1, 0, 0, 0, 1757, 1744, 1, 0, 0, 0, 1757, 1745, 1, 0, 0, 0, 1757, 1746, 1, 0, 0, 0, 1757, 1747, 1, 0, 0, 0, 1757, 1748, 1, 0, 0, 0, 1757, 1749, 1, 0, 0, 0, 1757, 1751, 1, 0, 0, 0, 1757, 1756, 1, 0, 0, 0, 1758, 113, 1, 0, 0, 0, 1759, 1761, 5, 518, 0, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1763, 5, 500, 0, 0, 1763, 1764, 3, 116, 58, 0, 1764, 1765, 5, 501, 0, 0, 1765, 115, 1, 0, 0, 0, 1766, 1771, 3, 118, 59, 0, 1767, 1768, 5, 498, 0, 0, 1768, 1770, 3, 118, 59, 0, 1769, 1767, 1, 0, 0, 0, 1770, 1773, 1, 0, 0, 0, 1771, 1769, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 117, 1, 0, 0, 0, 1773, 1771, 1, 0, 0, 0, 1774, 1776, 3, 120, 60, 0, 1775, 1777, 7, 7, 0, 0, 1776, 1775, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 119, 1, 0, 0, 0, 1778, 1782, 5, 518, 0, 0, 1779, 1782, 5, 520, 0, 0, 1780, 1782, 3, 730, 365, 0, 1781, 1778, 1, 0, 0, 0, 1781, 1779, 1, 0, 0, 0, 1781, 1780, 1, 0, 0, 0, 1782, 121, 1, 0, 0, 0, 1783, 1784, 5, 27, 0, 0, 1784, 1785, 3, 708, 354, 0, 1785, 1786, 5, 71, 0, 0, 1786, 1787, 3, 708, 354, 0, 1787, 1788, 5, 426, 0, 0, 1788, 1790, 3, 708, 354, 0, 1789, 1791, 3, 124, 62, 0, 1790, 1789, 1, 0, 0, 0, 1790, 1791, 1, 0, 0, 0, 1791, 1809, 1, 0, 0, 0, 1792, 1793, 5, 27, 0, 0, 1793, 1794, 3, 708, 354, 0, 1794, 1795, 5, 500, 0, 0, 1795, 1796, 5, 71, 0, 0, 1796, 1797, 3, 708, 354, 0, 1797, 1798, 5, 426, 0, 0, 1798, 1803, 3, 708, 354, 0, 1799, 1800, 5, 498, 0, 0, 1800, 1802, 3, 126, 63, 0, 1801, 1799, 1, 0, 0, 0, 1802, 1805, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1806, 1, 0, 0, 0, 1805, 1803, 1, 0, 0, 0, 1806, 1807, 5, 501, 0, 0, 1807, 1809, 1, 0, 0, 0, 1808, 1783, 1, 0, 0, 0, 1808, 1792, 1, 0, 0, 0, 1809, 123, 1, 0, 0, 0, 1810, 1812, 3, 126, 63, 0, 1811, 1810, 1, 0, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1811, 1, 0, 0, 0, 1813, 1814, 1, 0, 0, 0, 1814, 125, 1, 0, 0, 0, 1815, 1817, 5, 419, 0, 0, 1816, 1818, 5, 506, 0, 0, 1817, 1816, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1835, 7, 8, 0, 0, 1820, 1822, 5, 42, 0, 0, 1821, 1823, 5, 506, 0, 0, 1822, 1821, 1, 0, 0, 0, 1822, 1823, 1, 0, 0, 0, 1823, 1824, 1, 0, 0, 0, 1824, 1835, 7, 9, 0, 0, 1825, 1827, 5, 51, 0, 0, 1826, 1828, 5, 506, 0, 0, 1827, 1826, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1829, 1, 0, 0, 0, 1829, 1835, 7, 10, 0, 0, 1830, 1831, 5, 53, 0, 0, 1831, 1835, 3, 128, 64, 0, 1832, 1833, 5, 408, 0, 0, 1833, 1835, 5, 514, 0, 0, 1834, 1815, 1, 0, 0, 0, 1834, 1820, 1, 0, 0, 0, 1834, 1825, 1, 0, 0, 0, 1834, 1830, 1, 0, 0, 0, 1834, 1832, 1, 0, 0, 0, 1835, 127, 1, 0, 0, 0, 1836, 1837, 7, 11, 0, 0, 1837, 129, 1, 0, 0, 0, 1838, 1839, 5, 47, 0, 0, 1839, 1840, 5, 38, 0, 0, 1840, 1905, 3, 102, 51, 0, 1841, 1842, 5, 47, 0, 0, 1842, 1843, 5, 39, 0, 0, 1843, 1905, 3, 102, 51, 0, 1844, 1845, 5, 20, 0, 0, 1845, 1846, 5, 38, 0, 0, 1846, 1847, 3, 104, 52, 0, 1847, 1848, 5, 426, 0, 0, 1848, 1849, 3, 104, 52, 0, 1849, 1905, 1, 0, 0, 0, 1850, 1851, 5, 20, 0, 0, 1851, 1852, 5, 39, 0, 0, 1852, 1853, 3, 104, 52, 0, 1853, 1854, 5, 426, 0, 0, 1854, 1855, 3, 104, 52, 0, 1855, 1905, 1, 0, 0, 0, 1856, 1857, 5, 22, 0, 0, 1857, 1858, 5, 38, 0, 0, 1858, 1859, 3, 104, 52, 0, 1859, 1863, 3, 108, 54, 0, 1860, 1862, 3, 106, 53, 0, 1861, 1860, 1, 0, 0, 0, 1862, 1865, 1, 0, 0, 0, 1863, 1861, 1, 0, 0, 0, 1863, 1864, 1, 0, 0, 0, 1864, 1905, 1, 0, 0, 0, 1865, 1863, 1, 0, 0, 0, 1866, 1867, 5, 22, 0, 0, 1867, 1868, 5, 39, 0, 0, 1868, 1869, 3, 104, 52, 0, 1869, 1873, 3, 108, 54, 0, 1870, 1872, 3, 106, 53, 0, 1871, 1870, 1, 0, 0, 0, 1872, 1875, 1, 0, 0, 0, 1873, 1871, 1, 0, 0, 0, 1873, 1874, 1, 0, 0, 0, 1874, 1905, 1, 0, 0, 0, 1875, 1873, 1, 0, 0, 0, 1876, 1877, 5, 19, 0, 0, 1877, 1878, 5, 38, 0, 0, 1878, 1905, 3, 104, 52, 0, 1879, 1880, 5, 19, 0, 0, 1880, 1881, 5, 39, 0, 0, 1881, 1905, 3, 104, 52, 0, 1882, 1883, 5, 48, 0, 0, 1883, 1884, 5, 50, 0, 0, 1884, 1905, 5, 514, 0, 0, 1885, 1886, 5, 48, 0, 0, 1886, 1887, 5, 408, 0, 0, 1887, 1905, 5, 514, 0, 0, 1888, 1889, 5, 48, 0, 0, 1889, 1890, 5, 43, 0, 0, 1890, 1905, 5, 42, 0, 0, 1891, 1892, 5, 48, 0, 0, 1892, 1893, 5, 49, 0, 0, 1893, 1894, 5, 500, 0, 0, 1894, 1895, 5, 516, 0, 0, 1895, 1896, 5, 498, 0, 0, 1896, 1897, 5, 516, 0, 0, 1897, 1905, 5, 501, 0, 0, 1898, 1899, 5, 47, 0, 0, 1899, 1900, 5, 41, 0, 0, 1900, 1905, 3, 114, 57, 0, 1901, 1902, 5, 19, 0, 0, 1902, 1903, 5, 41, 0, 0, 1903, 1905, 5, 518, 0, 0, 1904, 1838, 1, 0, 0, 0, 1904, 1841, 1, 0, 0, 0, 1904, 1844, 1, 0, 0, 0, 1904, 1850, 1, 0, 0, 0, 1904, 1856, 1, 0, 0, 0, 1904, 1866, 1, 0, 0, 0, 1904, 1876, 1, 0, 0, 0, 1904, 1879, 1, 0, 0, 0, 1904, 1882, 1, 0, 0, 0, 1904, 1885, 1, 0, 0, 0, 1904, 1888, 1, 0, 0, 0, 1904, 1891, 1, 0, 0, 0, 1904, 1898, 1, 0, 0, 0, 1904, 1901, 1, 0, 0, 0, 1905, 131, 1, 0, 0, 0, 1906, 1907, 5, 48, 0, 0, 1907, 1908, 5, 53, 0, 0, 1908, 1919, 3, 128, 64, 0, 1909, 1910, 5, 48, 0, 0, 1910, 1911, 5, 42, 0, 0, 1911, 1919, 7, 9, 0, 0, 1912, 1913, 5, 48, 0, 0, 1913, 1914, 5, 51, 0, 0, 1914, 1919, 7, 10, 0, 0, 1915, 1916, 5, 48, 0, 0, 1916, 1917, 5, 408, 0, 0, 1917, 1919, 5, 514, 0, 0, 1918, 1906, 1, 0, 0, 0, 1918, 1909, 1, 0, 0, 0, 1918, 1912, 1, 0, 0, 0, 1918, 1915, 1, 0, 0, 0, 1919, 133, 1, 0, 0, 0, 1920, 1921, 5, 47, 0, 0, 1921, 1922, 5, 420, 0, 0, 1922, 1925, 5, 518, 0, 0, 1923, 1924, 5, 189, 0, 0, 1924, 1926, 5, 514, 0, 0, 1925, 1923, 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1939, 1, 0, 0, 0, 1927, 1928, 5, 20, 0, 0, 1928, 1929, 5, 420, 0, 0, 1929, 1930, 5, 518, 0, 0, 1930, 1931, 5, 426, 0, 0, 1931, 1939, 5, 518, 0, 0, 1932, 1933, 5, 19, 0, 0, 1933, 1934, 5, 420, 0, 0, 1934, 1939, 5, 518, 0, 0, 1935, 1936, 5, 48, 0, 0, 1936, 1937, 5, 408, 0, 0, 1937, 1939, 5, 514, 0, 0, 1938, 1920, 1, 0, 0, 0, 1938, 1927, 1, 0, 0, 0, 1938, 1932, 1, 0, 0, 0, 1938, 1935, 1, 0, 0, 0, 1939, 135, 1, 0, 0, 0, 1940, 1941, 5, 47, 0, 0, 1941, 1942, 5, 33, 0, 0, 1942, 1945, 3, 708, 354, 0, 1943, 1944, 5, 49, 0, 0, 1944, 1946, 5, 516, 0, 0, 1945, 1943, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1954, 1, 0, 0, 0, 1947, 1948, 5, 19, 0, 0, 1948, 1949, 5, 33, 0, 0, 1949, 1954, 3, 708, 354, 0, 1950, 1951, 5, 48, 0, 0, 1951, 1952, 5, 408, 0, 0, 1952, 1954, 5, 514, 0, 0, 1953, 1940, 1, 0, 0, 0, 1953, 1947, 1, 0, 0, 0, 1953, 1950, 1, 0, 0, 0, 1954, 137, 1, 0, 0, 0, 1955, 1956, 5, 29, 0, 0, 1956, 1958, 5, 518, 0, 0, 1957, 1959, 3, 140, 70, 0, 1958, 1957, 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 139, 1, 0, 0, 0, 1960, 1962, 3, 142, 71, 0, 1961, 1960, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 1961, 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 141, 1, 0, 0, 0, 1965, 1966, 5, 408, 0, 0, 1966, 1970, 5, 514, 0, 0, 1967, 1968, 5, 220, 0, 0, 1968, 1970, 5, 514, 0, 0, 1969, 1965, 1, 0, 0, 0, 1969, 1967, 1, 0, 0, 0, 1970, 143, 1, 0, 0, 0, 1971, 1972, 5, 28, 0, 0, 1972, 1973, 3, 708, 354, 0, 1973, 1974, 5, 500, 0, 0, 1974, 1975, 3, 146, 73, 0, 1975, 1977, 5, 501, 0, 0, 1976, 1978, 3, 152, 76, 0, 1977, 1976, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 145, 1, 0, 0, 0, 1979, 1984, 3, 148, 74, 0, 1980, 1981, 5, 498, 0, 0, 1981, 1983, 3, 148, 74, 0, 1982, 1980, 1, 0, 0, 0, 1983, 1986, 1, 0, 0, 0, 1984, 1982, 1, 0, 0, 0, 1984, 1985, 1, 0, 0, 0, 1985, 147, 1, 0, 0, 0, 1986, 1984, 1, 0, 0, 0, 1987, 1989, 3, 718, 359, 0, 1988, 1987, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1995, 3, 150, 75, 0, 1991, 1993, 5, 189, 0, 0, 1992, 1991, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 1996, 5, 514, 0, 0, 1995, 1992, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 149, 1, 0, 0, 0, 1997, 2015, 5, 518, 0, 0, 1998, 2015, 5, 520, 0, 0, 1999, 2015, 3, 730, 365, 0, 2000, 2015, 5, 315, 0, 0, 2001, 2015, 5, 316, 0, 0, 2002, 2015, 5, 350, 0, 0, 2003, 2015, 5, 349, 0, 0, 2004, 2015, 5, 321, 0, 0, 2005, 2015, 5, 342, 0, 0, 2006, 2015, 5, 343, 0, 0, 2007, 2015, 5, 344, 0, 0, 2008, 2015, 5, 346, 0, 0, 2009, 2015, 5, 26, 0, 0, 2010, 2015, 5, 351, 0, 0, 2011, 2015, 5, 373, 0, 0, 2012, 2015, 5, 481, 0, 0, 2013, 2015, 5, 418, 0, 0, 2014, 1997, 1, 0, 0, 0, 2014, 1998, 1, 0, 0, 0, 2014, 1999, 1, 0, 0, 0, 2014, 2000, 1, 0, 0, 0, 2014, 2001, 1, 0, 0, 0, 2014, 2002, 1, 0, 0, 0, 2014, 2003, 1, 0, 0, 0, 2014, 2004, 1, 0, 0, 0, 2014, 2005, 1, 0, 0, 0, 2014, 2006, 1, 0, 0, 0, 2014, 2007, 1, 0, 0, 0, 2014, 2008, 1, 0, 0, 0, 2014, 2009, 1, 0, 0, 0, 2014, 2010, 1, 0, 0, 0, 2014, 2011, 1, 0, 0, 0, 2014, 2012, 1, 0, 0, 0, 2014, 2013, 1, 0, 0, 0, 2015, 151, 1, 0, 0, 0, 2016, 2018, 3, 154, 77, 0, 2017, 2016, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2017, 1, 0, 0, 0, 2019, 2020, 1, 0, 0, 0, 2020, 153, 1, 0, 0, 0, 2021, 2022, 5, 408, 0, 0, 2022, 2023, 5, 514, 0, 0, 2023, 155, 1, 0, 0, 0, 2024, 2025, 5, 227, 0, 0, 2025, 2026, 5, 228, 0, 0, 2026, 2028, 3, 708, 354, 0, 2027, 2029, 3, 158, 79, 0, 2028, 2027, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 2031, 1, 0, 0, 0, 2030, 2032, 3, 162, 81, 0, 2031, 2030, 1, 0, 0, 0, 2031, 2032, 1, 0, 0, 0, 2032, 157, 1, 0, 0, 0, 2033, 2035, 3, 160, 80, 0, 2034, 2033, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2034, 1, 0, 0, 0, 2036, 2037, 1, 0, 0, 0, 2037, 159, 1, 0, 0, 0, 2038, 2039, 5, 364, 0, 0, 2039, 2040, 5, 457, 0, 0, 2040, 2044, 5, 514, 0, 0, 2041, 2042, 5, 408, 0, 0, 2042, 2044, 5, 514, 0, 0, 2043, 2038, 1, 0, 0, 0, 2043, 2041, 1, 0, 0, 0, 2044, 161, 1, 0, 0, 0, 2045, 2046, 5, 500, 0, 0, 2046, 2051, 3, 164, 82, 0, 2047, 2048, 5, 498, 0, 0, 2048, 2050, 3, 164, 82, 0, 2049, 2047, 1, 0, 0, 0, 2050, 2053, 1, 0, 0, 0, 2051, 2049, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 2054, 1, 0, 0, 0, 2053, 2051, 1, 0, 0, 0, 2054, 2055, 5, 501, 0, 0, 2055, 163, 1, 0, 0, 0, 2056, 2057, 5, 227, 0, 0, 2057, 2058, 3, 166, 83, 0, 2058, 2059, 5, 71, 0, 0, 2059, 2060, 5, 335, 0, 0, 2060, 2061, 5, 514, 0, 0, 2061, 165, 1, 0, 0, 0, 2062, 2066, 5, 518, 0, 0, 2063, 2066, 5, 520, 0, 0, 2064, 2066, 3, 730, 365, 0, 2065, 2062, 1, 0, 0, 0, 2065, 2063, 1, 0, 0, 0, 2065, 2064, 1, 0, 0, 0, 2066, 167, 1, 0, 0, 0, 2067, 2068, 5, 301, 0, 0, 2068, 2069, 5, 303, 0, 0, 2069, 2070, 3, 708, 354, 0, 2070, 2071, 5, 429, 0, 0, 2071, 2072, 3, 708, 354, 0, 2072, 2073, 3, 170, 85, 0, 2073, 169, 1, 0, 0, 0, 2074, 2075, 5, 310, 0, 0, 2075, 2076, 3, 668, 334, 0, 2076, 2077, 5, 302, 0, 0, 2077, 2078, 5, 514, 0, 0, 2078, 2102, 1, 0, 0, 0, 2079, 2080, 5, 304, 0, 0, 2080, 2081, 3, 174, 87, 0, 2081, 2082, 5, 302, 0, 0, 2082, 2083, 5, 514, 0, 0, 2083, 2102, 1, 0, 0, 0, 2084, 2085, 5, 297, 0, 0, 2085, 2086, 3, 176, 88, 0, 2086, 2087, 5, 302, 0, 0, 2087, 2088, 5, 514, 0, 0, 2088, 2102, 1, 0, 0, 0, 2089, 2090, 5, 307, 0, 0, 2090, 2091, 3, 174, 87, 0, 2091, 2092, 3, 172, 86, 0, 2092, 2093, 5, 302, 0, 0, 2093, 2094, 5, 514, 0, 0, 2094, 2102, 1, 0, 0, 0, 2095, 2096, 5, 308, 0, 0, 2096, 2097, 3, 174, 87, 0, 2097, 2098, 5, 514, 0, 0, 2098, 2099, 5, 302, 0, 0, 2099, 2100, 5, 514, 0, 0, 2100, 2102, 1, 0, 0, 0, 2101, 2074, 1, 0, 0, 0, 2101, 2079, 1, 0, 0, 0, 2101, 2084, 1, 0, 0, 0, 2101, 2089, 1, 0, 0, 0, 2101, 2095, 1, 0, 0, 0, 2102, 171, 1, 0, 0, 0, 2103, 2104, 5, 293, 0, 0, 2104, 2105, 3, 712, 356, 0, 2105, 2106, 5, 288, 0, 0, 2106, 2107, 3, 712, 356, 0, 2107, 2117, 1, 0, 0, 0, 2108, 2109, 5, 488, 0, 0, 2109, 2117, 3, 712, 356, 0, 2110, 2111, 5, 485, 0, 0, 2111, 2117, 3, 712, 356, 0, 2112, 2113, 5, 489, 0, 0, 2113, 2117, 3, 712, 356, 0, 2114, 2115, 5, 486, 0, 0, 2115, 2117, 3, 712, 356, 0, 2116, 2103, 1, 0, 0, 0, 2116, 2108, 1, 0, 0, 0, 2116, 2110, 1, 0, 0, 0, 2116, 2112, 1, 0, 0, 0, 2116, 2114, 1, 0, 0, 0, 2117, 173, 1, 0, 0, 0, 2118, 2123, 5, 518, 0, 0, 2119, 2120, 5, 493, 0, 0, 2120, 2122, 5, 518, 0, 0, 2121, 2119, 1, 0, 0, 0, 2122, 2125, 1, 0, 0, 0, 2123, 2121, 1, 0, 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 175, 1, 0, 0, 0, 2125, 2123, 1, 0, 0, 0, 2126, 2131, 3, 174, 87, 0, 2127, 2128, 5, 498, 0, 0, 2128, 2130, 3, 174, 87, 0, 2129, 2127, 1, 0, 0, 0, 2130, 2133, 1, 0, 0, 0, 2131, 2129, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 177, 1, 0, 0, 0, 2133, 2131, 1, 0, 0, 0, 2134, 2135, 5, 30, 0, 0, 2135, 2136, 3, 708, 354, 0, 2136, 2138, 5, 500, 0, 0, 2137, 2139, 3, 190, 95, 0, 2138, 2137, 1, 0, 0, 0, 2138, 2139, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 2142, 5, 501, 0, 0, 2141, 2143, 3, 196, 98, 0, 2142, 2141, 1, 0, 0, 0, 2142, 2143, 1, 0, 0, 0, 2143, 2145, 1, 0, 0, 0, 2144, 2146, 3, 198, 99, 0, 2145, 2144, 1, 0, 0, 0, 2145, 2146, 1, 0, 0, 0, 2146, 2147, 1, 0, 0, 0, 2147, 2148, 5, 96, 0, 0, 2148, 2149, 3, 202, 101, 0, 2149, 2151, 5, 83, 0, 0, 2150, 2152, 5, 497, 0, 0, 2151, 2150, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2154, 1, 0, 0, 0, 2153, 2155, 5, 493, 0, 0, 2154, 2153, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 179, 1, 0, 0, 0, 2156, 2157, 5, 114, 0, 0, 2157, 2158, 5, 116, 0, 0, 2158, 2159, 3, 708, 354, 0, 2159, 2161, 5, 500, 0, 0, 2160, 2162, 3, 182, 91, 0, 2161, 2160, 1, 0, 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2165, 5, 501, 0, 0, 2164, 2166, 3, 186, 93, 0, 2165, 2164, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2168, 1, 0, 0, 0, 2167, 2169, 3, 188, 94, 0, 2168, 2167, 1, 0, 0, 0, 2168, 2169, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2171, 5, 76, 0, 0, 2171, 2173, 5, 515, 0, 0, 2172, 2174, 5, 497, 0, 0, 2173, 2172, 1, 0, 0, 0, 2173, 2174, 1, 0, 0, 0, 2174, 181, 1, 0, 0, 0, 2175, 2180, 3, 184, 92, 0, 2176, 2177, 5, 498, 0, 0, 2177, 2179, 3, 184, 92, 0, 2178, 2176, 1, 0, 0, 0, 2179, 2182, 1, 0, 0, 0, 2180, 2178, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 183, 1, 0, 0, 0, 2182, 2180, 1, 0, 0, 0, 2183, 2184, 3, 194, 97, 0, 2184, 2185, 5, 506, 0, 0, 2185, 2187, 3, 108, 54, 0, 2186, 2188, 5, 7, 0, 0, 2187, 2186, 1, 0, 0, 0, 2187, 2188, 1, 0, 0, 0, 2188, 185, 1, 0, 0, 0, 2189, 2190, 5, 77, 0, 0, 2190, 2191, 3, 108, 54, 0, 2191, 187, 1, 0, 0, 0, 2192, 2193, 5, 370, 0, 0, 2193, 2194, 5, 76, 0, 0, 2194, 2195, 5, 514, 0, 0, 2195, 2196, 5, 292, 0, 0, 2196, 2197, 5, 514, 0, 0, 2197, 189, 1, 0, 0, 0, 2198, 2203, 3, 192, 96, 0, 2199, 2200, 5, 498, 0, 0, 2200, 2202, 3, 192, 96, 0, 2201, 2199, 1, 0, 0, 0, 2202, 2205, 1, 0, 0, 0, 2203, 2201, 1, 0, 0, 0, 2203, 2204, 1, 0, 0, 0, 2204, 191, 1, 0, 0, 0, 2205, 2203, 1, 0, 0, 0, 2206, 2209, 3, 194, 97, 0, 2207, 2209, 5, 517, 0, 0, 2208, 2206, 1, 0, 0, 0, 2208, 2207, 1, 0, 0, 0, 2209, 2210, 1, 0, 0, 0, 2210, 2211, 5, 506, 0, 0, 2211, 2212, 3, 108, 54, 0, 2212, 193, 1, 0, 0, 0, 2213, 2217, 5, 518, 0, 0, 2214, 2217, 5, 520, 0, 0, 2215, 2217, 3, 730, 365, 0, 2216, 2213, 1, 0, 0, 0, 2216, 2214, 1, 0, 0, 0, 2216, 2215, 1, 0, 0, 0, 2217, 195, 1, 0, 0, 0, 2218, 2219, 5, 77, 0, 0, 2219, 2222, 3, 108, 54, 0, 2220, 2221, 5, 76, 0, 0, 2221, 2223, 5, 517, 0, 0, 2222, 2220, 1, 0, 0, 0, 2222, 2223, 1, 0, 0, 0, 2223, 197, 1, 0, 0, 0, 2224, 2226, 3, 200, 100, 0, 2225, 2224, 1, 0, 0, 0, 2226, 2227, 1, 0, 0, 0, 2227, 2225, 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 199, 1, 0, 0, 0, 2229, 2230, 5, 220, 0, 0, 2230, 2234, 5, 514, 0, 0, 2231, 2232, 5, 408, 0, 0, 2232, 2234, 5, 514, 0, 0, 2233, 2229, 1, 0, 0, 0, 2233, 2231, 1, 0, 0, 0, 2234, 201, 1, 0, 0, 0, 2235, 2237, 3, 204, 102, 0, 2236, 2235, 1, 0, 0, 0, 2237, 2240, 1, 0, 0, 0, 2238, 2236, 1, 0, 0, 0, 2238, 2239, 1, 0, 0, 0, 2239, 203, 1, 0, 0, 0, 2240, 2238, 1, 0, 0, 0, 2241, 2243, 3, 720, 360, 0, 2242, 2241, 1, 0, 0, 0, 2243, 2246, 1, 0, 0, 0, 2244, 2242, 1, 0, 0, 0, 2244, 2245, 1, 0, 0, 0, 2245, 2247, 1, 0, 0, 0, 2246, 2244, 1, 0, 0, 0, 2247, 2249, 3, 206, 103, 0, 2248, 2250, 5, 497, 0, 0, 2249, 2248, 1, 0, 0, 0, 2249, 2250, 1, 0, 0, 0, 2250, 2572, 1, 0, 0, 0, 2251, 2253, 3, 720, 360, 0, 2252, 2251, 1, 0, 0, 0, 2253, 2256, 1, 0, 0, 0, 2254, 2252, 1, 0, 0, 0, 2254, 2255, 1, 0, 0, 0, 2255, 2257, 1, 0, 0, 0, 2256, 2254, 1, 0, 0, 0, 2257, 2259, 3, 208, 104, 0, 2258, 2260, 5, 497, 0, 0, 2259, 2258, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2572, 1, 0, 0, 0, 2261, 2263, 3, 720, 360, 0, 2262, 2261, 1, 0, 0, 0, 2263, 2266, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 2267, 1, 0, 0, 0, 2266, 2264, 1, 0, 0, 0, 2267, 2269, 3, 316, 158, 0, 2268, 2270, 5, 497, 0, 0, 2269, 2268, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2572, 1, 0, 0, 0, 2271, 2273, 3, 720, 360, 0, 2272, 2271, 1, 0, 0, 0, 2273, 2276, 1, 0, 0, 0, 2274, 2272, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2277, 1, 0, 0, 0, 2276, 2274, 1, 0, 0, 0, 2277, 2279, 3, 210, 105, 0, 2278, 2280, 5, 497, 0, 0, 2279, 2278, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2572, 1, 0, 0, 0, 2281, 2283, 3, 720, 360, 0, 2282, 2281, 1, 0, 0, 0, 2283, 2286, 1, 0, 0, 0, 2284, 2282, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2287, 1, 0, 0, 0, 2286, 2284, 1, 0, 0, 0, 2287, 2289, 3, 212, 106, 0, 2288, 2290, 5, 497, 0, 0, 2289, 2288, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2572, 1, 0, 0, 0, 2291, 2293, 3, 720, 360, 0, 2292, 2291, 1, 0, 0, 0, 2293, 2296, 1, 0, 0, 0, 2294, 2292, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2297, 1, 0, 0, 0, 2296, 2294, 1, 0, 0, 0, 2297, 2299, 3, 216, 108, 0, 2298, 2300, 5, 497, 0, 0, 2299, 2298, 1, 0, 0, 0, 2299, 2300, 1, 0, 0, 0, 2300, 2572, 1, 0, 0, 0, 2301, 2303, 3, 720, 360, 0, 2302, 2301, 1, 0, 0, 0, 2303, 2306, 1, 0, 0, 0, 2304, 2302, 1, 0, 0, 0, 2304, 2305, 1, 0, 0, 0, 2305, 2307, 1, 0, 0, 0, 2306, 2304, 1, 0, 0, 0, 2307, 2309, 3, 218, 109, 0, 2308, 2310, 5, 497, 0, 0, 2309, 2308, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2572, 1, 0, 0, 0, 2311, 2313, 3, 720, 360, 0, 2312, 2311, 1, 0, 0, 0, 2313, 2316, 1, 0, 0, 0, 2314, 2312, 1, 0, 0, 0, 2314, 2315, 1, 0, 0, 0, 2315, 2317, 1, 0, 0, 0, 2316, 2314, 1, 0, 0, 0, 2317, 2319, 3, 220, 110, 0, 2318, 2320, 5, 497, 0, 0, 2319, 2318, 1, 0, 0, 0, 2319, 2320, 1, 0, 0, 0, 2320, 2572, 1, 0, 0, 0, 2321, 2323, 3, 720, 360, 0, 2322, 2321, 1, 0, 0, 0, 2323, 2326, 1, 0, 0, 0, 2324, 2322, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325, 2327, 1, 0, 0, 0, 2326, 2324, 1, 0, 0, 0, 2327, 2329, 3, 222, 111, 0, 2328, 2330, 5, 497, 0, 0, 2329, 2328, 1, 0, 0, 0, 2329, 2330, 1, 0, 0, 0, 2330, 2572, 1, 0, 0, 0, 2331, 2333, 3, 720, 360, 0, 2332, 2331, 1, 0, 0, 0, 2333, 2336, 1, 0, 0, 0, 2334, 2332, 1, 0, 0, 0, 2334, 2335, 1, 0, 0, 0, 2335, 2337, 1, 0, 0, 0, 2336, 2334, 1, 0, 0, 0, 2337, 2339, 3, 228, 114, 0, 2338, 2340, 5, 497, 0, 0, 2339, 2338, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2572, 1, 0, 0, 0, 2341, 2343, 3, 720, 360, 0, 2342, 2341, 1, 0, 0, 0, 2343, 2346, 1, 0, 0, 0, 2344, 2342, 1, 0, 0, 0, 2344, 2345, 1, 0, 0, 0, 2345, 2347, 1, 0, 0, 0, 2346, 2344, 1, 0, 0, 0, 2347, 2349, 3, 230, 115, 0, 2348, 2350, 5, 497, 0, 0, 2349, 2348, 1, 0, 0, 0, 2349, 2350, 1, 0, 0, 0, 2350, 2572, 1, 0, 0, 0, 2351, 2353, 3, 720, 360, 0, 2352, 2351, 1, 0, 0, 0, 2353, 2356, 1, 0, 0, 0, 2354, 2352, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2357, 1, 0, 0, 0, 2356, 2354, 1, 0, 0, 0, 2357, 2359, 3, 232, 116, 0, 2358, 2360, 5, 497, 0, 0, 2359, 2358, 1, 0, 0, 0, 2359, 2360, 1, 0, 0, 0, 2360, 2572, 1, 0, 0, 0, 2361, 2363, 3, 720, 360, 0, 2362, 2361, 1, 0, 0, 0, 2363, 2366, 1, 0, 0, 0, 2364, 2362, 1, 0, 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2367, 1, 0, 0, 0, 2366, 2364, 1, 0, 0, 0, 2367, 2369, 3, 234, 117, 0, 2368, 2370, 5, 497, 0, 0, 2369, 2368, 1, 0, 0, 0, 2369, 2370, 1, 0, 0, 0, 2370, 2572, 1, 0, 0, 0, 2371, 2373, 3, 720, 360, 0, 2372, 2371, 1, 0, 0, 0, 2373, 2376, 1, 0, 0, 0, 2374, 2372, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2377, 1, 0, 0, 0, 2376, 2374, 1, 0, 0, 0, 2377, 2379, 3, 236, 118, 0, 2378, 2380, 5, 497, 0, 0, 2379, 2378, 1, 0, 0, 0, 2379, 2380, 1, 0, 0, 0, 2380, 2572, 1, 0, 0, 0, 2381, 2383, 3, 720, 360, 0, 2382, 2381, 1, 0, 0, 0, 2383, 2386, 1, 0, 0, 0, 2384, 2382, 1, 0, 0, 0, 2384, 2385, 1, 0, 0, 0, 2385, 2387, 1, 0, 0, 0, 2386, 2384, 1, 0, 0, 0, 2387, 2389, 3, 238, 119, 0, 2388, 2390, 5, 497, 0, 0, 2389, 2388, 1, 0, 0, 0, 2389, 2390, 1, 0, 0, 0, 2390, 2572, 1, 0, 0, 0, 2391, 2393, 3, 720, 360, 0, 2392, 2391, 1, 0, 0, 0, 2393, 2396, 1, 0, 0, 0, 2394, 2392, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2397, 1, 0, 0, 0, 2396, 2394, 1, 0, 0, 0, 2397, 2399, 3, 240, 120, 0, 2398, 2400, 5, 497, 0, 0, 2399, 2398, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2572, 1, 0, 0, 0, 2401, 2403, 3, 720, 360, 0, 2402, 2401, 1, 0, 0, 0, 2403, 2406, 1, 0, 0, 0, 2404, 2402, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2407, 1, 0, 0, 0, 2406, 2404, 1, 0, 0, 0, 2407, 2409, 3, 242, 121, 0, 2408, 2410, 5, 497, 0, 0, 2409, 2408, 1, 0, 0, 0, 2409, 2410, 1, 0, 0, 0, 2410, 2572, 1, 0, 0, 0, 2411, 2413, 3, 720, 360, 0, 2412, 2411, 1, 0, 0, 0, 2413, 2416, 1, 0, 0, 0, 2414, 2412, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2417, 1, 0, 0, 0, 2416, 2414, 1, 0, 0, 0, 2417, 2419, 3, 254, 127, 0, 2418, 2420, 5, 497, 0, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2572, 1, 0, 0, 0, 2421, 2423, 3, 720, 360, 0, 2422, 2421, 1, 0, 0, 0, 2423, 2426, 1, 0, 0, 0, 2424, 2422, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2427, 1, 0, 0, 0, 2426, 2424, 1, 0, 0, 0, 2427, 2429, 3, 256, 128, 0, 2428, 2430, 5, 497, 0, 0, 2429, 2428, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2572, 1, 0, 0, 0, 2431, 2433, 3, 720, 360, 0, 2432, 2431, 1, 0, 0, 0, 2433, 2436, 1, 0, 0, 0, 2434, 2432, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2437, 1, 0, 0, 0, 2436, 2434, 1, 0, 0, 0, 2437, 2439, 3, 258, 129, 0, 2438, 2440, 5, 497, 0, 0, 2439, 2438, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2572, 1, 0, 0, 0, 2441, 2443, 3, 720, 360, 0, 2442, 2441, 1, 0, 0, 0, 2443, 2446, 1, 0, 0, 0, 2444, 2442, 1, 0, 0, 0, 2444, 2445, 1, 0, 0, 0, 2445, 2447, 1, 0, 0, 0, 2446, 2444, 1, 0, 0, 0, 2447, 2449, 3, 260, 130, 0, 2448, 2450, 5, 497, 0, 0, 2449, 2448, 1, 0, 0, 0, 2449, 2450, 1, 0, 0, 0, 2450, 2572, 1, 0, 0, 0, 2451, 2453, 3, 720, 360, 0, 2452, 2451, 1, 0, 0, 0, 2453, 2456, 1, 0, 0, 0, 2454, 2452, 1, 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 2457, 1, 0, 0, 0, 2456, 2454, 1, 0, 0, 0, 2457, 2459, 3, 266, 133, 0, 2458, 2460, 5, 497, 0, 0, 2459, 2458, 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 2572, 1, 0, 0, 0, 2461, 2463, 3, 720, 360, 0, 2462, 2461, 1, 0, 0, 0, 2463, 2466, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2464, 2465, 1, 0, 0, 0, 2465, 2467, 1, 0, 0, 0, 2466, 2464, 1, 0, 0, 0, 2467, 2469, 3, 272, 136, 0, 2468, 2470, 5, 497, 0, 0, 2469, 2468, 1, 0, 0, 0, 2469, 2470, 1, 0, 0, 0, 2470, 2572, 1, 0, 0, 0, 2471, 2473, 3, 720, 360, 0, 2472, 2471, 1, 0, 0, 0, 2473, 2476, 1, 0, 0, 0, 2474, 2472, 1, 0, 0, 0, 2474, 2475, 1, 0, 0, 0, 2475, 2477, 1, 0, 0, 0, 2476, 2474, 1, 0, 0, 0, 2477, 2479, 3, 274, 137, 0, 2478, 2480, 5, 497, 0, 0, 2479, 2478, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2572, 1, 0, 0, 0, 2481, 2483, 3, 720, 360, 0, 2482, 2481, 1, 0, 0, 0, 2483, 2486, 1, 0, 0, 0, 2484, 2482, 1, 0, 0, 0, 2484, 2485, 1, 0, 0, 0, 2485, 2487, 1, 0, 0, 0, 2486, 2484, 1, 0, 0, 0, 2487, 2489, 3, 276, 138, 0, 2488, 2490, 5, 497, 0, 0, 2489, 2488, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 2572, 1, 0, 0, 0, 2491, 2493, 3, 720, 360, 0, 2492, 2491, 1, 0, 0, 0, 2493, 2496, 1, 0, 0, 0, 2494, 2492, 1, 0, 0, 0, 2494, 2495, 1, 0, 0, 0, 2495, 2497, 1, 0, 0, 0, 2496, 2494, 1, 0, 0, 0, 2497, 2499, 3, 278, 139, 0, 2498, 2500, 5, 497, 0, 0, 2499, 2498, 1, 0, 0, 0, 2499, 2500, 1, 0, 0, 0, 2500, 2572, 1, 0, 0, 0, 2501, 2503, 3, 720, 360, 0, 2502, 2501, 1, 0, 0, 0, 2503, 2506, 1, 0, 0, 0, 2504, 2502, 1, 0, 0, 0, 2504, 2505, 1, 0, 0, 0, 2505, 2507, 1, 0, 0, 0, 2506, 2504, 1, 0, 0, 0, 2507, 2509, 3, 304, 152, 0, 2508, 2510, 5, 497, 0, 0, 2509, 2508, 1, 0, 0, 0, 2509, 2510, 1, 0, 0, 0, 2510, 2572, 1, 0, 0, 0, 2511, 2513, 3, 720, 360, 0, 2512, 2511, 1, 0, 0, 0, 2513, 2516, 1, 0, 0, 0, 2514, 2512, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2517, 1, 0, 0, 0, 2516, 2514, 1, 0, 0, 0, 2517, 2519, 3, 312, 156, 0, 2518, 2520, 5, 497, 0, 0, 2519, 2518, 1, 0, 0, 0, 2519, 2520, 1, 0, 0, 0, 2520, 2572, 1, 0, 0, 0, 2521, 2523, 3, 720, 360, 0, 2522, 2521, 1, 0, 0, 0, 2523, 2526, 1, 0, 0, 0, 2524, 2522, 1, 0, 0, 0, 2524, 2525, 1, 0, 0, 0, 2525, 2527, 1, 0, 0, 0, 2526, 2524, 1, 0, 0, 0, 2527, 2529, 3, 318, 159, 0, 2528, 2530, 5, 497, 0, 0, 2529, 2528, 1, 0, 0, 0, 2529, 2530, 1, 0, 0, 0, 2530, 2572, 1, 0, 0, 0, 2531, 2533, 3, 720, 360, 0, 2532, 2531, 1, 0, 0, 0, 2533, 2536, 1, 0, 0, 0, 2534, 2532, 1, 0, 0, 0, 2534, 2535, 1, 0, 0, 0, 2535, 2537, 1, 0, 0, 0, 2536, 2534, 1, 0, 0, 0, 2537, 2539, 3, 320, 160, 0, 2538, 2540, 5, 497, 0, 0, 2539, 2538, 1, 0, 0, 0, 2539, 2540, 1, 0, 0, 0, 2540, 2572, 1, 0, 0, 0, 2541, 2543, 3, 720, 360, 0, 2542, 2541, 1, 0, 0, 0, 2543, 2546, 1, 0, 0, 0, 2544, 2542, 1, 0, 0, 0, 2544, 2545, 1, 0, 0, 0, 2545, 2547, 1, 0, 0, 0, 2546, 2544, 1, 0, 0, 0, 2547, 2549, 3, 280, 140, 0, 2548, 2550, 5, 497, 0, 0, 2549, 2548, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2572, 1, 0, 0, 0, 2551, 2553, 3, 720, 360, 0, 2552, 2551, 1, 0, 0, 0, 2553, 2556, 1, 0, 0, 0, 2554, 2552, 1, 0, 0, 0, 2554, 2555, 1, 0, 0, 0, 2555, 2557, 1, 0, 0, 0, 2556, 2554, 1, 0, 0, 0, 2557, 2559, 3, 282, 141, 0, 2558, 2560, 5, 497, 0, 0, 2559, 2558, 1, 0, 0, 0, 2559, 2560, 1, 0, 0, 0, 2560, 2572, 1, 0, 0, 0, 2561, 2563, 3, 720, 360, 0, 2562, 2561, 1, 0, 0, 0, 2563, 2566, 1, 0, 0, 0, 2564, 2562, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2567, 1, 0, 0, 0, 2566, 2564, 1, 0, 0, 0, 2567, 2569, 3, 300, 150, 0, 2568, 2570, 5, 497, 0, 0, 2569, 2568, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 2572, 1, 0, 0, 0, 2571, 2244, 1, 0, 0, 0, 2571, 2254, 1, 0, 0, 0, 2571, 2264, 1, 0, 0, 0, 2571, 2274, 1, 0, 0, 0, 2571, 2284, 1, 0, 0, 0, 2571, 2294, 1, 0, 0, 0, 2571, 2304, 1, 0, 0, 0, 2571, 2314, 1, 0, 0, 0, 2571, 2324, 1, 0, 0, 0, 2571, 2334, 1, 0, 0, 0, 2571, 2344, 1, 0, 0, 0, 2571, 2354, 1, 0, 0, 0, 2571, 2364, 1, 0, 0, 0, 2571, 2374, 1, 0, 0, 0, 2571, 2384, 1, 0, 0, 0, 2571, 2394, 1, 0, 0, 0, 2571, 2404, 1, 0, 0, 0, 2571, 2414, 1, 0, 0, 0, 2571, 2424, 1, 0, 0, 0, 2571, 2434, 1, 0, 0, 0, 2571, 2444, 1, 0, 0, 0, 2571, 2454, 1, 0, 0, 0, 2571, 2464, 1, 0, 0, 0, 2571, 2474, 1, 0, 0, 0, 2571, 2484, 1, 0, 0, 0, 2571, 2494, 1, 0, 0, 0, 2571, 2504, 1, 0, 0, 0, 2571, 2514, 1, 0, 0, 0, 2571, 2524, 1, 0, 0, 0, 2571, 2534, 1, 0, 0, 0, 2571, 2544, 1, 0, 0, 0, 2571, 2554, 1, 0, 0, 0, 2571, 2564, 1, 0, 0, 0, 2572, 205, 1, 0, 0, 0, 2573, 2574, 5, 97, 0, 0, 2574, 2575, 5, 517, 0, 0, 2575, 2578, 3, 108, 54, 0, 2576, 2577, 5, 487, 0, 0, 2577, 2579, 3, 668, 334, 0, 2578, 2576, 1, 0, 0, 0, 2578, 2579, 1, 0, 0, 0, 2579, 207, 1, 0, 0, 0, 2580, 2583, 5, 48, 0, 0, 2581, 2584, 5, 517, 0, 0, 2582, 2584, 3, 214, 107, 0, 2583, 2581, 1, 0, 0, 0, 2583, 2582, 1, 0, 0, 0, 2584, 2585, 1, 0, 0, 0, 2585, 2586, 5, 487, 0, 0, 2586, 2587, 3, 668, 334, 0, 2587, 209, 1, 0, 0, 0, 2588, 2589, 5, 517, 0, 0, 2589, 2591, 5, 487, 0, 0, 2590, 2588, 1, 0, 0, 0, 2590, 2591, 1, 0, 0, 0, 2591, 2592, 1, 0, 0, 0, 2592, 2593, 5, 17, 0, 0, 2593, 2599, 3, 112, 56, 0, 2594, 2596, 5, 500, 0, 0, 2595, 2597, 3, 322, 161, 0, 2596, 2595, 1, 0, 0, 0, 2596, 2597, 1, 0, 0, 0, 2597, 2598, 1, 0, 0, 0, 2598, 2600, 5, 501, 0, 0, 2599, 2594, 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 2602, 1, 0, 0, 0, 2601, 2603, 3, 226, 113, 0, 2602, 2601, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 211, 1, 0, 0, 0, 2604, 2605, 5, 98, 0, 0, 2605, 2611, 5, 517, 0, 0, 2606, 2608, 5, 500, 0, 0, 2607, 2609, 3, 322, 161, 0, 2608, 2607, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609, 2610, 1, 0, 0, 0, 2610, 2612, 5, 501, 0, 0, 2611, 2606, 1, 0, 0, 0, 2611, 2612, 1, 0, 0, 0, 2612, 213, 1, 0, 0, 0, 2613, 2619, 5, 517, 0, 0, 2614, 2617, 7, 12, 0, 0, 2615, 2618, 5, 518, 0, 0, 2616, 2618, 3, 708, 354, 0, 2617, 2615, 1, 0, 0, 0, 2617, 2616, 1, 0, 0, 0, 2618, 2620, 1, 0, 0, 0, 2619, 2614, 1, 0, 0, 0, 2620, 2621, 1, 0, 0, 0, 2621, 2619, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 215, 1, 0, 0, 0, 2623, 2624, 5, 101, 0, 0, 2624, 2627, 5, 517, 0, 0, 2625, 2626, 5, 139, 0, 0, 2626, 2628, 5, 120, 0, 0, 2627, 2625, 1, 0, 0, 0, 2627, 2628, 1, 0, 0, 0, 2628, 2630, 1, 0, 0, 0, 2629, 2631, 5, 396, 0, 0, 2630, 2629, 1, 0, 0, 0, 2630, 2631, 1, 0, 0, 0, 2631, 2633, 1, 0, 0, 0, 2632, 2634, 3, 226, 113, 0, 2633, 2632, 1, 0, 0, 0, 2633, 2634, 1, 0, 0, 0, 2634, 217, 1, 0, 0, 0, 2635, 2636, 5, 100, 0, 0, 2636, 2638, 5, 517, 0, 0, 2637, 2639, 3, 226, 113, 0, 2638, 2637, 1, 0, 0, 0, 2638, 2639, 1, 0, 0, 0, 2639, 219, 1, 0, 0, 0, 2640, 2641, 5, 102, 0, 0, 2641, 2643, 5, 517, 0, 0, 2642, 2644, 5, 396, 0, 0, 2643, 2642, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 221, 1, 0, 0, 0, 2645, 2646, 5, 99, 0, 0, 2646, 2647, 5, 517, 0, 0, 2647, 2648, 5, 71, 0, 0, 2648, 2654, 3, 224, 112, 0, 2649, 2652, 5, 72, 0, 0, 2650, 2653, 3, 354, 177, 0, 2651, 2653, 3, 668, 334, 0, 2652, 2650, 1, 0, 0, 0, 2652, 2651, 1, 0, 0, 0, 2653, 2655, 1, 0, 0, 0, 2654, 2649, 1, 0, 0, 0, 2654, 2655, 1, 0, 0, 0, 2655, 2665, 1, 0, 0, 0, 2656, 2657, 5, 10, 0, 0, 2657, 2662, 3, 352, 176, 0, 2658, 2659, 5, 498, 0, 0, 2659, 2661, 3, 352, 176, 0, 2660, 2658, 1, 0, 0, 0, 2661, 2664, 1, 0, 0, 0, 2662, 2660, 1, 0, 0, 0, 2662, 2663, 1, 0, 0, 0, 2663, 2666, 1, 0, 0, 0, 2664, 2662, 1, 0, 0, 0, 2665, 2656, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2669, 1, 0, 0, 0, 2667, 2668, 5, 75, 0, 0, 2668, 2670, 3, 668, 334, 0, 2669, 2667, 1, 0, 0, 0, 2669, 2670, 1, 0, 0, 0, 2670, 2673, 1, 0, 0, 0, 2671, 2672, 5, 74, 0, 0, 2672, 2674, 3, 668, 334, 0, 2673, 2671, 1, 0, 0, 0, 2673, 2674, 1, 0, 0, 0, 2674, 2676, 1, 0, 0, 0, 2675, 2677, 3, 226, 113, 0, 2676, 2675, 1, 0, 0, 0, 2676, 2677, 1, 0, 0, 0, 2677, 223, 1, 0, 0, 0, 2678, 2689, 3, 708, 354, 0, 2679, 2680, 5, 517, 0, 0, 2680, 2681, 5, 493, 0, 0, 2681, 2689, 3, 708, 354, 0, 2682, 2683, 5, 500, 0, 0, 2683, 2684, 3, 582, 291, 0, 2684, 2685, 5, 501, 0, 0, 2685, 2689, 1, 0, 0, 0, 2686, 2687, 5, 356, 0, 0, 2687, 2689, 5, 514, 0, 0, 2688, 2678, 1, 0, 0, 0, 2688, 2679, 1, 0, 0, 0, 2688, 2682, 1, 0, 0, 0, 2688, 2686, 1, 0, 0, 0, 2689, 225, 1, 0, 0, 0, 2690, 2691, 5, 93, 0, 0, 2691, 2692, 5, 305, 0, 0, 2692, 2711, 5, 108, 0, 0, 2693, 2694, 5, 93, 0, 0, 2694, 2695, 5, 305, 0, 0, 2695, 2711, 5, 102, 0, 0, 2696, 2697, 5, 93, 0, 0, 2697, 2698, 5, 305, 0, 0, 2698, 2699, 5, 502, 0, 0, 2699, 2700, 3, 202, 101, 0, 2700, 2701, 5, 503, 0, 0, 2701, 2711, 1, 0, 0, 0, 2702, 2703, 5, 93, 0, 0, 2703, 2704, 5, 305, 0, 0, 2704, 2705, 5, 435, 0, 0, 2705, 2706, 5, 102, 0, 0, 2706, 2707, 5, 502, 0, 0, 2707, 2708, 3, 202, 101, 0, 2708, 2709, 5, 503, 0, 0, 2709, 2711, 1, 0, 0, 0, 2710, 2690, 1, 0, 0, 0, 2710, 2693, 1, 0, 0, 0, 2710, 2696, 1, 0, 0, 0, 2710, 2702, 1, 0, 0, 0, 2711, 227, 1, 0, 0, 0, 2712, 2713, 5, 105, 0, 0, 2713, 2714, 3, 668, 334, 0, 2714, 2715, 5, 81, 0, 0, 2715, 2723, 3, 202, 101, 0, 2716, 2717, 5, 106, 0, 0, 2717, 2718, 3, 668, 334, 0, 2718, 2719, 5, 81, 0, 0, 2719, 2720, 3, 202, 101, 0, 2720, 2722, 1, 0, 0, 0, 2721, 2716, 1, 0, 0, 0, 2722, 2725, 1, 0, 0, 0, 2723, 2721, 1, 0, 0, 0, 2723, 2724, 1, 0, 0, 0, 2724, 2728, 1, 0, 0, 0, 2725, 2723, 1, 0, 0, 0, 2726, 2727, 5, 82, 0, 0, 2727, 2729, 3, 202, 101, 0, 2728, 2726, 1, 0, 0, 0, 2728, 2729, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 2731, 5, 83, 0, 0, 2731, 2732, 5, 105, 0, 0, 2732, 229, 1, 0, 0, 0, 2733, 2734, 5, 103, 0, 0, 2734, 2735, 5, 517, 0, 0, 2735, 2738, 5, 292, 0, 0, 2736, 2739, 5, 517, 0, 0, 2737, 2739, 3, 214, 107, 0, 2738, 2736, 1, 0, 0, 0, 2738, 2737, 1, 0, 0, 0, 2739, 2740, 1, 0, 0, 0, 2740, 2741, 5, 96, 0, 0, 2741, 2742, 3, 202, 101, 0, 2742, 2743, 5, 83, 0, 0, 2743, 2744, 5, 103, 0, 0, 2744, 231, 1, 0, 0, 0, 2745, 2746, 5, 104, 0, 0, 2746, 2748, 3, 668, 334, 0, 2747, 2749, 5, 96, 0, 0, 2748, 2747, 1, 0, 0, 0, 2748, 2749, 1, 0, 0, 0, 2749, 2750, 1, 0, 0, 0, 2750, 2751, 3, 202, 101, 0, 2751, 2753, 5, 83, 0, 0, 2752, 2754, 5, 104, 0, 0, 2753, 2752, 1, 0, 0, 0, 2753, 2754, 1, 0, 0, 0, 2754, 233, 1, 0, 0, 0, 2755, 2756, 5, 108, 0, 0, 2756, 235, 1, 0, 0, 0, 2757, 2758, 5, 109, 0, 0, 2758, 237, 1, 0, 0, 0, 2759, 2761, 5, 110, 0, 0, 2760, 2762, 3, 668, 334, 0, 2761, 2760, 1, 0, 0, 0, 2761, 2762, 1, 0, 0, 0, 2762, 239, 1, 0, 0, 0, 2763, 2764, 5, 306, 0, 0, 2764, 2765, 5, 305, 0, 0, 2765, 241, 1, 0, 0, 0, 2766, 2768, 5, 112, 0, 0, 2767, 2769, 3, 244, 122, 0, 2768, 2767, 1, 0, 0, 0, 2768, 2769, 1, 0, 0, 0, 2769, 2772, 1, 0, 0, 0, 2770, 2771, 5, 119, 0, 0, 2771, 2773, 5, 514, 0, 0, 2772, 2770, 1, 0, 0, 0, 2772, 2773, 1, 0, 0, 0, 2773, 2774, 1, 0, 0, 0, 2774, 2776, 3, 668, 334, 0, 2775, 2777, 3, 250, 125, 0, 2776, 2775, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 243, 1, 0, 0, 0, 2778, 2779, 7, 13, 0, 0, 2779, 245, 1, 0, 0, 0, 2780, 2781, 5, 139, 0, 0, 2781, 2782, 5, 500, 0, 0, 2782, 2787, 3, 248, 124, 0, 2783, 2784, 5, 498, 0, 0, 2784, 2786, 3, 248, 124, 0, 2785, 2783, 1, 0, 0, 0, 2786, 2789, 1, 0, 0, 0, 2787, 2785, 1, 0, 0, 0, 2787, 2788, 1, 0, 0, 0, 2788, 2790, 1, 0, 0, 0, 2789, 2787, 1, 0, 0, 0, 2790, 2791, 5, 501, 0, 0, 2791, 2795, 1, 0, 0, 0, 2792, 2793, 5, 372, 0, 0, 2793, 2795, 3, 714, 357, 0, 2794, 2780, 1, 0, 0, 0, 2794, 2792, 1, 0, 0, 0, 2795, 247, 1, 0, 0, 0, 2796, 2797, 5, 502, 0, 0, 2797, 2798, 5, 516, 0, 0, 2798, 2799, 5, 503, 0, 0, 2799, 2800, 5, 487, 0, 0, 2800, 2801, 3, 668, 334, 0, 2801, 249, 1, 0, 0, 0, 2802, 2803, 3, 246, 123, 0, 2803, 251, 1, 0, 0, 0, 2804, 2805, 3, 248, 124, 0, 2805, 253, 1, 0, 0, 0, 2806, 2807, 5, 517, 0, 0, 2807, 2809, 5, 487, 0, 0, 2808, 2806, 1, 0, 0, 0, 2808, 2809, 1, 0, 0, 0, 2809, 2810, 1, 0, 0, 0, 2810, 2811, 5, 113, 0, 0, 2811, 2812, 5, 30, 0, 0, 2812, 2813, 3, 708, 354, 0, 2813, 2815, 5, 500, 0, 0, 2814, 2816, 3, 262, 131, 0, 2815, 2814, 1, 0, 0, 0, 2815, 2816, 1, 0, 0, 0, 2816, 2817, 1, 0, 0, 0, 2817, 2819, 5, 501, 0, 0, 2818, 2820, 3, 226, 113, 0, 2819, 2818, 1, 0, 0, 0, 2819, 2820, 1, 0, 0, 0, 2820, 255, 1, 0, 0, 0, 2821, 2822, 5, 517, 0, 0, 2822, 2824, 5, 487, 0, 0, 2823, 2821, 1, 0, 0, 0, 2823, 2824, 1, 0, 0, 0, 2824, 2825, 1, 0, 0, 0, 2825, 2826, 5, 113, 0, 0, 2826, 2827, 5, 114, 0, 0, 2827, 2828, 5, 116, 0, 0, 2828, 2829, 3, 708, 354, 0, 2829, 2831, 5, 500, 0, 0, 2830, 2832, 3, 262, 131, 0, 2831, 2830, 1, 0, 0, 0, 2831, 2832, 1, 0, 0, 0, 2832, 2833, 1, 0, 0, 0, 2833, 2835, 5, 501, 0, 0, 2834, 2836, 3, 226, 113, 0, 2835, 2834, 1, 0, 0, 0, 2835, 2836, 1, 0, 0, 0, 2836, 257, 1, 0, 0, 0, 2837, 2838, 5, 517, 0, 0, 2838, 2840, 5, 487, 0, 0, 2839, 2837, 1, 0, 0, 0, 2839, 2840, 1, 0, 0, 0, 2840, 2841, 1, 0, 0, 0, 2841, 2842, 5, 399, 0, 0, 2842, 2843, 5, 356, 0, 0, 2843, 2844, 5, 357, 0, 0, 2844, 2851, 3, 708, 354, 0, 2845, 2849, 5, 166, 0, 0, 2846, 2850, 5, 514, 0, 0, 2847, 2850, 5, 515, 0, 0, 2848, 2850, 3, 668, 334, 0, 2849, 2846, 1, 0, 0, 0, 2849, 2847, 1, 0, 0, 0, 2849, 2848, 1, 0, 0, 0, 2850, 2852, 1, 0, 0, 0, 2851, 2845, 1, 0, 0, 0, 2851, 2852, 1, 0, 0, 0, 2852, 2858, 1, 0, 0, 0, 2853, 2855, 5, 500, 0, 0, 2854, 2856, 3, 262, 131, 0, 2855, 2854, 1, 0, 0, 0, 2855, 2856, 1, 0, 0, 0, 2856, 2857, 1, 0, 0, 0, 2857, 2859, 5, 501, 0, 0, 2858, 2853, 1, 0, 0, 0, 2858, 2859, 1, 0, 0, 0, 2859, 2866, 1, 0, 0, 0, 2860, 2861, 5, 355, 0, 0, 2861, 2863, 5, 500, 0, 0, 2862, 2864, 3, 262, 131, 0, 2863, 2862, 1, 0, 0, 0, 2863, 2864, 1, 0, 0, 0, 2864, 2865, 1, 0, 0, 0, 2865, 2867, 5, 501, 0, 0, 2866, 2860, 1, 0, 0, 0, 2866, 2867, 1, 0, 0, 0, 2867, 2869, 1, 0, 0, 0, 2868, 2870, 3, 226, 113, 0, 2869, 2868, 1, 0, 0, 0, 2869, 2870, 1, 0, 0, 0, 2870, 259, 1, 0, 0, 0, 2871, 2872, 5, 517, 0, 0, 2872, 2874, 5, 487, 0, 0, 2873, 2871, 1, 0, 0, 0, 2873, 2874, 1, 0, 0, 0, 2874, 2875, 1, 0, 0, 0, 2875, 2876, 5, 113, 0, 0, 2876, 2877, 5, 26, 0, 0, 2877, 2878, 5, 116, 0, 0, 2878, 2879, 3, 708, 354, 0, 2879, 2881, 5, 500, 0, 0, 2880, 2882, 3, 262, 131, 0, 2881, 2880, 1, 0, 0, 0, 2881, 2882, 1, 0, 0, 0, 2882, 2883, 1, 0, 0, 0, 2883, 2885, 5, 501, 0, 0, 2884, 2886, 3, 226, 113, 0, 2885, 2884, 1, 0, 0, 0, 2885, 2886, 1, 0, 0, 0, 2886, 261, 1, 0, 0, 0, 2887, 2892, 3, 264, 132, 0, 2888, 2889, 5, 498, 0, 0, 2889, 2891, 3, 264, 132, 0, 2890, 2888, 1, 0, 0, 0, 2891, 2894, 1, 0, 0, 0, 2892, 2890, 1, 0, 0, 0, 2892, 2893, 1, 0, 0, 0, 2893, 263, 1, 0, 0, 0, 2894, 2892, 1, 0, 0, 0, 2895, 2898, 5, 517, 0, 0, 2896, 2898, 3, 194, 97, 0, 2897, 2895, 1, 0, 0, 0, 2897, 2896, 1, 0, 0, 0, 2898, 2899, 1, 0, 0, 0, 2899, 2900, 5, 487, 0, 0, 2900, 2901, 3, 668, 334, 0, 2901, 265, 1, 0, 0, 0, 2902, 2903, 5, 65, 0, 0, 2903, 2904, 5, 33, 0, 0, 2904, 2910, 3, 708, 354, 0, 2905, 2907, 5, 500, 0, 0, 2906, 2908, 3, 268, 134, 0, 2907, 2906, 1, 0, 0, 0, 2907, 2908, 1, 0, 0, 0, 2908, 2909, 1, 0, 0, 0, 2909, 2911, 5, 501, 0, 0, 2910, 2905, 1, 0, 0, 0, 2910, 2911, 1, 0, 0, 0, 2911, 2914, 1, 0, 0, 0, 2912, 2913, 5, 429, 0, 0, 2913, 2915, 5, 517, 0, 0, 2914, 2912, 1, 0, 0, 0, 2914, 2915, 1, 0, 0, 0, 2915, 2918, 1, 0, 0, 0, 2916, 2917, 5, 139, 0, 0, 2917, 2919, 3, 322, 161, 0, 2918, 2916, 1, 0, 0, 0, 2918, 2919, 1, 0, 0, 0, 2919, 267, 1, 0, 0, 0, 2920, 2925, 3, 270, 135, 0, 2921, 2922, 5, 498, 0, 0, 2922, 2924, 3, 270, 135, 0, 2923, 2921, 1, 0, 0, 0, 2924, 2927, 1, 0, 0, 0, 2925, 2923, 1, 0, 0, 0, 2925, 2926, 1, 0, 0, 0, 2926, 269, 1, 0, 0, 0, 2927, 2925, 1, 0, 0, 0, 2928, 2929, 5, 517, 0, 0, 2929, 2932, 5, 487, 0, 0, 2930, 2933, 5, 517, 0, 0, 2931, 2933, 3, 668, 334, 0, 2932, 2930, 1, 0, 0, 0, 2932, 2931, 1, 0, 0, 0, 2933, 2939, 1, 0, 0, 0, 2934, 2935, 3, 710, 355, 0, 2935, 2936, 5, 506, 0, 0, 2936, 2937, 3, 668, 334, 0, 2937, 2939, 1, 0, 0, 0, 2938, 2928, 1, 0, 0, 0, 2938, 2934, 1, 0, 0, 0, 2939, 271, 1, 0, 0, 0, 2940, 2941, 5, 118, 0, 0, 2941, 2942, 5, 33, 0, 0, 2942, 273, 1, 0, 0, 0, 2943, 2944, 5, 65, 0, 0, 2944, 2945, 5, 377, 0, 0, 2945, 2946, 5, 33, 0, 0, 2946, 275, 1, 0, 0, 0, 2947, 2948, 5, 65, 0, 0, 2948, 2949, 5, 405, 0, 0, 2949, 2952, 3, 668, 334, 0, 2950, 2951, 5, 419, 0, 0, 2951, 2953, 3, 710, 355, 0, 2952, 2950, 1, 0, 0, 0, 2952, 2953, 1, 0, 0, 0, 2953, 2959, 1, 0, 0, 0, 2954, 2955, 5, 142, 0, 0, 2955, 2956, 5, 504, 0, 0, 2956, 2957, 3, 706, 353, 0, 2957, 2958, 5, 505, 0, 0, 2958, 2960, 1, 0, 0, 0, 2959, 2954, 1, 0, 0, 0, 2959, 2960, 1, 0, 0, 0, 2960, 277, 1, 0, 0, 0, 2961, 2962, 5, 111, 0, 0, 2962, 2963, 3, 668, 334, 0, 2963, 279, 1, 0, 0, 0, 2964, 2965, 5, 301, 0, 0, 2965, 2966, 5, 302, 0, 0, 2966, 2967, 3, 214, 107, 0, 2967, 2968, 5, 405, 0, 0, 2968, 2974, 3, 668, 334, 0, 2969, 2970, 5, 142, 0, 0, 2970, 2971, 5, 504, 0, 0, 2971, 2972, 3, 706, 353, 0, 2972, 2973, 5, 505, 0, 0, 2973, 2975, 1, 0, 0, 0, 2974, 2969, 1, 0, 0, 0, 2974, 2975, 1, 0, 0, 0, 2975, 281, 1, 0, 0, 0, 2976, 2977, 5, 517, 0, 0, 2977, 2979, 5, 487, 0, 0, 2978, 2976, 1, 0, 0, 0, 2978, 2979, 1, 0, 0, 0, 2979, 2980, 1, 0, 0, 0, 2980, 2981, 5, 314, 0, 0, 2981, 2982, 5, 113, 0, 0, 2982, 2983, 3, 284, 142, 0, 2983, 2985, 3, 286, 143, 0, 2984, 2986, 3, 288, 144, 0, 2985, 2984, 1, 0, 0, 0, 2985, 2986, 1, 0, 0, 0, 2986, 2990, 1, 0, 0, 0, 2987, 2989, 3, 290, 145, 0, 2988, 2987, 1, 0, 0, 0, 2989, 2992, 1, 0, 0, 0, 2990, 2988, 1, 0, 0, 0, 2990, 2991, 1, 0, 0, 0, 2991, 2994, 1, 0, 0, 0, 2992, 2990, 1, 0, 0, 0, 2993, 2995, 3, 292, 146, 0, 2994, 2993, 1, 0, 0, 0, 2994, 2995, 1, 0, 0, 0, 2995, 2997, 1, 0, 0, 0, 2996, 2998, 3, 294, 147, 0, 2997, 2996, 1, 0, 0, 0, 2997, 2998, 1, 0, 0, 0, 2998, 3000, 1, 0, 0, 0, 2999, 3001, 3, 296, 148, 0, 3000, 2999, 1, 0, 0, 0, 3000, 3001, 1, 0, 0, 0, 3001, 3002, 1, 0, 0, 0, 3002, 3004, 3, 298, 149, 0, 3003, 3005, 3, 226, 113, 0, 3004, 3003, 1, 0, 0, 0, 3004, 3005, 1, 0, 0, 0, 3005, 283, 1, 0, 0, 0, 3006, 3007, 7, 14, 0, 0, 3007, 285, 1, 0, 0, 0, 3008, 3011, 5, 514, 0, 0, 3009, 3011, 3, 668, 334, 0, 3010, 3008, 1, 0, 0, 0, 3010, 3009, 1, 0, 0, 0, 3011, 287, 1, 0, 0, 0, 3012, 3013, 3, 246, 123, 0, 3013, 289, 1, 0, 0, 0, 3014, 3015, 5, 196, 0, 0, 3015, 3016, 7, 15, 0, 0, 3016, 3017, 5, 487, 0, 0, 3017, 3018, 3, 668, 334, 0, 3018, 291, 1, 0, 0, 0, 3019, 3020, 5, 319, 0, 0, 3020, 3021, 5, 321, 0, 0, 3021, 3022, 3, 668, 334, 0, 3022, 3023, 5, 354, 0, 0, 3023, 3024, 3, 668, 334, 0, 3024, 293, 1, 0, 0, 0, 3025, 3026, 5, 328, 0, 0, 3026, 3028, 5, 514, 0, 0, 3027, 3029, 3, 246, 123, 0, 3028, 3027, 1, 0, 0, 0, 3028, 3029, 1, 0, 0, 0, 3029, 3042, 1, 0, 0, 0, 3030, 3031, 5, 328, 0, 0, 3031, 3033, 3, 668, 334, 0, 3032, 3034, 3, 246, 123, 0, 3033, 3032, 1, 0, 0, 0, 3033, 3034, 1, 0, 0, 0, 3034, 3042, 1, 0, 0, 0, 3035, 3036, 5, 328, 0, 0, 3036, 3037, 5, 359, 0, 0, 3037, 3038, 3, 708, 354, 0, 3038, 3039, 5, 71, 0, 0, 3039, 3040, 5, 517, 0, 0, 3040, 3042, 1, 0, 0, 0, 3041, 3025, 1, 0, 0, 0, 3041, 3030, 1, 0, 0, 0, 3041, 3035, 1, 0, 0, 0, 3042, 295, 1, 0, 0, 0, 3043, 3044, 5, 327, 0, 0, 3044, 3045, 3, 668, 334, 0, 3045, 297, 1, 0, 0, 0, 3046, 3047, 5, 77, 0, 0, 3047, 3061, 5, 265, 0, 0, 3048, 3049, 5, 77, 0, 0, 3049, 3061, 5, 329, 0, 0, 3050, 3051, 5, 77, 0, 0, 3051, 3052, 5, 359, 0, 0, 3052, 3053, 3, 708, 354, 0, 3053, 3054, 5, 76, 0, 0, 3054, 3055, 3, 708, 354, 0, 3055, 3061, 1, 0, 0, 0, 3056, 3057, 5, 77, 0, 0, 3057, 3061, 5, 424, 0, 0, 3058, 3059, 5, 77, 0, 0, 3059, 3061, 5, 322, 0, 0, 3060, 3046, 1, 0, 0, 0, 3060, 3048, 1, 0, 0, 0, 3060, 3050, 1, 0, 0, 0, 3060, 3056, 1, 0, 0, 0, 3060, 3058, 1, 0, 0, 0, 3061, 299, 1, 0, 0, 0, 3062, 3063, 5, 517, 0, 0, 3063, 3065, 5, 487, 0, 0, 3064, 3062, 1, 0, 0, 0, 3064, 3065, 1, 0, 0, 0, 3065, 3066, 1, 0, 0, 0, 3066, 3067, 5, 331, 0, 0, 3067, 3068, 5, 314, 0, 0, 3068, 3069, 5, 330, 0, 0, 3069, 3071, 3, 708, 354, 0, 3070, 3072, 3, 302, 151, 0, 3071, 3070, 1, 0, 0, 0, 3071, 3072, 1, 0, 0, 0, 3072, 3074, 1, 0, 0, 0, 3073, 3075, 3, 226, 113, 0, 3074, 3073, 1, 0, 0, 0, 3074, 3075, 1, 0, 0, 0, 3075, 301, 1, 0, 0, 0, 3076, 3077, 5, 328, 0, 0, 3077, 3078, 5, 517, 0, 0, 3078, 303, 1, 0, 0, 0, 3079, 3080, 5, 517, 0, 0, 3080, 3081, 5, 487, 0, 0, 3081, 3082, 3, 306, 153, 0, 3082, 305, 1, 0, 0, 0, 3083, 3084, 5, 121, 0, 0, 3084, 3085, 5, 500, 0, 0, 3085, 3086, 5, 517, 0, 0, 3086, 3143, 5, 501, 0, 0, 3087, 3088, 5, 122, 0, 0, 3088, 3089, 5, 500, 0, 0, 3089, 3090, 5, 517, 0, 0, 3090, 3143, 5, 501, 0, 0, 3091, 3092, 5, 123, 0, 0, 3092, 3093, 5, 500, 0, 0, 3093, 3094, 5, 517, 0, 0, 3094, 3095, 5, 498, 0, 0, 3095, 3096, 3, 668, 334, 0, 3096, 3097, 5, 501, 0, 0, 3097, 3143, 1, 0, 0, 0, 3098, 3099, 5, 186, 0, 0, 3099, 3100, 5, 500, 0, 0, 3100, 3101, 5, 517, 0, 0, 3101, 3102, 5, 498, 0, 0, 3102, 3103, 3, 668, 334, 0, 3103, 3104, 5, 501, 0, 0, 3104, 3143, 1, 0, 0, 0, 3105, 3106, 5, 124, 0, 0, 3106, 3107, 5, 500, 0, 0, 3107, 3108, 5, 517, 0, 0, 3108, 3109, 5, 498, 0, 0, 3109, 3110, 3, 308, 154, 0, 3110, 3111, 5, 501, 0, 0, 3111, 3143, 1, 0, 0, 0, 3112, 3113, 5, 125, 0, 0, 3113, 3114, 5, 500, 0, 0, 3114, 3115, 5, 517, 0, 0, 3115, 3116, 5, 498, 0, 0, 3116, 3117, 5, 517, 0, 0, 3117, 3143, 5, 501, 0, 0, 3118, 3119, 5, 126, 0, 0, 3119, 3120, 5, 500, 0, 0, 3120, 3121, 5, 517, 0, 0, 3121, 3122, 5, 498, 0, 0, 3122, 3123, 5, 517, 0, 0, 3123, 3143, 5, 501, 0, 0, 3124, 3125, 5, 127, 0, 0, 3125, 3126, 5, 500, 0, 0, 3126, 3127, 5, 517, 0, 0, 3127, 3128, 5, 498, 0, 0, 3128, 3129, 5, 517, 0, 0, 3129, 3143, 5, 501, 0, 0, 3130, 3131, 5, 128, 0, 0, 3131, 3132, 5, 500, 0, 0, 3132, 3133, 5, 517, 0, 0, 3133, 3134, 5, 498, 0, 0, 3134, 3135, 5, 517, 0, 0, 3135, 3143, 5, 501, 0, 0, 3136, 3137, 5, 134, 0, 0, 3137, 3138, 5, 500, 0, 0, 3138, 3139, 5, 517, 0, 0, 3139, 3140, 5, 498, 0, 0, 3140, 3141, 5, 517, 0, 0, 3141, 3143, 5, 501, 0, 0, 3142, 3083, 1, 0, 0, 0, 3142, 3087, 1, 0, 0, 0, 3142, 3091, 1, 0, 0, 0, 3142, 3098, 1, 0, 0, 0, 3142, 3105, 1, 0, 0, 0, 3142, 3112, 1, 0, 0, 0, 3142, 3118, 1, 0, 0, 0, 3142, 3124, 1, 0, 0, 0, 3142, 3130, 1, 0, 0, 0, 3142, 3136, 1, 0, 0, 0, 3143, 307, 1, 0, 0, 0, 3144, 3149, 3, 310, 155, 0, 3145, 3146, 5, 498, 0, 0, 3146, 3148, 3, 310, 155, 0, 3147, 3145, 1, 0, 0, 0, 3148, 3151, 1, 0, 0, 0, 3149, 3147, 1, 0, 0, 0, 3149, 3150, 1, 0, 0, 0, 3150, 309, 1, 0, 0, 0, 3151, 3149, 1, 0, 0, 0, 3152, 3154, 5, 518, 0, 0, 3153, 3155, 7, 7, 0, 0, 3154, 3153, 1, 0, 0, 0, 3154, 3155, 1, 0, 0, 0, 3155, 311, 1, 0, 0, 0, 3156, 3157, 5, 517, 0, 0, 3157, 3158, 5, 487, 0, 0, 3158, 3159, 3, 314, 157, 0, 3159, 313, 1, 0, 0, 0, 3160, 3161, 5, 279, 0, 0, 3161, 3162, 5, 500, 0, 0, 3162, 3163, 5, 517, 0, 0, 3163, 3185, 5, 501, 0, 0, 3164, 3165, 5, 280, 0, 0, 3165, 3166, 5, 500, 0, 0, 3166, 3167, 3, 214, 107, 0, 3167, 3168, 5, 501, 0, 0, 3168, 3185, 1, 0, 0, 0, 3169, 3170, 5, 129, 0, 0, 3170, 3171, 5, 500, 0, 0, 3171, 3172, 3, 214, 107, 0, 3172, 3173, 5, 501, 0, 0, 3173, 3185, 1, 0, 0, 0, 3174, 3175, 5, 130, 0, 0, 3175, 3176, 5, 500, 0, 0, 3176, 3177, 3, 214, 107, 0, 3177, 3178, 5, 501, 0, 0, 3178, 3185, 1, 0, 0, 0, 3179, 3180, 5, 131, 0, 0, 3180, 3181, 5, 500, 0, 0, 3181, 3182, 3, 214, 107, 0, 3182, 3183, 5, 501, 0, 0, 3183, 3185, 1, 0, 0, 0, 3184, 3160, 1, 0, 0, 0, 3184, 3164, 1, 0, 0, 0, 3184, 3169, 1, 0, 0, 0, 3184, 3174, 1, 0, 0, 0, 3184, 3179, 1, 0, 0, 0, 3185, 315, 1, 0, 0, 0, 3186, 3187, 5, 517, 0, 0, 3187, 3188, 5, 487, 0, 0, 3188, 3189, 5, 17, 0, 0, 3189, 3190, 5, 13, 0, 0, 3190, 3191, 3, 708, 354, 0, 3191, 317, 1, 0, 0, 0, 3192, 3193, 5, 47, 0, 0, 3193, 3194, 5, 517, 0, 0, 3194, 3195, 5, 426, 0, 0, 3195, 3196, 5, 517, 0, 0, 3196, 319, 1, 0, 0, 0, 3197, 3198, 5, 133, 0, 0, 3198, 3199, 5, 517, 0, 0, 3199, 3200, 5, 71, 0, 0, 3200, 3201, 5, 517, 0, 0, 3201, 321, 1, 0, 0, 0, 3202, 3207, 3, 324, 162, 0, 3203, 3204, 5, 498, 0, 0, 3204, 3206, 3, 324, 162, 0, 3205, 3203, 1, 0, 0, 0, 3206, 3209, 1, 0, 0, 0, 3207, 3205, 1, 0, 0, 0, 3207, 3208, 1, 0, 0, 0, 3208, 323, 1, 0, 0, 0, 3209, 3207, 1, 0, 0, 0, 3210, 3211, 3, 326, 163, 0, 3211, 3212, 5, 487, 0, 0, 3212, 3213, 3, 668, 334, 0, 3213, 325, 1, 0, 0, 0, 3214, 3219, 3, 708, 354, 0, 3215, 3219, 5, 518, 0, 0, 3216, 3219, 5, 520, 0, 0, 3217, 3219, 3, 730, 365, 0, 3218, 3214, 1, 0, 0, 0, 3218, 3215, 1, 0, 0, 0, 3218, 3216, 1, 0, 0, 0, 3218, 3217, 1, 0, 0, 0, 3219, 327, 1, 0, 0, 0, 3220, 3225, 3, 330, 165, 0, 3221, 3222, 5, 498, 0, 0, 3222, 3224, 3, 330, 165, 0, 3223, 3221, 1, 0, 0, 0, 3224, 3227, 1, 0, 0, 0, 3225, 3223, 1, 0, 0, 0, 3225, 3226, 1, 0, 0, 0, 3226, 329, 1, 0, 0, 0, 3227, 3225, 1, 0, 0, 0, 3228, 3229, 5, 518, 0, 0, 3229, 3230, 5, 487, 0, 0, 3230, 3231, 3, 668, 334, 0, 3231, 331, 1, 0, 0, 0, 3232, 3233, 5, 33, 0, 0, 3233, 3234, 3, 708, 354, 0, 3234, 3235, 3, 382, 191, 0, 3235, 3236, 5, 502, 0, 0, 3236, 3237, 3, 390, 195, 0, 3237, 3238, 5, 503, 0, 0, 3238, 333, 1, 0, 0, 0, 3239, 3240, 5, 34, 0, 0, 3240, 3242, 3, 708, 354, 0, 3241, 3243, 3, 386, 193, 0, 3242, 3241, 1, 0, 0, 0, 3242, 3243, 1, 0, 0, 0, 3243, 3245, 1, 0, 0, 0, 3244, 3246, 3, 336, 168, 0, 3245, 3244, 1, 0, 0, 0, 3245, 3246, 1, 0, 0, 0, 3246, 3247, 1, 0, 0, 0, 3247, 3248, 5, 502, 0, 0, 3248, 3249, 3, 390, 195, 0, 3249, 3250, 5, 503, 0, 0, 3250, 335, 1, 0, 0, 0, 3251, 3253, 3, 338, 169, 0, 3252, 3251, 1, 0, 0, 0, 3253, 3254, 1, 0, 0, 0, 3254, 3252, 1, 0, 0, 0, 3254, 3255, 1, 0, 0, 0, 3255, 337, 1, 0, 0, 0, 3256, 3257, 5, 220, 0, 0, 3257, 3258, 5, 514, 0, 0, 3258, 339, 1, 0, 0, 0, 3259, 3264, 3, 342, 171, 0, 3260, 3261, 5, 498, 0, 0, 3261, 3263, 3, 342, 171, 0, 3262, 3260, 1, 0, 0, 0, 3263, 3266, 1, 0, 0, 0, 3264, 3262, 1, 0, 0, 0, 3264, 3265, 1, 0, 0, 0, 3265, 341, 1, 0, 0, 0, 3266, 3264, 1, 0, 0, 0, 3267, 3268, 7, 16, 0, 0, 3268, 3269, 5, 506, 0, 0, 3269, 3270, 3, 108, 54, 0, 3270, 343, 1, 0, 0, 0, 3271, 3276, 3, 346, 173, 0, 3272, 3273, 5, 498, 0, 0, 3273, 3275, 3, 346, 173, 0, 3274, 3272, 1, 0, 0, 0, 3275, 3278, 1, 0, 0, 0, 3276, 3274, 1, 0, 0, 0, 3276, 3277, 1, 0, 0, 0, 3277, 345, 1, 0, 0, 0, 3278, 3276, 1, 0, 0, 0, 3279, 3280, 7, 16, 0, 0, 3280, 3281, 5, 506, 0, 0, 3281, 3282, 3, 108, 54, 0, 3282, 347, 1, 0, 0, 0, 3283, 3288, 3, 350, 175, 0, 3284, 3285, 5, 498, 0, 0, 3285, 3287, 3, 350, 175, 0, 3286, 3284, 1, 0, 0, 0, 3287, 3290, 1, 0, 0, 0, 3288, 3286, 1, 0, 0, 0, 3288, 3289, 1, 0, 0, 0, 3289, 349, 1, 0, 0, 0, 3290, 3288, 1, 0, 0, 0, 3291, 3292, 5, 517, 0, 0, 3292, 3293, 5, 506, 0, 0, 3293, 3294, 3, 108, 54, 0, 3294, 3295, 5, 487, 0, 0, 3295, 3296, 5, 514, 0, 0, 3296, 351, 1, 0, 0, 0, 3297, 3300, 3, 708, 354, 0, 3298, 3300, 5, 518, 0, 0, 3299, 3297, 1, 0, 0, 0, 3299, 3298, 1, 0, 0, 0, 3300, 3302, 1, 0, 0, 0, 3301, 3303, 7, 7, 0, 0, 3302, 3301, 1, 0, 0, 0, 3302, 3303, 1, 0, 0, 0, 3303, 353, 1, 0, 0, 0, 3304, 3305, 5, 504, 0, 0, 3305, 3306, 3, 358, 179, 0, 3306, 3307, 5, 505, 0, 0, 3307, 355, 1, 0, 0, 0, 3308, 3309, 7, 17, 0, 0, 3309, 357, 1, 0, 0, 0, 3310, 3315, 3, 360, 180, 0, 3311, 3312, 5, 289, 0, 0, 3312, 3314, 3, 360, 180, 0, 3313, 3311, 1, 0, 0, 0, 3314, 3317, 1, 0, 0, 0, 3315, 3313, 1, 0, 0, 0, 3315, 3316, 1, 0, 0, 0, 3316, 359, 1, 0, 0, 0, 3317, 3315, 1, 0, 0, 0, 3318, 3323, 3, 362, 181, 0, 3319, 3320, 5, 288, 0, 0, 3320, 3322, 3, 362, 181, 0, 3321, 3319, 1, 0, 0, 0, 3322, 3325, 1, 0, 0, 0, 3323, 3321, 1, 0, 0, 0, 3323, 3324, 1, 0, 0, 0, 3324, 361, 1, 0, 0, 0, 3325, 3323, 1, 0, 0, 0, 3326, 3327, 5, 290, 0, 0, 3327, 3330, 3, 362, 181, 0, 3328, 3330, 3, 364, 182, 0, 3329, 3326, 1, 0, 0, 0, 3329, 3328, 1, 0, 0, 0, 3330, 363, 1, 0, 0, 0, 3331, 3335, 3, 366, 183, 0, 3332, 3333, 3, 678, 339, 0, 3333, 3334, 3, 366, 183, 0, 3334, 3336, 1, 0, 0, 0, 3335, 3332, 1, 0, 0, 0, 3335, 3336, 1, 0, 0, 0, 3336, 365, 1, 0, 0, 0, 3337, 3344, 3, 378, 189, 0, 3338, 3344, 3, 368, 184, 0, 3339, 3340, 5, 500, 0, 0, 3340, 3341, 3, 358, 179, 0, 3341, 3342, 5, 501, 0, 0, 3342, 3344, 1, 0, 0, 0, 3343, 3337, 1, 0, 0, 0, 3343, 3338, 1, 0, 0, 0, 3343, 3339, 1, 0, 0, 0, 3344, 367, 1, 0, 0, 0, 3345, 3350, 3, 370, 185, 0, 3346, 3347, 5, 493, 0, 0, 3347, 3349, 3, 370, 185, 0, 3348, 3346, 1, 0, 0, 0, 3349, 3352, 1, 0, 0, 0, 3350, 3348, 1, 0, 0, 0, 3350, 3351, 1, 0, 0, 0, 3351, 369, 1, 0, 0, 0, 3352, 3350, 1, 0, 0, 0, 3353, 3358, 3, 372, 186, 0, 3354, 3355, 5, 504, 0, 0, 3355, 3356, 3, 358, 179, 0, 3356, 3357, 5, 505, 0, 0, 3357, 3359, 1, 0, 0, 0, 3358, 3354, 1, 0, 0, 0, 3358, 3359, 1, 0, 0, 0, 3359, 371, 1, 0, 0, 0, 3360, 3366, 3, 374, 187, 0, 3361, 3366, 5, 517, 0, 0, 3362, 3366, 5, 514, 0, 0, 3363, 3366, 5, 516, 0, 0, 3364, 3366, 5, 513, 0, 0, 3365, 3360, 1, 0, 0, 0, 3365, 3361, 1, 0, 0, 0, 3365, 3362, 1, 0, 0, 0, 3365, 3363, 1, 0, 0, 0, 3365, 3364, 1, 0, 0, 0, 3366, 373, 1, 0, 0, 0, 3367, 3372, 3, 376, 188, 0, 3368, 3369, 5, 499, 0, 0, 3369, 3371, 3, 376, 188, 0, 3370, 3368, 1, 0, 0, 0, 3371, 3374, 1, 0, 0, 0, 3372, 3370, 1, 0, 0, 0, 3372, 3373, 1, 0, 0, 0, 3373, 375, 1, 0, 0, 0, 3374, 3372, 1, 0, 0, 0, 3375, 3376, 8, 18, 0, 0, 3376, 377, 1, 0, 0, 0, 3377, 3378, 3, 380, 190, 0, 3378, 3387, 5, 500, 0, 0, 3379, 3384, 3, 358, 179, 0, 3380, 3381, 5, 498, 0, 0, 3381, 3383, 3, 358, 179, 0, 3382, 3380, 1, 0, 0, 0, 3383, 3386, 1, 0, 0, 0, 3384, 3382, 1, 0, 0, 0, 3384, 3385, 1, 0, 0, 0, 3385, 3388, 1, 0, 0, 0, 3386, 3384, 1, 0, 0, 0, 3387, 3379, 1, 0, 0, 0, 3387, 3388, 1, 0, 0, 0, 3388, 3389, 1, 0, 0, 0, 3389, 3390, 5, 501, 0, 0, 3390, 379, 1, 0, 0, 0, 3391, 3392, 7, 19, 0, 0, 3392, 381, 1, 0, 0, 0, 3393, 3394, 5, 500, 0, 0, 3394, 3399, 3, 384, 192, 0, 3395, 3396, 5, 498, 0, 0, 3396, 3398, 3, 384, 192, 0, 3397, 3395, 1, 0, 0, 0, 3398, 3401, 1, 0, 0, 0, 3399, 3397, 1, 0, 0, 0, 3399, 3400, 1, 0, 0, 0, 3400, 3402, 1, 0, 0, 0, 3401, 3399, 1, 0, 0, 0, 3402, 3403, 5, 501, 0, 0, 3403, 383, 1, 0, 0, 0, 3404, 3405, 5, 203, 0, 0, 3405, 3406, 5, 506, 0, 0, 3406, 3407, 5, 502, 0, 0, 3407, 3408, 3, 340, 170, 0, 3408, 3409, 5, 503, 0, 0, 3409, 3432, 1, 0, 0, 0, 3410, 3411, 5, 204, 0, 0, 3411, 3412, 5, 506, 0, 0, 3412, 3413, 5, 502, 0, 0, 3413, 3414, 3, 348, 174, 0, 3414, 3415, 5, 503, 0, 0, 3415, 3432, 1, 0, 0, 0, 3416, 3417, 5, 164, 0, 0, 3417, 3418, 5, 506, 0, 0, 3418, 3432, 5, 514, 0, 0, 3419, 3420, 5, 35, 0, 0, 3420, 3423, 5, 506, 0, 0, 3421, 3424, 3, 708, 354, 0, 3422, 3424, 5, 514, 0, 0, 3423, 3421, 1, 0, 0, 0, 3423, 3422, 1, 0, 0, 0, 3424, 3432, 1, 0, 0, 0, 3425, 3426, 5, 219, 0, 0, 3426, 3427, 5, 506, 0, 0, 3427, 3432, 5, 514, 0, 0, 3428, 3429, 5, 220, 0, 0, 3429, 3430, 5, 506, 0, 0, 3430, 3432, 5, 514, 0, 0, 3431, 3404, 1, 0, 0, 0, 3431, 3410, 1, 0, 0, 0, 3431, 3416, 1, 0, 0, 0, 3431, 3419, 1, 0, 0, 0, 3431, 3425, 1, 0, 0, 0, 3431, 3428, 1, 0, 0, 0, 3432, 385, 1, 0, 0, 0, 3433, 3434, 5, 500, 0, 0, 3434, 3439, 3, 388, 194, 0, 3435, 3436, 5, 498, 0, 0, 3436, 3438, 3, 388, 194, 0, 3437, 3435, 1, 0, 0, 0, 3438, 3441, 1, 0, 0, 0, 3439, 3437, 1, 0, 0, 0, 3439, 3440, 1, 0, 0, 0, 3440, 3442, 1, 0, 0, 0, 3441, 3439, 1, 0, 0, 0, 3442, 3443, 5, 501, 0, 0, 3443, 387, 1, 0, 0, 0, 3444, 3445, 5, 203, 0, 0, 3445, 3446, 5, 506, 0, 0, 3446, 3447, 5, 502, 0, 0, 3447, 3448, 3, 344, 172, 0, 3448, 3449, 5, 503, 0, 0, 3449, 3460, 1, 0, 0, 0, 3450, 3451, 5, 204, 0, 0, 3451, 3452, 5, 506, 0, 0, 3452, 3453, 5, 502, 0, 0, 3453, 3454, 3, 348, 174, 0, 3454, 3455, 5, 503, 0, 0, 3455, 3460, 1, 0, 0, 0, 3456, 3457, 5, 220, 0, 0, 3457, 3458, 5, 506, 0, 0, 3458, 3460, 5, 514, 0, 0, 3459, 3444, 1, 0, 0, 0, 3459, 3450, 1, 0, 0, 0, 3459, 3456, 1, 0, 0, 0, 3460, 389, 1, 0, 0, 0, 3461, 3464, 3, 394, 197, 0, 3462, 3464, 3, 392, 196, 0, 3463, 3461, 1, 0, 0, 0, 3463, 3462, 1, 0, 0, 0, 3464, 3467, 1, 0, 0, 0, 3465, 3463, 1, 0, 0, 0, 3465, 3466, 1, 0, 0, 0, 3466, 391, 1, 0, 0, 0, 3467, 3465, 1, 0, 0, 0, 3468, 3469, 5, 67, 0, 0, 3469, 3470, 5, 390, 0, 0, 3470, 3473, 3, 710, 355, 0, 3471, 3472, 5, 76, 0, 0, 3472, 3474, 3, 710, 355, 0, 3473, 3471, 1, 0, 0, 0, 3473, 3474, 1, 0, 0, 0, 3474, 393, 1, 0, 0, 0, 3475, 3476, 3, 396, 198, 0, 3476, 3478, 5, 518, 0, 0, 3477, 3479, 3, 398, 199, 0, 3478, 3477, 1, 0, 0, 0, 3478, 3479, 1, 0, 0, 0, 3479, 3481, 1, 0, 0, 0, 3480, 3482, 3, 436, 218, 0, 3481, 3480, 1, 0, 0, 0, 3481, 3482, 1, 0, 0, 0, 3482, 3502, 1, 0, 0, 0, 3483, 3484, 5, 181, 0, 0, 3484, 3485, 5, 514, 0, 0, 3485, 3487, 5, 518, 0, 0, 3486, 3488, 3, 398, 199, 0, 3487, 3486, 1, 0, 0, 0, 3487, 3488, 1, 0, 0, 0, 3488, 3490, 1, 0, 0, 0, 3489, 3491, 3, 436, 218, 0, 3490, 3489, 1, 0, 0, 0, 3490, 3491, 1, 0, 0, 0, 3491, 3502, 1, 0, 0, 0, 3492, 3493, 5, 180, 0, 0, 3493, 3494, 5, 514, 0, 0, 3494, 3496, 5, 518, 0, 0, 3495, 3497, 3, 398, 199, 0, 3496, 3495, 1, 0, 0, 0, 3496, 3497, 1, 0, 0, 0, 3497, 3499, 1, 0, 0, 0, 3498, 3500, 3, 436, 218, 0, 3499, 3498, 1, 0, 0, 0, 3499, 3500, 1, 0, 0, 0, 3500, 3502, 1, 0, 0, 0, 3501, 3475, 1, 0, 0, 0, 3501, 3483, 1, 0, 0, 0, 3501, 3492, 1, 0, 0, 0, 3502, 395, 1, 0, 0, 0, 3503, 3504, 7, 20, 0, 0, 3504, 397, 1, 0, 0, 0, 3505, 3506, 5, 500, 0, 0, 3506, 3511, 3, 400, 200, 0, 3507, 3508, 5, 498, 0, 0, 3508, 3510, 3, 400, 200, 0, 3509, 3507, 1, 0, 0, 0, 3510, 3513, 1, 0, 0, 0, 3511, 3509, 1, 0, 0, 0, 3511, 3512, 1, 0, 0, 0, 3512, 3514, 1, 0, 0, 0, 3513, 3511, 1, 0, 0, 0, 3514, 3515, 5, 501, 0, 0, 3515, 399, 1, 0, 0, 0, 3516, 3517, 5, 192, 0, 0, 3517, 3518, 5, 506, 0, 0, 3518, 3611, 3, 406, 203, 0, 3519, 3520, 5, 38, 0, 0, 3520, 3521, 5, 506, 0, 0, 3521, 3611, 3, 414, 207, 0, 3522, 3523, 5, 199, 0, 0, 3523, 3524, 5, 506, 0, 0, 3524, 3611, 3, 414, 207, 0, 3525, 3526, 5, 116, 0, 0, 3526, 3527, 5, 506, 0, 0, 3527, 3611, 3, 408, 204, 0, 3528, 3529, 5, 189, 0, 0, 3529, 3530, 5, 506, 0, 0, 3530, 3611, 3, 416, 208, 0, 3531, 3532, 5, 168, 0, 0, 3532, 3533, 5, 506, 0, 0, 3533, 3611, 5, 514, 0, 0, 3534, 3535, 5, 200, 0, 0, 3535, 3536, 5, 506, 0, 0, 3536, 3611, 3, 414, 207, 0, 3537, 3538, 5, 197, 0, 0, 3538, 3539, 5, 506, 0, 0, 3539, 3611, 3, 416, 208, 0, 3540, 3541, 5, 198, 0, 0, 3541, 3542, 5, 506, 0, 0, 3542, 3611, 3, 422, 211, 0, 3543, 3544, 5, 201, 0, 0, 3544, 3545, 5, 506, 0, 0, 3545, 3611, 3, 418, 209, 0, 3546, 3547, 5, 202, 0, 0, 3547, 3548, 5, 506, 0, 0, 3548, 3611, 3, 418, 209, 0, 3549, 3550, 5, 210, 0, 0, 3550, 3551, 5, 506, 0, 0, 3551, 3611, 3, 424, 212, 0, 3552, 3553, 5, 208, 0, 0, 3553, 3554, 5, 506, 0, 0, 3554, 3611, 5, 514, 0, 0, 3555, 3556, 5, 209, 0, 0, 3556, 3557, 5, 506, 0, 0, 3557, 3611, 5, 514, 0, 0, 3558, 3559, 5, 205, 0, 0, 3559, 3560, 5, 506, 0, 0, 3560, 3611, 3, 426, 213, 0, 3561, 3562, 5, 206, 0, 0, 3562, 3563, 5, 506, 0, 0, 3563, 3611, 3, 426, 213, 0, 3564, 3565, 5, 207, 0, 0, 3565, 3566, 5, 506, 0, 0, 3566, 3611, 3, 426, 213, 0, 3567, 3568, 5, 194, 0, 0, 3568, 3569, 5, 506, 0, 0, 3569, 3611, 3, 428, 214, 0, 3570, 3571, 5, 34, 0, 0, 3571, 3572, 5, 506, 0, 0, 3572, 3611, 3, 708, 354, 0, 3573, 3574, 5, 225, 0, 0, 3574, 3575, 5, 506, 0, 0, 3575, 3611, 3, 404, 202, 0, 3576, 3577, 5, 226, 0, 0, 3577, 3578, 5, 506, 0, 0, 3578, 3611, 3, 402, 201, 0, 3579, 3580, 5, 213, 0, 0, 3580, 3581, 5, 506, 0, 0, 3581, 3611, 3, 432, 216, 0, 3582, 3583, 5, 216, 0, 0, 3583, 3584, 5, 506, 0, 0, 3584, 3611, 5, 516, 0, 0, 3585, 3586, 5, 217, 0, 0, 3586, 3587, 5, 506, 0, 0, 3587, 3611, 5, 516, 0, 0, 3588, 3589, 5, 235, 0, 0, 3589, 3590, 5, 506, 0, 0, 3590, 3611, 3, 354, 177, 0, 3591, 3592, 5, 235, 0, 0, 3592, 3593, 5, 506, 0, 0, 3593, 3611, 3, 430, 215, 0, 3594, 3595, 5, 223, 0, 0, 3595, 3596, 5, 506, 0, 0, 3596, 3611, 3, 354, 177, 0, 3597, 3598, 5, 223, 0, 0, 3598, 3599, 5, 506, 0, 0, 3599, 3611, 3, 430, 215, 0, 3600, 3601, 5, 191, 0, 0, 3601, 3602, 5, 506, 0, 0, 3602, 3611, 3, 430, 215, 0, 3603, 3604, 5, 518, 0, 0, 3604, 3605, 5, 506, 0, 0, 3605, 3611, 3, 430, 215, 0, 3606, 3607, 3, 732, 366, 0, 3607, 3608, 5, 506, 0, 0, 3608, 3609, 3, 430, 215, 0, 3609, 3611, 1, 0, 0, 0, 3610, 3516, 1, 0, 0, 0, 3610, 3519, 1, 0, 0, 0, 3610, 3522, 1, 0, 0, 0, 3610, 3525, 1, 0, 0, 0, 3610, 3528, 1, 0, 0, 0, 3610, 3531, 1, 0, 0, 0, 3610, 3534, 1, 0, 0, 0, 3610, 3537, 1, 0, 0, 0, 3610, 3540, 1, 0, 0, 0, 3610, 3543, 1, 0, 0, 0, 3610, 3546, 1, 0, 0, 0, 3610, 3549, 1, 0, 0, 0, 3610, 3552, 1, 0, 0, 0, 3610, 3555, 1, 0, 0, 0, 3610, 3558, 1, 0, 0, 0, 3610, 3561, 1, 0, 0, 0, 3610, 3564, 1, 0, 0, 0, 3610, 3567, 1, 0, 0, 0, 3610, 3570, 1, 0, 0, 0, 3610, 3573, 1, 0, 0, 0, 3610, 3576, 1, 0, 0, 0, 3610, 3579, 1, 0, 0, 0, 3610, 3582, 1, 0, 0, 0, 3610, 3585, 1, 0, 0, 0, 3610, 3588, 1, 0, 0, 0, 3610, 3591, 1, 0, 0, 0, 3610, 3594, 1, 0, 0, 0, 3610, 3597, 1, 0, 0, 0, 3610, 3600, 1, 0, 0, 0, 3610, 3603, 1, 0, 0, 0, 3610, 3606, 1, 0, 0, 0, 3611, 401, 1, 0, 0, 0, 3612, 3613, 7, 21, 0, 0, 3613, 403, 1, 0, 0, 0, 3614, 3615, 5, 504, 0, 0, 3615, 3620, 3, 708, 354, 0, 3616, 3617, 5, 498, 0, 0, 3617, 3619, 3, 708, 354, 0, 3618, 3616, 1, 0, 0, 0, 3619, 3622, 1, 0, 0, 0, 3620, 3618, 1, 0, 0, 0, 3620, 3621, 1, 0, 0, 0, 3621, 3623, 1, 0, 0, 0, 3622, 3620, 1, 0, 0, 0, 3623, 3624, 5, 505, 0, 0, 3624, 405, 1, 0, 0, 0, 3625, 3672, 5, 517, 0, 0, 3626, 3628, 5, 356, 0, 0, 3627, 3629, 5, 71, 0, 0, 3628, 3627, 1, 0, 0, 0, 3628, 3629, 1, 0, 0, 0, 3629, 3630, 1, 0, 0, 0, 3630, 3644, 3, 708, 354, 0, 3631, 3642, 5, 72, 0, 0, 3632, 3638, 3, 354, 177, 0, 3633, 3634, 3, 356, 178, 0, 3634, 3635, 3, 354, 177, 0, 3635, 3637, 1, 0, 0, 0, 3636, 3633, 1, 0, 0, 0, 3637, 3640, 1, 0, 0, 0, 3638, 3636, 1, 0, 0, 0, 3638, 3639, 1, 0, 0, 0, 3639, 3643, 1, 0, 0, 0, 3640, 3638, 1, 0, 0, 0, 3641, 3643, 3, 668, 334, 0, 3642, 3632, 1, 0, 0, 0, 3642, 3641, 1, 0, 0, 0, 3643, 3645, 1, 0, 0, 0, 3644, 3631, 1, 0, 0, 0, 3644, 3645, 1, 0, 0, 0, 3645, 3655, 1, 0, 0, 0, 3646, 3647, 5, 10, 0, 0, 3647, 3652, 3, 352, 176, 0, 3648, 3649, 5, 498, 0, 0, 3649, 3651, 3, 352, 176, 0, 3650, 3648, 1, 0, 0, 0, 3651, 3654, 1, 0, 0, 0, 3652, 3650, 1, 0, 0, 0, 3652, 3653, 1, 0, 0, 0, 3653, 3656, 1, 0, 0, 0, 3654, 3652, 1, 0, 0, 0, 3655, 3646, 1, 0, 0, 0, 3655, 3656, 1, 0, 0, 0, 3656, 3672, 1, 0, 0, 0, 3657, 3658, 5, 30, 0, 0, 3658, 3660, 3, 708, 354, 0, 3659, 3661, 3, 410, 205, 0, 3660, 3659, 1, 0, 0, 0, 3660, 3661, 1, 0, 0, 0, 3661, 3672, 1, 0, 0, 0, 3662, 3663, 5, 31, 0, 0, 3663, 3665, 3, 708, 354, 0, 3664, 3666, 3, 410, 205, 0, 3665, 3664, 1, 0, 0, 0, 3665, 3666, 1, 0, 0, 0, 3666, 3672, 1, 0, 0, 0, 3667, 3668, 5, 27, 0, 0, 3668, 3672, 3, 414, 207, 0, 3669, 3670, 5, 194, 0, 0, 3670, 3672, 5, 518, 0, 0, 3671, 3625, 1, 0, 0, 0, 3671, 3626, 1, 0, 0, 0, 3671, 3657, 1, 0, 0, 0, 3671, 3662, 1, 0, 0, 0, 3671, 3667, 1, 0, 0, 0, 3671, 3669, 1, 0, 0, 0, 3672, 407, 1, 0, 0, 0, 3673, 3675, 5, 237, 0, 0, 3674, 3676, 5, 239, 0, 0, 3675, 3674, 1, 0, 0, 0, 3675, 3676, 1, 0, 0, 0, 3676, 3712, 1, 0, 0, 0, 3677, 3679, 5, 238, 0, 0, 3678, 3680, 5, 239, 0, 0, 3679, 3678, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 3712, 1, 0, 0, 0, 3681, 3712, 5, 239, 0, 0, 3682, 3712, 5, 242, 0, 0, 3683, 3685, 5, 100, 0, 0, 3684, 3686, 5, 239, 0, 0, 3685, 3684, 1, 0, 0, 0, 3685, 3686, 1, 0, 0, 0, 3686, 3712, 1, 0, 0, 0, 3687, 3688, 5, 243, 0, 0, 3688, 3691, 3, 708, 354, 0, 3689, 3690, 5, 81, 0, 0, 3690, 3692, 3, 408, 204, 0, 3691, 3689, 1, 0, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3712, 1, 0, 0, 0, 3693, 3694, 5, 240, 0, 0, 3694, 3696, 3, 708, 354, 0, 3695, 3697, 3, 410, 205, 0, 3696, 3695, 1, 0, 0, 0, 3696, 3697, 1, 0, 0, 0, 3697, 3712, 1, 0, 0, 0, 3698, 3699, 5, 30, 0, 0, 3699, 3701, 3, 708, 354, 0, 3700, 3702, 3, 410, 205, 0, 3701, 3700, 1, 0, 0, 0, 3701, 3702, 1, 0, 0, 0, 3702, 3712, 1, 0, 0, 0, 3703, 3704, 5, 31, 0, 0, 3704, 3706, 3, 708, 354, 0, 3705, 3707, 3, 410, 205, 0, 3706, 3705, 1, 0, 0, 0, 3706, 3707, 1, 0, 0, 0, 3707, 3712, 1, 0, 0, 0, 3708, 3709, 5, 246, 0, 0, 3709, 3712, 5, 514, 0, 0, 3710, 3712, 5, 247, 0, 0, 3711, 3673, 1, 0, 0, 0, 3711, 3677, 1, 0, 0, 0, 3711, 3681, 1, 0, 0, 0, 3711, 3682, 1, 0, 0, 0, 3711, 3683, 1, 0, 0, 0, 3711, 3687, 1, 0, 0, 0, 3711, 3693, 1, 0, 0, 0, 3711, 3698, 1, 0, 0, 0, 3711, 3703, 1, 0, 0, 0, 3711, 3708, 1, 0, 0, 0, 3711, 3710, 1, 0, 0, 0, 3712, 409, 1, 0, 0, 0, 3713, 3714, 5, 500, 0, 0, 3714, 3719, 3, 412, 206, 0, 3715, 3716, 5, 498, 0, 0, 3716, 3718, 3, 412, 206, 0, 3717, 3715, 1, 0, 0, 0, 3718, 3721, 1, 0, 0, 0, 3719, 3717, 1, 0, 0, 0, 3719, 3720, 1, 0, 0, 0, 3720, 3722, 1, 0, 0, 0, 3721, 3719, 1, 0, 0, 0, 3722, 3723, 5, 501, 0, 0, 3723, 411, 1, 0, 0, 0, 3724, 3725, 5, 518, 0, 0, 3725, 3726, 5, 506, 0, 0, 3726, 3731, 3, 668, 334, 0, 3727, 3728, 5, 517, 0, 0, 3728, 3729, 5, 487, 0, 0, 3729, 3731, 3, 668, 334, 0, 3730, 3724, 1, 0, 0, 0, 3730, 3727, 1, 0, 0, 0, 3731, 413, 1, 0, 0, 0, 3732, 3736, 5, 518, 0, 0, 3733, 3736, 5, 520, 0, 0, 3734, 3736, 3, 732, 366, 0, 3735, 3732, 1, 0, 0, 0, 3735, 3733, 1, 0, 0, 0, 3735, 3734, 1, 0, 0, 0, 3736, 3745, 1, 0, 0, 0, 3737, 3741, 5, 493, 0, 0, 3738, 3742, 5, 518, 0, 0, 3739, 3742, 5, 520, 0, 0, 3740, 3742, 3, 732, 366, 0, 3741, 3738, 1, 0, 0, 0, 3741, 3739, 1, 0, 0, 0, 3741, 3740, 1, 0, 0, 0, 3742, 3744, 1, 0, 0, 0, 3743, 3737, 1, 0, 0, 0, 3744, 3747, 1, 0, 0, 0, 3745, 3743, 1, 0, 0, 0, 3745, 3746, 1, 0, 0, 0, 3746, 415, 1, 0, 0, 0, 3747, 3745, 1, 0, 0, 0, 3748, 3759, 5, 514, 0, 0, 3749, 3759, 3, 414, 207, 0, 3750, 3756, 5, 517, 0, 0, 3751, 3754, 5, 499, 0, 0, 3752, 3755, 5, 518, 0, 0, 3753, 3755, 3, 732, 366, 0, 3754, 3752, 1, 0, 0, 0, 3754, 3753, 1, 0, 0, 0, 3755, 3757, 1, 0, 0, 0, 3756, 3751, 1, 0, 0, 0, 3756, 3757, 1, 0, 0, 0, 3757, 3759, 1, 0, 0, 0, 3758, 3748, 1, 0, 0, 0, 3758, 3749, 1, 0, 0, 0, 3758, 3750, 1, 0, 0, 0, 3759, 417, 1, 0, 0, 0, 3760, 3761, 5, 504, 0, 0, 3761, 3766, 3, 420, 210, 0, 3762, 3763, 5, 498, 0, 0, 3763, 3765, 3, 420, 210, 0, 3764, 3762, 1, 0, 0, 0, 3765, 3768, 1, 0, 0, 0, 3766, 3764, 1, 0, 0, 0, 3766, 3767, 1, 0, 0, 0, 3767, 3769, 1, 0, 0, 0, 3768, 3766, 1, 0, 0, 0, 3769, 3770, 5, 505, 0, 0, 3770, 419, 1, 0, 0, 0, 3771, 3772, 5, 502, 0, 0, 3772, 3773, 5, 516, 0, 0, 3773, 3774, 5, 503, 0, 0, 3774, 3775, 5, 487, 0, 0, 3775, 3776, 3, 668, 334, 0, 3776, 421, 1, 0, 0, 0, 3777, 3778, 7, 22, 0, 0, 3778, 423, 1, 0, 0, 0, 3779, 3780, 7, 23, 0, 0, 3780, 425, 1, 0, 0, 0, 3781, 3782, 7, 24, 0, 0, 3782, 427, 1, 0, 0, 0, 3783, 3784, 7, 25, 0, 0, 3784, 429, 1, 0, 0, 0, 3785, 3809, 5, 514, 0, 0, 3786, 3809, 5, 516, 0, 0, 3787, 3809, 3, 716, 358, 0, 3788, 3809, 3, 708, 354, 0, 3789, 3809, 5, 518, 0, 0, 3790, 3809, 5, 258, 0, 0, 3791, 3809, 5, 259, 0, 0, 3792, 3809, 5, 260, 0, 0, 3793, 3809, 5, 261, 0, 0, 3794, 3809, 5, 262, 0, 0, 3795, 3809, 5, 263, 0, 0, 3796, 3805, 5, 504, 0, 0, 3797, 3802, 3, 668, 334, 0, 3798, 3799, 5, 498, 0, 0, 3799, 3801, 3, 668, 334, 0, 3800, 3798, 1, 0, 0, 0, 3801, 3804, 1, 0, 0, 0, 3802, 3800, 1, 0, 0, 0, 3802, 3803, 1, 0, 0, 0, 3803, 3806, 1, 0, 0, 0, 3804, 3802, 1, 0, 0, 0, 3805, 3797, 1, 0, 0, 0, 3805, 3806, 1, 0, 0, 0, 3806, 3807, 1, 0, 0, 0, 3807, 3809, 5, 505, 0, 0, 3808, 3785, 1, 0, 0, 0, 3808, 3786, 1, 0, 0, 0, 3808, 3787, 1, 0, 0, 0, 3808, 3788, 1, 0, 0, 0, 3808, 3789, 1, 0, 0, 0, 3808, 3790, 1, 0, 0, 0, 3808, 3791, 1, 0, 0, 0, 3808, 3792, 1, 0, 0, 0, 3808, 3793, 1, 0, 0, 0, 3808, 3794, 1, 0, 0, 0, 3808, 3795, 1, 0, 0, 0, 3808, 3796, 1, 0, 0, 0, 3809, 431, 1, 0, 0, 0, 3810, 3811, 5, 504, 0, 0, 3811, 3816, 3, 434, 217, 0, 3812, 3813, 5, 498, 0, 0, 3813, 3815, 3, 434, 217, 0, 3814, 3812, 1, 0, 0, 0, 3815, 3818, 1, 0, 0, 0, 3816, 3814, 1, 0, 0, 0, 3816, 3817, 1, 0, 0, 0, 3817, 3819, 1, 0, 0, 0, 3818, 3816, 1, 0, 0, 0, 3819, 3820, 5, 505, 0, 0, 3820, 3824, 1, 0, 0, 0, 3821, 3822, 5, 504, 0, 0, 3822, 3824, 5, 505, 0, 0, 3823, 3810, 1, 0, 0, 0, 3823, 3821, 1, 0, 0, 0, 3824, 433, 1, 0, 0, 0, 3825, 3826, 5, 514, 0, 0, 3826, 3827, 5, 506, 0, 0, 3827, 3835, 5, 514, 0, 0, 3828, 3829, 5, 514, 0, 0, 3829, 3830, 5, 506, 0, 0, 3830, 3835, 5, 93, 0, 0, 3831, 3832, 5, 514, 0, 0, 3832, 3833, 5, 506, 0, 0, 3833, 3835, 5, 482, 0, 0, 3834, 3825, 1, 0, 0, 0, 3834, 3828, 1, 0, 0, 0, 3834, 3831, 1, 0, 0, 0, 3835, 435, 1, 0, 0, 0, 3836, 3837, 5, 502, 0, 0, 3837, 3838, 3, 390, 195, 0, 3838, 3839, 5, 503, 0, 0, 3839, 437, 1, 0, 0, 0, 3840, 3841, 5, 36, 0, 0, 3841, 3843, 3, 708, 354, 0, 3842, 3844, 3, 440, 220, 0, 3843, 3842, 1, 0, 0, 0, 3843, 3844, 1, 0, 0, 0, 3844, 3845, 1, 0, 0, 0, 3845, 3849, 5, 96, 0, 0, 3846, 3848, 3, 444, 222, 0, 3847, 3846, 1, 0, 0, 0, 3848, 3851, 1, 0, 0, 0, 3849, 3847, 1, 0, 0, 0, 3849, 3850, 1, 0, 0, 0, 3850, 3852, 1, 0, 0, 0, 3851, 3849, 1, 0, 0, 0, 3852, 3853, 5, 83, 0, 0, 3853, 439, 1, 0, 0, 0, 3854, 3856, 3, 442, 221, 0, 3855, 3854, 1, 0, 0, 0, 3856, 3857, 1, 0, 0, 0, 3857, 3855, 1, 0, 0, 0, 3857, 3858, 1, 0, 0, 0, 3858, 441, 1, 0, 0, 0, 3859, 3860, 5, 408, 0, 0, 3860, 3861, 5, 514, 0, 0, 3861, 443, 1, 0, 0, 0, 3862, 3863, 5, 33, 0, 0, 3863, 3866, 3, 708, 354, 0, 3864, 3865, 5, 189, 0, 0, 3865, 3867, 5, 514, 0, 0, 3866, 3864, 1, 0, 0, 0, 3866, 3867, 1, 0, 0, 0, 3867, 445, 1, 0, 0, 0, 3868, 3869, 5, 356, 0, 0, 3869, 3870, 5, 355, 0, 0, 3870, 3872, 3, 708, 354, 0, 3871, 3873, 3, 448, 224, 0, 3872, 3871, 1, 0, 0, 0, 3873, 3874, 1, 0, 0, 0, 3874, 3872, 1, 0, 0, 0, 3874, 3875, 1, 0, 0, 0, 3875, 3884, 1, 0, 0, 0, 3876, 3880, 5, 96, 0, 0, 3877, 3879, 3, 450, 225, 0, 3878, 3877, 1, 0, 0, 0, 3879, 3882, 1, 0, 0, 0, 3880, 3878, 1, 0, 0, 0, 3880, 3881, 1, 0, 0, 0, 3881, 3883, 1, 0, 0, 0, 3882, 3880, 1, 0, 0, 0, 3883, 3885, 5, 83, 0, 0, 3884, 3876, 1, 0, 0, 0, 3884, 3885, 1, 0, 0, 0, 3885, 447, 1, 0, 0, 0, 3886, 3887, 5, 419, 0, 0, 3887, 3914, 5, 514, 0, 0, 3888, 3889, 5, 355, 0, 0, 3889, 3893, 5, 265, 0, 0, 3890, 3894, 5, 514, 0, 0, 3891, 3892, 5, 507, 0, 0, 3892, 3894, 3, 708, 354, 0, 3893, 3890, 1, 0, 0, 0, 3893, 3891, 1, 0, 0, 0, 3894, 3914, 1, 0, 0, 0, 3895, 3896, 5, 63, 0, 0, 3896, 3914, 5, 514, 0, 0, 3897, 3898, 5, 64, 0, 0, 3898, 3914, 5, 516, 0, 0, 3899, 3900, 5, 356, 0, 0, 3900, 3914, 5, 514, 0, 0, 3901, 3905, 5, 353, 0, 0, 3902, 3906, 5, 514, 0, 0, 3903, 3904, 5, 507, 0, 0, 3904, 3906, 3, 708, 354, 0, 3905, 3902, 1, 0, 0, 0, 3905, 3903, 1, 0, 0, 0, 3906, 3914, 1, 0, 0, 0, 3907, 3911, 5, 354, 0, 0, 3908, 3912, 5, 514, 0, 0, 3909, 3910, 5, 507, 0, 0, 3910, 3912, 3, 708, 354, 0, 3911, 3908, 1, 0, 0, 0, 3911, 3909, 1, 0, 0, 0, 3912, 3914, 1, 0, 0, 0, 3913, 3886, 1, 0, 0, 0, 3913, 3888, 1, 0, 0, 0, 3913, 3895, 1, 0, 0, 0, 3913, 3897, 1, 0, 0, 0, 3913, 3899, 1, 0, 0, 0, 3913, 3901, 1, 0, 0, 0, 3913, 3907, 1, 0, 0, 0, 3914, 449, 1, 0, 0, 0, 3915, 3916, 5, 357, 0, 0, 3916, 3917, 3, 710, 355, 0, 3917, 3918, 5, 434, 0, 0, 3918, 3930, 7, 26, 0, 0, 3919, 3920, 5, 371, 0, 0, 3920, 3921, 3, 710, 355, 0, 3921, 3922, 5, 506, 0, 0, 3922, 3926, 3, 108, 54, 0, 3923, 3924, 5, 298, 0, 0, 3924, 3927, 5, 514, 0, 0, 3925, 3927, 5, 291, 0, 0, 3926, 3923, 1, 0, 0, 0, 3926, 3925, 1, 0, 0, 0, 3926, 3927, 1, 0, 0, 0, 3927, 3929, 1, 0, 0, 0, 3928, 3919, 1, 0, 0, 0, 3929, 3932, 1, 0, 0, 0, 3930, 3928, 1, 0, 0, 0, 3930, 3931, 1, 0, 0, 0, 3931, 3949, 1, 0, 0, 0, 3932, 3930, 1, 0, 0, 0, 3933, 3934, 5, 77, 0, 0, 3934, 3947, 3, 708, 354, 0, 3935, 3936, 5, 358, 0, 0, 3936, 3937, 5, 500, 0, 0, 3937, 3942, 3, 452, 226, 0, 3938, 3939, 5, 498, 0, 0, 3939, 3941, 3, 452, 226, 0, 3940, 3938, 1, 0, 0, 0, 3941, 3944, 1, 0, 0, 0, 3942, 3940, 1, 0, 0, 0, 3942, 3943, 1, 0, 0, 0, 3943, 3945, 1, 0, 0, 0, 3944, 3942, 1, 0, 0, 0, 3945, 3946, 5, 501, 0, 0, 3946, 3948, 1, 0, 0, 0, 3947, 3935, 1, 0, 0, 0, 3947, 3948, 1, 0, 0, 0, 3948, 3950, 1, 0, 0, 0, 3949, 3933, 1, 0, 0, 0, 3949, 3950, 1, 0, 0, 0, 3950, 3951, 1, 0, 0, 0, 3951, 3952, 5, 497, 0, 0, 3952, 451, 1, 0, 0, 0, 3953, 3954, 3, 710, 355, 0, 3954, 3955, 5, 76, 0, 0, 3955, 3956, 3, 710, 355, 0, 3956, 453, 1, 0, 0, 0, 3957, 3958, 5, 37, 0, 0, 3958, 3959, 3, 708, 354, 0, 3959, 3960, 5, 419, 0, 0, 3960, 3961, 3, 108, 54, 0, 3961, 3962, 5, 298, 0, 0, 3962, 3964, 3, 712, 356, 0, 3963, 3965, 3, 456, 228, 0, 3964, 3963, 1, 0, 0, 0, 3964, 3965, 1, 0, 0, 0, 3965, 455, 1, 0, 0, 0, 3966, 3968, 3, 458, 229, 0, 3967, 3966, 1, 0, 0, 0, 3968, 3969, 1, 0, 0, 0, 3969, 3967, 1, 0, 0, 0, 3969, 3970, 1, 0, 0, 0, 3970, 457, 1, 0, 0, 0, 3971, 3972, 5, 408, 0, 0, 3972, 3979, 5, 514, 0, 0, 3973, 3974, 5, 220, 0, 0, 3974, 3979, 5, 514, 0, 0, 3975, 3976, 5, 370, 0, 0, 3976, 3977, 5, 426, 0, 0, 3977, 3979, 5, 342, 0, 0, 3978, 3971, 1, 0, 0, 0, 3978, 3973, 1, 0, 0, 0, 3978, 3975, 1, 0, 0, 0, 3979, 459, 1, 0, 0, 0, 3980, 3981, 5, 444, 0, 0, 3981, 3990, 5, 514, 0, 0, 3982, 3987, 3, 556, 278, 0, 3983, 3984, 5, 498, 0, 0, 3984, 3986, 3, 556, 278, 0, 3985, 3983, 1, 0, 0, 0, 3986, 3989, 1, 0, 0, 0, 3987, 3985, 1, 0, 0, 0, 3987, 3988, 1, 0, 0, 0, 3988, 3991, 1, 0, 0, 0, 3989, 3987, 1, 0, 0, 0, 3990, 3982, 1, 0, 0, 0, 3990, 3991, 1, 0, 0, 0, 3991, 461, 1, 0, 0, 0, 3992, 3993, 5, 314, 0, 0, 3993, 3994, 5, 342, 0, 0, 3994, 3995, 3, 708, 354, 0, 3995, 3996, 3, 464, 232, 0, 3996, 3997, 3, 466, 233, 0, 3997, 4001, 5, 96, 0, 0, 3998, 4000, 3, 470, 235, 0, 3999, 3998, 1, 0, 0, 0, 4000, 4003, 1, 0, 0, 0, 4001, 3999, 1, 0, 0, 0, 4001, 4002, 1, 0, 0, 0, 4002, 4004, 1, 0, 0, 0, 4003, 4001, 1, 0, 0, 0, 4004, 4005, 5, 83, 0, 0, 4005, 463, 1, 0, 0, 0, 4006, 4007, 5, 318, 0, 0, 4007, 4008, 5, 219, 0, 0, 4008, 4009, 5, 514, 0, 0, 4009, 465, 1, 0, 0, 0, 4010, 4011, 5, 320, 0, 0, 4011, 4025, 5, 424, 0, 0, 4012, 4013, 5, 320, 0, 0, 4013, 4014, 5, 321, 0, 0, 4014, 4015, 5, 500, 0, 0, 4015, 4016, 5, 353, 0, 0, 4016, 4017, 5, 487, 0, 0, 4017, 4018, 3, 468, 234, 0, 4018, 4019, 5, 498, 0, 0, 4019, 4020, 5, 354, 0, 0, 4020, 4021, 5, 487, 0, 0, 4021, 4022, 3, 468, 234, 0, 4022, 4023, 5, 501, 0, 0, 4023, 4025, 1, 0, 0, 0, 4024, 4010, 1, 0, 0, 0, 4024, 4012, 1, 0, 0, 0, 4025, 467, 1, 0, 0, 0, 4026, 4027, 7, 27, 0, 0, 4027, 469, 1, 0, 0, 0, 4028, 4030, 3, 718, 359, 0, 4029, 4028, 1, 0, 0, 0, 4029, 4030, 1, 0, 0, 0, 4030, 4031, 1, 0, 0, 0, 4031, 4034, 5, 324, 0, 0, 4032, 4035, 3, 710, 355, 0, 4033, 4035, 5, 514, 0, 0, 4034, 4032, 1, 0, 0, 0, 4034, 4033, 1, 0, 0, 0, 4035, 4036, 1, 0, 0, 0, 4036, 4037, 5, 325, 0, 0, 4037, 4038, 3, 472, 236, 0, 4038, 4039, 5, 326, 0, 0, 4039, 4043, 5, 514, 0, 0, 4040, 4042, 3, 474, 237, 0, 4041, 4040, 1, 0, 0, 0, 4042, 4045, 1, 0, 0, 0, 4043, 4041, 1, 0, 0, 0, 4043, 4044, 1, 0, 0, 0, 4044, 4046, 1, 0, 0, 0, 4045, 4043, 1, 0, 0, 0, 4046, 4047, 5, 329, 0, 0, 4047, 4048, 3, 478, 239, 0, 4048, 4049, 5, 497, 0, 0, 4049, 471, 1, 0, 0, 0, 4050, 4051, 7, 14, 0, 0, 4051, 473, 1, 0, 0, 0, 4052, 4053, 5, 371, 0, 0, 4053, 4054, 5, 517, 0, 0, 4054, 4055, 5, 506, 0, 0, 4055, 4071, 3, 108, 54, 0, 4056, 4057, 5, 357, 0, 0, 4057, 4058, 5, 517, 0, 0, 4058, 4059, 5, 506, 0, 0, 4059, 4071, 3, 108, 54, 0, 4060, 4061, 5, 196, 0, 0, 4061, 4062, 5, 514, 0, 0, 4062, 4063, 5, 487, 0, 0, 4063, 4071, 3, 476, 238, 0, 4064, 4065, 5, 328, 0, 0, 4065, 4066, 7, 28, 0, 0, 4066, 4067, 5, 71, 0, 0, 4067, 4071, 5, 517, 0, 0, 4068, 4069, 5, 327, 0, 0, 4069, 4071, 5, 516, 0, 0, 4070, 4052, 1, 0, 0, 0, 4070, 4056, 1, 0, 0, 0, 4070, 4060, 1, 0, 0, 0, 4070, 4064, 1, 0, 0, 0, 4070, 4068, 1, 0, 0, 0, 4071, 475, 1, 0, 0, 0, 4072, 4078, 5, 514, 0, 0, 4073, 4078, 5, 517, 0, 0, 4074, 4075, 5, 514, 0, 0, 4075, 4076, 5, 490, 0, 0, 4076, 4078, 5, 517, 0, 0, 4077, 4072, 1, 0, 0, 0, 4077, 4073, 1, 0, 0, 0, 4077, 4074, 1, 0, 0, 0, 4078, 477, 1, 0, 0, 0, 4079, 4080, 5, 332, 0, 0, 4080, 4081, 5, 76, 0, 0, 4081, 4093, 5, 517, 0, 0, 4082, 4083, 5, 265, 0, 0, 4083, 4084, 5, 76, 0, 0, 4084, 4093, 5, 517, 0, 0, 4085, 4086, 5, 335, 0, 0, 4086, 4087, 5, 76, 0, 0, 4087, 4093, 5, 517, 0, 0, 4088, 4089, 5, 334, 0, 0, 4089, 4090, 5, 76, 0, 0, 4090, 4093, 5, 517, 0, 0, 4091, 4093, 5, 424, 0, 0, 4092, 4079, 1, 0, 0, 0, 4092, 4082, 1, 0, 0, 0, 4092, 4085, 1, 0, 0, 0, 4092, 4088, 1, 0, 0, 0, 4092, 4091, 1, 0, 0, 0, 4093, 479, 1, 0, 0, 0, 4094, 4095, 5, 41, 0, 0, 4095, 4096, 5, 518, 0, 0, 4096, 4097, 5, 93, 0, 0, 4097, 4098, 3, 708, 354, 0, 4098, 4099, 5, 500, 0, 0, 4099, 4100, 3, 116, 58, 0, 4100, 4101, 5, 501, 0, 0, 4101, 481, 1, 0, 0, 0, 4102, 4103, 5, 317, 0, 0, 4103, 4104, 5, 342, 0, 0, 4104, 4105, 3, 708, 354, 0, 4105, 4106, 5, 500, 0, 0, 4106, 4111, 3, 488, 244, 0, 4107, 4108, 5, 498, 0, 0, 4108, 4110, 3, 488, 244, 0, 4109, 4107, 1, 0, 0, 0, 4110, 4113, 1, 0, 0, 0, 4111, 4109, 1, 0, 0, 0, 4111, 4112, 1, 0, 0, 0, 4112, 4114, 1, 0, 0, 0, 4113, 4111, 1, 0, 0, 0, 4114, 4116, 5, 501, 0, 0, 4115, 4117, 3, 508, 254, 0, 4116, 4115, 1, 0, 0, 0, 4116, 4117, 1, 0, 0, 0, 4117, 483, 1, 0, 0, 0, 4118, 4119, 5, 317, 0, 0, 4119, 4120, 5, 315, 0, 0, 4120, 4121, 3, 708, 354, 0, 4121, 4122, 5, 500, 0, 0, 4122, 4127, 3, 488, 244, 0, 4123, 4124, 5, 498, 0, 0, 4124, 4126, 3, 488, 244, 0, 4125, 4123, 1, 0, 0, 0, 4126, 4129, 1, 0, 0, 0, 4127, 4125, 1, 0, 0, 0, 4127, 4128, 1, 0, 0, 0, 4128, 4130, 1, 0, 0, 0, 4129, 4127, 1, 0, 0, 0, 4130, 4132, 5, 501, 0, 0, 4131, 4133, 3, 492, 246, 0, 4132, 4131, 1, 0, 0, 0, 4132, 4133, 1, 0, 0, 0, 4133, 4142, 1, 0, 0, 0, 4134, 4138, 5, 502, 0, 0, 4135, 4137, 3, 496, 248, 0, 4136, 4135, 1, 0, 0, 0, 4137, 4140, 1, 0, 0, 0, 4138, 4136, 1, 0, 0, 0, 4138, 4139, 1, 0, 0, 0, 4139, 4141, 1, 0, 0, 0, 4140, 4138, 1, 0, 0, 0, 4141, 4143, 5, 503, 0, 0, 4142, 4134, 1, 0, 0, 0, 4142, 4143, 1, 0, 0, 0, 4143, 485, 1, 0, 0, 0, 4144, 4154, 5, 514, 0, 0, 4145, 4154, 5, 516, 0, 0, 4146, 4154, 5, 299, 0, 0, 4147, 4154, 5, 300, 0, 0, 4148, 4150, 5, 30, 0, 0, 4149, 4151, 3, 708, 354, 0, 4150, 4149, 1, 0, 0, 0, 4150, 4151, 1, 0, 0, 0, 4151, 4154, 1, 0, 0, 0, 4152, 4154, 3, 708, 354, 0, 4153, 4144, 1, 0, 0, 0, 4153, 4145, 1, 0, 0, 0, 4153, 4146, 1, 0, 0, 0, 4153, 4147, 1, 0, 0, 0, 4153, 4148, 1, 0, 0, 0, 4153, 4152, 1, 0, 0, 0, 4154, 487, 1, 0, 0, 0, 4155, 4156, 3, 710, 355, 0, 4156, 4157, 5, 506, 0, 0, 4157, 4158, 3, 486, 243, 0, 4158, 489, 1, 0, 0, 0, 4159, 4160, 3, 710, 355, 0, 4160, 4161, 5, 487, 0, 0, 4161, 4162, 3, 486, 243, 0, 4162, 491, 1, 0, 0, 0, 4163, 4164, 5, 320, 0, 0, 4164, 4169, 3, 494, 247, 0, 4165, 4166, 5, 498, 0, 0, 4166, 4168, 3, 494, 247, 0, 4167, 4165, 1, 0, 0, 0, 4168, 4171, 1, 0, 0, 0, 4169, 4167, 1, 0, 0, 0, 4169, 4170, 1, 0, 0, 0, 4170, 493, 1, 0, 0, 0, 4171, 4169, 1, 0, 0, 0, 4172, 4181, 5, 321, 0, 0, 4173, 4181, 5, 349, 0, 0, 4174, 4181, 5, 350, 0, 0, 4175, 4177, 5, 30, 0, 0, 4176, 4178, 3, 708, 354, 0, 4177, 4176, 1, 0, 0, 0, 4177, 4178, 1, 0, 0, 0, 4178, 4181, 1, 0, 0, 0, 4179, 4181, 5, 518, 0, 0, 4180, 4172, 1, 0, 0, 0, 4180, 4173, 1, 0, 0, 0, 4180, 4174, 1, 0, 0, 0, 4180, 4175, 1, 0, 0, 0, 4180, 4179, 1, 0, 0, 0, 4181, 495, 1, 0, 0, 0, 4182, 4183, 5, 344, 0, 0, 4183, 4184, 5, 23, 0, 0, 4184, 4187, 3, 708, 354, 0, 4185, 4186, 5, 76, 0, 0, 4186, 4188, 5, 514, 0, 0, 4187, 4185, 1, 0, 0, 0, 4187, 4188, 1, 0, 0, 0, 4188, 4200, 1, 0, 0, 0, 4189, 4190, 5, 500, 0, 0, 4190, 4195, 3, 488, 244, 0, 4191, 4192, 5, 498, 0, 0, 4192, 4194, 3, 488, 244, 0, 4193, 4191, 1, 0, 0, 0, 4194, 4197, 1, 0, 0, 0, 4195, 4193, 1, 0, 0, 0, 4195, 4196, 1, 0, 0, 0, 4196, 4198, 1, 0, 0, 0, 4197, 4195, 1, 0, 0, 0, 4198, 4199, 5, 501, 0, 0, 4199, 4201, 1, 0, 0, 0, 4200, 4189, 1, 0, 0, 0, 4200, 4201, 1, 0, 0, 0, 4201, 4203, 1, 0, 0, 0, 4202, 4204, 3, 498, 249, 0, 4203, 4202, 1, 0, 0, 0, 4203, 4204, 1, 0, 0, 0, 4204, 4206, 1, 0, 0, 0, 4205, 4207, 5, 497, 0, 0, 4206, 4205, 1, 0, 0, 0, 4206, 4207, 1, 0, 0, 0, 4207, 497, 1, 0, 0, 0, 4208, 4209, 5, 346, 0, 0, 4209, 4219, 5, 500, 0, 0, 4210, 4220, 5, 492, 0, 0, 4211, 4216, 3, 500, 250, 0, 4212, 4213, 5, 498, 0, 0, 4213, 4215, 3, 500, 250, 0, 4214, 4212, 1, 0, 0, 0, 4215, 4218, 1, 0, 0, 0, 4216, 4214, 1, 0, 0, 0, 4216, 4217, 1, 0, 0, 0, 4217, 4220, 1, 0, 0, 0, 4218, 4216, 1, 0, 0, 0, 4219, 4210, 1, 0, 0, 0, 4219, 4211, 1, 0, 0, 0, 4220, 4221, 1, 0, 0, 0, 4221, 4222, 5, 501, 0, 0, 4222, 499, 1, 0, 0, 0, 4223, 4226, 5, 518, 0, 0, 4224, 4225, 5, 76, 0, 0, 4225, 4227, 5, 514, 0, 0, 4226, 4224, 1, 0, 0, 0, 4226, 4227, 1, 0, 0, 0, 4227, 4229, 1, 0, 0, 0, 4228, 4230, 3, 502, 251, 0, 4229, 4228, 1, 0, 0, 0, 4229, 4230, 1, 0, 0, 0, 4230, 501, 1, 0, 0, 0, 4231, 4232, 5, 500, 0, 0, 4232, 4237, 5, 518, 0, 0, 4233, 4234, 5, 498, 0, 0, 4234, 4236, 5, 518, 0, 0, 4235, 4233, 1, 0, 0, 0, 4236, 4239, 1, 0, 0, 0, 4237, 4235, 1, 0, 0, 0, 4237, 4238, 1, 0, 0, 0, 4238, 4240, 1, 0, 0, 0, 4239, 4237, 1, 0, 0, 0, 4240, 4241, 5, 501, 0, 0, 4241, 503, 1, 0, 0, 0, 4242, 4243, 5, 26, 0, 0, 4243, 4244, 5, 23, 0, 0, 4244, 4245, 3, 708, 354, 0, 4245, 4246, 5, 71, 0, 0, 4246, 4247, 5, 317, 0, 0, 4247, 4248, 5, 342, 0, 0, 4248, 4249, 3, 708, 354, 0, 4249, 4250, 5, 500, 0, 0, 4250, 4255, 3, 488, 244, 0, 4251, 4252, 5, 498, 0, 0, 4252, 4254, 3, 488, 244, 0, 4253, 4251, 1, 0, 0, 0, 4254, 4257, 1, 0, 0, 0, 4255, 4253, 1, 0, 0, 0, 4255, 4256, 1, 0, 0, 0, 4256, 4258, 1, 0, 0, 0, 4257, 4255, 1, 0, 0, 0, 4258, 4264, 5, 501, 0, 0, 4259, 4261, 5, 500, 0, 0, 4260, 4262, 3, 100, 50, 0, 4261, 4260, 1, 0, 0, 0, 4261, 4262, 1, 0, 0, 0, 4262, 4263, 1, 0, 0, 0, 4263, 4265, 5, 501, 0, 0, 4264, 4259, 1, 0, 0, 0, 4264, 4265, 1, 0, 0, 0, 4265, 505, 1, 0, 0, 0, 4266, 4269, 5, 374, 0, 0, 4267, 4270, 3, 708, 354, 0, 4268, 4270, 5, 518, 0, 0, 4269, 4267, 1, 0, 0, 0, 4269, 4268, 1, 0, 0, 0, 4270, 4274, 1, 0, 0, 0, 4271, 4273, 3, 34, 17, 0, 4272, 4271, 1, 0, 0, 0, 4273, 4276, 1, 0, 0, 0, 4274, 4272, 1, 0, 0, 0, 4274, 4275, 1, 0, 0, 0, 4275, 507, 1, 0, 0, 0, 4276, 4274, 1, 0, 0, 0, 4277, 4278, 5, 373, 0, 0, 4278, 4279, 5, 500, 0, 0, 4279, 4284, 3, 510, 255, 0, 4280, 4281, 5, 498, 0, 0, 4281, 4283, 3, 510, 255, 0, 4282, 4280, 1, 0, 0, 0, 4283, 4286, 1, 0, 0, 0, 4284, 4282, 1, 0, 0, 0, 4284, 4285, 1, 0, 0, 0, 4285, 4287, 1, 0, 0, 0, 4286, 4284, 1, 0, 0, 0, 4287, 4288, 5, 501, 0, 0, 4288, 509, 1, 0, 0, 0, 4289, 4290, 5, 514, 0, 0, 4290, 4291, 5, 506, 0, 0, 4291, 4292, 3, 486, 243, 0, 4292, 511, 1, 0, 0, 0, 4293, 4294, 5, 440, 0, 0, 4294, 4295, 5, 441, 0, 0, 4295, 4296, 5, 315, 0, 0, 4296, 4297, 3, 708, 354, 0, 4297, 4298, 5, 500, 0, 0, 4298, 4303, 3, 488, 244, 0, 4299, 4300, 5, 498, 0, 0, 4300, 4302, 3, 488, 244, 0, 4301, 4299, 1, 0, 0, 0, 4302, 4305, 1, 0, 0, 0, 4303, 4301, 1, 0, 0, 0, 4303, 4304, 1, 0, 0, 0, 4304, 4306, 1, 0, 0, 0, 4305, 4303, 1, 0, 0, 0, 4306, 4307, 5, 501, 0, 0, 4307, 4309, 5, 502, 0, 0, 4308, 4310, 3, 514, 257, 0, 4309, 4308, 1, 0, 0, 0, 4310, 4311, 1, 0, 0, 0, 4311, 4309, 1, 0, 0, 0, 4311, 4312, 1, 0, 0, 0, 4312, 4313, 1, 0, 0, 0, 4313, 4314, 5, 503, 0, 0, 4314, 513, 1, 0, 0, 0, 4315, 4316, 5, 405, 0, 0, 4316, 4317, 5, 518, 0, 0, 4317, 4318, 5, 500, 0, 0, 4318, 4323, 3, 516, 258, 0, 4319, 4320, 5, 498, 0, 0, 4320, 4322, 3, 516, 258, 0, 4321, 4319, 1, 0, 0, 0, 4322, 4325, 1, 0, 0, 0, 4323, 4321, 1, 0, 0, 0, 4323, 4324, 1, 0, 0, 0, 4324, 4326, 1, 0, 0, 0, 4325, 4323, 1, 0, 0, 0, 4326, 4327, 5, 501, 0, 0, 4327, 4330, 7, 29, 0, 0, 4328, 4329, 5, 23, 0, 0, 4329, 4331, 3, 708, 354, 0, 4330, 4328, 1, 0, 0, 0, 4330, 4331, 1, 0, 0, 0, 4331, 4334, 1, 0, 0, 0, 4332, 4333, 5, 30, 0, 0, 4333, 4335, 3, 708, 354, 0, 4334, 4332, 1, 0, 0, 0, 4334, 4335, 1, 0, 0, 0, 4335, 4336, 1, 0, 0, 0, 4336, 4337, 5, 497, 0, 0, 4337, 515, 1, 0, 0, 0, 4338, 4339, 5, 518, 0, 0, 4339, 4340, 5, 506, 0, 0, 4340, 4341, 3, 108, 54, 0, 4341, 517, 1, 0, 0, 0, 4342, 4343, 5, 32, 0, 0, 4343, 4348, 3, 708, 354, 0, 4344, 4345, 5, 371, 0, 0, 4345, 4346, 5, 517, 0, 0, 4346, 4347, 5, 506, 0, 0, 4347, 4349, 3, 708, 354, 0, 4348, 4344, 1, 0, 0, 0, 4348, 4349, 1, 0, 0, 0, 4349, 4352, 1, 0, 0, 0, 4350, 4351, 5, 481, 0, 0, 4351, 4353, 5, 514, 0, 0, 4352, 4350, 1, 0, 0, 0, 4352, 4353, 1, 0, 0, 0, 4353, 4356, 1, 0, 0, 0, 4354, 4355, 5, 480, 0, 0, 4355, 4357, 5, 514, 0, 0, 4356, 4354, 1, 0, 0, 0, 4356, 4357, 1, 0, 0, 0, 4357, 4361, 1, 0, 0, 0, 4358, 4359, 5, 364, 0, 0, 4359, 4360, 5, 457, 0, 0, 4360, 4362, 7, 30, 0, 0, 4361, 4358, 1, 0, 0, 0, 4361, 4362, 1, 0, 0, 0, 4362, 4366, 1, 0, 0, 0, 4363, 4364, 5, 468, 0, 0, 4364, 4365, 5, 33, 0, 0, 4365, 4367, 3, 708, 354, 0, 4366, 4363, 1, 0, 0, 0, 4366, 4367, 1, 0, 0, 0, 4367, 4371, 1, 0, 0, 0, 4368, 4369, 5, 467, 0, 0, 4369, 4370, 5, 271, 0, 0, 4370, 4372, 5, 514, 0, 0, 4371, 4368, 1, 0, 0, 0, 4371, 4372, 1, 0, 0, 0, 4372, 4373, 1, 0, 0, 0, 4373, 4374, 5, 96, 0, 0, 4374, 4375, 3, 520, 260, 0, 4375, 4376, 5, 83, 0, 0, 4376, 4378, 5, 32, 0, 0, 4377, 4379, 5, 497, 0, 0, 4378, 4377, 1, 0, 0, 0, 4378, 4379, 1, 0, 0, 0, 4379, 4381, 1, 0, 0, 0, 4380, 4382, 5, 493, 0, 0, 4381, 4380, 1, 0, 0, 0, 4381, 4382, 1, 0, 0, 0, 4382, 519, 1, 0, 0, 0, 4383, 4385, 3, 522, 261, 0, 4384, 4383, 1, 0, 0, 0, 4385, 4388, 1, 0, 0, 0, 4386, 4384, 1, 0, 0, 0, 4386, 4387, 1, 0, 0, 0, 4387, 521, 1, 0, 0, 0, 4388, 4386, 1, 0, 0, 0, 4389, 4390, 3, 524, 262, 0, 4390, 4391, 5, 497, 0, 0, 4391, 4417, 1, 0, 0, 0, 4392, 4393, 3, 530, 265, 0, 4393, 4394, 5, 497, 0, 0, 4394, 4417, 1, 0, 0, 0, 4395, 4396, 3, 534, 267, 0, 4396, 4397, 5, 497, 0, 0, 4397, 4417, 1, 0, 0, 0, 4398, 4399, 3, 536, 268, 0, 4399, 4400, 5, 497, 0, 0, 4400, 4417, 1, 0, 0, 0, 4401, 4402, 3, 540, 270, 0, 4402, 4403, 5, 497, 0, 0, 4403, 4417, 1, 0, 0, 0, 4404, 4405, 3, 544, 272, 0, 4405, 4406, 5, 497, 0, 0, 4406, 4417, 1, 0, 0, 0, 4407, 4408, 3, 546, 273, 0, 4408, 4409, 5, 497, 0, 0, 4409, 4417, 1, 0, 0, 0, 4410, 4411, 3, 548, 274, 0, 4411, 4412, 5, 497, 0, 0, 4412, 4417, 1, 0, 0, 0, 4413, 4414, 3, 550, 275, 0, 4414, 4415, 5, 497, 0, 0, 4415, 4417, 1, 0, 0, 0, 4416, 4389, 1, 0, 0, 0, 4416, 4392, 1, 0, 0, 0, 4416, 4395, 1, 0, 0, 0, 4416, 4398, 1, 0, 0, 0, 4416, 4401, 1, 0, 0, 0, 4416, 4404, 1, 0, 0, 0, 4416, 4407, 1, 0, 0, 0, 4416, 4410, 1, 0, 0, 0, 4416, 4413, 1, 0, 0, 0, 4417, 523, 1, 0, 0, 0, 4418, 4419, 5, 458, 0, 0, 4419, 4420, 5, 459, 0, 0, 4420, 4421, 5, 518, 0, 0, 4421, 4424, 5, 514, 0, 0, 4422, 4423, 5, 33, 0, 0, 4423, 4425, 3, 708, 354, 0, 4424, 4422, 1, 0, 0, 0, 4424, 4425, 1, 0, 0, 0, 4425, 4429, 1, 0, 0, 0, 4426, 4427, 5, 463, 0, 0, 4427, 4428, 5, 30, 0, 0, 4428, 4430, 3, 708, 354, 0, 4429, 4426, 1, 0, 0, 0, 4429, 4430, 1, 0, 0, 0, 4430, 4434, 1, 0, 0, 0, 4431, 4432, 5, 463, 0, 0, 4432, 4433, 5, 311, 0, 0, 4433, 4435, 5, 514, 0, 0, 4434, 4431, 1, 0, 0, 0, 4434, 4435, 1, 0, 0, 0, 4435, 4438, 1, 0, 0, 0, 4436, 4437, 5, 23, 0, 0, 4437, 4439, 3, 708, 354, 0, 4438, 4436, 1, 0, 0, 0, 4438, 4439, 1, 0, 0, 0, 4439, 4443, 1, 0, 0, 0, 4440, 4441, 5, 467, 0, 0, 4441, 4442, 5, 271, 0, 0, 4442, 4444, 5, 514, 0, 0, 4443, 4440, 1, 0, 0, 0, 4443, 4444, 1, 0, 0, 0, 4444, 4447, 1, 0, 0, 0, 4445, 4446, 5, 480, 0, 0, 4446, 4448, 5, 514, 0, 0, 4447, 4445, 1, 0, 0, 0, 4447, 4448, 1, 0, 0, 0, 4448, 4455, 1, 0, 0, 0, 4449, 4451, 5, 462, 0, 0, 4450, 4452, 3, 528, 264, 0, 4451, 4450, 1, 0, 0, 0, 4452, 4453, 1, 0, 0, 0, 4453, 4451, 1, 0, 0, 0, 4453, 4454, 1, 0, 0, 0, 4454, 4456, 1, 0, 0, 0, 4455, 4449, 1, 0, 0, 0, 4455, 4456, 1, 0, 0, 0, 4456, 4464, 1, 0, 0, 0, 4457, 4458, 5, 473, 0, 0, 4458, 4460, 5, 441, 0, 0, 4459, 4461, 3, 526, 263, 0, 4460, 4459, 1, 0, 0, 0, 4461, 4462, 1, 0, 0, 0, 4462, 4460, 1, 0, 0, 0, 4462, 4463, 1, 0, 0, 0, 4463, 4465, 1, 0, 0, 0, 4464, 4457, 1, 0, 0, 0, 4464, 4465, 1, 0, 0, 0, 4465, 4516, 1, 0, 0, 0, 4466, 4467, 5, 476, 0, 0, 4467, 4468, 5, 458, 0, 0, 4468, 4469, 5, 459, 0, 0, 4469, 4470, 5, 518, 0, 0, 4470, 4473, 5, 514, 0, 0, 4471, 4472, 5, 33, 0, 0, 4472, 4474, 3, 708, 354, 0, 4473, 4471, 1, 0, 0, 0, 4473, 4474, 1, 0, 0, 0, 4474, 4478, 1, 0, 0, 0, 4475, 4476, 5, 463, 0, 0, 4476, 4477, 5, 30, 0, 0, 4477, 4479, 3, 708, 354, 0, 4478, 4475, 1, 0, 0, 0, 4478, 4479, 1, 0, 0, 0, 4479, 4483, 1, 0, 0, 0, 4480, 4481, 5, 463, 0, 0, 4481, 4482, 5, 311, 0, 0, 4482, 4484, 5, 514, 0, 0, 4483, 4480, 1, 0, 0, 0, 4483, 4484, 1, 0, 0, 0, 4484, 4487, 1, 0, 0, 0, 4485, 4486, 5, 23, 0, 0, 4486, 4488, 3, 708, 354, 0, 4487, 4485, 1, 0, 0, 0, 4487, 4488, 1, 0, 0, 0, 4488, 4492, 1, 0, 0, 0, 4489, 4490, 5, 467, 0, 0, 4490, 4491, 5, 271, 0, 0, 4491, 4493, 5, 514, 0, 0, 4492, 4489, 1, 0, 0, 0, 4492, 4493, 1, 0, 0, 0, 4493, 4496, 1, 0, 0, 0, 4494, 4495, 5, 480, 0, 0, 4495, 4497, 5, 514, 0, 0, 4496, 4494, 1, 0, 0, 0, 4496, 4497, 1, 0, 0, 0, 4497, 4504, 1, 0, 0, 0, 4498, 4500, 5, 462, 0, 0, 4499, 4501, 3, 528, 264, 0, 4500, 4499, 1, 0, 0, 0, 4501, 4502, 1, 0, 0, 0, 4502, 4500, 1, 0, 0, 0, 4502, 4503, 1, 0, 0, 0, 4503, 4505, 1, 0, 0, 0, 4504, 4498, 1, 0, 0, 0, 4504, 4505, 1, 0, 0, 0, 4505, 4513, 1, 0, 0, 0, 4506, 4507, 5, 473, 0, 0, 4507, 4509, 5, 441, 0, 0, 4508, 4510, 3, 526, 263, 0, 4509, 4508, 1, 0, 0, 0, 4510, 4511, 1, 0, 0, 0, 4511, 4509, 1, 0, 0, 0, 4511, 4512, 1, 0, 0, 0, 4512, 4514, 1, 0, 0, 0, 4513, 4506, 1, 0, 0, 0, 4513, 4514, 1, 0, 0, 0, 4514, 4516, 1, 0, 0, 0, 4515, 4418, 1, 0, 0, 0, 4515, 4466, 1, 0, 0, 0, 4516, 525, 1, 0, 0, 0, 4517, 4518, 5, 474, 0, 0, 4518, 4520, 5, 465, 0, 0, 4519, 4521, 5, 514, 0, 0, 4520, 4519, 1, 0, 0, 0, 4520, 4521, 1, 0, 0, 0, 4521, 4526, 1, 0, 0, 0, 4522, 4523, 5, 502, 0, 0, 4523, 4524, 3, 520, 260, 0, 4524, 4525, 5, 503, 0, 0, 4525, 4527, 1, 0, 0, 0, 4526, 4522, 1, 0, 0, 0, 4526, 4527, 1, 0, 0, 0, 4527, 4551, 1, 0, 0, 0, 4528, 4529, 5, 475, 0, 0, 4529, 4530, 5, 474, 0, 0, 4530, 4532, 5, 465, 0, 0, 4531, 4533, 5, 514, 0, 0, 4532, 4531, 1, 0, 0, 0, 4532, 4533, 1, 0, 0, 0, 4533, 4538, 1, 0, 0, 0, 4534, 4535, 5, 502, 0, 0, 4535, 4536, 3, 520, 260, 0, 4536, 4537, 5, 503, 0, 0, 4537, 4539, 1, 0, 0, 0, 4538, 4534, 1, 0, 0, 0, 4538, 4539, 1, 0, 0, 0, 4539, 4551, 1, 0, 0, 0, 4540, 4542, 5, 465, 0, 0, 4541, 4543, 5, 514, 0, 0, 4542, 4541, 1, 0, 0, 0, 4542, 4543, 1, 0, 0, 0, 4543, 4548, 1, 0, 0, 0, 4544, 4545, 5, 502, 0, 0, 4545, 4546, 3, 520, 260, 0, 4546, 4547, 5, 503, 0, 0, 4547, 4549, 1, 0, 0, 0, 4548, 4544, 1, 0, 0, 0, 4548, 4549, 1, 0, 0, 0, 4549, 4551, 1, 0, 0, 0, 4550, 4517, 1, 0, 0, 0, 4550, 4528, 1, 0, 0, 0, 4550, 4540, 1, 0, 0, 0, 4551, 527, 1, 0, 0, 0, 4552, 4553, 5, 514, 0, 0, 4553, 4554, 5, 502, 0, 0, 4554, 4555, 3, 520, 260, 0, 4555, 4556, 5, 503, 0, 0, 4556, 529, 1, 0, 0, 0, 4557, 4558, 5, 113, 0, 0, 4558, 4559, 5, 30, 0, 0, 4559, 4562, 3, 708, 354, 0, 4560, 4561, 5, 408, 0, 0, 4561, 4563, 5, 514, 0, 0, 4562, 4560, 1, 0, 0, 0, 4562, 4563, 1, 0, 0, 0, 4563, 4576, 1, 0, 0, 0, 4564, 4565, 5, 139, 0, 0, 4565, 4566, 5, 500, 0, 0, 4566, 4571, 3, 532, 266, 0, 4567, 4568, 5, 498, 0, 0, 4568, 4570, 3, 532, 266, 0, 4569, 4567, 1, 0, 0, 0, 4570, 4573, 1, 0, 0, 0, 4571, 4569, 1, 0, 0, 0, 4571, 4572, 1, 0, 0, 0, 4572, 4574, 1, 0, 0, 0, 4573, 4571, 1, 0, 0, 0, 4574, 4575, 5, 501, 0, 0, 4575, 4577, 1, 0, 0, 0, 4576, 4564, 1, 0, 0, 0, 4576, 4577, 1, 0, 0, 0, 4577, 4584, 1, 0, 0, 0, 4578, 4580, 5, 462, 0, 0, 4579, 4581, 3, 538, 269, 0, 4580, 4579, 1, 0, 0, 0, 4581, 4582, 1, 0, 0, 0, 4582, 4580, 1, 0, 0, 0, 4582, 4583, 1, 0, 0, 0, 4583, 4585, 1, 0, 0, 0, 4584, 4578, 1, 0, 0, 0, 4584, 4585, 1, 0, 0, 0, 4585, 4593, 1, 0, 0, 0, 4586, 4587, 5, 473, 0, 0, 4587, 4589, 5, 441, 0, 0, 4588, 4590, 3, 526, 263, 0, 4589, 4588, 1, 0, 0, 0, 4590, 4591, 1, 0, 0, 0, 4591, 4589, 1, 0, 0, 0, 4591, 4592, 1, 0, 0, 0, 4592, 4594, 1, 0, 0, 0, 4593, 4586, 1, 0, 0, 0, 4593, 4594, 1, 0, 0, 0, 4594, 531, 1, 0, 0, 0, 4595, 4596, 3, 708, 354, 0, 4596, 4597, 5, 487, 0, 0, 4597, 4598, 5, 514, 0, 0, 4598, 533, 1, 0, 0, 0, 4599, 4600, 5, 113, 0, 0, 4600, 4601, 5, 32, 0, 0, 4601, 4604, 3, 708, 354, 0, 4602, 4603, 5, 408, 0, 0, 4603, 4605, 5, 514, 0, 0, 4604, 4602, 1, 0, 0, 0, 4604, 4605, 1, 0, 0, 0, 4605, 4618, 1, 0, 0, 0, 4606, 4607, 5, 139, 0, 0, 4607, 4608, 5, 500, 0, 0, 4608, 4613, 3, 532, 266, 0, 4609, 4610, 5, 498, 0, 0, 4610, 4612, 3, 532, 266, 0, 4611, 4609, 1, 0, 0, 0, 4612, 4615, 1, 0, 0, 0, 4613, 4611, 1, 0, 0, 0, 4613, 4614, 1, 0, 0, 0, 4614, 4616, 1, 0, 0, 0, 4615, 4613, 1, 0, 0, 0, 4616, 4617, 5, 501, 0, 0, 4617, 4619, 1, 0, 0, 0, 4618, 4606, 1, 0, 0, 0, 4618, 4619, 1, 0, 0, 0, 4619, 535, 1, 0, 0, 0, 4620, 4622, 5, 460, 0, 0, 4621, 4623, 5, 514, 0, 0, 4622, 4621, 1, 0, 0, 0, 4622, 4623, 1, 0, 0, 0, 4623, 4626, 1, 0, 0, 0, 4624, 4625, 5, 408, 0, 0, 4625, 4627, 5, 514, 0, 0, 4626, 4624, 1, 0, 0, 0, 4626, 4627, 1, 0, 0, 0, 4627, 4634, 1, 0, 0, 0, 4628, 4630, 5, 462, 0, 0, 4629, 4631, 3, 538, 269, 0, 4630, 4629, 1, 0, 0, 0, 4631, 4632, 1, 0, 0, 0, 4632, 4630, 1, 0, 0, 0, 4632, 4633, 1, 0, 0, 0, 4633, 4635, 1, 0, 0, 0, 4634, 4628, 1, 0, 0, 0, 4634, 4635, 1, 0, 0, 0, 4635, 537, 1, 0, 0, 0, 4636, 4637, 7, 31, 0, 0, 4637, 4638, 5, 510, 0, 0, 4638, 4639, 5, 502, 0, 0, 4639, 4640, 3, 520, 260, 0, 4640, 4641, 5, 503, 0, 0, 4641, 539, 1, 0, 0, 0, 4642, 4643, 5, 470, 0, 0, 4643, 4646, 5, 461, 0, 0, 4644, 4645, 5, 408, 0, 0, 4645, 4647, 5, 514, 0, 0, 4646, 4644, 1, 0, 0, 0, 4646, 4647, 1, 0, 0, 0, 4647, 4649, 1, 0, 0, 0, 4648, 4650, 3, 542, 271, 0, 4649, 4648, 1, 0, 0, 0, 4650, 4651, 1, 0, 0, 0, 4651, 4649, 1, 0, 0, 0, 4651, 4652, 1, 0, 0, 0, 4652, 541, 1, 0, 0, 0, 4653, 4654, 5, 326, 0, 0, 4654, 4655, 5, 516, 0, 0, 4655, 4656, 5, 502, 0, 0, 4656, 4657, 3, 520, 260, 0, 4657, 4658, 5, 503, 0, 0, 4658, 543, 1, 0, 0, 0, 4659, 4660, 5, 466, 0, 0, 4660, 4661, 5, 426, 0, 0, 4661, 4664, 5, 518, 0, 0, 4662, 4663, 5, 408, 0, 0, 4663, 4665, 5, 514, 0, 0, 4664, 4662, 1, 0, 0, 0, 4664, 4665, 1, 0, 0, 0, 4665, 545, 1, 0, 0, 0, 4666, 4667, 5, 471, 0, 0, 4667, 4668, 5, 429, 0, 0, 4668, 4670, 5, 465, 0, 0, 4669, 4671, 5, 514, 0, 0, 4670, 4669, 1, 0, 0, 0, 4670, 4671, 1, 0, 0, 0, 4671, 4674, 1, 0, 0, 0, 4672, 4673, 5, 408, 0, 0, 4673, 4675, 5, 514, 0, 0, 4674, 4672, 1, 0, 0, 0, 4674, 4675, 1, 0, 0, 0, 4675, 547, 1, 0, 0, 0, 4676, 4677, 5, 471, 0, 0, 4677, 4678, 5, 429, 0, 0, 4678, 4681, 5, 464, 0, 0, 4679, 4680, 5, 408, 0, 0, 4680, 4682, 5, 514, 0, 0, 4681, 4679, 1, 0, 0, 0, 4681, 4682, 1, 0, 0, 0, 4682, 4690, 1, 0, 0, 0, 4683, 4684, 5, 473, 0, 0, 4684, 4686, 5, 441, 0, 0, 4685, 4687, 3, 526, 263, 0, 4686, 4685, 1, 0, 0, 0, 4687, 4688, 1, 0, 0, 0, 4688, 4686, 1, 0, 0, 0, 4688, 4689, 1, 0, 0, 0, 4689, 4691, 1, 0, 0, 0, 4690, 4683, 1, 0, 0, 0, 4690, 4691, 1, 0, 0, 0, 4691, 549, 1, 0, 0, 0, 4692, 4693, 5, 472, 0, 0, 4693, 4694, 5, 514, 0, 0, 4694, 551, 1, 0, 0, 0, 4695, 4696, 3, 554, 277, 0, 4696, 4701, 3, 556, 278, 0, 4697, 4698, 5, 498, 0, 0, 4698, 4700, 3, 556, 278, 0, 4699, 4697, 1, 0, 0, 0, 4700, 4703, 1, 0, 0, 0, 4701, 4699, 1, 0, 0, 0, 4701, 4702, 1, 0, 0, 0, 4702, 4735, 1, 0, 0, 0, 4703, 4701, 1, 0, 0, 0, 4704, 4705, 5, 37, 0, 0, 4705, 4709, 5, 514, 0, 0, 4706, 4707, 5, 420, 0, 0, 4707, 4710, 3, 558, 279, 0, 4708, 4710, 5, 19, 0, 0, 4709, 4706, 1, 0, 0, 0, 4709, 4708, 1, 0, 0, 0, 4710, 4714, 1, 0, 0, 0, 4711, 4712, 5, 292, 0, 0, 4712, 4713, 5, 444, 0, 0, 4713, 4715, 5, 514, 0, 0, 4714, 4711, 1, 0, 0, 0, 4714, 4715, 1, 0, 0, 0, 4715, 4735, 1, 0, 0, 0, 4716, 4717, 5, 19, 0, 0, 4717, 4718, 5, 37, 0, 0, 4718, 4722, 5, 514, 0, 0, 4719, 4720, 5, 292, 0, 0, 4720, 4721, 5, 444, 0, 0, 4721, 4723, 5, 514, 0, 0, 4722, 4719, 1, 0, 0, 0, 4722, 4723, 1, 0, 0, 0, 4723, 4735, 1, 0, 0, 0, 4724, 4725, 5, 444, 0, 0, 4725, 4726, 5, 514, 0, 0, 4726, 4731, 3, 556, 278, 0, 4727, 4728, 5, 498, 0, 0, 4728, 4730, 3, 556, 278, 0, 4729, 4727, 1, 0, 0, 0, 4730, 4733, 1, 0, 0, 0, 4731, 4729, 1, 0, 0, 0, 4731, 4732, 1, 0, 0, 0, 4732, 4735, 1, 0, 0, 0, 4733, 4731, 1, 0, 0, 0, 4734, 4695, 1, 0, 0, 0, 4734, 4704, 1, 0, 0, 0, 4734, 4716, 1, 0, 0, 0, 4734, 4724, 1, 0, 0, 0, 4735, 553, 1, 0, 0, 0, 4736, 4737, 7, 32, 0, 0, 4737, 555, 1, 0, 0, 0, 4738, 4739, 5, 518, 0, 0, 4739, 4740, 5, 487, 0, 0, 4740, 4741, 3, 558, 279, 0, 4741, 557, 1, 0, 0, 0, 4742, 4747, 5, 514, 0, 0, 4743, 4747, 5, 516, 0, 0, 4744, 4747, 3, 716, 358, 0, 4745, 4747, 3, 708, 354, 0, 4746, 4742, 1, 0, 0, 0, 4746, 4743, 1, 0, 0, 0, 4746, 4744, 1, 0, 0, 0, 4746, 4745, 1, 0, 0, 0, 4747, 559, 1, 0, 0, 0, 4748, 4753, 3, 562, 281, 0, 4749, 4753, 3, 574, 287, 0, 4750, 4753, 3, 576, 288, 0, 4751, 4753, 3, 582, 291, 0, 4752, 4748, 1, 0, 0, 0, 4752, 4749, 1, 0, 0, 0, 4752, 4750, 1, 0, 0, 0, 4752, 4751, 1, 0, 0, 0, 4753, 561, 1, 0, 0, 0, 4754, 4755, 5, 65, 0, 0, 4755, 5162, 5, 380, 0, 0, 4756, 4757, 5, 65, 0, 0, 4757, 4758, 5, 347, 0, 0, 4758, 4759, 5, 381, 0, 0, 4759, 4760, 5, 71, 0, 0, 4760, 5162, 3, 708, 354, 0, 4761, 4762, 5, 65, 0, 0, 4762, 4763, 5, 347, 0, 0, 4763, 4764, 5, 117, 0, 0, 4764, 4765, 5, 71, 0, 0, 4765, 5162, 3, 708, 354, 0, 4766, 4767, 5, 65, 0, 0, 4767, 4768, 5, 347, 0, 0, 4768, 4769, 5, 407, 0, 0, 4769, 4770, 5, 71, 0, 0, 4770, 5162, 3, 708, 354, 0, 4771, 4772, 5, 65, 0, 0, 4772, 4773, 5, 347, 0, 0, 4773, 4774, 5, 406, 0, 0, 4774, 4775, 5, 71, 0, 0, 4775, 5162, 3, 708, 354, 0, 4776, 4777, 5, 65, 0, 0, 4777, 4783, 5, 381, 0, 0, 4778, 4781, 5, 292, 0, 0, 4779, 4782, 3, 708, 354, 0, 4780, 4782, 5, 518, 0, 0, 4781, 4779, 1, 0, 0, 0, 4781, 4780, 1, 0, 0, 0, 4782, 4784, 1, 0, 0, 0, 4783, 4778, 1, 0, 0, 0, 4783, 4784, 1, 0, 0, 0, 4784, 5162, 1, 0, 0, 0, 4785, 4786, 5, 65, 0, 0, 4786, 4792, 5, 382, 0, 0, 4787, 4790, 5, 292, 0, 0, 4788, 4791, 3, 708, 354, 0, 4789, 4791, 5, 518, 0, 0, 4790, 4788, 1, 0, 0, 0, 4790, 4789, 1, 0, 0, 0, 4791, 4793, 1, 0, 0, 0, 4792, 4787, 1, 0, 0, 0, 4792, 4793, 1, 0, 0, 0, 4793, 5162, 1, 0, 0, 0, 4794, 4795, 5, 65, 0, 0, 4795, 4801, 5, 383, 0, 0, 4796, 4799, 5, 292, 0, 0, 4797, 4800, 3, 708, 354, 0, 4798, 4800, 5, 518, 0, 0, 4799, 4797, 1, 0, 0, 0, 4799, 4798, 1, 0, 0, 0, 4800, 4802, 1, 0, 0, 0, 4801, 4796, 1, 0, 0, 0, 4801, 4802, 1, 0, 0, 0, 4802, 5162, 1, 0, 0, 0, 4803, 4804, 5, 65, 0, 0, 4804, 4810, 5, 384, 0, 0, 4805, 4808, 5, 292, 0, 0, 4806, 4809, 3, 708, 354, 0, 4807, 4809, 5, 518, 0, 0, 4808, 4806, 1, 0, 0, 0, 4808, 4807, 1, 0, 0, 0, 4809, 4811, 1, 0, 0, 0, 4810, 4805, 1, 0, 0, 0, 4810, 4811, 1, 0, 0, 0, 4811, 5162, 1, 0, 0, 0, 4812, 4813, 5, 65, 0, 0, 4813, 4819, 5, 385, 0, 0, 4814, 4817, 5, 292, 0, 0, 4815, 4818, 3, 708, 354, 0, 4816, 4818, 5, 518, 0, 0, 4817, 4815, 1, 0, 0, 0, 4817, 4816, 1, 0, 0, 0, 4818, 4820, 1, 0, 0, 0, 4819, 4814, 1, 0, 0, 0, 4819, 4820, 1, 0, 0, 0, 4820, 5162, 1, 0, 0, 0, 4821, 4822, 5, 65, 0, 0, 4822, 4828, 5, 143, 0, 0, 4823, 4826, 5, 292, 0, 0, 4824, 4827, 3, 708, 354, 0, 4825, 4827, 5, 518, 0, 0, 4826, 4824, 1, 0, 0, 0, 4826, 4825, 1, 0, 0, 0, 4827, 4829, 1, 0, 0, 0, 4828, 4823, 1, 0, 0, 0, 4828, 4829, 1, 0, 0, 0, 4829, 5162, 1, 0, 0, 0, 4830, 4831, 5, 65, 0, 0, 4831, 4837, 5, 145, 0, 0, 4832, 4835, 5, 292, 0, 0, 4833, 4836, 3, 708, 354, 0, 4834, 4836, 5, 518, 0, 0, 4835, 4833, 1, 0, 0, 0, 4835, 4834, 1, 0, 0, 0, 4836, 4838, 1, 0, 0, 0, 4837, 4832, 1, 0, 0, 0, 4837, 4838, 1, 0, 0, 0, 4838, 5162, 1, 0, 0, 0, 4839, 4840, 5, 65, 0, 0, 4840, 4846, 5, 386, 0, 0, 4841, 4844, 5, 292, 0, 0, 4842, 4845, 3, 708, 354, 0, 4843, 4845, 5, 518, 0, 0, 4844, 4842, 1, 0, 0, 0, 4844, 4843, 1, 0, 0, 0, 4845, 4847, 1, 0, 0, 0, 4846, 4841, 1, 0, 0, 0, 4846, 4847, 1, 0, 0, 0, 4847, 5162, 1, 0, 0, 0, 4848, 4849, 5, 65, 0, 0, 4849, 4855, 5, 387, 0, 0, 4850, 4853, 5, 292, 0, 0, 4851, 4854, 3, 708, 354, 0, 4852, 4854, 5, 518, 0, 0, 4853, 4851, 1, 0, 0, 0, 4853, 4852, 1, 0, 0, 0, 4854, 4856, 1, 0, 0, 0, 4855, 4850, 1, 0, 0, 0, 4855, 4856, 1, 0, 0, 0, 4856, 5162, 1, 0, 0, 0, 4857, 4858, 5, 65, 0, 0, 4858, 4859, 5, 37, 0, 0, 4859, 4865, 5, 421, 0, 0, 4860, 4863, 5, 292, 0, 0, 4861, 4864, 3, 708, 354, 0, 4862, 4864, 5, 518, 0, 0, 4863, 4861, 1, 0, 0, 0, 4863, 4862, 1, 0, 0, 0, 4864, 4866, 1, 0, 0, 0, 4865, 4860, 1, 0, 0, 0, 4865, 4866, 1, 0, 0, 0, 4866, 5162, 1, 0, 0, 0, 4867, 4868, 5, 65, 0, 0, 4868, 4874, 5, 144, 0, 0, 4869, 4872, 5, 292, 0, 0, 4870, 4873, 3, 708, 354, 0, 4871, 4873, 5, 518, 0, 0, 4872, 4870, 1, 0, 0, 0, 4872, 4871, 1, 0, 0, 0, 4873, 4875, 1, 0, 0, 0, 4874, 4869, 1, 0, 0, 0, 4874, 4875, 1, 0, 0, 0, 4875, 5162, 1, 0, 0, 0, 4876, 4877, 5, 65, 0, 0, 4877, 4883, 5, 146, 0, 0, 4878, 4881, 5, 292, 0, 0, 4879, 4882, 3, 708, 354, 0, 4880, 4882, 5, 518, 0, 0, 4881, 4879, 1, 0, 0, 0, 4881, 4880, 1, 0, 0, 0, 4882, 4884, 1, 0, 0, 0, 4883, 4878, 1, 0, 0, 0, 4883, 4884, 1, 0, 0, 0, 4884, 5162, 1, 0, 0, 0, 4885, 4886, 5, 65, 0, 0, 4886, 4887, 5, 114, 0, 0, 4887, 4893, 5, 117, 0, 0, 4888, 4891, 5, 292, 0, 0, 4889, 4892, 3, 708, 354, 0, 4890, 4892, 5, 518, 0, 0, 4891, 4889, 1, 0, 0, 0, 4891, 4890, 1, 0, 0, 0, 4892, 4894, 1, 0, 0, 0, 4893, 4888, 1, 0, 0, 0, 4893, 4894, 1, 0, 0, 0, 4894, 5162, 1, 0, 0, 0, 4895, 4896, 5, 65, 0, 0, 4896, 4897, 5, 115, 0, 0, 4897, 4903, 5, 117, 0, 0, 4898, 4901, 5, 292, 0, 0, 4899, 4902, 3, 708, 354, 0, 4900, 4902, 5, 518, 0, 0, 4901, 4899, 1, 0, 0, 0, 4901, 4900, 1, 0, 0, 0, 4902, 4904, 1, 0, 0, 0, 4903, 4898, 1, 0, 0, 0, 4903, 4904, 1, 0, 0, 0, 4904, 5162, 1, 0, 0, 0, 4905, 4906, 5, 65, 0, 0, 4906, 4907, 5, 227, 0, 0, 4907, 4913, 5, 228, 0, 0, 4908, 4911, 5, 292, 0, 0, 4909, 4912, 3, 708, 354, 0, 4910, 4912, 5, 518, 0, 0, 4911, 4909, 1, 0, 0, 0, 4911, 4910, 1, 0, 0, 0, 4912, 4914, 1, 0, 0, 0, 4913, 4908, 1, 0, 0, 0, 4913, 4914, 1, 0, 0, 0, 4914, 5162, 1, 0, 0, 0, 4915, 4916, 5, 65, 0, 0, 4916, 4917, 5, 23, 0, 0, 4917, 5162, 3, 708, 354, 0, 4918, 4919, 5, 65, 0, 0, 4919, 4920, 5, 27, 0, 0, 4920, 5162, 3, 708, 354, 0, 4921, 4922, 5, 65, 0, 0, 4922, 4923, 5, 33, 0, 0, 4923, 5162, 3, 708, 354, 0, 4924, 4925, 5, 65, 0, 0, 4925, 5162, 5, 388, 0, 0, 4926, 4927, 5, 65, 0, 0, 4927, 5162, 5, 334, 0, 0, 4928, 4929, 5, 65, 0, 0, 4929, 5162, 5, 336, 0, 0, 4930, 4931, 5, 65, 0, 0, 4931, 4932, 5, 409, 0, 0, 4932, 5162, 5, 334, 0, 0, 4933, 4934, 5, 65, 0, 0, 4934, 4935, 5, 409, 0, 0, 4935, 5162, 5, 368, 0, 0, 4936, 4937, 5, 65, 0, 0, 4937, 4938, 5, 412, 0, 0, 4938, 4939, 5, 427, 0, 0, 4939, 4941, 3, 708, 354, 0, 4940, 4942, 5, 415, 0, 0, 4941, 4940, 1, 0, 0, 0, 4941, 4942, 1, 0, 0, 0, 4942, 5162, 1, 0, 0, 0, 4943, 4944, 5, 65, 0, 0, 4944, 4945, 5, 413, 0, 0, 4945, 4946, 5, 427, 0, 0, 4946, 4948, 3, 708, 354, 0, 4947, 4949, 5, 415, 0, 0, 4948, 4947, 1, 0, 0, 0, 4948, 4949, 1, 0, 0, 0, 4949, 5162, 1, 0, 0, 0, 4950, 4951, 5, 65, 0, 0, 4951, 4952, 5, 414, 0, 0, 4952, 4953, 5, 426, 0, 0, 4953, 5162, 3, 708, 354, 0, 4954, 4955, 5, 65, 0, 0, 4955, 4956, 5, 416, 0, 0, 4956, 4957, 5, 427, 0, 0, 4957, 5162, 3, 708, 354, 0, 4958, 4959, 5, 65, 0, 0, 4959, 4960, 5, 222, 0, 0, 4960, 4961, 5, 427, 0, 0, 4961, 4964, 3, 708, 354, 0, 4962, 4963, 5, 417, 0, 0, 4963, 4965, 5, 516, 0, 0, 4964, 4962, 1, 0, 0, 0, 4964, 4965, 1, 0, 0, 0, 4965, 5162, 1, 0, 0, 0, 4966, 4967, 5, 65, 0, 0, 4967, 4969, 5, 188, 0, 0, 4968, 4970, 3, 564, 282, 0, 4969, 4968, 1, 0, 0, 0, 4969, 4970, 1, 0, 0, 0, 4970, 5162, 1, 0, 0, 0, 4971, 4972, 5, 65, 0, 0, 4972, 4973, 5, 59, 0, 0, 4973, 5162, 5, 445, 0, 0, 4974, 4975, 5, 65, 0, 0, 4975, 4976, 5, 29, 0, 0, 4976, 4982, 5, 447, 0, 0, 4977, 4980, 5, 292, 0, 0, 4978, 4981, 3, 708, 354, 0, 4979, 4981, 5, 518, 0, 0, 4980, 4978, 1, 0, 0, 0, 4980, 4979, 1, 0, 0, 0, 4981, 4983, 1, 0, 0, 0, 4982, 4977, 1, 0, 0, 0, 4982, 4983, 1, 0, 0, 0, 4983, 5162, 1, 0, 0, 0, 4984, 4985, 5, 65, 0, 0, 4985, 4986, 5, 458, 0, 0, 4986, 5162, 5, 447, 0, 0, 4987, 4988, 5, 65, 0, 0, 4988, 4989, 5, 453, 0, 0, 4989, 5162, 5, 483, 0, 0, 4990, 4991, 5, 65, 0, 0, 4991, 4992, 5, 456, 0, 0, 4992, 4993, 5, 93, 0, 0, 4993, 5162, 3, 708, 354, 0, 4994, 4995, 5, 65, 0, 0, 4995, 4996, 5, 456, 0, 0, 4996, 4997, 5, 93, 0, 0, 4997, 4998, 5, 30, 0, 0, 4998, 5162, 3, 708, 354, 0, 4999, 5000, 5, 65, 0, 0, 5000, 5001, 5, 456, 0, 0, 5001, 5002, 5, 93, 0, 0, 5002, 5003, 5, 33, 0, 0, 5003, 5162, 3, 708, 354, 0, 5004, 5005, 5, 65, 0, 0, 5005, 5006, 5, 456, 0, 0, 5006, 5007, 5, 93, 0, 0, 5007, 5008, 5, 32, 0, 0, 5008, 5162, 3, 708, 354, 0, 5009, 5010, 5, 65, 0, 0, 5010, 5011, 5, 445, 0, 0, 5011, 5017, 5, 454, 0, 0, 5012, 5015, 5, 292, 0, 0, 5013, 5016, 3, 708, 354, 0, 5014, 5016, 5, 518, 0, 0, 5015, 5013, 1, 0, 0, 0, 5015, 5014, 1, 0, 0, 0, 5016, 5018, 1, 0, 0, 0, 5017, 5012, 1, 0, 0, 0, 5017, 5018, 1, 0, 0, 0, 5018, 5162, 1, 0, 0, 0, 5019, 5020, 5, 65, 0, 0, 5020, 5021, 5, 317, 0, 0, 5021, 5027, 5, 343, 0, 0, 5022, 5025, 5, 292, 0, 0, 5023, 5026, 3, 708, 354, 0, 5024, 5026, 5, 518, 0, 0, 5025, 5023, 1, 0, 0, 0, 5025, 5024, 1, 0, 0, 0, 5026, 5028, 1, 0, 0, 0, 5027, 5022, 1, 0, 0, 0, 5027, 5028, 1, 0, 0, 0, 5028, 5162, 1, 0, 0, 0, 5029, 5030, 5, 65, 0, 0, 5030, 5031, 5, 317, 0, 0, 5031, 5037, 5, 316, 0, 0, 5032, 5035, 5, 292, 0, 0, 5033, 5036, 3, 708, 354, 0, 5034, 5036, 5, 518, 0, 0, 5035, 5033, 1, 0, 0, 0, 5035, 5034, 1, 0, 0, 0, 5036, 5038, 1, 0, 0, 0, 5037, 5032, 1, 0, 0, 0, 5037, 5038, 1, 0, 0, 0, 5038, 5162, 1, 0, 0, 0, 5039, 5040, 5, 65, 0, 0, 5040, 5041, 5, 26, 0, 0, 5041, 5047, 5, 381, 0, 0, 5042, 5045, 5, 292, 0, 0, 5043, 5046, 3, 708, 354, 0, 5044, 5046, 5, 518, 0, 0, 5045, 5043, 1, 0, 0, 0, 5045, 5044, 1, 0, 0, 0, 5046, 5048, 1, 0, 0, 0, 5047, 5042, 1, 0, 0, 0, 5047, 5048, 1, 0, 0, 0, 5048, 5162, 1, 0, 0, 0, 5049, 5050, 5, 65, 0, 0, 5050, 5051, 5, 26, 0, 0, 5051, 5057, 5, 117, 0, 0, 5052, 5055, 5, 292, 0, 0, 5053, 5056, 3, 708, 354, 0, 5054, 5056, 5, 518, 0, 0, 5055, 5053, 1, 0, 0, 0, 5055, 5054, 1, 0, 0, 0, 5056, 5058, 1, 0, 0, 0, 5057, 5052, 1, 0, 0, 0, 5057, 5058, 1, 0, 0, 0, 5058, 5162, 1, 0, 0, 0, 5059, 5060, 5, 65, 0, 0, 5060, 5162, 5, 374, 0, 0, 5061, 5062, 5, 65, 0, 0, 5062, 5063, 5, 374, 0, 0, 5063, 5066, 5, 375, 0, 0, 5064, 5067, 3, 708, 354, 0, 5065, 5067, 5, 518, 0, 0, 5066, 5064, 1, 0, 0, 0, 5066, 5065, 1, 0, 0, 0, 5066, 5067, 1, 0, 0, 0, 5067, 5162, 1, 0, 0, 0, 5068, 5069, 5, 65, 0, 0, 5069, 5070, 5, 374, 0, 0, 5070, 5162, 5, 376, 0, 0, 5071, 5072, 5, 65, 0, 0, 5072, 5073, 5, 211, 0, 0, 5073, 5076, 5, 212, 0, 0, 5074, 5075, 5, 429, 0, 0, 5075, 5077, 3, 566, 283, 0, 5076, 5074, 1, 0, 0, 0, 5076, 5077, 1, 0, 0, 0, 5077, 5162, 1, 0, 0, 0, 5078, 5079, 5, 65, 0, 0, 5079, 5082, 5, 418, 0, 0, 5080, 5081, 5, 417, 0, 0, 5081, 5083, 5, 516, 0, 0, 5082, 5080, 1, 0, 0, 0, 5082, 5083, 1, 0, 0, 0, 5083, 5089, 1, 0, 0, 0, 5084, 5087, 5, 292, 0, 0, 5085, 5088, 3, 708, 354, 0, 5086, 5088, 5, 518, 0, 0, 5087, 5085, 1, 0, 0, 0, 5087, 5086, 1, 0, 0, 0, 5088, 5090, 1, 0, 0, 0, 5089, 5084, 1, 0, 0, 0, 5089, 5090, 1, 0, 0, 0, 5090, 5092, 1, 0, 0, 0, 5091, 5093, 5, 85, 0, 0, 5092, 5091, 1, 0, 0, 0, 5092, 5093, 1, 0, 0, 0, 5093, 5162, 1, 0, 0, 0, 5094, 5095, 5, 65, 0, 0, 5095, 5096, 5, 440, 0, 0, 5096, 5097, 5, 441, 0, 0, 5097, 5103, 5, 316, 0, 0, 5098, 5101, 5, 292, 0, 0, 5099, 5102, 3, 708, 354, 0, 5100, 5102, 5, 518, 0, 0, 5101, 5099, 1, 0, 0, 0, 5101, 5100, 1, 0, 0, 0, 5102, 5104, 1, 0, 0, 0, 5103, 5098, 1, 0, 0, 0, 5103, 5104, 1, 0, 0, 0, 5104, 5162, 1, 0, 0, 0, 5105, 5106, 5, 65, 0, 0, 5106, 5107, 5, 440, 0, 0, 5107, 5108, 5, 441, 0, 0, 5108, 5114, 5, 343, 0, 0, 5109, 5112, 5, 292, 0, 0, 5110, 5113, 3, 708, 354, 0, 5111, 5113, 5, 518, 0, 0, 5112, 5110, 1, 0, 0, 0, 5112, 5111, 1, 0, 0, 0, 5113, 5115, 1, 0, 0, 0, 5114, 5109, 1, 0, 0, 0, 5114, 5115, 1, 0, 0, 0, 5115, 5162, 1, 0, 0, 0, 5116, 5117, 5, 65, 0, 0, 5117, 5118, 5, 440, 0, 0, 5118, 5124, 5, 120, 0, 0, 5119, 5122, 5, 292, 0, 0, 5120, 5123, 3, 708, 354, 0, 5121, 5123, 5, 518, 0, 0, 5122, 5120, 1, 0, 0, 0, 5122, 5121, 1, 0, 0, 0, 5123, 5125, 1, 0, 0, 0, 5124, 5119, 1, 0, 0, 0, 5124, 5125, 1, 0, 0, 0, 5125, 5162, 1, 0, 0, 0, 5126, 5127, 5, 65, 0, 0, 5127, 5162, 5, 443, 0, 0, 5128, 5129, 5, 65, 0, 0, 5129, 5162, 5, 391, 0, 0, 5130, 5131, 5, 65, 0, 0, 5131, 5132, 5, 356, 0, 0, 5132, 5138, 5, 388, 0, 0, 5133, 5136, 5, 292, 0, 0, 5134, 5137, 3, 708, 354, 0, 5135, 5137, 5, 518, 0, 0, 5136, 5134, 1, 0, 0, 0, 5136, 5135, 1, 0, 0, 0, 5137, 5139, 1, 0, 0, 0, 5138, 5133, 1, 0, 0, 0, 5138, 5139, 1, 0, 0, 0, 5139, 5162, 1, 0, 0, 0, 5140, 5141, 5, 65, 0, 0, 5141, 5142, 5, 314, 0, 0, 5142, 5148, 5, 343, 0, 0, 5143, 5146, 5, 292, 0, 0, 5144, 5147, 3, 708, 354, 0, 5145, 5147, 5, 518, 0, 0, 5146, 5144, 1, 0, 0, 0, 5146, 5145, 1, 0, 0, 0, 5147, 5149, 1, 0, 0, 0, 5148, 5143, 1, 0, 0, 0, 5148, 5149, 1, 0, 0, 0, 5149, 5162, 1, 0, 0, 0, 5150, 5151, 5, 65, 0, 0, 5151, 5152, 5, 345, 0, 0, 5152, 5153, 5, 314, 0, 0, 5153, 5159, 5, 316, 0, 0, 5154, 5157, 5, 292, 0, 0, 5155, 5158, 3, 708, 354, 0, 5156, 5158, 5, 518, 0, 0, 5157, 5155, 1, 0, 0, 0, 5157, 5156, 1, 0, 0, 0, 5158, 5160, 1, 0, 0, 0, 5159, 5154, 1, 0, 0, 0, 5159, 5160, 1, 0, 0, 0, 5160, 5162, 1, 0, 0, 0, 5161, 4754, 1, 0, 0, 0, 5161, 4756, 1, 0, 0, 0, 5161, 4761, 1, 0, 0, 0, 5161, 4766, 1, 0, 0, 0, 5161, 4771, 1, 0, 0, 0, 5161, 4776, 1, 0, 0, 0, 5161, 4785, 1, 0, 0, 0, 5161, 4794, 1, 0, 0, 0, 5161, 4803, 1, 0, 0, 0, 5161, 4812, 1, 0, 0, 0, 5161, 4821, 1, 0, 0, 0, 5161, 4830, 1, 0, 0, 0, 5161, 4839, 1, 0, 0, 0, 5161, 4848, 1, 0, 0, 0, 5161, 4857, 1, 0, 0, 0, 5161, 4867, 1, 0, 0, 0, 5161, 4876, 1, 0, 0, 0, 5161, 4885, 1, 0, 0, 0, 5161, 4895, 1, 0, 0, 0, 5161, 4905, 1, 0, 0, 0, 5161, 4915, 1, 0, 0, 0, 5161, 4918, 1, 0, 0, 0, 5161, 4921, 1, 0, 0, 0, 5161, 4924, 1, 0, 0, 0, 5161, 4926, 1, 0, 0, 0, 5161, 4928, 1, 0, 0, 0, 5161, 4930, 1, 0, 0, 0, 5161, 4933, 1, 0, 0, 0, 5161, 4936, 1, 0, 0, 0, 5161, 4943, 1, 0, 0, 0, 5161, 4950, 1, 0, 0, 0, 5161, 4954, 1, 0, 0, 0, 5161, 4958, 1, 0, 0, 0, 5161, 4966, 1, 0, 0, 0, 5161, 4971, 1, 0, 0, 0, 5161, 4974, 1, 0, 0, 0, 5161, 4984, 1, 0, 0, 0, 5161, 4987, 1, 0, 0, 0, 5161, 4990, 1, 0, 0, 0, 5161, 4994, 1, 0, 0, 0, 5161, 4999, 1, 0, 0, 0, 5161, 5004, 1, 0, 0, 0, 5161, 5009, 1, 0, 0, 0, 5161, 5019, 1, 0, 0, 0, 5161, 5029, 1, 0, 0, 0, 5161, 5039, 1, 0, 0, 0, 5161, 5049, 1, 0, 0, 0, 5161, 5059, 1, 0, 0, 0, 5161, 5061, 1, 0, 0, 0, 5161, 5068, 1, 0, 0, 0, 5161, 5071, 1, 0, 0, 0, 5161, 5078, 1, 0, 0, 0, 5161, 5094, 1, 0, 0, 0, 5161, 5105, 1, 0, 0, 0, 5161, 5116, 1, 0, 0, 0, 5161, 5126, 1, 0, 0, 0, 5161, 5128, 1, 0, 0, 0, 5161, 5130, 1, 0, 0, 0, 5161, 5140, 1, 0, 0, 0, 5161, 5150, 1, 0, 0, 0, 5162, 563, 1, 0, 0, 0, 5163, 5164, 5, 72, 0, 0, 5164, 5169, 3, 568, 284, 0, 5165, 5166, 5, 288, 0, 0, 5166, 5168, 3, 568, 284, 0, 5167, 5165, 1, 0, 0, 0, 5168, 5171, 1, 0, 0, 0, 5169, 5167, 1, 0, 0, 0, 5169, 5170, 1, 0, 0, 0, 5170, 5177, 1, 0, 0, 0, 5171, 5169, 1, 0, 0, 0, 5172, 5175, 5, 292, 0, 0, 5173, 5176, 3, 708, 354, 0, 5174, 5176, 5, 518, 0, 0, 5175, 5173, 1, 0, 0, 0, 5175, 5174, 1, 0, 0, 0, 5176, 5178, 1, 0, 0, 0, 5177, 5172, 1, 0, 0, 0, 5177, 5178, 1, 0, 0, 0, 5178, 5185, 1, 0, 0, 0, 5179, 5182, 5, 292, 0, 0, 5180, 5183, 3, 708, 354, 0, 5181, 5183, 5, 518, 0, 0, 5182, 5180, 1, 0, 0, 0, 5182, 5181, 1, 0, 0, 0, 5183, 5185, 1, 0, 0, 0, 5184, 5163, 1, 0, 0, 0, 5184, 5179, 1, 0, 0, 0, 5185, 565, 1, 0, 0, 0, 5186, 5187, 7, 33, 0, 0, 5187, 567, 1, 0, 0, 0, 5188, 5189, 5, 438, 0, 0, 5189, 5190, 7, 34, 0, 0, 5190, 5195, 5, 514, 0, 0, 5191, 5192, 5, 518, 0, 0, 5192, 5193, 7, 34, 0, 0, 5193, 5195, 5, 514, 0, 0, 5194, 5188, 1, 0, 0, 0, 5194, 5191, 1, 0, 0, 0, 5195, 569, 1, 0, 0, 0, 5196, 5197, 5, 514, 0, 0, 5197, 5198, 5, 487, 0, 0, 5198, 5199, 3, 572, 286, 0, 5199, 571, 1, 0, 0, 0, 5200, 5205, 5, 514, 0, 0, 5201, 5205, 5, 516, 0, 0, 5202, 5205, 3, 716, 358, 0, 5203, 5205, 5, 291, 0, 0, 5204, 5200, 1, 0, 0, 0, 5204, 5201, 1, 0, 0, 0, 5204, 5202, 1, 0, 0, 0, 5204, 5203, 1, 0, 0, 0, 5205, 573, 1, 0, 0, 0, 5206, 5207, 5, 66, 0, 0, 5207, 5208, 5, 347, 0, 0, 5208, 5209, 5, 23, 0, 0, 5209, 5212, 3, 708, 354, 0, 5210, 5211, 5, 433, 0, 0, 5211, 5213, 5, 518, 0, 0, 5212, 5210, 1, 0, 0, 0, 5212, 5213, 1, 0, 0, 0, 5213, 5358, 1, 0, 0, 0, 5214, 5215, 5, 66, 0, 0, 5215, 5216, 5, 347, 0, 0, 5216, 5217, 5, 116, 0, 0, 5217, 5220, 3, 708, 354, 0, 5218, 5219, 5, 433, 0, 0, 5219, 5221, 5, 518, 0, 0, 5220, 5218, 1, 0, 0, 0, 5220, 5221, 1, 0, 0, 0, 5221, 5358, 1, 0, 0, 0, 5222, 5223, 5, 66, 0, 0, 5223, 5224, 5, 347, 0, 0, 5224, 5225, 5, 405, 0, 0, 5225, 5358, 3, 708, 354, 0, 5226, 5227, 5, 66, 0, 0, 5227, 5228, 5, 23, 0, 0, 5228, 5358, 3, 708, 354, 0, 5229, 5230, 5, 66, 0, 0, 5230, 5231, 5, 27, 0, 0, 5231, 5358, 3, 708, 354, 0, 5232, 5233, 5, 66, 0, 0, 5233, 5234, 5, 30, 0, 0, 5234, 5358, 3, 708, 354, 0, 5235, 5236, 5, 66, 0, 0, 5236, 5237, 5, 31, 0, 0, 5237, 5358, 3, 708, 354, 0, 5238, 5239, 5, 66, 0, 0, 5239, 5240, 5, 32, 0, 0, 5240, 5358, 3, 708, 354, 0, 5241, 5242, 5, 66, 0, 0, 5242, 5243, 5, 33, 0, 0, 5243, 5358, 3, 708, 354, 0, 5244, 5245, 5, 66, 0, 0, 5245, 5246, 5, 34, 0, 0, 5246, 5358, 3, 708, 354, 0, 5247, 5248, 5, 66, 0, 0, 5248, 5249, 5, 35, 0, 0, 5249, 5358, 3, 708, 354, 0, 5250, 5251, 5, 66, 0, 0, 5251, 5252, 5, 28, 0, 0, 5252, 5358, 3, 708, 354, 0, 5253, 5254, 5, 66, 0, 0, 5254, 5255, 5, 37, 0, 0, 5255, 5358, 3, 708, 354, 0, 5256, 5257, 5, 66, 0, 0, 5257, 5258, 5, 114, 0, 0, 5258, 5259, 5, 116, 0, 0, 5259, 5358, 3, 708, 354, 0, 5260, 5261, 5, 66, 0, 0, 5261, 5262, 5, 115, 0, 0, 5262, 5263, 5, 116, 0, 0, 5263, 5358, 3, 708, 354, 0, 5264, 5265, 5, 66, 0, 0, 5265, 5266, 5, 29, 0, 0, 5266, 5269, 5, 518, 0, 0, 5267, 5268, 5, 139, 0, 0, 5268, 5270, 5, 85, 0, 0, 5269, 5267, 1, 0, 0, 0, 5269, 5270, 1, 0, 0, 0, 5270, 5358, 1, 0, 0, 0, 5271, 5272, 5, 66, 0, 0, 5272, 5273, 5, 29, 0, 0, 5273, 5274, 5, 446, 0, 0, 5274, 5358, 3, 708, 354, 0, 5275, 5276, 5, 66, 0, 0, 5276, 5277, 5, 458, 0, 0, 5277, 5278, 5, 446, 0, 0, 5278, 5358, 5, 514, 0, 0, 5279, 5280, 5, 66, 0, 0, 5280, 5281, 5, 453, 0, 0, 5281, 5282, 5, 458, 0, 0, 5282, 5358, 5, 514, 0, 0, 5283, 5284, 5, 66, 0, 0, 5284, 5285, 5, 317, 0, 0, 5285, 5286, 5, 342, 0, 0, 5286, 5358, 3, 708, 354, 0, 5287, 5288, 5, 66, 0, 0, 5288, 5289, 5, 317, 0, 0, 5289, 5290, 5, 315, 0, 0, 5290, 5358, 3, 708, 354, 0, 5291, 5292, 5, 66, 0, 0, 5292, 5293, 5, 26, 0, 0, 5293, 5294, 5, 23, 0, 0, 5294, 5358, 3, 708, 354, 0, 5295, 5296, 5, 66, 0, 0, 5296, 5299, 5, 374, 0, 0, 5297, 5300, 3, 708, 354, 0, 5298, 5300, 5, 518, 0, 0, 5299, 5297, 1, 0, 0, 0, 5299, 5298, 1, 0, 0, 0, 5299, 5300, 1, 0, 0, 0, 5300, 5358, 1, 0, 0, 0, 5301, 5302, 5, 66, 0, 0, 5302, 5303, 5, 214, 0, 0, 5303, 5304, 5, 93, 0, 0, 5304, 5305, 7, 1, 0, 0, 5305, 5308, 3, 708, 354, 0, 5306, 5307, 5, 187, 0, 0, 5307, 5309, 5, 518, 0, 0, 5308, 5306, 1, 0, 0, 0, 5308, 5309, 1, 0, 0, 0, 5309, 5358, 1, 0, 0, 0, 5310, 5311, 5, 66, 0, 0, 5311, 5312, 5, 409, 0, 0, 5312, 5313, 5, 499, 0, 0, 5313, 5358, 3, 580, 290, 0, 5314, 5315, 5, 66, 0, 0, 5315, 5316, 5, 440, 0, 0, 5316, 5317, 5, 441, 0, 0, 5317, 5318, 5, 315, 0, 0, 5318, 5358, 3, 708, 354, 0, 5319, 5320, 5, 66, 0, 0, 5320, 5321, 5, 356, 0, 0, 5321, 5322, 5, 355, 0, 0, 5322, 5358, 3, 708, 354, 0, 5323, 5324, 5, 66, 0, 0, 5324, 5358, 5, 443, 0, 0, 5325, 5326, 5, 66, 0, 0, 5326, 5327, 5, 390, 0, 0, 5327, 5328, 5, 71, 0, 0, 5328, 5329, 5, 33, 0, 0, 5329, 5330, 3, 708, 354, 0, 5330, 5331, 5, 187, 0, 0, 5331, 5332, 3, 710, 355, 0, 5332, 5358, 1, 0, 0, 0, 5333, 5334, 5, 66, 0, 0, 5334, 5335, 5, 390, 0, 0, 5335, 5336, 5, 71, 0, 0, 5336, 5337, 5, 34, 0, 0, 5337, 5338, 3, 708, 354, 0, 5338, 5339, 5, 187, 0, 0, 5339, 5340, 3, 710, 355, 0, 5340, 5358, 1, 0, 0, 0, 5341, 5342, 5, 66, 0, 0, 5342, 5343, 5, 227, 0, 0, 5343, 5344, 5, 228, 0, 0, 5344, 5358, 3, 708, 354, 0, 5345, 5346, 5, 66, 0, 0, 5346, 5347, 5, 314, 0, 0, 5347, 5348, 5, 342, 0, 0, 5348, 5358, 3, 708, 354, 0, 5349, 5350, 5, 66, 0, 0, 5350, 5351, 5, 345, 0, 0, 5351, 5352, 5, 314, 0, 0, 5352, 5353, 5, 315, 0, 0, 5353, 5358, 3, 708, 354, 0, 5354, 5355, 5, 66, 0, 0, 5355, 5356, 5, 390, 0, 0, 5356, 5358, 3, 710, 355, 0, 5357, 5206, 1, 0, 0, 0, 5357, 5214, 1, 0, 0, 0, 5357, 5222, 1, 0, 0, 0, 5357, 5226, 1, 0, 0, 0, 5357, 5229, 1, 0, 0, 0, 5357, 5232, 1, 0, 0, 0, 5357, 5235, 1, 0, 0, 0, 5357, 5238, 1, 0, 0, 0, 5357, 5241, 1, 0, 0, 0, 5357, 5244, 1, 0, 0, 0, 5357, 5247, 1, 0, 0, 0, 5357, 5250, 1, 0, 0, 0, 5357, 5253, 1, 0, 0, 0, 5357, 5256, 1, 0, 0, 0, 5357, 5260, 1, 0, 0, 0, 5357, 5264, 1, 0, 0, 0, 5357, 5271, 1, 0, 0, 0, 5357, 5275, 1, 0, 0, 0, 5357, 5279, 1, 0, 0, 0, 5357, 5283, 1, 0, 0, 0, 5357, 5287, 1, 0, 0, 0, 5357, 5291, 1, 0, 0, 0, 5357, 5295, 1, 0, 0, 0, 5357, 5301, 1, 0, 0, 0, 5357, 5310, 1, 0, 0, 0, 5357, 5314, 1, 0, 0, 0, 5357, 5319, 1, 0, 0, 0, 5357, 5323, 1, 0, 0, 0, 5357, 5325, 1, 0, 0, 0, 5357, 5333, 1, 0, 0, 0, 5357, 5341, 1, 0, 0, 0, 5357, 5345, 1, 0, 0, 0, 5357, 5349, 1, 0, 0, 0, 5357, 5354, 1, 0, 0, 0, 5358, 575, 1, 0, 0, 0, 5359, 5361, 5, 70, 0, 0, 5360, 5362, 7, 35, 0, 0, 5361, 5360, 1, 0, 0, 0, 5361, 5362, 1, 0, 0, 0, 5362, 5363, 1, 0, 0, 0, 5363, 5364, 3, 588, 294, 0, 5364, 5365, 5, 71, 0, 0, 5365, 5366, 5, 409, 0, 0, 5366, 5367, 5, 499, 0, 0, 5367, 5372, 3, 580, 290, 0, 5368, 5370, 5, 76, 0, 0, 5369, 5368, 1, 0, 0, 0, 5369, 5370, 1, 0, 0, 0, 5370, 5371, 1, 0, 0, 0, 5371, 5373, 5, 518, 0, 0, 5372, 5369, 1, 0, 0, 0, 5372, 5373, 1, 0, 0, 0, 5373, 5377, 1, 0, 0, 0, 5374, 5376, 3, 578, 289, 0, 5375, 5374, 1, 0, 0, 0, 5376, 5379, 1, 0, 0, 0, 5377, 5375, 1, 0, 0, 0, 5377, 5378, 1, 0, 0, 0, 5378, 5382, 1, 0, 0, 0, 5379, 5377, 1, 0, 0, 0, 5380, 5381, 5, 72, 0, 0, 5381, 5383, 3, 668, 334, 0, 5382, 5380, 1, 0, 0, 0, 5382, 5383, 1, 0, 0, 0, 5383, 5390, 1, 0, 0, 0, 5384, 5385, 5, 8, 0, 0, 5385, 5388, 3, 616, 308, 0, 5386, 5387, 5, 73, 0, 0, 5387, 5389, 3, 668, 334, 0, 5388, 5386, 1, 0, 0, 0, 5388, 5389, 1, 0, 0, 0, 5389, 5391, 1, 0, 0, 0, 5390, 5384, 1, 0, 0, 0, 5390, 5391, 1, 0, 0, 0, 5391, 5394, 1, 0, 0, 0, 5392, 5393, 5, 9, 0, 0, 5393, 5395, 3, 612, 306, 0, 5394, 5392, 1, 0, 0, 0, 5394, 5395, 1, 0, 0, 0, 5395, 5398, 1, 0, 0, 0, 5396, 5397, 5, 75, 0, 0, 5397, 5399, 5, 516, 0, 0, 5398, 5396, 1, 0, 0, 0, 5398, 5399, 1, 0, 0, 0, 5399, 5402, 1, 0, 0, 0, 5400, 5401, 5, 74, 0, 0, 5401, 5403, 5, 516, 0, 0, 5402, 5400, 1, 0, 0, 0, 5402, 5403, 1, 0, 0, 0, 5403, 577, 1, 0, 0, 0, 5404, 5406, 3, 602, 301, 0, 5405, 5404, 1, 0, 0, 0, 5405, 5406, 1, 0, 0, 0, 5406, 5407, 1, 0, 0, 0, 5407, 5408, 5, 86, 0, 0, 5408, 5409, 5, 409, 0, 0, 5409, 5410, 5, 499, 0, 0, 5410, 5415, 3, 580, 290, 0, 5411, 5413, 5, 76, 0, 0, 5412, 5411, 1, 0, 0, 0, 5412, 5413, 1, 0, 0, 0, 5413, 5414, 1, 0, 0, 0, 5414, 5416, 5, 518, 0, 0, 5415, 5412, 1, 0, 0, 0, 5415, 5416, 1, 0, 0, 0, 5416, 5419, 1, 0, 0, 0, 5417, 5418, 5, 93, 0, 0, 5418, 5420, 3, 668, 334, 0, 5419, 5417, 1, 0, 0, 0, 5419, 5420, 1, 0, 0, 0, 5420, 579, 1, 0, 0, 0, 5421, 5422, 7, 36, 0, 0, 5422, 581, 1, 0, 0, 0, 5423, 5431, 3, 584, 292, 0, 5424, 5426, 5, 125, 0, 0, 5425, 5427, 5, 85, 0, 0, 5426, 5425, 1, 0, 0, 0, 5426, 5427, 1, 0, 0, 0, 5427, 5428, 1, 0, 0, 0, 5428, 5430, 3, 584, 292, 0, 5429, 5424, 1, 0, 0, 0, 5430, 5433, 1, 0, 0, 0, 5431, 5429, 1, 0, 0, 0, 5431, 5432, 1, 0, 0, 0, 5432, 583, 1, 0, 0, 0, 5433, 5431, 1, 0, 0, 0, 5434, 5436, 3, 586, 293, 0, 5435, 5437, 3, 594, 297, 0, 5436, 5435, 1, 0, 0, 0, 5436, 5437, 1, 0, 0, 0, 5437, 5439, 1, 0, 0, 0, 5438, 5440, 3, 604, 302, 0, 5439, 5438, 1, 0, 0, 0, 5439, 5440, 1, 0, 0, 0, 5440, 5442, 1, 0, 0, 0, 5441, 5443, 3, 606, 303, 0, 5442, 5441, 1, 0, 0, 0, 5442, 5443, 1, 0, 0, 0, 5443, 5445, 1, 0, 0, 0, 5444, 5446, 3, 608, 304, 0, 5445, 5444, 1, 0, 0, 0, 5445, 5446, 1, 0, 0, 0, 5446, 5448, 1, 0, 0, 0, 5447, 5449, 3, 610, 305, 0, 5448, 5447, 1, 0, 0, 0, 5448, 5449, 1, 0, 0, 0, 5449, 5451, 1, 0, 0, 0, 5450, 5452, 3, 618, 309, 0, 5451, 5450, 1, 0, 0, 0, 5451, 5452, 1, 0, 0, 0, 5452, 5471, 1, 0, 0, 0, 5453, 5455, 3, 594, 297, 0, 5454, 5456, 3, 604, 302, 0, 5455, 5454, 1, 0, 0, 0, 5455, 5456, 1, 0, 0, 0, 5456, 5458, 1, 0, 0, 0, 5457, 5459, 3, 606, 303, 0, 5458, 5457, 1, 0, 0, 0, 5458, 5459, 1, 0, 0, 0, 5459, 5461, 1, 0, 0, 0, 5460, 5462, 3, 608, 304, 0, 5461, 5460, 1, 0, 0, 0, 5461, 5462, 1, 0, 0, 0, 5462, 5463, 1, 0, 0, 0, 5463, 5465, 3, 586, 293, 0, 5464, 5466, 3, 610, 305, 0, 5465, 5464, 1, 0, 0, 0, 5465, 5466, 1, 0, 0, 0, 5466, 5468, 1, 0, 0, 0, 5467, 5469, 3, 618, 309, 0, 5468, 5467, 1, 0, 0, 0, 5468, 5469, 1, 0, 0, 0, 5469, 5471, 1, 0, 0, 0, 5470, 5434, 1, 0, 0, 0, 5470, 5453, 1, 0, 0, 0, 5471, 585, 1, 0, 0, 0, 5472, 5474, 5, 70, 0, 0, 5473, 5475, 7, 35, 0, 0, 5474, 5473, 1, 0, 0, 0, 5474, 5475, 1, 0, 0, 0, 5475, 5476, 1, 0, 0, 0, 5476, 5477, 3, 588, 294, 0, 5477, 587, 1, 0, 0, 0, 5478, 5488, 5, 492, 0, 0, 5479, 5484, 3, 590, 295, 0, 5480, 5481, 5, 498, 0, 0, 5481, 5483, 3, 590, 295, 0, 5482, 5480, 1, 0, 0, 0, 5483, 5486, 1, 0, 0, 0, 5484, 5482, 1, 0, 0, 0, 5484, 5485, 1, 0, 0, 0, 5485, 5488, 1, 0, 0, 0, 5486, 5484, 1, 0, 0, 0, 5487, 5478, 1, 0, 0, 0, 5487, 5479, 1, 0, 0, 0, 5488, 589, 1, 0, 0, 0, 5489, 5492, 3, 668, 334, 0, 5490, 5491, 5, 76, 0, 0, 5491, 5493, 3, 592, 296, 0, 5492, 5490, 1, 0, 0, 0, 5492, 5493, 1, 0, 0, 0, 5493, 5500, 1, 0, 0, 0, 5494, 5497, 3, 696, 348, 0, 5495, 5496, 5, 76, 0, 0, 5496, 5498, 3, 592, 296, 0, 5497, 5495, 1, 0, 0, 0, 5497, 5498, 1, 0, 0, 0, 5498, 5500, 1, 0, 0, 0, 5499, 5489, 1, 0, 0, 0, 5499, 5494, 1, 0, 0, 0, 5500, 591, 1, 0, 0, 0, 5501, 5504, 5, 518, 0, 0, 5502, 5504, 3, 730, 365, 0, 5503, 5501, 1, 0, 0, 0, 5503, 5502, 1, 0, 0, 0, 5504, 593, 1, 0, 0, 0, 5505, 5506, 5, 71, 0, 0, 5506, 5510, 3, 596, 298, 0, 5507, 5509, 3, 598, 299, 0, 5508, 5507, 1, 0, 0, 0, 5509, 5512, 1, 0, 0, 0, 5510, 5508, 1, 0, 0, 0, 5510, 5511, 1, 0, 0, 0, 5511, 595, 1, 0, 0, 0, 5512, 5510, 1, 0, 0, 0, 5513, 5518, 3, 708, 354, 0, 5514, 5516, 5, 76, 0, 0, 5515, 5514, 1, 0, 0, 0, 5515, 5516, 1, 0, 0, 0, 5516, 5517, 1, 0, 0, 0, 5517, 5519, 5, 518, 0, 0, 5518, 5515, 1, 0, 0, 0, 5518, 5519, 1, 0, 0, 0, 5519, 5530, 1, 0, 0, 0, 5520, 5521, 5, 500, 0, 0, 5521, 5522, 3, 582, 291, 0, 5522, 5527, 5, 501, 0, 0, 5523, 5525, 5, 76, 0, 0, 5524, 5523, 1, 0, 0, 0, 5524, 5525, 1, 0, 0, 0, 5525, 5526, 1, 0, 0, 0, 5526, 5528, 5, 518, 0, 0, 5527, 5524, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 5530, 1, 0, 0, 0, 5529, 5513, 1, 0, 0, 0, 5529, 5520, 1, 0, 0, 0, 5530, 597, 1, 0, 0, 0, 5531, 5533, 3, 602, 301, 0, 5532, 5531, 1, 0, 0, 0, 5532, 5533, 1, 0, 0, 0, 5533, 5534, 1, 0, 0, 0, 5534, 5535, 5, 86, 0, 0, 5535, 5538, 3, 596, 298, 0, 5536, 5537, 5, 93, 0, 0, 5537, 5539, 3, 668, 334, 0, 5538, 5536, 1, 0, 0, 0, 5538, 5539, 1, 0, 0, 0, 5539, 5552, 1, 0, 0, 0, 5540, 5542, 3, 602, 301, 0, 5541, 5540, 1, 0, 0, 0, 5541, 5542, 1, 0, 0, 0, 5542, 5543, 1, 0, 0, 0, 5543, 5544, 5, 86, 0, 0, 5544, 5549, 3, 600, 300, 0, 5545, 5547, 5, 76, 0, 0, 5546, 5545, 1, 0, 0, 0, 5546, 5547, 1, 0, 0, 0, 5547, 5548, 1, 0, 0, 0, 5548, 5550, 5, 518, 0, 0, 5549, 5546, 1, 0, 0, 0, 5549, 5550, 1, 0, 0, 0, 5550, 5552, 1, 0, 0, 0, 5551, 5532, 1, 0, 0, 0, 5551, 5541, 1, 0, 0, 0, 5552, 599, 1, 0, 0, 0, 5553, 5554, 5, 518, 0, 0, 5554, 5555, 5, 493, 0, 0, 5555, 5556, 3, 708, 354, 0, 5556, 5557, 5, 493, 0, 0, 5557, 5558, 3, 708, 354, 0, 5558, 5564, 1, 0, 0, 0, 5559, 5560, 3, 708, 354, 0, 5560, 5561, 5, 493, 0, 0, 5561, 5562, 3, 708, 354, 0, 5562, 5564, 1, 0, 0, 0, 5563, 5553, 1, 0, 0, 0, 5563, 5559, 1, 0, 0, 0, 5564, 601, 1, 0, 0, 0, 5565, 5567, 5, 87, 0, 0, 5566, 5568, 5, 90, 0, 0, 5567, 5566, 1, 0, 0, 0, 5567, 5568, 1, 0, 0, 0, 5568, 5580, 1, 0, 0, 0, 5569, 5571, 5, 88, 0, 0, 5570, 5572, 5, 90, 0, 0, 5571, 5570, 1, 0, 0, 0, 5571, 5572, 1, 0, 0, 0, 5572, 5580, 1, 0, 0, 0, 5573, 5580, 5, 89, 0, 0, 5574, 5576, 5, 91, 0, 0, 5575, 5577, 5, 90, 0, 0, 5576, 5575, 1, 0, 0, 0, 5576, 5577, 1, 0, 0, 0, 5577, 5580, 1, 0, 0, 0, 5578, 5580, 5, 92, 0, 0, 5579, 5565, 1, 0, 0, 0, 5579, 5569, 1, 0, 0, 0, 5579, 5573, 1, 0, 0, 0, 5579, 5574, 1, 0, 0, 0, 5579, 5578, 1, 0, 0, 0, 5580, 603, 1, 0, 0, 0, 5581, 5582, 5, 72, 0, 0, 5582, 5583, 3, 668, 334, 0, 5583, 605, 1, 0, 0, 0, 5584, 5585, 5, 8, 0, 0, 5585, 5586, 3, 706, 353, 0, 5586, 607, 1, 0, 0, 0, 5587, 5588, 5, 73, 0, 0, 5588, 5589, 3, 668, 334, 0, 5589, 609, 1, 0, 0, 0, 5590, 5591, 5, 9, 0, 0, 5591, 5592, 3, 612, 306, 0, 5592, 611, 1, 0, 0, 0, 5593, 5598, 3, 614, 307, 0, 5594, 5595, 5, 498, 0, 0, 5595, 5597, 3, 614, 307, 0, 5596, 5594, 1, 0, 0, 0, 5597, 5600, 1, 0, 0, 0, 5598, 5596, 1, 0, 0, 0, 5598, 5599, 1, 0, 0, 0, 5599, 613, 1, 0, 0, 0, 5600, 5598, 1, 0, 0, 0, 5601, 5603, 3, 668, 334, 0, 5602, 5604, 7, 7, 0, 0, 5603, 5602, 1, 0, 0, 0, 5603, 5604, 1, 0, 0, 0, 5604, 615, 1, 0, 0, 0, 5605, 5610, 3, 668, 334, 0, 5606, 5607, 5, 498, 0, 0, 5607, 5609, 3, 668, 334, 0, 5608, 5606, 1, 0, 0, 0, 5609, 5612, 1, 0, 0, 0, 5610, 5608, 1, 0, 0, 0, 5610, 5611, 1, 0, 0, 0, 5611, 617, 1, 0, 0, 0, 5612, 5610, 1, 0, 0, 0, 5613, 5614, 5, 75, 0, 0, 5614, 5617, 5, 516, 0, 0, 5615, 5616, 5, 74, 0, 0, 5616, 5618, 5, 516, 0, 0, 5617, 5615, 1, 0, 0, 0, 5617, 5618, 1, 0, 0, 0, 5618, 5626, 1, 0, 0, 0, 5619, 5620, 5, 74, 0, 0, 5620, 5623, 5, 516, 0, 0, 5621, 5622, 5, 75, 0, 0, 5622, 5624, 5, 516, 0, 0, 5623, 5621, 1, 0, 0, 0, 5623, 5624, 1, 0, 0, 0, 5624, 5626, 1, 0, 0, 0, 5625, 5613, 1, 0, 0, 0, 5625, 5619, 1, 0, 0, 0, 5626, 619, 1, 0, 0, 0, 5627, 5644, 3, 624, 312, 0, 5628, 5644, 3, 626, 313, 0, 5629, 5644, 3, 628, 314, 0, 5630, 5644, 3, 630, 315, 0, 5631, 5644, 3, 632, 316, 0, 5632, 5644, 3, 634, 317, 0, 5633, 5644, 3, 636, 318, 0, 5634, 5644, 3, 638, 319, 0, 5635, 5644, 3, 622, 311, 0, 5636, 5644, 3, 644, 322, 0, 5637, 5644, 3, 650, 325, 0, 5638, 5644, 3, 652, 326, 0, 5639, 5644, 3, 666, 333, 0, 5640, 5644, 3, 654, 327, 0, 5641, 5644, 3, 658, 329, 0, 5642, 5644, 3, 664, 332, 0, 5643, 5627, 1, 0, 0, 0, 5643, 5628, 1, 0, 0, 0, 5643, 5629, 1, 0, 0, 0, 5643, 5630, 1, 0, 0, 0, 5643, 5631, 1, 0, 0, 0, 5643, 5632, 1, 0, 0, 0, 5643, 5633, 1, 0, 0, 0, 5643, 5634, 1, 0, 0, 0, 5643, 5635, 1, 0, 0, 0, 5643, 5636, 1, 0, 0, 0, 5643, 5637, 1, 0, 0, 0, 5643, 5638, 1, 0, 0, 0, 5643, 5639, 1, 0, 0, 0, 5643, 5640, 1, 0, 0, 0, 5643, 5641, 1, 0, 0, 0, 5643, 5642, 1, 0, 0, 0, 5644, 621, 1, 0, 0, 0, 5645, 5646, 5, 158, 0, 0, 5646, 5647, 5, 514, 0, 0, 5647, 623, 1, 0, 0, 0, 5648, 5649, 5, 56, 0, 0, 5649, 5650, 5, 426, 0, 0, 5650, 5651, 5, 59, 0, 0, 5651, 5654, 5, 514, 0, 0, 5652, 5653, 5, 61, 0, 0, 5653, 5655, 5, 514, 0, 0, 5654, 5652, 1, 0, 0, 0, 5654, 5655, 1, 0, 0, 0, 5655, 5656, 1, 0, 0, 0, 5656, 5657, 5, 62, 0, 0, 5657, 5672, 5, 514, 0, 0, 5658, 5659, 5, 56, 0, 0, 5659, 5660, 5, 58, 0, 0, 5660, 5672, 5, 514, 0, 0, 5661, 5662, 5, 56, 0, 0, 5662, 5663, 5, 60, 0, 0, 5663, 5664, 5, 63, 0, 0, 5664, 5665, 5, 514, 0, 0, 5665, 5666, 5, 64, 0, 0, 5666, 5669, 5, 516, 0, 0, 5667, 5668, 5, 62, 0, 0, 5668, 5670, 5, 514, 0, 0, 5669, 5667, 1, 0, 0, 0, 5669, 5670, 1, 0, 0, 0, 5670, 5672, 1, 0, 0, 0, 5671, 5648, 1, 0, 0, 0, 5671, 5658, 1, 0, 0, 0, 5671, 5661, 1, 0, 0, 0, 5672, 625, 1, 0, 0, 0, 5673, 5674, 5, 57, 0, 0, 5674, 627, 1, 0, 0, 0, 5675, 5692, 5, 395, 0, 0, 5676, 5677, 5, 396, 0, 0, 5677, 5679, 5, 409, 0, 0, 5678, 5680, 5, 91, 0, 0, 5679, 5678, 1, 0, 0, 0, 5679, 5680, 1, 0, 0, 0, 5680, 5682, 1, 0, 0, 0, 5681, 5683, 5, 193, 0, 0, 5682, 5681, 1, 0, 0, 0, 5682, 5683, 1, 0, 0, 0, 5683, 5685, 1, 0, 0, 0, 5684, 5686, 5, 410, 0, 0, 5685, 5684, 1, 0, 0, 0, 5685, 5686, 1, 0, 0, 0, 5686, 5688, 1, 0, 0, 0, 5687, 5689, 5, 411, 0, 0, 5688, 5687, 1, 0, 0, 0, 5688, 5689, 1, 0, 0, 0, 5689, 5692, 1, 0, 0, 0, 5690, 5692, 5, 396, 0, 0, 5691, 5675, 1, 0, 0, 0, 5691, 5676, 1, 0, 0, 0, 5691, 5690, 1, 0, 0, 0, 5692, 629, 1, 0, 0, 0, 5693, 5694, 5, 397, 0, 0, 5694, 631, 1, 0, 0, 0, 5695, 5696, 5, 398, 0, 0, 5696, 633, 1, 0, 0, 0, 5697, 5698, 5, 399, 0, 0, 5698, 5699, 5, 400, 0, 0, 5699, 5700, 5, 514, 0, 0, 5700, 635, 1, 0, 0, 0, 5701, 5702, 5, 399, 0, 0, 5702, 5703, 5, 60, 0, 0, 5703, 5704, 5, 514, 0, 0, 5704, 637, 1, 0, 0, 0, 5705, 5707, 5, 401, 0, 0, 5706, 5708, 3, 640, 320, 0, 5707, 5706, 1, 0, 0, 0, 5707, 5708, 1, 0, 0, 0, 5708, 5711, 1, 0, 0, 0, 5709, 5710, 5, 433, 0, 0, 5710, 5712, 3, 642, 321, 0, 5711, 5709, 1, 0, 0, 0, 5711, 5712, 1, 0, 0, 0, 5712, 5717, 1, 0, 0, 0, 5713, 5714, 5, 65, 0, 0, 5714, 5715, 5, 401, 0, 0, 5715, 5717, 5, 402, 0, 0, 5716, 5705, 1, 0, 0, 0, 5716, 5713, 1, 0, 0, 0, 5717, 639, 1, 0, 0, 0, 5718, 5719, 3, 708, 354, 0, 5719, 5720, 5, 499, 0, 0, 5720, 5721, 5, 492, 0, 0, 5721, 5725, 1, 0, 0, 0, 5722, 5725, 3, 708, 354, 0, 5723, 5725, 5, 492, 0, 0, 5724, 5718, 1, 0, 0, 0, 5724, 5722, 1, 0, 0, 0, 5724, 5723, 1, 0, 0, 0, 5725, 641, 1, 0, 0, 0, 5726, 5727, 7, 37, 0, 0, 5727, 643, 1, 0, 0, 0, 5728, 5729, 5, 67, 0, 0, 5729, 5733, 3, 646, 323, 0, 5730, 5731, 5, 67, 0, 0, 5731, 5733, 5, 85, 0, 0, 5732, 5728, 1, 0, 0, 0, 5732, 5730, 1, 0, 0, 0, 5733, 645, 1, 0, 0, 0, 5734, 5739, 3, 648, 324, 0, 5735, 5736, 5, 498, 0, 0, 5736, 5738, 3, 648, 324, 0, 5737, 5735, 1, 0, 0, 0, 5738, 5741, 1, 0, 0, 0, 5739, 5737, 1, 0, 0, 0, 5739, 5740, 1, 0, 0, 0, 5740, 647, 1, 0, 0, 0, 5741, 5739, 1, 0, 0, 0, 5742, 5743, 7, 38, 0, 0, 5743, 649, 1, 0, 0, 0, 5744, 5745, 5, 68, 0, 0, 5745, 5746, 5, 341, 0, 0, 5746, 651, 1, 0, 0, 0, 5747, 5748, 5, 69, 0, 0, 5748, 5749, 5, 514, 0, 0, 5749, 653, 1, 0, 0, 0, 5750, 5751, 5, 434, 0, 0, 5751, 5752, 5, 56, 0, 0, 5752, 5753, 5, 518, 0, 0, 5753, 5754, 5, 514, 0, 0, 5754, 5755, 5, 76, 0, 0, 5755, 5810, 5, 518, 0, 0, 5756, 5757, 5, 434, 0, 0, 5757, 5758, 5, 57, 0, 0, 5758, 5810, 5, 518, 0, 0, 5759, 5760, 5, 434, 0, 0, 5760, 5810, 5, 388, 0, 0, 5761, 5762, 5, 434, 0, 0, 5762, 5763, 5, 518, 0, 0, 5763, 5764, 5, 65, 0, 0, 5764, 5810, 5, 518, 0, 0, 5765, 5766, 5, 434, 0, 0, 5766, 5767, 5, 518, 0, 0, 5767, 5768, 5, 66, 0, 0, 5768, 5810, 5, 518, 0, 0, 5769, 5770, 5, 434, 0, 0, 5770, 5771, 5, 518, 0, 0, 5771, 5772, 5, 365, 0, 0, 5772, 5773, 5, 366, 0, 0, 5773, 5774, 5, 361, 0, 0, 5774, 5787, 3, 710, 355, 0, 5775, 5776, 5, 368, 0, 0, 5776, 5777, 5, 500, 0, 0, 5777, 5782, 3, 710, 355, 0, 5778, 5779, 5, 498, 0, 0, 5779, 5781, 3, 710, 355, 0, 5780, 5778, 1, 0, 0, 0, 5781, 5784, 1, 0, 0, 0, 5782, 5780, 1, 0, 0, 0, 5782, 5783, 1, 0, 0, 0, 5783, 5785, 1, 0, 0, 0, 5784, 5782, 1, 0, 0, 0, 5785, 5786, 5, 501, 0, 0, 5786, 5788, 1, 0, 0, 0, 5787, 5775, 1, 0, 0, 0, 5787, 5788, 1, 0, 0, 0, 5788, 5801, 1, 0, 0, 0, 5789, 5790, 5, 369, 0, 0, 5790, 5791, 5, 500, 0, 0, 5791, 5796, 3, 710, 355, 0, 5792, 5793, 5, 498, 0, 0, 5793, 5795, 3, 710, 355, 0, 5794, 5792, 1, 0, 0, 0, 5795, 5798, 1, 0, 0, 0, 5796, 5794, 1, 0, 0, 0, 5796, 5797, 1, 0, 0, 0, 5797, 5799, 1, 0, 0, 0, 5798, 5796, 1, 0, 0, 0, 5799, 5800, 5, 501, 0, 0, 5800, 5802, 1, 0, 0, 0, 5801, 5789, 1, 0, 0, 0, 5801, 5802, 1, 0, 0, 0, 5802, 5804, 1, 0, 0, 0, 5803, 5805, 5, 367, 0, 0, 5804, 5803, 1, 0, 0, 0, 5804, 5805, 1, 0, 0, 0, 5805, 5810, 1, 0, 0, 0, 5806, 5807, 5, 434, 0, 0, 5807, 5808, 5, 518, 0, 0, 5808, 5810, 3, 656, 328, 0, 5809, 5750, 1, 0, 0, 0, 5809, 5756, 1, 0, 0, 0, 5809, 5759, 1, 0, 0, 0, 5809, 5761, 1, 0, 0, 0, 5809, 5765, 1, 0, 0, 0, 5809, 5769, 1, 0, 0, 0, 5809, 5806, 1, 0, 0, 0, 5810, 655, 1, 0, 0, 0, 5811, 5813, 8, 39, 0, 0, 5812, 5811, 1, 0, 0, 0, 5813, 5814, 1, 0, 0, 0, 5814, 5812, 1, 0, 0, 0, 5814, 5815, 1, 0, 0, 0, 5815, 657, 1, 0, 0, 0, 5816, 5817, 5, 360, 0, 0, 5817, 5818, 5, 71, 0, 0, 5818, 5819, 3, 710, 355, 0, 5819, 5820, 5, 357, 0, 0, 5820, 5821, 7, 26, 0, 0, 5821, 5822, 5, 361, 0, 0, 5822, 5823, 3, 708, 354, 0, 5823, 5824, 5, 358, 0, 0, 5824, 5825, 5, 500, 0, 0, 5825, 5830, 3, 660, 330, 0, 5826, 5827, 5, 498, 0, 0, 5827, 5829, 3, 660, 330, 0, 5828, 5826, 1, 0, 0, 0, 5829, 5832, 1, 0, 0, 0, 5830, 5828, 1, 0, 0, 0, 5830, 5831, 1, 0, 0, 0, 5831, 5833, 1, 0, 0, 0, 5832, 5830, 1, 0, 0, 0, 5833, 5846, 5, 501, 0, 0, 5834, 5835, 5, 363, 0, 0, 5835, 5836, 5, 500, 0, 0, 5836, 5841, 3, 662, 331, 0, 5837, 5838, 5, 498, 0, 0, 5838, 5840, 3, 662, 331, 0, 5839, 5837, 1, 0, 0, 0, 5840, 5843, 1, 0, 0, 0, 5841, 5839, 1, 0, 0, 0, 5841, 5842, 1, 0, 0, 0, 5842, 5844, 1, 0, 0, 0, 5843, 5841, 1, 0, 0, 0, 5844, 5845, 5, 501, 0, 0, 5845, 5847, 1, 0, 0, 0, 5846, 5834, 1, 0, 0, 0, 5846, 5847, 1, 0, 0, 0, 5847, 5850, 1, 0, 0, 0, 5848, 5849, 5, 362, 0, 0, 5849, 5851, 5, 516, 0, 0, 5850, 5848, 1, 0, 0, 0, 5850, 5851, 1, 0, 0, 0, 5851, 5854, 1, 0, 0, 0, 5852, 5853, 5, 75, 0, 0, 5853, 5855, 5, 516, 0, 0, 5854, 5852, 1, 0, 0, 0, 5854, 5855, 1, 0, 0, 0, 5855, 659, 1, 0, 0, 0, 5856, 5857, 3, 710, 355, 0, 5857, 5858, 5, 76, 0, 0, 5858, 5859, 3, 710, 355, 0, 5859, 661, 1, 0, 0, 0, 5860, 5861, 3, 710, 355, 0, 5861, 5862, 5, 426, 0, 0, 5862, 5863, 3, 710, 355, 0, 5863, 5864, 5, 93, 0, 0, 5864, 5865, 3, 710, 355, 0, 5865, 5871, 1, 0, 0, 0, 5866, 5867, 3, 710, 355, 0, 5867, 5868, 5, 426, 0, 0, 5868, 5869, 3, 710, 355, 0, 5869, 5871, 1, 0, 0, 0, 5870, 5860, 1, 0, 0, 0, 5870, 5866, 1, 0, 0, 0, 5871, 663, 1, 0, 0, 0, 5872, 5873, 5, 518, 0, 0, 5873, 665, 1, 0, 0, 0, 5874, 5875, 5, 389, 0, 0, 5875, 5876, 5, 390, 0, 0, 5876, 5877, 3, 710, 355, 0, 5877, 5878, 5, 76, 0, 0, 5878, 5879, 5, 502, 0, 0, 5879, 5880, 3, 390, 195, 0, 5880, 5881, 5, 503, 0, 0, 5881, 667, 1, 0, 0, 0, 5882, 5883, 3, 670, 335, 0, 5883, 669, 1, 0, 0, 0, 5884, 5889, 3, 672, 336, 0, 5885, 5886, 5, 289, 0, 0, 5886, 5888, 3, 672, 336, 0, 5887, 5885, 1, 0, 0, 0, 5888, 5891, 1, 0, 0, 0, 5889, 5887, 1, 0, 0, 0, 5889, 5890, 1, 0, 0, 0, 5890, 671, 1, 0, 0, 0, 5891, 5889, 1, 0, 0, 0, 5892, 5897, 3, 674, 337, 0, 5893, 5894, 5, 288, 0, 0, 5894, 5896, 3, 674, 337, 0, 5895, 5893, 1, 0, 0, 0, 5896, 5899, 1, 0, 0, 0, 5897, 5895, 1, 0, 0, 0, 5897, 5898, 1, 0, 0, 0, 5898, 673, 1, 0, 0, 0, 5899, 5897, 1, 0, 0, 0, 5900, 5902, 5, 290, 0, 0, 5901, 5900, 1, 0, 0, 0, 5901, 5902, 1, 0, 0, 0, 5902, 5903, 1, 0, 0, 0, 5903, 5904, 3, 676, 338, 0, 5904, 675, 1, 0, 0, 0, 5905, 5934, 3, 680, 340, 0, 5906, 5907, 3, 678, 339, 0, 5907, 5908, 3, 680, 340, 0, 5908, 5935, 1, 0, 0, 0, 5909, 5935, 5, 6, 0, 0, 5910, 5935, 5, 5, 0, 0, 5911, 5912, 5, 292, 0, 0, 5912, 5915, 5, 500, 0, 0, 5913, 5916, 3, 582, 291, 0, 5914, 5916, 3, 706, 353, 0, 5915, 5913, 1, 0, 0, 0, 5915, 5914, 1, 0, 0, 0, 5916, 5917, 1, 0, 0, 0, 5917, 5918, 5, 501, 0, 0, 5918, 5935, 1, 0, 0, 0, 5919, 5921, 5, 290, 0, 0, 5920, 5919, 1, 0, 0, 0, 5920, 5921, 1, 0, 0, 0, 5921, 5922, 1, 0, 0, 0, 5922, 5923, 5, 293, 0, 0, 5923, 5924, 3, 680, 340, 0, 5924, 5925, 5, 288, 0, 0, 5925, 5926, 3, 680, 340, 0, 5926, 5935, 1, 0, 0, 0, 5927, 5929, 5, 290, 0, 0, 5928, 5927, 1, 0, 0, 0, 5928, 5929, 1, 0, 0, 0, 5929, 5930, 1, 0, 0, 0, 5930, 5931, 5, 294, 0, 0, 5931, 5935, 3, 680, 340, 0, 5932, 5933, 5, 295, 0, 0, 5933, 5935, 3, 680, 340, 0, 5934, 5906, 1, 0, 0, 0, 5934, 5909, 1, 0, 0, 0, 5934, 5910, 1, 0, 0, 0, 5934, 5911, 1, 0, 0, 0, 5934, 5920, 1, 0, 0, 0, 5934, 5928, 1, 0, 0, 0, 5934, 5932, 1, 0, 0, 0, 5934, 5935, 1, 0, 0, 0, 5935, 677, 1, 0, 0, 0, 5936, 5937, 7, 40, 0, 0, 5937, 679, 1, 0, 0, 0, 5938, 5943, 3, 682, 341, 0, 5939, 5940, 7, 41, 0, 0, 5940, 5942, 3, 682, 341, 0, 5941, 5939, 1, 0, 0, 0, 5942, 5945, 1, 0, 0, 0, 5943, 5941, 1, 0, 0, 0, 5943, 5944, 1, 0, 0, 0, 5944, 681, 1, 0, 0, 0, 5945, 5943, 1, 0, 0, 0, 5946, 5951, 3, 684, 342, 0, 5947, 5948, 7, 42, 0, 0, 5948, 5950, 3, 684, 342, 0, 5949, 5947, 1, 0, 0, 0, 5950, 5953, 1, 0, 0, 0, 5951, 5949, 1, 0, 0, 0, 5951, 5952, 1, 0, 0, 0, 5952, 683, 1, 0, 0, 0, 5953, 5951, 1, 0, 0, 0, 5954, 5956, 7, 41, 0, 0, 5955, 5954, 1, 0, 0, 0, 5955, 5956, 1, 0, 0, 0, 5956, 5957, 1, 0, 0, 0, 5957, 5958, 3, 686, 343, 0, 5958, 685, 1, 0, 0, 0, 5959, 5960, 5, 500, 0, 0, 5960, 5961, 3, 668, 334, 0, 5961, 5962, 5, 501, 0, 0, 5962, 5981, 1, 0, 0, 0, 5963, 5964, 5, 500, 0, 0, 5964, 5965, 3, 582, 291, 0, 5965, 5966, 5, 501, 0, 0, 5966, 5981, 1, 0, 0, 0, 5967, 5968, 5, 296, 0, 0, 5968, 5969, 5, 500, 0, 0, 5969, 5970, 3, 582, 291, 0, 5970, 5971, 5, 501, 0, 0, 5971, 5981, 1, 0, 0, 0, 5972, 5981, 3, 690, 345, 0, 5973, 5981, 3, 688, 344, 0, 5974, 5981, 3, 692, 346, 0, 5975, 5981, 3, 314, 157, 0, 5976, 5981, 3, 306, 153, 0, 5977, 5981, 3, 696, 348, 0, 5978, 5981, 3, 698, 349, 0, 5979, 5981, 3, 704, 352, 0, 5980, 5959, 1, 0, 0, 0, 5980, 5963, 1, 0, 0, 0, 5980, 5967, 1, 0, 0, 0, 5980, 5972, 1, 0, 0, 0, 5980, 5973, 1, 0, 0, 0, 5980, 5974, 1, 0, 0, 0, 5980, 5975, 1, 0, 0, 0, 5980, 5976, 1, 0, 0, 0, 5980, 5977, 1, 0, 0, 0, 5980, 5978, 1, 0, 0, 0, 5980, 5979, 1, 0, 0, 0, 5981, 687, 1, 0, 0, 0, 5982, 5988, 5, 79, 0, 0, 5983, 5984, 5, 80, 0, 0, 5984, 5985, 3, 668, 334, 0, 5985, 5986, 5, 81, 0, 0, 5986, 5987, 3, 668, 334, 0, 5987, 5989, 1, 0, 0, 0, 5988, 5983, 1, 0, 0, 0, 5989, 5990, 1, 0, 0, 0, 5990, 5988, 1, 0, 0, 0, 5990, 5991, 1, 0, 0, 0, 5991, 5994, 1, 0, 0, 0, 5992, 5993, 5, 82, 0, 0, 5993, 5995, 3, 668, 334, 0, 5994, 5992, 1, 0, 0, 0, 5994, 5995, 1, 0, 0, 0, 5995, 5996, 1, 0, 0, 0, 5996, 5997, 5, 83, 0, 0, 5997, 689, 1, 0, 0, 0, 5998, 5999, 5, 105, 0, 0, 5999, 6000, 3, 668, 334, 0, 6000, 6001, 5, 81, 0, 0, 6001, 6002, 3, 668, 334, 0, 6002, 6003, 5, 82, 0, 0, 6003, 6004, 3, 668, 334, 0, 6004, 691, 1, 0, 0, 0, 6005, 6006, 5, 287, 0, 0, 6006, 6007, 5, 500, 0, 0, 6007, 6008, 3, 668, 334, 0, 6008, 6009, 5, 76, 0, 0, 6009, 6010, 3, 694, 347, 0, 6010, 6011, 5, 501, 0, 0, 6011, 693, 1, 0, 0, 0, 6012, 6013, 7, 43, 0, 0, 6013, 695, 1, 0, 0, 0, 6014, 6015, 7, 44, 0, 0, 6015, 6021, 5, 500, 0, 0, 6016, 6018, 5, 84, 0, 0, 6017, 6016, 1, 0, 0, 0, 6017, 6018, 1, 0, 0, 0, 6018, 6019, 1, 0, 0, 0, 6019, 6022, 3, 668, 334, 0, 6020, 6022, 5, 492, 0, 0, 6021, 6017, 1, 0, 0, 0, 6021, 6020, 1, 0, 0, 0, 6022, 6023, 1, 0, 0, 0, 6023, 6024, 5, 501, 0, 0, 6024, 697, 1, 0, 0, 0, 6025, 6026, 3, 700, 350, 0, 6026, 6028, 5, 500, 0, 0, 6027, 6029, 3, 702, 351, 0, 6028, 6027, 1, 0, 0, 0, 6028, 6029, 1, 0, 0, 0, 6029, 6030, 1, 0, 0, 0, 6030, 6031, 5, 501, 0, 0, 6031, 699, 1, 0, 0, 0, 6032, 6033, 7, 45, 0, 0, 6033, 701, 1, 0, 0, 0, 6034, 6039, 3, 668, 334, 0, 6035, 6036, 5, 498, 0, 0, 6036, 6038, 3, 668, 334, 0, 6037, 6035, 1, 0, 0, 0, 6038, 6041, 1, 0, 0, 0, 6039, 6037, 1, 0, 0, 0, 6039, 6040, 1, 0, 0, 0, 6040, 703, 1, 0, 0, 0, 6041, 6039, 1, 0, 0, 0, 6042, 6055, 3, 712, 356, 0, 6043, 6048, 5, 517, 0, 0, 6044, 6045, 5, 499, 0, 0, 6045, 6047, 3, 104, 52, 0, 6046, 6044, 1, 0, 0, 0, 6047, 6050, 1, 0, 0, 0, 6048, 6046, 1, 0, 0, 0, 6048, 6049, 1, 0, 0, 0, 6049, 6055, 1, 0, 0, 0, 6050, 6048, 1, 0, 0, 0, 6051, 6055, 3, 708, 354, 0, 6052, 6055, 5, 518, 0, 0, 6053, 6055, 5, 513, 0, 0, 6054, 6042, 1, 0, 0, 0, 6054, 6043, 1, 0, 0, 0, 6054, 6051, 1, 0, 0, 0, 6054, 6052, 1, 0, 0, 0, 6054, 6053, 1, 0, 0, 0, 6055, 705, 1, 0, 0, 0, 6056, 6061, 3, 668, 334, 0, 6057, 6058, 5, 498, 0, 0, 6058, 6060, 3, 668, 334, 0, 6059, 6057, 1, 0, 0, 0, 6060, 6063, 1, 0, 0, 0, 6061, 6059, 1, 0, 0, 0, 6061, 6062, 1, 0, 0, 0, 6062, 707, 1, 0, 0, 0, 6063, 6061, 1, 0, 0, 0, 6064, 6069, 3, 710, 355, 0, 6065, 6066, 5, 499, 0, 0, 6066, 6068, 3, 710, 355, 0, 6067, 6065, 1, 0, 0, 0, 6068, 6071, 1, 0, 0, 0, 6069, 6067, 1, 0, 0, 0, 6069, 6070, 1, 0, 0, 0, 6070, 709, 1, 0, 0, 0, 6071, 6069, 1, 0, 0, 0, 6072, 6076, 5, 518, 0, 0, 6073, 6076, 5, 520, 0, 0, 6074, 6076, 3, 732, 366, 0, 6075, 6072, 1, 0, 0, 0, 6075, 6073, 1, 0, 0, 0, 6075, 6074, 1, 0, 0, 0, 6076, 711, 1, 0, 0, 0, 6077, 6083, 5, 514, 0, 0, 6078, 6083, 5, 516, 0, 0, 6079, 6083, 3, 716, 358, 0, 6080, 6083, 5, 291, 0, 0, 6081, 6083, 5, 140, 0, 0, 6082, 6077, 1, 0, 0, 0, 6082, 6078, 1, 0, 0, 0, 6082, 6079, 1, 0, 0, 0, 6082, 6080, 1, 0, 0, 0, 6082, 6081, 1, 0, 0, 0, 6083, 713, 1, 0, 0, 0, 6084, 6093, 5, 504, 0, 0, 6085, 6090, 3, 712, 356, 0, 6086, 6087, 5, 498, 0, 0, 6087, 6089, 3, 712, 356, 0, 6088, 6086, 1, 0, 0, 0, 6089, 6092, 1, 0, 0, 0, 6090, 6088, 1, 0, 0, 0, 6090, 6091, 1, 0, 0, 0, 6091, 6094, 1, 0, 0, 0, 6092, 6090, 1, 0, 0, 0, 6093, 6085, 1, 0, 0, 0, 6093, 6094, 1, 0, 0, 0, 6094, 6095, 1, 0, 0, 0, 6095, 6096, 5, 505, 0, 0, 6096, 715, 1, 0, 0, 0, 6097, 6098, 7, 46, 0, 0, 6098, 717, 1, 0, 0, 0, 6099, 6100, 5, 2, 0, 0, 6100, 719, 1, 0, 0, 0, 6101, 6102, 5, 507, 0, 0, 6102, 6108, 3, 722, 361, 0, 6103, 6104, 5, 500, 0, 0, 6104, 6105, 3, 724, 362, 0, 6105, 6106, 5, 501, 0, 0, 6106, 6109, 1, 0, 0, 0, 6107, 6109, 3, 728, 364, 0, 6108, 6103, 1, 0, 0, 0, 6108, 6107, 1, 0, 0, 0, 6108, 6109, 1, 0, 0, 0, 6109, 721, 1, 0, 0, 0, 6110, 6111, 7, 47, 0, 0, 6111, 723, 1, 0, 0, 0, 6112, 6117, 3, 726, 363, 0, 6113, 6114, 5, 498, 0, 0, 6114, 6116, 3, 726, 363, 0, 6115, 6113, 1, 0, 0, 0, 6116, 6119, 1, 0, 0, 0, 6117, 6115, 1, 0, 0, 0, 6117, 6118, 1, 0, 0, 0, 6118, 725, 1, 0, 0, 0, 6119, 6117, 1, 0, 0, 0, 6120, 6121, 5, 518, 0, 0, 6121, 6122, 5, 506, 0, 0, 6122, 6125, 3, 728, 364, 0, 6123, 6125, 3, 728, 364, 0, 6124, 6120, 1, 0, 0, 0, 6124, 6123, 1, 0, 0, 0, 6125, 727, 1, 0, 0, 0, 6126, 6130, 3, 712, 356, 0, 6127, 6130, 3, 668, 334, 0, 6128, 6130, 3, 708, 354, 0, 6129, 6126, 1, 0, 0, 0, 6129, 6127, 1, 0, 0, 0, 6129, 6128, 1, 0, 0, 0, 6130, 729, 1, 0, 0, 0, 6131, 6132, 7, 48, 0, 0, 6132, 731, 1, 0, 0, 0, 6133, 6134, 7, 49, 0, 0, 6134, 733, 1, 0, 0, 0, 714, 737, 743, 748, 751, 754, 763, 773, 782, 788, 790, 794, 797, 802, 808, 834, 842, 850, 858, 866, 878, 891, 904, 916, 927, 931, 939, 945, 962, 966, 970, 974, 978, 982, 986, 988, 1001, 1006, 1020, 1029, 1045, 1061, 1070, 1093, 1107, 1111, 1120, 1123, 1131, 1136, 1138, 1213, 1215, 1228, 1239, 1248, 1250, 1261, 1267, 1275, 1286, 1288, 1296, 1298, 1317, 1325, 1341, 1365, 1381, 1465, 1474, 1482, 1496, 1503, 1511, 1525, 1538, 1542, 1548, 1551, 1557, 1560, 1566, 1570, 1574, 1580, 1585, 1588, 1590, 1596, 1600, 1604, 1607, 1611, 1616, 1623, 1630, 1634, 1639, 1648, 1655, 1660, 1666, 1671, 1676, 1681, 1685, 1688, 1690, 1696, 1728, 1736, 1757, 1760, 1771, 1776, 1781, 1790, 1803, 1808, 1813, 1817, 1822, 1827, 1834, 1863, 1873, 1904, 1918, 1925, 1938, 1945, 1953, 1958, 1963, 1969, 1977, 1984, 1988, 1992, 1995, 2014, 2019, 2028, 2031, 2036, 2043, 2051, 2065, 2101, 2116, 2123, 2131, 2138, 2142, 2145, 2151, 2154, 2161, 2165, 2168, 2173, 2180, 2187, 2203, 2208, 2216, 2222, 2227, 2233, 2238, 2244, 2249, 2254, 2259, 2264, 2269, 2274, 2279, 2284, 2289, 2294, 2299, 2304, 2309, 2314, 2319, 2324, 2329, 2334, 2339, 2344, 2349, 2354, 2359, 2364, 2369, 2374, 2379, 2384, 2389, 2394, 2399, 2404, 2409, 2414, 2419, 2424, 2429, 2434, 2439, 2444, 2449, 2454, 2459, 2464, 2469, 2474, 2479, 2484, 2489, 2494, 2499, 2504, 2509, 2514, 2519, 2524, 2529, 2534, 2539, 2544, 2549, 2554, 2559, 2564, 2569, 2571, 2578, 2583, 2590, 2596, 2599, 2602, 2608, 2611, 2617, 2621, 2627, 2630, 2633, 2638, 2643, 2652, 2654, 2662, 2665, 2669, 2673, 2676, 2688, 2710, 2723, 2728, 2738, 2748, 2753, 2761, 2768, 2772, 2776, 2787, 2794, 2808, 2815, 2819, 2823, 2831, 2835, 2839, 2849, 2851, 2855, 2858, 2863, 2866, 2869, 2873, 2881, 2885, 2892, 2897, 2907, 2910, 2914, 2918, 2925, 2932, 2938, 2952, 2959, 2974, 2978, 2985, 2990, 2994, 2997, 3000, 3004, 3010, 3028, 3033, 3041, 3060, 3064, 3071, 3074, 3142, 3149, 3154, 3184, 3207, 3218, 3225, 3242, 3245, 3254, 3264, 3276, 3288, 3299, 3302, 3315, 3323, 3329, 3335, 3343, 3350, 3358, 3365, 3372, 3384, 3387, 3399, 3423, 3431, 3439, 3459, 3463, 3465, 3473, 3478, 3481, 3487, 3490, 3496, 3499, 3501, 3511, 3610, 3620, 3628, 3638, 3642, 3644, 3652, 3655, 3660, 3665, 3671, 3675, 3679, 3685, 3691, 3696, 3701, 3706, 3711, 3719, 3730, 3735, 3741, 3745, 3754, 3756, 3758, 3766, 3802, 3805, 3808, 3816, 3823, 3834, 3843, 3849, 3857, 3866, 3874, 3880, 3884, 3893, 3905, 3911, 3913, 3926, 3930, 3942, 3947, 3949, 3964, 3969, 3978, 3987, 3990, 4001, 4024, 4029, 4034, 4043, 4070, 4077, 4092, 4111, 4116, 4127, 4132, 4138, 4142, 4150, 4153, 4169, 4177, 4180, 4187, 4195, 4200, 4203, 4206, 4216, 4219, 4226, 4229, 4237, 4255, 4261, 4264, 4269, 4274, 4284, 4303, 4311, 4323, 4330, 4334, 4348, 4352, 4356, 4361, 4366, 4371, 4378, 4381, 4386, 4416, 4424, 4429, 4434, 4438, 4443, 4447, 4453, 4455, 4462, 4464, 4473, 4478, 4483, 4487, 4492, 4496, 4502, 4504, 4511, 4513, 4515, 4520, 4526, 4532, 4538, 4542, 4548, 4550, 4562, 4571, 4576, 4582, 4584, 4591, 4593, 4604, 4613, 4618, 4622, 4626, 4632, 4634, 4646, 4651, 4664, 4670, 4674, 4681, 4688, 4690, 4701, 4709, 4714, 4722, 4731, 4734, 4746, 4752, 4781, 4783, 4790, 4792, 4799, 4801, 4808, 4810, 4817, 4819, 4826, 4828, 4835, 4837, 4844, 4846, 4853, 4855, 4863, 4865, 4872, 4874, 4881, 4883, 4891, 4893, 4901, 4903, 4911, 4913, 4941, 4948, 4964, 4969, 4980, 4982, 5015, 5017, 5025, 5027, 5035, 5037, 5045, 5047, 5055, 5057, 5066, 5076, 5082, 5087, 5089, 5092, 5101, 5103, 5112, 5114, 5122, 5124, 5136, 5138, 5146, 5148, 5157, 5159, 5161, 5169, 5175, 5177, 5182, 5184, 5194, 5204, 5212, 5220, 5269, 5299, 5308, 5357, 5361, 5369, 5372, 5377, 5382, 5388, 5390, 5394, 5398, 5402, 5405, 5412, 5415, 5419, 5426, 5431, 5436, 5439, 5442, 5445, 5448, 5451, 5455, 5458, 5461, 5465, 5468, 5470, 5474, 5484, 5487, 5492, 5497, 5499, 5503, 5510, 5515, 5518, 5524, 5527, 5529, 5532, 5538, 5541, 5546, 5549, 5551, 5563, 5567, 5571, 5576, 5579, 5598, 5603, 5610, 5617, 5623, 5625, 5643, 5654, 5669, 5671, 5679, 5682, 5685, 5688, 5691, 5707, 5711, 5716, 5724, 5732, 5739, 5782, 5787, 5796, 5801, 5804, 5809, 5814, 5830, 5841, 5846, 5850, 5854, 5870, 5889, 5897, 5901, 5915, 5920, 5928, 5934, 5943, 5951, 5955, 5980, 5990, 5994, 6017, 6021, 6028, 6039, 6048, 6054, 6061, 6069, 6075, 6082, 6090, 6093, 6108, 6117, 6124, 6129] \ No newline at end of file diff --git a/mdl/grammar/parser/MDLParser.tokens b/mdl/grammar/parser/MDLParser.tokens index 83ae116..2aa155b 100644 --- a/mdl/grammar/parser/MDLParser.tokens +++ b/mdl/grammar/parser/MDLParser.tokens @@ -178,366 +178,369 @@ INPUTREFERENCESETSELECTOR=177 FILEINPUT=178 IMAGEINPUT=179 CUSTOMWIDGET=180 -TEXTFILTER=181 -NUMBERFILTER=182 -DROPDOWNFILTER=183 -DATEFILTER=184 -FILTER=185 -WIDGET=186 -WIDGETS=187 -CAPTION=188 -ICON=189 -TOOLTIP=190 -DATASOURCE=191 -SOURCE_KW=192 -SELECTION=193 -FOOTER=194 -HEADER=195 -CONTENT=196 -RENDERMODE=197 -BINDS=198 -ATTR=199 -CONTENTPARAMS=200 -CAPTIONPARAMS=201 -PARAMS=202 -VARIABLES_KW=203 -DESKTOPWIDTH=204 -TABLETWIDTH=205 -PHONEWIDTH=206 -CLASS=207 -STYLE=208 -BUTTONSTYLE=209 -DESIGN=210 -PROPERTIES=211 -DESIGNPROPERTIES=212 -STYLING=213 -CLEAR=214 -WIDTH=215 -HEIGHT=216 -AUTOFILL=217 -URL=218 -FOLDER=219 -PASSING=220 -CONTEXT=221 -EDITABLE=222 -READONLY=223 -ATTRIBUTES=224 -FILTERTYPE=225 -IMAGE=226 -COLLECTION=227 -STATICIMAGE=228 -DYNAMICIMAGE=229 -CUSTOMCONTAINER=230 -GROUPBOX=231 -VISIBLE=232 -SAVECHANGES=233 -SAVE_CHANGES=234 -CANCEL_CHANGES=235 -CLOSE_PAGE=236 -SHOW_PAGE=237 -DELETE_ACTION=238 -DELETE_OBJECT=239 -CREATE_OBJECT=240 -CALL_MICROFLOW=241 -CALL_NANOFLOW=242 -OPEN_LINK=243 -SIGN_OUT=244 -CANCEL=245 -PRIMARY=246 -SUCCESS=247 -DANGER=248 -WARNING_STYLE=249 -INFO_STYLE=250 -TEMPLATE=251 -ONCLICK=252 -ONCHANGE=253 -TABINDEX=254 -H1=255 -H2=256 -H3=257 -H4=258 -H5=259 -H6=260 -PARAGRAPH=261 -STRING_TYPE=262 -INTEGER_TYPE=263 -LONG_TYPE=264 -DECIMAL_TYPE=265 -BOOLEAN_TYPE=266 -DATETIME_TYPE=267 -DATE_TYPE=268 -AUTONUMBER_TYPE=269 -BINARY_TYPE=270 -HASHEDSTRING_TYPE=271 -CURRENCY_TYPE=272 -FLOAT_TYPE=273 -STRINGTEMPLATE_TYPE=274 -ENUM_TYPE=275 -COUNT=276 -SUM=277 -AVG=278 -MIN=279 -MAX=280 -LENGTH=281 -TRIM=282 -COALESCE=283 -CAST=284 -AND=285 -OR=286 -NOT=287 -NULL=288 -IN=289 -BETWEEN=290 -LIKE=291 -MATCH=292 -EXISTS=293 -UNIQUE=294 -DEFAULT=295 -TRUE=296 -FALSE=297 -VALIDATION=298 -FEEDBACK=299 -RULE=300 -REQUIRED=301 -ERROR=302 -RAISE=303 -RANGE=304 -REGEX=305 -PATTERN=306 -EXPRESSION=307 -XPATH=308 -CONSTRAINT=309 -CALCULATED=310 -REST=311 -SERVICE=312 -SERVICES=313 -ODATA=314 -BASE=315 -AUTH=316 -AUTHENTICATION=317 -BASIC=318 -NOTHING=319 -OAUTH=320 -OPERATION=321 -METHOD=322 -PATH=323 -TIMEOUT=324 -BODY=325 -RESPONSE=326 -REQUEST=327 -SEND=328 -JSON=329 -XML=330 -STATUS=331 -FILE_KW=332 -VERSION=333 -GET=334 -POST=335 -PUT=336 -PATCH=337 -API=338 -CLIENT=339 -CLIENTS=340 -PUBLISH=341 -PUBLISHED=342 -EXPOSE=343 -CONTRACT=344 -NAMESPACE_KW=345 -SESSION=346 -GUEST=347 -PAGING=348 -NOT_SUPPORTED=349 -USERNAME=350 -PASSWORD=351 -CONNECTION=352 -DATABASE=353 -QUERY=354 -MAP=355 -MAPPING=356 -IMPORT=357 -INTO=358 -BATCH=359 -LINK=360 -EXPORT=361 -GENERATE=362 -CONNECTOR=363 -EXEC=364 -TABLES=365 -VIEWS=366 -EXPOSED=367 -PARAMETER=368 -PARAMETERS=369 -HEADERS=370 -NAVIGATION=371 -MENU_KW=372 -HOMES=373 -HOME=374 -LOGIN=375 -FOUND=376 -MODULES=377 -ENTITIES=378 -ASSOCIATIONS=379 -MICROFLOWS=380 -NANOFLOWS=381 -WORKFLOWS=382 -ENUMERATIONS=383 -CONSTANTS=384 -CONNECTIONS=385 -DEFINE=386 -FRAGMENT=387 -FRAGMENTS=388 -INSERT=389 -BEFORE=390 -AFTER=391 -UPDATE=392 -REFRESH=393 -CHECK=394 -BUILD=395 -EXECUTE=396 -SCRIPT=397 -LINT=398 -RULES=399 -TEXT=400 -SARIF=401 -MESSAGE=402 -MESSAGES=403 -CHANNELS=404 -COMMENT=405 -CATALOG=406 -FORCE=407 -BACKGROUND=408 -CALLERS=409 -CALLEES=410 -REFERENCES=411 -TRANSITIVE=412 -IMPACT=413 -DEPTH=414 -STRUCTURE=415 -TYPE=416 -VALUE=417 -VALUES=418 -SINGLE=419 -MULTIPLE=420 -NONE=421 -BOTH=422 -TO=423 -OF=424 -OVER=425 -FOR=426 -REPLACE=427 -MEMBERS=428 -ATTRIBUTE_NAME=429 -FORMAT=430 -SQL=431 -WITHOUT=432 -DRY=433 -RUN=434 -WIDGETTYPE=435 -V3=436 -BUSINESS=437 -EVENT=438 -SUBSCRIBE=439 -SETTINGS=440 -CONFIGURATION=441 -SECURITY=442 -ROLE=443 -ROLES=444 -GRANT=445 -REVOKE=446 -PRODUCTION=447 -PROTOTYPE=448 -MANAGE=449 -DEMO=450 -MATRIX=451 -APPLY=452 -ACCESS=453 -LEVEL=454 -USER=455 -TASK=456 -DECISION=457 -SPLIT=458 -OUTCOMES=459 -TARGETING=460 -NOTIFICATION=461 -TIMER=462 -JUMP=463 -DUE=464 -OVERVIEW=465 -DATE=466 -PARALLEL=467 -WAIT=468 -ANNOTATION=469 -BOUNDARY=470 -INTERRUPTING=471 -NON=472 -MULTI=473 -BY=474 -READ=475 -WRITE=476 -DESCRIPTION=477 -DISPLAY=478 -OFF=479 -USERS=480 -NOT_EQUALS=481 -LESS_THAN_OR_EQUAL=482 -GREATER_THAN_OR_EQUAL=483 -EQUALS=484 -LESS_THAN=485 -GREATER_THAN=486 -PLUS=487 -MINUS=488 -STAR=489 -SLASH=490 -PERCENT=491 -MOD=492 -DIV=493 -SEMICOLON=494 -COMMA=495 -DOT=496 -LPAREN=497 -RPAREN=498 -LBRACE=499 -RBRACE=500 -LBRACKET=501 -RBRACKET=502 -COLON=503 -AT=504 -PIPE=505 -DOUBLE_COLON=506 -ARROW=507 -QUESTION=508 -HASH=509 -MENDIX_TOKEN=510 -STRING_LITERAL=511 -DOLLAR_STRING=512 -NUMBER_LITERAL=513 -VARIABLE=514 -IDENTIFIER=515 -HYPHENATED_ID=516 -QUOTED_IDENTIFIER=517 -'<='=482 -'>='=483 -'='=484 -'<'=485 -'>'=486 -'+'=487 -'-'=488 -'*'=489 -'/'=490 -'%'=491 -';'=494 -','=495 -'.'=496 -'('=497 -')'=498 -'{'=499 -'}'=500 -'['=501 -']'=502 -':'=503 -'@'=504 -'|'=505 -'::'=506 -'->'=507 -'?'=508 -'#'=509 +PLUGGABLEWIDGET=181 +TEXTFILTER=182 +NUMBERFILTER=183 +DROPDOWNFILTER=184 +DATEFILTER=185 +FILTER=186 +WIDGET=187 +WIDGETS=188 +CAPTION=189 +ICON=190 +TOOLTIP=191 +DATASOURCE=192 +SOURCE_KW=193 +SELECTION=194 +FOOTER=195 +HEADER=196 +CONTENT=197 +RENDERMODE=198 +BINDS=199 +ATTR=200 +CONTENTPARAMS=201 +CAPTIONPARAMS=202 +PARAMS=203 +VARIABLES_KW=204 +DESKTOPWIDTH=205 +TABLETWIDTH=206 +PHONEWIDTH=207 +CLASS=208 +STYLE=209 +BUTTONSTYLE=210 +DESIGN=211 +PROPERTIES=212 +DESIGNPROPERTIES=213 +STYLING=214 +CLEAR=215 +WIDTH=216 +HEIGHT=217 +AUTOFILL=218 +URL=219 +FOLDER=220 +PASSING=221 +CONTEXT=222 +EDITABLE=223 +READONLY=224 +ATTRIBUTES=225 +FILTERTYPE=226 +IMAGE=227 +COLLECTION=228 +STATICIMAGE=229 +DYNAMICIMAGE=230 +CUSTOMCONTAINER=231 +TABCONTAINER=232 +TABPAGE=233 +GROUPBOX=234 +VISIBLE=235 +SAVECHANGES=236 +SAVE_CHANGES=237 +CANCEL_CHANGES=238 +CLOSE_PAGE=239 +SHOW_PAGE=240 +DELETE_ACTION=241 +DELETE_OBJECT=242 +CREATE_OBJECT=243 +CALL_MICROFLOW=244 +CALL_NANOFLOW=245 +OPEN_LINK=246 +SIGN_OUT=247 +CANCEL=248 +PRIMARY=249 +SUCCESS=250 +DANGER=251 +WARNING_STYLE=252 +INFO_STYLE=253 +TEMPLATE=254 +ONCLICK=255 +ONCHANGE=256 +TABINDEX=257 +H1=258 +H2=259 +H3=260 +H4=261 +H5=262 +H6=263 +PARAGRAPH=264 +STRING_TYPE=265 +INTEGER_TYPE=266 +LONG_TYPE=267 +DECIMAL_TYPE=268 +BOOLEAN_TYPE=269 +DATETIME_TYPE=270 +DATE_TYPE=271 +AUTONUMBER_TYPE=272 +BINARY_TYPE=273 +HASHEDSTRING_TYPE=274 +CURRENCY_TYPE=275 +FLOAT_TYPE=276 +STRINGTEMPLATE_TYPE=277 +ENUM_TYPE=278 +COUNT=279 +SUM=280 +AVG=281 +MIN=282 +MAX=283 +LENGTH=284 +TRIM=285 +COALESCE=286 +CAST=287 +AND=288 +OR=289 +NOT=290 +NULL=291 +IN=292 +BETWEEN=293 +LIKE=294 +MATCH=295 +EXISTS=296 +UNIQUE=297 +DEFAULT=298 +TRUE=299 +FALSE=300 +VALIDATION=301 +FEEDBACK=302 +RULE=303 +REQUIRED=304 +ERROR=305 +RAISE=306 +RANGE=307 +REGEX=308 +PATTERN=309 +EXPRESSION=310 +XPATH=311 +CONSTRAINT=312 +CALCULATED=313 +REST=314 +SERVICE=315 +SERVICES=316 +ODATA=317 +BASE=318 +AUTH=319 +AUTHENTICATION=320 +BASIC=321 +NOTHING=322 +OAUTH=323 +OPERATION=324 +METHOD=325 +PATH=326 +TIMEOUT=327 +BODY=328 +RESPONSE=329 +REQUEST=330 +SEND=331 +JSON=332 +XML=333 +STATUS=334 +FILE_KW=335 +VERSION=336 +GET=337 +POST=338 +PUT=339 +PATCH=340 +API=341 +CLIENT=342 +CLIENTS=343 +PUBLISH=344 +PUBLISHED=345 +EXPOSE=346 +CONTRACT=347 +NAMESPACE_KW=348 +SESSION=349 +GUEST=350 +PAGING=351 +NOT_SUPPORTED=352 +USERNAME=353 +PASSWORD=354 +CONNECTION=355 +DATABASE=356 +QUERY=357 +MAP=358 +MAPPING=359 +IMPORT=360 +INTO=361 +BATCH=362 +LINK=363 +EXPORT=364 +GENERATE=365 +CONNECTOR=366 +EXEC=367 +TABLES=368 +VIEWS=369 +EXPOSED=370 +PARAMETER=371 +PARAMETERS=372 +HEADERS=373 +NAVIGATION=374 +MENU_KW=375 +HOMES=376 +HOME=377 +LOGIN=378 +FOUND=379 +MODULES=380 +ENTITIES=381 +ASSOCIATIONS=382 +MICROFLOWS=383 +NANOFLOWS=384 +WORKFLOWS=385 +ENUMERATIONS=386 +CONSTANTS=387 +CONNECTIONS=388 +DEFINE=389 +FRAGMENT=390 +FRAGMENTS=391 +INSERT=392 +BEFORE=393 +AFTER=394 +UPDATE=395 +REFRESH=396 +CHECK=397 +BUILD=398 +EXECUTE=399 +SCRIPT=400 +LINT=401 +RULES=402 +TEXT=403 +SARIF=404 +MESSAGE=405 +MESSAGES=406 +CHANNELS=407 +COMMENT=408 +CATALOG=409 +FORCE=410 +BACKGROUND=411 +CALLERS=412 +CALLEES=413 +REFERENCES=414 +TRANSITIVE=415 +IMPACT=416 +DEPTH=417 +STRUCTURE=418 +TYPE=419 +VALUE=420 +VALUES=421 +SINGLE=422 +MULTIPLE=423 +NONE=424 +BOTH=425 +TO=426 +OF=427 +OVER=428 +FOR=429 +REPLACE=430 +MEMBERS=431 +ATTRIBUTE_NAME=432 +FORMAT=433 +SQL=434 +WITHOUT=435 +DRY=436 +RUN=437 +WIDGETTYPE=438 +V3=439 +BUSINESS=440 +EVENT=441 +SUBSCRIBE=442 +SETTINGS=443 +CONFIGURATION=444 +SECURITY=445 +ROLE=446 +ROLES=447 +GRANT=448 +REVOKE=449 +PRODUCTION=450 +PROTOTYPE=451 +MANAGE=452 +DEMO=453 +MATRIX=454 +APPLY=455 +ACCESS=456 +LEVEL=457 +USER=458 +TASK=459 +DECISION=460 +SPLIT=461 +OUTCOMES=462 +TARGETING=463 +NOTIFICATION=464 +TIMER=465 +JUMP=466 +DUE=467 +OVERVIEW=468 +DATE=469 +PARALLEL=470 +WAIT=471 +ANNOTATION=472 +BOUNDARY=473 +INTERRUPTING=474 +NON=475 +MULTI=476 +BY=477 +READ=478 +WRITE=479 +DESCRIPTION=480 +DISPLAY=481 +OFF=482 +USERS=483 +NOT_EQUALS=484 +LESS_THAN_OR_EQUAL=485 +GREATER_THAN_OR_EQUAL=486 +EQUALS=487 +LESS_THAN=488 +GREATER_THAN=489 +PLUS=490 +MINUS=491 +STAR=492 +SLASH=493 +PERCENT=494 +MOD=495 +DIV=496 +SEMICOLON=497 +COMMA=498 +DOT=499 +LPAREN=500 +RPAREN=501 +LBRACE=502 +RBRACE=503 +LBRACKET=504 +RBRACKET=505 +COLON=506 +AT=507 +PIPE=508 +DOUBLE_COLON=509 +ARROW=510 +QUESTION=511 +HASH=512 +MENDIX_TOKEN=513 +STRING_LITERAL=514 +DOLLAR_STRING=515 +NUMBER_LITERAL=516 +VARIABLE=517 +IDENTIFIER=518 +HYPHENATED_ID=519 +QUOTED_IDENTIFIER=520 +'<='=485 +'>='=486 +'='=487 +'<'=488 +'>'=489 +'+'=490 +'-'=491 +'*'=492 +'/'=493 +'%'=494 +';'=497 +','=498 +'.'=499 +'('=500 +')'=501 +'{'=502 +'}'=503 +'['=504 +']'=505 +':'=506 +'@'=507 +'|'=508 +'::'=509 +'->'=510 +'?'=511 +'#'=512 diff --git a/mdl/grammar/parser/mdl_lexer.go b/mdl/grammar/parser/mdl_lexer.go index 76e3739..3c9b164 100644 --- a/mdl/grammar/parser/mdl_lexer.go +++ b/mdl/grammar/parser/mdl_lexer.go @@ -71,10 +71,10 @@ func mdllexerLexerInit() { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "'<='", "'>='", "'='", "'<'", "'>'", "'+'", - "'-'", "'*'", "'/'", "'%'", "", "", "';'", "','", "'.'", "'('", "')'", - "'{'", "'}'", "'['", "']'", "':'", "'@'", "'|'", "'::'", "'->'", "'?'", - "'#'", + "", "", "", "", "", "", "", "", "", "'<='", "'>='", "'='", "'<'", "'>'", + "'+'", "'-'", "'*'", "'/'", "'%'", "", "", "';'", "','", "'.'", "'('", + "')'", "'{'", "'}'", "'['", "']'", "':'", "'@'", "'|'", "'::'", "'->'", + "'?'", "'#'", } staticData.SymbolicNames = []string{ "", "WS", "DOC_COMMENT", "BLOCK_COMMENT", "LINE_COMMENT", "IS_NOT_NULL", @@ -104,56 +104,57 @@ func mdllexerLexerInit() { "ACTIONBUTTON", "LINKBUTTON", "BUTTON", "TITLE", "DYNAMICTEXT", "DYNAMIC", "STATICTEXT", "LABEL", "TEXTBOX", "TEXTAREA", "DATEPICKER", "RADIOBUTTONS", "DROPDOWN", "COMBOBOX", "CHECKBOX", "REFERENCESELECTOR", "INPUTREFERENCESETSELECTOR", - "FILEINPUT", "IMAGEINPUT", "CUSTOMWIDGET", "TEXTFILTER", "NUMBERFILTER", - "DROPDOWNFILTER", "DATEFILTER", "FILTER", "WIDGET", "WIDGETS", "CAPTION", - "ICON", "TOOLTIP", "DATASOURCE", "SOURCE_KW", "SELECTION", "FOOTER", - "HEADER", "CONTENT", "RENDERMODE", "BINDS", "ATTR", "CONTENTPARAMS", - "CAPTIONPARAMS", "PARAMS", "VARIABLES_KW", "DESKTOPWIDTH", "TABLETWIDTH", - "PHONEWIDTH", "CLASS", "STYLE", "BUTTONSTYLE", "DESIGN", "PROPERTIES", - "DESIGNPROPERTIES", "STYLING", "CLEAR", "WIDTH", "HEIGHT", "AUTOFILL", - "URL", "FOLDER", "PASSING", "CONTEXT", "EDITABLE", "READONLY", "ATTRIBUTES", - "FILTERTYPE", "IMAGE", "COLLECTION", "STATICIMAGE", "DYNAMICIMAGE", - "CUSTOMCONTAINER", "GROUPBOX", "VISIBLE", "SAVECHANGES", "SAVE_CHANGES", - "CANCEL_CHANGES", "CLOSE_PAGE", "SHOW_PAGE", "DELETE_ACTION", "DELETE_OBJECT", - "CREATE_OBJECT", "CALL_MICROFLOW", "CALL_NANOFLOW", "OPEN_LINK", "SIGN_OUT", - "CANCEL", "PRIMARY", "SUCCESS", "DANGER", "WARNING_STYLE", "INFO_STYLE", - "TEMPLATE", "ONCLICK", "ONCHANGE", "TABINDEX", "H1", "H2", "H3", "H4", - "H5", "H6", "PARAGRAPH", "STRING_TYPE", "INTEGER_TYPE", "LONG_TYPE", - "DECIMAL_TYPE", "BOOLEAN_TYPE", "DATETIME_TYPE", "DATE_TYPE", "AUTONUMBER_TYPE", - "BINARY_TYPE", "HASHEDSTRING_TYPE", "CURRENCY_TYPE", "FLOAT_TYPE", "STRINGTEMPLATE_TYPE", - "ENUM_TYPE", "COUNT", "SUM", "AVG", "MIN", "MAX", "LENGTH", "TRIM", - "COALESCE", "CAST", "AND", "OR", "NOT", "NULL", "IN", "BETWEEN", "LIKE", - "MATCH", "EXISTS", "UNIQUE", "DEFAULT", "TRUE", "FALSE", "VALIDATION", - "FEEDBACK", "RULE", "REQUIRED", "ERROR", "RAISE", "RANGE", "REGEX", - "PATTERN", "EXPRESSION", "XPATH", "CONSTRAINT", "CALCULATED", "REST", - "SERVICE", "SERVICES", "ODATA", "BASE", "AUTH", "AUTHENTICATION", "BASIC", - "NOTHING", "OAUTH", "OPERATION", "METHOD", "PATH", "TIMEOUT", "BODY", - "RESPONSE", "REQUEST", "SEND", "JSON", "XML", "STATUS", "FILE_KW", "VERSION", - "GET", "POST", "PUT", "PATCH", "API", "CLIENT", "CLIENTS", "PUBLISH", - "PUBLISHED", "EXPOSE", "CONTRACT", "NAMESPACE_KW", "SESSION", "GUEST", - "PAGING", "NOT_SUPPORTED", "USERNAME", "PASSWORD", "CONNECTION", "DATABASE", - "QUERY", "MAP", "MAPPING", "IMPORT", "INTO", "BATCH", "LINK", "EXPORT", - "GENERATE", "CONNECTOR", "EXEC", "TABLES", "VIEWS", "EXPOSED", "PARAMETER", - "PARAMETERS", "HEADERS", "NAVIGATION", "MENU_KW", "HOMES", "HOME", "LOGIN", - "FOUND", "MODULES", "ENTITIES", "ASSOCIATIONS", "MICROFLOWS", "NANOFLOWS", - "WORKFLOWS", "ENUMERATIONS", "CONSTANTS", "CONNECTIONS", "DEFINE", "FRAGMENT", - "FRAGMENTS", "INSERT", "BEFORE", "AFTER", "UPDATE", "REFRESH", "CHECK", - "BUILD", "EXECUTE", "SCRIPT", "LINT", "RULES", "TEXT", "SARIF", "MESSAGE", - "MESSAGES", "CHANNELS", "COMMENT", "CATALOG", "FORCE", "BACKGROUND", - "CALLERS", "CALLEES", "REFERENCES", "TRANSITIVE", "IMPACT", "DEPTH", - "STRUCTURE", "TYPE", "VALUE", "VALUES", "SINGLE", "MULTIPLE", "NONE", - "BOTH", "TO", "OF", "OVER", "FOR", "REPLACE", "MEMBERS", "ATTRIBUTE_NAME", - "FORMAT", "SQL", "WITHOUT", "DRY", "RUN", "WIDGETTYPE", "V3", "BUSINESS", - "EVENT", "SUBSCRIBE", "SETTINGS", "CONFIGURATION", "SECURITY", "ROLE", - "ROLES", "GRANT", "REVOKE", "PRODUCTION", "PROTOTYPE", "MANAGE", "DEMO", - "MATRIX", "APPLY", "ACCESS", "LEVEL", "USER", "TASK", "DECISION", "SPLIT", - "OUTCOMES", "TARGETING", "NOTIFICATION", "TIMER", "JUMP", "DUE", "OVERVIEW", - "DATE", "PARALLEL", "WAIT", "ANNOTATION", "BOUNDARY", "INTERRUPTING", - "NON", "MULTI", "BY", "READ", "WRITE", "DESCRIPTION", "DISPLAY", "OFF", - "USERS", "NOT_EQUALS", "LESS_THAN_OR_EQUAL", "GREATER_THAN_OR_EQUAL", - "EQUALS", "LESS_THAN", "GREATER_THAN", "PLUS", "MINUS", "STAR", "SLASH", - "PERCENT", "MOD", "DIV", "SEMICOLON", "COMMA", "DOT", "LPAREN", "RPAREN", - "LBRACE", "RBRACE", "LBRACKET", "RBRACKET", "COLON", "AT", "PIPE", "DOUBLE_COLON", + "FILEINPUT", "IMAGEINPUT", "CUSTOMWIDGET", "PLUGGABLEWIDGET", "TEXTFILTER", + "NUMBERFILTER", "DROPDOWNFILTER", "DATEFILTER", "FILTER", "WIDGET", + "WIDGETS", "CAPTION", "ICON", "TOOLTIP", "DATASOURCE", "SOURCE_KW", + "SELECTION", "FOOTER", "HEADER", "CONTENT", "RENDERMODE", "BINDS", "ATTR", + "CONTENTPARAMS", "CAPTIONPARAMS", "PARAMS", "VARIABLES_KW", "DESKTOPWIDTH", + "TABLETWIDTH", "PHONEWIDTH", "CLASS", "STYLE", "BUTTONSTYLE", "DESIGN", + "PROPERTIES", "DESIGNPROPERTIES", "STYLING", "CLEAR", "WIDTH", "HEIGHT", + "AUTOFILL", "URL", "FOLDER", "PASSING", "CONTEXT", "EDITABLE", "READONLY", + "ATTRIBUTES", "FILTERTYPE", "IMAGE", "COLLECTION", "STATICIMAGE", "DYNAMICIMAGE", + "CUSTOMCONTAINER", "TABCONTAINER", "TABPAGE", "GROUPBOX", "VISIBLE", + "SAVECHANGES", "SAVE_CHANGES", "CANCEL_CHANGES", "CLOSE_PAGE", "SHOW_PAGE", + "DELETE_ACTION", "DELETE_OBJECT", "CREATE_OBJECT", "CALL_MICROFLOW", + "CALL_NANOFLOW", "OPEN_LINK", "SIGN_OUT", "CANCEL", "PRIMARY", "SUCCESS", + "DANGER", "WARNING_STYLE", "INFO_STYLE", "TEMPLATE", "ONCLICK", "ONCHANGE", + "TABINDEX", "H1", "H2", "H3", "H4", "H5", "H6", "PARAGRAPH", "STRING_TYPE", + "INTEGER_TYPE", "LONG_TYPE", "DECIMAL_TYPE", "BOOLEAN_TYPE", "DATETIME_TYPE", + "DATE_TYPE", "AUTONUMBER_TYPE", "BINARY_TYPE", "HASHEDSTRING_TYPE", + "CURRENCY_TYPE", "FLOAT_TYPE", "STRINGTEMPLATE_TYPE", "ENUM_TYPE", "COUNT", + "SUM", "AVG", "MIN", "MAX", "LENGTH", "TRIM", "COALESCE", "CAST", "AND", + "OR", "NOT", "NULL", "IN", "BETWEEN", "LIKE", "MATCH", "EXISTS", "UNIQUE", + "DEFAULT", "TRUE", "FALSE", "VALIDATION", "FEEDBACK", "RULE", "REQUIRED", + "ERROR", "RAISE", "RANGE", "REGEX", "PATTERN", "EXPRESSION", "XPATH", + "CONSTRAINT", "CALCULATED", "REST", "SERVICE", "SERVICES", "ODATA", + "BASE", "AUTH", "AUTHENTICATION", "BASIC", "NOTHING", "OAUTH", "OPERATION", + "METHOD", "PATH", "TIMEOUT", "BODY", "RESPONSE", "REQUEST", "SEND", + "JSON", "XML", "STATUS", "FILE_KW", "VERSION", "GET", "POST", "PUT", + "PATCH", "API", "CLIENT", "CLIENTS", "PUBLISH", "PUBLISHED", "EXPOSE", + "CONTRACT", "NAMESPACE_KW", "SESSION", "GUEST", "PAGING", "NOT_SUPPORTED", + "USERNAME", "PASSWORD", "CONNECTION", "DATABASE", "QUERY", "MAP", "MAPPING", + "IMPORT", "INTO", "BATCH", "LINK", "EXPORT", "GENERATE", "CONNECTOR", + "EXEC", "TABLES", "VIEWS", "EXPOSED", "PARAMETER", "PARAMETERS", "HEADERS", + "NAVIGATION", "MENU_KW", "HOMES", "HOME", "LOGIN", "FOUND", "MODULES", + "ENTITIES", "ASSOCIATIONS", "MICROFLOWS", "NANOFLOWS", "WORKFLOWS", + "ENUMERATIONS", "CONSTANTS", "CONNECTIONS", "DEFINE", "FRAGMENT", "FRAGMENTS", + "INSERT", "BEFORE", "AFTER", "UPDATE", "REFRESH", "CHECK", "BUILD", + "EXECUTE", "SCRIPT", "LINT", "RULES", "TEXT", "SARIF", "MESSAGE", "MESSAGES", + "CHANNELS", "COMMENT", "CATALOG", "FORCE", "BACKGROUND", "CALLERS", + "CALLEES", "REFERENCES", "TRANSITIVE", "IMPACT", "DEPTH", "STRUCTURE", + "TYPE", "VALUE", "VALUES", "SINGLE", "MULTIPLE", "NONE", "BOTH", "TO", + "OF", "OVER", "FOR", "REPLACE", "MEMBERS", "ATTRIBUTE_NAME", "FORMAT", + "SQL", "WITHOUT", "DRY", "RUN", "WIDGETTYPE", "V3", "BUSINESS", "EVENT", + "SUBSCRIBE", "SETTINGS", "CONFIGURATION", "SECURITY", "ROLE", "ROLES", + "GRANT", "REVOKE", "PRODUCTION", "PROTOTYPE", "MANAGE", "DEMO", "MATRIX", + "APPLY", "ACCESS", "LEVEL", "USER", "TASK", "DECISION", "SPLIT", "OUTCOMES", + "TARGETING", "NOTIFICATION", "TIMER", "JUMP", "DUE", "OVERVIEW", "DATE", + "PARALLEL", "WAIT", "ANNOTATION", "BOUNDARY", "INTERRUPTING", "NON", + "MULTI", "BY", "READ", "WRITE", "DESCRIPTION", "DISPLAY", "OFF", "USERS", + "NOT_EQUALS", "LESS_THAN_OR_EQUAL", "GREATER_THAN_OR_EQUAL", "EQUALS", + "LESS_THAN", "GREATER_THAN", "PLUS", "MINUS", "STAR", "SLASH", "PERCENT", + "MOD", "DIV", "SEMICOLON", "COMMA", "DOT", "LPAREN", "RPAREN", "LBRACE", + "RBRACE", "LBRACKET", "RBRACKET", "COLON", "AT", "PIPE", "DOUBLE_COLON", "ARROW", "QUESTION", "HASH", "MENDIX_TOKEN", "STRING_LITERAL", "DOLLAR_STRING", "NUMBER_LITERAL", "VARIABLE", "IDENTIFIER", "HYPHENATED_ID", "QUOTED_IDENTIFIER", } @@ -185,56 +186,57 @@ func mdllexerLexerInit() { "ACTIONBUTTON", "LINKBUTTON", "BUTTON", "TITLE", "DYNAMICTEXT", "DYNAMIC", "STATICTEXT", "LABEL", "TEXTBOX", "TEXTAREA", "DATEPICKER", "RADIOBUTTONS", "DROPDOWN", "COMBOBOX", "CHECKBOX", "REFERENCESELECTOR", "INPUTREFERENCESETSELECTOR", - "FILEINPUT", "IMAGEINPUT", "CUSTOMWIDGET", "TEXTFILTER", "NUMBERFILTER", - "DROPDOWNFILTER", "DATEFILTER", "FILTER", "WIDGET", "WIDGETS", "CAPTION", - "ICON", "TOOLTIP", "DATASOURCE", "SOURCE_KW", "SELECTION", "FOOTER", - "HEADER", "CONTENT", "RENDERMODE", "BINDS", "ATTR", "CONTENTPARAMS", - "CAPTIONPARAMS", "PARAMS", "VARIABLES_KW", "DESKTOPWIDTH", "TABLETWIDTH", - "PHONEWIDTH", "CLASS", "STYLE", "BUTTONSTYLE", "DESIGN", "PROPERTIES", - "DESIGNPROPERTIES", "STYLING", "CLEAR", "WIDTH", "HEIGHT", "AUTOFILL", - "URL", "FOLDER", "PASSING", "CONTEXT", "EDITABLE", "READONLY", "ATTRIBUTES", - "FILTERTYPE", "IMAGE", "COLLECTION", "STATICIMAGE", "DYNAMICIMAGE", - "CUSTOMCONTAINER", "GROUPBOX", "VISIBLE", "SAVECHANGES", "SAVE_CHANGES", - "CANCEL_CHANGES", "CLOSE_PAGE", "SHOW_PAGE", "DELETE_ACTION", "DELETE_OBJECT", - "CREATE_OBJECT", "CALL_MICROFLOW", "CALL_NANOFLOW", "OPEN_LINK", "SIGN_OUT", - "CANCEL", "PRIMARY", "SUCCESS", "DANGER", "WARNING_STYLE", "INFO_STYLE", - "TEMPLATE", "ONCLICK", "ONCHANGE", "TABINDEX", "H1", "H2", "H3", "H4", - "H5", "H6", "PARAGRAPH", "STRING_TYPE", "INTEGER_TYPE", "LONG_TYPE", - "DECIMAL_TYPE", "BOOLEAN_TYPE", "DATETIME_TYPE", "DATE_TYPE", "AUTONUMBER_TYPE", - "BINARY_TYPE", "HASHEDSTRING_TYPE", "CURRENCY_TYPE", "FLOAT_TYPE", "STRINGTEMPLATE_TYPE", - "ENUM_TYPE", "COUNT", "SUM", "AVG", "MIN", "MAX", "LENGTH", "TRIM", - "COALESCE", "CAST", "AND", "OR", "NOT", "NULL", "IN", "BETWEEN", "LIKE", - "MATCH", "EXISTS", "UNIQUE", "DEFAULT", "TRUE", "FALSE", "VALIDATION", - "FEEDBACK", "RULE", "REQUIRED", "ERROR", "RAISE", "RANGE", "REGEX", - "PATTERN", "EXPRESSION", "XPATH", "CONSTRAINT", "CALCULATED", "REST", - "SERVICE", "SERVICES", "ODATA", "BASE", "AUTH", "AUTHENTICATION", "BASIC", - "NOTHING", "OAUTH", "OPERATION", "METHOD", "PATH", "TIMEOUT", "BODY", - "RESPONSE", "REQUEST", "SEND", "JSON", "XML", "STATUS", "FILE_KW", "VERSION", - "GET", "POST", "PUT", "PATCH", "API", "CLIENT", "CLIENTS", "PUBLISH", - "PUBLISHED", "EXPOSE", "CONTRACT", "NAMESPACE_KW", "SESSION", "GUEST", - "PAGING", "NOT_SUPPORTED", "USERNAME", "PASSWORD", "CONNECTION", "DATABASE", - "QUERY", "MAP", "MAPPING", "IMPORT", "INTO", "BATCH", "LINK", "EXPORT", - "GENERATE", "CONNECTOR", "EXEC", "TABLES", "VIEWS", "EXPOSED", "PARAMETER", - "PARAMETERS", "HEADERS", "NAVIGATION", "MENU_KW", "HOMES", "HOME", "LOGIN", - "FOUND", "MODULES", "ENTITIES", "ASSOCIATIONS", "MICROFLOWS", "NANOFLOWS", - "WORKFLOWS", "ENUMERATIONS", "CONSTANTS", "CONNECTIONS", "DEFINE", "FRAGMENT", - "FRAGMENTS", "INSERT", "BEFORE", "AFTER", "UPDATE", "REFRESH", "CHECK", - "BUILD", "EXECUTE", "SCRIPT", "LINT", "RULES", "TEXT", "SARIF", "MESSAGE", - "MESSAGES", "CHANNELS", "COMMENT", "CATALOG", "FORCE", "BACKGROUND", - "CALLERS", "CALLEES", "REFERENCES", "TRANSITIVE", "IMPACT", "DEPTH", - "STRUCTURE", "TYPE", "VALUE", "VALUES", "SINGLE", "MULTIPLE", "NONE", - "BOTH", "TO", "OF", "OVER", "FOR", "REPLACE", "MEMBERS", "ATTRIBUTE_NAME", - "FORMAT", "SQL", "WITHOUT", "DRY", "RUN", "WIDGETTYPE", "V3", "BUSINESS", - "EVENT", "SUBSCRIBE", "SETTINGS", "CONFIGURATION", "SECURITY", "ROLE", - "ROLES", "GRANT", "REVOKE", "PRODUCTION", "PROTOTYPE", "MANAGE", "DEMO", - "MATRIX", "APPLY", "ACCESS", "LEVEL", "USER", "TASK", "DECISION", "SPLIT", - "OUTCOMES", "TARGETING", "NOTIFICATION", "TIMER", "JUMP", "DUE", "OVERVIEW", - "DATE", "PARALLEL", "WAIT", "ANNOTATION", "BOUNDARY", "INTERRUPTING", - "NON", "MULTI", "BY", "READ", "WRITE", "DESCRIPTION", "DISPLAY", "OFF", - "USERS", "NOT_EQUALS", "LESS_THAN_OR_EQUAL", "GREATER_THAN_OR_EQUAL", - "EQUALS", "LESS_THAN", "GREATER_THAN", "PLUS", "MINUS", "STAR", "SLASH", - "PERCENT", "MOD", "DIV", "SEMICOLON", "COMMA", "DOT", "LPAREN", "RPAREN", - "LBRACE", "RBRACE", "LBRACKET", "RBRACKET", "COLON", "AT", "PIPE", "DOUBLE_COLON", + "FILEINPUT", "IMAGEINPUT", "CUSTOMWIDGET", "PLUGGABLEWIDGET", "TEXTFILTER", + "NUMBERFILTER", "DROPDOWNFILTER", "DATEFILTER", "FILTER", "WIDGET", + "WIDGETS", "CAPTION", "ICON", "TOOLTIP", "DATASOURCE", "SOURCE_KW", + "SELECTION", "FOOTER", "HEADER", "CONTENT", "RENDERMODE", "BINDS", "ATTR", + "CONTENTPARAMS", "CAPTIONPARAMS", "PARAMS", "VARIABLES_KW", "DESKTOPWIDTH", + "TABLETWIDTH", "PHONEWIDTH", "CLASS", "STYLE", "BUTTONSTYLE", "DESIGN", + "PROPERTIES", "DESIGNPROPERTIES", "STYLING", "CLEAR", "WIDTH", "HEIGHT", + "AUTOFILL", "URL", "FOLDER", "PASSING", "CONTEXT", "EDITABLE", "READONLY", + "ATTRIBUTES", "FILTERTYPE", "IMAGE", "COLLECTION", "STATICIMAGE", "DYNAMICIMAGE", + "CUSTOMCONTAINER", "TABCONTAINER", "TABPAGE", "GROUPBOX", "VISIBLE", + "SAVECHANGES", "SAVE_CHANGES", "CANCEL_CHANGES", "CLOSE_PAGE", "SHOW_PAGE", + "DELETE_ACTION", "DELETE_OBJECT", "CREATE_OBJECT", "CALL_MICROFLOW", + "CALL_NANOFLOW", "OPEN_LINK", "SIGN_OUT", "CANCEL", "PRIMARY", "SUCCESS", + "DANGER", "WARNING_STYLE", "INFO_STYLE", "TEMPLATE", "ONCLICK", "ONCHANGE", + "TABINDEX", "H1", "H2", "H3", "H4", "H5", "H6", "PARAGRAPH", "STRING_TYPE", + "INTEGER_TYPE", "LONG_TYPE", "DECIMAL_TYPE", "BOOLEAN_TYPE", "DATETIME_TYPE", + "DATE_TYPE", "AUTONUMBER_TYPE", "BINARY_TYPE", "HASHEDSTRING_TYPE", + "CURRENCY_TYPE", "FLOAT_TYPE", "STRINGTEMPLATE_TYPE", "ENUM_TYPE", "COUNT", + "SUM", "AVG", "MIN", "MAX", "LENGTH", "TRIM", "COALESCE", "CAST", "AND", + "OR", "NOT", "NULL", "IN", "BETWEEN", "LIKE", "MATCH", "EXISTS", "UNIQUE", + "DEFAULT", "TRUE", "FALSE", "VALIDATION", "FEEDBACK", "RULE", "REQUIRED", + "ERROR", "RAISE", "RANGE", "REGEX", "PATTERN", "EXPRESSION", "XPATH", + "CONSTRAINT", "CALCULATED", "REST", "SERVICE", "SERVICES", "ODATA", + "BASE", "AUTH", "AUTHENTICATION", "BASIC", "NOTHING", "OAUTH", "OPERATION", + "METHOD", "PATH", "TIMEOUT", "BODY", "RESPONSE", "REQUEST", "SEND", + "JSON", "XML", "STATUS", "FILE_KW", "VERSION", "GET", "POST", "PUT", + "PATCH", "API", "CLIENT", "CLIENTS", "PUBLISH", "PUBLISHED", "EXPOSE", + "CONTRACT", "NAMESPACE_KW", "SESSION", "GUEST", "PAGING", "NOT_SUPPORTED", + "USERNAME", "PASSWORD", "CONNECTION", "DATABASE", "QUERY", "MAP", "MAPPING", + "IMPORT", "INTO", "BATCH", "LINK", "EXPORT", "GENERATE", "CONNECTOR", + "EXEC", "TABLES", "VIEWS", "EXPOSED", "PARAMETER", "PARAMETERS", "HEADERS", + "NAVIGATION", "MENU_KW", "HOMES", "HOME", "LOGIN", "FOUND", "MODULES", + "ENTITIES", "ASSOCIATIONS", "MICROFLOWS", "NANOFLOWS", "WORKFLOWS", + "ENUMERATIONS", "CONSTANTS", "CONNECTIONS", "DEFINE", "FRAGMENT", "FRAGMENTS", + "INSERT", "BEFORE", "AFTER", "UPDATE", "REFRESH", "CHECK", "BUILD", + "EXECUTE", "SCRIPT", "LINT", "RULES", "TEXT", "SARIF", "MESSAGE", "MESSAGES", + "CHANNELS", "COMMENT", "CATALOG", "FORCE", "BACKGROUND", "CALLERS", + "CALLEES", "REFERENCES", "TRANSITIVE", "IMPACT", "DEPTH", "STRUCTURE", + "TYPE", "VALUE", "VALUES", "SINGLE", "MULTIPLE", "NONE", "BOTH", "TO", + "OF", "OVER", "FOR", "REPLACE", "MEMBERS", "ATTRIBUTE_NAME", "FORMAT", + "SQL", "WITHOUT", "DRY", "RUN", "WIDGETTYPE", "V3", "BUSINESS", "EVENT", + "SUBSCRIBE", "SETTINGS", "CONFIGURATION", "SECURITY", "ROLE", "ROLES", + "GRANT", "REVOKE", "PRODUCTION", "PROTOTYPE", "MANAGE", "DEMO", "MATRIX", + "APPLY", "ACCESS", "LEVEL", "USER", "TASK", "DECISION", "SPLIT", "OUTCOMES", + "TARGETING", "NOTIFICATION", "TIMER", "JUMP", "DUE", "OVERVIEW", "DATE", + "PARALLEL", "WAIT", "ANNOTATION", "BOUNDARY", "INTERRUPTING", "NON", + "MULTI", "BY", "READ", "WRITE", "DESCRIPTION", "DISPLAY", "OFF", "USERS", + "NOT_EQUALS", "LESS_THAN_OR_EQUAL", "GREATER_THAN_OR_EQUAL", "EQUALS", + "LESS_THAN", "GREATER_THAN", "PLUS", "MINUS", "STAR", "SLASH", "PERCENT", + "MOD", "DIV", "SEMICOLON", "COMMA", "DOT", "LPAREN", "RPAREN", "LBRACE", + "RBRACE", "LBRACKET", "RBRACKET", "COLON", "AT", "PIPE", "DOUBLE_COLON", "ARROW", "QUESTION", "HASH", "MENDIX_TOKEN", "STRING_LITERAL", "DOLLAR_STRING", "NUMBER_LITERAL", "VARIABLE", "IDENTIFIER", "HYPHENATED_ID", "QUOTED_IDENTIFIER", "ID_START", "ID_BODY", "DIGIT", "A", "B", "C", "D", "E", "F", "G", "H", @@ -243,7 +245,7 @@ func mdllexerLexerInit() { } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 0, 517, 5361, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, + 4, 0, 520, 5404, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, @@ -361,2522 +363,2544 @@ func mdllexerLexerInit() { 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, - 2, 545, 7, 545, 1, 0, 4, 0, 1095, 8, 0, 11, 0, 12, 0, 1096, 1, 0, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1106, 8, 1, 10, 1, 12, 1, 1109, 9, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1118, 8, 2, 10, 2, 12, - 2, 1121, 9, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, - 3, 1132, 8, 3, 10, 3, 12, 3, 1135, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, - 4, 4, 1142, 8, 4, 11, 4, 12, 4, 1143, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 1150, - 8, 4, 11, 4, 12, 4, 1151, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, - 5, 4, 5, 1162, 8, 5, 11, 5, 12, 5, 1163, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, - 1, 6, 1, 6, 1, 6, 1, 6, 4, 6, 1175, 8, 6, 11, 6, 12, 6, 1176, 1, 6, 1, - 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 4, 7, 1190, 8, - 7, 11, 7, 12, 7, 1191, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, - 1, 8, 4, 8, 1203, 8, 8, 11, 8, 12, 8, 1204, 1, 8, 1, 8, 1, 8, 1, 9, 1, - 9, 1, 9, 1, 9, 1, 9, 4, 9, 1215, 8, 9, 11, 9, 12, 9, 1216, 1, 9, 1, 9, - 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, - 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, - 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1247, 8, 11, 1, 11, 1, 11, 1, - 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 4, 12, 1258, 8, 12, 11, 12, - 12, 12, 1259, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, - 13, 1, 13, 4, 13, 1272, 8, 13, 11, 13, 12, 13, 1273, 1, 13, 1, 13, 1, 13, - 1, 13, 4, 13, 1280, 8, 13, 11, 13, 12, 13, 1281, 1, 13, 1, 13, 1, 13, 1, - 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, + 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 1, 0, 4, + 0, 1101, 8, 0, 11, 0, 12, 0, 1102, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 5, 1, 1112, 8, 1, 10, 1, 12, 1, 1115, 9, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 2, 1, 2, 1, 2, 5, 2, 1124, 8, 2, 10, 2, 12, 2, 1127, 9, 2, 1, 2, + 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 1138, 8, 3, 10, 3, + 12, 3, 1141, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 4, 4, 1148, 8, 4, 11, + 4, 12, 4, 1149, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 1156, 8, 4, 11, 4, 12, 4, + 1157, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 4, 5, 1168, 8, 5, + 11, 5, 12, 5, 1169, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, + 6, 4, 6, 1181, 8, 6, 11, 6, 12, 6, 1182, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, + 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 4, 7, 1196, 8, 7, 11, 7, 12, 7, 1197, + 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 4, 8, 1209, 8, 8, + 11, 8, 12, 8, 1210, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 4, + 9, 1221, 8, 9, 11, 9, 12, 9, 1222, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, + 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, + 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, + 1, 11, 3, 11, 1253, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, + 12, 1, 12, 1, 12, 4, 12, 1264, 8, 12, 11, 12, 12, 12, 1265, 1, 12, 1, 12, + 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 4, 13, 1278, 8, + 13, 11, 13, 12, 13, 1279, 1, 13, 1, 13, 1, 13, 1, 13, 4, 13, 1286, 8, 13, + 11, 13, 12, 13, 1287, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, - 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1337, 8, 13, - 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 1346, 8, 14, 11, - 14, 12, 14, 1347, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 1354, 8, 14, 11, 14, - 12, 14, 1355, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 1363, 8, 14, 11, - 14, 12, 14, 1364, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, + 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, + 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1343, 8, 13, 1, 14, 1, 14, 1, 14, 1, + 14, 1, 14, 1, 14, 1, 14, 4, 14, 1352, 8, 14, 11, 14, 12, 14, 1353, 1, 14, + 1, 14, 1, 14, 1, 14, 4, 14, 1360, 8, 14, 11, 14, 12, 14, 1361, 1, 14, 1, + 14, 1, 14, 1, 14, 1, 14, 4, 14, 1369, 8, 14, 11, 14, 12, 14, 1370, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, - 14, 1, 14, 3, 14, 1429, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, - 1, 15, 4, 15, 1438, 8, 15, 11, 15, 12, 15, 1439, 1, 15, 1, 15, 1, 15, 4, - 15, 1445, 8, 15, 11, 15, 12, 15, 1446, 1, 15, 1, 15, 1, 15, 4, 15, 1452, - 8, 15, 11, 15, 12, 15, 1453, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, + 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1435, + 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 4, 15, 1444, 8, + 15, 11, 15, 12, 15, 1445, 1, 15, 1, 15, 1, 15, 4, 15, 1451, 8, 15, 11, + 15, 12, 15, 1452, 1, 15, 1, 15, 1, 15, 4, 15, 1458, 8, 15, 11, 15, 12, + 15, 1459, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, - 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1512, 8, - 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, - 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, - 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, - 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, - 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, - 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, - 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, - 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, - 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, - 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, - 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, - 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, - 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, - 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, - 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, - 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, - 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, - 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, - 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, - 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, - 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, + 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1518, 8, 15, 1, 16, 1, 16, 1, + 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, + 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, + 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, + 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, + 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, + 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, + 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, + 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, + 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, + 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, + 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, + 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, + 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, + 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, + 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, + 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, + 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, + 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, + 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, + 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, + 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, - 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, - 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, - 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, - 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, - 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, - 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, - 52, 3, 52, 1808, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, - 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, - 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, - 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, - 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, - 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, - 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, - 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, - 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, - 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, - 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, - 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, - 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, - 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, - 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, - 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, - 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, - 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, - 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, - 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, - 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, - 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, - 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, - 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, - 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, - 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, - 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, - 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, - 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, - 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, - 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, - 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, - 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, - 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, - 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, - 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, - 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, - 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, - 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, - 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, - 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, - 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, - 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, - 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, - 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, - 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, - 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, - 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, - 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, - 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, - 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, - 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, - 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, - 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, - 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, - 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, - 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, - 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, - 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, - 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, - 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, - 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, - 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, - 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, - 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, - 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, - 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, - 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, - 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, - 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, - 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, - 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, - 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, - 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, - 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, - 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, - 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, - 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, - 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, - 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, - 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, - 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, - 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, - 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, - 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, - 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, - 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, - 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, - 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, - 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, - 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, - 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, - 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, - 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, - 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, - 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, - 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, - 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, - 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, - 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, - 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, - 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, - 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, - 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, - 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, - 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, - 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, - 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, - 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, - 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, - 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, - 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, - 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, - 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, - 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, - 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, - 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, - 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, - 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, - 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, - 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, - 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, - 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, - 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, - 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, - 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, - 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, - 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, - 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, - 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, - 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, - 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, - 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, - 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, - 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, - 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, - 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, - 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, - 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, - 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, - 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, - 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, - 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, - 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, - 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, - 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, - 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, - 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, - 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, - 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, - 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, - 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, - 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, - 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, - 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, - 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, - 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, - 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, - 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, - 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, - 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, - 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, - 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, - 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, - 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, - 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, - 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, - 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, - 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, - 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, - 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, - 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, - 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, - 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, - 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, - 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, - 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, - 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, - 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, - 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, - 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, - 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, - 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, - 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, - 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, - 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, - 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, - 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, - 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, - 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, - 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, - 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, - 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, - 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, - 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, - 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, - 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, - 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, - 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, - 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, - 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, - 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, - 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, - 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, - 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, - 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, - 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, - 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, - 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, - 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, - 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, - 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, - 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, - 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, - 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, - 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, - 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, - 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, - 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, - 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, - 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, - 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, - 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, - 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, - 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, - 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, - 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, - 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, - 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, - 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, - 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, - 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, - 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, - 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, - 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, - 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, - 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, - 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, - 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, - 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, - 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, - 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, - 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, - 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, - 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, - 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, - 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, - 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, - 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, - 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, - 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, - 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, - 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, - 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, - 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, - 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, - 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, - 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, - 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, - 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, - 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, - 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, - 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, - 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, - 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, - 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, - 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, - 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, - 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, - 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, - 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, - 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, - 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, - 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, - 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, - 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, - 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, - 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, - 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, - 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, - 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, - 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, - 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, - 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, - 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, - 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, - 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, - 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, - 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, - 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, - 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, - 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, - 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, - 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, - 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, - 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, - 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, - 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, - 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, - 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, - 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, - 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, - 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, - 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, - 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, - 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, - 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, - 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, - 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, - 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, - 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, - 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, - 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, - 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, - 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, - 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, - 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, - 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, - 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, - 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, - 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, - 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, - 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, - 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, - 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, - 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, - 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, - 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, - 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, - 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, - 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, - 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, - 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, - 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, - 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, - 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, - 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, - 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, - 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, - 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, - 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, - 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, - 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, - 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, - 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, - 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, - 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, - 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, - 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, - 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, - 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, - 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, - 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, - 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, - 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, - 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, - 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, - 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, - 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, - 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, - 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, - 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, - 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, - 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 3, 480, 5125, 8, - 480, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, - 484, 1, 484, 1, 485, 1, 485, 1, 486, 1, 486, 1, 487, 1, 487, 1, 488, 1, - 488, 1, 489, 1, 489, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, - 492, 1, 492, 1, 492, 1, 492, 1, 493, 1, 493, 1, 494, 1, 494, 1, 495, 1, - 495, 1, 496, 1, 496, 1, 497, 1, 497, 1, 498, 1, 498, 1, 499, 1, 499, 1, - 500, 1, 500, 1, 501, 1, 501, 1, 502, 1, 502, 1, 503, 1, 503, 1, 504, 1, - 504, 1, 505, 1, 505, 1, 505, 1, 506, 1, 506, 1, 506, 1, 507, 1, 507, 1, - 508, 1, 508, 1, 509, 1, 509, 1, 509, 1, 509, 5, 509, 5195, 8, 509, 10, - 509, 12, 509, 5198, 9, 509, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, - 510, 1, 510, 1, 510, 1, 510, 5, 510, 5209, 8, 510, 10, 510, 12, 510, 5212, - 9, 510, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 5, 511, 5220, 8, - 511, 10, 511, 12, 511, 5223, 9, 511, 1, 511, 1, 511, 1, 511, 1, 512, 3, - 512, 5229, 8, 512, 1, 512, 4, 512, 5232, 8, 512, 11, 512, 12, 512, 5233, - 1, 512, 1, 512, 4, 512, 5238, 8, 512, 11, 512, 12, 512, 5239, 3, 512, 5242, - 8, 512, 1, 512, 1, 512, 3, 512, 5246, 8, 512, 1, 512, 4, 512, 5249, 8, - 512, 11, 512, 12, 512, 5250, 3, 512, 5253, 8, 512, 1, 513, 1, 513, 4, 513, - 5257, 8, 513, 11, 513, 12, 513, 5258, 1, 514, 1, 514, 5, 514, 5263, 8, - 514, 10, 514, 12, 514, 5266, 9, 514, 1, 515, 1, 515, 5, 515, 5270, 8, 515, - 10, 515, 12, 515, 5273, 9, 515, 1, 515, 4, 515, 5276, 8, 515, 11, 515, - 12, 515, 5277, 1, 515, 5, 515, 5281, 8, 515, 10, 515, 12, 515, 5284, 9, - 515, 1, 516, 1, 516, 5, 516, 5288, 8, 516, 10, 516, 12, 516, 5291, 9, 516, - 1, 516, 1, 516, 1, 516, 5, 516, 5296, 8, 516, 10, 516, 12, 516, 5299, 9, - 516, 1, 516, 3, 516, 5302, 8, 516, 1, 517, 1, 517, 1, 518, 1, 518, 1, 519, - 1, 519, 1, 520, 1, 520, 1, 521, 1, 521, 1, 522, 1, 522, 1, 523, 1, 523, - 1, 524, 1, 524, 1, 525, 1, 525, 1, 526, 1, 526, 1, 527, 1, 527, 1, 528, - 1, 528, 1, 529, 1, 529, 1, 530, 1, 530, 1, 531, 1, 531, 1, 532, 1, 532, - 1, 533, 1, 533, 1, 534, 1, 534, 1, 535, 1, 535, 1, 536, 1, 536, 1, 537, - 1, 537, 1, 538, 1, 538, 1, 539, 1, 539, 1, 540, 1, 540, 1, 541, 1, 541, - 1, 542, 1, 542, 1, 543, 1, 543, 1, 544, 1, 544, 1, 545, 1, 545, 4, 1107, - 1119, 5196, 5221, 0, 546, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, - 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, - 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, - 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, - 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, - 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, - 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, - 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, - 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, - 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, - 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, - 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, - 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, - 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, - 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, - 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, - 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, - 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, - 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, - 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, - 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, - 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, - 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, - 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, - 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, - 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, - 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, - 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, - 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, - 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, - 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, - 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, - 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, - 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, - 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 273, - 547, 274, 549, 275, 551, 276, 553, 277, 555, 278, 557, 279, 559, 280, 561, - 281, 563, 282, 565, 283, 567, 284, 569, 285, 571, 286, 573, 287, 575, 288, - 577, 289, 579, 290, 581, 291, 583, 292, 585, 293, 587, 294, 589, 295, 591, - 296, 593, 297, 595, 298, 597, 299, 599, 300, 601, 301, 603, 302, 605, 303, - 607, 304, 609, 305, 611, 306, 613, 307, 615, 308, 617, 309, 619, 310, 621, - 311, 623, 312, 625, 313, 627, 314, 629, 315, 631, 316, 633, 317, 635, 318, - 637, 319, 639, 320, 641, 321, 643, 322, 645, 323, 647, 324, 649, 325, 651, - 326, 653, 327, 655, 328, 657, 329, 659, 330, 661, 331, 663, 332, 665, 333, - 667, 334, 669, 335, 671, 336, 673, 337, 675, 338, 677, 339, 679, 340, 681, - 341, 683, 342, 685, 343, 687, 344, 689, 345, 691, 346, 693, 347, 695, 348, - 697, 349, 699, 350, 701, 351, 703, 352, 705, 353, 707, 354, 709, 355, 711, - 356, 713, 357, 715, 358, 717, 359, 719, 360, 721, 361, 723, 362, 725, 363, - 727, 364, 729, 365, 731, 366, 733, 367, 735, 368, 737, 369, 739, 370, 741, - 371, 743, 372, 745, 373, 747, 374, 749, 375, 751, 376, 753, 377, 755, 378, - 757, 379, 759, 380, 761, 381, 763, 382, 765, 383, 767, 384, 769, 385, 771, - 386, 773, 387, 775, 388, 777, 389, 779, 390, 781, 391, 783, 392, 785, 393, - 787, 394, 789, 395, 791, 396, 793, 397, 795, 398, 797, 399, 799, 400, 801, - 401, 803, 402, 805, 403, 807, 404, 809, 405, 811, 406, 813, 407, 815, 408, - 817, 409, 819, 410, 821, 411, 823, 412, 825, 413, 827, 414, 829, 415, 831, - 416, 833, 417, 835, 418, 837, 419, 839, 420, 841, 421, 843, 422, 845, 423, - 847, 424, 849, 425, 851, 426, 853, 427, 855, 428, 857, 429, 859, 430, 861, - 431, 863, 432, 865, 433, 867, 434, 869, 435, 871, 436, 873, 437, 875, 438, - 877, 439, 879, 440, 881, 441, 883, 442, 885, 443, 887, 444, 889, 445, 891, - 446, 893, 447, 895, 448, 897, 449, 899, 450, 901, 451, 903, 452, 905, 453, - 907, 454, 909, 455, 911, 456, 913, 457, 915, 458, 917, 459, 919, 460, 921, - 461, 923, 462, 925, 463, 927, 464, 929, 465, 931, 466, 933, 467, 935, 468, - 937, 469, 939, 470, 941, 471, 943, 472, 945, 473, 947, 474, 949, 475, 951, - 476, 953, 477, 955, 478, 957, 479, 959, 480, 961, 481, 963, 482, 965, 483, - 967, 484, 969, 485, 971, 486, 973, 487, 975, 488, 977, 489, 979, 490, 981, - 491, 983, 492, 985, 493, 987, 494, 989, 495, 991, 496, 993, 497, 995, 498, - 997, 499, 999, 500, 1001, 501, 1003, 502, 1005, 503, 1007, 504, 1009, 505, - 1011, 506, 1013, 507, 1015, 508, 1017, 509, 1019, 510, 1021, 511, 1023, - 512, 1025, 513, 1027, 514, 1029, 515, 1031, 516, 1033, 517, 1035, 0, 1037, - 0, 1039, 0, 1041, 0, 1043, 0, 1045, 0, 1047, 0, 1049, 0, 1051, 0, 1053, - 0, 1055, 0, 1057, 0, 1059, 0, 1061, 0, 1063, 0, 1065, 0, 1067, 0, 1069, - 0, 1071, 0, 1073, 0, 1075, 0, 1077, 0, 1079, 0, 1081, 0, 1083, 0, 1085, - 0, 1087, 0, 1089, 0, 1091, 0, 1, 0, 35, 2, 0, 9, 13, 32, 32, 2, 0, 10, - 10, 13, 13, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 2, 0, 69, 69, 101, 101, - 2, 0, 43, 43, 45, 45, 3, 0, 10, 10, 13, 13, 34, 34, 3, 0, 10, 10, 13, 13, - 96, 96, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, - 122, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, - 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, - 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, - 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, - 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, - 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, - 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, - 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, - 121, 121, 2, 0, 90, 90, 122, 122, 5380, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, - 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, - 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, - 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, - 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, - 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, - 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, - 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, - 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, - 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, - 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, - 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, - 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, - 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, - 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, - 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, - 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, - 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, - 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, - 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, - 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, - 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, - 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, - 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, - 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, - 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, - 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, - 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, - 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, - 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, - 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, - 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, - 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, - 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, - 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, - 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, - 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, - 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, - 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, - 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, - 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, - 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, - 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, - 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, - 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, - 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, - 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, - 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, - 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, - 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, - 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, - 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, - 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, - 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, - 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, - 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, - 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, - 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, - 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, - 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, - 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, - 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, - 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, - 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, - 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, - 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, - 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, - 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, - 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, - 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, - 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, - 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, - 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, - 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, - 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, - 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, - 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, - 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, - 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, - 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, - 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, - 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, - 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, - 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, - 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, - 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, - 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, - 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, - 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, - 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, - 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, - 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, - 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, - 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, - 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, - 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, - 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, - 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, - 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, - 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, - 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, - 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, - 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, - 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, - 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, - 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, - 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, - 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, - 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, - 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, - 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, - 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, - 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, - 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, - 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, - 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, - 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, - 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, - 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, - 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, - 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, - 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, - 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, - 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, - 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, - 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, - 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, - 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, - 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, - 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, - 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, - 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, - 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, - 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, - 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, - 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, - 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, - 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, - 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, - 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, - 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, - 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, - 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, - 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 1, 1094, 1, 0, 0, 0, 3, 1100, 1, 0, 0, - 0, 5, 1113, 1, 0, 0, 0, 7, 1127, 1, 0, 0, 0, 9, 1138, 1, 0, 0, 0, 11, 1158, - 1, 0, 0, 0, 13, 1170, 1, 0, 0, 0, 15, 1183, 1, 0, 0, 0, 17, 1196, 1, 0, - 0, 0, 19, 1209, 1, 0, 0, 0, 21, 1221, 1, 0, 0, 0, 23, 1236, 1, 0, 0, 0, - 25, 1252, 1, 0, 0, 0, 27, 1336, 1, 0, 0, 0, 29, 1428, 1, 0, 0, 0, 31, 1511, - 1, 0, 0, 0, 33, 1513, 1, 0, 0, 0, 35, 1520, 1, 0, 0, 0, 37, 1526, 1, 0, - 0, 0, 39, 1531, 1, 0, 0, 0, 41, 1538, 1, 0, 0, 0, 43, 1543, 1, 0, 0, 0, - 45, 1550, 1, 0, 0, 0, 47, 1557, 1, 0, 0, 0, 49, 1568, 1, 0, 0, 0, 51, 1573, - 1, 0, 0, 0, 53, 1582, 1, 0, 0, 0, 55, 1594, 1, 0, 0, 0, 57, 1606, 1, 0, - 0, 0, 59, 1613, 1, 0, 0, 0, 61, 1623, 1, 0, 0, 0, 63, 1632, 1, 0, 0, 0, - 65, 1641, 1, 0, 0, 0, 67, 1646, 1, 0, 0, 0, 69, 1654, 1, 0, 0, 0, 71, 1661, - 1, 0, 0, 0, 73, 1670, 1, 0, 0, 0, 75, 1679, 1, 0, 0, 0, 77, 1689, 1, 0, - 0, 0, 79, 1696, 1, 0, 0, 0, 81, 1704, 1, 0, 0, 0, 83, 1710, 1, 0, 0, 0, - 85, 1716, 1, 0, 0, 0, 87, 1722, 1, 0, 0, 0, 89, 1732, 1, 0, 0, 0, 91, 1747, - 1, 0, 0, 0, 93, 1755, 1, 0, 0, 0, 95, 1759, 1, 0, 0, 0, 97, 1763, 1, 0, - 0, 0, 99, 1772, 1, 0, 0, 0, 101, 1786, 1, 0, 0, 0, 103, 1794, 1, 0, 0, - 0, 105, 1800, 1, 0, 0, 0, 107, 1818, 1, 0, 0, 0, 109, 1826, 1, 0, 0, 0, - 111, 1834, 1, 0, 0, 0, 113, 1842, 1, 0, 0, 0, 115, 1853, 1, 0, 0, 0, 117, - 1859, 1, 0, 0, 0, 119, 1867, 1, 0, 0, 0, 121, 1875, 1, 0, 0, 0, 123, 1882, - 1, 0, 0, 0, 125, 1888, 1, 0, 0, 0, 127, 1893, 1, 0, 0, 0, 129, 1898, 1, - 0, 0, 0, 131, 1903, 1, 0, 0, 0, 133, 1912, 1, 0, 0, 0, 135, 1916, 1, 0, - 0, 0, 137, 1927, 1, 0, 0, 0, 139, 1933, 1, 0, 0, 0, 141, 1940, 1, 0, 0, - 0, 143, 1945, 1, 0, 0, 0, 145, 1951, 1, 0, 0, 0, 147, 1958, 1, 0, 0, 0, - 149, 1965, 1, 0, 0, 0, 151, 1971, 1, 0, 0, 0, 153, 1974, 1, 0, 0, 0, 155, - 1982, 1, 0, 0, 0, 157, 1992, 1, 0, 0, 0, 159, 1997, 1, 0, 0, 0, 161, 2002, - 1, 0, 0, 0, 163, 2007, 1, 0, 0, 0, 165, 2012, 1, 0, 0, 0, 167, 2016, 1, - 0, 0, 0, 169, 2025, 1, 0, 0, 0, 171, 2029, 1, 0, 0, 0, 173, 2034, 1, 0, - 0, 0, 175, 2039, 1, 0, 0, 0, 177, 2045, 1, 0, 0, 0, 179, 2051, 1, 0, 0, - 0, 181, 2057, 1, 0, 0, 0, 183, 2062, 1, 0, 0, 0, 185, 2068, 1, 0, 0, 0, - 187, 2071, 1, 0, 0, 0, 189, 2075, 1, 0, 0, 0, 191, 2080, 1, 0, 0, 0, 193, - 2086, 1, 0, 0, 0, 195, 2094, 1, 0, 0, 0, 197, 2101, 1, 0, 0, 0, 199, 2110, - 1, 0, 0, 0, 201, 2117, 1, 0, 0, 0, 203, 2124, 1, 0, 0, 0, 205, 2133, 1, - 0, 0, 0, 207, 2138, 1, 0, 0, 0, 209, 2144, 1, 0, 0, 0, 211, 2147, 1, 0, - 0, 0, 213, 2153, 1, 0, 0, 0, 215, 2160, 1, 0, 0, 0, 217, 2169, 1, 0, 0, - 0, 219, 2175, 1, 0, 0, 0, 221, 2182, 1, 0, 0, 0, 223, 2188, 1, 0, 0, 0, - 225, 2192, 1, 0, 0, 0, 227, 2197, 1, 0, 0, 0, 229, 2202, 1, 0, 0, 0, 231, - 2213, 1, 0, 0, 0, 233, 2220, 1, 0, 0, 0, 235, 2228, 1, 0, 0, 0, 237, 2234, - 1, 0, 0, 0, 239, 2239, 1, 0, 0, 0, 241, 2246, 1, 0, 0, 0, 243, 2251, 1, - 0, 0, 0, 245, 2256, 1, 0, 0, 0, 247, 2261, 1, 0, 0, 0, 249, 2266, 1, 0, - 0, 0, 251, 2272, 1, 0, 0, 0, 253, 2282, 1, 0, 0, 0, 255, 2291, 1, 0, 0, - 0, 257, 2300, 1, 0, 0, 0, 259, 2308, 1, 0, 0, 0, 261, 2316, 1, 0, 0, 0, - 263, 2324, 1, 0, 0, 0, 265, 2329, 1, 0, 0, 0, 267, 2336, 1, 0, 0, 0, 269, - 2343, 1, 0, 0, 0, 271, 2348, 1, 0, 0, 0, 273, 2356, 1, 0, 0, 0, 275, 2362, - 1, 0, 0, 0, 277, 2371, 1, 0, 0, 0, 279, 2376, 1, 0, 0, 0, 281, 2382, 1, - 0, 0, 0, 283, 2389, 1, 0, 0, 0, 285, 2397, 1, 0, 0, 0, 287, 2403, 1, 0, - 0, 0, 289, 2411, 1, 0, 0, 0, 291, 2420, 1, 0, 0, 0, 293, 2430, 1, 0, 0, - 0, 295, 2442, 1, 0, 0, 0, 297, 2454, 1, 0, 0, 0, 299, 2465, 1, 0, 0, 0, - 301, 2474, 1, 0, 0, 0, 303, 2483, 1, 0, 0, 0, 305, 2492, 1, 0, 0, 0, 307, - 2500, 1, 0, 0, 0, 309, 2510, 1, 0, 0, 0, 311, 2514, 1, 0, 0, 0, 313, 2519, - 1, 0, 0, 0, 315, 2530, 1, 0, 0, 0, 317, 2537, 1, 0, 0, 0, 319, 2547, 1, - 0, 0, 0, 321, 2562, 1, 0, 0, 0, 323, 2575, 1, 0, 0, 0, 325, 2586, 1, 0, - 0, 0, 327, 2593, 1, 0, 0, 0, 329, 2599, 1, 0, 0, 0, 331, 2611, 1, 0, 0, - 0, 333, 2619, 1, 0, 0, 0, 335, 2630, 1, 0, 0, 0, 337, 2636, 1, 0, 0, 0, - 339, 2644, 1, 0, 0, 0, 341, 2653, 1, 0, 0, 0, 343, 2664, 1, 0, 0, 0, 345, - 2677, 1, 0, 0, 0, 347, 2686, 1, 0, 0, 0, 349, 2695, 1, 0, 0, 0, 351, 2704, - 1, 0, 0, 0, 353, 2722, 1, 0, 0, 0, 355, 2748, 1, 0, 0, 0, 357, 2758, 1, - 0, 0, 0, 359, 2769, 1, 0, 0, 0, 361, 2782, 1, 0, 0, 0, 363, 2793, 1, 0, - 0, 0, 365, 2806, 1, 0, 0, 0, 367, 2821, 1, 0, 0, 0, 369, 2832, 1, 0, 0, - 0, 371, 2839, 1, 0, 0, 0, 373, 2846, 1, 0, 0, 0, 375, 2854, 1, 0, 0, 0, - 377, 2862, 1, 0, 0, 0, 379, 2867, 1, 0, 0, 0, 381, 2875, 1, 0, 0, 0, 383, - 2886, 1, 0, 0, 0, 385, 2893, 1, 0, 0, 0, 387, 2903, 1, 0, 0, 0, 389, 2910, - 1, 0, 0, 0, 391, 2917, 1, 0, 0, 0, 393, 2925, 1, 0, 0, 0, 395, 2936, 1, - 0, 0, 0, 397, 2942, 1, 0, 0, 0, 399, 2947, 1, 0, 0, 0, 401, 2961, 1, 0, - 0, 0, 403, 2975, 1, 0, 0, 0, 405, 2982, 1, 0, 0, 0, 407, 2992, 1, 0, 0, - 0, 409, 3005, 1, 0, 0, 0, 411, 3017, 1, 0, 0, 0, 413, 3028, 1, 0, 0, 0, - 415, 3034, 1, 0, 0, 0, 417, 3040, 1, 0, 0, 0, 419, 3052, 1, 0, 0, 0, 421, - 3059, 1, 0, 0, 0, 423, 3070, 1, 0, 0, 0, 425, 3087, 1, 0, 0, 0, 427, 3095, - 1, 0, 0, 0, 429, 3101, 1, 0, 0, 0, 431, 3107, 1, 0, 0, 0, 433, 3114, 1, - 0, 0, 0, 435, 3123, 1, 0, 0, 0, 437, 3127, 1, 0, 0, 0, 439, 3134, 1, 0, - 0, 0, 441, 3142, 1, 0, 0, 0, 443, 3150, 1, 0, 0, 0, 445, 3159, 1, 0, 0, - 0, 447, 3168, 1, 0, 0, 0, 449, 3179, 1, 0, 0, 0, 451, 3190, 1, 0, 0, 0, - 453, 3196, 1, 0, 0, 0, 455, 3207, 1, 0, 0, 0, 457, 3219, 1, 0, 0, 0, 459, - 3232, 1, 0, 0, 0, 461, 3248, 1, 0, 0, 0, 463, 3257, 1, 0, 0, 0, 465, 3265, - 1, 0, 0, 0, 467, 3277, 1, 0, 0, 0, 469, 3290, 1, 0, 0, 0, 471, 3305, 1, - 0, 0, 0, 473, 3316, 1, 0, 0, 0, 475, 3326, 1, 0, 0, 0, 477, 3340, 1, 0, - 0, 0, 479, 3354, 1, 0, 0, 0, 481, 3368, 1, 0, 0, 0, 483, 3383, 1, 0, 0, - 0, 485, 3397, 1, 0, 0, 0, 487, 3407, 1, 0, 0, 0, 489, 3416, 1, 0, 0, 0, - 491, 3423, 1, 0, 0, 0, 493, 3431, 1, 0, 0, 0, 495, 3439, 1, 0, 0, 0, 497, - 3446, 1, 0, 0, 0, 499, 3454, 1, 0, 0, 0, 501, 3459, 1, 0, 0, 0, 503, 3468, - 1, 0, 0, 0, 505, 3476, 1, 0, 0, 0, 507, 3485, 1, 0, 0, 0, 509, 3494, 1, - 0, 0, 0, 511, 3497, 1, 0, 0, 0, 513, 3500, 1, 0, 0, 0, 515, 3503, 1, 0, - 0, 0, 517, 3506, 1, 0, 0, 0, 519, 3509, 1, 0, 0, 0, 521, 3512, 1, 0, 0, - 0, 523, 3522, 1, 0, 0, 0, 525, 3529, 1, 0, 0, 0, 527, 3537, 1, 0, 0, 0, - 529, 3542, 1, 0, 0, 0, 531, 3550, 1, 0, 0, 0, 533, 3558, 1, 0, 0, 0, 535, - 3567, 1, 0, 0, 0, 537, 3572, 1, 0, 0, 0, 539, 3583, 1, 0, 0, 0, 541, 3590, - 1, 0, 0, 0, 543, 3603, 1, 0, 0, 0, 545, 3612, 1, 0, 0, 0, 547, 3618, 1, - 0, 0, 0, 549, 3633, 1, 0, 0, 0, 551, 3638, 1, 0, 0, 0, 553, 3644, 1, 0, - 0, 0, 555, 3648, 1, 0, 0, 0, 557, 3652, 1, 0, 0, 0, 559, 3656, 1, 0, 0, - 0, 561, 3660, 1, 0, 0, 0, 563, 3667, 1, 0, 0, 0, 565, 3672, 1, 0, 0, 0, - 567, 3681, 1, 0, 0, 0, 569, 3686, 1, 0, 0, 0, 571, 3690, 1, 0, 0, 0, 573, - 3693, 1, 0, 0, 0, 575, 3697, 1, 0, 0, 0, 577, 3702, 1, 0, 0, 0, 579, 3705, - 1, 0, 0, 0, 581, 3713, 1, 0, 0, 0, 583, 3718, 1, 0, 0, 0, 585, 3724, 1, - 0, 0, 0, 587, 3731, 1, 0, 0, 0, 589, 3738, 1, 0, 0, 0, 591, 3746, 1, 0, - 0, 0, 593, 3751, 1, 0, 0, 0, 595, 3757, 1, 0, 0, 0, 597, 3768, 1, 0, 0, - 0, 599, 3777, 1, 0, 0, 0, 601, 3782, 1, 0, 0, 0, 603, 3791, 1, 0, 0, 0, - 605, 3797, 1, 0, 0, 0, 607, 3803, 1, 0, 0, 0, 609, 3809, 1, 0, 0, 0, 611, - 3815, 1, 0, 0, 0, 613, 3823, 1, 0, 0, 0, 615, 3834, 1, 0, 0, 0, 617, 3840, - 1, 0, 0, 0, 619, 3851, 1, 0, 0, 0, 621, 3862, 1, 0, 0, 0, 623, 3867, 1, - 0, 0, 0, 625, 3875, 1, 0, 0, 0, 627, 3884, 1, 0, 0, 0, 629, 3890, 1, 0, - 0, 0, 631, 3895, 1, 0, 0, 0, 633, 3900, 1, 0, 0, 0, 635, 3915, 1, 0, 0, - 0, 637, 3921, 1, 0, 0, 0, 639, 3929, 1, 0, 0, 0, 641, 3935, 1, 0, 0, 0, - 643, 3945, 1, 0, 0, 0, 645, 3952, 1, 0, 0, 0, 647, 3957, 1, 0, 0, 0, 649, - 3965, 1, 0, 0, 0, 651, 3970, 1, 0, 0, 0, 653, 3979, 1, 0, 0, 0, 655, 3987, - 1, 0, 0, 0, 657, 3992, 1, 0, 0, 0, 659, 3997, 1, 0, 0, 0, 661, 4001, 1, - 0, 0, 0, 663, 4008, 1, 0, 0, 0, 665, 4013, 1, 0, 0, 0, 667, 4021, 1, 0, - 0, 0, 669, 4025, 1, 0, 0, 0, 671, 4030, 1, 0, 0, 0, 673, 4034, 1, 0, 0, - 0, 675, 4040, 1, 0, 0, 0, 677, 4044, 1, 0, 0, 0, 679, 4051, 1, 0, 0, 0, - 681, 4059, 1, 0, 0, 0, 683, 4067, 1, 0, 0, 0, 685, 4077, 1, 0, 0, 0, 687, - 4084, 1, 0, 0, 0, 689, 4093, 1, 0, 0, 0, 691, 4103, 1, 0, 0, 0, 693, 4111, - 1, 0, 0, 0, 695, 4117, 1, 0, 0, 0, 697, 4124, 1, 0, 0, 0, 699, 4138, 1, - 0, 0, 0, 701, 4147, 1, 0, 0, 0, 703, 4156, 1, 0, 0, 0, 705, 4167, 1, 0, - 0, 0, 707, 4176, 1, 0, 0, 0, 709, 4182, 1, 0, 0, 0, 711, 4186, 1, 0, 0, - 0, 713, 4194, 1, 0, 0, 0, 715, 4201, 1, 0, 0, 0, 717, 4206, 1, 0, 0, 0, - 719, 4212, 1, 0, 0, 0, 721, 4217, 1, 0, 0, 0, 723, 4224, 1, 0, 0, 0, 725, - 4233, 1, 0, 0, 0, 727, 4243, 1, 0, 0, 0, 729, 4248, 1, 0, 0, 0, 731, 4255, - 1, 0, 0, 0, 733, 4261, 1, 0, 0, 0, 735, 4269, 1, 0, 0, 0, 737, 4279, 1, - 0, 0, 0, 739, 4290, 1, 0, 0, 0, 741, 4298, 1, 0, 0, 0, 743, 4309, 1, 0, - 0, 0, 745, 4314, 1, 0, 0, 0, 747, 4320, 1, 0, 0, 0, 749, 4325, 1, 0, 0, - 0, 751, 4331, 1, 0, 0, 0, 753, 4337, 1, 0, 0, 0, 755, 4345, 1, 0, 0, 0, - 757, 4354, 1, 0, 0, 0, 759, 4367, 1, 0, 0, 0, 761, 4378, 1, 0, 0, 0, 763, - 4388, 1, 0, 0, 0, 765, 4398, 1, 0, 0, 0, 767, 4411, 1, 0, 0, 0, 769, 4421, - 1, 0, 0, 0, 771, 4433, 1, 0, 0, 0, 773, 4440, 1, 0, 0, 0, 775, 4449, 1, - 0, 0, 0, 777, 4459, 1, 0, 0, 0, 779, 4466, 1, 0, 0, 0, 781, 4473, 1, 0, - 0, 0, 783, 4479, 1, 0, 0, 0, 785, 4486, 1, 0, 0, 0, 787, 4494, 1, 0, 0, - 0, 789, 4500, 1, 0, 0, 0, 791, 4506, 1, 0, 0, 0, 793, 4514, 1, 0, 0, 0, - 795, 4521, 1, 0, 0, 0, 797, 4526, 1, 0, 0, 0, 799, 4532, 1, 0, 0, 0, 801, - 4537, 1, 0, 0, 0, 803, 4543, 1, 0, 0, 0, 805, 4551, 1, 0, 0, 0, 807, 4560, - 1, 0, 0, 0, 809, 4569, 1, 0, 0, 0, 811, 4577, 1, 0, 0, 0, 813, 4585, 1, - 0, 0, 0, 815, 4591, 1, 0, 0, 0, 817, 4602, 1, 0, 0, 0, 819, 4610, 1, 0, - 0, 0, 821, 4618, 1, 0, 0, 0, 823, 4629, 1, 0, 0, 0, 825, 4640, 1, 0, 0, - 0, 827, 4647, 1, 0, 0, 0, 829, 4653, 1, 0, 0, 0, 831, 4663, 1, 0, 0, 0, - 833, 4668, 1, 0, 0, 0, 835, 4674, 1, 0, 0, 0, 837, 4681, 1, 0, 0, 0, 839, - 4688, 1, 0, 0, 0, 841, 4697, 1, 0, 0, 0, 843, 4702, 1, 0, 0, 0, 845, 4707, - 1, 0, 0, 0, 847, 4710, 1, 0, 0, 0, 849, 4713, 1, 0, 0, 0, 851, 4718, 1, - 0, 0, 0, 853, 4722, 1, 0, 0, 0, 855, 4730, 1, 0, 0, 0, 857, 4738, 1, 0, - 0, 0, 859, 4752, 1, 0, 0, 0, 861, 4759, 1, 0, 0, 0, 863, 4763, 1, 0, 0, - 0, 865, 4771, 1, 0, 0, 0, 867, 4775, 1, 0, 0, 0, 869, 4779, 1, 0, 0, 0, - 871, 4790, 1, 0, 0, 0, 873, 4793, 1, 0, 0, 0, 875, 4802, 1, 0, 0, 0, 877, - 4808, 1, 0, 0, 0, 879, 4818, 1, 0, 0, 0, 881, 4827, 1, 0, 0, 0, 883, 4841, - 1, 0, 0, 0, 885, 4850, 1, 0, 0, 0, 887, 4855, 1, 0, 0, 0, 889, 4861, 1, - 0, 0, 0, 891, 4867, 1, 0, 0, 0, 893, 4874, 1, 0, 0, 0, 895, 4885, 1, 0, - 0, 0, 897, 4895, 1, 0, 0, 0, 899, 4902, 1, 0, 0, 0, 901, 4907, 1, 0, 0, - 0, 903, 4914, 1, 0, 0, 0, 905, 4920, 1, 0, 0, 0, 907, 4927, 1, 0, 0, 0, - 909, 4933, 1, 0, 0, 0, 911, 4938, 1, 0, 0, 0, 913, 4943, 1, 0, 0, 0, 915, - 4952, 1, 0, 0, 0, 917, 4958, 1, 0, 0, 0, 919, 4967, 1, 0, 0, 0, 921, 4977, - 1, 0, 0, 0, 923, 4990, 1, 0, 0, 0, 925, 4996, 1, 0, 0, 0, 927, 5001, 1, - 0, 0, 0, 929, 5005, 1, 0, 0, 0, 931, 5014, 1, 0, 0, 0, 933, 5019, 1, 0, - 0, 0, 935, 5028, 1, 0, 0, 0, 937, 5033, 1, 0, 0, 0, 939, 5044, 1, 0, 0, - 0, 941, 5053, 1, 0, 0, 0, 943, 5066, 1, 0, 0, 0, 945, 5070, 1, 0, 0, 0, - 947, 5076, 1, 0, 0, 0, 949, 5079, 1, 0, 0, 0, 951, 5084, 1, 0, 0, 0, 953, - 5090, 1, 0, 0, 0, 955, 5102, 1, 0, 0, 0, 957, 5110, 1, 0, 0, 0, 959, 5114, - 1, 0, 0, 0, 961, 5124, 1, 0, 0, 0, 963, 5126, 1, 0, 0, 0, 965, 5129, 1, - 0, 0, 0, 967, 5132, 1, 0, 0, 0, 969, 5134, 1, 0, 0, 0, 971, 5136, 1, 0, - 0, 0, 973, 5138, 1, 0, 0, 0, 975, 5140, 1, 0, 0, 0, 977, 5142, 1, 0, 0, - 0, 979, 5144, 1, 0, 0, 0, 981, 5146, 1, 0, 0, 0, 983, 5148, 1, 0, 0, 0, - 985, 5152, 1, 0, 0, 0, 987, 5156, 1, 0, 0, 0, 989, 5158, 1, 0, 0, 0, 991, - 5160, 1, 0, 0, 0, 993, 5162, 1, 0, 0, 0, 995, 5164, 1, 0, 0, 0, 997, 5166, - 1, 0, 0, 0, 999, 5168, 1, 0, 0, 0, 1001, 5170, 1, 0, 0, 0, 1003, 5172, - 1, 0, 0, 0, 1005, 5174, 1, 0, 0, 0, 1007, 5176, 1, 0, 0, 0, 1009, 5178, - 1, 0, 0, 0, 1011, 5180, 1, 0, 0, 0, 1013, 5183, 1, 0, 0, 0, 1015, 5186, - 1, 0, 0, 0, 1017, 5188, 1, 0, 0, 0, 1019, 5190, 1, 0, 0, 0, 1021, 5202, - 1, 0, 0, 0, 1023, 5215, 1, 0, 0, 0, 1025, 5228, 1, 0, 0, 0, 1027, 5254, - 1, 0, 0, 0, 1029, 5260, 1, 0, 0, 0, 1031, 5267, 1, 0, 0, 0, 1033, 5301, - 1, 0, 0, 0, 1035, 5303, 1, 0, 0, 0, 1037, 5305, 1, 0, 0, 0, 1039, 5307, - 1, 0, 0, 0, 1041, 5309, 1, 0, 0, 0, 1043, 5311, 1, 0, 0, 0, 1045, 5313, - 1, 0, 0, 0, 1047, 5315, 1, 0, 0, 0, 1049, 5317, 1, 0, 0, 0, 1051, 5319, - 1, 0, 0, 0, 1053, 5321, 1, 0, 0, 0, 1055, 5323, 1, 0, 0, 0, 1057, 5325, - 1, 0, 0, 0, 1059, 5327, 1, 0, 0, 0, 1061, 5329, 1, 0, 0, 0, 1063, 5331, - 1, 0, 0, 0, 1065, 5333, 1, 0, 0, 0, 1067, 5335, 1, 0, 0, 0, 1069, 5337, - 1, 0, 0, 0, 1071, 5339, 1, 0, 0, 0, 1073, 5341, 1, 0, 0, 0, 1075, 5343, - 1, 0, 0, 0, 1077, 5345, 1, 0, 0, 0, 1079, 5347, 1, 0, 0, 0, 1081, 5349, - 1, 0, 0, 0, 1083, 5351, 1, 0, 0, 0, 1085, 5353, 1, 0, 0, 0, 1087, 5355, - 1, 0, 0, 0, 1089, 5357, 1, 0, 0, 0, 1091, 5359, 1, 0, 0, 0, 1093, 1095, - 7, 0, 0, 0, 1094, 1093, 1, 0, 0, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1094, - 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 1099, - 6, 0, 0, 0, 1099, 2, 1, 0, 0, 0, 1100, 1101, 5, 47, 0, 0, 1101, 1102, 5, - 42, 0, 0, 1102, 1103, 5, 42, 0, 0, 1103, 1107, 1, 0, 0, 0, 1104, 1106, - 9, 0, 0, 0, 1105, 1104, 1, 0, 0, 0, 1106, 1109, 1, 0, 0, 0, 1107, 1108, - 1, 0, 0, 0, 1107, 1105, 1, 0, 0, 0, 1108, 1110, 1, 0, 0, 0, 1109, 1107, - 1, 0, 0, 0, 1110, 1111, 5, 42, 0, 0, 1111, 1112, 5, 47, 0, 0, 1112, 4, - 1, 0, 0, 0, 1113, 1114, 5, 47, 0, 0, 1114, 1115, 5, 42, 0, 0, 1115, 1119, - 1, 0, 0, 0, 1116, 1118, 9, 0, 0, 0, 1117, 1116, 1, 0, 0, 0, 1118, 1121, - 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1119, 1117, 1, 0, 0, 0, 1120, 1122, - 1, 0, 0, 0, 1121, 1119, 1, 0, 0, 0, 1122, 1123, 5, 42, 0, 0, 1123, 1124, - 5, 47, 0, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, 6, 2, 0, 0, 1126, 6, 1, - 0, 0, 0, 1127, 1128, 5, 45, 0, 0, 1128, 1129, 5, 45, 0, 0, 1129, 1133, - 1, 0, 0, 0, 1130, 1132, 8, 1, 0, 0, 1131, 1130, 1, 0, 0, 0, 1132, 1135, - 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1136, - 1, 0, 0, 0, 1135, 1133, 1, 0, 0, 0, 1136, 1137, 6, 3, 0, 0, 1137, 8, 1, - 0, 0, 0, 1138, 1139, 3, 1057, 528, 0, 1139, 1141, 3, 1077, 538, 0, 1140, - 1142, 3, 1, 0, 0, 1141, 1140, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, - 1141, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, - 1146, 3, 1067, 533, 0, 1146, 1147, 3, 1069, 534, 0, 1147, 1149, 3, 1079, - 539, 0, 1148, 1150, 3, 1, 0, 0, 1149, 1148, 1, 0, 0, 0, 1150, 1151, 1, - 0, 0, 0, 1151, 1149, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 1, - 0, 0, 0, 1153, 1154, 3, 1067, 533, 0, 1154, 1155, 3, 1081, 540, 0, 1155, - 1156, 3, 1063, 531, 0, 1156, 1157, 3, 1063, 531, 0, 1157, 10, 1, 0, 0, - 0, 1158, 1159, 3, 1057, 528, 0, 1159, 1161, 3, 1077, 538, 0, 1160, 1162, - 3, 1, 0, 0, 1161, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1161, - 1, 0, 0, 0, 1163, 1164, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1166, - 3, 1067, 533, 0, 1166, 1167, 3, 1081, 540, 0, 1167, 1168, 3, 1063, 531, - 0, 1168, 1169, 3, 1063, 531, 0, 1169, 12, 1, 0, 0, 0, 1170, 1171, 3, 1067, - 533, 0, 1171, 1172, 3, 1069, 534, 0, 1172, 1174, 3, 1079, 539, 0, 1173, - 1175, 3, 1, 0, 0, 1174, 1173, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, - 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, - 1179, 3, 1067, 533, 0, 1179, 1180, 3, 1081, 540, 0, 1180, 1181, 3, 1063, - 531, 0, 1181, 1182, 3, 1063, 531, 0, 1182, 14, 1, 0, 0, 0, 1183, 1184, - 3, 1053, 526, 0, 1184, 1185, 3, 1075, 537, 0, 1185, 1186, 3, 1069, 534, - 0, 1186, 1187, 3, 1081, 540, 0, 1187, 1189, 3, 1071, 535, 0, 1188, 1190, - 3, 1, 0, 0, 1189, 1188, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1189, - 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1194, - 3, 1043, 521, 0, 1194, 1195, 3, 1089, 544, 0, 1195, 16, 1, 0, 0, 0, 1196, - 1197, 3, 1069, 534, 0, 1197, 1198, 3, 1075, 537, 0, 1198, 1199, 3, 1047, - 523, 0, 1199, 1200, 3, 1049, 524, 0, 1200, 1202, 3, 1075, 537, 0, 1201, - 1203, 3, 1, 0, 0, 1202, 1201, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, - 1202, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1206, 1, 0, 0, 0, 1206, - 1207, 3, 1043, 521, 0, 1207, 1208, 3, 1089, 544, 0, 1208, 18, 1, 0, 0, - 0, 1209, 1210, 3, 1077, 538, 0, 1210, 1211, 3, 1069, 534, 0, 1211, 1212, - 3, 1075, 537, 0, 1212, 1214, 3, 1079, 539, 0, 1213, 1215, 3, 1, 0, 0, 1214, - 1213, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1214, 1, 0, 0, 0, 1216, - 1217, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1219, 3, 1043, 521, 0, - 1219, 1220, 3, 1089, 544, 0, 1220, 20, 1, 0, 0, 0, 1221, 1222, 3, 1067, - 533, 0, 1222, 1223, 3, 1069, 534, 0, 1223, 1224, 3, 1067, 533, 0, 1224, - 1225, 5, 45, 0, 0, 1225, 1226, 3, 1071, 535, 0, 1226, 1227, 3, 1049, 524, - 0, 1227, 1228, 3, 1075, 537, 0, 1228, 1229, 3, 1077, 538, 0, 1229, 1230, - 3, 1057, 528, 0, 1230, 1231, 3, 1077, 538, 0, 1231, 1232, 3, 1079, 539, - 0, 1232, 1233, 3, 1049, 524, 0, 1233, 1234, 3, 1067, 533, 0, 1234, 1235, - 3, 1079, 539, 0, 1235, 22, 1, 0, 0, 0, 1236, 1237, 3, 1075, 537, 0, 1237, - 1238, 3, 1049, 524, 0, 1238, 1239, 3, 1051, 525, 0, 1239, 1240, 3, 1049, - 524, 0, 1240, 1241, 3, 1075, 537, 0, 1241, 1242, 3, 1049, 524, 0, 1242, - 1243, 3, 1067, 533, 0, 1243, 1244, 3, 1045, 522, 0, 1244, 1246, 3, 1049, - 524, 0, 1245, 1247, 5, 95, 0, 0, 1246, 1245, 1, 0, 0, 0, 1246, 1247, 1, - 0, 0, 0, 1247, 1248, 1, 0, 0, 0, 1248, 1249, 3, 1077, 538, 0, 1249, 1250, - 3, 1049, 524, 0, 1250, 1251, 3, 1079, 539, 0, 1251, 24, 1, 0, 0, 0, 1252, - 1253, 3, 1063, 531, 0, 1253, 1254, 3, 1057, 528, 0, 1254, 1255, 3, 1077, - 538, 0, 1255, 1257, 3, 1079, 539, 0, 1256, 1258, 3, 1, 0, 0, 1257, 1256, - 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1257, 1, 0, 0, 0, 1259, 1260, - 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1262, 3, 1069, 534, 0, 1262, - 1263, 3, 1051, 525, 0, 1263, 26, 1, 0, 0, 0, 1264, 1265, 3, 1047, 523, - 0, 1265, 1266, 3, 1049, 524, 0, 1266, 1267, 3, 1063, 531, 0, 1267, 1268, - 3, 1049, 524, 0, 1268, 1269, 3, 1079, 539, 0, 1269, 1271, 3, 1049, 524, - 0, 1270, 1272, 3, 1, 0, 0, 1271, 1270, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, - 0, 1273, 1271, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, - 0, 1275, 1276, 3, 1041, 520, 0, 1276, 1277, 3, 1067, 533, 0, 1277, 1279, - 3, 1047, 523, 0, 1278, 1280, 3, 1, 0, 0, 1279, 1278, 1, 0, 0, 0, 1280, - 1281, 1, 0, 0, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, - 1283, 1, 0, 0, 0, 1283, 1284, 3, 1075, 537, 0, 1284, 1285, 3, 1049, 524, - 0, 1285, 1286, 3, 1051, 525, 0, 1286, 1287, 3, 1049, 524, 0, 1287, 1288, - 3, 1075, 537, 0, 1288, 1289, 3, 1049, 524, 0, 1289, 1290, 3, 1067, 533, - 0, 1290, 1291, 3, 1045, 522, 0, 1291, 1292, 3, 1049, 524, 0, 1292, 1293, - 3, 1077, 538, 0, 1293, 1337, 1, 0, 0, 0, 1294, 1295, 3, 1047, 523, 0, 1295, - 1296, 3, 1049, 524, 0, 1296, 1297, 3, 1063, 531, 0, 1297, 1298, 3, 1049, - 524, 0, 1298, 1299, 3, 1079, 539, 0, 1299, 1300, 3, 1049, 524, 0, 1300, - 1301, 5, 95, 0, 0, 1301, 1302, 3, 1041, 520, 0, 1302, 1303, 3, 1067, 533, - 0, 1303, 1304, 3, 1047, 523, 0, 1304, 1305, 5, 95, 0, 0, 1305, 1306, 3, - 1075, 537, 0, 1306, 1307, 3, 1049, 524, 0, 1307, 1308, 3, 1051, 525, 0, - 1308, 1309, 3, 1049, 524, 0, 1309, 1310, 3, 1075, 537, 0, 1310, 1311, 3, - 1049, 524, 0, 1311, 1312, 3, 1067, 533, 0, 1312, 1313, 3, 1045, 522, 0, - 1313, 1314, 3, 1049, 524, 0, 1314, 1315, 3, 1077, 538, 0, 1315, 1337, 1, - 0, 0, 0, 1316, 1317, 3, 1047, 523, 0, 1317, 1318, 3, 1049, 524, 0, 1318, - 1319, 3, 1063, 531, 0, 1319, 1320, 3, 1049, 524, 0, 1320, 1321, 3, 1079, - 539, 0, 1321, 1322, 3, 1049, 524, 0, 1322, 1323, 3, 1041, 520, 0, 1323, - 1324, 3, 1067, 533, 0, 1324, 1325, 3, 1047, 523, 0, 1325, 1326, 3, 1075, - 537, 0, 1326, 1327, 3, 1049, 524, 0, 1327, 1328, 3, 1051, 525, 0, 1328, - 1329, 3, 1049, 524, 0, 1329, 1330, 3, 1075, 537, 0, 1330, 1331, 3, 1049, - 524, 0, 1331, 1332, 3, 1067, 533, 0, 1332, 1333, 3, 1045, 522, 0, 1333, - 1334, 3, 1049, 524, 0, 1334, 1335, 3, 1077, 538, 0, 1335, 1337, 1, 0, 0, - 0, 1336, 1264, 1, 0, 0, 0, 1336, 1294, 1, 0, 0, 0, 1336, 1316, 1, 0, 0, - 0, 1337, 28, 1, 0, 0, 0, 1338, 1339, 3, 1047, 523, 0, 1339, 1340, 3, 1049, - 524, 0, 1340, 1341, 3, 1063, 531, 0, 1341, 1342, 3, 1049, 524, 0, 1342, - 1343, 3, 1079, 539, 0, 1343, 1345, 3, 1049, 524, 0, 1344, 1346, 3, 1, 0, - 0, 1345, 1344, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1345, 1, 0, 0, - 0, 1347, 1348, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1350, 3, 1043, - 521, 0, 1350, 1351, 3, 1081, 540, 0, 1351, 1353, 3, 1079, 539, 0, 1352, - 1354, 3, 1, 0, 0, 1353, 1352, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, - 1353, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, - 1358, 3, 1061, 530, 0, 1358, 1359, 3, 1049, 524, 0, 1359, 1360, 3, 1049, - 524, 0, 1360, 1362, 3, 1071, 535, 0, 1361, 1363, 3, 1, 0, 0, 1362, 1361, - 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0, 1364, 1365, - 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1367, 3, 1075, 537, 0, 1367, - 1368, 3, 1049, 524, 0, 1368, 1369, 3, 1051, 525, 0, 1369, 1370, 3, 1049, - 524, 0, 1370, 1371, 3, 1075, 537, 0, 1371, 1372, 3, 1049, 524, 0, 1372, - 1373, 3, 1067, 533, 0, 1373, 1374, 3, 1045, 522, 0, 1374, 1375, 3, 1049, - 524, 0, 1375, 1376, 3, 1077, 538, 0, 1376, 1429, 1, 0, 0, 0, 1377, 1378, - 3, 1047, 523, 0, 1378, 1379, 3, 1049, 524, 0, 1379, 1380, 3, 1063, 531, - 0, 1380, 1381, 3, 1049, 524, 0, 1381, 1382, 3, 1079, 539, 0, 1382, 1383, - 3, 1049, 524, 0, 1383, 1384, 5, 95, 0, 0, 1384, 1385, 3, 1043, 521, 0, - 1385, 1386, 3, 1081, 540, 0, 1386, 1387, 3, 1079, 539, 0, 1387, 1388, 5, - 95, 0, 0, 1388, 1389, 3, 1061, 530, 0, 1389, 1390, 3, 1049, 524, 0, 1390, - 1391, 3, 1049, 524, 0, 1391, 1392, 3, 1071, 535, 0, 1392, 1393, 5, 95, - 0, 0, 1393, 1394, 3, 1075, 537, 0, 1394, 1395, 3, 1049, 524, 0, 1395, 1396, - 3, 1051, 525, 0, 1396, 1397, 3, 1049, 524, 0, 1397, 1398, 3, 1075, 537, - 0, 1398, 1399, 3, 1049, 524, 0, 1399, 1400, 3, 1067, 533, 0, 1400, 1401, - 3, 1045, 522, 0, 1401, 1402, 3, 1049, 524, 0, 1402, 1403, 3, 1077, 538, - 0, 1403, 1429, 1, 0, 0, 0, 1404, 1405, 3, 1047, 523, 0, 1405, 1406, 3, - 1049, 524, 0, 1406, 1407, 3, 1063, 531, 0, 1407, 1408, 3, 1049, 524, 0, - 1408, 1409, 3, 1079, 539, 0, 1409, 1410, 3, 1049, 524, 0, 1410, 1411, 3, - 1043, 521, 0, 1411, 1412, 3, 1081, 540, 0, 1412, 1413, 3, 1079, 539, 0, - 1413, 1414, 3, 1061, 530, 0, 1414, 1415, 3, 1049, 524, 0, 1415, 1416, 3, - 1049, 524, 0, 1416, 1417, 3, 1071, 535, 0, 1417, 1418, 3, 1075, 537, 0, - 1418, 1419, 3, 1049, 524, 0, 1419, 1420, 3, 1051, 525, 0, 1420, 1421, 3, - 1049, 524, 0, 1421, 1422, 3, 1075, 537, 0, 1422, 1423, 3, 1049, 524, 0, - 1423, 1424, 3, 1067, 533, 0, 1424, 1425, 3, 1045, 522, 0, 1425, 1426, 3, - 1049, 524, 0, 1426, 1427, 3, 1077, 538, 0, 1427, 1429, 1, 0, 0, 0, 1428, - 1338, 1, 0, 0, 0, 1428, 1377, 1, 0, 0, 0, 1428, 1404, 1, 0, 0, 0, 1429, - 30, 1, 0, 0, 0, 1430, 1431, 3, 1047, 523, 0, 1431, 1432, 3, 1049, 524, - 0, 1432, 1433, 3, 1063, 531, 0, 1433, 1434, 3, 1049, 524, 0, 1434, 1435, - 3, 1079, 539, 0, 1435, 1437, 3, 1049, 524, 0, 1436, 1438, 3, 1, 0, 0, 1437, - 1436, 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 1437, 1, 0, 0, 0, 1439, - 1440, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1442, 3, 1057, 528, 0, - 1442, 1444, 3, 1051, 525, 0, 1443, 1445, 3, 1, 0, 0, 1444, 1443, 1, 0, - 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1444, 1, 0, 0, 0, 1446, 1447, 1, 0, - 0, 0, 1447, 1448, 1, 0, 0, 0, 1448, 1449, 3, 1067, 533, 0, 1449, 1451, - 3, 1069, 534, 0, 1450, 1452, 3, 1, 0, 0, 1451, 1450, 1, 0, 0, 0, 1452, - 1453, 1, 0, 0, 0, 1453, 1451, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, - 1455, 1, 0, 0, 0, 1455, 1456, 3, 1075, 537, 0, 1456, 1457, 3, 1049, 524, - 0, 1457, 1458, 3, 1051, 525, 0, 1458, 1459, 3, 1049, 524, 0, 1459, 1460, - 3, 1075, 537, 0, 1460, 1461, 3, 1049, 524, 0, 1461, 1462, 3, 1067, 533, - 0, 1462, 1463, 3, 1045, 522, 0, 1463, 1464, 3, 1049, 524, 0, 1464, 1465, - 3, 1077, 538, 0, 1465, 1512, 1, 0, 0, 0, 1466, 1467, 3, 1047, 523, 0, 1467, - 1468, 3, 1049, 524, 0, 1468, 1469, 3, 1063, 531, 0, 1469, 1470, 3, 1049, - 524, 0, 1470, 1471, 3, 1079, 539, 0, 1471, 1472, 3, 1049, 524, 0, 1472, - 1473, 5, 95, 0, 0, 1473, 1474, 3, 1057, 528, 0, 1474, 1475, 3, 1051, 525, - 0, 1475, 1476, 5, 95, 0, 0, 1476, 1477, 3, 1067, 533, 0, 1477, 1478, 3, - 1069, 534, 0, 1478, 1479, 5, 95, 0, 0, 1479, 1480, 3, 1075, 537, 0, 1480, - 1481, 3, 1049, 524, 0, 1481, 1482, 3, 1051, 525, 0, 1482, 1483, 3, 1049, - 524, 0, 1483, 1484, 3, 1075, 537, 0, 1484, 1485, 3, 1049, 524, 0, 1485, - 1486, 3, 1067, 533, 0, 1486, 1487, 3, 1045, 522, 0, 1487, 1488, 3, 1049, - 524, 0, 1488, 1489, 3, 1077, 538, 0, 1489, 1512, 1, 0, 0, 0, 1490, 1491, - 3, 1047, 523, 0, 1491, 1492, 3, 1049, 524, 0, 1492, 1493, 3, 1063, 531, - 0, 1493, 1494, 3, 1049, 524, 0, 1494, 1495, 3, 1079, 539, 0, 1495, 1496, - 3, 1049, 524, 0, 1496, 1497, 3, 1057, 528, 0, 1497, 1498, 3, 1051, 525, - 0, 1498, 1499, 3, 1067, 533, 0, 1499, 1500, 3, 1069, 534, 0, 1500, 1501, - 3, 1075, 537, 0, 1501, 1502, 3, 1049, 524, 0, 1502, 1503, 3, 1051, 525, - 0, 1503, 1504, 3, 1049, 524, 0, 1504, 1505, 3, 1075, 537, 0, 1505, 1506, - 3, 1049, 524, 0, 1506, 1507, 3, 1067, 533, 0, 1507, 1508, 3, 1045, 522, - 0, 1508, 1509, 3, 1049, 524, 0, 1509, 1510, 3, 1077, 538, 0, 1510, 1512, - 1, 0, 0, 0, 1511, 1430, 1, 0, 0, 0, 1511, 1466, 1, 0, 0, 0, 1511, 1490, - 1, 0, 0, 0, 1512, 32, 1, 0, 0, 0, 1513, 1514, 3, 1045, 522, 0, 1514, 1515, - 3, 1075, 537, 0, 1515, 1516, 3, 1049, 524, 0, 1516, 1517, 3, 1041, 520, - 0, 1517, 1518, 3, 1079, 539, 0, 1518, 1519, 3, 1049, 524, 0, 1519, 34, - 1, 0, 0, 0, 1520, 1521, 3, 1041, 520, 0, 1521, 1522, 3, 1063, 531, 0, 1522, - 1523, 3, 1079, 539, 0, 1523, 1524, 3, 1049, 524, 0, 1524, 1525, 3, 1075, - 537, 0, 1525, 36, 1, 0, 0, 0, 1526, 1527, 3, 1047, 523, 0, 1527, 1528, - 3, 1075, 537, 0, 1528, 1529, 3, 1069, 534, 0, 1529, 1530, 3, 1071, 535, - 0, 1530, 38, 1, 0, 0, 0, 1531, 1532, 3, 1075, 537, 0, 1532, 1533, 3, 1049, - 524, 0, 1533, 1534, 3, 1067, 533, 0, 1534, 1535, 3, 1041, 520, 0, 1535, - 1536, 3, 1065, 532, 0, 1536, 1537, 3, 1049, 524, 0, 1537, 40, 1, 0, 0, - 0, 1538, 1539, 3, 1065, 532, 0, 1539, 1540, 3, 1069, 534, 0, 1540, 1541, - 3, 1083, 541, 0, 1541, 1542, 3, 1049, 524, 0, 1542, 42, 1, 0, 0, 0, 1543, - 1544, 3, 1065, 532, 0, 1544, 1545, 3, 1069, 534, 0, 1545, 1546, 3, 1047, - 523, 0, 1546, 1547, 3, 1057, 528, 0, 1547, 1548, 3, 1051, 525, 0, 1548, - 1549, 3, 1089, 544, 0, 1549, 44, 1, 0, 0, 0, 1550, 1551, 3, 1049, 524, - 0, 1551, 1552, 3, 1067, 533, 0, 1552, 1553, 3, 1079, 539, 0, 1553, 1554, - 3, 1057, 528, 0, 1554, 1555, 3, 1079, 539, 0, 1555, 1556, 3, 1089, 544, - 0, 1556, 46, 1, 0, 0, 0, 1557, 1558, 3, 1071, 535, 0, 1558, 1559, 3, 1049, - 524, 0, 1559, 1560, 3, 1075, 537, 0, 1560, 1561, 3, 1077, 538, 0, 1561, - 1562, 3, 1057, 528, 0, 1562, 1563, 3, 1077, 538, 0, 1563, 1564, 3, 1079, - 539, 0, 1564, 1565, 3, 1049, 524, 0, 1565, 1566, 3, 1067, 533, 0, 1566, - 1567, 3, 1079, 539, 0, 1567, 48, 1, 0, 0, 0, 1568, 1569, 3, 1083, 541, - 0, 1569, 1570, 3, 1057, 528, 0, 1570, 1571, 3, 1049, 524, 0, 1571, 1572, - 3, 1085, 542, 0, 1572, 50, 1, 0, 0, 0, 1573, 1574, 3, 1049, 524, 0, 1574, - 1575, 3, 1087, 543, 0, 1575, 1576, 3, 1079, 539, 0, 1576, 1577, 3, 1049, - 524, 0, 1577, 1578, 3, 1075, 537, 0, 1578, 1579, 3, 1067, 533, 0, 1579, - 1580, 3, 1041, 520, 0, 1580, 1581, 3, 1063, 531, 0, 1581, 52, 1, 0, 0, - 0, 1582, 1583, 3, 1041, 520, 0, 1583, 1584, 3, 1077, 538, 0, 1584, 1585, - 3, 1077, 538, 0, 1585, 1586, 3, 1069, 534, 0, 1586, 1587, 3, 1045, 522, - 0, 1587, 1588, 3, 1057, 528, 0, 1588, 1589, 3, 1041, 520, 0, 1589, 1590, - 3, 1079, 539, 0, 1590, 1591, 3, 1057, 528, 0, 1591, 1592, 3, 1069, 534, - 0, 1592, 1593, 3, 1067, 533, 0, 1593, 54, 1, 0, 0, 0, 1594, 1595, 3, 1049, - 524, 0, 1595, 1596, 3, 1067, 533, 0, 1596, 1597, 3, 1081, 540, 0, 1597, - 1598, 3, 1065, 532, 0, 1598, 1599, 3, 1049, 524, 0, 1599, 1600, 3, 1075, - 537, 0, 1600, 1601, 3, 1041, 520, 0, 1601, 1602, 3, 1079, 539, 0, 1602, - 1603, 3, 1057, 528, 0, 1603, 1604, 3, 1069, 534, 0, 1604, 1605, 3, 1067, - 533, 0, 1605, 56, 1, 0, 0, 0, 1606, 1607, 3, 1065, 532, 0, 1607, 1608, - 3, 1069, 534, 0, 1608, 1609, 3, 1047, 523, 0, 1609, 1610, 3, 1081, 540, - 0, 1610, 1611, 3, 1063, 531, 0, 1611, 1612, 3, 1049, 524, 0, 1612, 58, - 1, 0, 0, 0, 1613, 1614, 3, 1065, 532, 0, 1614, 1615, 3, 1057, 528, 0, 1615, - 1616, 3, 1045, 522, 0, 1616, 1617, 3, 1075, 537, 0, 1617, 1618, 3, 1069, - 534, 0, 1618, 1619, 3, 1051, 525, 0, 1619, 1620, 3, 1063, 531, 0, 1620, - 1621, 3, 1069, 534, 0, 1621, 1622, 3, 1085, 542, 0, 1622, 60, 1, 0, 0, - 0, 1623, 1624, 3, 1067, 533, 0, 1624, 1625, 3, 1041, 520, 0, 1625, 1626, - 3, 1067, 533, 0, 1626, 1627, 3, 1069, 534, 0, 1627, 1628, 3, 1051, 525, - 0, 1628, 1629, 3, 1063, 531, 0, 1629, 1630, 3, 1069, 534, 0, 1630, 1631, - 3, 1085, 542, 0, 1631, 62, 1, 0, 0, 0, 1632, 1633, 3, 1085, 542, 0, 1633, - 1634, 3, 1069, 534, 0, 1634, 1635, 3, 1075, 537, 0, 1635, 1636, 3, 1061, - 530, 0, 1636, 1637, 3, 1051, 525, 0, 1637, 1638, 3, 1063, 531, 0, 1638, - 1639, 3, 1069, 534, 0, 1639, 1640, 3, 1085, 542, 0, 1640, 64, 1, 0, 0, - 0, 1641, 1642, 3, 1071, 535, 0, 1642, 1643, 3, 1041, 520, 0, 1643, 1644, - 3, 1053, 526, 0, 1644, 1645, 3, 1049, 524, 0, 1645, 66, 1, 0, 0, 0, 1646, - 1647, 3, 1077, 538, 0, 1647, 1648, 3, 1067, 533, 0, 1648, 1649, 3, 1057, - 528, 0, 1649, 1650, 3, 1071, 535, 0, 1650, 1651, 3, 1071, 535, 0, 1651, - 1652, 3, 1049, 524, 0, 1652, 1653, 3, 1079, 539, 0, 1653, 68, 1, 0, 0, - 0, 1654, 1655, 3, 1063, 531, 0, 1655, 1656, 3, 1041, 520, 0, 1656, 1657, - 3, 1089, 544, 0, 1657, 1658, 3, 1069, 534, 0, 1658, 1659, 3, 1081, 540, - 0, 1659, 1660, 3, 1079, 539, 0, 1660, 70, 1, 0, 0, 0, 1661, 1662, 3, 1067, - 533, 0, 1662, 1663, 3, 1069, 534, 0, 1663, 1664, 3, 1079, 539, 0, 1664, - 1665, 3, 1049, 524, 0, 1665, 1666, 3, 1043, 521, 0, 1666, 1667, 3, 1069, - 534, 0, 1667, 1668, 3, 1069, 534, 0, 1668, 1669, 3, 1061, 530, 0, 1669, - 72, 1, 0, 0, 0, 1670, 1671, 3, 1045, 522, 0, 1671, 1672, 3, 1069, 534, - 0, 1672, 1673, 3, 1067, 533, 0, 1673, 1674, 3, 1077, 538, 0, 1674, 1675, - 3, 1079, 539, 0, 1675, 1676, 3, 1041, 520, 0, 1676, 1677, 3, 1067, 533, - 0, 1677, 1678, 3, 1079, 539, 0, 1678, 74, 1, 0, 0, 0, 1679, 1680, 3, 1041, - 520, 0, 1680, 1681, 3, 1079, 539, 0, 1681, 1682, 3, 1079, 539, 0, 1682, - 1683, 3, 1075, 537, 0, 1683, 1684, 3, 1057, 528, 0, 1684, 1685, 3, 1043, - 521, 0, 1685, 1686, 3, 1081, 540, 0, 1686, 1687, 3, 1079, 539, 0, 1687, - 1688, 3, 1049, 524, 0, 1688, 76, 1, 0, 0, 0, 1689, 1690, 3, 1045, 522, - 0, 1690, 1691, 3, 1069, 534, 0, 1691, 1692, 3, 1063, 531, 0, 1692, 1693, - 3, 1081, 540, 0, 1693, 1694, 3, 1065, 532, 0, 1694, 1695, 3, 1067, 533, - 0, 1695, 78, 1, 0, 0, 0, 1696, 1697, 3, 1045, 522, 0, 1697, 1698, 3, 1069, - 534, 0, 1698, 1699, 3, 1063, 531, 0, 1699, 1700, 3, 1081, 540, 0, 1700, - 1701, 3, 1065, 532, 0, 1701, 1702, 3, 1067, 533, 0, 1702, 1703, 3, 1077, - 538, 0, 1703, 80, 1, 0, 0, 0, 1704, 1705, 3, 1057, 528, 0, 1705, 1706, - 3, 1067, 533, 0, 1706, 1707, 3, 1047, 523, 0, 1707, 1708, 3, 1049, 524, - 0, 1708, 1709, 3, 1087, 543, 0, 1709, 82, 1, 0, 0, 0, 1710, 1711, 3, 1069, - 534, 0, 1711, 1712, 3, 1085, 542, 0, 1712, 1713, 3, 1067, 533, 0, 1713, - 1714, 3, 1049, 524, 0, 1714, 1715, 3, 1075, 537, 0, 1715, 84, 1, 0, 0, - 0, 1716, 1717, 3, 1077, 538, 0, 1717, 1718, 3, 1079, 539, 0, 1718, 1719, - 3, 1069, 534, 0, 1719, 1720, 3, 1075, 537, 0, 1720, 1721, 3, 1049, 524, - 0, 1721, 86, 1, 0, 0, 0, 1722, 1723, 3, 1075, 537, 0, 1723, 1724, 3, 1049, - 524, 0, 1724, 1725, 3, 1051, 525, 0, 1725, 1726, 3, 1049, 524, 0, 1726, - 1727, 3, 1075, 537, 0, 1727, 1728, 3, 1049, 524, 0, 1728, 1729, 3, 1067, - 533, 0, 1729, 1730, 3, 1045, 522, 0, 1730, 1731, 3, 1049, 524, 0, 1731, - 88, 1, 0, 0, 0, 1732, 1733, 3, 1053, 526, 0, 1733, 1734, 3, 1049, 524, - 0, 1734, 1735, 3, 1067, 533, 0, 1735, 1736, 3, 1049, 524, 0, 1736, 1737, - 3, 1075, 537, 0, 1737, 1738, 3, 1041, 520, 0, 1738, 1739, 3, 1063, 531, - 0, 1739, 1740, 3, 1057, 528, 0, 1740, 1741, 3, 1091, 545, 0, 1741, 1742, - 3, 1041, 520, 0, 1742, 1743, 3, 1079, 539, 0, 1743, 1744, 3, 1057, 528, - 0, 1744, 1745, 3, 1069, 534, 0, 1745, 1746, 3, 1067, 533, 0, 1746, 90, - 1, 0, 0, 0, 1747, 1748, 3, 1049, 524, 0, 1748, 1749, 3, 1087, 543, 0, 1749, - 1750, 3, 1079, 539, 0, 1750, 1751, 3, 1049, 524, 0, 1751, 1752, 3, 1067, - 533, 0, 1752, 1753, 3, 1047, 523, 0, 1753, 1754, 3, 1077, 538, 0, 1754, - 92, 1, 0, 0, 0, 1755, 1756, 3, 1041, 520, 0, 1756, 1757, 3, 1047, 523, - 0, 1757, 1758, 3, 1047, 523, 0, 1758, 94, 1, 0, 0, 0, 1759, 1760, 3, 1077, - 538, 0, 1760, 1761, 3, 1049, 524, 0, 1761, 1762, 3, 1079, 539, 0, 1762, - 96, 1, 0, 0, 0, 1763, 1764, 3, 1071, 535, 0, 1764, 1765, 3, 1069, 534, - 0, 1765, 1766, 3, 1077, 538, 0, 1766, 1767, 3, 1057, 528, 0, 1767, 1768, - 3, 1079, 539, 0, 1768, 1769, 3, 1057, 528, 0, 1769, 1770, 3, 1069, 534, - 0, 1770, 1771, 3, 1067, 533, 0, 1771, 98, 1, 0, 0, 0, 1772, 1773, 3, 1047, - 523, 0, 1773, 1774, 3, 1069, 534, 0, 1774, 1775, 3, 1045, 522, 0, 1775, - 1776, 3, 1081, 540, 0, 1776, 1777, 3, 1065, 532, 0, 1777, 1778, 3, 1049, - 524, 0, 1778, 1779, 3, 1067, 533, 0, 1779, 1780, 3, 1079, 539, 0, 1780, - 1781, 3, 1041, 520, 0, 1781, 1782, 3, 1079, 539, 0, 1782, 1783, 3, 1057, - 528, 0, 1783, 1784, 3, 1069, 534, 0, 1784, 1785, 3, 1067, 533, 0, 1785, - 100, 1, 0, 0, 0, 1786, 1787, 3, 1077, 538, 0, 1787, 1788, 3, 1079, 539, - 0, 1788, 1789, 3, 1069, 534, 0, 1789, 1790, 3, 1075, 537, 0, 1790, 1791, - 3, 1041, 520, 0, 1791, 1792, 3, 1053, 526, 0, 1792, 1793, 3, 1049, 524, - 0, 1793, 102, 1, 0, 0, 0, 1794, 1795, 3, 1079, 539, 0, 1795, 1796, 3, 1041, - 520, 0, 1796, 1797, 3, 1043, 521, 0, 1797, 1798, 3, 1063, 531, 0, 1798, - 1799, 3, 1049, 524, 0, 1799, 104, 1, 0, 0, 0, 1800, 1801, 3, 1047, 523, - 0, 1801, 1802, 3, 1049, 524, 0, 1802, 1803, 3, 1063, 531, 0, 1803, 1804, - 3, 1049, 524, 0, 1804, 1805, 3, 1079, 539, 0, 1805, 1807, 3, 1049, 524, - 0, 1806, 1808, 5, 95, 0, 0, 1807, 1806, 1, 0, 0, 0, 1807, 1808, 1, 0, 0, - 0, 1808, 1809, 1, 0, 0, 0, 1809, 1810, 3, 1043, 521, 0, 1810, 1811, 3, - 1049, 524, 0, 1811, 1812, 3, 1055, 527, 0, 1812, 1813, 3, 1041, 520, 0, - 1813, 1814, 3, 1083, 541, 0, 1814, 1815, 3, 1057, 528, 0, 1815, 1816, 3, - 1069, 534, 0, 1816, 1817, 3, 1075, 537, 0, 1817, 106, 1, 0, 0, 0, 1818, - 1819, 3, 1045, 522, 0, 1819, 1820, 3, 1041, 520, 0, 1820, 1821, 3, 1077, - 538, 0, 1821, 1822, 3, 1045, 522, 0, 1822, 1823, 3, 1041, 520, 0, 1823, - 1824, 3, 1047, 523, 0, 1824, 1825, 3, 1049, 524, 0, 1825, 108, 1, 0, 0, - 0, 1826, 1827, 3, 1071, 535, 0, 1827, 1828, 3, 1075, 537, 0, 1828, 1829, - 3, 1049, 524, 0, 1829, 1830, 3, 1083, 541, 0, 1830, 1831, 3, 1049, 524, - 0, 1831, 1832, 3, 1067, 533, 0, 1832, 1833, 3, 1079, 539, 0, 1833, 110, - 1, 0, 0, 0, 1834, 1835, 3, 1045, 522, 0, 1835, 1836, 3, 1069, 534, 0, 1836, - 1837, 3, 1067, 533, 0, 1837, 1838, 3, 1067, 533, 0, 1838, 1839, 3, 1049, - 524, 0, 1839, 1840, 3, 1045, 522, 0, 1840, 1841, 3, 1079, 539, 0, 1841, - 112, 1, 0, 0, 0, 1842, 1843, 3, 1047, 523, 0, 1843, 1844, 3, 1057, 528, - 0, 1844, 1845, 3, 1077, 538, 0, 1845, 1846, 3, 1045, 522, 0, 1846, 1847, - 3, 1069, 534, 0, 1847, 1848, 3, 1067, 533, 0, 1848, 1849, 3, 1067, 533, - 0, 1849, 1850, 3, 1049, 524, 0, 1850, 1851, 3, 1045, 522, 0, 1851, 1852, - 3, 1079, 539, 0, 1852, 114, 1, 0, 0, 0, 1853, 1854, 3, 1063, 531, 0, 1854, - 1855, 3, 1069, 534, 0, 1855, 1856, 3, 1045, 522, 0, 1856, 1857, 3, 1041, - 520, 0, 1857, 1858, 3, 1063, 531, 0, 1858, 116, 1, 0, 0, 0, 1859, 1860, - 3, 1071, 535, 0, 1860, 1861, 3, 1075, 537, 0, 1861, 1862, 3, 1069, 534, - 0, 1862, 1863, 3, 1059, 529, 0, 1863, 1864, 3, 1049, 524, 0, 1864, 1865, - 3, 1045, 522, 0, 1865, 1866, 3, 1079, 539, 0, 1866, 118, 1, 0, 0, 0, 1867, - 1868, 3, 1075, 537, 0, 1868, 1869, 3, 1081, 540, 0, 1869, 1870, 3, 1067, - 533, 0, 1870, 1871, 3, 1079, 539, 0, 1871, 1872, 3, 1057, 528, 0, 1872, - 1873, 3, 1065, 532, 0, 1873, 1874, 3, 1049, 524, 0, 1874, 120, 1, 0, 0, - 0, 1875, 1876, 3, 1043, 521, 0, 1876, 1877, 3, 1075, 537, 0, 1877, 1878, - 3, 1041, 520, 0, 1878, 1879, 3, 1067, 533, 0, 1879, 1880, 3, 1045, 522, - 0, 1880, 1881, 3, 1055, 527, 0, 1881, 122, 1, 0, 0, 0, 1882, 1883, 3, 1079, - 539, 0, 1883, 1884, 3, 1069, 534, 0, 1884, 1885, 3, 1061, 530, 0, 1885, - 1886, 3, 1049, 524, 0, 1886, 1887, 3, 1067, 533, 0, 1887, 124, 1, 0, 0, - 0, 1888, 1889, 3, 1055, 527, 0, 1889, 1890, 3, 1069, 534, 0, 1890, 1891, - 3, 1077, 538, 0, 1891, 1892, 3, 1079, 539, 0, 1892, 126, 1, 0, 0, 0, 1893, - 1894, 3, 1071, 535, 0, 1894, 1895, 3, 1069, 534, 0, 1895, 1896, 3, 1075, - 537, 0, 1896, 1897, 3, 1079, 539, 0, 1897, 128, 1, 0, 0, 0, 1898, 1899, - 3, 1077, 538, 0, 1899, 1900, 3, 1055, 527, 0, 1900, 1901, 3, 1069, 534, - 0, 1901, 1902, 3, 1085, 542, 0, 1902, 130, 1, 0, 0, 0, 1903, 1904, 3, 1047, - 523, 0, 1904, 1905, 3, 1049, 524, 0, 1905, 1906, 3, 1077, 538, 0, 1906, - 1907, 3, 1045, 522, 0, 1907, 1908, 3, 1075, 537, 0, 1908, 1909, 3, 1057, - 528, 0, 1909, 1910, 3, 1043, 521, 0, 1910, 1911, 3, 1049, 524, 0, 1911, - 132, 1, 0, 0, 0, 1912, 1913, 3, 1081, 540, 0, 1913, 1914, 3, 1077, 538, - 0, 1914, 1915, 3, 1049, 524, 0, 1915, 134, 1, 0, 0, 0, 1916, 1917, 3, 1057, - 528, 0, 1917, 1918, 3, 1067, 533, 0, 1918, 1919, 3, 1079, 539, 0, 1919, - 1920, 3, 1075, 537, 0, 1920, 1921, 3, 1069, 534, 0, 1921, 1922, 3, 1077, - 538, 0, 1922, 1923, 3, 1071, 535, 0, 1923, 1924, 3, 1049, 524, 0, 1924, - 1925, 3, 1045, 522, 0, 1925, 1926, 3, 1079, 539, 0, 1926, 136, 1, 0, 0, - 0, 1927, 1928, 3, 1047, 523, 0, 1928, 1929, 3, 1049, 524, 0, 1929, 1930, - 3, 1043, 521, 0, 1930, 1931, 3, 1081, 540, 0, 1931, 1932, 3, 1053, 526, - 0, 1932, 138, 1, 0, 0, 0, 1933, 1934, 3, 1077, 538, 0, 1934, 1935, 3, 1049, - 524, 0, 1935, 1936, 3, 1063, 531, 0, 1936, 1937, 3, 1049, 524, 0, 1937, - 1938, 3, 1045, 522, 0, 1938, 1939, 3, 1079, 539, 0, 1939, 140, 1, 0, 0, - 0, 1940, 1941, 3, 1051, 525, 0, 1941, 1942, 3, 1075, 537, 0, 1942, 1943, - 3, 1069, 534, 0, 1943, 1944, 3, 1065, 532, 0, 1944, 142, 1, 0, 0, 0, 1945, - 1946, 3, 1085, 542, 0, 1946, 1947, 3, 1055, 527, 0, 1947, 1948, 3, 1049, - 524, 0, 1948, 1949, 3, 1075, 537, 0, 1949, 1950, 3, 1049, 524, 0, 1950, - 144, 1, 0, 0, 0, 1951, 1952, 3, 1055, 527, 0, 1952, 1953, 3, 1041, 520, - 0, 1953, 1954, 3, 1083, 541, 0, 1954, 1955, 3, 1057, 528, 0, 1955, 1956, - 3, 1067, 533, 0, 1956, 1957, 3, 1053, 526, 0, 1957, 146, 1, 0, 0, 0, 1958, - 1959, 3, 1069, 534, 0, 1959, 1960, 3, 1051, 525, 0, 1960, 1961, 3, 1051, - 525, 0, 1961, 1962, 3, 1077, 538, 0, 1962, 1963, 3, 1049, 524, 0, 1963, - 1964, 3, 1079, 539, 0, 1964, 148, 1, 0, 0, 0, 1965, 1966, 3, 1063, 531, - 0, 1966, 1967, 3, 1057, 528, 0, 1967, 1968, 3, 1065, 532, 0, 1968, 1969, - 3, 1057, 528, 0, 1969, 1970, 3, 1079, 539, 0, 1970, 150, 1, 0, 0, 0, 1971, - 1972, 3, 1041, 520, 0, 1972, 1973, 3, 1077, 538, 0, 1973, 152, 1, 0, 0, - 0, 1974, 1975, 3, 1075, 537, 0, 1975, 1976, 3, 1049, 524, 0, 1976, 1977, - 3, 1079, 539, 0, 1977, 1978, 3, 1081, 540, 0, 1978, 1979, 3, 1075, 537, - 0, 1979, 1980, 3, 1067, 533, 0, 1980, 1981, 3, 1077, 538, 0, 1981, 154, - 1, 0, 0, 0, 1982, 1983, 3, 1075, 537, 0, 1983, 1984, 3, 1049, 524, 0, 1984, - 1985, 3, 1079, 539, 0, 1985, 1986, 3, 1081, 540, 0, 1986, 1987, 3, 1075, - 537, 0, 1987, 1988, 3, 1067, 533, 0, 1988, 1989, 3, 1057, 528, 0, 1989, - 1990, 3, 1067, 533, 0, 1990, 1991, 3, 1053, 526, 0, 1991, 156, 1, 0, 0, - 0, 1992, 1993, 3, 1045, 522, 0, 1993, 1994, 3, 1041, 520, 0, 1994, 1995, - 3, 1077, 538, 0, 1995, 1996, 3, 1049, 524, 0, 1996, 158, 1, 0, 0, 0, 1997, - 1998, 3, 1085, 542, 0, 1998, 1999, 3, 1055, 527, 0, 1999, 2000, 3, 1049, - 524, 0, 2000, 2001, 3, 1067, 533, 0, 2001, 160, 1, 0, 0, 0, 2002, 2003, - 3, 1079, 539, 0, 2003, 2004, 3, 1055, 527, 0, 2004, 2005, 3, 1049, 524, - 0, 2005, 2006, 3, 1067, 533, 0, 2006, 162, 1, 0, 0, 0, 2007, 2008, 3, 1049, - 524, 0, 2008, 2009, 3, 1063, 531, 0, 2009, 2010, 3, 1077, 538, 0, 2010, - 2011, 3, 1049, 524, 0, 2011, 164, 1, 0, 0, 0, 2012, 2013, 3, 1049, 524, - 0, 2013, 2014, 3, 1067, 533, 0, 2014, 2015, 3, 1047, 523, 0, 2015, 166, - 1, 0, 0, 0, 2016, 2017, 3, 1047, 523, 0, 2017, 2018, 3, 1057, 528, 0, 2018, - 2019, 3, 1077, 538, 0, 2019, 2020, 3, 1079, 539, 0, 2020, 2021, 3, 1057, - 528, 0, 2021, 2022, 3, 1067, 533, 0, 2022, 2023, 3, 1045, 522, 0, 2023, - 2024, 3, 1079, 539, 0, 2024, 168, 1, 0, 0, 0, 2025, 2026, 3, 1041, 520, - 0, 2026, 2027, 3, 1063, 531, 0, 2027, 2028, 3, 1063, 531, 0, 2028, 170, - 1, 0, 0, 0, 2029, 2030, 3, 1059, 529, 0, 2030, 2031, 3, 1069, 534, 0, 2031, - 2032, 3, 1057, 528, 0, 2032, 2033, 3, 1067, 533, 0, 2033, 172, 1, 0, 0, - 0, 2034, 2035, 3, 1063, 531, 0, 2035, 2036, 3, 1049, 524, 0, 2036, 2037, - 3, 1051, 525, 0, 2037, 2038, 3, 1079, 539, 0, 2038, 174, 1, 0, 0, 0, 2039, - 2040, 3, 1075, 537, 0, 2040, 2041, 3, 1057, 528, 0, 2041, 2042, 3, 1053, - 526, 0, 2042, 2043, 3, 1055, 527, 0, 2043, 2044, 3, 1079, 539, 0, 2044, - 176, 1, 0, 0, 0, 2045, 2046, 3, 1057, 528, 0, 2046, 2047, 3, 1067, 533, - 0, 2047, 2048, 3, 1067, 533, 0, 2048, 2049, 3, 1049, 524, 0, 2049, 2050, - 3, 1075, 537, 0, 2050, 178, 1, 0, 0, 0, 2051, 2052, 3, 1069, 534, 0, 2052, - 2053, 3, 1081, 540, 0, 2053, 2054, 3, 1079, 539, 0, 2054, 2055, 3, 1049, - 524, 0, 2055, 2056, 3, 1075, 537, 0, 2056, 180, 1, 0, 0, 0, 2057, 2058, - 3, 1051, 525, 0, 2058, 2059, 3, 1081, 540, 0, 2059, 2060, 3, 1063, 531, - 0, 2060, 2061, 3, 1063, 531, 0, 2061, 182, 1, 0, 0, 0, 2062, 2063, 3, 1045, - 522, 0, 2063, 2064, 3, 1075, 537, 0, 2064, 2065, 3, 1069, 534, 0, 2065, - 2066, 3, 1077, 538, 0, 2066, 2067, 3, 1077, 538, 0, 2067, 184, 1, 0, 0, - 0, 2068, 2069, 3, 1069, 534, 0, 2069, 2070, 3, 1067, 533, 0, 2070, 186, - 1, 0, 0, 0, 2071, 2072, 3, 1041, 520, 0, 2072, 2073, 3, 1077, 538, 0, 2073, - 2074, 3, 1045, 522, 0, 2074, 188, 1, 0, 0, 0, 2075, 2076, 3, 1047, 523, - 0, 2076, 2077, 3, 1049, 524, 0, 2077, 2078, 3, 1077, 538, 0, 2078, 2079, - 3, 1045, 522, 0, 2079, 190, 1, 0, 0, 0, 2080, 2081, 3, 1043, 521, 0, 2081, - 2082, 3, 1049, 524, 0, 2082, 2083, 3, 1053, 526, 0, 2083, 2084, 3, 1057, - 528, 0, 2084, 2085, 3, 1067, 533, 0, 2085, 192, 1, 0, 0, 0, 2086, 2087, - 3, 1047, 523, 0, 2087, 2088, 3, 1049, 524, 0, 2088, 2089, 3, 1045, 522, - 0, 2089, 2090, 3, 1063, 531, 0, 2090, 2091, 3, 1041, 520, 0, 2091, 2092, - 3, 1075, 537, 0, 2092, 2093, 3, 1049, 524, 0, 2093, 194, 1, 0, 0, 0, 2094, - 2095, 3, 1045, 522, 0, 2095, 2096, 3, 1055, 527, 0, 2096, 2097, 3, 1041, - 520, 0, 2097, 2098, 3, 1067, 533, 0, 2098, 2099, 3, 1053, 526, 0, 2099, - 2100, 3, 1049, 524, 0, 2100, 196, 1, 0, 0, 0, 2101, 2102, 3, 1075, 537, - 0, 2102, 2103, 3, 1049, 524, 0, 2103, 2104, 3, 1079, 539, 0, 2104, 2105, - 3, 1075, 537, 0, 2105, 2106, 3, 1057, 528, 0, 2106, 2107, 3, 1049, 524, - 0, 2107, 2108, 3, 1083, 541, 0, 2108, 2109, 3, 1049, 524, 0, 2109, 198, - 1, 0, 0, 0, 2110, 2111, 3, 1047, 523, 0, 2111, 2112, 3, 1049, 524, 0, 2112, - 2113, 3, 1063, 531, 0, 2113, 2114, 3, 1049, 524, 0, 2114, 2115, 3, 1079, - 539, 0, 2115, 2116, 3, 1049, 524, 0, 2116, 200, 1, 0, 0, 0, 2117, 2118, - 3, 1045, 522, 0, 2118, 2119, 3, 1069, 534, 0, 2119, 2120, 3, 1065, 532, - 0, 2120, 2121, 3, 1065, 532, 0, 2121, 2122, 3, 1057, 528, 0, 2122, 2123, - 3, 1079, 539, 0, 2123, 202, 1, 0, 0, 0, 2124, 2125, 3, 1075, 537, 0, 2125, - 2126, 3, 1069, 534, 0, 2126, 2127, 3, 1063, 531, 0, 2127, 2128, 3, 1063, - 531, 0, 2128, 2129, 3, 1043, 521, 0, 2129, 2130, 3, 1041, 520, 0, 2130, - 2131, 3, 1045, 522, 0, 2131, 2132, 3, 1061, 530, 0, 2132, 204, 1, 0, 0, - 0, 2133, 2134, 3, 1063, 531, 0, 2134, 2135, 3, 1069, 534, 0, 2135, 2136, - 3, 1069, 534, 0, 2136, 2137, 3, 1071, 535, 0, 2137, 206, 1, 0, 0, 0, 2138, - 2139, 3, 1085, 542, 0, 2139, 2140, 3, 1055, 527, 0, 2140, 2141, 3, 1057, - 528, 0, 2141, 2142, 3, 1063, 531, 0, 2142, 2143, 3, 1049, 524, 0, 2143, - 208, 1, 0, 0, 0, 2144, 2145, 3, 1057, 528, 0, 2145, 2146, 3, 1051, 525, - 0, 2146, 210, 1, 0, 0, 0, 2147, 2148, 3, 1049, 524, 0, 2148, 2149, 3, 1063, - 531, 0, 2149, 2150, 3, 1077, 538, 0, 2150, 2151, 3, 1057, 528, 0, 2151, - 2152, 3, 1051, 525, 0, 2152, 212, 1, 0, 0, 0, 2153, 2154, 3, 1049, 524, - 0, 2154, 2155, 3, 1063, 531, 0, 2155, 2156, 3, 1077, 538, 0, 2156, 2157, - 3, 1049, 524, 0, 2157, 2158, 3, 1057, 528, 0, 2158, 2159, 3, 1051, 525, - 0, 2159, 214, 1, 0, 0, 0, 2160, 2161, 3, 1045, 522, 0, 2161, 2162, 3, 1069, - 534, 0, 2162, 2163, 3, 1067, 533, 0, 2163, 2164, 3, 1079, 539, 0, 2164, - 2165, 3, 1057, 528, 0, 2165, 2166, 3, 1067, 533, 0, 2166, 2167, 3, 1081, - 540, 0, 2167, 2168, 3, 1049, 524, 0, 2168, 216, 1, 0, 0, 0, 2169, 2170, - 3, 1043, 521, 0, 2170, 2171, 3, 1075, 537, 0, 2171, 2172, 3, 1049, 524, - 0, 2172, 2173, 3, 1041, 520, 0, 2173, 2174, 3, 1061, 530, 0, 2174, 218, - 1, 0, 0, 0, 2175, 2176, 3, 1075, 537, 0, 2176, 2177, 3, 1049, 524, 0, 2177, - 2178, 3, 1079, 539, 0, 2178, 2179, 3, 1081, 540, 0, 2179, 2180, 3, 1075, - 537, 0, 2180, 2181, 3, 1067, 533, 0, 2181, 220, 1, 0, 0, 0, 2182, 2183, - 3, 1079, 539, 0, 2183, 2184, 3, 1055, 527, 0, 2184, 2185, 3, 1075, 537, - 0, 2185, 2186, 3, 1069, 534, 0, 2186, 2187, 3, 1085, 542, 0, 2187, 222, - 1, 0, 0, 0, 2188, 2189, 3, 1063, 531, 0, 2189, 2190, 3, 1069, 534, 0, 2190, - 2191, 3, 1053, 526, 0, 2191, 224, 1, 0, 0, 0, 2192, 2193, 3, 1045, 522, - 0, 2193, 2194, 3, 1041, 520, 0, 2194, 2195, 3, 1063, 531, 0, 2195, 2196, - 3, 1063, 531, 0, 2196, 226, 1, 0, 0, 0, 2197, 2198, 3, 1059, 529, 0, 2198, - 2199, 3, 1041, 520, 0, 2199, 2200, 3, 1083, 541, 0, 2200, 2201, 3, 1041, - 520, 0, 2201, 228, 1, 0, 0, 0, 2202, 2203, 3, 1059, 529, 0, 2203, 2204, - 3, 1041, 520, 0, 2204, 2205, 3, 1083, 541, 0, 2205, 2206, 3, 1041, 520, - 0, 2206, 2207, 3, 1077, 538, 0, 2207, 2208, 3, 1045, 522, 0, 2208, 2209, - 3, 1075, 537, 0, 2209, 2210, 3, 1057, 528, 0, 2210, 2211, 3, 1071, 535, - 0, 2211, 2212, 3, 1079, 539, 0, 2212, 230, 1, 0, 0, 0, 2213, 2214, 3, 1041, - 520, 0, 2214, 2215, 3, 1045, 522, 0, 2215, 2216, 3, 1079, 539, 0, 2216, - 2217, 3, 1057, 528, 0, 2217, 2218, 3, 1069, 534, 0, 2218, 2219, 3, 1067, - 533, 0, 2219, 232, 1, 0, 0, 0, 2220, 2221, 3, 1041, 520, 0, 2221, 2222, - 3, 1045, 522, 0, 2222, 2223, 3, 1079, 539, 0, 2223, 2224, 3, 1057, 528, - 0, 2224, 2225, 3, 1069, 534, 0, 2225, 2226, 3, 1067, 533, 0, 2226, 2227, - 3, 1077, 538, 0, 2227, 234, 1, 0, 0, 0, 2228, 2229, 3, 1045, 522, 0, 2229, - 2230, 3, 1063, 531, 0, 2230, 2231, 3, 1069, 534, 0, 2231, 2232, 3, 1077, - 538, 0, 2232, 2233, 3, 1049, 524, 0, 2233, 236, 1, 0, 0, 0, 2234, 2235, - 3, 1067, 533, 0, 2235, 2236, 3, 1069, 534, 0, 2236, 2237, 3, 1047, 523, - 0, 2237, 2238, 3, 1049, 524, 0, 2238, 238, 1, 0, 0, 0, 2239, 2240, 3, 1049, - 524, 0, 2240, 2241, 3, 1083, 541, 0, 2241, 2242, 3, 1049, 524, 0, 2242, - 2243, 3, 1067, 533, 0, 2243, 2244, 3, 1079, 539, 0, 2244, 2245, 3, 1077, - 538, 0, 2245, 240, 1, 0, 0, 0, 2246, 2247, 3, 1055, 527, 0, 2247, 2248, - 3, 1049, 524, 0, 2248, 2249, 3, 1041, 520, 0, 2249, 2250, 3, 1047, 523, - 0, 2250, 242, 1, 0, 0, 0, 2251, 2252, 3, 1079, 539, 0, 2252, 2253, 3, 1041, - 520, 0, 2253, 2254, 3, 1057, 528, 0, 2254, 2255, 3, 1063, 531, 0, 2255, - 244, 1, 0, 0, 0, 2256, 2257, 3, 1051, 525, 0, 2257, 2258, 3, 1057, 528, - 0, 2258, 2259, 3, 1067, 533, 0, 2259, 2260, 3, 1047, 523, 0, 2260, 246, - 1, 0, 0, 0, 2261, 2262, 3, 1077, 538, 0, 2262, 2263, 3, 1069, 534, 0, 2263, - 2264, 3, 1075, 537, 0, 2264, 2265, 3, 1079, 539, 0, 2265, 248, 1, 0, 0, - 0, 2266, 2267, 3, 1081, 540, 0, 2267, 2268, 3, 1067, 533, 0, 2268, 2269, - 3, 1057, 528, 0, 2269, 2270, 3, 1069, 534, 0, 2270, 2271, 3, 1067, 533, - 0, 2271, 250, 1, 0, 0, 0, 2272, 2273, 3, 1057, 528, 0, 2273, 2274, 3, 1067, - 533, 0, 2274, 2275, 3, 1079, 539, 0, 2275, 2276, 3, 1049, 524, 0, 2276, - 2277, 3, 1075, 537, 0, 2277, 2278, 3, 1077, 538, 0, 2278, 2279, 3, 1049, - 524, 0, 2279, 2280, 3, 1045, 522, 0, 2280, 2281, 3, 1079, 539, 0, 2281, - 252, 1, 0, 0, 0, 2282, 2283, 3, 1077, 538, 0, 2283, 2284, 3, 1081, 540, - 0, 2284, 2285, 3, 1043, 521, 0, 2285, 2286, 3, 1079, 539, 0, 2286, 2287, - 3, 1075, 537, 0, 2287, 2288, 3, 1041, 520, 0, 2288, 2289, 3, 1045, 522, - 0, 2289, 2290, 3, 1079, 539, 0, 2290, 254, 1, 0, 0, 0, 2291, 2292, 3, 1045, - 522, 0, 2292, 2293, 3, 1069, 534, 0, 2293, 2294, 3, 1067, 533, 0, 2294, - 2295, 3, 1079, 539, 0, 2295, 2296, 3, 1041, 520, 0, 2296, 2297, 3, 1057, - 528, 0, 2297, 2298, 3, 1067, 533, 0, 2298, 2299, 3, 1077, 538, 0, 2299, - 256, 1, 0, 0, 0, 2300, 2301, 3, 1041, 520, 0, 2301, 2302, 3, 1083, 541, - 0, 2302, 2303, 3, 1049, 524, 0, 2303, 2304, 3, 1075, 537, 0, 2304, 2305, - 3, 1041, 520, 0, 2305, 2306, 3, 1053, 526, 0, 2306, 2307, 3, 1049, 524, - 0, 2307, 258, 1, 0, 0, 0, 2308, 2309, 3, 1065, 532, 0, 2309, 2310, 3, 1057, - 528, 0, 2310, 2311, 3, 1067, 533, 0, 2311, 2312, 3, 1057, 528, 0, 2312, - 2313, 3, 1065, 532, 0, 2313, 2314, 3, 1081, 540, 0, 2314, 2315, 3, 1065, - 532, 0, 2315, 260, 1, 0, 0, 0, 2316, 2317, 3, 1065, 532, 0, 2317, 2318, - 3, 1041, 520, 0, 2318, 2319, 3, 1087, 543, 0, 2319, 2320, 3, 1057, 528, - 0, 2320, 2321, 3, 1065, 532, 0, 2321, 2322, 3, 1081, 540, 0, 2322, 2323, - 3, 1065, 532, 0, 2323, 262, 1, 0, 0, 0, 2324, 2325, 3, 1063, 531, 0, 2325, - 2326, 3, 1057, 528, 0, 2326, 2327, 3, 1077, 538, 0, 2327, 2328, 3, 1079, - 539, 0, 2328, 264, 1, 0, 0, 0, 2329, 2330, 3, 1075, 537, 0, 2330, 2331, - 3, 1049, 524, 0, 2331, 2332, 3, 1065, 532, 0, 2332, 2333, 3, 1069, 534, - 0, 2333, 2334, 3, 1083, 541, 0, 2334, 2335, 3, 1049, 524, 0, 2335, 266, - 1, 0, 0, 0, 2336, 2337, 3, 1049, 524, 0, 2337, 2338, 3, 1073, 536, 0, 2338, - 2339, 3, 1081, 540, 0, 2339, 2340, 3, 1041, 520, 0, 2340, 2341, 3, 1063, - 531, 0, 2341, 2342, 3, 1077, 538, 0, 2342, 268, 1, 0, 0, 0, 2343, 2344, - 3, 1057, 528, 0, 2344, 2345, 3, 1067, 533, 0, 2345, 2346, 3, 1051, 525, - 0, 2346, 2347, 3, 1069, 534, 0, 2347, 270, 1, 0, 0, 0, 2348, 2349, 3, 1085, - 542, 0, 2349, 2350, 3, 1041, 520, 0, 2350, 2351, 3, 1075, 537, 0, 2351, - 2352, 3, 1067, 533, 0, 2352, 2353, 3, 1057, 528, 0, 2353, 2354, 3, 1067, - 533, 0, 2354, 2355, 3, 1053, 526, 0, 2355, 272, 1, 0, 0, 0, 2356, 2357, - 3, 1079, 539, 0, 2357, 2358, 3, 1075, 537, 0, 2358, 2359, 3, 1041, 520, - 0, 2359, 2360, 3, 1045, 522, 0, 2360, 2361, 3, 1049, 524, 0, 2361, 274, - 1, 0, 0, 0, 2362, 2363, 3, 1045, 522, 0, 2363, 2364, 3, 1075, 537, 0, 2364, - 2365, 3, 1057, 528, 0, 2365, 2366, 3, 1079, 539, 0, 2366, 2367, 3, 1057, - 528, 0, 2367, 2368, 3, 1045, 522, 0, 2368, 2369, 3, 1041, 520, 0, 2369, - 2370, 3, 1063, 531, 0, 2370, 276, 1, 0, 0, 0, 2371, 2372, 3, 1085, 542, - 0, 2372, 2373, 3, 1057, 528, 0, 2373, 2374, 3, 1079, 539, 0, 2374, 2375, - 3, 1055, 527, 0, 2375, 278, 1, 0, 0, 0, 2376, 2377, 3, 1049, 524, 0, 2377, - 2378, 3, 1065, 532, 0, 2378, 2379, 3, 1071, 535, 0, 2379, 2380, 3, 1079, - 539, 0, 2380, 2381, 3, 1089, 544, 0, 2381, 280, 1, 0, 0, 0, 2382, 2383, - 3, 1069, 534, 0, 2383, 2384, 3, 1043, 521, 0, 2384, 2385, 3, 1059, 529, - 0, 2385, 2386, 3, 1049, 524, 0, 2386, 2387, 3, 1045, 522, 0, 2387, 2388, - 3, 1079, 539, 0, 2388, 282, 1, 0, 0, 0, 2389, 2390, 3, 1069, 534, 0, 2390, - 2391, 3, 1043, 521, 0, 2391, 2392, 3, 1059, 529, 0, 2392, 2393, 3, 1049, - 524, 0, 2393, 2394, 3, 1045, 522, 0, 2394, 2395, 3, 1079, 539, 0, 2395, - 2396, 3, 1077, 538, 0, 2396, 284, 1, 0, 0, 0, 2397, 2398, 3, 1071, 535, - 0, 2398, 2399, 3, 1041, 520, 0, 2399, 2400, 3, 1053, 526, 0, 2400, 2401, - 3, 1049, 524, 0, 2401, 2402, 3, 1077, 538, 0, 2402, 286, 1, 0, 0, 0, 2403, - 2404, 3, 1063, 531, 0, 2404, 2405, 3, 1041, 520, 0, 2405, 2406, 3, 1089, - 544, 0, 2406, 2407, 3, 1069, 534, 0, 2407, 2408, 3, 1081, 540, 0, 2408, - 2409, 3, 1079, 539, 0, 2409, 2410, 3, 1077, 538, 0, 2410, 288, 1, 0, 0, - 0, 2411, 2412, 3, 1077, 538, 0, 2412, 2413, 3, 1067, 533, 0, 2413, 2414, - 3, 1057, 528, 0, 2414, 2415, 3, 1071, 535, 0, 2415, 2416, 3, 1071, 535, - 0, 2416, 2417, 3, 1049, 524, 0, 2417, 2418, 3, 1079, 539, 0, 2418, 2419, - 3, 1077, 538, 0, 2419, 290, 1, 0, 0, 0, 2420, 2421, 3, 1067, 533, 0, 2421, - 2422, 3, 1069, 534, 0, 2422, 2423, 3, 1079, 539, 0, 2423, 2424, 3, 1049, - 524, 0, 2424, 2425, 3, 1043, 521, 0, 2425, 2426, 3, 1069, 534, 0, 2426, - 2427, 3, 1069, 534, 0, 2427, 2428, 3, 1061, 530, 0, 2428, 2429, 3, 1077, - 538, 0, 2429, 292, 1, 0, 0, 0, 2430, 2431, 3, 1071, 535, 0, 2431, 2432, - 3, 1063, 531, 0, 2432, 2433, 3, 1041, 520, 0, 2433, 2434, 3, 1045, 522, - 0, 2434, 2435, 3, 1049, 524, 0, 2435, 2436, 3, 1055, 527, 0, 2436, 2437, - 3, 1069, 534, 0, 2437, 2438, 3, 1063, 531, 0, 2438, 2439, 3, 1047, 523, - 0, 2439, 2440, 3, 1049, 524, 0, 2440, 2441, 3, 1075, 537, 0, 2441, 294, - 1, 0, 0, 0, 2442, 2443, 3, 1077, 538, 0, 2443, 2444, 3, 1067, 533, 0, 2444, - 2445, 3, 1057, 528, 0, 2445, 2446, 3, 1071, 535, 0, 2446, 2447, 3, 1071, - 535, 0, 2447, 2448, 3, 1049, 524, 0, 2448, 2449, 3, 1079, 539, 0, 2449, - 2450, 3, 1045, 522, 0, 2450, 2451, 3, 1041, 520, 0, 2451, 2452, 3, 1063, - 531, 0, 2452, 2453, 3, 1063, 531, 0, 2453, 296, 1, 0, 0, 0, 2454, 2455, - 3, 1063, 531, 0, 2455, 2456, 3, 1041, 520, 0, 2456, 2457, 3, 1089, 544, - 0, 2457, 2458, 3, 1069, 534, 0, 2458, 2459, 3, 1081, 540, 0, 2459, 2460, - 3, 1079, 539, 0, 2460, 2461, 3, 1053, 526, 0, 2461, 2462, 3, 1075, 537, - 0, 2462, 2463, 3, 1057, 528, 0, 2463, 2464, 3, 1047, 523, 0, 2464, 298, - 1, 0, 0, 0, 2465, 2466, 3, 1047, 523, 0, 2466, 2467, 3, 1041, 520, 0, 2467, - 2468, 3, 1079, 539, 0, 2468, 2469, 3, 1041, 520, 0, 2469, 2470, 3, 1053, - 526, 0, 2470, 2471, 3, 1075, 537, 0, 2471, 2472, 3, 1057, 528, 0, 2472, - 2473, 3, 1047, 523, 0, 2473, 300, 1, 0, 0, 0, 2474, 2475, 3, 1047, 523, - 0, 2475, 2476, 3, 1041, 520, 0, 2476, 2477, 3, 1079, 539, 0, 2477, 2478, - 3, 1041, 520, 0, 2478, 2479, 3, 1083, 541, 0, 2479, 2480, 3, 1057, 528, - 0, 2480, 2481, 3, 1049, 524, 0, 2481, 2482, 3, 1085, 542, 0, 2482, 302, - 1, 0, 0, 0, 2483, 2484, 3, 1063, 531, 0, 2484, 2485, 3, 1057, 528, 0, 2485, - 2486, 3, 1077, 538, 0, 2486, 2487, 3, 1079, 539, 0, 2487, 2488, 3, 1083, - 541, 0, 2488, 2489, 3, 1057, 528, 0, 2489, 2490, 3, 1049, 524, 0, 2490, - 2491, 3, 1085, 542, 0, 2491, 304, 1, 0, 0, 0, 2492, 2493, 3, 1053, 526, - 0, 2493, 2494, 3, 1041, 520, 0, 2494, 2495, 3, 1063, 531, 0, 2495, 2496, - 3, 1063, 531, 0, 2496, 2497, 3, 1049, 524, 0, 2497, 2498, 3, 1075, 537, - 0, 2498, 2499, 3, 1089, 544, 0, 2499, 306, 1, 0, 0, 0, 2500, 2501, 3, 1045, - 522, 0, 2501, 2502, 3, 1069, 534, 0, 2502, 2503, 3, 1067, 533, 0, 2503, - 2504, 3, 1079, 539, 0, 2504, 2505, 3, 1041, 520, 0, 2505, 2506, 3, 1057, - 528, 0, 2506, 2507, 3, 1067, 533, 0, 2507, 2508, 3, 1049, 524, 0, 2508, - 2509, 3, 1075, 537, 0, 2509, 308, 1, 0, 0, 0, 2510, 2511, 3, 1075, 537, - 0, 2511, 2512, 3, 1069, 534, 0, 2512, 2513, 3, 1085, 542, 0, 2513, 310, - 1, 0, 0, 0, 2514, 2515, 3, 1057, 528, 0, 2515, 2516, 3, 1079, 539, 0, 2516, - 2517, 3, 1049, 524, 0, 2517, 2518, 3, 1065, 532, 0, 2518, 312, 1, 0, 0, - 0, 2519, 2520, 3, 1045, 522, 0, 2520, 2521, 3, 1069, 534, 0, 2521, 2522, - 3, 1067, 533, 0, 2522, 2523, 3, 1079, 539, 0, 2523, 2524, 3, 1075, 537, - 0, 2524, 2525, 3, 1069, 534, 0, 2525, 2526, 3, 1063, 531, 0, 2526, 2527, - 3, 1043, 521, 0, 2527, 2528, 3, 1041, 520, 0, 2528, 2529, 3, 1075, 537, - 0, 2529, 314, 1, 0, 0, 0, 2530, 2531, 3, 1077, 538, 0, 2531, 2532, 3, 1049, - 524, 0, 2532, 2533, 3, 1041, 520, 0, 2533, 2534, 3, 1075, 537, 0, 2534, - 2535, 3, 1045, 522, 0, 2535, 2536, 3, 1055, 527, 0, 2536, 316, 1, 0, 0, - 0, 2537, 2538, 3, 1077, 538, 0, 2538, 2539, 3, 1049, 524, 0, 2539, 2540, - 3, 1041, 520, 0, 2540, 2541, 3, 1075, 537, 0, 2541, 2542, 3, 1045, 522, - 0, 2542, 2543, 3, 1055, 527, 0, 2543, 2544, 3, 1043, 521, 0, 2544, 2545, - 3, 1041, 520, 0, 2545, 2546, 3, 1075, 537, 0, 2546, 318, 1, 0, 0, 0, 2547, - 2548, 3, 1067, 533, 0, 2548, 2549, 3, 1041, 520, 0, 2549, 2550, 3, 1083, - 541, 0, 2550, 2551, 3, 1057, 528, 0, 2551, 2552, 3, 1053, 526, 0, 2552, - 2553, 3, 1041, 520, 0, 2553, 2554, 3, 1079, 539, 0, 2554, 2555, 3, 1057, - 528, 0, 2555, 2556, 3, 1069, 534, 0, 2556, 2557, 3, 1067, 533, 0, 2557, - 2558, 3, 1063, 531, 0, 2558, 2559, 3, 1057, 528, 0, 2559, 2560, 3, 1077, - 538, 0, 2560, 2561, 3, 1079, 539, 0, 2561, 320, 1, 0, 0, 0, 2562, 2563, - 3, 1041, 520, 0, 2563, 2564, 3, 1045, 522, 0, 2564, 2565, 3, 1079, 539, - 0, 2565, 2566, 3, 1057, 528, 0, 2566, 2567, 3, 1069, 534, 0, 2567, 2568, - 3, 1067, 533, 0, 2568, 2569, 3, 1043, 521, 0, 2569, 2570, 3, 1081, 540, - 0, 2570, 2571, 3, 1079, 539, 0, 2571, 2572, 3, 1079, 539, 0, 2572, 2573, - 3, 1069, 534, 0, 2573, 2574, 3, 1067, 533, 0, 2574, 322, 1, 0, 0, 0, 2575, - 2576, 3, 1063, 531, 0, 2576, 2577, 3, 1057, 528, 0, 2577, 2578, 3, 1067, - 533, 0, 2578, 2579, 3, 1061, 530, 0, 2579, 2580, 3, 1043, 521, 0, 2580, - 2581, 3, 1081, 540, 0, 2581, 2582, 3, 1079, 539, 0, 2582, 2583, 3, 1079, - 539, 0, 2583, 2584, 3, 1069, 534, 0, 2584, 2585, 3, 1067, 533, 0, 2585, - 324, 1, 0, 0, 0, 2586, 2587, 3, 1043, 521, 0, 2587, 2588, 3, 1081, 540, - 0, 2588, 2589, 3, 1079, 539, 0, 2589, 2590, 3, 1079, 539, 0, 2590, 2591, - 3, 1069, 534, 0, 2591, 2592, 3, 1067, 533, 0, 2592, 326, 1, 0, 0, 0, 2593, - 2594, 3, 1079, 539, 0, 2594, 2595, 3, 1057, 528, 0, 2595, 2596, 3, 1079, - 539, 0, 2596, 2597, 3, 1063, 531, 0, 2597, 2598, 3, 1049, 524, 0, 2598, - 328, 1, 0, 0, 0, 2599, 2600, 3, 1047, 523, 0, 2600, 2601, 3, 1089, 544, - 0, 2601, 2602, 3, 1067, 533, 0, 2602, 2603, 3, 1041, 520, 0, 2603, 2604, - 3, 1065, 532, 0, 2604, 2605, 3, 1057, 528, 0, 2605, 2606, 3, 1045, 522, - 0, 2606, 2607, 3, 1079, 539, 0, 2607, 2608, 3, 1049, 524, 0, 2608, 2609, - 3, 1087, 543, 0, 2609, 2610, 3, 1079, 539, 0, 2610, 330, 1, 0, 0, 0, 2611, - 2612, 3, 1047, 523, 0, 2612, 2613, 3, 1089, 544, 0, 2613, 2614, 3, 1067, - 533, 0, 2614, 2615, 3, 1041, 520, 0, 2615, 2616, 3, 1065, 532, 0, 2616, - 2617, 3, 1057, 528, 0, 2617, 2618, 3, 1045, 522, 0, 2618, 332, 1, 0, 0, - 0, 2619, 2620, 3, 1077, 538, 0, 2620, 2621, 3, 1079, 539, 0, 2621, 2622, - 3, 1041, 520, 0, 2622, 2623, 3, 1079, 539, 0, 2623, 2624, 3, 1057, 528, - 0, 2624, 2625, 3, 1045, 522, 0, 2625, 2626, 3, 1079, 539, 0, 2626, 2627, - 3, 1049, 524, 0, 2627, 2628, 3, 1087, 543, 0, 2628, 2629, 3, 1079, 539, - 0, 2629, 334, 1, 0, 0, 0, 2630, 2631, 3, 1063, 531, 0, 2631, 2632, 3, 1041, - 520, 0, 2632, 2633, 3, 1043, 521, 0, 2633, 2634, 3, 1049, 524, 0, 2634, - 2635, 3, 1063, 531, 0, 2635, 336, 1, 0, 0, 0, 2636, 2637, 3, 1079, 539, - 0, 2637, 2638, 3, 1049, 524, 0, 2638, 2639, 3, 1087, 543, 0, 2639, 2640, - 3, 1079, 539, 0, 2640, 2641, 3, 1043, 521, 0, 2641, 2642, 3, 1069, 534, - 0, 2642, 2643, 3, 1087, 543, 0, 2643, 338, 1, 0, 0, 0, 2644, 2645, 3, 1079, - 539, 0, 2645, 2646, 3, 1049, 524, 0, 2646, 2647, 3, 1087, 543, 0, 2647, - 2648, 3, 1079, 539, 0, 2648, 2649, 3, 1041, 520, 0, 2649, 2650, 3, 1075, - 537, 0, 2650, 2651, 3, 1049, 524, 0, 2651, 2652, 3, 1041, 520, 0, 2652, - 340, 1, 0, 0, 0, 2653, 2654, 3, 1047, 523, 0, 2654, 2655, 3, 1041, 520, - 0, 2655, 2656, 3, 1079, 539, 0, 2656, 2657, 3, 1049, 524, 0, 2657, 2658, - 3, 1071, 535, 0, 2658, 2659, 3, 1057, 528, 0, 2659, 2660, 3, 1045, 522, - 0, 2660, 2661, 3, 1061, 530, 0, 2661, 2662, 3, 1049, 524, 0, 2662, 2663, - 3, 1075, 537, 0, 2663, 342, 1, 0, 0, 0, 2664, 2665, 3, 1075, 537, 0, 2665, - 2666, 3, 1041, 520, 0, 2666, 2667, 3, 1047, 523, 0, 2667, 2668, 3, 1057, - 528, 0, 2668, 2669, 3, 1069, 534, 0, 2669, 2670, 3, 1043, 521, 0, 2670, - 2671, 3, 1081, 540, 0, 2671, 2672, 3, 1079, 539, 0, 2672, 2673, 3, 1079, - 539, 0, 2673, 2674, 3, 1069, 534, 0, 2674, 2675, 3, 1067, 533, 0, 2675, - 2676, 3, 1077, 538, 0, 2676, 344, 1, 0, 0, 0, 2677, 2678, 3, 1047, 523, - 0, 2678, 2679, 3, 1075, 537, 0, 2679, 2680, 3, 1069, 534, 0, 2680, 2681, - 3, 1071, 535, 0, 2681, 2682, 3, 1047, 523, 0, 2682, 2683, 3, 1069, 534, - 0, 2683, 2684, 3, 1085, 542, 0, 2684, 2685, 3, 1067, 533, 0, 2685, 346, - 1, 0, 0, 0, 2686, 2687, 3, 1045, 522, 0, 2687, 2688, 3, 1069, 534, 0, 2688, - 2689, 3, 1065, 532, 0, 2689, 2690, 3, 1043, 521, 0, 2690, 2691, 3, 1069, - 534, 0, 2691, 2692, 3, 1043, 521, 0, 2692, 2693, 3, 1069, 534, 0, 2693, - 2694, 3, 1087, 543, 0, 2694, 348, 1, 0, 0, 0, 2695, 2696, 3, 1045, 522, - 0, 2696, 2697, 3, 1055, 527, 0, 2697, 2698, 3, 1049, 524, 0, 2698, 2699, - 3, 1045, 522, 0, 2699, 2700, 3, 1061, 530, 0, 2700, 2701, 3, 1043, 521, - 0, 2701, 2702, 3, 1069, 534, 0, 2702, 2703, 3, 1087, 543, 0, 2703, 350, - 1, 0, 0, 0, 2704, 2705, 3, 1075, 537, 0, 2705, 2706, 3, 1049, 524, 0, 2706, - 2707, 3, 1051, 525, 0, 2707, 2708, 3, 1049, 524, 0, 2708, 2709, 3, 1075, - 537, 0, 2709, 2710, 3, 1049, 524, 0, 2710, 2711, 3, 1067, 533, 0, 2711, - 2712, 3, 1045, 522, 0, 2712, 2713, 3, 1049, 524, 0, 2713, 2714, 3, 1077, - 538, 0, 2714, 2715, 3, 1049, 524, 0, 2715, 2716, 3, 1063, 531, 0, 2716, - 2717, 3, 1049, 524, 0, 2717, 2718, 3, 1045, 522, 0, 2718, 2719, 3, 1079, - 539, 0, 2719, 2720, 3, 1069, 534, 0, 2720, 2721, 3, 1075, 537, 0, 2721, - 352, 1, 0, 0, 0, 2722, 2723, 3, 1057, 528, 0, 2723, 2724, 3, 1067, 533, - 0, 2724, 2725, 3, 1071, 535, 0, 2725, 2726, 3, 1081, 540, 0, 2726, 2727, - 3, 1079, 539, 0, 2727, 2728, 3, 1075, 537, 0, 2728, 2729, 3, 1049, 524, - 0, 2729, 2730, 3, 1051, 525, 0, 2730, 2731, 3, 1049, 524, 0, 2731, 2732, - 3, 1075, 537, 0, 2732, 2733, 3, 1049, 524, 0, 2733, 2734, 3, 1067, 533, - 0, 2734, 2735, 3, 1045, 522, 0, 2735, 2736, 3, 1049, 524, 0, 2736, 2737, - 3, 1077, 538, 0, 2737, 2738, 3, 1049, 524, 0, 2738, 2739, 3, 1079, 539, - 0, 2739, 2740, 3, 1077, 538, 0, 2740, 2741, 3, 1049, 524, 0, 2741, 2742, - 3, 1063, 531, 0, 2742, 2743, 3, 1049, 524, 0, 2743, 2744, 3, 1045, 522, - 0, 2744, 2745, 3, 1079, 539, 0, 2745, 2746, 3, 1069, 534, 0, 2746, 2747, - 3, 1075, 537, 0, 2747, 354, 1, 0, 0, 0, 2748, 2749, 3, 1051, 525, 0, 2749, - 2750, 3, 1057, 528, 0, 2750, 2751, 3, 1063, 531, 0, 2751, 2752, 3, 1049, - 524, 0, 2752, 2753, 3, 1057, 528, 0, 2753, 2754, 3, 1067, 533, 0, 2754, - 2755, 3, 1071, 535, 0, 2755, 2756, 3, 1081, 540, 0, 2756, 2757, 3, 1079, - 539, 0, 2757, 356, 1, 0, 0, 0, 2758, 2759, 3, 1057, 528, 0, 2759, 2760, - 3, 1065, 532, 0, 2760, 2761, 3, 1041, 520, 0, 2761, 2762, 3, 1053, 526, - 0, 2762, 2763, 3, 1049, 524, 0, 2763, 2764, 3, 1057, 528, 0, 2764, 2765, - 3, 1067, 533, 0, 2765, 2766, 3, 1071, 535, 0, 2766, 2767, 3, 1081, 540, - 0, 2767, 2768, 3, 1079, 539, 0, 2768, 358, 1, 0, 0, 0, 2769, 2770, 3, 1045, - 522, 0, 2770, 2771, 3, 1081, 540, 0, 2771, 2772, 3, 1077, 538, 0, 2772, - 2773, 3, 1079, 539, 0, 2773, 2774, 3, 1069, 534, 0, 2774, 2775, 3, 1065, - 532, 0, 2775, 2776, 3, 1085, 542, 0, 2776, 2777, 3, 1057, 528, 0, 2777, - 2778, 3, 1047, 523, 0, 2778, 2779, 3, 1053, 526, 0, 2779, 2780, 3, 1049, - 524, 0, 2780, 2781, 3, 1079, 539, 0, 2781, 360, 1, 0, 0, 0, 2782, 2783, - 3, 1079, 539, 0, 2783, 2784, 3, 1049, 524, 0, 2784, 2785, 3, 1087, 543, - 0, 2785, 2786, 3, 1079, 539, 0, 2786, 2787, 3, 1051, 525, 0, 2787, 2788, - 3, 1057, 528, 0, 2788, 2789, 3, 1063, 531, 0, 2789, 2790, 3, 1079, 539, - 0, 2790, 2791, 3, 1049, 524, 0, 2791, 2792, 3, 1075, 537, 0, 2792, 362, - 1, 0, 0, 0, 2793, 2794, 3, 1067, 533, 0, 2794, 2795, 3, 1081, 540, 0, 2795, - 2796, 3, 1065, 532, 0, 2796, 2797, 3, 1043, 521, 0, 2797, 2798, 3, 1049, - 524, 0, 2798, 2799, 3, 1075, 537, 0, 2799, 2800, 3, 1051, 525, 0, 2800, - 2801, 3, 1057, 528, 0, 2801, 2802, 3, 1063, 531, 0, 2802, 2803, 3, 1079, - 539, 0, 2803, 2804, 3, 1049, 524, 0, 2804, 2805, 3, 1075, 537, 0, 2805, - 364, 1, 0, 0, 0, 2806, 2807, 3, 1047, 523, 0, 2807, 2808, 3, 1075, 537, - 0, 2808, 2809, 3, 1069, 534, 0, 2809, 2810, 3, 1071, 535, 0, 2810, 2811, - 3, 1047, 523, 0, 2811, 2812, 3, 1069, 534, 0, 2812, 2813, 3, 1085, 542, - 0, 2813, 2814, 3, 1067, 533, 0, 2814, 2815, 3, 1051, 525, 0, 2815, 2816, - 3, 1057, 528, 0, 2816, 2817, 3, 1063, 531, 0, 2817, 2818, 3, 1079, 539, - 0, 2818, 2819, 3, 1049, 524, 0, 2819, 2820, 3, 1075, 537, 0, 2820, 366, - 1, 0, 0, 0, 2821, 2822, 3, 1047, 523, 0, 2822, 2823, 3, 1041, 520, 0, 2823, - 2824, 3, 1079, 539, 0, 2824, 2825, 3, 1049, 524, 0, 2825, 2826, 3, 1051, - 525, 0, 2826, 2827, 3, 1057, 528, 0, 2827, 2828, 3, 1063, 531, 0, 2828, - 2829, 3, 1079, 539, 0, 2829, 2830, 3, 1049, 524, 0, 2830, 2831, 3, 1075, - 537, 0, 2831, 368, 1, 0, 0, 0, 2832, 2833, 3, 1051, 525, 0, 2833, 2834, - 3, 1057, 528, 0, 2834, 2835, 3, 1063, 531, 0, 2835, 2836, 3, 1079, 539, - 0, 2836, 2837, 3, 1049, 524, 0, 2837, 2838, 3, 1075, 537, 0, 2838, 370, - 1, 0, 0, 0, 2839, 2840, 3, 1085, 542, 0, 2840, 2841, 3, 1057, 528, 0, 2841, - 2842, 3, 1047, 523, 0, 2842, 2843, 3, 1053, 526, 0, 2843, 2844, 3, 1049, - 524, 0, 2844, 2845, 3, 1079, 539, 0, 2845, 372, 1, 0, 0, 0, 2846, 2847, - 3, 1085, 542, 0, 2847, 2848, 3, 1057, 528, 0, 2848, 2849, 3, 1047, 523, - 0, 2849, 2850, 3, 1053, 526, 0, 2850, 2851, 3, 1049, 524, 0, 2851, 2852, - 3, 1079, 539, 0, 2852, 2853, 3, 1077, 538, 0, 2853, 374, 1, 0, 0, 0, 2854, - 2855, 3, 1045, 522, 0, 2855, 2856, 3, 1041, 520, 0, 2856, 2857, 3, 1071, - 535, 0, 2857, 2858, 3, 1079, 539, 0, 2858, 2859, 3, 1057, 528, 0, 2859, - 2860, 3, 1069, 534, 0, 2860, 2861, 3, 1067, 533, 0, 2861, 376, 1, 0, 0, - 0, 2862, 2863, 3, 1057, 528, 0, 2863, 2864, 3, 1045, 522, 0, 2864, 2865, - 3, 1069, 534, 0, 2865, 2866, 3, 1067, 533, 0, 2866, 378, 1, 0, 0, 0, 2867, - 2868, 3, 1079, 539, 0, 2868, 2869, 3, 1069, 534, 0, 2869, 2870, 3, 1069, - 534, 0, 2870, 2871, 3, 1063, 531, 0, 2871, 2872, 3, 1079, 539, 0, 2872, - 2873, 3, 1057, 528, 0, 2873, 2874, 3, 1071, 535, 0, 2874, 380, 1, 0, 0, - 0, 2875, 2876, 3, 1047, 523, 0, 2876, 2877, 3, 1041, 520, 0, 2877, 2878, - 3, 1079, 539, 0, 2878, 2879, 3, 1041, 520, 0, 2879, 2880, 3, 1077, 538, - 0, 2880, 2881, 3, 1069, 534, 0, 2881, 2882, 3, 1081, 540, 0, 2882, 2883, - 3, 1075, 537, 0, 2883, 2884, 3, 1045, 522, 0, 2884, 2885, 3, 1049, 524, - 0, 2885, 382, 1, 0, 0, 0, 2886, 2887, 3, 1077, 538, 0, 2887, 2888, 3, 1069, - 534, 0, 2888, 2889, 3, 1081, 540, 0, 2889, 2890, 3, 1075, 537, 0, 2890, - 2891, 3, 1045, 522, 0, 2891, 2892, 3, 1049, 524, 0, 2892, 384, 1, 0, 0, - 0, 2893, 2894, 3, 1077, 538, 0, 2894, 2895, 3, 1049, 524, 0, 2895, 2896, - 3, 1063, 531, 0, 2896, 2897, 3, 1049, 524, 0, 2897, 2898, 3, 1045, 522, - 0, 2898, 2899, 3, 1079, 539, 0, 2899, 2900, 3, 1057, 528, 0, 2900, 2901, - 3, 1069, 534, 0, 2901, 2902, 3, 1067, 533, 0, 2902, 386, 1, 0, 0, 0, 2903, - 2904, 3, 1051, 525, 0, 2904, 2905, 3, 1069, 534, 0, 2905, 2906, 3, 1069, - 534, 0, 2906, 2907, 3, 1079, 539, 0, 2907, 2908, 3, 1049, 524, 0, 2908, - 2909, 3, 1075, 537, 0, 2909, 388, 1, 0, 0, 0, 2910, 2911, 3, 1055, 527, - 0, 2911, 2912, 3, 1049, 524, 0, 2912, 2913, 3, 1041, 520, 0, 2913, 2914, - 3, 1047, 523, 0, 2914, 2915, 3, 1049, 524, 0, 2915, 2916, 3, 1075, 537, - 0, 2916, 390, 1, 0, 0, 0, 2917, 2918, 3, 1045, 522, 0, 2918, 2919, 3, 1069, - 534, 0, 2919, 2920, 3, 1067, 533, 0, 2920, 2921, 3, 1079, 539, 0, 2921, - 2922, 3, 1049, 524, 0, 2922, 2923, 3, 1067, 533, 0, 2923, 2924, 3, 1079, - 539, 0, 2924, 392, 1, 0, 0, 0, 2925, 2926, 3, 1075, 537, 0, 2926, 2927, - 3, 1049, 524, 0, 2927, 2928, 3, 1067, 533, 0, 2928, 2929, 3, 1047, 523, - 0, 2929, 2930, 3, 1049, 524, 0, 2930, 2931, 3, 1075, 537, 0, 2931, 2932, - 3, 1065, 532, 0, 2932, 2933, 3, 1069, 534, 0, 2933, 2934, 3, 1047, 523, - 0, 2934, 2935, 3, 1049, 524, 0, 2935, 394, 1, 0, 0, 0, 2936, 2937, 3, 1043, - 521, 0, 2937, 2938, 3, 1057, 528, 0, 2938, 2939, 3, 1067, 533, 0, 2939, - 2940, 3, 1047, 523, 0, 2940, 2941, 3, 1077, 538, 0, 2941, 396, 1, 0, 0, - 0, 2942, 2943, 3, 1041, 520, 0, 2943, 2944, 3, 1079, 539, 0, 2944, 2945, - 3, 1079, 539, 0, 2945, 2946, 3, 1075, 537, 0, 2946, 398, 1, 0, 0, 0, 2947, - 2948, 3, 1045, 522, 0, 2948, 2949, 3, 1069, 534, 0, 2949, 2950, 3, 1067, - 533, 0, 2950, 2951, 3, 1079, 539, 0, 2951, 2952, 3, 1049, 524, 0, 2952, - 2953, 3, 1067, 533, 0, 2953, 2954, 3, 1079, 539, 0, 2954, 2955, 3, 1071, - 535, 0, 2955, 2956, 3, 1041, 520, 0, 2956, 2957, 3, 1075, 537, 0, 2957, - 2958, 3, 1041, 520, 0, 2958, 2959, 3, 1065, 532, 0, 2959, 2960, 3, 1077, - 538, 0, 2960, 400, 1, 0, 0, 0, 2961, 2962, 3, 1045, 522, 0, 2962, 2963, - 3, 1041, 520, 0, 2963, 2964, 3, 1071, 535, 0, 2964, 2965, 3, 1079, 539, - 0, 2965, 2966, 3, 1057, 528, 0, 2966, 2967, 3, 1069, 534, 0, 2967, 2968, - 3, 1067, 533, 0, 2968, 2969, 3, 1071, 535, 0, 2969, 2970, 3, 1041, 520, - 0, 2970, 2971, 3, 1075, 537, 0, 2971, 2972, 3, 1041, 520, 0, 2972, 2973, - 3, 1065, 532, 0, 2973, 2974, 3, 1077, 538, 0, 2974, 402, 1, 0, 0, 0, 2975, - 2976, 3, 1071, 535, 0, 2976, 2977, 3, 1041, 520, 0, 2977, 2978, 3, 1075, - 537, 0, 2978, 2979, 3, 1041, 520, 0, 2979, 2980, 3, 1065, 532, 0, 2980, - 2981, 3, 1077, 538, 0, 2981, 404, 1, 0, 0, 0, 2982, 2983, 3, 1083, 541, - 0, 2983, 2984, 3, 1041, 520, 0, 2984, 2985, 3, 1075, 537, 0, 2985, 2986, - 3, 1057, 528, 0, 2986, 2987, 3, 1041, 520, 0, 2987, 2988, 3, 1043, 521, - 0, 2988, 2989, 3, 1063, 531, 0, 2989, 2990, 3, 1049, 524, 0, 2990, 2991, - 3, 1077, 538, 0, 2991, 406, 1, 0, 0, 0, 2992, 2993, 3, 1047, 523, 0, 2993, - 2994, 3, 1049, 524, 0, 2994, 2995, 3, 1077, 538, 0, 2995, 2996, 3, 1061, - 530, 0, 2996, 2997, 3, 1079, 539, 0, 2997, 2998, 3, 1069, 534, 0, 2998, - 2999, 3, 1071, 535, 0, 2999, 3000, 3, 1085, 542, 0, 3000, 3001, 3, 1057, - 528, 0, 3001, 3002, 3, 1047, 523, 0, 3002, 3003, 3, 1079, 539, 0, 3003, - 3004, 3, 1055, 527, 0, 3004, 408, 1, 0, 0, 0, 3005, 3006, 3, 1079, 539, - 0, 3006, 3007, 3, 1041, 520, 0, 3007, 3008, 3, 1043, 521, 0, 3008, 3009, - 3, 1063, 531, 0, 3009, 3010, 3, 1049, 524, 0, 3010, 3011, 3, 1079, 539, - 0, 3011, 3012, 3, 1085, 542, 0, 3012, 3013, 3, 1057, 528, 0, 3013, 3014, - 3, 1047, 523, 0, 3014, 3015, 3, 1079, 539, 0, 3015, 3016, 3, 1055, 527, - 0, 3016, 410, 1, 0, 0, 0, 3017, 3018, 3, 1071, 535, 0, 3018, 3019, 3, 1055, - 527, 0, 3019, 3020, 3, 1069, 534, 0, 3020, 3021, 3, 1067, 533, 0, 3021, - 3022, 3, 1049, 524, 0, 3022, 3023, 3, 1085, 542, 0, 3023, 3024, 3, 1057, - 528, 0, 3024, 3025, 3, 1047, 523, 0, 3025, 3026, 3, 1079, 539, 0, 3026, - 3027, 3, 1055, 527, 0, 3027, 412, 1, 0, 0, 0, 3028, 3029, 3, 1045, 522, - 0, 3029, 3030, 3, 1063, 531, 0, 3030, 3031, 3, 1041, 520, 0, 3031, 3032, - 3, 1077, 538, 0, 3032, 3033, 3, 1077, 538, 0, 3033, 414, 1, 0, 0, 0, 3034, - 3035, 3, 1077, 538, 0, 3035, 3036, 3, 1079, 539, 0, 3036, 3037, 3, 1089, - 544, 0, 3037, 3038, 3, 1063, 531, 0, 3038, 3039, 3, 1049, 524, 0, 3039, - 416, 1, 0, 0, 0, 3040, 3041, 3, 1043, 521, 0, 3041, 3042, 3, 1081, 540, - 0, 3042, 3043, 3, 1079, 539, 0, 3043, 3044, 3, 1079, 539, 0, 3044, 3045, - 3, 1069, 534, 0, 3045, 3046, 3, 1067, 533, 0, 3046, 3047, 3, 1077, 538, - 0, 3047, 3048, 3, 1079, 539, 0, 3048, 3049, 3, 1089, 544, 0, 3049, 3050, - 3, 1063, 531, 0, 3050, 3051, 3, 1049, 524, 0, 3051, 418, 1, 0, 0, 0, 3052, - 3053, 3, 1047, 523, 0, 3053, 3054, 3, 1049, 524, 0, 3054, 3055, 3, 1077, - 538, 0, 3055, 3056, 3, 1057, 528, 0, 3056, 3057, 3, 1053, 526, 0, 3057, - 3058, 3, 1067, 533, 0, 3058, 420, 1, 0, 0, 0, 3059, 3060, 3, 1071, 535, - 0, 3060, 3061, 3, 1075, 537, 0, 3061, 3062, 3, 1069, 534, 0, 3062, 3063, - 3, 1071, 535, 0, 3063, 3064, 3, 1049, 524, 0, 3064, 3065, 3, 1075, 537, - 0, 3065, 3066, 3, 1079, 539, 0, 3066, 3067, 3, 1057, 528, 0, 3067, 3068, - 3, 1049, 524, 0, 3068, 3069, 3, 1077, 538, 0, 3069, 422, 1, 0, 0, 0, 3070, - 3071, 3, 1047, 523, 0, 3071, 3072, 3, 1049, 524, 0, 3072, 3073, 3, 1077, - 538, 0, 3073, 3074, 3, 1057, 528, 0, 3074, 3075, 3, 1053, 526, 0, 3075, - 3076, 3, 1067, 533, 0, 3076, 3077, 3, 1071, 535, 0, 3077, 3078, 3, 1075, - 537, 0, 3078, 3079, 3, 1069, 534, 0, 3079, 3080, 3, 1071, 535, 0, 3080, - 3081, 3, 1049, 524, 0, 3081, 3082, 3, 1075, 537, 0, 3082, 3083, 3, 1079, - 539, 0, 3083, 3084, 3, 1057, 528, 0, 3084, 3085, 3, 1049, 524, 0, 3085, - 3086, 3, 1077, 538, 0, 3086, 424, 1, 0, 0, 0, 3087, 3088, 3, 1077, 538, - 0, 3088, 3089, 3, 1079, 539, 0, 3089, 3090, 3, 1089, 544, 0, 3090, 3091, - 3, 1063, 531, 0, 3091, 3092, 3, 1057, 528, 0, 3092, 3093, 3, 1067, 533, - 0, 3093, 3094, 3, 1053, 526, 0, 3094, 426, 1, 0, 0, 0, 3095, 3096, 3, 1045, - 522, 0, 3096, 3097, 3, 1063, 531, 0, 3097, 3098, 3, 1049, 524, 0, 3098, - 3099, 3, 1041, 520, 0, 3099, 3100, 3, 1075, 537, 0, 3100, 428, 1, 0, 0, - 0, 3101, 3102, 3, 1085, 542, 0, 3102, 3103, 3, 1057, 528, 0, 3103, 3104, - 3, 1047, 523, 0, 3104, 3105, 3, 1079, 539, 0, 3105, 3106, 3, 1055, 527, - 0, 3106, 430, 1, 0, 0, 0, 3107, 3108, 3, 1055, 527, 0, 3108, 3109, 3, 1049, - 524, 0, 3109, 3110, 3, 1057, 528, 0, 3110, 3111, 3, 1053, 526, 0, 3111, - 3112, 3, 1055, 527, 0, 3112, 3113, 3, 1079, 539, 0, 3113, 432, 1, 0, 0, - 0, 3114, 3115, 3, 1041, 520, 0, 3115, 3116, 3, 1081, 540, 0, 3116, 3117, - 3, 1079, 539, 0, 3117, 3118, 3, 1069, 534, 0, 3118, 3119, 3, 1051, 525, - 0, 3119, 3120, 3, 1057, 528, 0, 3120, 3121, 3, 1063, 531, 0, 3121, 3122, - 3, 1063, 531, 0, 3122, 434, 1, 0, 0, 0, 3123, 3124, 3, 1081, 540, 0, 3124, - 3125, 3, 1075, 537, 0, 3125, 3126, 3, 1063, 531, 0, 3126, 436, 1, 0, 0, - 0, 3127, 3128, 3, 1051, 525, 0, 3128, 3129, 3, 1069, 534, 0, 3129, 3130, - 3, 1063, 531, 0, 3130, 3131, 3, 1047, 523, 0, 3131, 3132, 3, 1049, 524, - 0, 3132, 3133, 3, 1075, 537, 0, 3133, 438, 1, 0, 0, 0, 3134, 3135, 3, 1071, - 535, 0, 3135, 3136, 3, 1041, 520, 0, 3136, 3137, 3, 1077, 538, 0, 3137, - 3138, 3, 1077, 538, 0, 3138, 3139, 3, 1057, 528, 0, 3139, 3140, 3, 1067, - 533, 0, 3140, 3141, 3, 1053, 526, 0, 3141, 440, 1, 0, 0, 0, 3142, 3143, - 3, 1045, 522, 0, 3143, 3144, 3, 1069, 534, 0, 3144, 3145, 3, 1067, 533, - 0, 3145, 3146, 3, 1079, 539, 0, 3146, 3147, 3, 1049, 524, 0, 3147, 3148, - 3, 1087, 543, 0, 3148, 3149, 3, 1079, 539, 0, 3149, 442, 1, 0, 0, 0, 3150, - 3151, 3, 1049, 524, 0, 3151, 3152, 3, 1047, 523, 0, 3152, 3153, 3, 1057, - 528, 0, 3153, 3154, 3, 1079, 539, 0, 3154, 3155, 3, 1041, 520, 0, 3155, - 3156, 3, 1043, 521, 0, 3156, 3157, 3, 1063, 531, 0, 3157, 3158, 3, 1049, - 524, 0, 3158, 444, 1, 0, 0, 0, 3159, 3160, 3, 1075, 537, 0, 3160, 3161, - 3, 1049, 524, 0, 3161, 3162, 3, 1041, 520, 0, 3162, 3163, 3, 1047, 523, - 0, 3163, 3164, 3, 1069, 534, 0, 3164, 3165, 3, 1067, 533, 0, 3165, 3166, - 3, 1063, 531, 0, 3166, 3167, 3, 1089, 544, 0, 3167, 446, 1, 0, 0, 0, 3168, - 3169, 3, 1041, 520, 0, 3169, 3170, 3, 1079, 539, 0, 3170, 3171, 3, 1079, - 539, 0, 3171, 3172, 3, 1075, 537, 0, 3172, 3173, 3, 1057, 528, 0, 3173, - 3174, 3, 1043, 521, 0, 3174, 3175, 3, 1081, 540, 0, 3175, 3176, 3, 1079, - 539, 0, 3176, 3177, 3, 1049, 524, 0, 3177, 3178, 3, 1077, 538, 0, 3178, - 448, 1, 0, 0, 0, 3179, 3180, 3, 1051, 525, 0, 3180, 3181, 3, 1057, 528, - 0, 3181, 3182, 3, 1063, 531, 0, 3182, 3183, 3, 1079, 539, 0, 3183, 3184, - 3, 1049, 524, 0, 3184, 3185, 3, 1075, 537, 0, 3185, 3186, 3, 1079, 539, - 0, 3186, 3187, 3, 1089, 544, 0, 3187, 3188, 3, 1071, 535, 0, 3188, 3189, - 3, 1049, 524, 0, 3189, 450, 1, 0, 0, 0, 3190, 3191, 3, 1057, 528, 0, 3191, - 3192, 3, 1065, 532, 0, 3192, 3193, 3, 1041, 520, 0, 3193, 3194, 3, 1053, - 526, 0, 3194, 3195, 3, 1049, 524, 0, 3195, 452, 1, 0, 0, 0, 3196, 3197, - 3, 1045, 522, 0, 3197, 3198, 3, 1069, 534, 0, 3198, 3199, 3, 1063, 531, - 0, 3199, 3200, 3, 1063, 531, 0, 3200, 3201, 3, 1049, 524, 0, 3201, 3202, - 3, 1045, 522, 0, 3202, 3203, 3, 1079, 539, 0, 3203, 3204, 3, 1057, 528, - 0, 3204, 3205, 3, 1069, 534, 0, 3205, 3206, 3, 1067, 533, 0, 3206, 454, - 1, 0, 0, 0, 3207, 3208, 3, 1077, 538, 0, 3208, 3209, 3, 1079, 539, 0, 3209, - 3210, 3, 1041, 520, 0, 3210, 3211, 3, 1079, 539, 0, 3211, 3212, 3, 1057, - 528, 0, 3212, 3213, 3, 1045, 522, 0, 3213, 3214, 3, 1057, 528, 0, 3214, - 3215, 3, 1065, 532, 0, 3215, 3216, 3, 1041, 520, 0, 3216, 3217, 3, 1053, - 526, 0, 3217, 3218, 3, 1049, 524, 0, 3218, 456, 1, 0, 0, 0, 3219, 3220, - 3, 1047, 523, 0, 3220, 3221, 3, 1089, 544, 0, 3221, 3222, 3, 1067, 533, - 0, 3222, 3223, 3, 1041, 520, 0, 3223, 3224, 3, 1065, 532, 0, 3224, 3225, - 3, 1057, 528, 0, 3225, 3226, 3, 1045, 522, 0, 3226, 3227, 3, 1057, 528, - 0, 3227, 3228, 3, 1065, 532, 0, 3228, 3229, 3, 1041, 520, 0, 3229, 3230, - 3, 1053, 526, 0, 3230, 3231, 3, 1049, 524, 0, 3231, 458, 1, 0, 0, 0, 3232, - 3233, 3, 1045, 522, 0, 3233, 3234, 3, 1081, 540, 0, 3234, 3235, 3, 1077, - 538, 0, 3235, 3236, 3, 1079, 539, 0, 3236, 3237, 3, 1069, 534, 0, 3237, - 3238, 3, 1065, 532, 0, 3238, 3239, 3, 1045, 522, 0, 3239, 3240, 3, 1069, - 534, 0, 3240, 3241, 3, 1067, 533, 0, 3241, 3242, 3, 1079, 539, 0, 3242, - 3243, 3, 1041, 520, 0, 3243, 3244, 3, 1057, 528, 0, 3244, 3245, 3, 1067, - 533, 0, 3245, 3246, 3, 1049, 524, 0, 3246, 3247, 3, 1075, 537, 0, 3247, - 460, 1, 0, 0, 0, 3248, 3249, 3, 1053, 526, 0, 3249, 3250, 3, 1075, 537, - 0, 3250, 3251, 3, 1069, 534, 0, 3251, 3252, 3, 1081, 540, 0, 3252, 3253, - 3, 1071, 535, 0, 3253, 3254, 3, 1043, 521, 0, 3254, 3255, 3, 1069, 534, - 0, 3255, 3256, 3, 1087, 543, 0, 3256, 462, 1, 0, 0, 0, 3257, 3258, 3, 1083, - 541, 0, 3258, 3259, 3, 1057, 528, 0, 3259, 3260, 3, 1077, 538, 0, 3260, - 3261, 3, 1057, 528, 0, 3261, 3262, 3, 1043, 521, 0, 3262, 3263, 3, 1063, - 531, 0, 3263, 3264, 3, 1049, 524, 0, 3264, 464, 1, 0, 0, 0, 3265, 3266, - 3, 1077, 538, 0, 3266, 3267, 3, 1041, 520, 0, 3267, 3268, 3, 1083, 541, - 0, 3268, 3269, 3, 1049, 524, 0, 3269, 3270, 3, 1045, 522, 0, 3270, 3271, - 3, 1055, 527, 0, 3271, 3272, 3, 1041, 520, 0, 3272, 3273, 3, 1067, 533, - 0, 3273, 3274, 3, 1053, 526, 0, 3274, 3275, 3, 1049, 524, 0, 3275, 3276, - 3, 1077, 538, 0, 3276, 466, 1, 0, 0, 0, 3277, 3278, 3, 1077, 538, 0, 3278, - 3279, 3, 1041, 520, 0, 3279, 3280, 3, 1083, 541, 0, 3280, 3281, 3, 1049, - 524, 0, 3281, 3282, 5, 95, 0, 0, 3282, 3283, 3, 1045, 522, 0, 3283, 3284, - 3, 1055, 527, 0, 3284, 3285, 3, 1041, 520, 0, 3285, 3286, 3, 1067, 533, - 0, 3286, 3287, 3, 1053, 526, 0, 3287, 3288, 3, 1049, 524, 0, 3288, 3289, - 3, 1077, 538, 0, 3289, 468, 1, 0, 0, 0, 3290, 3291, 3, 1045, 522, 0, 3291, - 3292, 3, 1041, 520, 0, 3292, 3293, 3, 1067, 533, 0, 3293, 3294, 3, 1045, - 522, 0, 3294, 3295, 3, 1049, 524, 0, 3295, 3296, 3, 1063, 531, 0, 3296, - 3297, 5, 95, 0, 0, 3297, 3298, 3, 1045, 522, 0, 3298, 3299, 3, 1055, 527, - 0, 3299, 3300, 3, 1041, 520, 0, 3300, 3301, 3, 1067, 533, 0, 3301, 3302, - 3, 1053, 526, 0, 3302, 3303, 3, 1049, 524, 0, 3303, 3304, 3, 1077, 538, - 0, 3304, 470, 1, 0, 0, 0, 3305, 3306, 3, 1045, 522, 0, 3306, 3307, 3, 1063, - 531, 0, 3307, 3308, 3, 1069, 534, 0, 3308, 3309, 3, 1077, 538, 0, 3309, - 3310, 3, 1049, 524, 0, 3310, 3311, 5, 95, 0, 0, 3311, 3312, 3, 1071, 535, - 0, 3312, 3313, 3, 1041, 520, 0, 3313, 3314, 3, 1053, 526, 0, 3314, 3315, - 3, 1049, 524, 0, 3315, 472, 1, 0, 0, 0, 3316, 3317, 3, 1077, 538, 0, 3317, - 3318, 3, 1055, 527, 0, 3318, 3319, 3, 1069, 534, 0, 3319, 3320, 3, 1085, - 542, 0, 3320, 3321, 5, 95, 0, 0, 3321, 3322, 3, 1071, 535, 0, 3322, 3323, - 3, 1041, 520, 0, 3323, 3324, 3, 1053, 526, 0, 3324, 3325, 3, 1049, 524, - 0, 3325, 474, 1, 0, 0, 0, 3326, 3327, 3, 1047, 523, 0, 3327, 3328, 3, 1049, - 524, 0, 3328, 3329, 3, 1063, 531, 0, 3329, 3330, 3, 1049, 524, 0, 3330, - 3331, 3, 1079, 539, 0, 3331, 3332, 3, 1049, 524, 0, 3332, 3333, 5, 95, - 0, 0, 3333, 3334, 3, 1041, 520, 0, 3334, 3335, 3, 1045, 522, 0, 3335, 3336, - 3, 1079, 539, 0, 3336, 3337, 3, 1057, 528, 0, 3337, 3338, 3, 1069, 534, - 0, 3338, 3339, 3, 1067, 533, 0, 3339, 476, 1, 0, 0, 0, 3340, 3341, 3, 1047, - 523, 0, 3341, 3342, 3, 1049, 524, 0, 3342, 3343, 3, 1063, 531, 0, 3343, - 3344, 3, 1049, 524, 0, 3344, 3345, 3, 1079, 539, 0, 3345, 3346, 3, 1049, - 524, 0, 3346, 3347, 5, 95, 0, 0, 3347, 3348, 3, 1069, 534, 0, 3348, 3349, - 3, 1043, 521, 0, 3349, 3350, 3, 1059, 529, 0, 3350, 3351, 3, 1049, 524, - 0, 3351, 3352, 3, 1045, 522, 0, 3352, 3353, 3, 1079, 539, 0, 3353, 478, - 1, 0, 0, 0, 3354, 3355, 3, 1045, 522, 0, 3355, 3356, 3, 1075, 537, 0, 3356, - 3357, 3, 1049, 524, 0, 3357, 3358, 3, 1041, 520, 0, 3358, 3359, 3, 1079, - 539, 0, 3359, 3360, 3, 1049, 524, 0, 3360, 3361, 5, 95, 0, 0, 3361, 3362, - 3, 1069, 534, 0, 3362, 3363, 3, 1043, 521, 0, 3363, 3364, 3, 1059, 529, - 0, 3364, 3365, 3, 1049, 524, 0, 3365, 3366, 3, 1045, 522, 0, 3366, 3367, - 3, 1079, 539, 0, 3367, 480, 1, 0, 0, 0, 3368, 3369, 3, 1045, 522, 0, 3369, - 3370, 3, 1041, 520, 0, 3370, 3371, 3, 1063, 531, 0, 3371, 3372, 3, 1063, - 531, 0, 3372, 3373, 5, 95, 0, 0, 3373, 3374, 3, 1065, 532, 0, 3374, 3375, - 3, 1057, 528, 0, 3375, 3376, 3, 1045, 522, 0, 3376, 3377, 3, 1075, 537, - 0, 3377, 3378, 3, 1069, 534, 0, 3378, 3379, 3, 1051, 525, 0, 3379, 3380, - 3, 1063, 531, 0, 3380, 3381, 3, 1069, 534, 0, 3381, 3382, 3, 1085, 542, - 0, 3382, 482, 1, 0, 0, 0, 3383, 3384, 3, 1045, 522, 0, 3384, 3385, 3, 1041, - 520, 0, 3385, 3386, 3, 1063, 531, 0, 3386, 3387, 3, 1063, 531, 0, 3387, - 3388, 5, 95, 0, 0, 3388, 3389, 3, 1067, 533, 0, 3389, 3390, 3, 1041, 520, - 0, 3390, 3391, 3, 1067, 533, 0, 3391, 3392, 3, 1069, 534, 0, 3392, 3393, - 3, 1051, 525, 0, 3393, 3394, 3, 1063, 531, 0, 3394, 3395, 3, 1069, 534, - 0, 3395, 3396, 3, 1085, 542, 0, 3396, 484, 1, 0, 0, 0, 3397, 3398, 3, 1069, - 534, 0, 3398, 3399, 3, 1071, 535, 0, 3399, 3400, 3, 1049, 524, 0, 3400, - 3401, 3, 1067, 533, 0, 3401, 3402, 5, 95, 0, 0, 3402, 3403, 3, 1063, 531, - 0, 3403, 3404, 3, 1057, 528, 0, 3404, 3405, 3, 1067, 533, 0, 3405, 3406, - 3, 1061, 530, 0, 3406, 486, 1, 0, 0, 0, 3407, 3408, 3, 1077, 538, 0, 3408, - 3409, 3, 1057, 528, 0, 3409, 3410, 3, 1053, 526, 0, 3410, 3411, 3, 1067, - 533, 0, 3411, 3412, 5, 95, 0, 0, 3412, 3413, 3, 1069, 534, 0, 3413, 3414, - 3, 1081, 540, 0, 3414, 3415, 3, 1079, 539, 0, 3415, 488, 1, 0, 0, 0, 3416, - 3417, 3, 1045, 522, 0, 3417, 3418, 3, 1041, 520, 0, 3418, 3419, 3, 1067, - 533, 0, 3419, 3420, 3, 1045, 522, 0, 3420, 3421, 3, 1049, 524, 0, 3421, - 3422, 3, 1063, 531, 0, 3422, 490, 1, 0, 0, 0, 3423, 3424, 3, 1071, 535, - 0, 3424, 3425, 3, 1075, 537, 0, 3425, 3426, 3, 1057, 528, 0, 3426, 3427, - 3, 1065, 532, 0, 3427, 3428, 3, 1041, 520, 0, 3428, 3429, 3, 1075, 537, - 0, 3429, 3430, 3, 1089, 544, 0, 3430, 492, 1, 0, 0, 0, 3431, 3432, 3, 1077, - 538, 0, 3432, 3433, 3, 1081, 540, 0, 3433, 3434, 3, 1045, 522, 0, 3434, - 3435, 3, 1045, 522, 0, 3435, 3436, 3, 1049, 524, 0, 3436, 3437, 3, 1077, - 538, 0, 3437, 3438, 3, 1077, 538, 0, 3438, 494, 1, 0, 0, 0, 3439, 3440, - 3, 1047, 523, 0, 3440, 3441, 3, 1041, 520, 0, 3441, 3442, 3, 1067, 533, - 0, 3442, 3443, 3, 1053, 526, 0, 3443, 3444, 3, 1049, 524, 0, 3444, 3445, - 3, 1075, 537, 0, 3445, 496, 1, 0, 0, 0, 3446, 3447, 3, 1085, 542, 0, 3447, - 3448, 3, 1041, 520, 0, 3448, 3449, 3, 1075, 537, 0, 3449, 3450, 3, 1067, - 533, 0, 3450, 3451, 3, 1057, 528, 0, 3451, 3452, 3, 1067, 533, 0, 3452, - 3453, 3, 1053, 526, 0, 3453, 498, 1, 0, 0, 0, 3454, 3455, 3, 1057, 528, - 0, 3455, 3456, 3, 1067, 533, 0, 3456, 3457, 3, 1051, 525, 0, 3457, 3458, - 3, 1069, 534, 0, 3458, 500, 1, 0, 0, 0, 3459, 3460, 3, 1079, 539, 0, 3460, - 3461, 3, 1049, 524, 0, 3461, 3462, 3, 1065, 532, 0, 3462, 3463, 3, 1071, - 535, 0, 3463, 3464, 3, 1063, 531, 0, 3464, 3465, 3, 1041, 520, 0, 3465, - 3466, 3, 1079, 539, 0, 3466, 3467, 3, 1049, 524, 0, 3467, 502, 1, 0, 0, - 0, 3468, 3469, 3, 1069, 534, 0, 3469, 3470, 3, 1067, 533, 0, 3470, 3471, - 3, 1045, 522, 0, 3471, 3472, 3, 1063, 531, 0, 3472, 3473, 3, 1057, 528, - 0, 3473, 3474, 3, 1045, 522, 0, 3474, 3475, 3, 1061, 530, 0, 3475, 504, - 1, 0, 0, 0, 3476, 3477, 3, 1069, 534, 0, 3477, 3478, 3, 1067, 533, 0, 3478, - 3479, 3, 1045, 522, 0, 3479, 3480, 3, 1055, 527, 0, 3480, 3481, 3, 1041, - 520, 0, 3481, 3482, 3, 1067, 533, 0, 3482, 3483, 3, 1053, 526, 0, 3483, - 3484, 3, 1049, 524, 0, 3484, 506, 1, 0, 0, 0, 3485, 3486, 3, 1079, 539, - 0, 3486, 3487, 3, 1041, 520, 0, 3487, 3488, 3, 1043, 521, 0, 3488, 3489, - 3, 1057, 528, 0, 3489, 3490, 3, 1067, 533, 0, 3490, 3491, 3, 1047, 523, - 0, 3491, 3492, 3, 1049, 524, 0, 3492, 3493, 3, 1087, 543, 0, 3493, 508, - 1, 0, 0, 0, 3494, 3495, 3, 1055, 527, 0, 3495, 3496, 5, 49, 0, 0, 3496, - 510, 1, 0, 0, 0, 3497, 3498, 3, 1055, 527, 0, 3498, 3499, 5, 50, 0, 0, - 3499, 512, 1, 0, 0, 0, 3500, 3501, 3, 1055, 527, 0, 3501, 3502, 5, 51, - 0, 0, 3502, 514, 1, 0, 0, 0, 3503, 3504, 3, 1055, 527, 0, 3504, 3505, 5, - 52, 0, 0, 3505, 516, 1, 0, 0, 0, 3506, 3507, 3, 1055, 527, 0, 3507, 3508, - 5, 53, 0, 0, 3508, 518, 1, 0, 0, 0, 3509, 3510, 3, 1055, 527, 0, 3510, - 3511, 5, 54, 0, 0, 3511, 520, 1, 0, 0, 0, 3512, 3513, 3, 1071, 535, 0, - 3513, 3514, 3, 1041, 520, 0, 3514, 3515, 3, 1075, 537, 0, 3515, 3516, 3, - 1041, 520, 0, 3516, 3517, 3, 1053, 526, 0, 3517, 3518, 3, 1075, 537, 0, - 3518, 3519, 3, 1041, 520, 0, 3519, 3520, 3, 1071, 535, 0, 3520, 3521, 3, - 1055, 527, 0, 3521, 522, 1, 0, 0, 0, 3522, 3523, 3, 1077, 538, 0, 3523, - 3524, 3, 1079, 539, 0, 3524, 3525, 3, 1075, 537, 0, 3525, 3526, 3, 1057, - 528, 0, 3526, 3527, 3, 1067, 533, 0, 3527, 3528, 3, 1053, 526, 0, 3528, - 524, 1, 0, 0, 0, 3529, 3530, 3, 1057, 528, 0, 3530, 3531, 3, 1067, 533, - 0, 3531, 3532, 3, 1079, 539, 0, 3532, 3533, 3, 1049, 524, 0, 3533, 3534, - 3, 1053, 526, 0, 3534, 3535, 3, 1049, 524, 0, 3535, 3536, 3, 1075, 537, - 0, 3536, 526, 1, 0, 0, 0, 3537, 3538, 3, 1063, 531, 0, 3538, 3539, 3, 1069, - 534, 0, 3539, 3540, 3, 1067, 533, 0, 3540, 3541, 3, 1053, 526, 0, 3541, - 528, 1, 0, 0, 0, 3542, 3543, 3, 1047, 523, 0, 3543, 3544, 3, 1049, 524, - 0, 3544, 3545, 3, 1045, 522, 0, 3545, 3546, 3, 1057, 528, 0, 3546, 3547, - 3, 1065, 532, 0, 3547, 3548, 3, 1041, 520, 0, 3548, 3549, 3, 1063, 531, - 0, 3549, 530, 1, 0, 0, 0, 3550, 3551, 3, 1043, 521, 0, 3551, 3552, 3, 1069, - 534, 0, 3552, 3553, 3, 1069, 534, 0, 3553, 3554, 3, 1063, 531, 0, 3554, - 3555, 3, 1049, 524, 0, 3555, 3556, 3, 1041, 520, 0, 3556, 3557, 3, 1067, - 533, 0, 3557, 532, 1, 0, 0, 0, 3558, 3559, 3, 1047, 523, 0, 3559, 3560, - 3, 1041, 520, 0, 3560, 3561, 3, 1079, 539, 0, 3561, 3562, 3, 1049, 524, - 0, 3562, 3563, 3, 1079, 539, 0, 3563, 3564, 3, 1057, 528, 0, 3564, 3565, - 3, 1065, 532, 0, 3565, 3566, 3, 1049, 524, 0, 3566, 534, 1, 0, 0, 0, 3567, - 3568, 3, 1047, 523, 0, 3568, 3569, 3, 1041, 520, 0, 3569, 3570, 3, 1079, - 539, 0, 3570, 3571, 3, 1049, 524, 0, 3571, 536, 1, 0, 0, 0, 3572, 3573, - 3, 1041, 520, 0, 3573, 3574, 3, 1081, 540, 0, 3574, 3575, 3, 1079, 539, - 0, 3575, 3576, 3, 1069, 534, 0, 3576, 3577, 3, 1067, 533, 0, 3577, 3578, - 3, 1081, 540, 0, 3578, 3579, 3, 1065, 532, 0, 3579, 3580, 3, 1043, 521, - 0, 3580, 3581, 3, 1049, 524, 0, 3581, 3582, 3, 1075, 537, 0, 3582, 538, - 1, 0, 0, 0, 3583, 3584, 3, 1043, 521, 0, 3584, 3585, 3, 1057, 528, 0, 3585, - 3586, 3, 1067, 533, 0, 3586, 3587, 3, 1041, 520, 0, 3587, 3588, 3, 1075, - 537, 0, 3588, 3589, 3, 1089, 544, 0, 3589, 540, 1, 0, 0, 0, 3590, 3591, - 3, 1055, 527, 0, 3591, 3592, 3, 1041, 520, 0, 3592, 3593, 3, 1077, 538, - 0, 3593, 3594, 3, 1055, 527, 0, 3594, 3595, 3, 1049, 524, 0, 3595, 3596, - 3, 1047, 523, 0, 3596, 3597, 3, 1077, 538, 0, 3597, 3598, 3, 1079, 539, - 0, 3598, 3599, 3, 1075, 537, 0, 3599, 3600, 3, 1057, 528, 0, 3600, 3601, - 3, 1067, 533, 0, 3601, 3602, 3, 1053, 526, 0, 3602, 542, 1, 0, 0, 0, 3603, - 3604, 3, 1045, 522, 0, 3604, 3605, 3, 1081, 540, 0, 3605, 3606, 3, 1075, - 537, 0, 3606, 3607, 3, 1075, 537, 0, 3607, 3608, 3, 1049, 524, 0, 3608, - 3609, 3, 1067, 533, 0, 3609, 3610, 3, 1045, 522, 0, 3610, 3611, 3, 1089, - 544, 0, 3611, 544, 1, 0, 0, 0, 3612, 3613, 3, 1051, 525, 0, 3613, 3614, - 3, 1063, 531, 0, 3614, 3615, 3, 1069, 534, 0, 3615, 3616, 3, 1041, 520, - 0, 3616, 3617, 3, 1079, 539, 0, 3617, 546, 1, 0, 0, 0, 3618, 3619, 3, 1077, - 538, 0, 3619, 3620, 3, 1079, 539, 0, 3620, 3621, 3, 1075, 537, 0, 3621, - 3622, 3, 1057, 528, 0, 3622, 3623, 3, 1067, 533, 0, 3623, 3624, 3, 1053, - 526, 0, 3624, 3625, 3, 1079, 539, 0, 3625, 3626, 3, 1049, 524, 0, 3626, - 3627, 3, 1065, 532, 0, 3627, 3628, 3, 1071, 535, 0, 3628, 3629, 3, 1063, - 531, 0, 3629, 3630, 3, 1041, 520, 0, 3630, 3631, 3, 1079, 539, 0, 3631, - 3632, 3, 1049, 524, 0, 3632, 548, 1, 0, 0, 0, 3633, 3634, 3, 1049, 524, - 0, 3634, 3635, 3, 1067, 533, 0, 3635, 3636, 3, 1081, 540, 0, 3636, 3637, - 3, 1065, 532, 0, 3637, 550, 1, 0, 0, 0, 3638, 3639, 3, 1045, 522, 0, 3639, - 3640, 3, 1069, 534, 0, 3640, 3641, 3, 1081, 540, 0, 3641, 3642, 3, 1067, - 533, 0, 3642, 3643, 3, 1079, 539, 0, 3643, 552, 1, 0, 0, 0, 3644, 3645, - 3, 1077, 538, 0, 3645, 3646, 3, 1081, 540, 0, 3646, 3647, 3, 1065, 532, - 0, 3647, 554, 1, 0, 0, 0, 3648, 3649, 3, 1041, 520, 0, 3649, 3650, 3, 1083, - 541, 0, 3650, 3651, 3, 1053, 526, 0, 3651, 556, 1, 0, 0, 0, 3652, 3653, - 3, 1065, 532, 0, 3653, 3654, 3, 1057, 528, 0, 3654, 3655, 3, 1067, 533, - 0, 3655, 558, 1, 0, 0, 0, 3656, 3657, 3, 1065, 532, 0, 3657, 3658, 3, 1041, - 520, 0, 3658, 3659, 3, 1087, 543, 0, 3659, 560, 1, 0, 0, 0, 3660, 3661, - 3, 1063, 531, 0, 3661, 3662, 3, 1049, 524, 0, 3662, 3663, 3, 1067, 533, - 0, 3663, 3664, 3, 1053, 526, 0, 3664, 3665, 3, 1079, 539, 0, 3665, 3666, - 3, 1055, 527, 0, 3666, 562, 1, 0, 0, 0, 3667, 3668, 3, 1079, 539, 0, 3668, - 3669, 3, 1075, 537, 0, 3669, 3670, 3, 1057, 528, 0, 3670, 3671, 3, 1065, - 532, 0, 3671, 564, 1, 0, 0, 0, 3672, 3673, 3, 1045, 522, 0, 3673, 3674, - 3, 1069, 534, 0, 3674, 3675, 3, 1041, 520, 0, 3675, 3676, 3, 1063, 531, - 0, 3676, 3677, 3, 1049, 524, 0, 3677, 3678, 3, 1077, 538, 0, 3678, 3679, - 3, 1045, 522, 0, 3679, 3680, 3, 1049, 524, 0, 3680, 566, 1, 0, 0, 0, 3681, - 3682, 3, 1045, 522, 0, 3682, 3683, 3, 1041, 520, 0, 3683, 3684, 3, 1077, - 538, 0, 3684, 3685, 3, 1079, 539, 0, 3685, 568, 1, 0, 0, 0, 3686, 3687, - 3, 1041, 520, 0, 3687, 3688, 3, 1067, 533, 0, 3688, 3689, 3, 1047, 523, - 0, 3689, 570, 1, 0, 0, 0, 3690, 3691, 3, 1069, 534, 0, 3691, 3692, 3, 1075, - 537, 0, 3692, 572, 1, 0, 0, 0, 3693, 3694, 3, 1067, 533, 0, 3694, 3695, - 3, 1069, 534, 0, 3695, 3696, 3, 1079, 539, 0, 3696, 574, 1, 0, 0, 0, 3697, - 3698, 3, 1067, 533, 0, 3698, 3699, 3, 1081, 540, 0, 3699, 3700, 3, 1063, - 531, 0, 3700, 3701, 3, 1063, 531, 0, 3701, 576, 1, 0, 0, 0, 3702, 3703, - 3, 1057, 528, 0, 3703, 3704, 3, 1067, 533, 0, 3704, 578, 1, 0, 0, 0, 3705, - 3706, 3, 1043, 521, 0, 3706, 3707, 3, 1049, 524, 0, 3707, 3708, 3, 1079, - 539, 0, 3708, 3709, 3, 1085, 542, 0, 3709, 3710, 3, 1049, 524, 0, 3710, - 3711, 3, 1049, 524, 0, 3711, 3712, 3, 1067, 533, 0, 3712, 580, 1, 0, 0, - 0, 3713, 3714, 3, 1063, 531, 0, 3714, 3715, 3, 1057, 528, 0, 3715, 3716, - 3, 1061, 530, 0, 3716, 3717, 3, 1049, 524, 0, 3717, 582, 1, 0, 0, 0, 3718, - 3719, 3, 1065, 532, 0, 3719, 3720, 3, 1041, 520, 0, 3720, 3721, 3, 1079, - 539, 0, 3721, 3722, 3, 1045, 522, 0, 3722, 3723, 3, 1055, 527, 0, 3723, - 584, 1, 0, 0, 0, 3724, 3725, 3, 1049, 524, 0, 3725, 3726, 3, 1087, 543, - 0, 3726, 3727, 3, 1057, 528, 0, 3727, 3728, 3, 1077, 538, 0, 3728, 3729, - 3, 1079, 539, 0, 3729, 3730, 3, 1077, 538, 0, 3730, 586, 1, 0, 0, 0, 3731, - 3732, 3, 1081, 540, 0, 3732, 3733, 3, 1067, 533, 0, 3733, 3734, 3, 1057, - 528, 0, 3734, 3735, 3, 1073, 536, 0, 3735, 3736, 3, 1081, 540, 0, 3736, - 3737, 3, 1049, 524, 0, 3737, 588, 1, 0, 0, 0, 3738, 3739, 3, 1047, 523, - 0, 3739, 3740, 3, 1049, 524, 0, 3740, 3741, 3, 1051, 525, 0, 3741, 3742, - 3, 1041, 520, 0, 3742, 3743, 3, 1081, 540, 0, 3743, 3744, 3, 1063, 531, - 0, 3744, 3745, 3, 1079, 539, 0, 3745, 590, 1, 0, 0, 0, 3746, 3747, 3, 1079, - 539, 0, 3747, 3748, 3, 1075, 537, 0, 3748, 3749, 3, 1081, 540, 0, 3749, - 3750, 3, 1049, 524, 0, 3750, 592, 1, 0, 0, 0, 3751, 3752, 3, 1051, 525, - 0, 3752, 3753, 3, 1041, 520, 0, 3753, 3754, 3, 1063, 531, 0, 3754, 3755, - 3, 1077, 538, 0, 3755, 3756, 3, 1049, 524, 0, 3756, 594, 1, 0, 0, 0, 3757, - 3758, 3, 1083, 541, 0, 3758, 3759, 3, 1041, 520, 0, 3759, 3760, 3, 1063, - 531, 0, 3760, 3761, 3, 1057, 528, 0, 3761, 3762, 3, 1047, 523, 0, 3762, - 3763, 3, 1041, 520, 0, 3763, 3764, 3, 1079, 539, 0, 3764, 3765, 3, 1057, - 528, 0, 3765, 3766, 3, 1069, 534, 0, 3766, 3767, 3, 1067, 533, 0, 3767, - 596, 1, 0, 0, 0, 3768, 3769, 3, 1051, 525, 0, 3769, 3770, 3, 1049, 524, - 0, 3770, 3771, 3, 1049, 524, 0, 3771, 3772, 3, 1047, 523, 0, 3772, 3773, - 3, 1043, 521, 0, 3773, 3774, 3, 1041, 520, 0, 3774, 3775, 3, 1045, 522, - 0, 3775, 3776, 3, 1061, 530, 0, 3776, 598, 1, 0, 0, 0, 3777, 3778, 3, 1075, - 537, 0, 3778, 3779, 3, 1081, 540, 0, 3779, 3780, 3, 1063, 531, 0, 3780, - 3781, 3, 1049, 524, 0, 3781, 600, 1, 0, 0, 0, 3782, 3783, 3, 1075, 537, - 0, 3783, 3784, 3, 1049, 524, 0, 3784, 3785, 3, 1073, 536, 0, 3785, 3786, - 3, 1081, 540, 0, 3786, 3787, 3, 1057, 528, 0, 3787, 3788, 3, 1075, 537, - 0, 3788, 3789, 3, 1049, 524, 0, 3789, 3790, 3, 1047, 523, 0, 3790, 602, - 1, 0, 0, 0, 3791, 3792, 3, 1049, 524, 0, 3792, 3793, 3, 1075, 537, 0, 3793, - 3794, 3, 1075, 537, 0, 3794, 3795, 3, 1069, 534, 0, 3795, 3796, 3, 1075, - 537, 0, 3796, 604, 1, 0, 0, 0, 3797, 3798, 3, 1075, 537, 0, 3798, 3799, - 3, 1041, 520, 0, 3799, 3800, 3, 1057, 528, 0, 3800, 3801, 3, 1077, 538, - 0, 3801, 3802, 3, 1049, 524, 0, 3802, 606, 1, 0, 0, 0, 3803, 3804, 3, 1075, - 537, 0, 3804, 3805, 3, 1041, 520, 0, 3805, 3806, 3, 1067, 533, 0, 3806, - 3807, 3, 1053, 526, 0, 3807, 3808, 3, 1049, 524, 0, 3808, 608, 1, 0, 0, - 0, 3809, 3810, 3, 1075, 537, 0, 3810, 3811, 3, 1049, 524, 0, 3811, 3812, - 3, 1053, 526, 0, 3812, 3813, 3, 1049, 524, 0, 3813, 3814, 3, 1087, 543, - 0, 3814, 610, 1, 0, 0, 0, 3815, 3816, 3, 1071, 535, 0, 3816, 3817, 3, 1041, - 520, 0, 3817, 3818, 3, 1079, 539, 0, 3818, 3819, 3, 1079, 539, 0, 3819, - 3820, 3, 1049, 524, 0, 3820, 3821, 3, 1075, 537, 0, 3821, 3822, 3, 1067, - 533, 0, 3822, 612, 1, 0, 0, 0, 3823, 3824, 3, 1049, 524, 0, 3824, 3825, - 3, 1087, 543, 0, 3825, 3826, 3, 1071, 535, 0, 3826, 3827, 3, 1075, 537, - 0, 3827, 3828, 3, 1049, 524, 0, 3828, 3829, 3, 1077, 538, 0, 3829, 3830, - 3, 1077, 538, 0, 3830, 3831, 3, 1057, 528, 0, 3831, 3832, 3, 1069, 534, - 0, 3832, 3833, 3, 1067, 533, 0, 3833, 614, 1, 0, 0, 0, 3834, 3835, 3, 1087, - 543, 0, 3835, 3836, 3, 1071, 535, 0, 3836, 3837, 3, 1041, 520, 0, 3837, - 3838, 3, 1079, 539, 0, 3838, 3839, 3, 1055, 527, 0, 3839, 616, 1, 0, 0, - 0, 3840, 3841, 3, 1045, 522, 0, 3841, 3842, 3, 1069, 534, 0, 3842, 3843, - 3, 1067, 533, 0, 3843, 3844, 3, 1077, 538, 0, 3844, 3845, 3, 1079, 539, - 0, 3845, 3846, 3, 1075, 537, 0, 3846, 3847, 3, 1041, 520, 0, 3847, 3848, - 3, 1057, 528, 0, 3848, 3849, 3, 1067, 533, 0, 3849, 3850, 3, 1079, 539, - 0, 3850, 618, 1, 0, 0, 0, 3851, 3852, 3, 1045, 522, 0, 3852, 3853, 3, 1041, - 520, 0, 3853, 3854, 3, 1063, 531, 0, 3854, 3855, 3, 1045, 522, 0, 3855, - 3856, 3, 1081, 540, 0, 3856, 3857, 3, 1063, 531, 0, 3857, 3858, 3, 1041, - 520, 0, 3858, 3859, 3, 1079, 539, 0, 3859, 3860, 3, 1049, 524, 0, 3860, - 3861, 3, 1047, 523, 0, 3861, 620, 1, 0, 0, 0, 3862, 3863, 3, 1075, 537, - 0, 3863, 3864, 3, 1049, 524, 0, 3864, 3865, 3, 1077, 538, 0, 3865, 3866, - 3, 1079, 539, 0, 3866, 622, 1, 0, 0, 0, 3867, 3868, 3, 1077, 538, 0, 3868, - 3869, 3, 1049, 524, 0, 3869, 3870, 3, 1075, 537, 0, 3870, 3871, 3, 1083, - 541, 0, 3871, 3872, 3, 1057, 528, 0, 3872, 3873, 3, 1045, 522, 0, 3873, - 3874, 3, 1049, 524, 0, 3874, 624, 1, 0, 0, 0, 3875, 3876, 3, 1077, 538, - 0, 3876, 3877, 3, 1049, 524, 0, 3877, 3878, 3, 1075, 537, 0, 3878, 3879, - 3, 1083, 541, 0, 3879, 3880, 3, 1057, 528, 0, 3880, 3881, 3, 1045, 522, - 0, 3881, 3882, 3, 1049, 524, 0, 3882, 3883, 3, 1077, 538, 0, 3883, 626, - 1, 0, 0, 0, 3884, 3885, 3, 1069, 534, 0, 3885, 3886, 3, 1047, 523, 0, 3886, - 3887, 3, 1041, 520, 0, 3887, 3888, 3, 1079, 539, 0, 3888, 3889, 3, 1041, - 520, 0, 3889, 628, 1, 0, 0, 0, 3890, 3891, 3, 1043, 521, 0, 3891, 3892, - 3, 1041, 520, 0, 3892, 3893, 3, 1077, 538, 0, 3893, 3894, 3, 1049, 524, - 0, 3894, 630, 1, 0, 0, 0, 3895, 3896, 3, 1041, 520, 0, 3896, 3897, 3, 1081, - 540, 0, 3897, 3898, 3, 1079, 539, 0, 3898, 3899, 3, 1055, 527, 0, 3899, - 632, 1, 0, 0, 0, 3900, 3901, 3, 1041, 520, 0, 3901, 3902, 3, 1081, 540, - 0, 3902, 3903, 3, 1079, 539, 0, 3903, 3904, 3, 1055, 527, 0, 3904, 3905, - 3, 1049, 524, 0, 3905, 3906, 3, 1067, 533, 0, 3906, 3907, 3, 1079, 539, - 0, 3907, 3908, 3, 1057, 528, 0, 3908, 3909, 3, 1045, 522, 0, 3909, 3910, - 3, 1041, 520, 0, 3910, 3911, 3, 1079, 539, 0, 3911, 3912, 3, 1057, 528, - 0, 3912, 3913, 3, 1069, 534, 0, 3913, 3914, 3, 1067, 533, 0, 3914, 634, - 1, 0, 0, 0, 3915, 3916, 3, 1043, 521, 0, 3916, 3917, 3, 1041, 520, 0, 3917, - 3918, 3, 1077, 538, 0, 3918, 3919, 3, 1057, 528, 0, 3919, 3920, 3, 1045, - 522, 0, 3920, 636, 1, 0, 0, 0, 3921, 3922, 3, 1067, 533, 0, 3922, 3923, - 3, 1069, 534, 0, 3923, 3924, 3, 1079, 539, 0, 3924, 3925, 3, 1055, 527, - 0, 3925, 3926, 3, 1057, 528, 0, 3926, 3927, 3, 1067, 533, 0, 3927, 3928, - 3, 1053, 526, 0, 3928, 638, 1, 0, 0, 0, 3929, 3930, 3, 1069, 534, 0, 3930, - 3931, 3, 1041, 520, 0, 3931, 3932, 3, 1081, 540, 0, 3932, 3933, 3, 1079, - 539, 0, 3933, 3934, 3, 1055, 527, 0, 3934, 640, 1, 0, 0, 0, 3935, 3936, - 3, 1069, 534, 0, 3936, 3937, 3, 1071, 535, 0, 3937, 3938, 3, 1049, 524, - 0, 3938, 3939, 3, 1075, 537, 0, 3939, 3940, 3, 1041, 520, 0, 3940, 3941, - 3, 1079, 539, 0, 3941, 3942, 3, 1057, 528, 0, 3942, 3943, 3, 1069, 534, - 0, 3943, 3944, 3, 1067, 533, 0, 3944, 642, 1, 0, 0, 0, 3945, 3946, 3, 1065, - 532, 0, 3946, 3947, 3, 1049, 524, 0, 3947, 3948, 3, 1079, 539, 0, 3948, - 3949, 3, 1055, 527, 0, 3949, 3950, 3, 1069, 534, 0, 3950, 3951, 3, 1047, - 523, 0, 3951, 644, 1, 0, 0, 0, 3952, 3953, 3, 1071, 535, 0, 3953, 3954, - 3, 1041, 520, 0, 3954, 3955, 3, 1079, 539, 0, 3955, 3956, 3, 1055, 527, - 0, 3956, 646, 1, 0, 0, 0, 3957, 3958, 3, 1079, 539, 0, 3958, 3959, 3, 1057, - 528, 0, 3959, 3960, 3, 1065, 532, 0, 3960, 3961, 3, 1049, 524, 0, 3961, - 3962, 3, 1069, 534, 0, 3962, 3963, 3, 1081, 540, 0, 3963, 3964, 3, 1079, - 539, 0, 3964, 648, 1, 0, 0, 0, 3965, 3966, 3, 1043, 521, 0, 3966, 3967, - 3, 1069, 534, 0, 3967, 3968, 3, 1047, 523, 0, 3968, 3969, 3, 1089, 544, - 0, 3969, 650, 1, 0, 0, 0, 3970, 3971, 3, 1075, 537, 0, 3971, 3972, 3, 1049, - 524, 0, 3972, 3973, 3, 1077, 538, 0, 3973, 3974, 3, 1071, 535, 0, 3974, - 3975, 3, 1069, 534, 0, 3975, 3976, 3, 1067, 533, 0, 3976, 3977, 3, 1077, - 538, 0, 3977, 3978, 3, 1049, 524, 0, 3978, 652, 1, 0, 0, 0, 3979, 3980, - 3, 1075, 537, 0, 3980, 3981, 3, 1049, 524, 0, 3981, 3982, 3, 1073, 536, - 0, 3982, 3983, 3, 1081, 540, 0, 3983, 3984, 3, 1049, 524, 0, 3984, 3985, - 3, 1077, 538, 0, 3985, 3986, 3, 1079, 539, 0, 3986, 654, 1, 0, 0, 0, 3987, - 3988, 3, 1077, 538, 0, 3988, 3989, 3, 1049, 524, 0, 3989, 3990, 3, 1067, - 533, 0, 3990, 3991, 3, 1047, 523, 0, 3991, 656, 1, 0, 0, 0, 3992, 3993, - 3, 1059, 529, 0, 3993, 3994, 3, 1077, 538, 0, 3994, 3995, 3, 1069, 534, - 0, 3995, 3996, 3, 1067, 533, 0, 3996, 658, 1, 0, 0, 0, 3997, 3998, 3, 1087, - 543, 0, 3998, 3999, 3, 1065, 532, 0, 3999, 4000, 3, 1063, 531, 0, 4000, - 660, 1, 0, 0, 0, 4001, 4002, 3, 1077, 538, 0, 4002, 4003, 3, 1079, 539, - 0, 4003, 4004, 3, 1041, 520, 0, 4004, 4005, 3, 1079, 539, 0, 4005, 4006, - 3, 1081, 540, 0, 4006, 4007, 3, 1077, 538, 0, 4007, 662, 1, 0, 0, 0, 4008, - 4009, 3, 1051, 525, 0, 4009, 4010, 3, 1057, 528, 0, 4010, 4011, 3, 1063, - 531, 0, 4011, 4012, 3, 1049, 524, 0, 4012, 664, 1, 0, 0, 0, 4013, 4014, - 3, 1083, 541, 0, 4014, 4015, 3, 1049, 524, 0, 4015, 4016, 3, 1075, 537, - 0, 4016, 4017, 3, 1077, 538, 0, 4017, 4018, 3, 1057, 528, 0, 4018, 4019, - 3, 1069, 534, 0, 4019, 4020, 3, 1067, 533, 0, 4020, 666, 1, 0, 0, 0, 4021, - 4022, 3, 1053, 526, 0, 4022, 4023, 3, 1049, 524, 0, 4023, 4024, 3, 1079, - 539, 0, 4024, 668, 1, 0, 0, 0, 4025, 4026, 3, 1071, 535, 0, 4026, 4027, - 3, 1069, 534, 0, 4027, 4028, 3, 1077, 538, 0, 4028, 4029, 3, 1079, 539, - 0, 4029, 670, 1, 0, 0, 0, 4030, 4031, 3, 1071, 535, 0, 4031, 4032, 3, 1081, - 540, 0, 4032, 4033, 3, 1079, 539, 0, 4033, 672, 1, 0, 0, 0, 4034, 4035, - 3, 1071, 535, 0, 4035, 4036, 3, 1041, 520, 0, 4036, 4037, 3, 1079, 539, - 0, 4037, 4038, 3, 1045, 522, 0, 4038, 4039, 3, 1055, 527, 0, 4039, 674, - 1, 0, 0, 0, 4040, 4041, 3, 1041, 520, 0, 4041, 4042, 3, 1071, 535, 0, 4042, - 4043, 3, 1057, 528, 0, 4043, 676, 1, 0, 0, 0, 4044, 4045, 3, 1045, 522, - 0, 4045, 4046, 3, 1063, 531, 0, 4046, 4047, 3, 1057, 528, 0, 4047, 4048, - 3, 1049, 524, 0, 4048, 4049, 3, 1067, 533, 0, 4049, 4050, 3, 1079, 539, - 0, 4050, 678, 1, 0, 0, 0, 4051, 4052, 3, 1045, 522, 0, 4052, 4053, 3, 1063, - 531, 0, 4053, 4054, 3, 1057, 528, 0, 4054, 4055, 3, 1049, 524, 0, 4055, - 4056, 3, 1067, 533, 0, 4056, 4057, 3, 1079, 539, 0, 4057, 4058, 3, 1077, - 538, 0, 4058, 680, 1, 0, 0, 0, 4059, 4060, 3, 1071, 535, 0, 4060, 4061, - 3, 1081, 540, 0, 4061, 4062, 3, 1043, 521, 0, 4062, 4063, 3, 1063, 531, - 0, 4063, 4064, 3, 1057, 528, 0, 4064, 4065, 3, 1077, 538, 0, 4065, 4066, - 3, 1055, 527, 0, 4066, 682, 1, 0, 0, 0, 4067, 4068, 3, 1071, 535, 0, 4068, - 4069, 3, 1081, 540, 0, 4069, 4070, 3, 1043, 521, 0, 4070, 4071, 3, 1063, - 531, 0, 4071, 4072, 3, 1057, 528, 0, 4072, 4073, 3, 1077, 538, 0, 4073, - 4074, 3, 1055, 527, 0, 4074, 4075, 3, 1049, 524, 0, 4075, 4076, 3, 1047, - 523, 0, 4076, 684, 1, 0, 0, 0, 4077, 4078, 3, 1049, 524, 0, 4078, 4079, - 3, 1087, 543, 0, 4079, 4080, 3, 1071, 535, 0, 4080, 4081, 3, 1069, 534, - 0, 4081, 4082, 3, 1077, 538, 0, 4082, 4083, 3, 1049, 524, 0, 4083, 686, - 1, 0, 0, 0, 4084, 4085, 3, 1045, 522, 0, 4085, 4086, 3, 1069, 534, 0, 4086, - 4087, 3, 1067, 533, 0, 4087, 4088, 3, 1079, 539, 0, 4088, 4089, 3, 1075, - 537, 0, 4089, 4090, 3, 1041, 520, 0, 4090, 4091, 3, 1045, 522, 0, 4091, - 4092, 3, 1079, 539, 0, 4092, 688, 1, 0, 0, 0, 4093, 4094, 3, 1067, 533, - 0, 4094, 4095, 3, 1041, 520, 0, 4095, 4096, 3, 1065, 532, 0, 4096, 4097, - 3, 1049, 524, 0, 4097, 4098, 3, 1077, 538, 0, 4098, 4099, 3, 1071, 535, - 0, 4099, 4100, 3, 1041, 520, 0, 4100, 4101, 3, 1045, 522, 0, 4101, 4102, - 3, 1049, 524, 0, 4102, 690, 1, 0, 0, 0, 4103, 4104, 3, 1077, 538, 0, 4104, - 4105, 3, 1049, 524, 0, 4105, 4106, 3, 1077, 538, 0, 4106, 4107, 3, 1077, - 538, 0, 4107, 4108, 3, 1057, 528, 0, 4108, 4109, 3, 1069, 534, 0, 4109, - 4110, 3, 1067, 533, 0, 4110, 692, 1, 0, 0, 0, 4111, 4112, 3, 1053, 526, - 0, 4112, 4113, 3, 1081, 540, 0, 4113, 4114, 3, 1049, 524, 0, 4114, 4115, - 3, 1077, 538, 0, 4115, 4116, 3, 1079, 539, 0, 4116, 694, 1, 0, 0, 0, 4117, - 4118, 3, 1071, 535, 0, 4118, 4119, 3, 1041, 520, 0, 4119, 4120, 3, 1053, - 526, 0, 4120, 4121, 3, 1057, 528, 0, 4121, 4122, 3, 1067, 533, 0, 4122, - 4123, 3, 1053, 526, 0, 4123, 696, 1, 0, 0, 0, 4124, 4125, 3, 1067, 533, - 0, 4125, 4126, 3, 1069, 534, 0, 4126, 4127, 3, 1079, 539, 0, 4127, 4128, - 5, 95, 0, 0, 4128, 4129, 3, 1077, 538, 0, 4129, 4130, 3, 1081, 540, 0, - 4130, 4131, 3, 1071, 535, 0, 4131, 4132, 3, 1071, 535, 0, 4132, 4133, 3, - 1069, 534, 0, 4133, 4134, 3, 1075, 537, 0, 4134, 4135, 3, 1079, 539, 0, - 4135, 4136, 3, 1049, 524, 0, 4136, 4137, 3, 1047, 523, 0, 4137, 698, 1, - 0, 0, 0, 4138, 4139, 3, 1081, 540, 0, 4139, 4140, 3, 1077, 538, 0, 4140, - 4141, 3, 1049, 524, 0, 4141, 4142, 3, 1075, 537, 0, 4142, 4143, 3, 1067, - 533, 0, 4143, 4144, 3, 1041, 520, 0, 4144, 4145, 3, 1065, 532, 0, 4145, - 4146, 3, 1049, 524, 0, 4146, 700, 1, 0, 0, 0, 4147, 4148, 3, 1071, 535, - 0, 4148, 4149, 3, 1041, 520, 0, 4149, 4150, 3, 1077, 538, 0, 4150, 4151, - 3, 1077, 538, 0, 4151, 4152, 3, 1085, 542, 0, 4152, 4153, 3, 1069, 534, - 0, 4153, 4154, 3, 1075, 537, 0, 4154, 4155, 3, 1047, 523, 0, 4155, 702, - 1, 0, 0, 0, 4156, 4157, 3, 1045, 522, 0, 4157, 4158, 3, 1069, 534, 0, 4158, - 4159, 3, 1067, 533, 0, 4159, 4160, 3, 1067, 533, 0, 4160, 4161, 3, 1049, - 524, 0, 4161, 4162, 3, 1045, 522, 0, 4162, 4163, 3, 1079, 539, 0, 4163, - 4164, 3, 1057, 528, 0, 4164, 4165, 3, 1069, 534, 0, 4165, 4166, 3, 1067, - 533, 0, 4166, 704, 1, 0, 0, 0, 4167, 4168, 3, 1047, 523, 0, 4168, 4169, - 3, 1041, 520, 0, 4169, 4170, 3, 1079, 539, 0, 4170, 4171, 3, 1041, 520, - 0, 4171, 4172, 3, 1043, 521, 0, 4172, 4173, 3, 1041, 520, 0, 4173, 4174, - 3, 1077, 538, 0, 4174, 4175, 3, 1049, 524, 0, 4175, 706, 1, 0, 0, 0, 4176, - 4177, 3, 1073, 536, 0, 4177, 4178, 3, 1081, 540, 0, 4178, 4179, 3, 1049, - 524, 0, 4179, 4180, 3, 1075, 537, 0, 4180, 4181, 3, 1089, 544, 0, 4181, - 708, 1, 0, 0, 0, 4182, 4183, 3, 1065, 532, 0, 4183, 4184, 3, 1041, 520, - 0, 4184, 4185, 3, 1071, 535, 0, 4185, 710, 1, 0, 0, 0, 4186, 4187, 3, 1065, - 532, 0, 4187, 4188, 3, 1041, 520, 0, 4188, 4189, 3, 1071, 535, 0, 4189, - 4190, 3, 1071, 535, 0, 4190, 4191, 3, 1057, 528, 0, 4191, 4192, 3, 1067, - 533, 0, 4192, 4193, 3, 1053, 526, 0, 4193, 712, 1, 0, 0, 0, 4194, 4195, - 3, 1057, 528, 0, 4195, 4196, 3, 1065, 532, 0, 4196, 4197, 3, 1071, 535, - 0, 4197, 4198, 3, 1069, 534, 0, 4198, 4199, 3, 1075, 537, 0, 4199, 4200, - 3, 1079, 539, 0, 4200, 714, 1, 0, 0, 0, 4201, 4202, 3, 1057, 528, 0, 4202, - 4203, 3, 1067, 533, 0, 4203, 4204, 3, 1079, 539, 0, 4204, 4205, 3, 1069, - 534, 0, 4205, 716, 1, 0, 0, 0, 4206, 4207, 3, 1043, 521, 0, 4207, 4208, - 3, 1041, 520, 0, 4208, 4209, 3, 1079, 539, 0, 4209, 4210, 3, 1045, 522, - 0, 4210, 4211, 3, 1055, 527, 0, 4211, 718, 1, 0, 0, 0, 4212, 4213, 3, 1063, - 531, 0, 4213, 4214, 3, 1057, 528, 0, 4214, 4215, 3, 1067, 533, 0, 4215, - 4216, 3, 1061, 530, 0, 4216, 720, 1, 0, 0, 0, 4217, 4218, 3, 1049, 524, - 0, 4218, 4219, 3, 1087, 543, 0, 4219, 4220, 3, 1071, 535, 0, 4220, 4221, - 3, 1069, 534, 0, 4221, 4222, 3, 1075, 537, 0, 4222, 4223, 3, 1079, 539, - 0, 4223, 722, 1, 0, 0, 0, 4224, 4225, 3, 1053, 526, 0, 4225, 4226, 3, 1049, - 524, 0, 4226, 4227, 3, 1067, 533, 0, 4227, 4228, 3, 1049, 524, 0, 4228, - 4229, 3, 1075, 537, 0, 4229, 4230, 3, 1041, 520, 0, 4230, 4231, 3, 1079, - 539, 0, 4231, 4232, 3, 1049, 524, 0, 4232, 724, 1, 0, 0, 0, 4233, 4234, - 3, 1045, 522, 0, 4234, 4235, 3, 1069, 534, 0, 4235, 4236, 3, 1067, 533, - 0, 4236, 4237, 3, 1067, 533, 0, 4237, 4238, 3, 1049, 524, 0, 4238, 4239, - 3, 1045, 522, 0, 4239, 4240, 3, 1079, 539, 0, 4240, 4241, 3, 1069, 534, - 0, 4241, 4242, 3, 1075, 537, 0, 4242, 726, 1, 0, 0, 0, 4243, 4244, 3, 1049, - 524, 0, 4244, 4245, 3, 1087, 543, 0, 4245, 4246, 3, 1049, 524, 0, 4246, - 4247, 3, 1045, 522, 0, 4247, 728, 1, 0, 0, 0, 4248, 4249, 3, 1079, 539, - 0, 4249, 4250, 3, 1041, 520, 0, 4250, 4251, 3, 1043, 521, 0, 4251, 4252, - 3, 1063, 531, 0, 4252, 4253, 3, 1049, 524, 0, 4253, 4254, 3, 1077, 538, - 0, 4254, 730, 1, 0, 0, 0, 4255, 4256, 3, 1083, 541, 0, 4256, 4257, 3, 1057, - 528, 0, 4257, 4258, 3, 1049, 524, 0, 4258, 4259, 3, 1085, 542, 0, 4259, - 4260, 3, 1077, 538, 0, 4260, 732, 1, 0, 0, 0, 4261, 4262, 3, 1049, 524, - 0, 4262, 4263, 3, 1087, 543, 0, 4263, 4264, 3, 1071, 535, 0, 4264, 4265, - 3, 1069, 534, 0, 4265, 4266, 3, 1077, 538, 0, 4266, 4267, 3, 1049, 524, - 0, 4267, 4268, 3, 1047, 523, 0, 4268, 734, 1, 0, 0, 0, 4269, 4270, 3, 1071, - 535, 0, 4270, 4271, 3, 1041, 520, 0, 4271, 4272, 3, 1075, 537, 0, 4272, - 4273, 3, 1041, 520, 0, 4273, 4274, 3, 1065, 532, 0, 4274, 4275, 3, 1049, - 524, 0, 4275, 4276, 3, 1079, 539, 0, 4276, 4277, 3, 1049, 524, 0, 4277, - 4278, 3, 1075, 537, 0, 4278, 736, 1, 0, 0, 0, 4279, 4280, 3, 1071, 535, - 0, 4280, 4281, 3, 1041, 520, 0, 4281, 4282, 3, 1075, 537, 0, 4282, 4283, - 3, 1041, 520, 0, 4283, 4284, 3, 1065, 532, 0, 4284, 4285, 3, 1049, 524, - 0, 4285, 4286, 3, 1079, 539, 0, 4286, 4287, 3, 1049, 524, 0, 4287, 4288, - 3, 1075, 537, 0, 4288, 4289, 3, 1077, 538, 0, 4289, 738, 1, 0, 0, 0, 4290, - 4291, 3, 1055, 527, 0, 4291, 4292, 3, 1049, 524, 0, 4292, 4293, 3, 1041, - 520, 0, 4293, 4294, 3, 1047, 523, 0, 4294, 4295, 3, 1049, 524, 0, 4295, - 4296, 3, 1075, 537, 0, 4296, 4297, 3, 1077, 538, 0, 4297, 740, 1, 0, 0, - 0, 4298, 4299, 3, 1067, 533, 0, 4299, 4300, 3, 1041, 520, 0, 4300, 4301, - 3, 1083, 541, 0, 4301, 4302, 3, 1057, 528, 0, 4302, 4303, 3, 1053, 526, - 0, 4303, 4304, 3, 1041, 520, 0, 4304, 4305, 3, 1079, 539, 0, 4305, 4306, - 3, 1057, 528, 0, 4306, 4307, 3, 1069, 534, 0, 4307, 4308, 3, 1067, 533, - 0, 4308, 742, 1, 0, 0, 0, 4309, 4310, 3, 1065, 532, 0, 4310, 4311, 3, 1049, - 524, 0, 4311, 4312, 3, 1067, 533, 0, 4312, 4313, 3, 1081, 540, 0, 4313, - 744, 1, 0, 0, 0, 4314, 4315, 3, 1055, 527, 0, 4315, 4316, 3, 1069, 534, - 0, 4316, 4317, 3, 1065, 532, 0, 4317, 4318, 3, 1049, 524, 0, 4318, 4319, - 3, 1077, 538, 0, 4319, 746, 1, 0, 0, 0, 4320, 4321, 3, 1055, 527, 0, 4321, - 4322, 3, 1069, 534, 0, 4322, 4323, 3, 1065, 532, 0, 4323, 4324, 3, 1049, - 524, 0, 4324, 748, 1, 0, 0, 0, 4325, 4326, 3, 1063, 531, 0, 4326, 4327, - 3, 1069, 534, 0, 4327, 4328, 3, 1053, 526, 0, 4328, 4329, 3, 1057, 528, - 0, 4329, 4330, 3, 1067, 533, 0, 4330, 750, 1, 0, 0, 0, 4331, 4332, 3, 1051, - 525, 0, 4332, 4333, 3, 1069, 534, 0, 4333, 4334, 3, 1081, 540, 0, 4334, - 4335, 3, 1067, 533, 0, 4335, 4336, 3, 1047, 523, 0, 4336, 752, 1, 0, 0, - 0, 4337, 4338, 3, 1065, 532, 0, 4338, 4339, 3, 1069, 534, 0, 4339, 4340, - 3, 1047, 523, 0, 4340, 4341, 3, 1081, 540, 0, 4341, 4342, 3, 1063, 531, - 0, 4342, 4343, 3, 1049, 524, 0, 4343, 4344, 3, 1077, 538, 0, 4344, 754, - 1, 0, 0, 0, 4345, 4346, 3, 1049, 524, 0, 4346, 4347, 3, 1067, 533, 0, 4347, - 4348, 3, 1079, 539, 0, 4348, 4349, 3, 1057, 528, 0, 4349, 4350, 3, 1079, - 539, 0, 4350, 4351, 3, 1057, 528, 0, 4351, 4352, 3, 1049, 524, 0, 4352, - 4353, 3, 1077, 538, 0, 4353, 756, 1, 0, 0, 0, 4354, 4355, 3, 1041, 520, - 0, 4355, 4356, 3, 1077, 538, 0, 4356, 4357, 3, 1077, 538, 0, 4357, 4358, - 3, 1069, 534, 0, 4358, 4359, 3, 1045, 522, 0, 4359, 4360, 3, 1057, 528, - 0, 4360, 4361, 3, 1041, 520, 0, 4361, 4362, 3, 1079, 539, 0, 4362, 4363, - 3, 1057, 528, 0, 4363, 4364, 3, 1069, 534, 0, 4364, 4365, 3, 1067, 533, - 0, 4365, 4366, 3, 1077, 538, 0, 4366, 758, 1, 0, 0, 0, 4367, 4368, 3, 1065, - 532, 0, 4368, 4369, 3, 1057, 528, 0, 4369, 4370, 3, 1045, 522, 0, 4370, - 4371, 3, 1075, 537, 0, 4371, 4372, 3, 1069, 534, 0, 4372, 4373, 3, 1051, - 525, 0, 4373, 4374, 3, 1063, 531, 0, 4374, 4375, 3, 1069, 534, 0, 4375, - 4376, 3, 1085, 542, 0, 4376, 4377, 3, 1077, 538, 0, 4377, 760, 1, 0, 0, - 0, 4378, 4379, 3, 1067, 533, 0, 4379, 4380, 3, 1041, 520, 0, 4380, 4381, - 3, 1067, 533, 0, 4381, 4382, 3, 1069, 534, 0, 4382, 4383, 3, 1051, 525, - 0, 4383, 4384, 3, 1063, 531, 0, 4384, 4385, 3, 1069, 534, 0, 4385, 4386, - 3, 1085, 542, 0, 4386, 4387, 3, 1077, 538, 0, 4387, 762, 1, 0, 0, 0, 4388, - 4389, 3, 1085, 542, 0, 4389, 4390, 3, 1069, 534, 0, 4390, 4391, 3, 1075, - 537, 0, 4391, 4392, 3, 1061, 530, 0, 4392, 4393, 3, 1051, 525, 0, 4393, - 4394, 3, 1063, 531, 0, 4394, 4395, 3, 1069, 534, 0, 4395, 4396, 3, 1085, - 542, 0, 4396, 4397, 3, 1077, 538, 0, 4397, 764, 1, 0, 0, 0, 4398, 4399, - 3, 1049, 524, 0, 4399, 4400, 3, 1067, 533, 0, 4400, 4401, 3, 1081, 540, - 0, 4401, 4402, 3, 1065, 532, 0, 4402, 4403, 3, 1049, 524, 0, 4403, 4404, - 3, 1075, 537, 0, 4404, 4405, 3, 1041, 520, 0, 4405, 4406, 3, 1079, 539, - 0, 4406, 4407, 3, 1057, 528, 0, 4407, 4408, 3, 1069, 534, 0, 4408, 4409, - 3, 1067, 533, 0, 4409, 4410, 3, 1077, 538, 0, 4410, 766, 1, 0, 0, 0, 4411, - 4412, 3, 1045, 522, 0, 4412, 4413, 3, 1069, 534, 0, 4413, 4414, 3, 1067, - 533, 0, 4414, 4415, 3, 1077, 538, 0, 4415, 4416, 3, 1079, 539, 0, 4416, - 4417, 3, 1041, 520, 0, 4417, 4418, 3, 1067, 533, 0, 4418, 4419, 3, 1079, - 539, 0, 4419, 4420, 3, 1077, 538, 0, 4420, 768, 1, 0, 0, 0, 4421, 4422, - 3, 1045, 522, 0, 4422, 4423, 3, 1069, 534, 0, 4423, 4424, 3, 1067, 533, - 0, 4424, 4425, 3, 1067, 533, 0, 4425, 4426, 3, 1049, 524, 0, 4426, 4427, - 3, 1045, 522, 0, 4427, 4428, 3, 1079, 539, 0, 4428, 4429, 3, 1057, 528, - 0, 4429, 4430, 3, 1069, 534, 0, 4430, 4431, 3, 1067, 533, 0, 4431, 4432, - 3, 1077, 538, 0, 4432, 770, 1, 0, 0, 0, 4433, 4434, 3, 1047, 523, 0, 4434, - 4435, 3, 1049, 524, 0, 4435, 4436, 3, 1051, 525, 0, 4436, 4437, 3, 1057, - 528, 0, 4437, 4438, 3, 1067, 533, 0, 4438, 4439, 3, 1049, 524, 0, 4439, - 772, 1, 0, 0, 0, 4440, 4441, 3, 1051, 525, 0, 4441, 4442, 3, 1075, 537, - 0, 4442, 4443, 3, 1041, 520, 0, 4443, 4444, 3, 1053, 526, 0, 4444, 4445, - 3, 1065, 532, 0, 4445, 4446, 3, 1049, 524, 0, 4446, 4447, 3, 1067, 533, - 0, 4447, 4448, 3, 1079, 539, 0, 4448, 774, 1, 0, 0, 0, 4449, 4450, 3, 1051, - 525, 0, 4450, 4451, 3, 1075, 537, 0, 4451, 4452, 3, 1041, 520, 0, 4452, - 4453, 3, 1053, 526, 0, 4453, 4454, 3, 1065, 532, 0, 4454, 4455, 3, 1049, - 524, 0, 4455, 4456, 3, 1067, 533, 0, 4456, 4457, 3, 1079, 539, 0, 4457, - 4458, 3, 1077, 538, 0, 4458, 776, 1, 0, 0, 0, 4459, 4460, 3, 1057, 528, - 0, 4460, 4461, 3, 1067, 533, 0, 4461, 4462, 3, 1077, 538, 0, 4462, 4463, - 3, 1049, 524, 0, 4463, 4464, 3, 1075, 537, 0, 4464, 4465, 3, 1079, 539, - 0, 4465, 778, 1, 0, 0, 0, 4466, 4467, 3, 1043, 521, 0, 4467, 4468, 3, 1049, - 524, 0, 4468, 4469, 3, 1051, 525, 0, 4469, 4470, 3, 1069, 534, 0, 4470, - 4471, 3, 1075, 537, 0, 4471, 4472, 3, 1049, 524, 0, 4472, 780, 1, 0, 0, - 0, 4473, 4474, 3, 1041, 520, 0, 4474, 4475, 3, 1051, 525, 0, 4475, 4476, - 3, 1079, 539, 0, 4476, 4477, 3, 1049, 524, 0, 4477, 4478, 3, 1075, 537, - 0, 4478, 782, 1, 0, 0, 0, 4479, 4480, 3, 1081, 540, 0, 4480, 4481, 3, 1071, - 535, 0, 4481, 4482, 3, 1047, 523, 0, 4482, 4483, 3, 1041, 520, 0, 4483, - 4484, 3, 1079, 539, 0, 4484, 4485, 3, 1049, 524, 0, 4485, 784, 1, 0, 0, - 0, 4486, 4487, 3, 1075, 537, 0, 4487, 4488, 3, 1049, 524, 0, 4488, 4489, - 3, 1051, 525, 0, 4489, 4490, 3, 1075, 537, 0, 4490, 4491, 3, 1049, 524, - 0, 4491, 4492, 3, 1077, 538, 0, 4492, 4493, 3, 1055, 527, 0, 4493, 786, - 1, 0, 0, 0, 4494, 4495, 3, 1045, 522, 0, 4495, 4496, 3, 1055, 527, 0, 4496, - 4497, 3, 1049, 524, 0, 4497, 4498, 3, 1045, 522, 0, 4498, 4499, 3, 1061, - 530, 0, 4499, 788, 1, 0, 0, 0, 4500, 4501, 3, 1043, 521, 0, 4501, 4502, - 3, 1081, 540, 0, 4502, 4503, 3, 1057, 528, 0, 4503, 4504, 3, 1063, 531, - 0, 4504, 4505, 3, 1047, 523, 0, 4505, 790, 1, 0, 0, 0, 4506, 4507, 3, 1049, - 524, 0, 4507, 4508, 3, 1087, 543, 0, 4508, 4509, 3, 1049, 524, 0, 4509, - 4510, 3, 1045, 522, 0, 4510, 4511, 3, 1081, 540, 0, 4511, 4512, 3, 1079, - 539, 0, 4512, 4513, 3, 1049, 524, 0, 4513, 792, 1, 0, 0, 0, 4514, 4515, - 3, 1077, 538, 0, 4515, 4516, 3, 1045, 522, 0, 4516, 4517, 3, 1075, 537, - 0, 4517, 4518, 3, 1057, 528, 0, 4518, 4519, 3, 1071, 535, 0, 4519, 4520, - 3, 1079, 539, 0, 4520, 794, 1, 0, 0, 0, 4521, 4522, 3, 1063, 531, 0, 4522, - 4523, 3, 1057, 528, 0, 4523, 4524, 3, 1067, 533, 0, 4524, 4525, 3, 1079, - 539, 0, 4525, 796, 1, 0, 0, 0, 4526, 4527, 3, 1075, 537, 0, 4527, 4528, - 3, 1081, 540, 0, 4528, 4529, 3, 1063, 531, 0, 4529, 4530, 3, 1049, 524, - 0, 4530, 4531, 3, 1077, 538, 0, 4531, 798, 1, 0, 0, 0, 4532, 4533, 3, 1079, - 539, 0, 4533, 4534, 3, 1049, 524, 0, 4534, 4535, 3, 1087, 543, 0, 4535, - 4536, 3, 1079, 539, 0, 4536, 800, 1, 0, 0, 0, 4537, 4538, 3, 1077, 538, - 0, 4538, 4539, 3, 1041, 520, 0, 4539, 4540, 3, 1075, 537, 0, 4540, 4541, - 3, 1057, 528, 0, 4541, 4542, 3, 1051, 525, 0, 4542, 802, 1, 0, 0, 0, 4543, - 4544, 3, 1065, 532, 0, 4544, 4545, 3, 1049, 524, 0, 4545, 4546, 3, 1077, - 538, 0, 4546, 4547, 3, 1077, 538, 0, 4547, 4548, 3, 1041, 520, 0, 4548, - 4549, 3, 1053, 526, 0, 4549, 4550, 3, 1049, 524, 0, 4550, 804, 1, 0, 0, - 0, 4551, 4552, 3, 1065, 532, 0, 4552, 4553, 3, 1049, 524, 0, 4553, 4554, - 3, 1077, 538, 0, 4554, 4555, 3, 1077, 538, 0, 4555, 4556, 3, 1041, 520, - 0, 4556, 4557, 3, 1053, 526, 0, 4557, 4558, 3, 1049, 524, 0, 4558, 4559, - 3, 1077, 538, 0, 4559, 806, 1, 0, 0, 0, 4560, 4561, 3, 1045, 522, 0, 4561, - 4562, 3, 1055, 527, 0, 4562, 4563, 3, 1041, 520, 0, 4563, 4564, 3, 1067, - 533, 0, 4564, 4565, 3, 1067, 533, 0, 4565, 4566, 3, 1049, 524, 0, 4566, - 4567, 3, 1063, 531, 0, 4567, 4568, 3, 1077, 538, 0, 4568, 808, 1, 0, 0, - 0, 4569, 4570, 3, 1045, 522, 0, 4570, 4571, 3, 1069, 534, 0, 4571, 4572, - 3, 1065, 532, 0, 4572, 4573, 3, 1065, 532, 0, 4573, 4574, 3, 1049, 524, - 0, 4574, 4575, 3, 1067, 533, 0, 4575, 4576, 3, 1079, 539, 0, 4576, 810, - 1, 0, 0, 0, 4577, 4578, 3, 1045, 522, 0, 4578, 4579, 3, 1041, 520, 0, 4579, - 4580, 3, 1079, 539, 0, 4580, 4581, 3, 1041, 520, 0, 4581, 4582, 3, 1063, - 531, 0, 4582, 4583, 3, 1069, 534, 0, 4583, 4584, 3, 1053, 526, 0, 4584, - 812, 1, 0, 0, 0, 4585, 4586, 3, 1051, 525, 0, 4586, 4587, 3, 1069, 534, - 0, 4587, 4588, 3, 1075, 537, 0, 4588, 4589, 3, 1045, 522, 0, 4589, 4590, - 3, 1049, 524, 0, 4590, 814, 1, 0, 0, 0, 4591, 4592, 3, 1043, 521, 0, 4592, - 4593, 3, 1041, 520, 0, 4593, 4594, 3, 1045, 522, 0, 4594, 4595, 3, 1061, - 530, 0, 4595, 4596, 3, 1053, 526, 0, 4596, 4597, 3, 1075, 537, 0, 4597, - 4598, 3, 1069, 534, 0, 4598, 4599, 3, 1081, 540, 0, 4599, 4600, 3, 1067, - 533, 0, 4600, 4601, 3, 1047, 523, 0, 4601, 816, 1, 0, 0, 0, 4602, 4603, - 3, 1045, 522, 0, 4603, 4604, 3, 1041, 520, 0, 4604, 4605, 3, 1063, 531, - 0, 4605, 4606, 3, 1063, 531, 0, 4606, 4607, 3, 1049, 524, 0, 4607, 4608, - 3, 1075, 537, 0, 4608, 4609, 3, 1077, 538, 0, 4609, 818, 1, 0, 0, 0, 4610, - 4611, 3, 1045, 522, 0, 4611, 4612, 3, 1041, 520, 0, 4612, 4613, 3, 1063, - 531, 0, 4613, 4614, 3, 1063, 531, 0, 4614, 4615, 3, 1049, 524, 0, 4615, - 4616, 3, 1049, 524, 0, 4616, 4617, 3, 1077, 538, 0, 4617, 820, 1, 0, 0, - 0, 4618, 4619, 3, 1075, 537, 0, 4619, 4620, 3, 1049, 524, 0, 4620, 4621, - 3, 1051, 525, 0, 4621, 4622, 3, 1049, 524, 0, 4622, 4623, 3, 1075, 537, - 0, 4623, 4624, 3, 1049, 524, 0, 4624, 4625, 3, 1067, 533, 0, 4625, 4626, - 3, 1045, 522, 0, 4626, 4627, 3, 1049, 524, 0, 4627, 4628, 3, 1077, 538, - 0, 4628, 822, 1, 0, 0, 0, 4629, 4630, 3, 1079, 539, 0, 4630, 4631, 3, 1075, - 537, 0, 4631, 4632, 3, 1041, 520, 0, 4632, 4633, 3, 1067, 533, 0, 4633, - 4634, 3, 1077, 538, 0, 4634, 4635, 3, 1057, 528, 0, 4635, 4636, 3, 1079, - 539, 0, 4636, 4637, 3, 1057, 528, 0, 4637, 4638, 3, 1083, 541, 0, 4638, - 4639, 3, 1049, 524, 0, 4639, 824, 1, 0, 0, 0, 4640, 4641, 3, 1057, 528, - 0, 4641, 4642, 3, 1065, 532, 0, 4642, 4643, 3, 1071, 535, 0, 4643, 4644, - 3, 1041, 520, 0, 4644, 4645, 3, 1045, 522, 0, 4645, 4646, 3, 1079, 539, - 0, 4646, 826, 1, 0, 0, 0, 4647, 4648, 3, 1047, 523, 0, 4648, 4649, 3, 1049, - 524, 0, 4649, 4650, 3, 1071, 535, 0, 4650, 4651, 3, 1079, 539, 0, 4651, - 4652, 3, 1055, 527, 0, 4652, 828, 1, 0, 0, 0, 4653, 4654, 3, 1077, 538, - 0, 4654, 4655, 3, 1079, 539, 0, 4655, 4656, 3, 1075, 537, 0, 4656, 4657, - 3, 1081, 540, 0, 4657, 4658, 3, 1045, 522, 0, 4658, 4659, 3, 1079, 539, - 0, 4659, 4660, 3, 1081, 540, 0, 4660, 4661, 3, 1075, 537, 0, 4661, 4662, - 3, 1049, 524, 0, 4662, 830, 1, 0, 0, 0, 4663, 4664, 3, 1079, 539, 0, 4664, - 4665, 3, 1089, 544, 0, 4665, 4666, 3, 1071, 535, 0, 4666, 4667, 3, 1049, - 524, 0, 4667, 832, 1, 0, 0, 0, 4668, 4669, 3, 1083, 541, 0, 4669, 4670, - 3, 1041, 520, 0, 4670, 4671, 3, 1063, 531, 0, 4671, 4672, 3, 1081, 540, - 0, 4672, 4673, 3, 1049, 524, 0, 4673, 834, 1, 0, 0, 0, 4674, 4675, 3, 1083, - 541, 0, 4675, 4676, 3, 1041, 520, 0, 4676, 4677, 3, 1063, 531, 0, 4677, - 4678, 3, 1081, 540, 0, 4678, 4679, 3, 1049, 524, 0, 4679, 4680, 3, 1077, - 538, 0, 4680, 836, 1, 0, 0, 0, 4681, 4682, 3, 1077, 538, 0, 4682, 4683, - 3, 1057, 528, 0, 4683, 4684, 3, 1067, 533, 0, 4684, 4685, 3, 1053, 526, - 0, 4685, 4686, 3, 1063, 531, 0, 4686, 4687, 3, 1049, 524, 0, 4687, 838, - 1, 0, 0, 0, 4688, 4689, 3, 1065, 532, 0, 4689, 4690, 3, 1081, 540, 0, 4690, - 4691, 3, 1063, 531, 0, 4691, 4692, 3, 1079, 539, 0, 4692, 4693, 3, 1057, - 528, 0, 4693, 4694, 3, 1071, 535, 0, 4694, 4695, 3, 1063, 531, 0, 4695, - 4696, 3, 1049, 524, 0, 4696, 840, 1, 0, 0, 0, 4697, 4698, 3, 1067, 533, - 0, 4698, 4699, 3, 1069, 534, 0, 4699, 4700, 3, 1067, 533, 0, 4700, 4701, - 3, 1049, 524, 0, 4701, 842, 1, 0, 0, 0, 4702, 4703, 3, 1043, 521, 0, 4703, - 4704, 3, 1069, 534, 0, 4704, 4705, 3, 1079, 539, 0, 4705, 4706, 3, 1055, - 527, 0, 4706, 844, 1, 0, 0, 0, 4707, 4708, 3, 1079, 539, 0, 4708, 4709, - 3, 1069, 534, 0, 4709, 846, 1, 0, 0, 0, 4710, 4711, 3, 1069, 534, 0, 4711, - 4712, 3, 1051, 525, 0, 4712, 848, 1, 0, 0, 0, 4713, 4714, 3, 1069, 534, - 0, 4714, 4715, 3, 1083, 541, 0, 4715, 4716, 3, 1049, 524, 0, 4716, 4717, - 3, 1075, 537, 0, 4717, 850, 1, 0, 0, 0, 4718, 4719, 3, 1051, 525, 0, 4719, - 4720, 3, 1069, 534, 0, 4720, 4721, 3, 1075, 537, 0, 4721, 852, 1, 0, 0, - 0, 4722, 4723, 3, 1075, 537, 0, 4723, 4724, 3, 1049, 524, 0, 4724, 4725, - 3, 1071, 535, 0, 4725, 4726, 3, 1063, 531, 0, 4726, 4727, 3, 1041, 520, - 0, 4727, 4728, 3, 1045, 522, 0, 4728, 4729, 3, 1049, 524, 0, 4729, 854, - 1, 0, 0, 0, 4730, 4731, 3, 1065, 532, 0, 4731, 4732, 3, 1049, 524, 0, 4732, - 4733, 3, 1065, 532, 0, 4733, 4734, 3, 1043, 521, 0, 4734, 4735, 3, 1049, - 524, 0, 4735, 4736, 3, 1075, 537, 0, 4736, 4737, 3, 1077, 538, 0, 4737, - 856, 1, 0, 0, 0, 4738, 4739, 3, 1041, 520, 0, 4739, 4740, 3, 1079, 539, - 0, 4740, 4741, 3, 1079, 539, 0, 4741, 4742, 3, 1075, 537, 0, 4742, 4743, - 3, 1057, 528, 0, 4743, 4744, 3, 1043, 521, 0, 4744, 4745, 3, 1081, 540, - 0, 4745, 4746, 3, 1079, 539, 0, 4746, 4747, 3, 1049, 524, 0, 4747, 4748, - 3, 1067, 533, 0, 4748, 4749, 3, 1041, 520, 0, 4749, 4750, 3, 1065, 532, - 0, 4750, 4751, 3, 1049, 524, 0, 4751, 858, 1, 0, 0, 0, 4752, 4753, 3, 1051, - 525, 0, 4753, 4754, 3, 1069, 534, 0, 4754, 4755, 3, 1075, 537, 0, 4755, - 4756, 3, 1065, 532, 0, 4756, 4757, 3, 1041, 520, 0, 4757, 4758, 3, 1079, - 539, 0, 4758, 860, 1, 0, 0, 0, 4759, 4760, 3, 1077, 538, 0, 4760, 4761, - 3, 1073, 536, 0, 4761, 4762, 3, 1063, 531, 0, 4762, 862, 1, 0, 0, 0, 4763, - 4764, 3, 1085, 542, 0, 4764, 4765, 3, 1057, 528, 0, 4765, 4766, 3, 1079, - 539, 0, 4766, 4767, 3, 1055, 527, 0, 4767, 4768, 3, 1069, 534, 0, 4768, - 4769, 3, 1081, 540, 0, 4769, 4770, 3, 1079, 539, 0, 4770, 864, 1, 0, 0, - 0, 4771, 4772, 3, 1047, 523, 0, 4772, 4773, 3, 1075, 537, 0, 4773, 4774, - 3, 1089, 544, 0, 4774, 866, 1, 0, 0, 0, 4775, 4776, 3, 1075, 537, 0, 4776, - 4777, 3, 1081, 540, 0, 4777, 4778, 3, 1067, 533, 0, 4778, 868, 1, 0, 0, - 0, 4779, 4780, 3, 1085, 542, 0, 4780, 4781, 3, 1057, 528, 0, 4781, 4782, - 3, 1047, 523, 0, 4782, 4783, 3, 1053, 526, 0, 4783, 4784, 3, 1049, 524, - 0, 4784, 4785, 3, 1079, 539, 0, 4785, 4786, 3, 1079, 539, 0, 4786, 4787, - 3, 1089, 544, 0, 4787, 4788, 3, 1071, 535, 0, 4788, 4789, 3, 1049, 524, - 0, 4789, 870, 1, 0, 0, 0, 4790, 4791, 3, 1083, 541, 0, 4791, 4792, 5, 51, - 0, 0, 4792, 872, 1, 0, 0, 0, 4793, 4794, 3, 1043, 521, 0, 4794, 4795, 3, - 1081, 540, 0, 4795, 4796, 3, 1077, 538, 0, 4796, 4797, 3, 1057, 528, 0, - 4797, 4798, 3, 1067, 533, 0, 4798, 4799, 3, 1049, 524, 0, 4799, 4800, 3, - 1077, 538, 0, 4800, 4801, 3, 1077, 538, 0, 4801, 874, 1, 0, 0, 0, 4802, - 4803, 3, 1049, 524, 0, 4803, 4804, 3, 1083, 541, 0, 4804, 4805, 3, 1049, - 524, 0, 4805, 4806, 3, 1067, 533, 0, 4806, 4807, 3, 1079, 539, 0, 4807, - 876, 1, 0, 0, 0, 4808, 4809, 3, 1077, 538, 0, 4809, 4810, 3, 1081, 540, - 0, 4810, 4811, 3, 1043, 521, 0, 4811, 4812, 3, 1077, 538, 0, 4812, 4813, - 3, 1045, 522, 0, 4813, 4814, 3, 1075, 537, 0, 4814, 4815, 3, 1057, 528, - 0, 4815, 4816, 3, 1043, 521, 0, 4816, 4817, 3, 1049, 524, 0, 4817, 878, - 1, 0, 0, 0, 4818, 4819, 3, 1077, 538, 0, 4819, 4820, 3, 1049, 524, 0, 4820, - 4821, 3, 1079, 539, 0, 4821, 4822, 3, 1079, 539, 0, 4822, 4823, 3, 1057, - 528, 0, 4823, 4824, 3, 1067, 533, 0, 4824, 4825, 3, 1053, 526, 0, 4825, - 4826, 3, 1077, 538, 0, 4826, 880, 1, 0, 0, 0, 4827, 4828, 3, 1045, 522, - 0, 4828, 4829, 3, 1069, 534, 0, 4829, 4830, 3, 1067, 533, 0, 4830, 4831, - 3, 1051, 525, 0, 4831, 4832, 3, 1057, 528, 0, 4832, 4833, 3, 1053, 526, - 0, 4833, 4834, 3, 1081, 540, 0, 4834, 4835, 3, 1075, 537, 0, 4835, 4836, - 3, 1041, 520, 0, 4836, 4837, 3, 1079, 539, 0, 4837, 4838, 3, 1057, 528, - 0, 4838, 4839, 3, 1069, 534, 0, 4839, 4840, 3, 1067, 533, 0, 4840, 882, - 1, 0, 0, 0, 4841, 4842, 3, 1077, 538, 0, 4842, 4843, 3, 1049, 524, 0, 4843, - 4844, 3, 1045, 522, 0, 4844, 4845, 3, 1081, 540, 0, 4845, 4846, 3, 1075, - 537, 0, 4846, 4847, 3, 1057, 528, 0, 4847, 4848, 3, 1079, 539, 0, 4848, - 4849, 3, 1089, 544, 0, 4849, 884, 1, 0, 0, 0, 4850, 4851, 3, 1075, 537, - 0, 4851, 4852, 3, 1069, 534, 0, 4852, 4853, 3, 1063, 531, 0, 4853, 4854, - 3, 1049, 524, 0, 4854, 886, 1, 0, 0, 0, 4855, 4856, 3, 1075, 537, 0, 4856, - 4857, 3, 1069, 534, 0, 4857, 4858, 3, 1063, 531, 0, 4858, 4859, 3, 1049, - 524, 0, 4859, 4860, 3, 1077, 538, 0, 4860, 888, 1, 0, 0, 0, 4861, 4862, - 3, 1053, 526, 0, 4862, 4863, 3, 1075, 537, 0, 4863, 4864, 3, 1041, 520, - 0, 4864, 4865, 3, 1067, 533, 0, 4865, 4866, 3, 1079, 539, 0, 4866, 890, - 1, 0, 0, 0, 4867, 4868, 3, 1075, 537, 0, 4868, 4869, 3, 1049, 524, 0, 4869, - 4870, 3, 1083, 541, 0, 4870, 4871, 3, 1069, 534, 0, 4871, 4872, 3, 1061, - 530, 0, 4872, 4873, 3, 1049, 524, 0, 4873, 892, 1, 0, 0, 0, 4874, 4875, - 3, 1071, 535, 0, 4875, 4876, 3, 1075, 537, 0, 4876, 4877, 3, 1069, 534, - 0, 4877, 4878, 3, 1047, 523, 0, 4878, 4879, 3, 1081, 540, 0, 4879, 4880, - 3, 1045, 522, 0, 4880, 4881, 3, 1079, 539, 0, 4881, 4882, 3, 1057, 528, - 0, 4882, 4883, 3, 1069, 534, 0, 4883, 4884, 3, 1067, 533, 0, 4884, 894, - 1, 0, 0, 0, 4885, 4886, 3, 1071, 535, 0, 4886, 4887, 3, 1075, 537, 0, 4887, - 4888, 3, 1069, 534, 0, 4888, 4889, 3, 1079, 539, 0, 4889, 4890, 3, 1069, - 534, 0, 4890, 4891, 3, 1079, 539, 0, 4891, 4892, 3, 1089, 544, 0, 4892, - 4893, 3, 1071, 535, 0, 4893, 4894, 3, 1049, 524, 0, 4894, 896, 1, 0, 0, - 0, 4895, 4896, 3, 1065, 532, 0, 4896, 4897, 3, 1041, 520, 0, 4897, 4898, - 3, 1067, 533, 0, 4898, 4899, 3, 1041, 520, 0, 4899, 4900, 3, 1053, 526, - 0, 4900, 4901, 3, 1049, 524, 0, 4901, 898, 1, 0, 0, 0, 4902, 4903, 3, 1047, - 523, 0, 4903, 4904, 3, 1049, 524, 0, 4904, 4905, 3, 1065, 532, 0, 4905, - 4906, 3, 1069, 534, 0, 4906, 900, 1, 0, 0, 0, 4907, 4908, 3, 1065, 532, - 0, 4908, 4909, 3, 1041, 520, 0, 4909, 4910, 3, 1079, 539, 0, 4910, 4911, - 3, 1075, 537, 0, 4911, 4912, 3, 1057, 528, 0, 4912, 4913, 3, 1087, 543, - 0, 4913, 902, 1, 0, 0, 0, 4914, 4915, 3, 1041, 520, 0, 4915, 4916, 3, 1071, - 535, 0, 4916, 4917, 3, 1071, 535, 0, 4917, 4918, 3, 1063, 531, 0, 4918, - 4919, 3, 1089, 544, 0, 4919, 904, 1, 0, 0, 0, 4920, 4921, 3, 1041, 520, - 0, 4921, 4922, 3, 1045, 522, 0, 4922, 4923, 3, 1045, 522, 0, 4923, 4924, - 3, 1049, 524, 0, 4924, 4925, 3, 1077, 538, 0, 4925, 4926, 3, 1077, 538, - 0, 4926, 906, 1, 0, 0, 0, 4927, 4928, 3, 1063, 531, 0, 4928, 4929, 3, 1049, - 524, 0, 4929, 4930, 3, 1083, 541, 0, 4930, 4931, 3, 1049, 524, 0, 4931, - 4932, 3, 1063, 531, 0, 4932, 908, 1, 0, 0, 0, 4933, 4934, 3, 1081, 540, - 0, 4934, 4935, 3, 1077, 538, 0, 4935, 4936, 3, 1049, 524, 0, 4936, 4937, - 3, 1075, 537, 0, 4937, 910, 1, 0, 0, 0, 4938, 4939, 3, 1079, 539, 0, 4939, - 4940, 3, 1041, 520, 0, 4940, 4941, 3, 1077, 538, 0, 4941, 4942, 3, 1061, - 530, 0, 4942, 912, 1, 0, 0, 0, 4943, 4944, 3, 1047, 523, 0, 4944, 4945, - 3, 1049, 524, 0, 4945, 4946, 3, 1045, 522, 0, 4946, 4947, 3, 1057, 528, - 0, 4947, 4948, 3, 1077, 538, 0, 4948, 4949, 3, 1057, 528, 0, 4949, 4950, - 3, 1069, 534, 0, 4950, 4951, 3, 1067, 533, 0, 4951, 914, 1, 0, 0, 0, 4952, - 4953, 3, 1077, 538, 0, 4953, 4954, 3, 1071, 535, 0, 4954, 4955, 3, 1063, - 531, 0, 4955, 4956, 3, 1057, 528, 0, 4956, 4957, 3, 1079, 539, 0, 4957, - 916, 1, 0, 0, 0, 4958, 4959, 3, 1069, 534, 0, 4959, 4960, 3, 1081, 540, - 0, 4960, 4961, 3, 1079, 539, 0, 4961, 4962, 3, 1045, 522, 0, 4962, 4963, - 3, 1069, 534, 0, 4963, 4964, 3, 1065, 532, 0, 4964, 4965, 3, 1049, 524, - 0, 4965, 4966, 3, 1077, 538, 0, 4966, 918, 1, 0, 0, 0, 4967, 4968, 3, 1079, - 539, 0, 4968, 4969, 3, 1041, 520, 0, 4969, 4970, 3, 1075, 537, 0, 4970, - 4971, 3, 1053, 526, 0, 4971, 4972, 3, 1049, 524, 0, 4972, 4973, 3, 1079, - 539, 0, 4973, 4974, 3, 1057, 528, 0, 4974, 4975, 3, 1067, 533, 0, 4975, - 4976, 3, 1053, 526, 0, 4976, 920, 1, 0, 0, 0, 4977, 4978, 3, 1067, 533, - 0, 4978, 4979, 3, 1069, 534, 0, 4979, 4980, 3, 1079, 539, 0, 4980, 4981, - 3, 1057, 528, 0, 4981, 4982, 3, 1051, 525, 0, 4982, 4983, 3, 1057, 528, - 0, 4983, 4984, 3, 1045, 522, 0, 4984, 4985, 3, 1041, 520, 0, 4985, 4986, - 3, 1079, 539, 0, 4986, 4987, 3, 1057, 528, 0, 4987, 4988, 3, 1069, 534, - 0, 4988, 4989, 3, 1067, 533, 0, 4989, 922, 1, 0, 0, 0, 4990, 4991, 3, 1079, - 539, 0, 4991, 4992, 3, 1057, 528, 0, 4992, 4993, 3, 1065, 532, 0, 4993, - 4994, 3, 1049, 524, 0, 4994, 4995, 3, 1075, 537, 0, 4995, 924, 1, 0, 0, - 0, 4996, 4997, 3, 1059, 529, 0, 4997, 4998, 3, 1081, 540, 0, 4998, 4999, - 3, 1065, 532, 0, 4999, 5000, 3, 1071, 535, 0, 5000, 926, 1, 0, 0, 0, 5001, - 5002, 3, 1047, 523, 0, 5002, 5003, 3, 1081, 540, 0, 5003, 5004, 3, 1049, - 524, 0, 5004, 928, 1, 0, 0, 0, 5005, 5006, 3, 1069, 534, 0, 5006, 5007, - 3, 1083, 541, 0, 5007, 5008, 3, 1049, 524, 0, 5008, 5009, 3, 1075, 537, - 0, 5009, 5010, 3, 1083, 541, 0, 5010, 5011, 3, 1057, 528, 0, 5011, 5012, - 3, 1049, 524, 0, 5012, 5013, 3, 1085, 542, 0, 5013, 930, 1, 0, 0, 0, 5014, - 5015, 3, 1047, 523, 0, 5015, 5016, 3, 1041, 520, 0, 5016, 5017, 3, 1079, - 539, 0, 5017, 5018, 3, 1049, 524, 0, 5018, 932, 1, 0, 0, 0, 5019, 5020, - 3, 1071, 535, 0, 5020, 5021, 3, 1041, 520, 0, 5021, 5022, 3, 1075, 537, - 0, 5022, 5023, 3, 1041, 520, 0, 5023, 5024, 3, 1063, 531, 0, 5024, 5025, - 3, 1063, 531, 0, 5025, 5026, 3, 1049, 524, 0, 5026, 5027, 3, 1063, 531, - 0, 5027, 934, 1, 0, 0, 0, 5028, 5029, 3, 1085, 542, 0, 5029, 5030, 3, 1041, - 520, 0, 5030, 5031, 3, 1057, 528, 0, 5031, 5032, 3, 1079, 539, 0, 5032, - 936, 1, 0, 0, 0, 5033, 5034, 3, 1041, 520, 0, 5034, 5035, 3, 1067, 533, - 0, 5035, 5036, 3, 1067, 533, 0, 5036, 5037, 3, 1069, 534, 0, 5037, 5038, - 3, 1079, 539, 0, 5038, 5039, 3, 1041, 520, 0, 5039, 5040, 3, 1079, 539, - 0, 5040, 5041, 3, 1057, 528, 0, 5041, 5042, 3, 1069, 534, 0, 5042, 5043, - 3, 1067, 533, 0, 5043, 938, 1, 0, 0, 0, 5044, 5045, 3, 1043, 521, 0, 5045, - 5046, 3, 1069, 534, 0, 5046, 5047, 3, 1081, 540, 0, 5047, 5048, 3, 1067, - 533, 0, 5048, 5049, 3, 1047, 523, 0, 5049, 5050, 3, 1041, 520, 0, 5050, - 5051, 3, 1075, 537, 0, 5051, 5052, 3, 1089, 544, 0, 5052, 940, 1, 0, 0, - 0, 5053, 5054, 3, 1057, 528, 0, 5054, 5055, 3, 1067, 533, 0, 5055, 5056, - 3, 1079, 539, 0, 5056, 5057, 3, 1049, 524, 0, 5057, 5058, 3, 1075, 537, - 0, 5058, 5059, 3, 1075, 537, 0, 5059, 5060, 3, 1081, 540, 0, 5060, 5061, - 3, 1071, 535, 0, 5061, 5062, 3, 1079, 539, 0, 5062, 5063, 3, 1057, 528, - 0, 5063, 5064, 3, 1067, 533, 0, 5064, 5065, 3, 1053, 526, 0, 5065, 942, - 1, 0, 0, 0, 5066, 5067, 3, 1067, 533, 0, 5067, 5068, 3, 1069, 534, 0, 5068, - 5069, 3, 1067, 533, 0, 5069, 944, 1, 0, 0, 0, 5070, 5071, 3, 1065, 532, - 0, 5071, 5072, 3, 1081, 540, 0, 5072, 5073, 3, 1063, 531, 0, 5073, 5074, - 3, 1079, 539, 0, 5074, 5075, 3, 1057, 528, 0, 5075, 946, 1, 0, 0, 0, 5076, - 5077, 3, 1043, 521, 0, 5077, 5078, 3, 1089, 544, 0, 5078, 948, 1, 0, 0, - 0, 5079, 5080, 3, 1075, 537, 0, 5080, 5081, 3, 1049, 524, 0, 5081, 5082, - 3, 1041, 520, 0, 5082, 5083, 3, 1047, 523, 0, 5083, 950, 1, 0, 0, 0, 5084, - 5085, 3, 1085, 542, 0, 5085, 5086, 3, 1075, 537, 0, 5086, 5087, 3, 1057, - 528, 0, 5087, 5088, 3, 1079, 539, 0, 5088, 5089, 3, 1049, 524, 0, 5089, - 952, 1, 0, 0, 0, 5090, 5091, 3, 1047, 523, 0, 5091, 5092, 3, 1049, 524, - 0, 5092, 5093, 3, 1077, 538, 0, 5093, 5094, 3, 1045, 522, 0, 5094, 5095, - 3, 1075, 537, 0, 5095, 5096, 3, 1057, 528, 0, 5096, 5097, 3, 1071, 535, - 0, 5097, 5098, 3, 1079, 539, 0, 5098, 5099, 3, 1057, 528, 0, 5099, 5100, - 3, 1069, 534, 0, 5100, 5101, 3, 1067, 533, 0, 5101, 954, 1, 0, 0, 0, 5102, - 5103, 3, 1047, 523, 0, 5103, 5104, 3, 1057, 528, 0, 5104, 5105, 3, 1077, - 538, 0, 5105, 5106, 3, 1071, 535, 0, 5106, 5107, 3, 1063, 531, 0, 5107, - 5108, 3, 1041, 520, 0, 5108, 5109, 3, 1089, 544, 0, 5109, 956, 1, 0, 0, - 0, 5110, 5111, 3, 1069, 534, 0, 5111, 5112, 3, 1051, 525, 0, 5112, 5113, - 3, 1051, 525, 0, 5113, 958, 1, 0, 0, 0, 5114, 5115, 3, 1081, 540, 0, 5115, - 5116, 3, 1077, 538, 0, 5116, 5117, 3, 1049, 524, 0, 5117, 5118, 3, 1075, - 537, 0, 5118, 5119, 3, 1077, 538, 0, 5119, 960, 1, 0, 0, 0, 5120, 5121, - 5, 60, 0, 0, 5121, 5125, 5, 62, 0, 0, 5122, 5123, 5, 33, 0, 0, 5123, 5125, - 5, 61, 0, 0, 5124, 5120, 1, 0, 0, 0, 5124, 5122, 1, 0, 0, 0, 5125, 962, - 1, 0, 0, 0, 5126, 5127, 5, 60, 0, 0, 5127, 5128, 5, 61, 0, 0, 5128, 964, - 1, 0, 0, 0, 5129, 5130, 5, 62, 0, 0, 5130, 5131, 5, 61, 0, 0, 5131, 966, - 1, 0, 0, 0, 5132, 5133, 5, 61, 0, 0, 5133, 968, 1, 0, 0, 0, 5134, 5135, - 5, 60, 0, 0, 5135, 970, 1, 0, 0, 0, 5136, 5137, 5, 62, 0, 0, 5137, 972, - 1, 0, 0, 0, 5138, 5139, 5, 43, 0, 0, 5139, 974, 1, 0, 0, 0, 5140, 5141, - 5, 45, 0, 0, 5141, 976, 1, 0, 0, 0, 5142, 5143, 5, 42, 0, 0, 5143, 978, - 1, 0, 0, 0, 5144, 5145, 5, 47, 0, 0, 5145, 980, 1, 0, 0, 0, 5146, 5147, - 5, 37, 0, 0, 5147, 982, 1, 0, 0, 0, 5148, 5149, 3, 1065, 532, 0, 5149, - 5150, 3, 1069, 534, 0, 5150, 5151, 3, 1047, 523, 0, 5151, 984, 1, 0, 0, - 0, 5152, 5153, 3, 1047, 523, 0, 5153, 5154, 3, 1057, 528, 0, 5154, 5155, - 3, 1083, 541, 0, 5155, 986, 1, 0, 0, 0, 5156, 5157, 5, 59, 0, 0, 5157, - 988, 1, 0, 0, 0, 5158, 5159, 5, 44, 0, 0, 5159, 990, 1, 0, 0, 0, 5160, - 5161, 5, 46, 0, 0, 5161, 992, 1, 0, 0, 0, 5162, 5163, 5, 40, 0, 0, 5163, - 994, 1, 0, 0, 0, 5164, 5165, 5, 41, 0, 0, 5165, 996, 1, 0, 0, 0, 5166, - 5167, 5, 123, 0, 0, 5167, 998, 1, 0, 0, 0, 5168, 5169, 5, 125, 0, 0, 5169, - 1000, 1, 0, 0, 0, 5170, 5171, 5, 91, 0, 0, 5171, 1002, 1, 0, 0, 0, 5172, - 5173, 5, 93, 0, 0, 5173, 1004, 1, 0, 0, 0, 5174, 5175, 5, 58, 0, 0, 5175, - 1006, 1, 0, 0, 0, 5176, 5177, 5, 64, 0, 0, 5177, 1008, 1, 0, 0, 0, 5178, - 5179, 5, 124, 0, 0, 5179, 1010, 1, 0, 0, 0, 5180, 5181, 5, 58, 0, 0, 5181, - 5182, 5, 58, 0, 0, 5182, 1012, 1, 0, 0, 0, 5183, 5184, 5, 45, 0, 0, 5184, - 5185, 5, 62, 0, 0, 5185, 1014, 1, 0, 0, 0, 5186, 5187, 5, 63, 0, 0, 5187, - 1016, 1, 0, 0, 0, 5188, 5189, 5, 35, 0, 0, 5189, 1018, 1, 0, 0, 0, 5190, - 5191, 5, 91, 0, 0, 5191, 5192, 5, 37, 0, 0, 5192, 5196, 1, 0, 0, 0, 5193, - 5195, 9, 0, 0, 0, 5194, 5193, 1, 0, 0, 0, 5195, 5198, 1, 0, 0, 0, 5196, - 5197, 1, 0, 0, 0, 5196, 5194, 1, 0, 0, 0, 5197, 5199, 1, 0, 0, 0, 5198, - 5196, 1, 0, 0, 0, 5199, 5200, 5, 37, 0, 0, 5200, 5201, 5, 93, 0, 0, 5201, - 1020, 1, 0, 0, 0, 5202, 5210, 5, 39, 0, 0, 5203, 5209, 8, 2, 0, 0, 5204, - 5205, 5, 92, 0, 0, 5205, 5209, 9, 0, 0, 0, 5206, 5207, 5, 39, 0, 0, 5207, - 5209, 5, 39, 0, 0, 5208, 5203, 1, 0, 0, 0, 5208, 5204, 1, 0, 0, 0, 5208, - 5206, 1, 0, 0, 0, 5209, 5212, 1, 0, 0, 0, 5210, 5208, 1, 0, 0, 0, 5210, - 5211, 1, 0, 0, 0, 5211, 5213, 1, 0, 0, 0, 5212, 5210, 1, 0, 0, 0, 5213, - 5214, 5, 39, 0, 0, 5214, 1022, 1, 0, 0, 0, 5215, 5216, 5, 36, 0, 0, 5216, - 5217, 5, 36, 0, 0, 5217, 5221, 1, 0, 0, 0, 5218, 5220, 9, 0, 0, 0, 5219, - 5218, 1, 0, 0, 0, 5220, 5223, 1, 0, 0, 0, 5221, 5222, 1, 0, 0, 0, 5221, - 5219, 1, 0, 0, 0, 5222, 5224, 1, 0, 0, 0, 5223, 5221, 1, 0, 0, 0, 5224, - 5225, 5, 36, 0, 0, 5225, 5226, 5, 36, 0, 0, 5226, 1024, 1, 0, 0, 0, 5227, - 5229, 5, 45, 0, 0, 5228, 5227, 1, 0, 0, 0, 5228, 5229, 1, 0, 0, 0, 5229, - 5231, 1, 0, 0, 0, 5230, 5232, 3, 1039, 519, 0, 5231, 5230, 1, 0, 0, 0, - 5232, 5233, 1, 0, 0, 0, 5233, 5231, 1, 0, 0, 0, 5233, 5234, 1, 0, 0, 0, - 5234, 5241, 1, 0, 0, 0, 5235, 5237, 5, 46, 0, 0, 5236, 5238, 3, 1039, 519, - 0, 5237, 5236, 1, 0, 0, 0, 5238, 5239, 1, 0, 0, 0, 5239, 5237, 1, 0, 0, - 0, 5239, 5240, 1, 0, 0, 0, 5240, 5242, 1, 0, 0, 0, 5241, 5235, 1, 0, 0, - 0, 5241, 5242, 1, 0, 0, 0, 5242, 5252, 1, 0, 0, 0, 5243, 5245, 7, 3, 0, - 0, 5244, 5246, 7, 4, 0, 0, 5245, 5244, 1, 0, 0, 0, 5245, 5246, 1, 0, 0, - 0, 5246, 5248, 1, 0, 0, 0, 5247, 5249, 3, 1039, 519, 0, 5248, 5247, 1, - 0, 0, 0, 5249, 5250, 1, 0, 0, 0, 5250, 5248, 1, 0, 0, 0, 5250, 5251, 1, - 0, 0, 0, 5251, 5253, 1, 0, 0, 0, 5252, 5243, 1, 0, 0, 0, 5252, 5253, 1, - 0, 0, 0, 5253, 1026, 1, 0, 0, 0, 5254, 5256, 5, 36, 0, 0, 5255, 5257, 3, - 1037, 518, 0, 5256, 5255, 1, 0, 0, 0, 5257, 5258, 1, 0, 0, 0, 5258, 5256, - 1, 0, 0, 0, 5258, 5259, 1, 0, 0, 0, 5259, 1028, 1, 0, 0, 0, 5260, 5264, - 3, 1035, 517, 0, 5261, 5263, 3, 1037, 518, 0, 5262, 5261, 1, 0, 0, 0, 5263, - 5266, 1, 0, 0, 0, 5264, 5262, 1, 0, 0, 0, 5264, 5265, 1, 0, 0, 0, 5265, - 1030, 1, 0, 0, 0, 5266, 5264, 1, 0, 0, 0, 5267, 5275, 3, 1035, 517, 0, - 5268, 5270, 3, 1037, 518, 0, 5269, 5268, 1, 0, 0, 0, 5270, 5273, 1, 0, - 0, 0, 5271, 5269, 1, 0, 0, 0, 5271, 5272, 1, 0, 0, 0, 5272, 5274, 1, 0, - 0, 0, 5273, 5271, 1, 0, 0, 0, 5274, 5276, 5, 45, 0, 0, 5275, 5271, 1, 0, - 0, 0, 5276, 5277, 1, 0, 0, 0, 5277, 5275, 1, 0, 0, 0, 5277, 5278, 1, 0, - 0, 0, 5278, 5282, 1, 0, 0, 0, 5279, 5281, 3, 1037, 518, 0, 5280, 5279, - 1, 0, 0, 0, 5281, 5284, 1, 0, 0, 0, 5282, 5280, 1, 0, 0, 0, 5282, 5283, - 1, 0, 0, 0, 5283, 1032, 1, 0, 0, 0, 5284, 5282, 1, 0, 0, 0, 5285, 5289, - 5, 34, 0, 0, 5286, 5288, 8, 5, 0, 0, 5287, 5286, 1, 0, 0, 0, 5288, 5291, - 1, 0, 0, 0, 5289, 5287, 1, 0, 0, 0, 5289, 5290, 1, 0, 0, 0, 5290, 5292, - 1, 0, 0, 0, 5291, 5289, 1, 0, 0, 0, 5292, 5302, 5, 34, 0, 0, 5293, 5297, - 5, 96, 0, 0, 5294, 5296, 8, 6, 0, 0, 5295, 5294, 1, 0, 0, 0, 5296, 5299, - 1, 0, 0, 0, 5297, 5295, 1, 0, 0, 0, 5297, 5298, 1, 0, 0, 0, 5298, 5300, - 1, 0, 0, 0, 5299, 5297, 1, 0, 0, 0, 5300, 5302, 5, 96, 0, 0, 5301, 5285, - 1, 0, 0, 0, 5301, 5293, 1, 0, 0, 0, 5302, 1034, 1, 0, 0, 0, 5303, 5304, - 7, 7, 0, 0, 5304, 1036, 1, 0, 0, 0, 5305, 5306, 7, 8, 0, 0, 5306, 1038, - 1, 0, 0, 0, 5307, 5308, 7, 9, 0, 0, 5308, 1040, 1, 0, 0, 0, 5309, 5310, - 7, 10, 0, 0, 5310, 1042, 1, 0, 0, 0, 5311, 5312, 7, 11, 0, 0, 5312, 1044, - 1, 0, 0, 0, 5313, 5314, 7, 12, 0, 0, 5314, 1046, 1, 0, 0, 0, 5315, 5316, - 7, 13, 0, 0, 5316, 1048, 1, 0, 0, 0, 5317, 5318, 7, 3, 0, 0, 5318, 1050, - 1, 0, 0, 0, 5319, 5320, 7, 14, 0, 0, 5320, 1052, 1, 0, 0, 0, 5321, 5322, - 7, 15, 0, 0, 5322, 1054, 1, 0, 0, 0, 5323, 5324, 7, 16, 0, 0, 5324, 1056, - 1, 0, 0, 0, 5325, 5326, 7, 17, 0, 0, 5326, 1058, 1, 0, 0, 0, 5327, 5328, - 7, 18, 0, 0, 5328, 1060, 1, 0, 0, 0, 5329, 5330, 7, 19, 0, 0, 5330, 1062, - 1, 0, 0, 0, 5331, 5332, 7, 20, 0, 0, 5332, 1064, 1, 0, 0, 0, 5333, 5334, - 7, 21, 0, 0, 5334, 1066, 1, 0, 0, 0, 5335, 5336, 7, 22, 0, 0, 5336, 1068, - 1, 0, 0, 0, 5337, 5338, 7, 23, 0, 0, 5338, 1070, 1, 0, 0, 0, 5339, 5340, - 7, 24, 0, 0, 5340, 1072, 1, 0, 0, 0, 5341, 5342, 7, 25, 0, 0, 5342, 1074, - 1, 0, 0, 0, 5343, 5344, 7, 26, 0, 0, 5344, 1076, 1, 0, 0, 0, 5345, 5346, - 7, 27, 0, 0, 5346, 1078, 1, 0, 0, 0, 5347, 5348, 7, 28, 0, 0, 5348, 1080, - 1, 0, 0, 0, 5349, 5350, 7, 29, 0, 0, 5350, 1082, 1, 0, 0, 0, 5351, 5352, - 7, 30, 0, 0, 5352, 1084, 1, 0, 0, 0, 5353, 5354, 7, 31, 0, 0, 5354, 1086, - 1, 0, 0, 0, 5355, 5356, 7, 32, 0, 0, 5356, 1088, 1, 0, 0, 0, 5357, 5358, - 7, 33, 0, 0, 5358, 1090, 1, 0, 0, 0, 5359, 5360, 7, 34, 0, 0, 5360, 1092, - 1, 0, 0, 0, 46, 0, 1096, 1107, 1119, 1133, 1143, 1151, 1163, 1176, 1191, - 1204, 1216, 1246, 1259, 1273, 1281, 1336, 1347, 1355, 1364, 1428, 1439, - 1446, 1453, 1511, 1807, 5124, 5196, 5208, 5210, 5221, 5228, 5233, 5239, - 5241, 5245, 5250, 5252, 5258, 5264, 5271, 5277, 5282, 5289, 5297, 5301, + 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, + 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, + 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, + 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, + 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, + 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1814, 8, + 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, + 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, + 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, + 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, + 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, + 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, + 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, + 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, + 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, + 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, + 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, + 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, + 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, + 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, + 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, + 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, + 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, + 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, + 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, + 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, + 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, + 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, + 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, + 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, + 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, + 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, + 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, + 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, + 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, + 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, + 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, + 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, + 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, + 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, + 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, + 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, + 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, + 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, + 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, + 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, + 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, + 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, + 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, + 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, + 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, + 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, + 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, + 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, + 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, + 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, + 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, + 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, + 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, + 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, + 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, + 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, + 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, + 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, + 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, + 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, + 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, + 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, + 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, + 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, + 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, + 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, + 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, + 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, + 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, + 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, + 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, + 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, + 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, + 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, + 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, + 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, + 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, + 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, + 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, + 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, + 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, + 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, + 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, + 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, + 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, + 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, + 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, + 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, + 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, + 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, + 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, + 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, + 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, + 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, + 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, + 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, + 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, + 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, + 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, + 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, + 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, + 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, + 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, + 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, + 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, + 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, + 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, + 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, + 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, + 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, + 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, + 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, + 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, + 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, + 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, + 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, + 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, + 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, + 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, + 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, + 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, + 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, + 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, + 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, + 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, + 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, + 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, + 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, + 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, + 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, + 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, + 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, + 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, + 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, + 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, + 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, + 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, + 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, + 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, + 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, + 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, + 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, + 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, + 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, + 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, + 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, + 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, + 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, + 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, + 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, + 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, + 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, + 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, + 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, + 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, + 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, + 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, + 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, + 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, + 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, + 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, + 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, + 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, + 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, + 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, + 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, + 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, + 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, + 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, + 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, + 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, + 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, + 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, + 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, + 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, + 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, + 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, + 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, + 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, + 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, + 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, + 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, + 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, + 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, + 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, + 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, + 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 258, 1, + 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 261, 1, + 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, + 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, + 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, + 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, + 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, + 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, + 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, + 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, + 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, + 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, + 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, + 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, + 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, + 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, + 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, + 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, + 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, + 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, + 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, + 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, + 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, + 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, + 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, + 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, + 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, + 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, + 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, + 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, + 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, + 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, + 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, + 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, + 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, + 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, + 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, + 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, + 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, + 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, + 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, + 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, + 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, + 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, + 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, + 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, + 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, + 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, + 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, + 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, + 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, + 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, + 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, + 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, + 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, + 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, + 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, + 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, + 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, + 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, + 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, + 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, + 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, + 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, + 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, + 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, + 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, + 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, + 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, + 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, + 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, + 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, + 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, + 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, + 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, + 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, + 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, + 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, + 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, + 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, + 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, + 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, + 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, + 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, + 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, + 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, + 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, + 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, + 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, + 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, + 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, + 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, + 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, + 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, + 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 1, + 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, + 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, + 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, + 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, + 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, + 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, + 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, + 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, + 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, + 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, + 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, + 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, + 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, + 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, + 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, + 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, + 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, + 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, + 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, + 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, + 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, + 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, + 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, + 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, + 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, + 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, + 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, + 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, + 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, + 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, + 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, + 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, + 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, + 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, + 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, + 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, + 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, + 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, + 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, + 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, + 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, + 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, + 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, + 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, + 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, + 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, + 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, + 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, + 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, + 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 439, 1, + 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, + 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, + 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, + 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, + 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, + 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, + 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, + 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, + 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, + 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, + 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, + 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, + 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, + 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, + 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, + 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, + 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, + 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, + 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, + 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, + 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, + 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, + 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, + 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, + 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, + 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, + 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, + 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, + 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, + 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, + 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, + 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, + 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, + 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, + 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, + 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, + 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 3, 483, 5168, 8, 483, 1, 484, + 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 487, 1, 487, + 1, 488, 1, 488, 1, 489, 1, 489, 1, 490, 1, 490, 1, 491, 1, 491, 1, 492, + 1, 492, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, + 1, 495, 1, 495, 1, 496, 1, 496, 1, 497, 1, 497, 1, 498, 1, 498, 1, 499, + 1, 499, 1, 500, 1, 500, 1, 501, 1, 501, 1, 502, 1, 502, 1, 503, 1, 503, + 1, 504, 1, 504, 1, 505, 1, 505, 1, 506, 1, 506, 1, 507, 1, 507, 1, 508, + 1, 508, 1, 508, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, 511, 1, 511, + 1, 512, 1, 512, 1, 512, 1, 512, 5, 512, 5238, 8, 512, 10, 512, 12, 512, + 5241, 9, 512, 1, 512, 1, 512, 1, 512, 1, 513, 1, 513, 1, 513, 1, 513, 1, + 513, 1, 513, 5, 513, 5252, 8, 513, 10, 513, 12, 513, 5255, 9, 513, 1, 513, + 1, 513, 1, 514, 1, 514, 1, 514, 1, 514, 5, 514, 5263, 8, 514, 10, 514, + 12, 514, 5266, 9, 514, 1, 514, 1, 514, 1, 514, 1, 515, 3, 515, 5272, 8, + 515, 1, 515, 4, 515, 5275, 8, 515, 11, 515, 12, 515, 5276, 1, 515, 1, 515, + 4, 515, 5281, 8, 515, 11, 515, 12, 515, 5282, 3, 515, 5285, 8, 515, 1, + 515, 1, 515, 3, 515, 5289, 8, 515, 1, 515, 4, 515, 5292, 8, 515, 11, 515, + 12, 515, 5293, 3, 515, 5296, 8, 515, 1, 516, 1, 516, 4, 516, 5300, 8, 516, + 11, 516, 12, 516, 5301, 1, 517, 1, 517, 5, 517, 5306, 8, 517, 10, 517, + 12, 517, 5309, 9, 517, 1, 518, 1, 518, 5, 518, 5313, 8, 518, 10, 518, 12, + 518, 5316, 9, 518, 1, 518, 4, 518, 5319, 8, 518, 11, 518, 12, 518, 5320, + 1, 518, 5, 518, 5324, 8, 518, 10, 518, 12, 518, 5327, 9, 518, 1, 519, 1, + 519, 5, 519, 5331, 8, 519, 10, 519, 12, 519, 5334, 9, 519, 1, 519, 1, 519, + 1, 519, 5, 519, 5339, 8, 519, 10, 519, 12, 519, 5342, 9, 519, 1, 519, 3, + 519, 5345, 8, 519, 1, 520, 1, 520, 1, 521, 1, 521, 1, 522, 1, 522, 1, 523, + 1, 523, 1, 524, 1, 524, 1, 525, 1, 525, 1, 526, 1, 526, 1, 527, 1, 527, + 1, 528, 1, 528, 1, 529, 1, 529, 1, 530, 1, 530, 1, 531, 1, 531, 1, 532, + 1, 532, 1, 533, 1, 533, 1, 534, 1, 534, 1, 535, 1, 535, 1, 536, 1, 536, + 1, 537, 1, 537, 1, 538, 1, 538, 1, 539, 1, 539, 1, 540, 1, 540, 1, 541, + 1, 541, 1, 542, 1, 542, 1, 543, 1, 543, 1, 544, 1, 544, 1, 545, 1, 545, + 1, 546, 1, 546, 1, 547, 1, 547, 1, 548, 1, 548, 4, 1113, 1125, 5239, 5264, + 0, 549, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, + 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, + 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, + 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, + 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, + 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, + 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, + 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, + 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, + 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, + 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, + 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, + 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, + 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, + 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, + 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, + 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, + 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, + 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, + 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, + 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, + 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, + 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, + 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, + 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, + 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, + 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, + 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, + 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, + 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, + 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, + 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, + 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, + 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, + 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 273, 547, 274, 549, 275, + 551, 276, 553, 277, 555, 278, 557, 279, 559, 280, 561, 281, 563, 282, 565, + 283, 567, 284, 569, 285, 571, 286, 573, 287, 575, 288, 577, 289, 579, 290, + 581, 291, 583, 292, 585, 293, 587, 294, 589, 295, 591, 296, 593, 297, 595, + 298, 597, 299, 599, 300, 601, 301, 603, 302, 605, 303, 607, 304, 609, 305, + 611, 306, 613, 307, 615, 308, 617, 309, 619, 310, 621, 311, 623, 312, 625, + 313, 627, 314, 629, 315, 631, 316, 633, 317, 635, 318, 637, 319, 639, 320, + 641, 321, 643, 322, 645, 323, 647, 324, 649, 325, 651, 326, 653, 327, 655, + 328, 657, 329, 659, 330, 661, 331, 663, 332, 665, 333, 667, 334, 669, 335, + 671, 336, 673, 337, 675, 338, 677, 339, 679, 340, 681, 341, 683, 342, 685, + 343, 687, 344, 689, 345, 691, 346, 693, 347, 695, 348, 697, 349, 699, 350, + 701, 351, 703, 352, 705, 353, 707, 354, 709, 355, 711, 356, 713, 357, 715, + 358, 717, 359, 719, 360, 721, 361, 723, 362, 725, 363, 727, 364, 729, 365, + 731, 366, 733, 367, 735, 368, 737, 369, 739, 370, 741, 371, 743, 372, 745, + 373, 747, 374, 749, 375, 751, 376, 753, 377, 755, 378, 757, 379, 759, 380, + 761, 381, 763, 382, 765, 383, 767, 384, 769, 385, 771, 386, 773, 387, 775, + 388, 777, 389, 779, 390, 781, 391, 783, 392, 785, 393, 787, 394, 789, 395, + 791, 396, 793, 397, 795, 398, 797, 399, 799, 400, 801, 401, 803, 402, 805, + 403, 807, 404, 809, 405, 811, 406, 813, 407, 815, 408, 817, 409, 819, 410, + 821, 411, 823, 412, 825, 413, 827, 414, 829, 415, 831, 416, 833, 417, 835, + 418, 837, 419, 839, 420, 841, 421, 843, 422, 845, 423, 847, 424, 849, 425, + 851, 426, 853, 427, 855, 428, 857, 429, 859, 430, 861, 431, 863, 432, 865, + 433, 867, 434, 869, 435, 871, 436, 873, 437, 875, 438, 877, 439, 879, 440, + 881, 441, 883, 442, 885, 443, 887, 444, 889, 445, 891, 446, 893, 447, 895, + 448, 897, 449, 899, 450, 901, 451, 903, 452, 905, 453, 907, 454, 909, 455, + 911, 456, 913, 457, 915, 458, 917, 459, 919, 460, 921, 461, 923, 462, 925, + 463, 927, 464, 929, 465, 931, 466, 933, 467, 935, 468, 937, 469, 939, 470, + 941, 471, 943, 472, 945, 473, 947, 474, 949, 475, 951, 476, 953, 477, 955, + 478, 957, 479, 959, 480, 961, 481, 963, 482, 965, 483, 967, 484, 969, 485, + 971, 486, 973, 487, 975, 488, 977, 489, 979, 490, 981, 491, 983, 492, 985, + 493, 987, 494, 989, 495, 991, 496, 993, 497, 995, 498, 997, 499, 999, 500, + 1001, 501, 1003, 502, 1005, 503, 1007, 504, 1009, 505, 1011, 506, 1013, + 507, 1015, 508, 1017, 509, 1019, 510, 1021, 511, 1023, 512, 1025, 513, + 1027, 514, 1029, 515, 1031, 516, 1033, 517, 1035, 518, 1037, 519, 1039, + 520, 1041, 0, 1043, 0, 1045, 0, 1047, 0, 1049, 0, 1051, 0, 1053, 0, 1055, + 0, 1057, 0, 1059, 0, 1061, 0, 1063, 0, 1065, 0, 1067, 0, 1069, 0, 1071, + 0, 1073, 0, 1075, 0, 1077, 0, 1079, 0, 1081, 0, 1083, 0, 1085, 0, 1087, + 0, 1089, 0, 1091, 0, 1093, 0, 1095, 0, 1097, 0, 1, 0, 35, 2, 0, 9, 13, + 32, 32, 2, 0, 10, 10, 13, 13, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 2, + 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 3, 0, 10, 10, 13, 13, 34, 34, + 3, 0, 10, 10, 13, 13, 96, 96, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, + 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, + 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 70, + 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, + 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, + 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, + 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, + 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, + 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, + 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 5423, 0, + 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, + 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, + 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, + 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, + 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, + 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, + 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, + 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, + 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, + 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, + 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, + 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, + 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, + 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, + 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, + 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, + 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, + 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, + 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, + 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, + 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, + 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, + 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, + 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, + 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, + 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, + 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, + 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, + 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, + 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, + 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, + 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, + 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, + 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, + 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, + 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, + 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, + 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, + 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, + 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, + 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, + 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, + 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, + 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, + 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, + 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, + 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, + 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, + 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, + 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, + 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, + 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, + 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, + 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, + 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, + 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, + 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, + 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, + 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, + 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, + 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, + 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, + 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, + 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, + 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, + 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, + 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, + 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, + 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, + 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, + 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, + 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, + 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, + 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, + 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, + 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, + 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, + 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, + 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, + 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, + 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, + 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, + 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, + 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, + 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, + 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, + 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, + 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, + 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, + 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, + 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, + 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, + 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, + 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, + 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, + 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, + 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, + 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, + 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, + 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, + 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, + 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, + 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, + 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, + 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, + 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, + 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, + 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, + 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, + 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, + 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, + 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, + 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, + 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, + 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, + 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, + 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, + 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, + 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, + 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, + 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, + 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, + 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, + 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, + 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, + 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, + 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, + 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, + 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, + 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, + 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, + 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, + 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, + 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, + 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, + 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, + 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, + 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, + 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, + 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, + 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, + 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, + 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 0, 1035, + 1, 0, 0, 0, 0, 1037, 1, 0, 0, 0, 0, 1039, 1, 0, 0, 0, 1, 1100, 1, 0, 0, + 0, 3, 1106, 1, 0, 0, 0, 5, 1119, 1, 0, 0, 0, 7, 1133, 1, 0, 0, 0, 9, 1144, + 1, 0, 0, 0, 11, 1164, 1, 0, 0, 0, 13, 1176, 1, 0, 0, 0, 15, 1189, 1, 0, + 0, 0, 17, 1202, 1, 0, 0, 0, 19, 1215, 1, 0, 0, 0, 21, 1227, 1, 0, 0, 0, + 23, 1242, 1, 0, 0, 0, 25, 1258, 1, 0, 0, 0, 27, 1342, 1, 0, 0, 0, 29, 1434, + 1, 0, 0, 0, 31, 1517, 1, 0, 0, 0, 33, 1519, 1, 0, 0, 0, 35, 1526, 1, 0, + 0, 0, 37, 1532, 1, 0, 0, 0, 39, 1537, 1, 0, 0, 0, 41, 1544, 1, 0, 0, 0, + 43, 1549, 1, 0, 0, 0, 45, 1556, 1, 0, 0, 0, 47, 1563, 1, 0, 0, 0, 49, 1574, + 1, 0, 0, 0, 51, 1579, 1, 0, 0, 0, 53, 1588, 1, 0, 0, 0, 55, 1600, 1, 0, + 0, 0, 57, 1612, 1, 0, 0, 0, 59, 1619, 1, 0, 0, 0, 61, 1629, 1, 0, 0, 0, + 63, 1638, 1, 0, 0, 0, 65, 1647, 1, 0, 0, 0, 67, 1652, 1, 0, 0, 0, 69, 1660, + 1, 0, 0, 0, 71, 1667, 1, 0, 0, 0, 73, 1676, 1, 0, 0, 0, 75, 1685, 1, 0, + 0, 0, 77, 1695, 1, 0, 0, 0, 79, 1702, 1, 0, 0, 0, 81, 1710, 1, 0, 0, 0, + 83, 1716, 1, 0, 0, 0, 85, 1722, 1, 0, 0, 0, 87, 1728, 1, 0, 0, 0, 89, 1738, + 1, 0, 0, 0, 91, 1753, 1, 0, 0, 0, 93, 1761, 1, 0, 0, 0, 95, 1765, 1, 0, + 0, 0, 97, 1769, 1, 0, 0, 0, 99, 1778, 1, 0, 0, 0, 101, 1792, 1, 0, 0, 0, + 103, 1800, 1, 0, 0, 0, 105, 1806, 1, 0, 0, 0, 107, 1824, 1, 0, 0, 0, 109, + 1832, 1, 0, 0, 0, 111, 1840, 1, 0, 0, 0, 113, 1848, 1, 0, 0, 0, 115, 1859, + 1, 0, 0, 0, 117, 1865, 1, 0, 0, 0, 119, 1873, 1, 0, 0, 0, 121, 1881, 1, + 0, 0, 0, 123, 1888, 1, 0, 0, 0, 125, 1894, 1, 0, 0, 0, 127, 1899, 1, 0, + 0, 0, 129, 1904, 1, 0, 0, 0, 131, 1909, 1, 0, 0, 0, 133, 1918, 1, 0, 0, + 0, 135, 1922, 1, 0, 0, 0, 137, 1933, 1, 0, 0, 0, 139, 1939, 1, 0, 0, 0, + 141, 1946, 1, 0, 0, 0, 143, 1951, 1, 0, 0, 0, 145, 1957, 1, 0, 0, 0, 147, + 1964, 1, 0, 0, 0, 149, 1971, 1, 0, 0, 0, 151, 1977, 1, 0, 0, 0, 153, 1980, + 1, 0, 0, 0, 155, 1988, 1, 0, 0, 0, 157, 1998, 1, 0, 0, 0, 159, 2003, 1, + 0, 0, 0, 161, 2008, 1, 0, 0, 0, 163, 2013, 1, 0, 0, 0, 165, 2018, 1, 0, + 0, 0, 167, 2022, 1, 0, 0, 0, 169, 2031, 1, 0, 0, 0, 171, 2035, 1, 0, 0, + 0, 173, 2040, 1, 0, 0, 0, 175, 2045, 1, 0, 0, 0, 177, 2051, 1, 0, 0, 0, + 179, 2057, 1, 0, 0, 0, 181, 2063, 1, 0, 0, 0, 183, 2068, 1, 0, 0, 0, 185, + 2074, 1, 0, 0, 0, 187, 2077, 1, 0, 0, 0, 189, 2081, 1, 0, 0, 0, 191, 2086, + 1, 0, 0, 0, 193, 2092, 1, 0, 0, 0, 195, 2100, 1, 0, 0, 0, 197, 2107, 1, + 0, 0, 0, 199, 2116, 1, 0, 0, 0, 201, 2123, 1, 0, 0, 0, 203, 2130, 1, 0, + 0, 0, 205, 2139, 1, 0, 0, 0, 207, 2144, 1, 0, 0, 0, 209, 2150, 1, 0, 0, + 0, 211, 2153, 1, 0, 0, 0, 213, 2159, 1, 0, 0, 0, 215, 2166, 1, 0, 0, 0, + 217, 2175, 1, 0, 0, 0, 219, 2181, 1, 0, 0, 0, 221, 2188, 1, 0, 0, 0, 223, + 2194, 1, 0, 0, 0, 225, 2198, 1, 0, 0, 0, 227, 2203, 1, 0, 0, 0, 229, 2208, + 1, 0, 0, 0, 231, 2219, 1, 0, 0, 0, 233, 2226, 1, 0, 0, 0, 235, 2234, 1, + 0, 0, 0, 237, 2240, 1, 0, 0, 0, 239, 2245, 1, 0, 0, 0, 241, 2252, 1, 0, + 0, 0, 243, 2257, 1, 0, 0, 0, 245, 2262, 1, 0, 0, 0, 247, 2267, 1, 0, 0, + 0, 249, 2272, 1, 0, 0, 0, 251, 2278, 1, 0, 0, 0, 253, 2288, 1, 0, 0, 0, + 255, 2297, 1, 0, 0, 0, 257, 2306, 1, 0, 0, 0, 259, 2314, 1, 0, 0, 0, 261, + 2322, 1, 0, 0, 0, 263, 2330, 1, 0, 0, 0, 265, 2335, 1, 0, 0, 0, 267, 2342, + 1, 0, 0, 0, 269, 2349, 1, 0, 0, 0, 271, 2354, 1, 0, 0, 0, 273, 2362, 1, + 0, 0, 0, 275, 2368, 1, 0, 0, 0, 277, 2377, 1, 0, 0, 0, 279, 2382, 1, 0, + 0, 0, 281, 2388, 1, 0, 0, 0, 283, 2395, 1, 0, 0, 0, 285, 2403, 1, 0, 0, + 0, 287, 2409, 1, 0, 0, 0, 289, 2417, 1, 0, 0, 0, 291, 2426, 1, 0, 0, 0, + 293, 2436, 1, 0, 0, 0, 295, 2448, 1, 0, 0, 0, 297, 2460, 1, 0, 0, 0, 299, + 2471, 1, 0, 0, 0, 301, 2480, 1, 0, 0, 0, 303, 2489, 1, 0, 0, 0, 305, 2498, + 1, 0, 0, 0, 307, 2506, 1, 0, 0, 0, 309, 2516, 1, 0, 0, 0, 311, 2520, 1, + 0, 0, 0, 313, 2525, 1, 0, 0, 0, 315, 2536, 1, 0, 0, 0, 317, 2543, 1, 0, + 0, 0, 319, 2553, 1, 0, 0, 0, 321, 2568, 1, 0, 0, 0, 323, 2581, 1, 0, 0, + 0, 325, 2592, 1, 0, 0, 0, 327, 2599, 1, 0, 0, 0, 329, 2605, 1, 0, 0, 0, + 331, 2617, 1, 0, 0, 0, 333, 2625, 1, 0, 0, 0, 335, 2636, 1, 0, 0, 0, 337, + 2642, 1, 0, 0, 0, 339, 2650, 1, 0, 0, 0, 341, 2659, 1, 0, 0, 0, 343, 2670, + 1, 0, 0, 0, 345, 2683, 1, 0, 0, 0, 347, 2692, 1, 0, 0, 0, 349, 2701, 1, + 0, 0, 0, 351, 2710, 1, 0, 0, 0, 353, 2728, 1, 0, 0, 0, 355, 2754, 1, 0, + 0, 0, 357, 2764, 1, 0, 0, 0, 359, 2775, 1, 0, 0, 0, 361, 2788, 1, 0, 0, + 0, 363, 2804, 1, 0, 0, 0, 365, 2815, 1, 0, 0, 0, 367, 2828, 1, 0, 0, 0, + 369, 2843, 1, 0, 0, 0, 371, 2854, 1, 0, 0, 0, 373, 2861, 1, 0, 0, 0, 375, + 2868, 1, 0, 0, 0, 377, 2876, 1, 0, 0, 0, 379, 2884, 1, 0, 0, 0, 381, 2889, + 1, 0, 0, 0, 383, 2897, 1, 0, 0, 0, 385, 2908, 1, 0, 0, 0, 387, 2915, 1, + 0, 0, 0, 389, 2925, 1, 0, 0, 0, 391, 2932, 1, 0, 0, 0, 393, 2939, 1, 0, + 0, 0, 395, 2947, 1, 0, 0, 0, 397, 2958, 1, 0, 0, 0, 399, 2964, 1, 0, 0, + 0, 401, 2969, 1, 0, 0, 0, 403, 2983, 1, 0, 0, 0, 405, 2997, 1, 0, 0, 0, + 407, 3004, 1, 0, 0, 0, 409, 3014, 1, 0, 0, 0, 411, 3027, 1, 0, 0, 0, 413, + 3039, 1, 0, 0, 0, 415, 3050, 1, 0, 0, 0, 417, 3056, 1, 0, 0, 0, 419, 3062, + 1, 0, 0, 0, 421, 3074, 1, 0, 0, 0, 423, 3081, 1, 0, 0, 0, 425, 3092, 1, + 0, 0, 0, 427, 3109, 1, 0, 0, 0, 429, 3117, 1, 0, 0, 0, 431, 3123, 1, 0, + 0, 0, 433, 3129, 1, 0, 0, 0, 435, 3136, 1, 0, 0, 0, 437, 3145, 1, 0, 0, + 0, 439, 3149, 1, 0, 0, 0, 441, 3156, 1, 0, 0, 0, 443, 3164, 1, 0, 0, 0, + 445, 3172, 1, 0, 0, 0, 447, 3181, 1, 0, 0, 0, 449, 3190, 1, 0, 0, 0, 451, + 3201, 1, 0, 0, 0, 453, 3212, 1, 0, 0, 0, 455, 3218, 1, 0, 0, 0, 457, 3229, + 1, 0, 0, 0, 459, 3241, 1, 0, 0, 0, 461, 3254, 1, 0, 0, 0, 463, 3270, 1, + 0, 0, 0, 465, 3283, 1, 0, 0, 0, 467, 3291, 1, 0, 0, 0, 469, 3300, 1, 0, + 0, 0, 471, 3308, 1, 0, 0, 0, 473, 3320, 1, 0, 0, 0, 475, 3333, 1, 0, 0, + 0, 477, 3348, 1, 0, 0, 0, 479, 3359, 1, 0, 0, 0, 481, 3369, 1, 0, 0, 0, + 483, 3383, 1, 0, 0, 0, 485, 3397, 1, 0, 0, 0, 487, 3411, 1, 0, 0, 0, 489, + 3426, 1, 0, 0, 0, 491, 3440, 1, 0, 0, 0, 493, 3450, 1, 0, 0, 0, 495, 3459, + 1, 0, 0, 0, 497, 3466, 1, 0, 0, 0, 499, 3474, 1, 0, 0, 0, 501, 3482, 1, + 0, 0, 0, 503, 3489, 1, 0, 0, 0, 505, 3497, 1, 0, 0, 0, 507, 3502, 1, 0, + 0, 0, 509, 3511, 1, 0, 0, 0, 511, 3519, 1, 0, 0, 0, 513, 3528, 1, 0, 0, + 0, 515, 3537, 1, 0, 0, 0, 517, 3540, 1, 0, 0, 0, 519, 3543, 1, 0, 0, 0, + 521, 3546, 1, 0, 0, 0, 523, 3549, 1, 0, 0, 0, 525, 3552, 1, 0, 0, 0, 527, + 3555, 1, 0, 0, 0, 529, 3565, 1, 0, 0, 0, 531, 3572, 1, 0, 0, 0, 533, 3580, + 1, 0, 0, 0, 535, 3585, 1, 0, 0, 0, 537, 3593, 1, 0, 0, 0, 539, 3601, 1, + 0, 0, 0, 541, 3610, 1, 0, 0, 0, 543, 3615, 1, 0, 0, 0, 545, 3626, 1, 0, + 0, 0, 547, 3633, 1, 0, 0, 0, 549, 3646, 1, 0, 0, 0, 551, 3655, 1, 0, 0, + 0, 553, 3661, 1, 0, 0, 0, 555, 3676, 1, 0, 0, 0, 557, 3681, 1, 0, 0, 0, + 559, 3687, 1, 0, 0, 0, 561, 3691, 1, 0, 0, 0, 563, 3695, 1, 0, 0, 0, 565, + 3699, 1, 0, 0, 0, 567, 3703, 1, 0, 0, 0, 569, 3710, 1, 0, 0, 0, 571, 3715, + 1, 0, 0, 0, 573, 3724, 1, 0, 0, 0, 575, 3729, 1, 0, 0, 0, 577, 3733, 1, + 0, 0, 0, 579, 3736, 1, 0, 0, 0, 581, 3740, 1, 0, 0, 0, 583, 3745, 1, 0, + 0, 0, 585, 3748, 1, 0, 0, 0, 587, 3756, 1, 0, 0, 0, 589, 3761, 1, 0, 0, + 0, 591, 3767, 1, 0, 0, 0, 593, 3774, 1, 0, 0, 0, 595, 3781, 1, 0, 0, 0, + 597, 3789, 1, 0, 0, 0, 599, 3794, 1, 0, 0, 0, 601, 3800, 1, 0, 0, 0, 603, + 3811, 1, 0, 0, 0, 605, 3820, 1, 0, 0, 0, 607, 3825, 1, 0, 0, 0, 609, 3834, + 1, 0, 0, 0, 611, 3840, 1, 0, 0, 0, 613, 3846, 1, 0, 0, 0, 615, 3852, 1, + 0, 0, 0, 617, 3858, 1, 0, 0, 0, 619, 3866, 1, 0, 0, 0, 621, 3877, 1, 0, + 0, 0, 623, 3883, 1, 0, 0, 0, 625, 3894, 1, 0, 0, 0, 627, 3905, 1, 0, 0, + 0, 629, 3910, 1, 0, 0, 0, 631, 3918, 1, 0, 0, 0, 633, 3927, 1, 0, 0, 0, + 635, 3933, 1, 0, 0, 0, 637, 3938, 1, 0, 0, 0, 639, 3943, 1, 0, 0, 0, 641, + 3958, 1, 0, 0, 0, 643, 3964, 1, 0, 0, 0, 645, 3972, 1, 0, 0, 0, 647, 3978, + 1, 0, 0, 0, 649, 3988, 1, 0, 0, 0, 651, 3995, 1, 0, 0, 0, 653, 4000, 1, + 0, 0, 0, 655, 4008, 1, 0, 0, 0, 657, 4013, 1, 0, 0, 0, 659, 4022, 1, 0, + 0, 0, 661, 4030, 1, 0, 0, 0, 663, 4035, 1, 0, 0, 0, 665, 4040, 1, 0, 0, + 0, 667, 4044, 1, 0, 0, 0, 669, 4051, 1, 0, 0, 0, 671, 4056, 1, 0, 0, 0, + 673, 4064, 1, 0, 0, 0, 675, 4068, 1, 0, 0, 0, 677, 4073, 1, 0, 0, 0, 679, + 4077, 1, 0, 0, 0, 681, 4083, 1, 0, 0, 0, 683, 4087, 1, 0, 0, 0, 685, 4094, + 1, 0, 0, 0, 687, 4102, 1, 0, 0, 0, 689, 4110, 1, 0, 0, 0, 691, 4120, 1, + 0, 0, 0, 693, 4127, 1, 0, 0, 0, 695, 4136, 1, 0, 0, 0, 697, 4146, 1, 0, + 0, 0, 699, 4154, 1, 0, 0, 0, 701, 4160, 1, 0, 0, 0, 703, 4167, 1, 0, 0, + 0, 705, 4181, 1, 0, 0, 0, 707, 4190, 1, 0, 0, 0, 709, 4199, 1, 0, 0, 0, + 711, 4210, 1, 0, 0, 0, 713, 4219, 1, 0, 0, 0, 715, 4225, 1, 0, 0, 0, 717, + 4229, 1, 0, 0, 0, 719, 4237, 1, 0, 0, 0, 721, 4244, 1, 0, 0, 0, 723, 4249, + 1, 0, 0, 0, 725, 4255, 1, 0, 0, 0, 727, 4260, 1, 0, 0, 0, 729, 4267, 1, + 0, 0, 0, 731, 4276, 1, 0, 0, 0, 733, 4286, 1, 0, 0, 0, 735, 4291, 1, 0, + 0, 0, 737, 4298, 1, 0, 0, 0, 739, 4304, 1, 0, 0, 0, 741, 4312, 1, 0, 0, + 0, 743, 4322, 1, 0, 0, 0, 745, 4333, 1, 0, 0, 0, 747, 4341, 1, 0, 0, 0, + 749, 4352, 1, 0, 0, 0, 751, 4357, 1, 0, 0, 0, 753, 4363, 1, 0, 0, 0, 755, + 4368, 1, 0, 0, 0, 757, 4374, 1, 0, 0, 0, 759, 4380, 1, 0, 0, 0, 761, 4388, + 1, 0, 0, 0, 763, 4397, 1, 0, 0, 0, 765, 4410, 1, 0, 0, 0, 767, 4421, 1, + 0, 0, 0, 769, 4431, 1, 0, 0, 0, 771, 4441, 1, 0, 0, 0, 773, 4454, 1, 0, + 0, 0, 775, 4464, 1, 0, 0, 0, 777, 4476, 1, 0, 0, 0, 779, 4483, 1, 0, 0, + 0, 781, 4492, 1, 0, 0, 0, 783, 4502, 1, 0, 0, 0, 785, 4509, 1, 0, 0, 0, + 787, 4516, 1, 0, 0, 0, 789, 4522, 1, 0, 0, 0, 791, 4529, 1, 0, 0, 0, 793, + 4537, 1, 0, 0, 0, 795, 4543, 1, 0, 0, 0, 797, 4549, 1, 0, 0, 0, 799, 4557, + 1, 0, 0, 0, 801, 4564, 1, 0, 0, 0, 803, 4569, 1, 0, 0, 0, 805, 4575, 1, + 0, 0, 0, 807, 4580, 1, 0, 0, 0, 809, 4586, 1, 0, 0, 0, 811, 4594, 1, 0, + 0, 0, 813, 4603, 1, 0, 0, 0, 815, 4612, 1, 0, 0, 0, 817, 4620, 1, 0, 0, + 0, 819, 4628, 1, 0, 0, 0, 821, 4634, 1, 0, 0, 0, 823, 4645, 1, 0, 0, 0, + 825, 4653, 1, 0, 0, 0, 827, 4661, 1, 0, 0, 0, 829, 4672, 1, 0, 0, 0, 831, + 4683, 1, 0, 0, 0, 833, 4690, 1, 0, 0, 0, 835, 4696, 1, 0, 0, 0, 837, 4706, + 1, 0, 0, 0, 839, 4711, 1, 0, 0, 0, 841, 4717, 1, 0, 0, 0, 843, 4724, 1, + 0, 0, 0, 845, 4731, 1, 0, 0, 0, 847, 4740, 1, 0, 0, 0, 849, 4745, 1, 0, + 0, 0, 851, 4750, 1, 0, 0, 0, 853, 4753, 1, 0, 0, 0, 855, 4756, 1, 0, 0, + 0, 857, 4761, 1, 0, 0, 0, 859, 4765, 1, 0, 0, 0, 861, 4773, 1, 0, 0, 0, + 863, 4781, 1, 0, 0, 0, 865, 4795, 1, 0, 0, 0, 867, 4802, 1, 0, 0, 0, 869, + 4806, 1, 0, 0, 0, 871, 4814, 1, 0, 0, 0, 873, 4818, 1, 0, 0, 0, 875, 4822, + 1, 0, 0, 0, 877, 4833, 1, 0, 0, 0, 879, 4836, 1, 0, 0, 0, 881, 4845, 1, + 0, 0, 0, 883, 4851, 1, 0, 0, 0, 885, 4861, 1, 0, 0, 0, 887, 4870, 1, 0, + 0, 0, 889, 4884, 1, 0, 0, 0, 891, 4893, 1, 0, 0, 0, 893, 4898, 1, 0, 0, + 0, 895, 4904, 1, 0, 0, 0, 897, 4910, 1, 0, 0, 0, 899, 4917, 1, 0, 0, 0, + 901, 4928, 1, 0, 0, 0, 903, 4938, 1, 0, 0, 0, 905, 4945, 1, 0, 0, 0, 907, + 4950, 1, 0, 0, 0, 909, 4957, 1, 0, 0, 0, 911, 4963, 1, 0, 0, 0, 913, 4970, + 1, 0, 0, 0, 915, 4976, 1, 0, 0, 0, 917, 4981, 1, 0, 0, 0, 919, 4986, 1, + 0, 0, 0, 921, 4995, 1, 0, 0, 0, 923, 5001, 1, 0, 0, 0, 925, 5010, 1, 0, + 0, 0, 927, 5020, 1, 0, 0, 0, 929, 5033, 1, 0, 0, 0, 931, 5039, 1, 0, 0, + 0, 933, 5044, 1, 0, 0, 0, 935, 5048, 1, 0, 0, 0, 937, 5057, 1, 0, 0, 0, + 939, 5062, 1, 0, 0, 0, 941, 5071, 1, 0, 0, 0, 943, 5076, 1, 0, 0, 0, 945, + 5087, 1, 0, 0, 0, 947, 5096, 1, 0, 0, 0, 949, 5109, 1, 0, 0, 0, 951, 5113, + 1, 0, 0, 0, 953, 5119, 1, 0, 0, 0, 955, 5122, 1, 0, 0, 0, 957, 5127, 1, + 0, 0, 0, 959, 5133, 1, 0, 0, 0, 961, 5145, 1, 0, 0, 0, 963, 5153, 1, 0, + 0, 0, 965, 5157, 1, 0, 0, 0, 967, 5167, 1, 0, 0, 0, 969, 5169, 1, 0, 0, + 0, 971, 5172, 1, 0, 0, 0, 973, 5175, 1, 0, 0, 0, 975, 5177, 1, 0, 0, 0, + 977, 5179, 1, 0, 0, 0, 979, 5181, 1, 0, 0, 0, 981, 5183, 1, 0, 0, 0, 983, + 5185, 1, 0, 0, 0, 985, 5187, 1, 0, 0, 0, 987, 5189, 1, 0, 0, 0, 989, 5191, + 1, 0, 0, 0, 991, 5195, 1, 0, 0, 0, 993, 5199, 1, 0, 0, 0, 995, 5201, 1, + 0, 0, 0, 997, 5203, 1, 0, 0, 0, 999, 5205, 1, 0, 0, 0, 1001, 5207, 1, 0, + 0, 0, 1003, 5209, 1, 0, 0, 0, 1005, 5211, 1, 0, 0, 0, 1007, 5213, 1, 0, + 0, 0, 1009, 5215, 1, 0, 0, 0, 1011, 5217, 1, 0, 0, 0, 1013, 5219, 1, 0, + 0, 0, 1015, 5221, 1, 0, 0, 0, 1017, 5223, 1, 0, 0, 0, 1019, 5226, 1, 0, + 0, 0, 1021, 5229, 1, 0, 0, 0, 1023, 5231, 1, 0, 0, 0, 1025, 5233, 1, 0, + 0, 0, 1027, 5245, 1, 0, 0, 0, 1029, 5258, 1, 0, 0, 0, 1031, 5271, 1, 0, + 0, 0, 1033, 5297, 1, 0, 0, 0, 1035, 5303, 1, 0, 0, 0, 1037, 5310, 1, 0, + 0, 0, 1039, 5344, 1, 0, 0, 0, 1041, 5346, 1, 0, 0, 0, 1043, 5348, 1, 0, + 0, 0, 1045, 5350, 1, 0, 0, 0, 1047, 5352, 1, 0, 0, 0, 1049, 5354, 1, 0, + 0, 0, 1051, 5356, 1, 0, 0, 0, 1053, 5358, 1, 0, 0, 0, 1055, 5360, 1, 0, + 0, 0, 1057, 5362, 1, 0, 0, 0, 1059, 5364, 1, 0, 0, 0, 1061, 5366, 1, 0, + 0, 0, 1063, 5368, 1, 0, 0, 0, 1065, 5370, 1, 0, 0, 0, 1067, 5372, 1, 0, + 0, 0, 1069, 5374, 1, 0, 0, 0, 1071, 5376, 1, 0, 0, 0, 1073, 5378, 1, 0, + 0, 0, 1075, 5380, 1, 0, 0, 0, 1077, 5382, 1, 0, 0, 0, 1079, 5384, 1, 0, + 0, 0, 1081, 5386, 1, 0, 0, 0, 1083, 5388, 1, 0, 0, 0, 1085, 5390, 1, 0, + 0, 0, 1087, 5392, 1, 0, 0, 0, 1089, 5394, 1, 0, 0, 0, 1091, 5396, 1, 0, + 0, 0, 1093, 5398, 1, 0, 0, 0, 1095, 5400, 1, 0, 0, 0, 1097, 5402, 1, 0, + 0, 0, 1099, 1101, 7, 0, 0, 0, 1100, 1099, 1, 0, 0, 0, 1101, 1102, 1, 0, + 0, 0, 1102, 1100, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1104, 1, 0, + 0, 0, 1104, 1105, 6, 0, 0, 0, 1105, 2, 1, 0, 0, 0, 1106, 1107, 5, 47, 0, + 0, 1107, 1108, 5, 42, 0, 0, 1108, 1109, 5, 42, 0, 0, 1109, 1113, 1, 0, + 0, 0, 1110, 1112, 9, 0, 0, 0, 1111, 1110, 1, 0, 0, 0, 1112, 1115, 1, 0, + 0, 0, 1113, 1114, 1, 0, 0, 0, 1113, 1111, 1, 0, 0, 0, 1114, 1116, 1, 0, + 0, 0, 1115, 1113, 1, 0, 0, 0, 1116, 1117, 5, 42, 0, 0, 1117, 1118, 5, 47, + 0, 0, 1118, 4, 1, 0, 0, 0, 1119, 1120, 5, 47, 0, 0, 1120, 1121, 5, 42, + 0, 0, 1121, 1125, 1, 0, 0, 0, 1122, 1124, 9, 0, 0, 0, 1123, 1122, 1, 0, + 0, 0, 1124, 1127, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1125, 1123, 1, 0, + 0, 0, 1126, 1128, 1, 0, 0, 0, 1127, 1125, 1, 0, 0, 0, 1128, 1129, 5, 42, + 0, 0, 1129, 1130, 5, 47, 0, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1132, 6, 2, + 0, 0, 1132, 6, 1, 0, 0, 0, 1133, 1134, 5, 45, 0, 0, 1134, 1135, 5, 45, + 0, 0, 1135, 1139, 1, 0, 0, 0, 1136, 1138, 8, 1, 0, 0, 1137, 1136, 1, 0, + 0, 0, 1138, 1141, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1139, 1140, 1, 0, + 0, 0, 1140, 1142, 1, 0, 0, 0, 1141, 1139, 1, 0, 0, 0, 1142, 1143, 6, 3, + 0, 0, 1143, 8, 1, 0, 0, 0, 1144, 1145, 3, 1063, 531, 0, 1145, 1147, 3, + 1083, 541, 0, 1146, 1148, 3, 1, 0, 0, 1147, 1146, 1, 0, 0, 0, 1148, 1149, + 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1151, + 1, 0, 0, 0, 1151, 1152, 3, 1073, 536, 0, 1152, 1153, 3, 1075, 537, 0, 1153, + 1155, 3, 1085, 542, 0, 1154, 1156, 3, 1, 0, 0, 1155, 1154, 1, 0, 0, 0, + 1156, 1157, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1158, 1, 0, 0, 0, + 1158, 1159, 1, 0, 0, 0, 1159, 1160, 3, 1073, 536, 0, 1160, 1161, 3, 1087, + 543, 0, 1161, 1162, 3, 1069, 534, 0, 1162, 1163, 3, 1069, 534, 0, 1163, + 10, 1, 0, 0, 0, 1164, 1165, 3, 1063, 531, 0, 1165, 1167, 3, 1083, 541, + 0, 1166, 1168, 3, 1, 0, 0, 1167, 1166, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, + 0, 1169, 1167, 1, 0, 0, 0, 1169, 1170, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, + 0, 1171, 1172, 3, 1073, 536, 0, 1172, 1173, 3, 1087, 543, 0, 1173, 1174, + 3, 1069, 534, 0, 1174, 1175, 3, 1069, 534, 0, 1175, 12, 1, 0, 0, 0, 1176, + 1177, 3, 1073, 536, 0, 1177, 1178, 3, 1075, 537, 0, 1178, 1180, 3, 1085, + 542, 0, 1179, 1181, 3, 1, 0, 0, 1180, 1179, 1, 0, 0, 0, 1181, 1182, 1, + 0, 0, 0, 1182, 1180, 1, 0, 0, 0, 1182, 1183, 1, 0, 0, 0, 1183, 1184, 1, + 0, 0, 0, 1184, 1185, 3, 1073, 536, 0, 1185, 1186, 3, 1087, 543, 0, 1186, + 1187, 3, 1069, 534, 0, 1187, 1188, 3, 1069, 534, 0, 1188, 14, 1, 0, 0, + 0, 1189, 1190, 3, 1059, 529, 0, 1190, 1191, 3, 1081, 540, 0, 1191, 1192, + 3, 1075, 537, 0, 1192, 1193, 3, 1087, 543, 0, 1193, 1195, 3, 1077, 538, + 0, 1194, 1196, 3, 1, 0, 0, 1195, 1194, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, + 0, 1197, 1195, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, + 0, 1199, 1200, 3, 1049, 524, 0, 1200, 1201, 3, 1095, 547, 0, 1201, 16, + 1, 0, 0, 0, 1202, 1203, 3, 1075, 537, 0, 1203, 1204, 3, 1081, 540, 0, 1204, + 1205, 3, 1053, 526, 0, 1205, 1206, 3, 1055, 527, 0, 1206, 1208, 3, 1081, + 540, 0, 1207, 1209, 3, 1, 0, 0, 1208, 1207, 1, 0, 0, 0, 1209, 1210, 1, + 0, 0, 0, 1210, 1208, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, + 0, 0, 0, 1212, 1213, 3, 1049, 524, 0, 1213, 1214, 3, 1095, 547, 0, 1214, + 18, 1, 0, 0, 0, 1215, 1216, 3, 1083, 541, 0, 1216, 1217, 3, 1075, 537, + 0, 1217, 1218, 3, 1081, 540, 0, 1218, 1220, 3, 1085, 542, 0, 1219, 1221, + 3, 1, 0, 0, 1220, 1219, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1220, + 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 1, 0, 0, 0, 1224, 1225, + 3, 1049, 524, 0, 1225, 1226, 3, 1095, 547, 0, 1226, 20, 1, 0, 0, 0, 1227, + 1228, 3, 1073, 536, 0, 1228, 1229, 3, 1075, 537, 0, 1229, 1230, 3, 1073, + 536, 0, 1230, 1231, 5, 45, 0, 0, 1231, 1232, 3, 1077, 538, 0, 1232, 1233, + 3, 1055, 527, 0, 1233, 1234, 3, 1081, 540, 0, 1234, 1235, 3, 1083, 541, + 0, 1235, 1236, 3, 1063, 531, 0, 1236, 1237, 3, 1083, 541, 0, 1237, 1238, + 3, 1085, 542, 0, 1238, 1239, 3, 1055, 527, 0, 1239, 1240, 3, 1073, 536, + 0, 1240, 1241, 3, 1085, 542, 0, 1241, 22, 1, 0, 0, 0, 1242, 1243, 3, 1081, + 540, 0, 1243, 1244, 3, 1055, 527, 0, 1244, 1245, 3, 1057, 528, 0, 1245, + 1246, 3, 1055, 527, 0, 1246, 1247, 3, 1081, 540, 0, 1247, 1248, 3, 1055, + 527, 0, 1248, 1249, 3, 1073, 536, 0, 1249, 1250, 3, 1051, 525, 0, 1250, + 1252, 3, 1055, 527, 0, 1251, 1253, 5, 95, 0, 0, 1252, 1251, 1, 0, 0, 0, + 1252, 1253, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 1255, 3, 1083, 541, + 0, 1255, 1256, 3, 1055, 527, 0, 1256, 1257, 3, 1085, 542, 0, 1257, 24, + 1, 0, 0, 0, 1258, 1259, 3, 1069, 534, 0, 1259, 1260, 3, 1063, 531, 0, 1260, + 1261, 3, 1083, 541, 0, 1261, 1263, 3, 1085, 542, 0, 1262, 1264, 3, 1, 0, + 0, 1263, 1262, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1263, 1, 0, 0, + 0, 1265, 1266, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1268, 3, 1075, + 537, 0, 1268, 1269, 3, 1057, 528, 0, 1269, 26, 1, 0, 0, 0, 1270, 1271, + 3, 1053, 526, 0, 1271, 1272, 3, 1055, 527, 0, 1272, 1273, 3, 1069, 534, + 0, 1273, 1274, 3, 1055, 527, 0, 1274, 1275, 3, 1085, 542, 0, 1275, 1277, + 3, 1055, 527, 0, 1276, 1278, 3, 1, 0, 0, 1277, 1276, 1, 0, 0, 0, 1278, + 1279, 1, 0, 0, 0, 1279, 1277, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, + 1281, 1, 0, 0, 0, 1281, 1282, 3, 1047, 523, 0, 1282, 1283, 3, 1073, 536, + 0, 1283, 1285, 3, 1053, 526, 0, 1284, 1286, 3, 1, 0, 0, 1285, 1284, 1, + 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1285, 1, 0, 0, 0, 1287, 1288, 1, + 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 3, 1081, 540, 0, 1290, 1291, + 3, 1055, 527, 0, 1291, 1292, 3, 1057, 528, 0, 1292, 1293, 3, 1055, 527, + 0, 1293, 1294, 3, 1081, 540, 0, 1294, 1295, 3, 1055, 527, 0, 1295, 1296, + 3, 1073, 536, 0, 1296, 1297, 3, 1051, 525, 0, 1297, 1298, 3, 1055, 527, + 0, 1298, 1299, 3, 1083, 541, 0, 1299, 1343, 1, 0, 0, 0, 1300, 1301, 3, + 1053, 526, 0, 1301, 1302, 3, 1055, 527, 0, 1302, 1303, 3, 1069, 534, 0, + 1303, 1304, 3, 1055, 527, 0, 1304, 1305, 3, 1085, 542, 0, 1305, 1306, 3, + 1055, 527, 0, 1306, 1307, 5, 95, 0, 0, 1307, 1308, 3, 1047, 523, 0, 1308, + 1309, 3, 1073, 536, 0, 1309, 1310, 3, 1053, 526, 0, 1310, 1311, 5, 95, + 0, 0, 1311, 1312, 3, 1081, 540, 0, 1312, 1313, 3, 1055, 527, 0, 1313, 1314, + 3, 1057, 528, 0, 1314, 1315, 3, 1055, 527, 0, 1315, 1316, 3, 1081, 540, + 0, 1316, 1317, 3, 1055, 527, 0, 1317, 1318, 3, 1073, 536, 0, 1318, 1319, + 3, 1051, 525, 0, 1319, 1320, 3, 1055, 527, 0, 1320, 1321, 3, 1083, 541, + 0, 1321, 1343, 1, 0, 0, 0, 1322, 1323, 3, 1053, 526, 0, 1323, 1324, 3, + 1055, 527, 0, 1324, 1325, 3, 1069, 534, 0, 1325, 1326, 3, 1055, 527, 0, + 1326, 1327, 3, 1085, 542, 0, 1327, 1328, 3, 1055, 527, 0, 1328, 1329, 3, + 1047, 523, 0, 1329, 1330, 3, 1073, 536, 0, 1330, 1331, 3, 1053, 526, 0, + 1331, 1332, 3, 1081, 540, 0, 1332, 1333, 3, 1055, 527, 0, 1333, 1334, 3, + 1057, 528, 0, 1334, 1335, 3, 1055, 527, 0, 1335, 1336, 3, 1081, 540, 0, + 1336, 1337, 3, 1055, 527, 0, 1337, 1338, 3, 1073, 536, 0, 1338, 1339, 3, + 1051, 525, 0, 1339, 1340, 3, 1055, 527, 0, 1340, 1341, 3, 1083, 541, 0, + 1341, 1343, 1, 0, 0, 0, 1342, 1270, 1, 0, 0, 0, 1342, 1300, 1, 0, 0, 0, + 1342, 1322, 1, 0, 0, 0, 1343, 28, 1, 0, 0, 0, 1344, 1345, 3, 1053, 526, + 0, 1345, 1346, 3, 1055, 527, 0, 1346, 1347, 3, 1069, 534, 0, 1347, 1348, + 3, 1055, 527, 0, 1348, 1349, 3, 1085, 542, 0, 1349, 1351, 3, 1055, 527, + 0, 1350, 1352, 3, 1, 0, 0, 1351, 1350, 1, 0, 0, 0, 1352, 1353, 1, 0, 0, + 0, 1353, 1351, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, + 0, 1355, 1356, 3, 1049, 524, 0, 1356, 1357, 3, 1087, 543, 0, 1357, 1359, + 3, 1085, 542, 0, 1358, 1360, 3, 1, 0, 0, 1359, 1358, 1, 0, 0, 0, 1360, + 1361, 1, 0, 0, 0, 1361, 1359, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, + 1363, 1, 0, 0, 0, 1363, 1364, 3, 1067, 533, 0, 1364, 1365, 3, 1055, 527, + 0, 1365, 1366, 3, 1055, 527, 0, 1366, 1368, 3, 1077, 538, 0, 1367, 1369, + 3, 1, 0, 0, 1368, 1367, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1368, + 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, + 3, 1081, 540, 0, 1373, 1374, 3, 1055, 527, 0, 1374, 1375, 3, 1057, 528, + 0, 1375, 1376, 3, 1055, 527, 0, 1376, 1377, 3, 1081, 540, 0, 1377, 1378, + 3, 1055, 527, 0, 1378, 1379, 3, 1073, 536, 0, 1379, 1380, 3, 1051, 525, + 0, 1380, 1381, 3, 1055, 527, 0, 1381, 1382, 3, 1083, 541, 0, 1382, 1435, + 1, 0, 0, 0, 1383, 1384, 3, 1053, 526, 0, 1384, 1385, 3, 1055, 527, 0, 1385, + 1386, 3, 1069, 534, 0, 1386, 1387, 3, 1055, 527, 0, 1387, 1388, 3, 1085, + 542, 0, 1388, 1389, 3, 1055, 527, 0, 1389, 1390, 5, 95, 0, 0, 1390, 1391, + 3, 1049, 524, 0, 1391, 1392, 3, 1087, 543, 0, 1392, 1393, 3, 1085, 542, + 0, 1393, 1394, 5, 95, 0, 0, 1394, 1395, 3, 1067, 533, 0, 1395, 1396, 3, + 1055, 527, 0, 1396, 1397, 3, 1055, 527, 0, 1397, 1398, 3, 1077, 538, 0, + 1398, 1399, 5, 95, 0, 0, 1399, 1400, 3, 1081, 540, 0, 1400, 1401, 3, 1055, + 527, 0, 1401, 1402, 3, 1057, 528, 0, 1402, 1403, 3, 1055, 527, 0, 1403, + 1404, 3, 1081, 540, 0, 1404, 1405, 3, 1055, 527, 0, 1405, 1406, 3, 1073, + 536, 0, 1406, 1407, 3, 1051, 525, 0, 1407, 1408, 3, 1055, 527, 0, 1408, + 1409, 3, 1083, 541, 0, 1409, 1435, 1, 0, 0, 0, 1410, 1411, 3, 1053, 526, + 0, 1411, 1412, 3, 1055, 527, 0, 1412, 1413, 3, 1069, 534, 0, 1413, 1414, + 3, 1055, 527, 0, 1414, 1415, 3, 1085, 542, 0, 1415, 1416, 3, 1055, 527, + 0, 1416, 1417, 3, 1049, 524, 0, 1417, 1418, 3, 1087, 543, 0, 1418, 1419, + 3, 1085, 542, 0, 1419, 1420, 3, 1067, 533, 0, 1420, 1421, 3, 1055, 527, + 0, 1421, 1422, 3, 1055, 527, 0, 1422, 1423, 3, 1077, 538, 0, 1423, 1424, + 3, 1081, 540, 0, 1424, 1425, 3, 1055, 527, 0, 1425, 1426, 3, 1057, 528, + 0, 1426, 1427, 3, 1055, 527, 0, 1427, 1428, 3, 1081, 540, 0, 1428, 1429, + 3, 1055, 527, 0, 1429, 1430, 3, 1073, 536, 0, 1430, 1431, 3, 1051, 525, + 0, 1431, 1432, 3, 1055, 527, 0, 1432, 1433, 3, 1083, 541, 0, 1433, 1435, + 1, 0, 0, 0, 1434, 1344, 1, 0, 0, 0, 1434, 1383, 1, 0, 0, 0, 1434, 1410, + 1, 0, 0, 0, 1435, 30, 1, 0, 0, 0, 1436, 1437, 3, 1053, 526, 0, 1437, 1438, + 3, 1055, 527, 0, 1438, 1439, 3, 1069, 534, 0, 1439, 1440, 3, 1055, 527, + 0, 1440, 1441, 3, 1085, 542, 0, 1441, 1443, 3, 1055, 527, 0, 1442, 1444, + 3, 1, 0, 0, 1443, 1442, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 1443, + 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1447, 1448, + 3, 1063, 531, 0, 1448, 1450, 3, 1057, 528, 0, 1449, 1451, 3, 1, 0, 0, 1450, + 1449, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 1450, 1, 0, 0, 0, 1452, + 1453, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 3, 1073, 536, 0, + 1455, 1457, 3, 1075, 537, 0, 1456, 1458, 3, 1, 0, 0, 1457, 1456, 1, 0, + 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1457, 1, 0, 0, 0, 1459, 1460, 1, 0, + 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1462, 3, 1081, 540, 0, 1462, 1463, + 3, 1055, 527, 0, 1463, 1464, 3, 1057, 528, 0, 1464, 1465, 3, 1055, 527, + 0, 1465, 1466, 3, 1081, 540, 0, 1466, 1467, 3, 1055, 527, 0, 1467, 1468, + 3, 1073, 536, 0, 1468, 1469, 3, 1051, 525, 0, 1469, 1470, 3, 1055, 527, + 0, 1470, 1471, 3, 1083, 541, 0, 1471, 1518, 1, 0, 0, 0, 1472, 1473, 3, + 1053, 526, 0, 1473, 1474, 3, 1055, 527, 0, 1474, 1475, 3, 1069, 534, 0, + 1475, 1476, 3, 1055, 527, 0, 1476, 1477, 3, 1085, 542, 0, 1477, 1478, 3, + 1055, 527, 0, 1478, 1479, 5, 95, 0, 0, 1479, 1480, 3, 1063, 531, 0, 1480, + 1481, 3, 1057, 528, 0, 1481, 1482, 5, 95, 0, 0, 1482, 1483, 3, 1073, 536, + 0, 1483, 1484, 3, 1075, 537, 0, 1484, 1485, 5, 95, 0, 0, 1485, 1486, 3, + 1081, 540, 0, 1486, 1487, 3, 1055, 527, 0, 1487, 1488, 3, 1057, 528, 0, + 1488, 1489, 3, 1055, 527, 0, 1489, 1490, 3, 1081, 540, 0, 1490, 1491, 3, + 1055, 527, 0, 1491, 1492, 3, 1073, 536, 0, 1492, 1493, 3, 1051, 525, 0, + 1493, 1494, 3, 1055, 527, 0, 1494, 1495, 3, 1083, 541, 0, 1495, 1518, 1, + 0, 0, 0, 1496, 1497, 3, 1053, 526, 0, 1497, 1498, 3, 1055, 527, 0, 1498, + 1499, 3, 1069, 534, 0, 1499, 1500, 3, 1055, 527, 0, 1500, 1501, 3, 1085, + 542, 0, 1501, 1502, 3, 1055, 527, 0, 1502, 1503, 3, 1063, 531, 0, 1503, + 1504, 3, 1057, 528, 0, 1504, 1505, 3, 1073, 536, 0, 1505, 1506, 3, 1075, + 537, 0, 1506, 1507, 3, 1081, 540, 0, 1507, 1508, 3, 1055, 527, 0, 1508, + 1509, 3, 1057, 528, 0, 1509, 1510, 3, 1055, 527, 0, 1510, 1511, 3, 1081, + 540, 0, 1511, 1512, 3, 1055, 527, 0, 1512, 1513, 3, 1073, 536, 0, 1513, + 1514, 3, 1051, 525, 0, 1514, 1515, 3, 1055, 527, 0, 1515, 1516, 3, 1083, + 541, 0, 1516, 1518, 1, 0, 0, 0, 1517, 1436, 1, 0, 0, 0, 1517, 1472, 1, + 0, 0, 0, 1517, 1496, 1, 0, 0, 0, 1518, 32, 1, 0, 0, 0, 1519, 1520, 3, 1051, + 525, 0, 1520, 1521, 3, 1081, 540, 0, 1521, 1522, 3, 1055, 527, 0, 1522, + 1523, 3, 1047, 523, 0, 1523, 1524, 3, 1085, 542, 0, 1524, 1525, 3, 1055, + 527, 0, 1525, 34, 1, 0, 0, 0, 1526, 1527, 3, 1047, 523, 0, 1527, 1528, + 3, 1069, 534, 0, 1528, 1529, 3, 1085, 542, 0, 1529, 1530, 3, 1055, 527, + 0, 1530, 1531, 3, 1081, 540, 0, 1531, 36, 1, 0, 0, 0, 1532, 1533, 3, 1053, + 526, 0, 1533, 1534, 3, 1081, 540, 0, 1534, 1535, 3, 1075, 537, 0, 1535, + 1536, 3, 1077, 538, 0, 1536, 38, 1, 0, 0, 0, 1537, 1538, 3, 1081, 540, + 0, 1538, 1539, 3, 1055, 527, 0, 1539, 1540, 3, 1073, 536, 0, 1540, 1541, + 3, 1047, 523, 0, 1541, 1542, 3, 1071, 535, 0, 1542, 1543, 3, 1055, 527, + 0, 1543, 40, 1, 0, 0, 0, 1544, 1545, 3, 1071, 535, 0, 1545, 1546, 3, 1075, + 537, 0, 1546, 1547, 3, 1089, 544, 0, 1547, 1548, 3, 1055, 527, 0, 1548, + 42, 1, 0, 0, 0, 1549, 1550, 3, 1071, 535, 0, 1550, 1551, 3, 1075, 537, + 0, 1551, 1552, 3, 1053, 526, 0, 1552, 1553, 3, 1063, 531, 0, 1553, 1554, + 3, 1057, 528, 0, 1554, 1555, 3, 1095, 547, 0, 1555, 44, 1, 0, 0, 0, 1556, + 1557, 3, 1055, 527, 0, 1557, 1558, 3, 1073, 536, 0, 1558, 1559, 3, 1085, + 542, 0, 1559, 1560, 3, 1063, 531, 0, 1560, 1561, 3, 1085, 542, 0, 1561, + 1562, 3, 1095, 547, 0, 1562, 46, 1, 0, 0, 0, 1563, 1564, 3, 1077, 538, + 0, 1564, 1565, 3, 1055, 527, 0, 1565, 1566, 3, 1081, 540, 0, 1566, 1567, + 3, 1083, 541, 0, 1567, 1568, 3, 1063, 531, 0, 1568, 1569, 3, 1083, 541, + 0, 1569, 1570, 3, 1085, 542, 0, 1570, 1571, 3, 1055, 527, 0, 1571, 1572, + 3, 1073, 536, 0, 1572, 1573, 3, 1085, 542, 0, 1573, 48, 1, 0, 0, 0, 1574, + 1575, 3, 1089, 544, 0, 1575, 1576, 3, 1063, 531, 0, 1576, 1577, 3, 1055, + 527, 0, 1577, 1578, 3, 1091, 545, 0, 1578, 50, 1, 0, 0, 0, 1579, 1580, + 3, 1055, 527, 0, 1580, 1581, 3, 1093, 546, 0, 1581, 1582, 3, 1085, 542, + 0, 1582, 1583, 3, 1055, 527, 0, 1583, 1584, 3, 1081, 540, 0, 1584, 1585, + 3, 1073, 536, 0, 1585, 1586, 3, 1047, 523, 0, 1586, 1587, 3, 1069, 534, + 0, 1587, 52, 1, 0, 0, 0, 1588, 1589, 3, 1047, 523, 0, 1589, 1590, 3, 1083, + 541, 0, 1590, 1591, 3, 1083, 541, 0, 1591, 1592, 3, 1075, 537, 0, 1592, + 1593, 3, 1051, 525, 0, 1593, 1594, 3, 1063, 531, 0, 1594, 1595, 3, 1047, + 523, 0, 1595, 1596, 3, 1085, 542, 0, 1596, 1597, 3, 1063, 531, 0, 1597, + 1598, 3, 1075, 537, 0, 1598, 1599, 3, 1073, 536, 0, 1599, 54, 1, 0, 0, + 0, 1600, 1601, 3, 1055, 527, 0, 1601, 1602, 3, 1073, 536, 0, 1602, 1603, + 3, 1087, 543, 0, 1603, 1604, 3, 1071, 535, 0, 1604, 1605, 3, 1055, 527, + 0, 1605, 1606, 3, 1081, 540, 0, 1606, 1607, 3, 1047, 523, 0, 1607, 1608, + 3, 1085, 542, 0, 1608, 1609, 3, 1063, 531, 0, 1609, 1610, 3, 1075, 537, + 0, 1610, 1611, 3, 1073, 536, 0, 1611, 56, 1, 0, 0, 0, 1612, 1613, 3, 1071, + 535, 0, 1613, 1614, 3, 1075, 537, 0, 1614, 1615, 3, 1053, 526, 0, 1615, + 1616, 3, 1087, 543, 0, 1616, 1617, 3, 1069, 534, 0, 1617, 1618, 3, 1055, + 527, 0, 1618, 58, 1, 0, 0, 0, 1619, 1620, 3, 1071, 535, 0, 1620, 1621, + 3, 1063, 531, 0, 1621, 1622, 3, 1051, 525, 0, 1622, 1623, 3, 1081, 540, + 0, 1623, 1624, 3, 1075, 537, 0, 1624, 1625, 3, 1057, 528, 0, 1625, 1626, + 3, 1069, 534, 0, 1626, 1627, 3, 1075, 537, 0, 1627, 1628, 3, 1091, 545, + 0, 1628, 60, 1, 0, 0, 0, 1629, 1630, 3, 1073, 536, 0, 1630, 1631, 3, 1047, + 523, 0, 1631, 1632, 3, 1073, 536, 0, 1632, 1633, 3, 1075, 537, 0, 1633, + 1634, 3, 1057, 528, 0, 1634, 1635, 3, 1069, 534, 0, 1635, 1636, 3, 1075, + 537, 0, 1636, 1637, 3, 1091, 545, 0, 1637, 62, 1, 0, 0, 0, 1638, 1639, + 3, 1091, 545, 0, 1639, 1640, 3, 1075, 537, 0, 1640, 1641, 3, 1081, 540, + 0, 1641, 1642, 3, 1067, 533, 0, 1642, 1643, 3, 1057, 528, 0, 1643, 1644, + 3, 1069, 534, 0, 1644, 1645, 3, 1075, 537, 0, 1645, 1646, 3, 1091, 545, + 0, 1646, 64, 1, 0, 0, 0, 1647, 1648, 3, 1077, 538, 0, 1648, 1649, 3, 1047, + 523, 0, 1649, 1650, 3, 1059, 529, 0, 1650, 1651, 3, 1055, 527, 0, 1651, + 66, 1, 0, 0, 0, 1652, 1653, 3, 1083, 541, 0, 1653, 1654, 3, 1073, 536, + 0, 1654, 1655, 3, 1063, 531, 0, 1655, 1656, 3, 1077, 538, 0, 1656, 1657, + 3, 1077, 538, 0, 1657, 1658, 3, 1055, 527, 0, 1658, 1659, 3, 1085, 542, + 0, 1659, 68, 1, 0, 0, 0, 1660, 1661, 3, 1069, 534, 0, 1661, 1662, 3, 1047, + 523, 0, 1662, 1663, 3, 1095, 547, 0, 1663, 1664, 3, 1075, 537, 0, 1664, + 1665, 3, 1087, 543, 0, 1665, 1666, 3, 1085, 542, 0, 1666, 70, 1, 0, 0, + 0, 1667, 1668, 3, 1073, 536, 0, 1668, 1669, 3, 1075, 537, 0, 1669, 1670, + 3, 1085, 542, 0, 1670, 1671, 3, 1055, 527, 0, 1671, 1672, 3, 1049, 524, + 0, 1672, 1673, 3, 1075, 537, 0, 1673, 1674, 3, 1075, 537, 0, 1674, 1675, + 3, 1067, 533, 0, 1675, 72, 1, 0, 0, 0, 1676, 1677, 3, 1051, 525, 0, 1677, + 1678, 3, 1075, 537, 0, 1678, 1679, 3, 1073, 536, 0, 1679, 1680, 3, 1083, + 541, 0, 1680, 1681, 3, 1085, 542, 0, 1681, 1682, 3, 1047, 523, 0, 1682, + 1683, 3, 1073, 536, 0, 1683, 1684, 3, 1085, 542, 0, 1684, 74, 1, 0, 0, + 0, 1685, 1686, 3, 1047, 523, 0, 1686, 1687, 3, 1085, 542, 0, 1687, 1688, + 3, 1085, 542, 0, 1688, 1689, 3, 1081, 540, 0, 1689, 1690, 3, 1063, 531, + 0, 1690, 1691, 3, 1049, 524, 0, 1691, 1692, 3, 1087, 543, 0, 1692, 1693, + 3, 1085, 542, 0, 1693, 1694, 3, 1055, 527, 0, 1694, 76, 1, 0, 0, 0, 1695, + 1696, 3, 1051, 525, 0, 1696, 1697, 3, 1075, 537, 0, 1697, 1698, 3, 1069, + 534, 0, 1698, 1699, 3, 1087, 543, 0, 1699, 1700, 3, 1071, 535, 0, 1700, + 1701, 3, 1073, 536, 0, 1701, 78, 1, 0, 0, 0, 1702, 1703, 3, 1051, 525, + 0, 1703, 1704, 3, 1075, 537, 0, 1704, 1705, 3, 1069, 534, 0, 1705, 1706, + 3, 1087, 543, 0, 1706, 1707, 3, 1071, 535, 0, 1707, 1708, 3, 1073, 536, + 0, 1708, 1709, 3, 1083, 541, 0, 1709, 80, 1, 0, 0, 0, 1710, 1711, 3, 1063, + 531, 0, 1711, 1712, 3, 1073, 536, 0, 1712, 1713, 3, 1053, 526, 0, 1713, + 1714, 3, 1055, 527, 0, 1714, 1715, 3, 1093, 546, 0, 1715, 82, 1, 0, 0, + 0, 1716, 1717, 3, 1075, 537, 0, 1717, 1718, 3, 1091, 545, 0, 1718, 1719, + 3, 1073, 536, 0, 1719, 1720, 3, 1055, 527, 0, 1720, 1721, 3, 1081, 540, + 0, 1721, 84, 1, 0, 0, 0, 1722, 1723, 3, 1083, 541, 0, 1723, 1724, 3, 1085, + 542, 0, 1724, 1725, 3, 1075, 537, 0, 1725, 1726, 3, 1081, 540, 0, 1726, + 1727, 3, 1055, 527, 0, 1727, 86, 1, 0, 0, 0, 1728, 1729, 3, 1081, 540, + 0, 1729, 1730, 3, 1055, 527, 0, 1730, 1731, 3, 1057, 528, 0, 1731, 1732, + 3, 1055, 527, 0, 1732, 1733, 3, 1081, 540, 0, 1733, 1734, 3, 1055, 527, + 0, 1734, 1735, 3, 1073, 536, 0, 1735, 1736, 3, 1051, 525, 0, 1736, 1737, + 3, 1055, 527, 0, 1737, 88, 1, 0, 0, 0, 1738, 1739, 3, 1059, 529, 0, 1739, + 1740, 3, 1055, 527, 0, 1740, 1741, 3, 1073, 536, 0, 1741, 1742, 3, 1055, + 527, 0, 1742, 1743, 3, 1081, 540, 0, 1743, 1744, 3, 1047, 523, 0, 1744, + 1745, 3, 1069, 534, 0, 1745, 1746, 3, 1063, 531, 0, 1746, 1747, 3, 1097, + 548, 0, 1747, 1748, 3, 1047, 523, 0, 1748, 1749, 3, 1085, 542, 0, 1749, + 1750, 3, 1063, 531, 0, 1750, 1751, 3, 1075, 537, 0, 1751, 1752, 3, 1073, + 536, 0, 1752, 90, 1, 0, 0, 0, 1753, 1754, 3, 1055, 527, 0, 1754, 1755, + 3, 1093, 546, 0, 1755, 1756, 3, 1085, 542, 0, 1756, 1757, 3, 1055, 527, + 0, 1757, 1758, 3, 1073, 536, 0, 1758, 1759, 3, 1053, 526, 0, 1759, 1760, + 3, 1083, 541, 0, 1760, 92, 1, 0, 0, 0, 1761, 1762, 3, 1047, 523, 0, 1762, + 1763, 3, 1053, 526, 0, 1763, 1764, 3, 1053, 526, 0, 1764, 94, 1, 0, 0, + 0, 1765, 1766, 3, 1083, 541, 0, 1766, 1767, 3, 1055, 527, 0, 1767, 1768, + 3, 1085, 542, 0, 1768, 96, 1, 0, 0, 0, 1769, 1770, 3, 1077, 538, 0, 1770, + 1771, 3, 1075, 537, 0, 1771, 1772, 3, 1083, 541, 0, 1772, 1773, 3, 1063, + 531, 0, 1773, 1774, 3, 1085, 542, 0, 1774, 1775, 3, 1063, 531, 0, 1775, + 1776, 3, 1075, 537, 0, 1776, 1777, 3, 1073, 536, 0, 1777, 98, 1, 0, 0, + 0, 1778, 1779, 3, 1053, 526, 0, 1779, 1780, 3, 1075, 537, 0, 1780, 1781, + 3, 1051, 525, 0, 1781, 1782, 3, 1087, 543, 0, 1782, 1783, 3, 1071, 535, + 0, 1783, 1784, 3, 1055, 527, 0, 1784, 1785, 3, 1073, 536, 0, 1785, 1786, + 3, 1085, 542, 0, 1786, 1787, 3, 1047, 523, 0, 1787, 1788, 3, 1085, 542, + 0, 1788, 1789, 3, 1063, 531, 0, 1789, 1790, 3, 1075, 537, 0, 1790, 1791, + 3, 1073, 536, 0, 1791, 100, 1, 0, 0, 0, 1792, 1793, 3, 1083, 541, 0, 1793, + 1794, 3, 1085, 542, 0, 1794, 1795, 3, 1075, 537, 0, 1795, 1796, 3, 1081, + 540, 0, 1796, 1797, 3, 1047, 523, 0, 1797, 1798, 3, 1059, 529, 0, 1798, + 1799, 3, 1055, 527, 0, 1799, 102, 1, 0, 0, 0, 1800, 1801, 3, 1085, 542, + 0, 1801, 1802, 3, 1047, 523, 0, 1802, 1803, 3, 1049, 524, 0, 1803, 1804, + 3, 1069, 534, 0, 1804, 1805, 3, 1055, 527, 0, 1805, 104, 1, 0, 0, 0, 1806, + 1807, 3, 1053, 526, 0, 1807, 1808, 3, 1055, 527, 0, 1808, 1809, 3, 1069, + 534, 0, 1809, 1810, 3, 1055, 527, 0, 1810, 1811, 3, 1085, 542, 0, 1811, + 1813, 3, 1055, 527, 0, 1812, 1814, 5, 95, 0, 0, 1813, 1812, 1, 0, 0, 0, + 1813, 1814, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1816, 3, 1049, 524, + 0, 1816, 1817, 3, 1055, 527, 0, 1817, 1818, 3, 1061, 530, 0, 1818, 1819, + 3, 1047, 523, 0, 1819, 1820, 3, 1089, 544, 0, 1820, 1821, 3, 1063, 531, + 0, 1821, 1822, 3, 1075, 537, 0, 1822, 1823, 3, 1081, 540, 0, 1823, 106, + 1, 0, 0, 0, 1824, 1825, 3, 1051, 525, 0, 1825, 1826, 3, 1047, 523, 0, 1826, + 1827, 3, 1083, 541, 0, 1827, 1828, 3, 1051, 525, 0, 1828, 1829, 3, 1047, + 523, 0, 1829, 1830, 3, 1053, 526, 0, 1830, 1831, 3, 1055, 527, 0, 1831, + 108, 1, 0, 0, 0, 1832, 1833, 3, 1077, 538, 0, 1833, 1834, 3, 1081, 540, + 0, 1834, 1835, 3, 1055, 527, 0, 1835, 1836, 3, 1089, 544, 0, 1836, 1837, + 3, 1055, 527, 0, 1837, 1838, 3, 1073, 536, 0, 1838, 1839, 3, 1085, 542, + 0, 1839, 110, 1, 0, 0, 0, 1840, 1841, 3, 1051, 525, 0, 1841, 1842, 3, 1075, + 537, 0, 1842, 1843, 3, 1073, 536, 0, 1843, 1844, 3, 1073, 536, 0, 1844, + 1845, 3, 1055, 527, 0, 1845, 1846, 3, 1051, 525, 0, 1846, 1847, 3, 1085, + 542, 0, 1847, 112, 1, 0, 0, 0, 1848, 1849, 3, 1053, 526, 0, 1849, 1850, + 3, 1063, 531, 0, 1850, 1851, 3, 1083, 541, 0, 1851, 1852, 3, 1051, 525, + 0, 1852, 1853, 3, 1075, 537, 0, 1853, 1854, 3, 1073, 536, 0, 1854, 1855, + 3, 1073, 536, 0, 1855, 1856, 3, 1055, 527, 0, 1856, 1857, 3, 1051, 525, + 0, 1857, 1858, 3, 1085, 542, 0, 1858, 114, 1, 0, 0, 0, 1859, 1860, 3, 1069, + 534, 0, 1860, 1861, 3, 1075, 537, 0, 1861, 1862, 3, 1051, 525, 0, 1862, + 1863, 3, 1047, 523, 0, 1863, 1864, 3, 1069, 534, 0, 1864, 116, 1, 0, 0, + 0, 1865, 1866, 3, 1077, 538, 0, 1866, 1867, 3, 1081, 540, 0, 1867, 1868, + 3, 1075, 537, 0, 1868, 1869, 3, 1065, 532, 0, 1869, 1870, 3, 1055, 527, + 0, 1870, 1871, 3, 1051, 525, 0, 1871, 1872, 3, 1085, 542, 0, 1872, 118, + 1, 0, 0, 0, 1873, 1874, 3, 1081, 540, 0, 1874, 1875, 3, 1087, 543, 0, 1875, + 1876, 3, 1073, 536, 0, 1876, 1877, 3, 1085, 542, 0, 1877, 1878, 3, 1063, + 531, 0, 1878, 1879, 3, 1071, 535, 0, 1879, 1880, 3, 1055, 527, 0, 1880, + 120, 1, 0, 0, 0, 1881, 1882, 3, 1049, 524, 0, 1882, 1883, 3, 1081, 540, + 0, 1883, 1884, 3, 1047, 523, 0, 1884, 1885, 3, 1073, 536, 0, 1885, 1886, + 3, 1051, 525, 0, 1886, 1887, 3, 1061, 530, 0, 1887, 122, 1, 0, 0, 0, 1888, + 1889, 3, 1085, 542, 0, 1889, 1890, 3, 1075, 537, 0, 1890, 1891, 3, 1067, + 533, 0, 1891, 1892, 3, 1055, 527, 0, 1892, 1893, 3, 1073, 536, 0, 1893, + 124, 1, 0, 0, 0, 1894, 1895, 3, 1061, 530, 0, 1895, 1896, 3, 1075, 537, + 0, 1896, 1897, 3, 1083, 541, 0, 1897, 1898, 3, 1085, 542, 0, 1898, 126, + 1, 0, 0, 0, 1899, 1900, 3, 1077, 538, 0, 1900, 1901, 3, 1075, 537, 0, 1901, + 1902, 3, 1081, 540, 0, 1902, 1903, 3, 1085, 542, 0, 1903, 128, 1, 0, 0, + 0, 1904, 1905, 3, 1083, 541, 0, 1905, 1906, 3, 1061, 530, 0, 1906, 1907, + 3, 1075, 537, 0, 1907, 1908, 3, 1091, 545, 0, 1908, 130, 1, 0, 0, 0, 1909, + 1910, 3, 1053, 526, 0, 1910, 1911, 3, 1055, 527, 0, 1911, 1912, 3, 1083, + 541, 0, 1912, 1913, 3, 1051, 525, 0, 1913, 1914, 3, 1081, 540, 0, 1914, + 1915, 3, 1063, 531, 0, 1915, 1916, 3, 1049, 524, 0, 1916, 1917, 3, 1055, + 527, 0, 1917, 132, 1, 0, 0, 0, 1918, 1919, 3, 1087, 543, 0, 1919, 1920, + 3, 1083, 541, 0, 1920, 1921, 3, 1055, 527, 0, 1921, 134, 1, 0, 0, 0, 1922, + 1923, 3, 1063, 531, 0, 1923, 1924, 3, 1073, 536, 0, 1924, 1925, 3, 1085, + 542, 0, 1925, 1926, 3, 1081, 540, 0, 1926, 1927, 3, 1075, 537, 0, 1927, + 1928, 3, 1083, 541, 0, 1928, 1929, 3, 1077, 538, 0, 1929, 1930, 3, 1055, + 527, 0, 1930, 1931, 3, 1051, 525, 0, 1931, 1932, 3, 1085, 542, 0, 1932, + 136, 1, 0, 0, 0, 1933, 1934, 3, 1053, 526, 0, 1934, 1935, 3, 1055, 527, + 0, 1935, 1936, 3, 1049, 524, 0, 1936, 1937, 3, 1087, 543, 0, 1937, 1938, + 3, 1059, 529, 0, 1938, 138, 1, 0, 0, 0, 1939, 1940, 3, 1083, 541, 0, 1940, + 1941, 3, 1055, 527, 0, 1941, 1942, 3, 1069, 534, 0, 1942, 1943, 3, 1055, + 527, 0, 1943, 1944, 3, 1051, 525, 0, 1944, 1945, 3, 1085, 542, 0, 1945, + 140, 1, 0, 0, 0, 1946, 1947, 3, 1057, 528, 0, 1947, 1948, 3, 1081, 540, + 0, 1948, 1949, 3, 1075, 537, 0, 1949, 1950, 3, 1071, 535, 0, 1950, 142, + 1, 0, 0, 0, 1951, 1952, 3, 1091, 545, 0, 1952, 1953, 3, 1061, 530, 0, 1953, + 1954, 3, 1055, 527, 0, 1954, 1955, 3, 1081, 540, 0, 1955, 1956, 3, 1055, + 527, 0, 1956, 144, 1, 0, 0, 0, 1957, 1958, 3, 1061, 530, 0, 1958, 1959, + 3, 1047, 523, 0, 1959, 1960, 3, 1089, 544, 0, 1960, 1961, 3, 1063, 531, + 0, 1961, 1962, 3, 1073, 536, 0, 1962, 1963, 3, 1059, 529, 0, 1963, 146, + 1, 0, 0, 0, 1964, 1965, 3, 1075, 537, 0, 1965, 1966, 3, 1057, 528, 0, 1966, + 1967, 3, 1057, 528, 0, 1967, 1968, 3, 1083, 541, 0, 1968, 1969, 3, 1055, + 527, 0, 1969, 1970, 3, 1085, 542, 0, 1970, 148, 1, 0, 0, 0, 1971, 1972, + 3, 1069, 534, 0, 1972, 1973, 3, 1063, 531, 0, 1973, 1974, 3, 1071, 535, + 0, 1974, 1975, 3, 1063, 531, 0, 1975, 1976, 3, 1085, 542, 0, 1976, 150, + 1, 0, 0, 0, 1977, 1978, 3, 1047, 523, 0, 1978, 1979, 3, 1083, 541, 0, 1979, + 152, 1, 0, 0, 0, 1980, 1981, 3, 1081, 540, 0, 1981, 1982, 3, 1055, 527, + 0, 1982, 1983, 3, 1085, 542, 0, 1983, 1984, 3, 1087, 543, 0, 1984, 1985, + 3, 1081, 540, 0, 1985, 1986, 3, 1073, 536, 0, 1986, 1987, 3, 1083, 541, + 0, 1987, 154, 1, 0, 0, 0, 1988, 1989, 3, 1081, 540, 0, 1989, 1990, 3, 1055, + 527, 0, 1990, 1991, 3, 1085, 542, 0, 1991, 1992, 3, 1087, 543, 0, 1992, + 1993, 3, 1081, 540, 0, 1993, 1994, 3, 1073, 536, 0, 1994, 1995, 3, 1063, + 531, 0, 1995, 1996, 3, 1073, 536, 0, 1996, 1997, 3, 1059, 529, 0, 1997, + 156, 1, 0, 0, 0, 1998, 1999, 3, 1051, 525, 0, 1999, 2000, 3, 1047, 523, + 0, 2000, 2001, 3, 1083, 541, 0, 2001, 2002, 3, 1055, 527, 0, 2002, 158, + 1, 0, 0, 0, 2003, 2004, 3, 1091, 545, 0, 2004, 2005, 3, 1061, 530, 0, 2005, + 2006, 3, 1055, 527, 0, 2006, 2007, 3, 1073, 536, 0, 2007, 160, 1, 0, 0, + 0, 2008, 2009, 3, 1085, 542, 0, 2009, 2010, 3, 1061, 530, 0, 2010, 2011, + 3, 1055, 527, 0, 2011, 2012, 3, 1073, 536, 0, 2012, 162, 1, 0, 0, 0, 2013, + 2014, 3, 1055, 527, 0, 2014, 2015, 3, 1069, 534, 0, 2015, 2016, 3, 1083, + 541, 0, 2016, 2017, 3, 1055, 527, 0, 2017, 164, 1, 0, 0, 0, 2018, 2019, + 3, 1055, 527, 0, 2019, 2020, 3, 1073, 536, 0, 2020, 2021, 3, 1053, 526, + 0, 2021, 166, 1, 0, 0, 0, 2022, 2023, 3, 1053, 526, 0, 2023, 2024, 3, 1063, + 531, 0, 2024, 2025, 3, 1083, 541, 0, 2025, 2026, 3, 1085, 542, 0, 2026, + 2027, 3, 1063, 531, 0, 2027, 2028, 3, 1073, 536, 0, 2028, 2029, 3, 1051, + 525, 0, 2029, 2030, 3, 1085, 542, 0, 2030, 168, 1, 0, 0, 0, 2031, 2032, + 3, 1047, 523, 0, 2032, 2033, 3, 1069, 534, 0, 2033, 2034, 3, 1069, 534, + 0, 2034, 170, 1, 0, 0, 0, 2035, 2036, 3, 1065, 532, 0, 2036, 2037, 3, 1075, + 537, 0, 2037, 2038, 3, 1063, 531, 0, 2038, 2039, 3, 1073, 536, 0, 2039, + 172, 1, 0, 0, 0, 2040, 2041, 3, 1069, 534, 0, 2041, 2042, 3, 1055, 527, + 0, 2042, 2043, 3, 1057, 528, 0, 2043, 2044, 3, 1085, 542, 0, 2044, 174, + 1, 0, 0, 0, 2045, 2046, 3, 1081, 540, 0, 2046, 2047, 3, 1063, 531, 0, 2047, + 2048, 3, 1059, 529, 0, 2048, 2049, 3, 1061, 530, 0, 2049, 2050, 3, 1085, + 542, 0, 2050, 176, 1, 0, 0, 0, 2051, 2052, 3, 1063, 531, 0, 2052, 2053, + 3, 1073, 536, 0, 2053, 2054, 3, 1073, 536, 0, 2054, 2055, 3, 1055, 527, + 0, 2055, 2056, 3, 1081, 540, 0, 2056, 178, 1, 0, 0, 0, 2057, 2058, 3, 1075, + 537, 0, 2058, 2059, 3, 1087, 543, 0, 2059, 2060, 3, 1085, 542, 0, 2060, + 2061, 3, 1055, 527, 0, 2061, 2062, 3, 1081, 540, 0, 2062, 180, 1, 0, 0, + 0, 2063, 2064, 3, 1057, 528, 0, 2064, 2065, 3, 1087, 543, 0, 2065, 2066, + 3, 1069, 534, 0, 2066, 2067, 3, 1069, 534, 0, 2067, 182, 1, 0, 0, 0, 2068, + 2069, 3, 1051, 525, 0, 2069, 2070, 3, 1081, 540, 0, 2070, 2071, 3, 1075, + 537, 0, 2071, 2072, 3, 1083, 541, 0, 2072, 2073, 3, 1083, 541, 0, 2073, + 184, 1, 0, 0, 0, 2074, 2075, 3, 1075, 537, 0, 2075, 2076, 3, 1073, 536, + 0, 2076, 186, 1, 0, 0, 0, 2077, 2078, 3, 1047, 523, 0, 2078, 2079, 3, 1083, + 541, 0, 2079, 2080, 3, 1051, 525, 0, 2080, 188, 1, 0, 0, 0, 2081, 2082, + 3, 1053, 526, 0, 2082, 2083, 3, 1055, 527, 0, 2083, 2084, 3, 1083, 541, + 0, 2084, 2085, 3, 1051, 525, 0, 2085, 190, 1, 0, 0, 0, 2086, 2087, 3, 1049, + 524, 0, 2087, 2088, 3, 1055, 527, 0, 2088, 2089, 3, 1059, 529, 0, 2089, + 2090, 3, 1063, 531, 0, 2090, 2091, 3, 1073, 536, 0, 2091, 192, 1, 0, 0, + 0, 2092, 2093, 3, 1053, 526, 0, 2093, 2094, 3, 1055, 527, 0, 2094, 2095, + 3, 1051, 525, 0, 2095, 2096, 3, 1069, 534, 0, 2096, 2097, 3, 1047, 523, + 0, 2097, 2098, 3, 1081, 540, 0, 2098, 2099, 3, 1055, 527, 0, 2099, 194, + 1, 0, 0, 0, 2100, 2101, 3, 1051, 525, 0, 2101, 2102, 3, 1061, 530, 0, 2102, + 2103, 3, 1047, 523, 0, 2103, 2104, 3, 1073, 536, 0, 2104, 2105, 3, 1059, + 529, 0, 2105, 2106, 3, 1055, 527, 0, 2106, 196, 1, 0, 0, 0, 2107, 2108, + 3, 1081, 540, 0, 2108, 2109, 3, 1055, 527, 0, 2109, 2110, 3, 1085, 542, + 0, 2110, 2111, 3, 1081, 540, 0, 2111, 2112, 3, 1063, 531, 0, 2112, 2113, + 3, 1055, 527, 0, 2113, 2114, 3, 1089, 544, 0, 2114, 2115, 3, 1055, 527, + 0, 2115, 198, 1, 0, 0, 0, 2116, 2117, 3, 1053, 526, 0, 2117, 2118, 3, 1055, + 527, 0, 2118, 2119, 3, 1069, 534, 0, 2119, 2120, 3, 1055, 527, 0, 2120, + 2121, 3, 1085, 542, 0, 2121, 2122, 3, 1055, 527, 0, 2122, 200, 1, 0, 0, + 0, 2123, 2124, 3, 1051, 525, 0, 2124, 2125, 3, 1075, 537, 0, 2125, 2126, + 3, 1071, 535, 0, 2126, 2127, 3, 1071, 535, 0, 2127, 2128, 3, 1063, 531, + 0, 2128, 2129, 3, 1085, 542, 0, 2129, 202, 1, 0, 0, 0, 2130, 2131, 3, 1081, + 540, 0, 2131, 2132, 3, 1075, 537, 0, 2132, 2133, 3, 1069, 534, 0, 2133, + 2134, 3, 1069, 534, 0, 2134, 2135, 3, 1049, 524, 0, 2135, 2136, 3, 1047, + 523, 0, 2136, 2137, 3, 1051, 525, 0, 2137, 2138, 3, 1067, 533, 0, 2138, + 204, 1, 0, 0, 0, 2139, 2140, 3, 1069, 534, 0, 2140, 2141, 3, 1075, 537, + 0, 2141, 2142, 3, 1075, 537, 0, 2142, 2143, 3, 1077, 538, 0, 2143, 206, + 1, 0, 0, 0, 2144, 2145, 3, 1091, 545, 0, 2145, 2146, 3, 1061, 530, 0, 2146, + 2147, 3, 1063, 531, 0, 2147, 2148, 3, 1069, 534, 0, 2148, 2149, 3, 1055, + 527, 0, 2149, 208, 1, 0, 0, 0, 2150, 2151, 3, 1063, 531, 0, 2151, 2152, + 3, 1057, 528, 0, 2152, 210, 1, 0, 0, 0, 2153, 2154, 3, 1055, 527, 0, 2154, + 2155, 3, 1069, 534, 0, 2155, 2156, 3, 1083, 541, 0, 2156, 2157, 3, 1063, + 531, 0, 2157, 2158, 3, 1057, 528, 0, 2158, 212, 1, 0, 0, 0, 2159, 2160, + 3, 1055, 527, 0, 2160, 2161, 3, 1069, 534, 0, 2161, 2162, 3, 1083, 541, + 0, 2162, 2163, 3, 1055, 527, 0, 2163, 2164, 3, 1063, 531, 0, 2164, 2165, + 3, 1057, 528, 0, 2165, 214, 1, 0, 0, 0, 2166, 2167, 3, 1051, 525, 0, 2167, + 2168, 3, 1075, 537, 0, 2168, 2169, 3, 1073, 536, 0, 2169, 2170, 3, 1085, + 542, 0, 2170, 2171, 3, 1063, 531, 0, 2171, 2172, 3, 1073, 536, 0, 2172, + 2173, 3, 1087, 543, 0, 2173, 2174, 3, 1055, 527, 0, 2174, 216, 1, 0, 0, + 0, 2175, 2176, 3, 1049, 524, 0, 2176, 2177, 3, 1081, 540, 0, 2177, 2178, + 3, 1055, 527, 0, 2178, 2179, 3, 1047, 523, 0, 2179, 2180, 3, 1067, 533, + 0, 2180, 218, 1, 0, 0, 0, 2181, 2182, 3, 1081, 540, 0, 2182, 2183, 3, 1055, + 527, 0, 2183, 2184, 3, 1085, 542, 0, 2184, 2185, 3, 1087, 543, 0, 2185, + 2186, 3, 1081, 540, 0, 2186, 2187, 3, 1073, 536, 0, 2187, 220, 1, 0, 0, + 0, 2188, 2189, 3, 1085, 542, 0, 2189, 2190, 3, 1061, 530, 0, 2190, 2191, + 3, 1081, 540, 0, 2191, 2192, 3, 1075, 537, 0, 2192, 2193, 3, 1091, 545, + 0, 2193, 222, 1, 0, 0, 0, 2194, 2195, 3, 1069, 534, 0, 2195, 2196, 3, 1075, + 537, 0, 2196, 2197, 3, 1059, 529, 0, 2197, 224, 1, 0, 0, 0, 2198, 2199, + 3, 1051, 525, 0, 2199, 2200, 3, 1047, 523, 0, 2200, 2201, 3, 1069, 534, + 0, 2201, 2202, 3, 1069, 534, 0, 2202, 226, 1, 0, 0, 0, 2203, 2204, 3, 1065, + 532, 0, 2204, 2205, 3, 1047, 523, 0, 2205, 2206, 3, 1089, 544, 0, 2206, + 2207, 3, 1047, 523, 0, 2207, 228, 1, 0, 0, 0, 2208, 2209, 3, 1065, 532, + 0, 2209, 2210, 3, 1047, 523, 0, 2210, 2211, 3, 1089, 544, 0, 2211, 2212, + 3, 1047, 523, 0, 2212, 2213, 3, 1083, 541, 0, 2213, 2214, 3, 1051, 525, + 0, 2214, 2215, 3, 1081, 540, 0, 2215, 2216, 3, 1063, 531, 0, 2216, 2217, + 3, 1077, 538, 0, 2217, 2218, 3, 1085, 542, 0, 2218, 230, 1, 0, 0, 0, 2219, + 2220, 3, 1047, 523, 0, 2220, 2221, 3, 1051, 525, 0, 2221, 2222, 3, 1085, + 542, 0, 2222, 2223, 3, 1063, 531, 0, 2223, 2224, 3, 1075, 537, 0, 2224, + 2225, 3, 1073, 536, 0, 2225, 232, 1, 0, 0, 0, 2226, 2227, 3, 1047, 523, + 0, 2227, 2228, 3, 1051, 525, 0, 2228, 2229, 3, 1085, 542, 0, 2229, 2230, + 3, 1063, 531, 0, 2230, 2231, 3, 1075, 537, 0, 2231, 2232, 3, 1073, 536, + 0, 2232, 2233, 3, 1083, 541, 0, 2233, 234, 1, 0, 0, 0, 2234, 2235, 3, 1051, + 525, 0, 2235, 2236, 3, 1069, 534, 0, 2236, 2237, 3, 1075, 537, 0, 2237, + 2238, 3, 1083, 541, 0, 2238, 2239, 3, 1055, 527, 0, 2239, 236, 1, 0, 0, + 0, 2240, 2241, 3, 1073, 536, 0, 2241, 2242, 3, 1075, 537, 0, 2242, 2243, + 3, 1053, 526, 0, 2243, 2244, 3, 1055, 527, 0, 2244, 238, 1, 0, 0, 0, 2245, + 2246, 3, 1055, 527, 0, 2246, 2247, 3, 1089, 544, 0, 2247, 2248, 3, 1055, + 527, 0, 2248, 2249, 3, 1073, 536, 0, 2249, 2250, 3, 1085, 542, 0, 2250, + 2251, 3, 1083, 541, 0, 2251, 240, 1, 0, 0, 0, 2252, 2253, 3, 1061, 530, + 0, 2253, 2254, 3, 1055, 527, 0, 2254, 2255, 3, 1047, 523, 0, 2255, 2256, + 3, 1053, 526, 0, 2256, 242, 1, 0, 0, 0, 2257, 2258, 3, 1085, 542, 0, 2258, + 2259, 3, 1047, 523, 0, 2259, 2260, 3, 1063, 531, 0, 2260, 2261, 3, 1069, + 534, 0, 2261, 244, 1, 0, 0, 0, 2262, 2263, 3, 1057, 528, 0, 2263, 2264, + 3, 1063, 531, 0, 2264, 2265, 3, 1073, 536, 0, 2265, 2266, 3, 1053, 526, + 0, 2266, 246, 1, 0, 0, 0, 2267, 2268, 3, 1083, 541, 0, 2268, 2269, 3, 1075, + 537, 0, 2269, 2270, 3, 1081, 540, 0, 2270, 2271, 3, 1085, 542, 0, 2271, + 248, 1, 0, 0, 0, 2272, 2273, 3, 1087, 543, 0, 2273, 2274, 3, 1073, 536, + 0, 2274, 2275, 3, 1063, 531, 0, 2275, 2276, 3, 1075, 537, 0, 2276, 2277, + 3, 1073, 536, 0, 2277, 250, 1, 0, 0, 0, 2278, 2279, 3, 1063, 531, 0, 2279, + 2280, 3, 1073, 536, 0, 2280, 2281, 3, 1085, 542, 0, 2281, 2282, 3, 1055, + 527, 0, 2282, 2283, 3, 1081, 540, 0, 2283, 2284, 3, 1083, 541, 0, 2284, + 2285, 3, 1055, 527, 0, 2285, 2286, 3, 1051, 525, 0, 2286, 2287, 3, 1085, + 542, 0, 2287, 252, 1, 0, 0, 0, 2288, 2289, 3, 1083, 541, 0, 2289, 2290, + 3, 1087, 543, 0, 2290, 2291, 3, 1049, 524, 0, 2291, 2292, 3, 1085, 542, + 0, 2292, 2293, 3, 1081, 540, 0, 2293, 2294, 3, 1047, 523, 0, 2294, 2295, + 3, 1051, 525, 0, 2295, 2296, 3, 1085, 542, 0, 2296, 254, 1, 0, 0, 0, 2297, + 2298, 3, 1051, 525, 0, 2298, 2299, 3, 1075, 537, 0, 2299, 2300, 3, 1073, + 536, 0, 2300, 2301, 3, 1085, 542, 0, 2301, 2302, 3, 1047, 523, 0, 2302, + 2303, 3, 1063, 531, 0, 2303, 2304, 3, 1073, 536, 0, 2304, 2305, 3, 1083, + 541, 0, 2305, 256, 1, 0, 0, 0, 2306, 2307, 3, 1047, 523, 0, 2307, 2308, + 3, 1089, 544, 0, 2308, 2309, 3, 1055, 527, 0, 2309, 2310, 3, 1081, 540, + 0, 2310, 2311, 3, 1047, 523, 0, 2311, 2312, 3, 1059, 529, 0, 2312, 2313, + 3, 1055, 527, 0, 2313, 258, 1, 0, 0, 0, 2314, 2315, 3, 1071, 535, 0, 2315, + 2316, 3, 1063, 531, 0, 2316, 2317, 3, 1073, 536, 0, 2317, 2318, 3, 1063, + 531, 0, 2318, 2319, 3, 1071, 535, 0, 2319, 2320, 3, 1087, 543, 0, 2320, + 2321, 3, 1071, 535, 0, 2321, 260, 1, 0, 0, 0, 2322, 2323, 3, 1071, 535, + 0, 2323, 2324, 3, 1047, 523, 0, 2324, 2325, 3, 1093, 546, 0, 2325, 2326, + 3, 1063, 531, 0, 2326, 2327, 3, 1071, 535, 0, 2327, 2328, 3, 1087, 543, + 0, 2328, 2329, 3, 1071, 535, 0, 2329, 262, 1, 0, 0, 0, 2330, 2331, 3, 1069, + 534, 0, 2331, 2332, 3, 1063, 531, 0, 2332, 2333, 3, 1083, 541, 0, 2333, + 2334, 3, 1085, 542, 0, 2334, 264, 1, 0, 0, 0, 2335, 2336, 3, 1081, 540, + 0, 2336, 2337, 3, 1055, 527, 0, 2337, 2338, 3, 1071, 535, 0, 2338, 2339, + 3, 1075, 537, 0, 2339, 2340, 3, 1089, 544, 0, 2340, 2341, 3, 1055, 527, + 0, 2341, 266, 1, 0, 0, 0, 2342, 2343, 3, 1055, 527, 0, 2343, 2344, 3, 1079, + 539, 0, 2344, 2345, 3, 1087, 543, 0, 2345, 2346, 3, 1047, 523, 0, 2346, + 2347, 3, 1069, 534, 0, 2347, 2348, 3, 1083, 541, 0, 2348, 268, 1, 0, 0, + 0, 2349, 2350, 3, 1063, 531, 0, 2350, 2351, 3, 1073, 536, 0, 2351, 2352, + 3, 1057, 528, 0, 2352, 2353, 3, 1075, 537, 0, 2353, 270, 1, 0, 0, 0, 2354, + 2355, 3, 1091, 545, 0, 2355, 2356, 3, 1047, 523, 0, 2356, 2357, 3, 1081, + 540, 0, 2357, 2358, 3, 1073, 536, 0, 2358, 2359, 3, 1063, 531, 0, 2359, + 2360, 3, 1073, 536, 0, 2360, 2361, 3, 1059, 529, 0, 2361, 272, 1, 0, 0, + 0, 2362, 2363, 3, 1085, 542, 0, 2363, 2364, 3, 1081, 540, 0, 2364, 2365, + 3, 1047, 523, 0, 2365, 2366, 3, 1051, 525, 0, 2366, 2367, 3, 1055, 527, + 0, 2367, 274, 1, 0, 0, 0, 2368, 2369, 3, 1051, 525, 0, 2369, 2370, 3, 1081, + 540, 0, 2370, 2371, 3, 1063, 531, 0, 2371, 2372, 3, 1085, 542, 0, 2372, + 2373, 3, 1063, 531, 0, 2373, 2374, 3, 1051, 525, 0, 2374, 2375, 3, 1047, + 523, 0, 2375, 2376, 3, 1069, 534, 0, 2376, 276, 1, 0, 0, 0, 2377, 2378, + 3, 1091, 545, 0, 2378, 2379, 3, 1063, 531, 0, 2379, 2380, 3, 1085, 542, + 0, 2380, 2381, 3, 1061, 530, 0, 2381, 278, 1, 0, 0, 0, 2382, 2383, 3, 1055, + 527, 0, 2383, 2384, 3, 1071, 535, 0, 2384, 2385, 3, 1077, 538, 0, 2385, + 2386, 3, 1085, 542, 0, 2386, 2387, 3, 1095, 547, 0, 2387, 280, 1, 0, 0, + 0, 2388, 2389, 3, 1075, 537, 0, 2389, 2390, 3, 1049, 524, 0, 2390, 2391, + 3, 1065, 532, 0, 2391, 2392, 3, 1055, 527, 0, 2392, 2393, 3, 1051, 525, + 0, 2393, 2394, 3, 1085, 542, 0, 2394, 282, 1, 0, 0, 0, 2395, 2396, 3, 1075, + 537, 0, 2396, 2397, 3, 1049, 524, 0, 2397, 2398, 3, 1065, 532, 0, 2398, + 2399, 3, 1055, 527, 0, 2399, 2400, 3, 1051, 525, 0, 2400, 2401, 3, 1085, + 542, 0, 2401, 2402, 3, 1083, 541, 0, 2402, 284, 1, 0, 0, 0, 2403, 2404, + 3, 1077, 538, 0, 2404, 2405, 3, 1047, 523, 0, 2405, 2406, 3, 1059, 529, + 0, 2406, 2407, 3, 1055, 527, 0, 2407, 2408, 3, 1083, 541, 0, 2408, 286, + 1, 0, 0, 0, 2409, 2410, 3, 1069, 534, 0, 2410, 2411, 3, 1047, 523, 0, 2411, + 2412, 3, 1095, 547, 0, 2412, 2413, 3, 1075, 537, 0, 2413, 2414, 3, 1087, + 543, 0, 2414, 2415, 3, 1085, 542, 0, 2415, 2416, 3, 1083, 541, 0, 2416, + 288, 1, 0, 0, 0, 2417, 2418, 3, 1083, 541, 0, 2418, 2419, 3, 1073, 536, + 0, 2419, 2420, 3, 1063, 531, 0, 2420, 2421, 3, 1077, 538, 0, 2421, 2422, + 3, 1077, 538, 0, 2422, 2423, 3, 1055, 527, 0, 2423, 2424, 3, 1085, 542, + 0, 2424, 2425, 3, 1083, 541, 0, 2425, 290, 1, 0, 0, 0, 2426, 2427, 3, 1073, + 536, 0, 2427, 2428, 3, 1075, 537, 0, 2428, 2429, 3, 1085, 542, 0, 2429, + 2430, 3, 1055, 527, 0, 2430, 2431, 3, 1049, 524, 0, 2431, 2432, 3, 1075, + 537, 0, 2432, 2433, 3, 1075, 537, 0, 2433, 2434, 3, 1067, 533, 0, 2434, + 2435, 3, 1083, 541, 0, 2435, 292, 1, 0, 0, 0, 2436, 2437, 3, 1077, 538, + 0, 2437, 2438, 3, 1069, 534, 0, 2438, 2439, 3, 1047, 523, 0, 2439, 2440, + 3, 1051, 525, 0, 2440, 2441, 3, 1055, 527, 0, 2441, 2442, 3, 1061, 530, + 0, 2442, 2443, 3, 1075, 537, 0, 2443, 2444, 3, 1069, 534, 0, 2444, 2445, + 3, 1053, 526, 0, 2445, 2446, 3, 1055, 527, 0, 2446, 2447, 3, 1081, 540, + 0, 2447, 294, 1, 0, 0, 0, 2448, 2449, 3, 1083, 541, 0, 2449, 2450, 3, 1073, + 536, 0, 2450, 2451, 3, 1063, 531, 0, 2451, 2452, 3, 1077, 538, 0, 2452, + 2453, 3, 1077, 538, 0, 2453, 2454, 3, 1055, 527, 0, 2454, 2455, 3, 1085, + 542, 0, 2455, 2456, 3, 1051, 525, 0, 2456, 2457, 3, 1047, 523, 0, 2457, + 2458, 3, 1069, 534, 0, 2458, 2459, 3, 1069, 534, 0, 2459, 296, 1, 0, 0, + 0, 2460, 2461, 3, 1069, 534, 0, 2461, 2462, 3, 1047, 523, 0, 2462, 2463, + 3, 1095, 547, 0, 2463, 2464, 3, 1075, 537, 0, 2464, 2465, 3, 1087, 543, + 0, 2465, 2466, 3, 1085, 542, 0, 2466, 2467, 3, 1059, 529, 0, 2467, 2468, + 3, 1081, 540, 0, 2468, 2469, 3, 1063, 531, 0, 2469, 2470, 3, 1053, 526, + 0, 2470, 298, 1, 0, 0, 0, 2471, 2472, 3, 1053, 526, 0, 2472, 2473, 3, 1047, + 523, 0, 2473, 2474, 3, 1085, 542, 0, 2474, 2475, 3, 1047, 523, 0, 2475, + 2476, 3, 1059, 529, 0, 2476, 2477, 3, 1081, 540, 0, 2477, 2478, 3, 1063, + 531, 0, 2478, 2479, 3, 1053, 526, 0, 2479, 300, 1, 0, 0, 0, 2480, 2481, + 3, 1053, 526, 0, 2481, 2482, 3, 1047, 523, 0, 2482, 2483, 3, 1085, 542, + 0, 2483, 2484, 3, 1047, 523, 0, 2484, 2485, 3, 1089, 544, 0, 2485, 2486, + 3, 1063, 531, 0, 2486, 2487, 3, 1055, 527, 0, 2487, 2488, 3, 1091, 545, + 0, 2488, 302, 1, 0, 0, 0, 2489, 2490, 3, 1069, 534, 0, 2490, 2491, 3, 1063, + 531, 0, 2491, 2492, 3, 1083, 541, 0, 2492, 2493, 3, 1085, 542, 0, 2493, + 2494, 3, 1089, 544, 0, 2494, 2495, 3, 1063, 531, 0, 2495, 2496, 3, 1055, + 527, 0, 2496, 2497, 3, 1091, 545, 0, 2497, 304, 1, 0, 0, 0, 2498, 2499, + 3, 1059, 529, 0, 2499, 2500, 3, 1047, 523, 0, 2500, 2501, 3, 1069, 534, + 0, 2501, 2502, 3, 1069, 534, 0, 2502, 2503, 3, 1055, 527, 0, 2503, 2504, + 3, 1081, 540, 0, 2504, 2505, 3, 1095, 547, 0, 2505, 306, 1, 0, 0, 0, 2506, + 2507, 3, 1051, 525, 0, 2507, 2508, 3, 1075, 537, 0, 2508, 2509, 3, 1073, + 536, 0, 2509, 2510, 3, 1085, 542, 0, 2510, 2511, 3, 1047, 523, 0, 2511, + 2512, 3, 1063, 531, 0, 2512, 2513, 3, 1073, 536, 0, 2513, 2514, 3, 1055, + 527, 0, 2514, 2515, 3, 1081, 540, 0, 2515, 308, 1, 0, 0, 0, 2516, 2517, + 3, 1081, 540, 0, 2517, 2518, 3, 1075, 537, 0, 2518, 2519, 3, 1091, 545, + 0, 2519, 310, 1, 0, 0, 0, 2520, 2521, 3, 1063, 531, 0, 2521, 2522, 3, 1085, + 542, 0, 2522, 2523, 3, 1055, 527, 0, 2523, 2524, 3, 1071, 535, 0, 2524, + 312, 1, 0, 0, 0, 2525, 2526, 3, 1051, 525, 0, 2526, 2527, 3, 1075, 537, + 0, 2527, 2528, 3, 1073, 536, 0, 2528, 2529, 3, 1085, 542, 0, 2529, 2530, + 3, 1081, 540, 0, 2530, 2531, 3, 1075, 537, 0, 2531, 2532, 3, 1069, 534, + 0, 2532, 2533, 3, 1049, 524, 0, 2533, 2534, 3, 1047, 523, 0, 2534, 2535, + 3, 1081, 540, 0, 2535, 314, 1, 0, 0, 0, 2536, 2537, 3, 1083, 541, 0, 2537, + 2538, 3, 1055, 527, 0, 2538, 2539, 3, 1047, 523, 0, 2539, 2540, 3, 1081, + 540, 0, 2540, 2541, 3, 1051, 525, 0, 2541, 2542, 3, 1061, 530, 0, 2542, + 316, 1, 0, 0, 0, 2543, 2544, 3, 1083, 541, 0, 2544, 2545, 3, 1055, 527, + 0, 2545, 2546, 3, 1047, 523, 0, 2546, 2547, 3, 1081, 540, 0, 2547, 2548, + 3, 1051, 525, 0, 2548, 2549, 3, 1061, 530, 0, 2549, 2550, 3, 1049, 524, + 0, 2550, 2551, 3, 1047, 523, 0, 2551, 2552, 3, 1081, 540, 0, 2552, 318, + 1, 0, 0, 0, 2553, 2554, 3, 1073, 536, 0, 2554, 2555, 3, 1047, 523, 0, 2555, + 2556, 3, 1089, 544, 0, 2556, 2557, 3, 1063, 531, 0, 2557, 2558, 3, 1059, + 529, 0, 2558, 2559, 3, 1047, 523, 0, 2559, 2560, 3, 1085, 542, 0, 2560, + 2561, 3, 1063, 531, 0, 2561, 2562, 3, 1075, 537, 0, 2562, 2563, 3, 1073, + 536, 0, 2563, 2564, 3, 1069, 534, 0, 2564, 2565, 3, 1063, 531, 0, 2565, + 2566, 3, 1083, 541, 0, 2566, 2567, 3, 1085, 542, 0, 2567, 320, 1, 0, 0, + 0, 2568, 2569, 3, 1047, 523, 0, 2569, 2570, 3, 1051, 525, 0, 2570, 2571, + 3, 1085, 542, 0, 2571, 2572, 3, 1063, 531, 0, 2572, 2573, 3, 1075, 537, + 0, 2573, 2574, 3, 1073, 536, 0, 2574, 2575, 3, 1049, 524, 0, 2575, 2576, + 3, 1087, 543, 0, 2576, 2577, 3, 1085, 542, 0, 2577, 2578, 3, 1085, 542, + 0, 2578, 2579, 3, 1075, 537, 0, 2579, 2580, 3, 1073, 536, 0, 2580, 322, + 1, 0, 0, 0, 2581, 2582, 3, 1069, 534, 0, 2582, 2583, 3, 1063, 531, 0, 2583, + 2584, 3, 1073, 536, 0, 2584, 2585, 3, 1067, 533, 0, 2585, 2586, 3, 1049, + 524, 0, 2586, 2587, 3, 1087, 543, 0, 2587, 2588, 3, 1085, 542, 0, 2588, + 2589, 3, 1085, 542, 0, 2589, 2590, 3, 1075, 537, 0, 2590, 2591, 3, 1073, + 536, 0, 2591, 324, 1, 0, 0, 0, 2592, 2593, 3, 1049, 524, 0, 2593, 2594, + 3, 1087, 543, 0, 2594, 2595, 3, 1085, 542, 0, 2595, 2596, 3, 1085, 542, + 0, 2596, 2597, 3, 1075, 537, 0, 2597, 2598, 3, 1073, 536, 0, 2598, 326, + 1, 0, 0, 0, 2599, 2600, 3, 1085, 542, 0, 2600, 2601, 3, 1063, 531, 0, 2601, + 2602, 3, 1085, 542, 0, 2602, 2603, 3, 1069, 534, 0, 2603, 2604, 3, 1055, + 527, 0, 2604, 328, 1, 0, 0, 0, 2605, 2606, 3, 1053, 526, 0, 2606, 2607, + 3, 1095, 547, 0, 2607, 2608, 3, 1073, 536, 0, 2608, 2609, 3, 1047, 523, + 0, 2609, 2610, 3, 1071, 535, 0, 2610, 2611, 3, 1063, 531, 0, 2611, 2612, + 3, 1051, 525, 0, 2612, 2613, 3, 1085, 542, 0, 2613, 2614, 3, 1055, 527, + 0, 2614, 2615, 3, 1093, 546, 0, 2615, 2616, 3, 1085, 542, 0, 2616, 330, + 1, 0, 0, 0, 2617, 2618, 3, 1053, 526, 0, 2618, 2619, 3, 1095, 547, 0, 2619, + 2620, 3, 1073, 536, 0, 2620, 2621, 3, 1047, 523, 0, 2621, 2622, 3, 1071, + 535, 0, 2622, 2623, 3, 1063, 531, 0, 2623, 2624, 3, 1051, 525, 0, 2624, + 332, 1, 0, 0, 0, 2625, 2626, 3, 1083, 541, 0, 2626, 2627, 3, 1085, 542, + 0, 2627, 2628, 3, 1047, 523, 0, 2628, 2629, 3, 1085, 542, 0, 2629, 2630, + 3, 1063, 531, 0, 2630, 2631, 3, 1051, 525, 0, 2631, 2632, 3, 1085, 542, + 0, 2632, 2633, 3, 1055, 527, 0, 2633, 2634, 3, 1093, 546, 0, 2634, 2635, + 3, 1085, 542, 0, 2635, 334, 1, 0, 0, 0, 2636, 2637, 3, 1069, 534, 0, 2637, + 2638, 3, 1047, 523, 0, 2638, 2639, 3, 1049, 524, 0, 2639, 2640, 3, 1055, + 527, 0, 2640, 2641, 3, 1069, 534, 0, 2641, 336, 1, 0, 0, 0, 2642, 2643, + 3, 1085, 542, 0, 2643, 2644, 3, 1055, 527, 0, 2644, 2645, 3, 1093, 546, + 0, 2645, 2646, 3, 1085, 542, 0, 2646, 2647, 3, 1049, 524, 0, 2647, 2648, + 3, 1075, 537, 0, 2648, 2649, 3, 1093, 546, 0, 2649, 338, 1, 0, 0, 0, 2650, + 2651, 3, 1085, 542, 0, 2651, 2652, 3, 1055, 527, 0, 2652, 2653, 3, 1093, + 546, 0, 2653, 2654, 3, 1085, 542, 0, 2654, 2655, 3, 1047, 523, 0, 2655, + 2656, 3, 1081, 540, 0, 2656, 2657, 3, 1055, 527, 0, 2657, 2658, 3, 1047, + 523, 0, 2658, 340, 1, 0, 0, 0, 2659, 2660, 3, 1053, 526, 0, 2660, 2661, + 3, 1047, 523, 0, 2661, 2662, 3, 1085, 542, 0, 2662, 2663, 3, 1055, 527, + 0, 2663, 2664, 3, 1077, 538, 0, 2664, 2665, 3, 1063, 531, 0, 2665, 2666, + 3, 1051, 525, 0, 2666, 2667, 3, 1067, 533, 0, 2667, 2668, 3, 1055, 527, + 0, 2668, 2669, 3, 1081, 540, 0, 2669, 342, 1, 0, 0, 0, 2670, 2671, 3, 1081, + 540, 0, 2671, 2672, 3, 1047, 523, 0, 2672, 2673, 3, 1053, 526, 0, 2673, + 2674, 3, 1063, 531, 0, 2674, 2675, 3, 1075, 537, 0, 2675, 2676, 3, 1049, + 524, 0, 2676, 2677, 3, 1087, 543, 0, 2677, 2678, 3, 1085, 542, 0, 2678, + 2679, 3, 1085, 542, 0, 2679, 2680, 3, 1075, 537, 0, 2680, 2681, 3, 1073, + 536, 0, 2681, 2682, 3, 1083, 541, 0, 2682, 344, 1, 0, 0, 0, 2683, 2684, + 3, 1053, 526, 0, 2684, 2685, 3, 1081, 540, 0, 2685, 2686, 3, 1075, 537, + 0, 2686, 2687, 3, 1077, 538, 0, 2687, 2688, 3, 1053, 526, 0, 2688, 2689, + 3, 1075, 537, 0, 2689, 2690, 3, 1091, 545, 0, 2690, 2691, 3, 1073, 536, + 0, 2691, 346, 1, 0, 0, 0, 2692, 2693, 3, 1051, 525, 0, 2693, 2694, 3, 1075, + 537, 0, 2694, 2695, 3, 1071, 535, 0, 2695, 2696, 3, 1049, 524, 0, 2696, + 2697, 3, 1075, 537, 0, 2697, 2698, 3, 1049, 524, 0, 2698, 2699, 3, 1075, + 537, 0, 2699, 2700, 3, 1093, 546, 0, 2700, 348, 1, 0, 0, 0, 2701, 2702, + 3, 1051, 525, 0, 2702, 2703, 3, 1061, 530, 0, 2703, 2704, 3, 1055, 527, + 0, 2704, 2705, 3, 1051, 525, 0, 2705, 2706, 3, 1067, 533, 0, 2706, 2707, + 3, 1049, 524, 0, 2707, 2708, 3, 1075, 537, 0, 2708, 2709, 3, 1093, 546, + 0, 2709, 350, 1, 0, 0, 0, 2710, 2711, 3, 1081, 540, 0, 2711, 2712, 3, 1055, + 527, 0, 2712, 2713, 3, 1057, 528, 0, 2713, 2714, 3, 1055, 527, 0, 2714, + 2715, 3, 1081, 540, 0, 2715, 2716, 3, 1055, 527, 0, 2716, 2717, 3, 1073, + 536, 0, 2717, 2718, 3, 1051, 525, 0, 2718, 2719, 3, 1055, 527, 0, 2719, + 2720, 3, 1083, 541, 0, 2720, 2721, 3, 1055, 527, 0, 2721, 2722, 3, 1069, + 534, 0, 2722, 2723, 3, 1055, 527, 0, 2723, 2724, 3, 1051, 525, 0, 2724, + 2725, 3, 1085, 542, 0, 2725, 2726, 3, 1075, 537, 0, 2726, 2727, 3, 1081, + 540, 0, 2727, 352, 1, 0, 0, 0, 2728, 2729, 3, 1063, 531, 0, 2729, 2730, + 3, 1073, 536, 0, 2730, 2731, 3, 1077, 538, 0, 2731, 2732, 3, 1087, 543, + 0, 2732, 2733, 3, 1085, 542, 0, 2733, 2734, 3, 1081, 540, 0, 2734, 2735, + 3, 1055, 527, 0, 2735, 2736, 3, 1057, 528, 0, 2736, 2737, 3, 1055, 527, + 0, 2737, 2738, 3, 1081, 540, 0, 2738, 2739, 3, 1055, 527, 0, 2739, 2740, + 3, 1073, 536, 0, 2740, 2741, 3, 1051, 525, 0, 2741, 2742, 3, 1055, 527, + 0, 2742, 2743, 3, 1083, 541, 0, 2743, 2744, 3, 1055, 527, 0, 2744, 2745, + 3, 1085, 542, 0, 2745, 2746, 3, 1083, 541, 0, 2746, 2747, 3, 1055, 527, + 0, 2747, 2748, 3, 1069, 534, 0, 2748, 2749, 3, 1055, 527, 0, 2749, 2750, + 3, 1051, 525, 0, 2750, 2751, 3, 1085, 542, 0, 2751, 2752, 3, 1075, 537, + 0, 2752, 2753, 3, 1081, 540, 0, 2753, 354, 1, 0, 0, 0, 2754, 2755, 3, 1057, + 528, 0, 2755, 2756, 3, 1063, 531, 0, 2756, 2757, 3, 1069, 534, 0, 2757, + 2758, 3, 1055, 527, 0, 2758, 2759, 3, 1063, 531, 0, 2759, 2760, 3, 1073, + 536, 0, 2760, 2761, 3, 1077, 538, 0, 2761, 2762, 3, 1087, 543, 0, 2762, + 2763, 3, 1085, 542, 0, 2763, 356, 1, 0, 0, 0, 2764, 2765, 3, 1063, 531, + 0, 2765, 2766, 3, 1071, 535, 0, 2766, 2767, 3, 1047, 523, 0, 2767, 2768, + 3, 1059, 529, 0, 2768, 2769, 3, 1055, 527, 0, 2769, 2770, 3, 1063, 531, + 0, 2770, 2771, 3, 1073, 536, 0, 2771, 2772, 3, 1077, 538, 0, 2772, 2773, + 3, 1087, 543, 0, 2773, 2774, 3, 1085, 542, 0, 2774, 358, 1, 0, 0, 0, 2775, + 2776, 3, 1051, 525, 0, 2776, 2777, 3, 1087, 543, 0, 2777, 2778, 3, 1083, + 541, 0, 2778, 2779, 3, 1085, 542, 0, 2779, 2780, 3, 1075, 537, 0, 2780, + 2781, 3, 1071, 535, 0, 2781, 2782, 3, 1091, 545, 0, 2782, 2783, 3, 1063, + 531, 0, 2783, 2784, 3, 1053, 526, 0, 2784, 2785, 3, 1059, 529, 0, 2785, + 2786, 3, 1055, 527, 0, 2786, 2787, 3, 1085, 542, 0, 2787, 360, 1, 0, 0, + 0, 2788, 2789, 3, 1077, 538, 0, 2789, 2790, 3, 1069, 534, 0, 2790, 2791, + 3, 1087, 543, 0, 2791, 2792, 3, 1059, 529, 0, 2792, 2793, 3, 1059, 529, + 0, 2793, 2794, 3, 1047, 523, 0, 2794, 2795, 3, 1049, 524, 0, 2795, 2796, + 3, 1069, 534, 0, 2796, 2797, 3, 1055, 527, 0, 2797, 2798, 3, 1091, 545, + 0, 2798, 2799, 3, 1063, 531, 0, 2799, 2800, 3, 1053, 526, 0, 2800, 2801, + 3, 1059, 529, 0, 2801, 2802, 3, 1055, 527, 0, 2802, 2803, 3, 1085, 542, + 0, 2803, 362, 1, 0, 0, 0, 2804, 2805, 3, 1085, 542, 0, 2805, 2806, 3, 1055, + 527, 0, 2806, 2807, 3, 1093, 546, 0, 2807, 2808, 3, 1085, 542, 0, 2808, + 2809, 3, 1057, 528, 0, 2809, 2810, 3, 1063, 531, 0, 2810, 2811, 3, 1069, + 534, 0, 2811, 2812, 3, 1085, 542, 0, 2812, 2813, 3, 1055, 527, 0, 2813, + 2814, 3, 1081, 540, 0, 2814, 364, 1, 0, 0, 0, 2815, 2816, 3, 1073, 536, + 0, 2816, 2817, 3, 1087, 543, 0, 2817, 2818, 3, 1071, 535, 0, 2818, 2819, + 3, 1049, 524, 0, 2819, 2820, 3, 1055, 527, 0, 2820, 2821, 3, 1081, 540, + 0, 2821, 2822, 3, 1057, 528, 0, 2822, 2823, 3, 1063, 531, 0, 2823, 2824, + 3, 1069, 534, 0, 2824, 2825, 3, 1085, 542, 0, 2825, 2826, 3, 1055, 527, + 0, 2826, 2827, 3, 1081, 540, 0, 2827, 366, 1, 0, 0, 0, 2828, 2829, 3, 1053, + 526, 0, 2829, 2830, 3, 1081, 540, 0, 2830, 2831, 3, 1075, 537, 0, 2831, + 2832, 3, 1077, 538, 0, 2832, 2833, 3, 1053, 526, 0, 2833, 2834, 3, 1075, + 537, 0, 2834, 2835, 3, 1091, 545, 0, 2835, 2836, 3, 1073, 536, 0, 2836, + 2837, 3, 1057, 528, 0, 2837, 2838, 3, 1063, 531, 0, 2838, 2839, 3, 1069, + 534, 0, 2839, 2840, 3, 1085, 542, 0, 2840, 2841, 3, 1055, 527, 0, 2841, + 2842, 3, 1081, 540, 0, 2842, 368, 1, 0, 0, 0, 2843, 2844, 3, 1053, 526, + 0, 2844, 2845, 3, 1047, 523, 0, 2845, 2846, 3, 1085, 542, 0, 2846, 2847, + 3, 1055, 527, 0, 2847, 2848, 3, 1057, 528, 0, 2848, 2849, 3, 1063, 531, + 0, 2849, 2850, 3, 1069, 534, 0, 2850, 2851, 3, 1085, 542, 0, 2851, 2852, + 3, 1055, 527, 0, 2852, 2853, 3, 1081, 540, 0, 2853, 370, 1, 0, 0, 0, 2854, + 2855, 3, 1057, 528, 0, 2855, 2856, 3, 1063, 531, 0, 2856, 2857, 3, 1069, + 534, 0, 2857, 2858, 3, 1085, 542, 0, 2858, 2859, 3, 1055, 527, 0, 2859, + 2860, 3, 1081, 540, 0, 2860, 372, 1, 0, 0, 0, 2861, 2862, 3, 1091, 545, + 0, 2862, 2863, 3, 1063, 531, 0, 2863, 2864, 3, 1053, 526, 0, 2864, 2865, + 3, 1059, 529, 0, 2865, 2866, 3, 1055, 527, 0, 2866, 2867, 3, 1085, 542, + 0, 2867, 374, 1, 0, 0, 0, 2868, 2869, 3, 1091, 545, 0, 2869, 2870, 3, 1063, + 531, 0, 2870, 2871, 3, 1053, 526, 0, 2871, 2872, 3, 1059, 529, 0, 2872, + 2873, 3, 1055, 527, 0, 2873, 2874, 3, 1085, 542, 0, 2874, 2875, 3, 1083, + 541, 0, 2875, 376, 1, 0, 0, 0, 2876, 2877, 3, 1051, 525, 0, 2877, 2878, + 3, 1047, 523, 0, 2878, 2879, 3, 1077, 538, 0, 2879, 2880, 3, 1085, 542, + 0, 2880, 2881, 3, 1063, 531, 0, 2881, 2882, 3, 1075, 537, 0, 2882, 2883, + 3, 1073, 536, 0, 2883, 378, 1, 0, 0, 0, 2884, 2885, 3, 1063, 531, 0, 2885, + 2886, 3, 1051, 525, 0, 2886, 2887, 3, 1075, 537, 0, 2887, 2888, 3, 1073, + 536, 0, 2888, 380, 1, 0, 0, 0, 2889, 2890, 3, 1085, 542, 0, 2890, 2891, + 3, 1075, 537, 0, 2891, 2892, 3, 1075, 537, 0, 2892, 2893, 3, 1069, 534, + 0, 2893, 2894, 3, 1085, 542, 0, 2894, 2895, 3, 1063, 531, 0, 2895, 2896, + 3, 1077, 538, 0, 2896, 382, 1, 0, 0, 0, 2897, 2898, 3, 1053, 526, 0, 2898, + 2899, 3, 1047, 523, 0, 2899, 2900, 3, 1085, 542, 0, 2900, 2901, 3, 1047, + 523, 0, 2901, 2902, 3, 1083, 541, 0, 2902, 2903, 3, 1075, 537, 0, 2903, + 2904, 3, 1087, 543, 0, 2904, 2905, 3, 1081, 540, 0, 2905, 2906, 3, 1051, + 525, 0, 2906, 2907, 3, 1055, 527, 0, 2907, 384, 1, 0, 0, 0, 2908, 2909, + 3, 1083, 541, 0, 2909, 2910, 3, 1075, 537, 0, 2910, 2911, 3, 1087, 543, + 0, 2911, 2912, 3, 1081, 540, 0, 2912, 2913, 3, 1051, 525, 0, 2913, 2914, + 3, 1055, 527, 0, 2914, 386, 1, 0, 0, 0, 2915, 2916, 3, 1083, 541, 0, 2916, + 2917, 3, 1055, 527, 0, 2917, 2918, 3, 1069, 534, 0, 2918, 2919, 3, 1055, + 527, 0, 2919, 2920, 3, 1051, 525, 0, 2920, 2921, 3, 1085, 542, 0, 2921, + 2922, 3, 1063, 531, 0, 2922, 2923, 3, 1075, 537, 0, 2923, 2924, 3, 1073, + 536, 0, 2924, 388, 1, 0, 0, 0, 2925, 2926, 3, 1057, 528, 0, 2926, 2927, + 3, 1075, 537, 0, 2927, 2928, 3, 1075, 537, 0, 2928, 2929, 3, 1085, 542, + 0, 2929, 2930, 3, 1055, 527, 0, 2930, 2931, 3, 1081, 540, 0, 2931, 390, + 1, 0, 0, 0, 2932, 2933, 3, 1061, 530, 0, 2933, 2934, 3, 1055, 527, 0, 2934, + 2935, 3, 1047, 523, 0, 2935, 2936, 3, 1053, 526, 0, 2936, 2937, 3, 1055, + 527, 0, 2937, 2938, 3, 1081, 540, 0, 2938, 392, 1, 0, 0, 0, 2939, 2940, + 3, 1051, 525, 0, 2940, 2941, 3, 1075, 537, 0, 2941, 2942, 3, 1073, 536, + 0, 2942, 2943, 3, 1085, 542, 0, 2943, 2944, 3, 1055, 527, 0, 2944, 2945, + 3, 1073, 536, 0, 2945, 2946, 3, 1085, 542, 0, 2946, 394, 1, 0, 0, 0, 2947, + 2948, 3, 1081, 540, 0, 2948, 2949, 3, 1055, 527, 0, 2949, 2950, 3, 1073, + 536, 0, 2950, 2951, 3, 1053, 526, 0, 2951, 2952, 3, 1055, 527, 0, 2952, + 2953, 3, 1081, 540, 0, 2953, 2954, 3, 1071, 535, 0, 2954, 2955, 3, 1075, + 537, 0, 2955, 2956, 3, 1053, 526, 0, 2956, 2957, 3, 1055, 527, 0, 2957, + 396, 1, 0, 0, 0, 2958, 2959, 3, 1049, 524, 0, 2959, 2960, 3, 1063, 531, + 0, 2960, 2961, 3, 1073, 536, 0, 2961, 2962, 3, 1053, 526, 0, 2962, 2963, + 3, 1083, 541, 0, 2963, 398, 1, 0, 0, 0, 2964, 2965, 3, 1047, 523, 0, 2965, + 2966, 3, 1085, 542, 0, 2966, 2967, 3, 1085, 542, 0, 2967, 2968, 3, 1081, + 540, 0, 2968, 400, 1, 0, 0, 0, 2969, 2970, 3, 1051, 525, 0, 2970, 2971, + 3, 1075, 537, 0, 2971, 2972, 3, 1073, 536, 0, 2972, 2973, 3, 1085, 542, + 0, 2973, 2974, 3, 1055, 527, 0, 2974, 2975, 3, 1073, 536, 0, 2975, 2976, + 3, 1085, 542, 0, 2976, 2977, 3, 1077, 538, 0, 2977, 2978, 3, 1047, 523, + 0, 2978, 2979, 3, 1081, 540, 0, 2979, 2980, 3, 1047, 523, 0, 2980, 2981, + 3, 1071, 535, 0, 2981, 2982, 3, 1083, 541, 0, 2982, 402, 1, 0, 0, 0, 2983, + 2984, 3, 1051, 525, 0, 2984, 2985, 3, 1047, 523, 0, 2985, 2986, 3, 1077, + 538, 0, 2986, 2987, 3, 1085, 542, 0, 2987, 2988, 3, 1063, 531, 0, 2988, + 2989, 3, 1075, 537, 0, 2989, 2990, 3, 1073, 536, 0, 2990, 2991, 3, 1077, + 538, 0, 2991, 2992, 3, 1047, 523, 0, 2992, 2993, 3, 1081, 540, 0, 2993, + 2994, 3, 1047, 523, 0, 2994, 2995, 3, 1071, 535, 0, 2995, 2996, 3, 1083, + 541, 0, 2996, 404, 1, 0, 0, 0, 2997, 2998, 3, 1077, 538, 0, 2998, 2999, + 3, 1047, 523, 0, 2999, 3000, 3, 1081, 540, 0, 3000, 3001, 3, 1047, 523, + 0, 3001, 3002, 3, 1071, 535, 0, 3002, 3003, 3, 1083, 541, 0, 3003, 406, + 1, 0, 0, 0, 3004, 3005, 3, 1089, 544, 0, 3005, 3006, 3, 1047, 523, 0, 3006, + 3007, 3, 1081, 540, 0, 3007, 3008, 3, 1063, 531, 0, 3008, 3009, 3, 1047, + 523, 0, 3009, 3010, 3, 1049, 524, 0, 3010, 3011, 3, 1069, 534, 0, 3011, + 3012, 3, 1055, 527, 0, 3012, 3013, 3, 1083, 541, 0, 3013, 408, 1, 0, 0, + 0, 3014, 3015, 3, 1053, 526, 0, 3015, 3016, 3, 1055, 527, 0, 3016, 3017, + 3, 1083, 541, 0, 3017, 3018, 3, 1067, 533, 0, 3018, 3019, 3, 1085, 542, + 0, 3019, 3020, 3, 1075, 537, 0, 3020, 3021, 3, 1077, 538, 0, 3021, 3022, + 3, 1091, 545, 0, 3022, 3023, 3, 1063, 531, 0, 3023, 3024, 3, 1053, 526, + 0, 3024, 3025, 3, 1085, 542, 0, 3025, 3026, 3, 1061, 530, 0, 3026, 410, + 1, 0, 0, 0, 3027, 3028, 3, 1085, 542, 0, 3028, 3029, 3, 1047, 523, 0, 3029, + 3030, 3, 1049, 524, 0, 3030, 3031, 3, 1069, 534, 0, 3031, 3032, 3, 1055, + 527, 0, 3032, 3033, 3, 1085, 542, 0, 3033, 3034, 3, 1091, 545, 0, 3034, + 3035, 3, 1063, 531, 0, 3035, 3036, 3, 1053, 526, 0, 3036, 3037, 3, 1085, + 542, 0, 3037, 3038, 3, 1061, 530, 0, 3038, 412, 1, 0, 0, 0, 3039, 3040, + 3, 1077, 538, 0, 3040, 3041, 3, 1061, 530, 0, 3041, 3042, 3, 1075, 537, + 0, 3042, 3043, 3, 1073, 536, 0, 3043, 3044, 3, 1055, 527, 0, 3044, 3045, + 3, 1091, 545, 0, 3045, 3046, 3, 1063, 531, 0, 3046, 3047, 3, 1053, 526, + 0, 3047, 3048, 3, 1085, 542, 0, 3048, 3049, 3, 1061, 530, 0, 3049, 414, + 1, 0, 0, 0, 3050, 3051, 3, 1051, 525, 0, 3051, 3052, 3, 1069, 534, 0, 3052, + 3053, 3, 1047, 523, 0, 3053, 3054, 3, 1083, 541, 0, 3054, 3055, 3, 1083, + 541, 0, 3055, 416, 1, 0, 0, 0, 3056, 3057, 3, 1083, 541, 0, 3057, 3058, + 3, 1085, 542, 0, 3058, 3059, 3, 1095, 547, 0, 3059, 3060, 3, 1069, 534, + 0, 3060, 3061, 3, 1055, 527, 0, 3061, 418, 1, 0, 0, 0, 3062, 3063, 3, 1049, + 524, 0, 3063, 3064, 3, 1087, 543, 0, 3064, 3065, 3, 1085, 542, 0, 3065, + 3066, 3, 1085, 542, 0, 3066, 3067, 3, 1075, 537, 0, 3067, 3068, 3, 1073, + 536, 0, 3068, 3069, 3, 1083, 541, 0, 3069, 3070, 3, 1085, 542, 0, 3070, + 3071, 3, 1095, 547, 0, 3071, 3072, 3, 1069, 534, 0, 3072, 3073, 3, 1055, + 527, 0, 3073, 420, 1, 0, 0, 0, 3074, 3075, 3, 1053, 526, 0, 3075, 3076, + 3, 1055, 527, 0, 3076, 3077, 3, 1083, 541, 0, 3077, 3078, 3, 1063, 531, + 0, 3078, 3079, 3, 1059, 529, 0, 3079, 3080, 3, 1073, 536, 0, 3080, 422, + 1, 0, 0, 0, 3081, 3082, 3, 1077, 538, 0, 3082, 3083, 3, 1081, 540, 0, 3083, + 3084, 3, 1075, 537, 0, 3084, 3085, 3, 1077, 538, 0, 3085, 3086, 3, 1055, + 527, 0, 3086, 3087, 3, 1081, 540, 0, 3087, 3088, 3, 1085, 542, 0, 3088, + 3089, 3, 1063, 531, 0, 3089, 3090, 3, 1055, 527, 0, 3090, 3091, 3, 1083, + 541, 0, 3091, 424, 1, 0, 0, 0, 3092, 3093, 3, 1053, 526, 0, 3093, 3094, + 3, 1055, 527, 0, 3094, 3095, 3, 1083, 541, 0, 3095, 3096, 3, 1063, 531, + 0, 3096, 3097, 3, 1059, 529, 0, 3097, 3098, 3, 1073, 536, 0, 3098, 3099, + 3, 1077, 538, 0, 3099, 3100, 3, 1081, 540, 0, 3100, 3101, 3, 1075, 537, + 0, 3101, 3102, 3, 1077, 538, 0, 3102, 3103, 3, 1055, 527, 0, 3103, 3104, + 3, 1081, 540, 0, 3104, 3105, 3, 1085, 542, 0, 3105, 3106, 3, 1063, 531, + 0, 3106, 3107, 3, 1055, 527, 0, 3107, 3108, 3, 1083, 541, 0, 3108, 426, + 1, 0, 0, 0, 3109, 3110, 3, 1083, 541, 0, 3110, 3111, 3, 1085, 542, 0, 3111, + 3112, 3, 1095, 547, 0, 3112, 3113, 3, 1069, 534, 0, 3113, 3114, 3, 1063, + 531, 0, 3114, 3115, 3, 1073, 536, 0, 3115, 3116, 3, 1059, 529, 0, 3116, + 428, 1, 0, 0, 0, 3117, 3118, 3, 1051, 525, 0, 3118, 3119, 3, 1069, 534, + 0, 3119, 3120, 3, 1055, 527, 0, 3120, 3121, 3, 1047, 523, 0, 3121, 3122, + 3, 1081, 540, 0, 3122, 430, 1, 0, 0, 0, 3123, 3124, 3, 1091, 545, 0, 3124, + 3125, 3, 1063, 531, 0, 3125, 3126, 3, 1053, 526, 0, 3126, 3127, 3, 1085, + 542, 0, 3127, 3128, 3, 1061, 530, 0, 3128, 432, 1, 0, 0, 0, 3129, 3130, + 3, 1061, 530, 0, 3130, 3131, 3, 1055, 527, 0, 3131, 3132, 3, 1063, 531, + 0, 3132, 3133, 3, 1059, 529, 0, 3133, 3134, 3, 1061, 530, 0, 3134, 3135, + 3, 1085, 542, 0, 3135, 434, 1, 0, 0, 0, 3136, 3137, 3, 1047, 523, 0, 3137, + 3138, 3, 1087, 543, 0, 3138, 3139, 3, 1085, 542, 0, 3139, 3140, 3, 1075, + 537, 0, 3140, 3141, 3, 1057, 528, 0, 3141, 3142, 3, 1063, 531, 0, 3142, + 3143, 3, 1069, 534, 0, 3143, 3144, 3, 1069, 534, 0, 3144, 436, 1, 0, 0, + 0, 3145, 3146, 3, 1087, 543, 0, 3146, 3147, 3, 1081, 540, 0, 3147, 3148, + 3, 1069, 534, 0, 3148, 438, 1, 0, 0, 0, 3149, 3150, 3, 1057, 528, 0, 3150, + 3151, 3, 1075, 537, 0, 3151, 3152, 3, 1069, 534, 0, 3152, 3153, 3, 1053, + 526, 0, 3153, 3154, 3, 1055, 527, 0, 3154, 3155, 3, 1081, 540, 0, 3155, + 440, 1, 0, 0, 0, 3156, 3157, 3, 1077, 538, 0, 3157, 3158, 3, 1047, 523, + 0, 3158, 3159, 3, 1083, 541, 0, 3159, 3160, 3, 1083, 541, 0, 3160, 3161, + 3, 1063, 531, 0, 3161, 3162, 3, 1073, 536, 0, 3162, 3163, 3, 1059, 529, + 0, 3163, 442, 1, 0, 0, 0, 3164, 3165, 3, 1051, 525, 0, 3165, 3166, 3, 1075, + 537, 0, 3166, 3167, 3, 1073, 536, 0, 3167, 3168, 3, 1085, 542, 0, 3168, + 3169, 3, 1055, 527, 0, 3169, 3170, 3, 1093, 546, 0, 3170, 3171, 3, 1085, + 542, 0, 3171, 444, 1, 0, 0, 0, 3172, 3173, 3, 1055, 527, 0, 3173, 3174, + 3, 1053, 526, 0, 3174, 3175, 3, 1063, 531, 0, 3175, 3176, 3, 1085, 542, + 0, 3176, 3177, 3, 1047, 523, 0, 3177, 3178, 3, 1049, 524, 0, 3178, 3179, + 3, 1069, 534, 0, 3179, 3180, 3, 1055, 527, 0, 3180, 446, 1, 0, 0, 0, 3181, + 3182, 3, 1081, 540, 0, 3182, 3183, 3, 1055, 527, 0, 3183, 3184, 3, 1047, + 523, 0, 3184, 3185, 3, 1053, 526, 0, 3185, 3186, 3, 1075, 537, 0, 3186, + 3187, 3, 1073, 536, 0, 3187, 3188, 3, 1069, 534, 0, 3188, 3189, 3, 1095, + 547, 0, 3189, 448, 1, 0, 0, 0, 3190, 3191, 3, 1047, 523, 0, 3191, 3192, + 3, 1085, 542, 0, 3192, 3193, 3, 1085, 542, 0, 3193, 3194, 3, 1081, 540, + 0, 3194, 3195, 3, 1063, 531, 0, 3195, 3196, 3, 1049, 524, 0, 3196, 3197, + 3, 1087, 543, 0, 3197, 3198, 3, 1085, 542, 0, 3198, 3199, 3, 1055, 527, + 0, 3199, 3200, 3, 1083, 541, 0, 3200, 450, 1, 0, 0, 0, 3201, 3202, 3, 1057, + 528, 0, 3202, 3203, 3, 1063, 531, 0, 3203, 3204, 3, 1069, 534, 0, 3204, + 3205, 3, 1085, 542, 0, 3205, 3206, 3, 1055, 527, 0, 3206, 3207, 3, 1081, + 540, 0, 3207, 3208, 3, 1085, 542, 0, 3208, 3209, 3, 1095, 547, 0, 3209, + 3210, 3, 1077, 538, 0, 3210, 3211, 3, 1055, 527, 0, 3211, 452, 1, 0, 0, + 0, 3212, 3213, 3, 1063, 531, 0, 3213, 3214, 3, 1071, 535, 0, 3214, 3215, + 3, 1047, 523, 0, 3215, 3216, 3, 1059, 529, 0, 3216, 3217, 3, 1055, 527, + 0, 3217, 454, 1, 0, 0, 0, 3218, 3219, 3, 1051, 525, 0, 3219, 3220, 3, 1075, + 537, 0, 3220, 3221, 3, 1069, 534, 0, 3221, 3222, 3, 1069, 534, 0, 3222, + 3223, 3, 1055, 527, 0, 3223, 3224, 3, 1051, 525, 0, 3224, 3225, 3, 1085, + 542, 0, 3225, 3226, 3, 1063, 531, 0, 3226, 3227, 3, 1075, 537, 0, 3227, + 3228, 3, 1073, 536, 0, 3228, 456, 1, 0, 0, 0, 3229, 3230, 3, 1083, 541, + 0, 3230, 3231, 3, 1085, 542, 0, 3231, 3232, 3, 1047, 523, 0, 3232, 3233, + 3, 1085, 542, 0, 3233, 3234, 3, 1063, 531, 0, 3234, 3235, 3, 1051, 525, + 0, 3235, 3236, 3, 1063, 531, 0, 3236, 3237, 3, 1071, 535, 0, 3237, 3238, + 3, 1047, 523, 0, 3238, 3239, 3, 1059, 529, 0, 3239, 3240, 3, 1055, 527, + 0, 3240, 458, 1, 0, 0, 0, 3241, 3242, 3, 1053, 526, 0, 3242, 3243, 3, 1095, + 547, 0, 3243, 3244, 3, 1073, 536, 0, 3244, 3245, 3, 1047, 523, 0, 3245, + 3246, 3, 1071, 535, 0, 3246, 3247, 3, 1063, 531, 0, 3247, 3248, 3, 1051, + 525, 0, 3248, 3249, 3, 1063, 531, 0, 3249, 3250, 3, 1071, 535, 0, 3250, + 3251, 3, 1047, 523, 0, 3251, 3252, 3, 1059, 529, 0, 3252, 3253, 3, 1055, + 527, 0, 3253, 460, 1, 0, 0, 0, 3254, 3255, 3, 1051, 525, 0, 3255, 3256, + 3, 1087, 543, 0, 3256, 3257, 3, 1083, 541, 0, 3257, 3258, 3, 1085, 542, + 0, 3258, 3259, 3, 1075, 537, 0, 3259, 3260, 3, 1071, 535, 0, 3260, 3261, + 3, 1051, 525, 0, 3261, 3262, 3, 1075, 537, 0, 3262, 3263, 3, 1073, 536, + 0, 3263, 3264, 3, 1085, 542, 0, 3264, 3265, 3, 1047, 523, 0, 3265, 3266, + 3, 1063, 531, 0, 3266, 3267, 3, 1073, 536, 0, 3267, 3268, 3, 1055, 527, + 0, 3268, 3269, 3, 1081, 540, 0, 3269, 462, 1, 0, 0, 0, 3270, 3271, 3, 1085, + 542, 0, 3271, 3272, 3, 1047, 523, 0, 3272, 3273, 3, 1049, 524, 0, 3273, + 3274, 3, 1051, 525, 0, 3274, 3275, 3, 1075, 537, 0, 3275, 3276, 3, 1073, + 536, 0, 3276, 3277, 3, 1085, 542, 0, 3277, 3278, 3, 1047, 523, 0, 3278, + 3279, 3, 1063, 531, 0, 3279, 3280, 3, 1073, 536, 0, 3280, 3281, 3, 1055, + 527, 0, 3281, 3282, 3, 1081, 540, 0, 3282, 464, 1, 0, 0, 0, 3283, 3284, + 3, 1085, 542, 0, 3284, 3285, 3, 1047, 523, 0, 3285, 3286, 3, 1049, 524, + 0, 3286, 3287, 3, 1077, 538, 0, 3287, 3288, 3, 1047, 523, 0, 3288, 3289, + 3, 1059, 529, 0, 3289, 3290, 3, 1055, 527, 0, 3290, 466, 1, 0, 0, 0, 3291, + 3292, 3, 1059, 529, 0, 3292, 3293, 3, 1081, 540, 0, 3293, 3294, 3, 1075, + 537, 0, 3294, 3295, 3, 1087, 543, 0, 3295, 3296, 3, 1077, 538, 0, 3296, + 3297, 3, 1049, 524, 0, 3297, 3298, 3, 1075, 537, 0, 3298, 3299, 3, 1093, + 546, 0, 3299, 468, 1, 0, 0, 0, 3300, 3301, 3, 1089, 544, 0, 3301, 3302, + 3, 1063, 531, 0, 3302, 3303, 3, 1083, 541, 0, 3303, 3304, 3, 1063, 531, + 0, 3304, 3305, 3, 1049, 524, 0, 3305, 3306, 3, 1069, 534, 0, 3306, 3307, + 3, 1055, 527, 0, 3307, 470, 1, 0, 0, 0, 3308, 3309, 3, 1083, 541, 0, 3309, + 3310, 3, 1047, 523, 0, 3310, 3311, 3, 1089, 544, 0, 3311, 3312, 3, 1055, + 527, 0, 3312, 3313, 3, 1051, 525, 0, 3313, 3314, 3, 1061, 530, 0, 3314, + 3315, 3, 1047, 523, 0, 3315, 3316, 3, 1073, 536, 0, 3316, 3317, 3, 1059, + 529, 0, 3317, 3318, 3, 1055, 527, 0, 3318, 3319, 3, 1083, 541, 0, 3319, + 472, 1, 0, 0, 0, 3320, 3321, 3, 1083, 541, 0, 3321, 3322, 3, 1047, 523, + 0, 3322, 3323, 3, 1089, 544, 0, 3323, 3324, 3, 1055, 527, 0, 3324, 3325, + 5, 95, 0, 0, 3325, 3326, 3, 1051, 525, 0, 3326, 3327, 3, 1061, 530, 0, + 3327, 3328, 3, 1047, 523, 0, 3328, 3329, 3, 1073, 536, 0, 3329, 3330, 3, + 1059, 529, 0, 3330, 3331, 3, 1055, 527, 0, 3331, 3332, 3, 1083, 541, 0, + 3332, 474, 1, 0, 0, 0, 3333, 3334, 3, 1051, 525, 0, 3334, 3335, 3, 1047, + 523, 0, 3335, 3336, 3, 1073, 536, 0, 3336, 3337, 3, 1051, 525, 0, 3337, + 3338, 3, 1055, 527, 0, 3338, 3339, 3, 1069, 534, 0, 3339, 3340, 5, 95, + 0, 0, 3340, 3341, 3, 1051, 525, 0, 3341, 3342, 3, 1061, 530, 0, 3342, 3343, + 3, 1047, 523, 0, 3343, 3344, 3, 1073, 536, 0, 3344, 3345, 3, 1059, 529, + 0, 3345, 3346, 3, 1055, 527, 0, 3346, 3347, 3, 1083, 541, 0, 3347, 476, + 1, 0, 0, 0, 3348, 3349, 3, 1051, 525, 0, 3349, 3350, 3, 1069, 534, 0, 3350, + 3351, 3, 1075, 537, 0, 3351, 3352, 3, 1083, 541, 0, 3352, 3353, 3, 1055, + 527, 0, 3353, 3354, 5, 95, 0, 0, 3354, 3355, 3, 1077, 538, 0, 3355, 3356, + 3, 1047, 523, 0, 3356, 3357, 3, 1059, 529, 0, 3357, 3358, 3, 1055, 527, + 0, 3358, 478, 1, 0, 0, 0, 3359, 3360, 3, 1083, 541, 0, 3360, 3361, 3, 1061, + 530, 0, 3361, 3362, 3, 1075, 537, 0, 3362, 3363, 3, 1091, 545, 0, 3363, + 3364, 5, 95, 0, 0, 3364, 3365, 3, 1077, 538, 0, 3365, 3366, 3, 1047, 523, + 0, 3366, 3367, 3, 1059, 529, 0, 3367, 3368, 3, 1055, 527, 0, 3368, 480, + 1, 0, 0, 0, 3369, 3370, 3, 1053, 526, 0, 3370, 3371, 3, 1055, 527, 0, 3371, + 3372, 3, 1069, 534, 0, 3372, 3373, 3, 1055, 527, 0, 3373, 3374, 3, 1085, + 542, 0, 3374, 3375, 3, 1055, 527, 0, 3375, 3376, 5, 95, 0, 0, 3376, 3377, + 3, 1047, 523, 0, 3377, 3378, 3, 1051, 525, 0, 3378, 3379, 3, 1085, 542, + 0, 3379, 3380, 3, 1063, 531, 0, 3380, 3381, 3, 1075, 537, 0, 3381, 3382, + 3, 1073, 536, 0, 3382, 482, 1, 0, 0, 0, 3383, 3384, 3, 1053, 526, 0, 3384, + 3385, 3, 1055, 527, 0, 3385, 3386, 3, 1069, 534, 0, 3386, 3387, 3, 1055, + 527, 0, 3387, 3388, 3, 1085, 542, 0, 3388, 3389, 3, 1055, 527, 0, 3389, + 3390, 5, 95, 0, 0, 3390, 3391, 3, 1075, 537, 0, 3391, 3392, 3, 1049, 524, + 0, 3392, 3393, 3, 1065, 532, 0, 3393, 3394, 3, 1055, 527, 0, 3394, 3395, + 3, 1051, 525, 0, 3395, 3396, 3, 1085, 542, 0, 3396, 484, 1, 0, 0, 0, 3397, + 3398, 3, 1051, 525, 0, 3398, 3399, 3, 1081, 540, 0, 3399, 3400, 3, 1055, + 527, 0, 3400, 3401, 3, 1047, 523, 0, 3401, 3402, 3, 1085, 542, 0, 3402, + 3403, 3, 1055, 527, 0, 3403, 3404, 5, 95, 0, 0, 3404, 3405, 3, 1075, 537, + 0, 3405, 3406, 3, 1049, 524, 0, 3406, 3407, 3, 1065, 532, 0, 3407, 3408, + 3, 1055, 527, 0, 3408, 3409, 3, 1051, 525, 0, 3409, 3410, 3, 1085, 542, + 0, 3410, 486, 1, 0, 0, 0, 3411, 3412, 3, 1051, 525, 0, 3412, 3413, 3, 1047, + 523, 0, 3413, 3414, 3, 1069, 534, 0, 3414, 3415, 3, 1069, 534, 0, 3415, + 3416, 5, 95, 0, 0, 3416, 3417, 3, 1071, 535, 0, 3417, 3418, 3, 1063, 531, + 0, 3418, 3419, 3, 1051, 525, 0, 3419, 3420, 3, 1081, 540, 0, 3420, 3421, + 3, 1075, 537, 0, 3421, 3422, 3, 1057, 528, 0, 3422, 3423, 3, 1069, 534, + 0, 3423, 3424, 3, 1075, 537, 0, 3424, 3425, 3, 1091, 545, 0, 3425, 488, + 1, 0, 0, 0, 3426, 3427, 3, 1051, 525, 0, 3427, 3428, 3, 1047, 523, 0, 3428, + 3429, 3, 1069, 534, 0, 3429, 3430, 3, 1069, 534, 0, 3430, 3431, 5, 95, + 0, 0, 3431, 3432, 3, 1073, 536, 0, 3432, 3433, 3, 1047, 523, 0, 3433, 3434, + 3, 1073, 536, 0, 3434, 3435, 3, 1075, 537, 0, 3435, 3436, 3, 1057, 528, + 0, 3436, 3437, 3, 1069, 534, 0, 3437, 3438, 3, 1075, 537, 0, 3438, 3439, + 3, 1091, 545, 0, 3439, 490, 1, 0, 0, 0, 3440, 3441, 3, 1075, 537, 0, 3441, + 3442, 3, 1077, 538, 0, 3442, 3443, 3, 1055, 527, 0, 3443, 3444, 3, 1073, + 536, 0, 3444, 3445, 5, 95, 0, 0, 3445, 3446, 3, 1069, 534, 0, 3446, 3447, + 3, 1063, 531, 0, 3447, 3448, 3, 1073, 536, 0, 3448, 3449, 3, 1067, 533, + 0, 3449, 492, 1, 0, 0, 0, 3450, 3451, 3, 1083, 541, 0, 3451, 3452, 3, 1063, + 531, 0, 3452, 3453, 3, 1059, 529, 0, 3453, 3454, 3, 1073, 536, 0, 3454, + 3455, 5, 95, 0, 0, 3455, 3456, 3, 1075, 537, 0, 3456, 3457, 3, 1087, 543, + 0, 3457, 3458, 3, 1085, 542, 0, 3458, 494, 1, 0, 0, 0, 3459, 3460, 3, 1051, + 525, 0, 3460, 3461, 3, 1047, 523, 0, 3461, 3462, 3, 1073, 536, 0, 3462, + 3463, 3, 1051, 525, 0, 3463, 3464, 3, 1055, 527, 0, 3464, 3465, 3, 1069, + 534, 0, 3465, 496, 1, 0, 0, 0, 3466, 3467, 3, 1077, 538, 0, 3467, 3468, + 3, 1081, 540, 0, 3468, 3469, 3, 1063, 531, 0, 3469, 3470, 3, 1071, 535, + 0, 3470, 3471, 3, 1047, 523, 0, 3471, 3472, 3, 1081, 540, 0, 3472, 3473, + 3, 1095, 547, 0, 3473, 498, 1, 0, 0, 0, 3474, 3475, 3, 1083, 541, 0, 3475, + 3476, 3, 1087, 543, 0, 3476, 3477, 3, 1051, 525, 0, 3477, 3478, 3, 1051, + 525, 0, 3478, 3479, 3, 1055, 527, 0, 3479, 3480, 3, 1083, 541, 0, 3480, + 3481, 3, 1083, 541, 0, 3481, 500, 1, 0, 0, 0, 3482, 3483, 3, 1053, 526, + 0, 3483, 3484, 3, 1047, 523, 0, 3484, 3485, 3, 1073, 536, 0, 3485, 3486, + 3, 1059, 529, 0, 3486, 3487, 3, 1055, 527, 0, 3487, 3488, 3, 1081, 540, + 0, 3488, 502, 1, 0, 0, 0, 3489, 3490, 3, 1091, 545, 0, 3490, 3491, 3, 1047, + 523, 0, 3491, 3492, 3, 1081, 540, 0, 3492, 3493, 3, 1073, 536, 0, 3493, + 3494, 3, 1063, 531, 0, 3494, 3495, 3, 1073, 536, 0, 3495, 3496, 3, 1059, + 529, 0, 3496, 504, 1, 0, 0, 0, 3497, 3498, 3, 1063, 531, 0, 3498, 3499, + 3, 1073, 536, 0, 3499, 3500, 3, 1057, 528, 0, 3500, 3501, 3, 1075, 537, + 0, 3501, 506, 1, 0, 0, 0, 3502, 3503, 3, 1085, 542, 0, 3503, 3504, 3, 1055, + 527, 0, 3504, 3505, 3, 1071, 535, 0, 3505, 3506, 3, 1077, 538, 0, 3506, + 3507, 3, 1069, 534, 0, 3507, 3508, 3, 1047, 523, 0, 3508, 3509, 3, 1085, + 542, 0, 3509, 3510, 3, 1055, 527, 0, 3510, 508, 1, 0, 0, 0, 3511, 3512, + 3, 1075, 537, 0, 3512, 3513, 3, 1073, 536, 0, 3513, 3514, 3, 1051, 525, + 0, 3514, 3515, 3, 1069, 534, 0, 3515, 3516, 3, 1063, 531, 0, 3516, 3517, + 3, 1051, 525, 0, 3517, 3518, 3, 1067, 533, 0, 3518, 510, 1, 0, 0, 0, 3519, + 3520, 3, 1075, 537, 0, 3520, 3521, 3, 1073, 536, 0, 3521, 3522, 3, 1051, + 525, 0, 3522, 3523, 3, 1061, 530, 0, 3523, 3524, 3, 1047, 523, 0, 3524, + 3525, 3, 1073, 536, 0, 3525, 3526, 3, 1059, 529, 0, 3526, 3527, 3, 1055, + 527, 0, 3527, 512, 1, 0, 0, 0, 3528, 3529, 3, 1085, 542, 0, 3529, 3530, + 3, 1047, 523, 0, 3530, 3531, 3, 1049, 524, 0, 3531, 3532, 3, 1063, 531, + 0, 3532, 3533, 3, 1073, 536, 0, 3533, 3534, 3, 1053, 526, 0, 3534, 3535, + 3, 1055, 527, 0, 3535, 3536, 3, 1093, 546, 0, 3536, 514, 1, 0, 0, 0, 3537, + 3538, 3, 1061, 530, 0, 3538, 3539, 5, 49, 0, 0, 3539, 516, 1, 0, 0, 0, + 3540, 3541, 3, 1061, 530, 0, 3541, 3542, 5, 50, 0, 0, 3542, 518, 1, 0, + 0, 0, 3543, 3544, 3, 1061, 530, 0, 3544, 3545, 5, 51, 0, 0, 3545, 520, + 1, 0, 0, 0, 3546, 3547, 3, 1061, 530, 0, 3547, 3548, 5, 52, 0, 0, 3548, + 522, 1, 0, 0, 0, 3549, 3550, 3, 1061, 530, 0, 3550, 3551, 5, 53, 0, 0, + 3551, 524, 1, 0, 0, 0, 3552, 3553, 3, 1061, 530, 0, 3553, 3554, 5, 54, + 0, 0, 3554, 526, 1, 0, 0, 0, 3555, 3556, 3, 1077, 538, 0, 3556, 3557, 3, + 1047, 523, 0, 3557, 3558, 3, 1081, 540, 0, 3558, 3559, 3, 1047, 523, 0, + 3559, 3560, 3, 1059, 529, 0, 3560, 3561, 3, 1081, 540, 0, 3561, 3562, 3, + 1047, 523, 0, 3562, 3563, 3, 1077, 538, 0, 3563, 3564, 3, 1061, 530, 0, + 3564, 528, 1, 0, 0, 0, 3565, 3566, 3, 1083, 541, 0, 3566, 3567, 3, 1085, + 542, 0, 3567, 3568, 3, 1081, 540, 0, 3568, 3569, 3, 1063, 531, 0, 3569, + 3570, 3, 1073, 536, 0, 3570, 3571, 3, 1059, 529, 0, 3571, 530, 1, 0, 0, + 0, 3572, 3573, 3, 1063, 531, 0, 3573, 3574, 3, 1073, 536, 0, 3574, 3575, + 3, 1085, 542, 0, 3575, 3576, 3, 1055, 527, 0, 3576, 3577, 3, 1059, 529, + 0, 3577, 3578, 3, 1055, 527, 0, 3578, 3579, 3, 1081, 540, 0, 3579, 532, + 1, 0, 0, 0, 3580, 3581, 3, 1069, 534, 0, 3581, 3582, 3, 1075, 537, 0, 3582, + 3583, 3, 1073, 536, 0, 3583, 3584, 3, 1059, 529, 0, 3584, 534, 1, 0, 0, + 0, 3585, 3586, 3, 1053, 526, 0, 3586, 3587, 3, 1055, 527, 0, 3587, 3588, + 3, 1051, 525, 0, 3588, 3589, 3, 1063, 531, 0, 3589, 3590, 3, 1071, 535, + 0, 3590, 3591, 3, 1047, 523, 0, 3591, 3592, 3, 1069, 534, 0, 3592, 536, + 1, 0, 0, 0, 3593, 3594, 3, 1049, 524, 0, 3594, 3595, 3, 1075, 537, 0, 3595, + 3596, 3, 1075, 537, 0, 3596, 3597, 3, 1069, 534, 0, 3597, 3598, 3, 1055, + 527, 0, 3598, 3599, 3, 1047, 523, 0, 3599, 3600, 3, 1073, 536, 0, 3600, + 538, 1, 0, 0, 0, 3601, 3602, 3, 1053, 526, 0, 3602, 3603, 3, 1047, 523, + 0, 3603, 3604, 3, 1085, 542, 0, 3604, 3605, 3, 1055, 527, 0, 3605, 3606, + 3, 1085, 542, 0, 3606, 3607, 3, 1063, 531, 0, 3607, 3608, 3, 1071, 535, + 0, 3608, 3609, 3, 1055, 527, 0, 3609, 540, 1, 0, 0, 0, 3610, 3611, 3, 1053, + 526, 0, 3611, 3612, 3, 1047, 523, 0, 3612, 3613, 3, 1085, 542, 0, 3613, + 3614, 3, 1055, 527, 0, 3614, 542, 1, 0, 0, 0, 3615, 3616, 3, 1047, 523, + 0, 3616, 3617, 3, 1087, 543, 0, 3617, 3618, 3, 1085, 542, 0, 3618, 3619, + 3, 1075, 537, 0, 3619, 3620, 3, 1073, 536, 0, 3620, 3621, 3, 1087, 543, + 0, 3621, 3622, 3, 1071, 535, 0, 3622, 3623, 3, 1049, 524, 0, 3623, 3624, + 3, 1055, 527, 0, 3624, 3625, 3, 1081, 540, 0, 3625, 544, 1, 0, 0, 0, 3626, + 3627, 3, 1049, 524, 0, 3627, 3628, 3, 1063, 531, 0, 3628, 3629, 3, 1073, + 536, 0, 3629, 3630, 3, 1047, 523, 0, 3630, 3631, 3, 1081, 540, 0, 3631, + 3632, 3, 1095, 547, 0, 3632, 546, 1, 0, 0, 0, 3633, 3634, 3, 1061, 530, + 0, 3634, 3635, 3, 1047, 523, 0, 3635, 3636, 3, 1083, 541, 0, 3636, 3637, + 3, 1061, 530, 0, 3637, 3638, 3, 1055, 527, 0, 3638, 3639, 3, 1053, 526, + 0, 3639, 3640, 3, 1083, 541, 0, 3640, 3641, 3, 1085, 542, 0, 3641, 3642, + 3, 1081, 540, 0, 3642, 3643, 3, 1063, 531, 0, 3643, 3644, 3, 1073, 536, + 0, 3644, 3645, 3, 1059, 529, 0, 3645, 548, 1, 0, 0, 0, 3646, 3647, 3, 1051, + 525, 0, 3647, 3648, 3, 1087, 543, 0, 3648, 3649, 3, 1081, 540, 0, 3649, + 3650, 3, 1081, 540, 0, 3650, 3651, 3, 1055, 527, 0, 3651, 3652, 3, 1073, + 536, 0, 3652, 3653, 3, 1051, 525, 0, 3653, 3654, 3, 1095, 547, 0, 3654, + 550, 1, 0, 0, 0, 3655, 3656, 3, 1057, 528, 0, 3656, 3657, 3, 1069, 534, + 0, 3657, 3658, 3, 1075, 537, 0, 3658, 3659, 3, 1047, 523, 0, 3659, 3660, + 3, 1085, 542, 0, 3660, 552, 1, 0, 0, 0, 3661, 3662, 3, 1083, 541, 0, 3662, + 3663, 3, 1085, 542, 0, 3663, 3664, 3, 1081, 540, 0, 3664, 3665, 3, 1063, + 531, 0, 3665, 3666, 3, 1073, 536, 0, 3666, 3667, 3, 1059, 529, 0, 3667, + 3668, 3, 1085, 542, 0, 3668, 3669, 3, 1055, 527, 0, 3669, 3670, 3, 1071, + 535, 0, 3670, 3671, 3, 1077, 538, 0, 3671, 3672, 3, 1069, 534, 0, 3672, + 3673, 3, 1047, 523, 0, 3673, 3674, 3, 1085, 542, 0, 3674, 3675, 3, 1055, + 527, 0, 3675, 554, 1, 0, 0, 0, 3676, 3677, 3, 1055, 527, 0, 3677, 3678, + 3, 1073, 536, 0, 3678, 3679, 3, 1087, 543, 0, 3679, 3680, 3, 1071, 535, + 0, 3680, 556, 1, 0, 0, 0, 3681, 3682, 3, 1051, 525, 0, 3682, 3683, 3, 1075, + 537, 0, 3683, 3684, 3, 1087, 543, 0, 3684, 3685, 3, 1073, 536, 0, 3685, + 3686, 3, 1085, 542, 0, 3686, 558, 1, 0, 0, 0, 3687, 3688, 3, 1083, 541, + 0, 3688, 3689, 3, 1087, 543, 0, 3689, 3690, 3, 1071, 535, 0, 3690, 560, + 1, 0, 0, 0, 3691, 3692, 3, 1047, 523, 0, 3692, 3693, 3, 1089, 544, 0, 3693, + 3694, 3, 1059, 529, 0, 3694, 562, 1, 0, 0, 0, 3695, 3696, 3, 1071, 535, + 0, 3696, 3697, 3, 1063, 531, 0, 3697, 3698, 3, 1073, 536, 0, 3698, 564, + 1, 0, 0, 0, 3699, 3700, 3, 1071, 535, 0, 3700, 3701, 3, 1047, 523, 0, 3701, + 3702, 3, 1093, 546, 0, 3702, 566, 1, 0, 0, 0, 3703, 3704, 3, 1069, 534, + 0, 3704, 3705, 3, 1055, 527, 0, 3705, 3706, 3, 1073, 536, 0, 3706, 3707, + 3, 1059, 529, 0, 3707, 3708, 3, 1085, 542, 0, 3708, 3709, 3, 1061, 530, + 0, 3709, 568, 1, 0, 0, 0, 3710, 3711, 3, 1085, 542, 0, 3711, 3712, 3, 1081, + 540, 0, 3712, 3713, 3, 1063, 531, 0, 3713, 3714, 3, 1071, 535, 0, 3714, + 570, 1, 0, 0, 0, 3715, 3716, 3, 1051, 525, 0, 3716, 3717, 3, 1075, 537, + 0, 3717, 3718, 3, 1047, 523, 0, 3718, 3719, 3, 1069, 534, 0, 3719, 3720, + 3, 1055, 527, 0, 3720, 3721, 3, 1083, 541, 0, 3721, 3722, 3, 1051, 525, + 0, 3722, 3723, 3, 1055, 527, 0, 3723, 572, 1, 0, 0, 0, 3724, 3725, 3, 1051, + 525, 0, 3725, 3726, 3, 1047, 523, 0, 3726, 3727, 3, 1083, 541, 0, 3727, + 3728, 3, 1085, 542, 0, 3728, 574, 1, 0, 0, 0, 3729, 3730, 3, 1047, 523, + 0, 3730, 3731, 3, 1073, 536, 0, 3731, 3732, 3, 1053, 526, 0, 3732, 576, + 1, 0, 0, 0, 3733, 3734, 3, 1075, 537, 0, 3734, 3735, 3, 1081, 540, 0, 3735, + 578, 1, 0, 0, 0, 3736, 3737, 3, 1073, 536, 0, 3737, 3738, 3, 1075, 537, + 0, 3738, 3739, 3, 1085, 542, 0, 3739, 580, 1, 0, 0, 0, 3740, 3741, 3, 1073, + 536, 0, 3741, 3742, 3, 1087, 543, 0, 3742, 3743, 3, 1069, 534, 0, 3743, + 3744, 3, 1069, 534, 0, 3744, 582, 1, 0, 0, 0, 3745, 3746, 3, 1063, 531, + 0, 3746, 3747, 3, 1073, 536, 0, 3747, 584, 1, 0, 0, 0, 3748, 3749, 3, 1049, + 524, 0, 3749, 3750, 3, 1055, 527, 0, 3750, 3751, 3, 1085, 542, 0, 3751, + 3752, 3, 1091, 545, 0, 3752, 3753, 3, 1055, 527, 0, 3753, 3754, 3, 1055, + 527, 0, 3754, 3755, 3, 1073, 536, 0, 3755, 586, 1, 0, 0, 0, 3756, 3757, + 3, 1069, 534, 0, 3757, 3758, 3, 1063, 531, 0, 3758, 3759, 3, 1067, 533, + 0, 3759, 3760, 3, 1055, 527, 0, 3760, 588, 1, 0, 0, 0, 3761, 3762, 3, 1071, + 535, 0, 3762, 3763, 3, 1047, 523, 0, 3763, 3764, 3, 1085, 542, 0, 3764, + 3765, 3, 1051, 525, 0, 3765, 3766, 3, 1061, 530, 0, 3766, 590, 1, 0, 0, + 0, 3767, 3768, 3, 1055, 527, 0, 3768, 3769, 3, 1093, 546, 0, 3769, 3770, + 3, 1063, 531, 0, 3770, 3771, 3, 1083, 541, 0, 3771, 3772, 3, 1085, 542, + 0, 3772, 3773, 3, 1083, 541, 0, 3773, 592, 1, 0, 0, 0, 3774, 3775, 3, 1087, + 543, 0, 3775, 3776, 3, 1073, 536, 0, 3776, 3777, 3, 1063, 531, 0, 3777, + 3778, 3, 1079, 539, 0, 3778, 3779, 3, 1087, 543, 0, 3779, 3780, 3, 1055, + 527, 0, 3780, 594, 1, 0, 0, 0, 3781, 3782, 3, 1053, 526, 0, 3782, 3783, + 3, 1055, 527, 0, 3783, 3784, 3, 1057, 528, 0, 3784, 3785, 3, 1047, 523, + 0, 3785, 3786, 3, 1087, 543, 0, 3786, 3787, 3, 1069, 534, 0, 3787, 3788, + 3, 1085, 542, 0, 3788, 596, 1, 0, 0, 0, 3789, 3790, 3, 1085, 542, 0, 3790, + 3791, 3, 1081, 540, 0, 3791, 3792, 3, 1087, 543, 0, 3792, 3793, 3, 1055, + 527, 0, 3793, 598, 1, 0, 0, 0, 3794, 3795, 3, 1057, 528, 0, 3795, 3796, + 3, 1047, 523, 0, 3796, 3797, 3, 1069, 534, 0, 3797, 3798, 3, 1083, 541, + 0, 3798, 3799, 3, 1055, 527, 0, 3799, 600, 1, 0, 0, 0, 3800, 3801, 3, 1089, + 544, 0, 3801, 3802, 3, 1047, 523, 0, 3802, 3803, 3, 1069, 534, 0, 3803, + 3804, 3, 1063, 531, 0, 3804, 3805, 3, 1053, 526, 0, 3805, 3806, 3, 1047, + 523, 0, 3806, 3807, 3, 1085, 542, 0, 3807, 3808, 3, 1063, 531, 0, 3808, + 3809, 3, 1075, 537, 0, 3809, 3810, 3, 1073, 536, 0, 3810, 602, 1, 0, 0, + 0, 3811, 3812, 3, 1057, 528, 0, 3812, 3813, 3, 1055, 527, 0, 3813, 3814, + 3, 1055, 527, 0, 3814, 3815, 3, 1053, 526, 0, 3815, 3816, 3, 1049, 524, + 0, 3816, 3817, 3, 1047, 523, 0, 3817, 3818, 3, 1051, 525, 0, 3818, 3819, + 3, 1067, 533, 0, 3819, 604, 1, 0, 0, 0, 3820, 3821, 3, 1081, 540, 0, 3821, + 3822, 3, 1087, 543, 0, 3822, 3823, 3, 1069, 534, 0, 3823, 3824, 3, 1055, + 527, 0, 3824, 606, 1, 0, 0, 0, 3825, 3826, 3, 1081, 540, 0, 3826, 3827, + 3, 1055, 527, 0, 3827, 3828, 3, 1079, 539, 0, 3828, 3829, 3, 1087, 543, + 0, 3829, 3830, 3, 1063, 531, 0, 3830, 3831, 3, 1081, 540, 0, 3831, 3832, + 3, 1055, 527, 0, 3832, 3833, 3, 1053, 526, 0, 3833, 608, 1, 0, 0, 0, 3834, + 3835, 3, 1055, 527, 0, 3835, 3836, 3, 1081, 540, 0, 3836, 3837, 3, 1081, + 540, 0, 3837, 3838, 3, 1075, 537, 0, 3838, 3839, 3, 1081, 540, 0, 3839, + 610, 1, 0, 0, 0, 3840, 3841, 3, 1081, 540, 0, 3841, 3842, 3, 1047, 523, + 0, 3842, 3843, 3, 1063, 531, 0, 3843, 3844, 3, 1083, 541, 0, 3844, 3845, + 3, 1055, 527, 0, 3845, 612, 1, 0, 0, 0, 3846, 3847, 3, 1081, 540, 0, 3847, + 3848, 3, 1047, 523, 0, 3848, 3849, 3, 1073, 536, 0, 3849, 3850, 3, 1059, + 529, 0, 3850, 3851, 3, 1055, 527, 0, 3851, 614, 1, 0, 0, 0, 3852, 3853, + 3, 1081, 540, 0, 3853, 3854, 3, 1055, 527, 0, 3854, 3855, 3, 1059, 529, + 0, 3855, 3856, 3, 1055, 527, 0, 3856, 3857, 3, 1093, 546, 0, 3857, 616, + 1, 0, 0, 0, 3858, 3859, 3, 1077, 538, 0, 3859, 3860, 3, 1047, 523, 0, 3860, + 3861, 3, 1085, 542, 0, 3861, 3862, 3, 1085, 542, 0, 3862, 3863, 3, 1055, + 527, 0, 3863, 3864, 3, 1081, 540, 0, 3864, 3865, 3, 1073, 536, 0, 3865, + 618, 1, 0, 0, 0, 3866, 3867, 3, 1055, 527, 0, 3867, 3868, 3, 1093, 546, + 0, 3868, 3869, 3, 1077, 538, 0, 3869, 3870, 3, 1081, 540, 0, 3870, 3871, + 3, 1055, 527, 0, 3871, 3872, 3, 1083, 541, 0, 3872, 3873, 3, 1083, 541, + 0, 3873, 3874, 3, 1063, 531, 0, 3874, 3875, 3, 1075, 537, 0, 3875, 3876, + 3, 1073, 536, 0, 3876, 620, 1, 0, 0, 0, 3877, 3878, 3, 1093, 546, 0, 3878, + 3879, 3, 1077, 538, 0, 3879, 3880, 3, 1047, 523, 0, 3880, 3881, 3, 1085, + 542, 0, 3881, 3882, 3, 1061, 530, 0, 3882, 622, 1, 0, 0, 0, 3883, 3884, + 3, 1051, 525, 0, 3884, 3885, 3, 1075, 537, 0, 3885, 3886, 3, 1073, 536, + 0, 3886, 3887, 3, 1083, 541, 0, 3887, 3888, 3, 1085, 542, 0, 3888, 3889, + 3, 1081, 540, 0, 3889, 3890, 3, 1047, 523, 0, 3890, 3891, 3, 1063, 531, + 0, 3891, 3892, 3, 1073, 536, 0, 3892, 3893, 3, 1085, 542, 0, 3893, 624, + 1, 0, 0, 0, 3894, 3895, 3, 1051, 525, 0, 3895, 3896, 3, 1047, 523, 0, 3896, + 3897, 3, 1069, 534, 0, 3897, 3898, 3, 1051, 525, 0, 3898, 3899, 3, 1087, + 543, 0, 3899, 3900, 3, 1069, 534, 0, 3900, 3901, 3, 1047, 523, 0, 3901, + 3902, 3, 1085, 542, 0, 3902, 3903, 3, 1055, 527, 0, 3903, 3904, 3, 1053, + 526, 0, 3904, 626, 1, 0, 0, 0, 3905, 3906, 3, 1081, 540, 0, 3906, 3907, + 3, 1055, 527, 0, 3907, 3908, 3, 1083, 541, 0, 3908, 3909, 3, 1085, 542, + 0, 3909, 628, 1, 0, 0, 0, 3910, 3911, 3, 1083, 541, 0, 3911, 3912, 3, 1055, + 527, 0, 3912, 3913, 3, 1081, 540, 0, 3913, 3914, 3, 1089, 544, 0, 3914, + 3915, 3, 1063, 531, 0, 3915, 3916, 3, 1051, 525, 0, 3916, 3917, 3, 1055, + 527, 0, 3917, 630, 1, 0, 0, 0, 3918, 3919, 3, 1083, 541, 0, 3919, 3920, + 3, 1055, 527, 0, 3920, 3921, 3, 1081, 540, 0, 3921, 3922, 3, 1089, 544, + 0, 3922, 3923, 3, 1063, 531, 0, 3923, 3924, 3, 1051, 525, 0, 3924, 3925, + 3, 1055, 527, 0, 3925, 3926, 3, 1083, 541, 0, 3926, 632, 1, 0, 0, 0, 3927, + 3928, 3, 1075, 537, 0, 3928, 3929, 3, 1053, 526, 0, 3929, 3930, 3, 1047, + 523, 0, 3930, 3931, 3, 1085, 542, 0, 3931, 3932, 3, 1047, 523, 0, 3932, + 634, 1, 0, 0, 0, 3933, 3934, 3, 1049, 524, 0, 3934, 3935, 3, 1047, 523, + 0, 3935, 3936, 3, 1083, 541, 0, 3936, 3937, 3, 1055, 527, 0, 3937, 636, + 1, 0, 0, 0, 3938, 3939, 3, 1047, 523, 0, 3939, 3940, 3, 1087, 543, 0, 3940, + 3941, 3, 1085, 542, 0, 3941, 3942, 3, 1061, 530, 0, 3942, 638, 1, 0, 0, + 0, 3943, 3944, 3, 1047, 523, 0, 3944, 3945, 3, 1087, 543, 0, 3945, 3946, + 3, 1085, 542, 0, 3946, 3947, 3, 1061, 530, 0, 3947, 3948, 3, 1055, 527, + 0, 3948, 3949, 3, 1073, 536, 0, 3949, 3950, 3, 1085, 542, 0, 3950, 3951, + 3, 1063, 531, 0, 3951, 3952, 3, 1051, 525, 0, 3952, 3953, 3, 1047, 523, + 0, 3953, 3954, 3, 1085, 542, 0, 3954, 3955, 3, 1063, 531, 0, 3955, 3956, + 3, 1075, 537, 0, 3956, 3957, 3, 1073, 536, 0, 3957, 640, 1, 0, 0, 0, 3958, + 3959, 3, 1049, 524, 0, 3959, 3960, 3, 1047, 523, 0, 3960, 3961, 3, 1083, + 541, 0, 3961, 3962, 3, 1063, 531, 0, 3962, 3963, 3, 1051, 525, 0, 3963, + 642, 1, 0, 0, 0, 3964, 3965, 3, 1073, 536, 0, 3965, 3966, 3, 1075, 537, + 0, 3966, 3967, 3, 1085, 542, 0, 3967, 3968, 3, 1061, 530, 0, 3968, 3969, + 3, 1063, 531, 0, 3969, 3970, 3, 1073, 536, 0, 3970, 3971, 3, 1059, 529, + 0, 3971, 644, 1, 0, 0, 0, 3972, 3973, 3, 1075, 537, 0, 3973, 3974, 3, 1047, + 523, 0, 3974, 3975, 3, 1087, 543, 0, 3975, 3976, 3, 1085, 542, 0, 3976, + 3977, 3, 1061, 530, 0, 3977, 646, 1, 0, 0, 0, 3978, 3979, 3, 1075, 537, + 0, 3979, 3980, 3, 1077, 538, 0, 3980, 3981, 3, 1055, 527, 0, 3981, 3982, + 3, 1081, 540, 0, 3982, 3983, 3, 1047, 523, 0, 3983, 3984, 3, 1085, 542, + 0, 3984, 3985, 3, 1063, 531, 0, 3985, 3986, 3, 1075, 537, 0, 3986, 3987, + 3, 1073, 536, 0, 3987, 648, 1, 0, 0, 0, 3988, 3989, 3, 1071, 535, 0, 3989, + 3990, 3, 1055, 527, 0, 3990, 3991, 3, 1085, 542, 0, 3991, 3992, 3, 1061, + 530, 0, 3992, 3993, 3, 1075, 537, 0, 3993, 3994, 3, 1053, 526, 0, 3994, + 650, 1, 0, 0, 0, 3995, 3996, 3, 1077, 538, 0, 3996, 3997, 3, 1047, 523, + 0, 3997, 3998, 3, 1085, 542, 0, 3998, 3999, 3, 1061, 530, 0, 3999, 652, + 1, 0, 0, 0, 4000, 4001, 3, 1085, 542, 0, 4001, 4002, 3, 1063, 531, 0, 4002, + 4003, 3, 1071, 535, 0, 4003, 4004, 3, 1055, 527, 0, 4004, 4005, 3, 1075, + 537, 0, 4005, 4006, 3, 1087, 543, 0, 4006, 4007, 3, 1085, 542, 0, 4007, + 654, 1, 0, 0, 0, 4008, 4009, 3, 1049, 524, 0, 4009, 4010, 3, 1075, 537, + 0, 4010, 4011, 3, 1053, 526, 0, 4011, 4012, 3, 1095, 547, 0, 4012, 656, + 1, 0, 0, 0, 4013, 4014, 3, 1081, 540, 0, 4014, 4015, 3, 1055, 527, 0, 4015, + 4016, 3, 1083, 541, 0, 4016, 4017, 3, 1077, 538, 0, 4017, 4018, 3, 1075, + 537, 0, 4018, 4019, 3, 1073, 536, 0, 4019, 4020, 3, 1083, 541, 0, 4020, + 4021, 3, 1055, 527, 0, 4021, 658, 1, 0, 0, 0, 4022, 4023, 3, 1081, 540, + 0, 4023, 4024, 3, 1055, 527, 0, 4024, 4025, 3, 1079, 539, 0, 4025, 4026, + 3, 1087, 543, 0, 4026, 4027, 3, 1055, 527, 0, 4027, 4028, 3, 1083, 541, + 0, 4028, 4029, 3, 1085, 542, 0, 4029, 660, 1, 0, 0, 0, 4030, 4031, 3, 1083, + 541, 0, 4031, 4032, 3, 1055, 527, 0, 4032, 4033, 3, 1073, 536, 0, 4033, + 4034, 3, 1053, 526, 0, 4034, 662, 1, 0, 0, 0, 4035, 4036, 3, 1065, 532, + 0, 4036, 4037, 3, 1083, 541, 0, 4037, 4038, 3, 1075, 537, 0, 4038, 4039, + 3, 1073, 536, 0, 4039, 664, 1, 0, 0, 0, 4040, 4041, 3, 1093, 546, 0, 4041, + 4042, 3, 1071, 535, 0, 4042, 4043, 3, 1069, 534, 0, 4043, 666, 1, 0, 0, + 0, 4044, 4045, 3, 1083, 541, 0, 4045, 4046, 3, 1085, 542, 0, 4046, 4047, + 3, 1047, 523, 0, 4047, 4048, 3, 1085, 542, 0, 4048, 4049, 3, 1087, 543, + 0, 4049, 4050, 3, 1083, 541, 0, 4050, 668, 1, 0, 0, 0, 4051, 4052, 3, 1057, + 528, 0, 4052, 4053, 3, 1063, 531, 0, 4053, 4054, 3, 1069, 534, 0, 4054, + 4055, 3, 1055, 527, 0, 4055, 670, 1, 0, 0, 0, 4056, 4057, 3, 1089, 544, + 0, 4057, 4058, 3, 1055, 527, 0, 4058, 4059, 3, 1081, 540, 0, 4059, 4060, + 3, 1083, 541, 0, 4060, 4061, 3, 1063, 531, 0, 4061, 4062, 3, 1075, 537, + 0, 4062, 4063, 3, 1073, 536, 0, 4063, 672, 1, 0, 0, 0, 4064, 4065, 3, 1059, + 529, 0, 4065, 4066, 3, 1055, 527, 0, 4066, 4067, 3, 1085, 542, 0, 4067, + 674, 1, 0, 0, 0, 4068, 4069, 3, 1077, 538, 0, 4069, 4070, 3, 1075, 537, + 0, 4070, 4071, 3, 1083, 541, 0, 4071, 4072, 3, 1085, 542, 0, 4072, 676, + 1, 0, 0, 0, 4073, 4074, 3, 1077, 538, 0, 4074, 4075, 3, 1087, 543, 0, 4075, + 4076, 3, 1085, 542, 0, 4076, 678, 1, 0, 0, 0, 4077, 4078, 3, 1077, 538, + 0, 4078, 4079, 3, 1047, 523, 0, 4079, 4080, 3, 1085, 542, 0, 4080, 4081, + 3, 1051, 525, 0, 4081, 4082, 3, 1061, 530, 0, 4082, 680, 1, 0, 0, 0, 4083, + 4084, 3, 1047, 523, 0, 4084, 4085, 3, 1077, 538, 0, 4085, 4086, 3, 1063, + 531, 0, 4086, 682, 1, 0, 0, 0, 4087, 4088, 3, 1051, 525, 0, 4088, 4089, + 3, 1069, 534, 0, 4089, 4090, 3, 1063, 531, 0, 4090, 4091, 3, 1055, 527, + 0, 4091, 4092, 3, 1073, 536, 0, 4092, 4093, 3, 1085, 542, 0, 4093, 684, + 1, 0, 0, 0, 4094, 4095, 3, 1051, 525, 0, 4095, 4096, 3, 1069, 534, 0, 4096, + 4097, 3, 1063, 531, 0, 4097, 4098, 3, 1055, 527, 0, 4098, 4099, 3, 1073, + 536, 0, 4099, 4100, 3, 1085, 542, 0, 4100, 4101, 3, 1083, 541, 0, 4101, + 686, 1, 0, 0, 0, 4102, 4103, 3, 1077, 538, 0, 4103, 4104, 3, 1087, 543, + 0, 4104, 4105, 3, 1049, 524, 0, 4105, 4106, 3, 1069, 534, 0, 4106, 4107, + 3, 1063, 531, 0, 4107, 4108, 3, 1083, 541, 0, 4108, 4109, 3, 1061, 530, + 0, 4109, 688, 1, 0, 0, 0, 4110, 4111, 3, 1077, 538, 0, 4111, 4112, 3, 1087, + 543, 0, 4112, 4113, 3, 1049, 524, 0, 4113, 4114, 3, 1069, 534, 0, 4114, + 4115, 3, 1063, 531, 0, 4115, 4116, 3, 1083, 541, 0, 4116, 4117, 3, 1061, + 530, 0, 4117, 4118, 3, 1055, 527, 0, 4118, 4119, 3, 1053, 526, 0, 4119, + 690, 1, 0, 0, 0, 4120, 4121, 3, 1055, 527, 0, 4121, 4122, 3, 1093, 546, + 0, 4122, 4123, 3, 1077, 538, 0, 4123, 4124, 3, 1075, 537, 0, 4124, 4125, + 3, 1083, 541, 0, 4125, 4126, 3, 1055, 527, 0, 4126, 692, 1, 0, 0, 0, 4127, + 4128, 3, 1051, 525, 0, 4128, 4129, 3, 1075, 537, 0, 4129, 4130, 3, 1073, + 536, 0, 4130, 4131, 3, 1085, 542, 0, 4131, 4132, 3, 1081, 540, 0, 4132, + 4133, 3, 1047, 523, 0, 4133, 4134, 3, 1051, 525, 0, 4134, 4135, 3, 1085, + 542, 0, 4135, 694, 1, 0, 0, 0, 4136, 4137, 3, 1073, 536, 0, 4137, 4138, + 3, 1047, 523, 0, 4138, 4139, 3, 1071, 535, 0, 4139, 4140, 3, 1055, 527, + 0, 4140, 4141, 3, 1083, 541, 0, 4141, 4142, 3, 1077, 538, 0, 4142, 4143, + 3, 1047, 523, 0, 4143, 4144, 3, 1051, 525, 0, 4144, 4145, 3, 1055, 527, + 0, 4145, 696, 1, 0, 0, 0, 4146, 4147, 3, 1083, 541, 0, 4147, 4148, 3, 1055, + 527, 0, 4148, 4149, 3, 1083, 541, 0, 4149, 4150, 3, 1083, 541, 0, 4150, + 4151, 3, 1063, 531, 0, 4151, 4152, 3, 1075, 537, 0, 4152, 4153, 3, 1073, + 536, 0, 4153, 698, 1, 0, 0, 0, 4154, 4155, 3, 1059, 529, 0, 4155, 4156, + 3, 1087, 543, 0, 4156, 4157, 3, 1055, 527, 0, 4157, 4158, 3, 1083, 541, + 0, 4158, 4159, 3, 1085, 542, 0, 4159, 700, 1, 0, 0, 0, 4160, 4161, 3, 1077, + 538, 0, 4161, 4162, 3, 1047, 523, 0, 4162, 4163, 3, 1059, 529, 0, 4163, + 4164, 3, 1063, 531, 0, 4164, 4165, 3, 1073, 536, 0, 4165, 4166, 3, 1059, + 529, 0, 4166, 702, 1, 0, 0, 0, 4167, 4168, 3, 1073, 536, 0, 4168, 4169, + 3, 1075, 537, 0, 4169, 4170, 3, 1085, 542, 0, 4170, 4171, 5, 95, 0, 0, + 4171, 4172, 3, 1083, 541, 0, 4172, 4173, 3, 1087, 543, 0, 4173, 4174, 3, + 1077, 538, 0, 4174, 4175, 3, 1077, 538, 0, 4175, 4176, 3, 1075, 537, 0, + 4176, 4177, 3, 1081, 540, 0, 4177, 4178, 3, 1085, 542, 0, 4178, 4179, 3, + 1055, 527, 0, 4179, 4180, 3, 1053, 526, 0, 4180, 704, 1, 0, 0, 0, 4181, + 4182, 3, 1087, 543, 0, 4182, 4183, 3, 1083, 541, 0, 4183, 4184, 3, 1055, + 527, 0, 4184, 4185, 3, 1081, 540, 0, 4185, 4186, 3, 1073, 536, 0, 4186, + 4187, 3, 1047, 523, 0, 4187, 4188, 3, 1071, 535, 0, 4188, 4189, 3, 1055, + 527, 0, 4189, 706, 1, 0, 0, 0, 4190, 4191, 3, 1077, 538, 0, 4191, 4192, + 3, 1047, 523, 0, 4192, 4193, 3, 1083, 541, 0, 4193, 4194, 3, 1083, 541, + 0, 4194, 4195, 3, 1091, 545, 0, 4195, 4196, 3, 1075, 537, 0, 4196, 4197, + 3, 1081, 540, 0, 4197, 4198, 3, 1053, 526, 0, 4198, 708, 1, 0, 0, 0, 4199, + 4200, 3, 1051, 525, 0, 4200, 4201, 3, 1075, 537, 0, 4201, 4202, 3, 1073, + 536, 0, 4202, 4203, 3, 1073, 536, 0, 4203, 4204, 3, 1055, 527, 0, 4204, + 4205, 3, 1051, 525, 0, 4205, 4206, 3, 1085, 542, 0, 4206, 4207, 3, 1063, + 531, 0, 4207, 4208, 3, 1075, 537, 0, 4208, 4209, 3, 1073, 536, 0, 4209, + 710, 1, 0, 0, 0, 4210, 4211, 3, 1053, 526, 0, 4211, 4212, 3, 1047, 523, + 0, 4212, 4213, 3, 1085, 542, 0, 4213, 4214, 3, 1047, 523, 0, 4214, 4215, + 3, 1049, 524, 0, 4215, 4216, 3, 1047, 523, 0, 4216, 4217, 3, 1083, 541, + 0, 4217, 4218, 3, 1055, 527, 0, 4218, 712, 1, 0, 0, 0, 4219, 4220, 3, 1079, + 539, 0, 4220, 4221, 3, 1087, 543, 0, 4221, 4222, 3, 1055, 527, 0, 4222, + 4223, 3, 1081, 540, 0, 4223, 4224, 3, 1095, 547, 0, 4224, 714, 1, 0, 0, + 0, 4225, 4226, 3, 1071, 535, 0, 4226, 4227, 3, 1047, 523, 0, 4227, 4228, + 3, 1077, 538, 0, 4228, 716, 1, 0, 0, 0, 4229, 4230, 3, 1071, 535, 0, 4230, + 4231, 3, 1047, 523, 0, 4231, 4232, 3, 1077, 538, 0, 4232, 4233, 3, 1077, + 538, 0, 4233, 4234, 3, 1063, 531, 0, 4234, 4235, 3, 1073, 536, 0, 4235, + 4236, 3, 1059, 529, 0, 4236, 718, 1, 0, 0, 0, 4237, 4238, 3, 1063, 531, + 0, 4238, 4239, 3, 1071, 535, 0, 4239, 4240, 3, 1077, 538, 0, 4240, 4241, + 3, 1075, 537, 0, 4241, 4242, 3, 1081, 540, 0, 4242, 4243, 3, 1085, 542, + 0, 4243, 720, 1, 0, 0, 0, 4244, 4245, 3, 1063, 531, 0, 4245, 4246, 3, 1073, + 536, 0, 4246, 4247, 3, 1085, 542, 0, 4247, 4248, 3, 1075, 537, 0, 4248, + 722, 1, 0, 0, 0, 4249, 4250, 3, 1049, 524, 0, 4250, 4251, 3, 1047, 523, + 0, 4251, 4252, 3, 1085, 542, 0, 4252, 4253, 3, 1051, 525, 0, 4253, 4254, + 3, 1061, 530, 0, 4254, 724, 1, 0, 0, 0, 4255, 4256, 3, 1069, 534, 0, 4256, + 4257, 3, 1063, 531, 0, 4257, 4258, 3, 1073, 536, 0, 4258, 4259, 3, 1067, + 533, 0, 4259, 726, 1, 0, 0, 0, 4260, 4261, 3, 1055, 527, 0, 4261, 4262, + 3, 1093, 546, 0, 4262, 4263, 3, 1077, 538, 0, 4263, 4264, 3, 1075, 537, + 0, 4264, 4265, 3, 1081, 540, 0, 4265, 4266, 3, 1085, 542, 0, 4266, 728, + 1, 0, 0, 0, 4267, 4268, 3, 1059, 529, 0, 4268, 4269, 3, 1055, 527, 0, 4269, + 4270, 3, 1073, 536, 0, 4270, 4271, 3, 1055, 527, 0, 4271, 4272, 3, 1081, + 540, 0, 4272, 4273, 3, 1047, 523, 0, 4273, 4274, 3, 1085, 542, 0, 4274, + 4275, 3, 1055, 527, 0, 4275, 730, 1, 0, 0, 0, 4276, 4277, 3, 1051, 525, + 0, 4277, 4278, 3, 1075, 537, 0, 4278, 4279, 3, 1073, 536, 0, 4279, 4280, + 3, 1073, 536, 0, 4280, 4281, 3, 1055, 527, 0, 4281, 4282, 3, 1051, 525, + 0, 4282, 4283, 3, 1085, 542, 0, 4283, 4284, 3, 1075, 537, 0, 4284, 4285, + 3, 1081, 540, 0, 4285, 732, 1, 0, 0, 0, 4286, 4287, 3, 1055, 527, 0, 4287, + 4288, 3, 1093, 546, 0, 4288, 4289, 3, 1055, 527, 0, 4289, 4290, 3, 1051, + 525, 0, 4290, 734, 1, 0, 0, 0, 4291, 4292, 3, 1085, 542, 0, 4292, 4293, + 3, 1047, 523, 0, 4293, 4294, 3, 1049, 524, 0, 4294, 4295, 3, 1069, 534, + 0, 4295, 4296, 3, 1055, 527, 0, 4296, 4297, 3, 1083, 541, 0, 4297, 736, + 1, 0, 0, 0, 4298, 4299, 3, 1089, 544, 0, 4299, 4300, 3, 1063, 531, 0, 4300, + 4301, 3, 1055, 527, 0, 4301, 4302, 3, 1091, 545, 0, 4302, 4303, 3, 1083, + 541, 0, 4303, 738, 1, 0, 0, 0, 4304, 4305, 3, 1055, 527, 0, 4305, 4306, + 3, 1093, 546, 0, 4306, 4307, 3, 1077, 538, 0, 4307, 4308, 3, 1075, 537, + 0, 4308, 4309, 3, 1083, 541, 0, 4309, 4310, 3, 1055, 527, 0, 4310, 4311, + 3, 1053, 526, 0, 4311, 740, 1, 0, 0, 0, 4312, 4313, 3, 1077, 538, 0, 4313, + 4314, 3, 1047, 523, 0, 4314, 4315, 3, 1081, 540, 0, 4315, 4316, 3, 1047, + 523, 0, 4316, 4317, 3, 1071, 535, 0, 4317, 4318, 3, 1055, 527, 0, 4318, + 4319, 3, 1085, 542, 0, 4319, 4320, 3, 1055, 527, 0, 4320, 4321, 3, 1081, + 540, 0, 4321, 742, 1, 0, 0, 0, 4322, 4323, 3, 1077, 538, 0, 4323, 4324, + 3, 1047, 523, 0, 4324, 4325, 3, 1081, 540, 0, 4325, 4326, 3, 1047, 523, + 0, 4326, 4327, 3, 1071, 535, 0, 4327, 4328, 3, 1055, 527, 0, 4328, 4329, + 3, 1085, 542, 0, 4329, 4330, 3, 1055, 527, 0, 4330, 4331, 3, 1081, 540, + 0, 4331, 4332, 3, 1083, 541, 0, 4332, 744, 1, 0, 0, 0, 4333, 4334, 3, 1061, + 530, 0, 4334, 4335, 3, 1055, 527, 0, 4335, 4336, 3, 1047, 523, 0, 4336, + 4337, 3, 1053, 526, 0, 4337, 4338, 3, 1055, 527, 0, 4338, 4339, 3, 1081, + 540, 0, 4339, 4340, 3, 1083, 541, 0, 4340, 746, 1, 0, 0, 0, 4341, 4342, + 3, 1073, 536, 0, 4342, 4343, 3, 1047, 523, 0, 4343, 4344, 3, 1089, 544, + 0, 4344, 4345, 3, 1063, 531, 0, 4345, 4346, 3, 1059, 529, 0, 4346, 4347, + 3, 1047, 523, 0, 4347, 4348, 3, 1085, 542, 0, 4348, 4349, 3, 1063, 531, + 0, 4349, 4350, 3, 1075, 537, 0, 4350, 4351, 3, 1073, 536, 0, 4351, 748, + 1, 0, 0, 0, 4352, 4353, 3, 1071, 535, 0, 4353, 4354, 3, 1055, 527, 0, 4354, + 4355, 3, 1073, 536, 0, 4355, 4356, 3, 1087, 543, 0, 4356, 750, 1, 0, 0, + 0, 4357, 4358, 3, 1061, 530, 0, 4358, 4359, 3, 1075, 537, 0, 4359, 4360, + 3, 1071, 535, 0, 4360, 4361, 3, 1055, 527, 0, 4361, 4362, 3, 1083, 541, + 0, 4362, 752, 1, 0, 0, 0, 4363, 4364, 3, 1061, 530, 0, 4364, 4365, 3, 1075, + 537, 0, 4365, 4366, 3, 1071, 535, 0, 4366, 4367, 3, 1055, 527, 0, 4367, + 754, 1, 0, 0, 0, 4368, 4369, 3, 1069, 534, 0, 4369, 4370, 3, 1075, 537, + 0, 4370, 4371, 3, 1059, 529, 0, 4371, 4372, 3, 1063, 531, 0, 4372, 4373, + 3, 1073, 536, 0, 4373, 756, 1, 0, 0, 0, 4374, 4375, 3, 1057, 528, 0, 4375, + 4376, 3, 1075, 537, 0, 4376, 4377, 3, 1087, 543, 0, 4377, 4378, 3, 1073, + 536, 0, 4378, 4379, 3, 1053, 526, 0, 4379, 758, 1, 0, 0, 0, 4380, 4381, + 3, 1071, 535, 0, 4381, 4382, 3, 1075, 537, 0, 4382, 4383, 3, 1053, 526, + 0, 4383, 4384, 3, 1087, 543, 0, 4384, 4385, 3, 1069, 534, 0, 4385, 4386, + 3, 1055, 527, 0, 4386, 4387, 3, 1083, 541, 0, 4387, 760, 1, 0, 0, 0, 4388, + 4389, 3, 1055, 527, 0, 4389, 4390, 3, 1073, 536, 0, 4390, 4391, 3, 1085, + 542, 0, 4391, 4392, 3, 1063, 531, 0, 4392, 4393, 3, 1085, 542, 0, 4393, + 4394, 3, 1063, 531, 0, 4394, 4395, 3, 1055, 527, 0, 4395, 4396, 3, 1083, + 541, 0, 4396, 762, 1, 0, 0, 0, 4397, 4398, 3, 1047, 523, 0, 4398, 4399, + 3, 1083, 541, 0, 4399, 4400, 3, 1083, 541, 0, 4400, 4401, 3, 1075, 537, + 0, 4401, 4402, 3, 1051, 525, 0, 4402, 4403, 3, 1063, 531, 0, 4403, 4404, + 3, 1047, 523, 0, 4404, 4405, 3, 1085, 542, 0, 4405, 4406, 3, 1063, 531, + 0, 4406, 4407, 3, 1075, 537, 0, 4407, 4408, 3, 1073, 536, 0, 4408, 4409, + 3, 1083, 541, 0, 4409, 764, 1, 0, 0, 0, 4410, 4411, 3, 1071, 535, 0, 4411, + 4412, 3, 1063, 531, 0, 4412, 4413, 3, 1051, 525, 0, 4413, 4414, 3, 1081, + 540, 0, 4414, 4415, 3, 1075, 537, 0, 4415, 4416, 3, 1057, 528, 0, 4416, + 4417, 3, 1069, 534, 0, 4417, 4418, 3, 1075, 537, 0, 4418, 4419, 3, 1091, + 545, 0, 4419, 4420, 3, 1083, 541, 0, 4420, 766, 1, 0, 0, 0, 4421, 4422, + 3, 1073, 536, 0, 4422, 4423, 3, 1047, 523, 0, 4423, 4424, 3, 1073, 536, + 0, 4424, 4425, 3, 1075, 537, 0, 4425, 4426, 3, 1057, 528, 0, 4426, 4427, + 3, 1069, 534, 0, 4427, 4428, 3, 1075, 537, 0, 4428, 4429, 3, 1091, 545, + 0, 4429, 4430, 3, 1083, 541, 0, 4430, 768, 1, 0, 0, 0, 4431, 4432, 3, 1091, + 545, 0, 4432, 4433, 3, 1075, 537, 0, 4433, 4434, 3, 1081, 540, 0, 4434, + 4435, 3, 1067, 533, 0, 4435, 4436, 3, 1057, 528, 0, 4436, 4437, 3, 1069, + 534, 0, 4437, 4438, 3, 1075, 537, 0, 4438, 4439, 3, 1091, 545, 0, 4439, + 4440, 3, 1083, 541, 0, 4440, 770, 1, 0, 0, 0, 4441, 4442, 3, 1055, 527, + 0, 4442, 4443, 3, 1073, 536, 0, 4443, 4444, 3, 1087, 543, 0, 4444, 4445, + 3, 1071, 535, 0, 4445, 4446, 3, 1055, 527, 0, 4446, 4447, 3, 1081, 540, + 0, 4447, 4448, 3, 1047, 523, 0, 4448, 4449, 3, 1085, 542, 0, 4449, 4450, + 3, 1063, 531, 0, 4450, 4451, 3, 1075, 537, 0, 4451, 4452, 3, 1073, 536, + 0, 4452, 4453, 3, 1083, 541, 0, 4453, 772, 1, 0, 0, 0, 4454, 4455, 3, 1051, + 525, 0, 4455, 4456, 3, 1075, 537, 0, 4456, 4457, 3, 1073, 536, 0, 4457, + 4458, 3, 1083, 541, 0, 4458, 4459, 3, 1085, 542, 0, 4459, 4460, 3, 1047, + 523, 0, 4460, 4461, 3, 1073, 536, 0, 4461, 4462, 3, 1085, 542, 0, 4462, + 4463, 3, 1083, 541, 0, 4463, 774, 1, 0, 0, 0, 4464, 4465, 3, 1051, 525, + 0, 4465, 4466, 3, 1075, 537, 0, 4466, 4467, 3, 1073, 536, 0, 4467, 4468, + 3, 1073, 536, 0, 4468, 4469, 3, 1055, 527, 0, 4469, 4470, 3, 1051, 525, + 0, 4470, 4471, 3, 1085, 542, 0, 4471, 4472, 3, 1063, 531, 0, 4472, 4473, + 3, 1075, 537, 0, 4473, 4474, 3, 1073, 536, 0, 4474, 4475, 3, 1083, 541, + 0, 4475, 776, 1, 0, 0, 0, 4476, 4477, 3, 1053, 526, 0, 4477, 4478, 3, 1055, + 527, 0, 4478, 4479, 3, 1057, 528, 0, 4479, 4480, 3, 1063, 531, 0, 4480, + 4481, 3, 1073, 536, 0, 4481, 4482, 3, 1055, 527, 0, 4482, 778, 1, 0, 0, + 0, 4483, 4484, 3, 1057, 528, 0, 4484, 4485, 3, 1081, 540, 0, 4485, 4486, + 3, 1047, 523, 0, 4486, 4487, 3, 1059, 529, 0, 4487, 4488, 3, 1071, 535, + 0, 4488, 4489, 3, 1055, 527, 0, 4489, 4490, 3, 1073, 536, 0, 4490, 4491, + 3, 1085, 542, 0, 4491, 780, 1, 0, 0, 0, 4492, 4493, 3, 1057, 528, 0, 4493, + 4494, 3, 1081, 540, 0, 4494, 4495, 3, 1047, 523, 0, 4495, 4496, 3, 1059, + 529, 0, 4496, 4497, 3, 1071, 535, 0, 4497, 4498, 3, 1055, 527, 0, 4498, + 4499, 3, 1073, 536, 0, 4499, 4500, 3, 1085, 542, 0, 4500, 4501, 3, 1083, + 541, 0, 4501, 782, 1, 0, 0, 0, 4502, 4503, 3, 1063, 531, 0, 4503, 4504, + 3, 1073, 536, 0, 4504, 4505, 3, 1083, 541, 0, 4505, 4506, 3, 1055, 527, + 0, 4506, 4507, 3, 1081, 540, 0, 4507, 4508, 3, 1085, 542, 0, 4508, 784, + 1, 0, 0, 0, 4509, 4510, 3, 1049, 524, 0, 4510, 4511, 3, 1055, 527, 0, 4511, + 4512, 3, 1057, 528, 0, 4512, 4513, 3, 1075, 537, 0, 4513, 4514, 3, 1081, + 540, 0, 4514, 4515, 3, 1055, 527, 0, 4515, 786, 1, 0, 0, 0, 4516, 4517, + 3, 1047, 523, 0, 4517, 4518, 3, 1057, 528, 0, 4518, 4519, 3, 1085, 542, + 0, 4519, 4520, 3, 1055, 527, 0, 4520, 4521, 3, 1081, 540, 0, 4521, 788, + 1, 0, 0, 0, 4522, 4523, 3, 1087, 543, 0, 4523, 4524, 3, 1077, 538, 0, 4524, + 4525, 3, 1053, 526, 0, 4525, 4526, 3, 1047, 523, 0, 4526, 4527, 3, 1085, + 542, 0, 4527, 4528, 3, 1055, 527, 0, 4528, 790, 1, 0, 0, 0, 4529, 4530, + 3, 1081, 540, 0, 4530, 4531, 3, 1055, 527, 0, 4531, 4532, 3, 1057, 528, + 0, 4532, 4533, 3, 1081, 540, 0, 4533, 4534, 3, 1055, 527, 0, 4534, 4535, + 3, 1083, 541, 0, 4535, 4536, 3, 1061, 530, 0, 4536, 792, 1, 0, 0, 0, 4537, + 4538, 3, 1051, 525, 0, 4538, 4539, 3, 1061, 530, 0, 4539, 4540, 3, 1055, + 527, 0, 4540, 4541, 3, 1051, 525, 0, 4541, 4542, 3, 1067, 533, 0, 4542, + 794, 1, 0, 0, 0, 4543, 4544, 3, 1049, 524, 0, 4544, 4545, 3, 1087, 543, + 0, 4545, 4546, 3, 1063, 531, 0, 4546, 4547, 3, 1069, 534, 0, 4547, 4548, + 3, 1053, 526, 0, 4548, 796, 1, 0, 0, 0, 4549, 4550, 3, 1055, 527, 0, 4550, + 4551, 3, 1093, 546, 0, 4551, 4552, 3, 1055, 527, 0, 4552, 4553, 3, 1051, + 525, 0, 4553, 4554, 3, 1087, 543, 0, 4554, 4555, 3, 1085, 542, 0, 4555, + 4556, 3, 1055, 527, 0, 4556, 798, 1, 0, 0, 0, 4557, 4558, 3, 1083, 541, + 0, 4558, 4559, 3, 1051, 525, 0, 4559, 4560, 3, 1081, 540, 0, 4560, 4561, + 3, 1063, 531, 0, 4561, 4562, 3, 1077, 538, 0, 4562, 4563, 3, 1085, 542, + 0, 4563, 800, 1, 0, 0, 0, 4564, 4565, 3, 1069, 534, 0, 4565, 4566, 3, 1063, + 531, 0, 4566, 4567, 3, 1073, 536, 0, 4567, 4568, 3, 1085, 542, 0, 4568, + 802, 1, 0, 0, 0, 4569, 4570, 3, 1081, 540, 0, 4570, 4571, 3, 1087, 543, + 0, 4571, 4572, 3, 1069, 534, 0, 4572, 4573, 3, 1055, 527, 0, 4573, 4574, + 3, 1083, 541, 0, 4574, 804, 1, 0, 0, 0, 4575, 4576, 3, 1085, 542, 0, 4576, + 4577, 3, 1055, 527, 0, 4577, 4578, 3, 1093, 546, 0, 4578, 4579, 3, 1085, + 542, 0, 4579, 806, 1, 0, 0, 0, 4580, 4581, 3, 1083, 541, 0, 4581, 4582, + 3, 1047, 523, 0, 4582, 4583, 3, 1081, 540, 0, 4583, 4584, 3, 1063, 531, + 0, 4584, 4585, 3, 1057, 528, 0, 4585, 808, 1, 0, 0, 0, 4586, 4587, 3, 1071, + 535, 0, 4587, 4588, 3, 1055, 527, 0, 4588, 4589, 3, 1083, 541, 0, 4589, + 4590, 3, 1083, 541, 0, 4590, 4591, 3, 1047, 523, 0, 4591, 4592, 3, 1059, + 529, 0, 4592, 4593, 3, 1055, 527, 0, 4593, 810, 1, 0, 0, 0, 4594, 4595, + 3, 1071, 535, 0, 4595, 4596, 3, 1055, 527, 0, 4596, 4597, 3, 1083, 541, + 0, 4597, 4598, 3, 1083, 541, 0, 4598, 4599, 3, 1047, 523, 0, 4599, 4600, + 3, 1059, 529, 0, 4600, 4601, 3, 1055, 527, 0, 4601, 4602, 3, 1083, 541, + 0, 4602, 812, 1, 0, 0, 0, 4603, 4604, 3, 1051, 525, 0, 4604, 4605, 3, 1061, + 530, 0, 4605, 4606, 3, 1047, 523, 0, 4606, 4607, 3, 1073, 536, 0, 4607, + 4608, 3, 1073, 536, 0, 4608, 4609, 3, 1055, 527, 0, 4609, 4610, 3, 1069, + 534, 0, 4610, 4611, 3, 1083, 541, 0, 4611, 814, 1, 0, 0, 0, 4612, 4613, + 3, 1051, 525, 0, 4613, 4614, 3, 1075, 537, 0, 4614, 4615, 3, 1071, 535, + 0, 4615, 4616, 3, 1071, 535, 0, 4616, 4617, 3, 1055, 527, 0, 4617, 4618, + 3, 1073, 536, 0, 4618, 4619, 3, 1085, 542, 0, 4619, 816, 1, 0, 0, 0, 4620, + 4621, 3, 1051, 525, 0, 4621, 4622, 3, 1047, 523, 0, 4622, 4623, 3, 1085, + 542, 0, 4623, 4624, 3, 1047, 523, 0, 4624, 4625, 3, 1069, 534, 0, 4625, + 4626, 3, 1075, 537, 0, 4626, 4627, 3, 1059, 529, 0, 4627, 818, 1, 0, 0, + 0, 4628, 4629, 3, 1057, 528, 0, 4629, 4630, 3, 1075, 537, 0, 4630, 4631, + 3, 1081, 540, 0, 4631, 4632, 3, 1051, 525, 0, 4632, 4633, 3, 1055, 527, + 0, 4633, 820, 1, 0, 0, 0, 4634, 4635, 3, 1049, 524, 0, 4635, 4636, 3, 1047, + 523, 0, 4636, 4637, 3, 1051, 525, 0, 4637, 4638, 3, 1067, 533, 0, 4638, + 4639, 3, 1059, 529, 0, 4639, 4640, 3, 1081, 540, 0, 4640, 4641, 3, 1075, + 537, 0, 4641, 4642, 3, 1087, 543, 0, 4642, 4643, 3, 1073, 536, 0, 4643, + 4644, 3, 1053, 526, 0, 4644, 822, 1, 0, 0, 0, 4645, 4646, 3, 1051, 525, + 0, 4646, 4647, 3, 1047, 523, 0, 4647, 4648, 3, 1069, 534, 0, 4648, 4649, + 3, 1069, 534, 0, 4649, 4650, 3, 1055, 527, 0, 4650, 4651, 3, 1081, 540, + 0, 4651, 4652, 3, 1083, 541, 0, 4652, 824, 1, 0, 0, 0, 4653, 4654, 3, 1051, + 525, 0, 4654, 4655, 3, 1047, 523, 0, 4655, 4656, 3, 1069, 534, 0, 4656, + 4657, 3, 1069, 534, 0, 4657, 4658, 3, 1055, 527, 0, 4658, 4659, 3, 1055, + 527, 0, 4659, 4660, 3, 1083, 541, 0, 4660, 826, 1, 0, 0, 0, 4661, 4662, + 3, 1081, 540, 0, 4662, 4663, 3, 1055, 527, 0, 4663, 4664, 3, 1057, 528, + 0, 4664, 4665, 3, 1055, 527, 0, 4665, 4666, 3, 1081, 540, 0, 4666, 4667, + 3, 1055, 527, 0, 4667, 4668, 3, 1073, 536, 0, 4668, 4669, 3, 1051, 525, + 0, 4669, 4670, 3, 1055, 527, 0, 4670, 4671, 3, 1083, 541, 0, 4671, 828, + 1, 0, 0, 0, 4672, 4673, 3, 1085, 542, 0, 4673, 4674, 3, 1081, 540, 0, 4674, + 4675, 3, 1047, 523, 0, 4675, 4676, 3, 1073, 536, 0, 4676, 4677, 3, 1083, + 541, 0, 4677, 4678, 3, 1063, 531, 0, 4678, 4679, 3, 1085, 542, 0, 4679, + 4680, 3, 1063, 531, 0, 4680, 4681, 3, 1089, 544, 0, 4681, 4682, 3, 1055, + 527, 0, 4682, 830, 1, 0, 0, 0, 4683, 4684, 3, 1063, 531, 0, 4684, 4685, + 3, 1071, 535, 0, 4685, 4686, 3, 1077, 538, 0, 4686, 4687, 3, 1047, 523, + 0, 4687, 4688, 3, 1051, 525, 0, 4688, 4689, 3, 1085, 542, 0, 4689, 832, + 1, 0, 0, 0, 4690, 4691, 3, 1053, 526, 0, 4691, 4692, 3, 1055, 527, 0, 4692, + 4693, 3, 1077, 538, 0, 4693, 4694, 3, 1085, 542, 0, 4694, 4695, 3, 1061, + 530, 0, 4695, 834, 1, 0, 0, 0, 4696, 4697, 3, 1083, 541, 0, 4697, 4698, + 3, 1085, 542, 0, 4698, 4699, 3, 1081, 540, 0, 4699, 4700, 3, 1087, 543, + 0, 4700, 4701, 3, 1051, 525, 0, 4701, 4702, 3, 1085, 542, 0, 4702, 4703, + 3, 1087, 543, 0, 4703, 4704, 3, 1081, 540, 0, 4704, 4705, 3, 1055, 527, + 0, 4705, 836, 1, 0, 0, 0, 4706, 4707, 3, 1085, 542, 0, 4707, 4708, 3, 1095, + 547, 0, 4708, 4709, 3, 1077, 538, 0, 4709, 4710, 3, 1055, 527, 0, 4710, + 838, 1, 0, 0, 0, 4711, 4712, 3, 1089, 544, 0, 4712, 4713, 3, 1047, 523, + 0, 4713, 4714, 3, 1069, 534, 0, 4714, 4715, 3, 1087, 543, 0, 4715, 4716, + 3, 1055, 527, 0, 4716, 840, 1, 0, 0, 0, 4717, 4718, 3, 1089, 544, 0, 4718, + 4719, 3, 1047, 523, 0, 4719, 4720, 3, 1069, 534, 0, 4720, 4721, 3, 1087, + 543, 0, 4721, 4722, 3, 1055, 527, 0, 4722, 4723, 3, 1083, 541, 0, 4723, + 842, 1, 0, 0, 0, 4724, 4725, 3, 1083, 541, 0, 4725, 4726, 3, 1063, 531, + 0, 4726, 4727, 3, 1073, 536, 0, 4727, 4728, 3, 1059, 529, 0, 4728, 4729, + 3, 1069, 534, 0, 4729, 4730, 3, 1055, 527, 0, 4730, 844, 1, 0, 0, 0, 4731, + 4732, 3, 1071, 535, 0, 4732, 4733, 3, 1087, 543, 0, 4733, 4734, 3, 1069, + 534, 0, 4734, 4735, 3, 1085, 542, 0, 4735, 4736, 3, 1063, 531, 0, 4736, + 4737, 3, 1077, 538, 0, 4737, 4738, 3, 1069, 534, 0, 4738, 4739, 3, 1055, + 527, 0, 4739, 846, 1, 0, 0, 0, 4740, 4741, 3, 1073, 536, 0, 4741, 4742, + 3, 1075, 537, 0, 4742, 4743, 3, 1073, 536, 0, 4743, 4744, 3, 1055, 527, + 0, 4744, 848, 1, 0, 0, 0, 4745, 4746, 3, 1049, 524, 0, 4746, 4747, 3, 1075, + 537, 0, 4747, 4748, 3, 1085, 542, 0, 4748, 4749, 3, 1061, 530, 0, 4749, + 850, 1, 0, 0, 0, 4750, 4751, 3, 1085, 542, 0, 4751, 4752, 3, 1075, 537, + 0, 4752, 852, 1, 0, 0, 0, 4753, 4754, 3, 1075, 537, 0, 4754, 4755, 3, 1057, + 528, 0, 4755, 854, 1, 0, 0, 0, 4756, 4757, 3, 1075, 537, 0, 4757, 4758, + 3, 1089, 544, 0, 4758, 4759, 3, 1055, 527, 0, 4759, 4760, 3, 1081, 540, + 0, 4760, 856, 1, 0, 0, 0, 4761, 4762, 3, 1057, 528, 0, 4762, 4763, 3, 1075, + 537, 0, 4763, 4764, 3, 1081, 540, 0, 4764, 858, 1, 0, 0, 0, 4765, 4766, + 3, 1081, 540, 0, 4766, 4767, 3, 1055, 527, 0, 4767, 4768, 3, 1077, 538, + 0, 4768, 4769, 3, 1069, 534, 0, 4769, 4770, 3, 1047, 523, 0, 4770, 4771, + 3, 1051, 525, 0, 4771, 4772, 3, 1055, 527, 0, 4772, 860, 1, 0, 0, 0, 4773, + 4774, 3, 1071, 535, 0, 4774, 4775, 3, 1055, 527, 0, 4775, 4776, 3, 1071, + 535, 0, 4776, 4777, 3, 1049, 524, 0, 4777, 4778, 3, 1055, 527, 0, 4778, + 4779, 3, 1081, 540, 0, 4779, 4780, 3, 1083, 541, 0, 4780, 862, 1, 0, 0, + 0, 4781, 4782, 3, 1047, 523, 0, 4782, 4783, 3, 1085, 542, 0, 4783, 4784, + 3, 1085, 542, 0, 4784, 4785, 3, 1081, 540, 0, 4785, 4786, 3, 1063, 531, + 0, 4786, 4787, 3, 1049, 524, 0, 4787, 4788, 3, 1087, 543, 0, 4788, 4789, + 3, 1085, 542, 0, 4789, 4790, 3, 1055, 527, 0, 4790, 4791, 3, 1073, 536, + 0, 4791, 4792, 3, 1047, 523, 0, 4792, 4793, 3, 1071, 535, 0, 4793, 4794, + 3, 1055, 527, 0, 4794, 864, 1, 0, 0, 0, 4795, 4796, 3, 1057, 528, 0, 4796, + 4797, 3, 1075, 537, 0, 4797, 4798, 3, 1081, 540, 0, 4798, 4799, 3, 1071, + 535, 0, 4799, 4800, 3, 1047, 523, 0, 4800, 4801, 3, 1085, 542, 0, 4801, + 866, 1, 0, 0, 0, 4802, 4803, 3, 1083, 541, 0, 4803, 4804, 3, 1079, 539, + 0, 4804, 4805, 3, 1069, 534, 0, 4805, 868, 1, 0, 0, 0, 4806, 4807, 3, 1091, + 545, 0, 4807, 4808, 3, 1063, 531, 0, 4808, 4809, 3, 1085, 542, 0, 4809, + 4810, 3, 1061, 530, 0, 4810, 4811, 3, 1075, 537, 0, 4811, 4812, 3, 1087, + 543, 0, 4812, 4813, 3, 1085, 542, 0, 4813, 870, 1, 0, 0, 0, 4814, 4815, + 3, 1053, 526, 0, 4815, 4816, 3, 1081, 540, 0, 4816, 4817, 3, 1095, 547, + 0, 4817, 872, 1, 0, 0, 0, 4818, 4819, 3, 1081, 540, 0, 4819, 4820, 3, 1087, + 543, 0, 4820, 4821, 3, 1073, 536, 0, 4821, 874, 1, 0, 0, 0, 4822, 4823, + 3, 1091, 545, 0, 4823, 4824, 3, 1063, 531, 0, 4824, 4825, 3, 1053, 526, + 0, 4825, 4826, 3, 1059, 529, 0, 4826, 4827, 3, 1055, 527, 0, 4827, 4828, + 3, 1085, 542, 0, 4828, 4829, 3, 1085, 542, 0, 4829, 4830, 3, 1095, 547, + 0, 4830, 4831, 3, 1077, 538, 0, 4831, 4832, 3, 1055, 527, 0, 4832, 876, + 1, 0, 0, 0, 4833, 4834, 3, 1089, 544, 0, 4834, 4835, 5, 51, 0, 0, 4835, + 878, 1, 0, 0, 0, 4836, 4837, 3, 1049, 524, 0, 4837, 4838, 3, 1087, 543, + 0, 4838, 4839, 3, 1083, 541, 0, 4839, 4840, 3, 1063, 531, 0, 4840, 4841, + 3, 1073, 536, 0, 4841, 4842, 3, 1055, 527, 0, 4842, 4843, 3, 1083, 541, + 0, 4843, 4844, 3, 1083, 541, 0, 4844, 880, 1, 0, 0, 0, 4845, 4846, 3, 1055, + 527, 0, 4846, 4847, 3, 1089, 544, 0, 4847, 4848, 3, 1055, 527, 0, 4848, + 4849, 3, 1073, 536, 0, 4849, 4850, 3, 1085, 542, 0, 4850, 882, 1, 0, 0, + 0, 4851, 4852, 3, 1083, 541, 0, 4852, 4853, 3, 1087, 543, 0, 4853, 4854, + 3, 1049, 524, 0, 4854, 4855, 3, 1083, 541, 0, 4855, 4856, 3, 1051, 525, + 0, 4856, 4857, 3, 1081, 540, 0, 4857, 4858, 3, 1063, 531, 0, 4858, 4859, + 3, 1049, 524, 0, 4859, 4860, 3, 1055, 527, 0, 4860, 884, 1, 0, 0, 0, 4861, + 4862, 3, 1083, 541, 0, 4862, 4863, 3, 1055, 527, 0, 4863, 4864, 3, 1085, + 542, 0, 4864, 4865, 3, 1085, 542, 0, 4865, 4866, 3, 1063, 531, 0, 4866, + 4867, 3, 1073, 536, 0, 4867, 4868, 3, 1059, 529, 0, 4868, 4869, 3, 1083, + 541, 0, 4869, 886, 1, 0, 0, 0, 4870, 4871, 3, 1051, 525, 0, 4871, 4872, + 3, 1075, 537, 0, 4872, 4873, 3, 1073, 536, 0, 4873, 4874, 3, 1057, 528, + 0, 4874, 4875, 3, 1063, 531, 0, 4875, 4876, 3, 1059, 529, 0, 4876, 4877, + 3, 1087, 543, 0, 4877, 4878, 3, 1081, 540, 0, 4878, 4879, 3, 1047, 523, + 0, 4879, 4880, 3, 1085, 542, 0, 4880, 4881, 3, 1063, 531, 0, 4881, 4882, + 3, 1075, 537, 0, 4882, 4883, 3, 1073, 536, 0, 4883, 888, 1, 0, 0, 0, 4884, + 4885, 3, 1083, 541, 0, 4885, 4886, 3, 1055, 527, 0, 4886, 4887, 3, 1051, + 525, 0, 4887, 4888, 3, 1087, 543, 0, 4888, 4889, 3, 1081, 540, 0, 4889, + 4890, 3, 1063, 531, 0, 4890, 4891, 3, 1085, 542, 0, 4891, 4892, 3, 1095, + 547, 0, 4892, 890, 1, 0, 0, 0, 4893, 4894, 3, 1081, 540, 0, 4894, 4895, + 3, 1075, 537, 0, 4895, 4896, 3, 1069, 534, 0, 4896, 4897, 3, 1055, 527, + 0, 4897, 892, 1, 0, 0, 0, 4898, 4899, 3, 1081, 540, 0, 4899, 4900, 3, 1075, + 537, 0, 4900, 4901, 3, 1069, 534, 0, 4901, 4902, 3, 1055, 527, 0, 4902, + 4903, 3, 1083, 541, 0, 4903, 894, 1, 0, 0, 0, 4904, 4905, 3, 1059, 529, + 0, 4905, 4906, 3, 1081, 540, 0, 4906, 4907, 3, 1047, 523, 0, 4907, 4908, + 3, 1073, 536, 0, 4908, 4909, 3, 1085, 542, 0, 4909, 896, 1, 0, 0, 0, 4910, + 4911, 3, 1081, 540, 0, 4911, 4912, 3, 1055, 527, 0, 4912, 4913, 3, 1089, + 544, 0, 4913, 4914, 3, 1075, 537, 0, 4914, 4915, 3, 1067, 533, 0, 4915, + 4916, 3, 1055, 527, 0, 4916, 898, 1, 0, 0, 0, 4917, 4918, 3, 1077, 538, + 0, 4918, 4919, 3, 1081, 540, 0, 4919, 4920, 3, 1075, 537, 0, 4920, 4921, + 3, 1053, 526, 0, 4921, 4922, 3, 1087, 543, 0, 4922, 4923, 3, 1051, 525, + 0, 4923, 4924, 3, 1085, 542, 0, 4924, 4925, 3, 1063, 531, 0, 4925, 4926, + 3, 1075, 537, 0, 4926, 4927, 3, 1073, 536, 0, 4927, 900, 1, 0, 0, 0, 4928, + 4929, 3, 1077, 538, 0, 4929, 4930, 3, 1081, 540, 0, 4930, 4931, 3, 1075, + 537, 0, 4931, 4932, 3, 1085, 542, 0, 4932, 4933, 3, 1075, 537, 0, 4933, + 4934, 3, 1085, 542, 0, 4934, 4935, 3, 1095, 547, 0, 4935, 4936, 3, 1077, + 538, 0, 4936, 4937, 3, 1055, 527, 0, 4937, 902, 1, 0, 0, 0, 4938, 4939, + 3, 1071, 535, 0, 4939, 4940, 3, 1047, 523, 0, 4940, 4941, 3, 1073, 536, + 0, 4941, 4942, 3, 1047, 523, 0, 4942, 4943, 3, 1059, 529, 0, 4943, 4944, + 3, 1055, 527, 0, 4944, 904, 1, 0, 0, 0, 4945, 4946, 3, 1053, 526, 0, 4946, + 4947, 3, 1055, 527, 0, 4947, 4948, 3, 1071, 535, 0, 4948, 4949, 3, 1075, + 537, 0, 4949, 906, 1, 0, 0, 0, 4950, 4951, 3, 1071, 535, 0, 4951, 4952, + 3, 1047, 523, 0, 4952, 4953, 3, 1085, 542, 0, 4953, 4954, 3, 1081, 540, + 0, 4954, 4955, 3, 1063, 531, 0, 4955, 4956, 3, 1093, 546, 0, 4956, 908, + 1, 0, 0, 0, 4957, 4958, 3, 1047, 523, 0, 4958, 4959, 3, 1077, 538, 0, 4959, + 4960, 3, 1077, 538, 0, 4960, 4961, 3, 1069, 534, 0, 4961, 4962, 3, 1095, + 547, 0, 4962, 910, 1, 0, 0, 0, 4963, 4964, 3, 1047, 523, 0, 4964, 4965, + 3, 1051, 525, 0, 4965, 4966, 3, 1051, 525, 0, 4966, 4967, 3, 1055, 527, + 0, 4967, 4968, 3, 1083, 541, 0, 4968, 4969, 3, 1083, 541, 0, 4969, 912, + 1, 0, 0, 0, 4970, 4971, 3, 1069, 534, 0, 4971, 4972, 3, 1055, 527, 0, 4972, + 4973, 3, 1089, 544, 0, 4973, 4974, 3, 1055, 527, 0, 4974, 4975, 3, 1069, + 534, 0, 4975, 914, 1, 0, 0, 0, 4976, 4977, 3, 1087, 543, 0, 4977, 4978, + 3, 1083, 541, 0, 4978, 4979, 3, 1055, 527, 0, 4979, 4980, 3, 1081, 540, + 0, 4980, 916, 1, 0, 0, 0, 4981, 4982, 3, 1085, 542, 0, 4982, 4983, 3, 1047, + 523, 0, 4983, 4984, 3, 1083, 541, 0, 4984, 4985, 3, 1067, 533, 0, 4985, + 918, 1, 0, 0, 0, 4986, 4987, 3, 1053, 526, 0, 4987, 4988, 3, 1055, 527, + 0, 4988, 4989, 3, 1051, 525, 0, 4989, 4990, 3, 1063, 531, 0, 4990, 4991, + 3, 1083, 541, 0, 4991, 4992, 3, 1063, 531, 0, 4992, 4993, 3, 1075, 537, + 0, 4993, 4994, 3, 1073, 536, 0, 4994, 920, 1, 0, 0, 0, 4995, 4996, 3, 1083, + 541, 0, 4996, 4997, 3, 1077, 538, 0, 4997, 4998, 3, 1069, 534, 0, 4998, + 4999, 3, 1063, 531, 0, 4999, 5000, 3, 1085, 542, 0, 5000, 922, 1, 0, 0, + 0, 5001, 5002, 3, 1075, 537, 0, 5002, 5003, 3, 1087, 543, 0, 5003, 5004, + 3, 1085, 542, 0, 5004, 5005, 3, 1051, 525, 0, 5005, 5006, 3, 1075, 537, + 0, 5006, 5007, 3, 1071, 535, 0, 5007, 5008, 3, 1055, 527, 0, 5008, 5009, + 3, 1083, 541, 0, 5009, 924, 1, 0, 0, 0, 5010, 5011, 3, 1085, 542, 0, 5011, + 5012, 3, 1047, 523, 0, 5012, 5013, 3, 1081, 540, 0, 5013, 5014, 3, 1059, + 529, 0, 5014, 5015, 3, 1055, 527, 0, 5015, 5016, 3, 1085, 542, 0, 5016, + 5017, 3, 1063, 531, 0, 5017, 5018, 3, 1073, 536, 0, 5018, 5019, 3, 1059, + 529, 0, 5019, 926, 1, 0, 0, 0, 5020, 5021, 3, 1073, 536, 0, 5021, 5022, + 3, 1075, 537, 0, 5022, 5023, 3, 1085, 542, 0, 5023, 5024, 3, 1063, 531, + 0, 5024, 5025, 3, 1057, 528, 0, 5025, 5026, 3, 1063, 531, 0, 5026, 5027, + 3, 1051, 525, 0, 5027, 5028, 3, 1047, 523, 0, 5028, 5029, 3, 1085, 542, + 0, 5029, 5030, 3, 1063, 531, 0, 5030, 5031, 3, 1075, 537, 0, 5031, 5032, + 3, 1073, 536, 0, 5032, 928, 1, 0, 0, 0, 5033, 5034, 3, 1085, 542, 0, 5034, + 5035, 3, 1063, 531, 0, 5035, 5036, 3, 1071, 535, 0, 5036, 5037, 3, 1055, + 527, 0, 5037, 5038, 3, 1081, 540, 0, 5038, 930, 1, 0, 0, 0, 5039, 5040, + 3, 1065, 532, 0, 5040, 5041, 3, 1087, 543, 0, 5041, 5042, 3, 1071, 535, + 0, 5042, 5043, 3, 1077, 538, 0, 5043, 932, 1, 0, 0, 0, 5044, 5045, 3, 1053, + 526, 0, 5045, 5046, 3, 1087, 543, 0, 5046, 5047, 3, 1055, 527, 0, 5047, + 934, 1, 0, 0, 0, 5048, 5049, 3, 1075, 537, 0, 5049, 5050, 3, 1089, 544, + 0, 5050, 5051, 3, 1055, 527, 0, 5051, 5052, 3, 1081, 540, 0, 5052, 5053, + 3, 1089, 544, 0, 5053, 5054, 3, 1063, 531, 0, 5054, 5055, 3, 1055, 527, + 0, 5055, 5056, 3, 1091, 545, 0, 5056, 936, 1, 0, 0, 0, 5057, 5058, 3, 1053, + 526, 0, 5058, 5059, 3, 1047, 523, 0, 5059, 5060, 3, 1085, 542, 0, 5060, + 5061, 3, 1055, 527, 0, 5061, 938, 1, 0, 0, 0, 5062, 5063, 3, 1077, 538, + 0, 5063, 5064, 3, 1047, 523, 0, 5064, 5065, 3, 1081, 540, 0, 5065, 5066, + 3, 1047, 523, 0, 5066, 5067, 3, 1069, 534, 0, 5067, 5068, 3, 1069, 534, + 0, 5068, 5069, 3, 1055, 527, 0, 5069, 5070, 3, 1069, 534, 0, 5070, 940, + 1, 0, 0, 0, 5071, 5072, 3, 1091, 545, 0, 5072, 5073, 3, 1047, 523, 0, 5073, + 5074, 3, 1063, 531, 0, 5074, 5075, 3, 1085, 542, 0, 5075, 942, 1, 0, 0, + 0, 5076, 5077, 3, 1047, 523, 0, 5077, 5078, 3, 1073, 536, 0, 5078, 5079, + 3, 1073, 536, 0, 5079, 5080, 3, 1075, 537, 0, 5080, 5081, 3, 1085, 542, + 0, 5081, 5082, 3, 1047, 523, 0, 5082, 5083, 3, 1085, 542, 0, 5083, 5084, + 3, 1063, 531, 0, 5084, 5085, 3, 1075, 537, 0, 5085, 5086, 3, 1073, 536, + 0, 5086, 944, 1, 0, 0, 0, 5087, 5088, 3, 1049, 524, 0, 5088, 5089, 3, 1075, + 537, 0, 5089, 5090, 3, 1087, 543, 0, 5090, 5091, 3, 1073, 536, 0, 5091, + 5092, 3, 1053, 526, 0, 5092, 5093, 3, 1047, 523, 0, 5093, 5094, 3, 1081, + 540, 0, 5094, 5095, 3, 1095, 547, 0, 5095, 946, 1, 0, 0, 0, 5096, 5097, + 3, 1063, 531, 0, 5097, 5098, 3, 1073, 536, 0, 5098, 5099, 3, 1085, 542, + 0, 5099, 5100, 3, 1055, 527, 0, 5100, 5101, 3, 1081, 540, 0, 5101, 5102, + 3, 1081, 540, 0, 5102, 5103, 3, 1087, 543, 0, 5103, 5104, 3, 1077, 538, + 0, 5104, 5105, 3, 1085, 542, 0, 5105, 5106, 3, 1063, 531, 0, 5106, 5107, + 3, 1073, 536, 0, 5107, 5108, 3, 1059, 529, 0, 5108, 948, 1, 0, 0, 0, 5109, + 5110, 3, 1073, 536, 0, 5110, 5111, 3, 1075, 537, 0, 5111, 5112, 3, 1073, + 536, 0, 5112, 950, 1, 0, 0, 0, 5113, 5114, 3, 1071, 535, 0, 5114, 5115, + 3, 1087, 543, 0, 5115, 5116, 3, 1069, 534, 0, 5116, 5117, 3, 1085, 542, + 0, 5117, 5118, 3, 1063, 531, 0, 5118, 952, 1, 0, 0, 0, 5119, 5120, 3, 1049, + 524, 0, 5120, 5121, 3, 1095, 547, 0, 5121, 954, 1, 0, 0, 0, 5122, 5123, + 3, 1081, 540, 0, 5123, 5124, 3, 1055, 527, 0, 5124, 5125, 3, 1047, 523, + 0, 5125, 5126, 3, 1053, 526, 0, 5126, 956, 1, 0, 0, 0, 5127, 5128, 3, 1091, + 545, 0, 5128, 5129, 3, 1081, 540, 0, 5129, 5130, 3, 1063, 531, 0, 5130, + 5131, 3, 1085, 542, 0, 5131, 5132, 3, 1055, 527, 0, 5132, 958, 1, 0, 0, + 0, 5133, 5134, 3, 1053, 526, 0, 5134, 5135, 3, 1055, 527, 0, 5135, 5136, + 3, 1083, 541, 0, 5136, 5137, 3, 1051, 525, 0, 5137, 5138, 3, 1081, 540, + 0, 5138, 5139, 3, 1063, 531, 0, 5139, 5140, 3, 1077, 538, 0, 5140, 5141, + 3, 1085, 542, 0, 5141, 5142, 3, 1063, 531, 0, 5142, 5143, 3, 1075, 537, + 0, 5143, 5144, 3, 1073, 536, 0, 5144, 960, 1, 0, 0, 0, 5145, 5146, 3, 1053, + 526, 0, 5146, 5147, 3, 1063, 531, 0, 5147, 5148, 3, 1083, 541, 0, 5148, + 5149, 3, 1077, 538, 0, 5149, 5150, 3, 1069, 534, 0, 5150, 5151, 3, 1047, + 523, 0, 5151, 5152, 3, 1095, 547, 0, 5152, 962, 1, 0, 0, 0, 5153, 5154, + 3, 1075, 537, 0, 5154, 5155, 3, 1057, 528, 0, 5155, 5156, 3, 1057, 528, + 0, 5156, 964, 1, 0, 0, 0, 5157, 5158, 3, 1087, 543, 0, 5158, 5159, 3, 1083, + 541, 0, 5159, 5160, 3, 1055, 527, 0, 5160, 5161, 3, 1081, 540, 0, 5161, + 5162, 3, 1083, 541, 0, 5162, 966, 1, 0, 0, 0, 5163, 5164, 5, 60, 0, 0, + 5164, 5168, 5, 62, 0, 0, 5165, 5166, 5, 33, 0, 0, 5166, 5168, 5, 61, 0, + 0, 5167, 5163, 1, 0, 0, 0, 5167, 5165, 1, 0, 0, 0, 5168, 968, 1, 0, 0, + 0, 5169, 5170, 5, 60, 0, 0, 5170, 5171, 5, 61, 0, 0, 5171, 970, 1, 0, 0, + 0, 5172, 5173, 5, 62, 0, 0, 5173, 5174, 5, 61, 0, 0, 5174, 972, 1, 0, 0, + 0, 5175, 5176, 5, 61, 0, 0, 5176, 974, 1, 0, 0, 0, 5177, 5178, 5, 60, 0, + 0, 5178, 976, 1, 0, 0, 0, 5179, 5180, 5, 62, 0, 0, 5180, 978, 1, 0, 0, + 0, 5181, 5182, 5, 43, 0, 0, 5182, 980, 1, 0, 0, 0, 5183, 5184, 5, 45, 0, + 0, 5184, 982, 1, 0, 0, 0, 5185, 5186, 5, 42, 0, 0, 5186, 984, 1, 0, 0, + 0, 5187, 5188, 5, 47, 0, 0, 5188, 986, 1, 0, 0, 0, 5189, 5190, 5, 37, 0, + 0, 5190, 988, 1, 0, 0, 0, 5191, 5192, 3, 1071, 535, 0, 5192, 5193, 3, 1075, + 537, 0, 5193, 5194, 3, 1053, 526, 0, 5194, 990, 1, 0, 0, 0, 5195, 5196, + 3, 1053, 526, 0, 5196, 5197, 3, 1063, 531, 0, 5197, 5198, 3, 1089, 544, + 0, 5198, 992, 1, 0, 0, 0, 5199, 5200, 5, 59, 0, 0, 5200, 994, 1, 0, 0, + 0, 5201, 5202, 5, 44, 0, 0, 5202, 996, 1, 0, 0, 0, 5203, 5204, 5, 46, 0, + 0, 5204, 998, 1, 0, 0, 0, 5205, 5206, 5, 40, 0, 0, 5206, 1000, 1, 0, 0, + 0, 5207, 5208, 5, 41, 0, 0, 5208, 1002, 1, 0, 0, 0, 5209, 5210, 5, 123, + 0, 0, 5210, 1004, 1, 0, 0, 0, 5211, 5212, 5, 125, 0, 0, 5212, 1006, 1, + 0, 0, 0, 5213, 5214, 5, 91, 0, 0, 5214, 1008, 1, 0, 0, 0, 5215, 5216, 5, + 93, 0, 0, 5216, 1010, 1, 0, 0, 0, 5217, 5218, 5, 58, 0, 0, 5218, 1012, + 1, 0, 0, 0, 5219, 5220, 5, 64, 0, 0, 5220, 1014, 1, 0, 0, 0, 5221, 5222, + 5, 124, 0, 0, 5222, 1016, 1, 0, 0, 0, 5223, 5224, 5, 58, 0, 0, 5224, 5225, + 5, 58, 0, 0, 5225, 1018, 1, 0, 0, 0, 5226, 5227, 5, 45, 0, 0, 5227, 5228, + 5, 62, 0, 0, 5228, 1020, 1, 0, 0, 0, 5229, 5230, 5, 63, 0, 0, 5230, 1022, + 1, 0, 0, 0, 5231, 5232, 5, 35, 0, 0, 5232, 1024, 1, 0, 0, 0, 5233, 5234, + 5, 91, 0, 0, 5234, 5235, 5, 37, 0, 0, 5235, 5239, 1, 0, 0, 0, 5236, 5238, + 9, 0, 0, 0, 5237, 5236, 1, 0, 0, 0, 5238, 5241, 1, 0, 0, 0, 5239, 5240, + 1, 0, 0, 0, 5239, 5237, 1, 0, 0, 0, 5240, 5242, 1, 0, 0, 0, 5241, 5239, + 1, 0, 0, 0, 5242, 5243, 5, 37, 0, 0, 5243, 5244, 5, 93, 0, 0, 5244, 1026, + 1, 0, 0, 0, 5245, 5253, 5, 39, 0, 0, 5246, 5252, 8, 2, 0, 0, 5247, 5248, + 5, 92, 0, 0, 5248, 5252, 9, 0, 0, 0, 5249, 5250, 5, 39, 0, 0, 5250, 5252, + 5, 39, 0, 0, 5251, 5246, 1, 0, 0, 0, 5251, 5247, 1, 0, 0, 0, 5251, 5249, + 1, 0, 0, 0, 5252, 5255, 1, 0, 0, 0, 5253, 5251, 1, 0, 0, 0, 5253, 5254, + 1, 0, 0, 0, 5254, 5256, 1, 0, 0, 0, 5255, 5253, 1, 0, 0, 0, 5256, 5257, + 5, 39, 0, 0, 5257, 1028, 1, 0, 0, 0, 5258, 5259, 5, 36, 0, 0, 5259, 5260, + 5, 36, 0, 0, 5260, 5264, 1, 0, 0, 0, 5261, 5263, 9, 0, 0, 0, 5262, 5261, + 1, 0, 0, 0, 5263, 5266, 1, 0, 0, 0, 5264, 5265, 1, 0, 0, 0, 5264, 5262, + 1, 0, 0, 0, 5265, 5267, 1, 0, 0, 0, 5266, 5264, 1, 0, 0, 0, 5267, 5268, + 5, 36, 0, 0, 5268, 5269, 5, 36, 0, 0, 5269, 1030, 1, 0, 0, 0, 5270, 5272, + 5, 45, 0, 0, 5271, 5270, 1, 0, 0, 0, 5271, 5272, 1, 0, 0, 0, 5272, 5274, + 1, 0, 0, 0, 5273, 5275, 3, 1045, 522, 0, 5274, 5273, 1, 0, 0, 0, 5275, + 5276, 1, 0, 0, 0, 5276, 5274, 1, 0, 0, 0, 5276, 5277, 1, 0, 0, 0, 5277, + 5284, 1, 0, 0, 0, 5278, 5280, 5, 46, 0, 0, 5279, 5281, 3, 1045, 522, 0, + 5280, 5279, 1, 0, 0, 0, 5281, 5282, 1, 0, 0, 0, 5282, 5280, 1, 0, 0, 0, + 5282, 5283, 1, 0, 0, 0, 5283, 5285, 1, 0, 0, 0, 5284, 5278, 1, 0, 0, 0, + 5284, 5285, 1, 0, 0, 0, 5285, 5295, 1, 0, 0, 0, 5286, 5288, 7, 3, 0, 0, + 5287, 5289, 7, 4, 0, 0, 5288, 5287, 1, 0, 0, 0, 5288, 5289, 1, 0, 0, 0, + 5289, 5291, 1, 0, 0, 0, 5290, 5292, 3, 1045, 522, 0, 5291, 5290, 1, 0, + 0, 0, 5292, 5293, 1, 0, 0, 0, 5293, 5291, 1, 0, 0, 0, 5293, 5294, 1, 0, + 0, 0, 5294, 5296, 1, 0, 0, 0, 5295, 5286, 1, 0, 0, 0, 5295, 5296, 1, 0, + 0, 0, 5296, 1032, 1, 0, 0, 0, 5297, 5299, 5, 36, 0, 0, 5298, 5300, 3, 1043, + 521, 0, 5299, 5298, 1, 0, 0, 0, 5300, 5301, 1, 0, 0, 0, 5301, 5299, 1, + 0, 0, 0, 5301, 5302, 1, 0, 0, 0, 5302, 1034, 1, 0, 0, 0, 5303, 5307, 3, + 1041, 520, 0, 5304, 5306, 3, 1043, 521, 0, 5305, 5304, 1, 0, 0, 0, 5306, + 5309, 1, 0, 0, 0, 5307, 5305, 1, 0, 0, 0, 5307, 5308, 1, 0, 0, 0, 5308, + 1036, 1, 0, 0, 0, 5309, 5307, 1, 0, 0, 0, 5310, 5318, 3, 1041, 520, 0, + 5311, 5313, 3, 1043, 521, 0, 5312, 5311, 1, 0, 0, 0, 5313, 5316, 1, 0, + 0, 0, 5314, 5312, 1, 0, 0, 0, 5314, 5315, 1, 0, 0, 0, 5315, 5317, 1, 0, + 0, 0, 5316, 5314, 1, 0, 0, 0, 5317, 5319, 5, 45, 0, 0, 5318, 5314, 1, 0, + 0, 0, 5319, 5320, 1, 0, 0, 0, 5320, 5318, 1, 0, 0, 0, 5320, 5321, 1, 0, + 0, 0, 5321, 5325, 1, 0, 0, 0, 5322, 5324, 3, 1043, 521, 0, 5323, 5322, + 1, 0, 0, 0, 5324, 5327, 1, 0, 0, 0, 5325, 5323, 1, 0, 0, 0, 5325, 5326, + 1, 0, 0, 0, 5326, 1038, 1, 0, 0, 0, 5327, 5325, 1, 0, 0, 0, 5328, 5332, + 5, 34, 0, 0, 5329, 5331, 8, 5, 0, 0, 5330, 5329, 1, 0, 0, 0, 5331, 5334, + 1, 0, 0, 0, 5332, 5330, 1, 0, 0, 0, 5332, 5333, 1, 0, 0, 0, 5333, 5335, + 1, 0, 0, 0, 5334, 5332, 1, 0, 0, 0, 5335, 5345, 5, 34, 0, 0, 5336, 5340, + 5, 96, 0, 0, 5337, 5339, 8, 6, 0, 0, 5338, 5337, 1, 0, 0, 0, 5339, 5342, + 1, 0, 0, 0, 5340, 5338, 1, 0, 0, 0, 5340, 5341, 1, 0, 0, 0, 5341, 5343, + 1, 0, 0, 0, 5342, 5340, 1, 0, 0, 0, 5343, 5345, 5, 96, 0, 0, 5344, 5328, + 1, 0, 0, 0, 5344, 5336, 1, 0, 0, 0, 5345, 1040, 1, 0, 0, 0, 5346, 5347, + 7, 7, 0, 0, 5347, 1042, 1, 0, 0, 0, 5348, 5349, 7, 8, 0, 0, 5349, 1044, + 1, 0, 0, 0, 5350, 5351, 7, 9, 0, 0, 5351, 1046, 1, 0, 0, 0, 5352, 5353, + 7, 10, 0, 0, 5353, 1048, 1, 0, 0, 0, 5354, 5355, 7, 11, 0, 0, 5355, 1050, + 1, 0, 0, 0, 5356, 5357, 7, 12, 0, 0, 5357, 1052, 1, 0, 0, 0, 5358, 5359, + 7, 13, 0, 0, 5359, 1054, 1, 0, 0, 0, 5360, 5361, 7, 3, 0, 0, 5361, 1056, + 1, 0, 0, 0, 5362, 5363, 7, 14, 0, 0, 5363, 1058, 1, 0, 0, 0, 5364, 5365, + 7, 15, 0, 0, 5365, 1060, 1, 0, 0, 0, 5366, 5367, 7, 16, 0, 0, 5367, 1062, + 1, 0, 0, 0, 5368, 5369, 7, 17, 0, 0, 5369, 1064, 1, 0, 0, 0, 5370, 5371, + 7, 18, 0, 0, 5371, 1066, 1, 0, 0, 0, 5372, 5373, 7, 19, 0, 0, 5373, 1068, + 1, 0, 0, 0, 5374, 5375, 7, 20, 0, 0, 5375, 1070, 1, 0, 0, 0, 5376, 5377, + 7, 21, 0, 0, 5377, 1072, 1, 0, 0, 0, 5378, 5379, 7, 22, 0, 0, 5379, 1074, + 1, 0, 0, 0, 5380, 5381, 7, 23, 0, 0, 5381, 1076, 1, 0, 0, 0, 5382, 5383, + 7, 24, 0, 0, 5383, 1078, 1, 0, 0, 0, 5384, 5385, 7, 25, 0, 0, 5385, 1080, + 1, 0, 0, 0, 5386, 5387, 7, 26, 0, 0, 5387, 1082, 1, 0, 0, 0, 5388, 5389, + 7, 27, 0, 0, 5389, 1084, 1, 0, 0, 0, 5390, 5391, 7, 28, 0, 0, 5391, 1086, + 1, 0, 0, 0, 5392, 5393, 7, 29, 0, 0, 5393, 1088, 1, 0, 0, 0, 5394, 5395, + 7, 30, 0, 0, 5395, 1090, 1, 0, 0, 0, 5396, 5397, 7, 31, 0, 0, 5397, 1092, + 1, 0, 0, 0, 5398, 5399, 7, 32, 0, 0, 5399, 1094, 1, 0, 0, 0, 5400, 5401, + 7, 33, 0, 0, 5401, 1096, 1, 0, 0, 0, 5402, 5403, 7, 34, 0, 0, 5403, 1098, + 1, 0, 0, 0, 46, 0, 1102, 1113, 1125, 1139, 1149, 1157, 1169, 1182, 1197, + 1210, 1222, 1252, 1265, 1279, 1287, 1342, 1353, 1361, 1370, 1434, 1445, + 1452, 1459, 1517, 1813, 5167, 5239, 5251, 5253, 5264, 5271, 5276, 5282, + 5284, 5288, 5293, 5295, 5301, 5307, 5314, 5320, 5325, 5332, 5340, 5344, 1, 6, 0, 0, } deserializer := antlr.NewATNDeserializer(nil) @@ -3098,341 +3122,344 @@ const ( MDLLexerFILEINPUT = 178 MDLLexerIMAGEINPUT = 179 MDLLexerCUSTOMWIDGET = 180 - MDLLexerTEXTFILTER = 181 - MDLLexerNUMBERFILTER = 182 - MDLLexerDROPDOWNFILTER = 183 - MDLLexerDATEFILTER = 184 - MDLLexerFILTER = 185 - MDLLexerWIDGET = 186 - MDLLexerWIDGETS = 187 - MDLLexerCAPTION = 188 - MDLLexerICON = 189 - MDLLexerTOOLTIP = 190 - MDLLexerDATASOURCE = 191 - MDLLexerSOURCE_KW = 192 - MDLLexerSELECTION = 193 - MDLLexerFOOTER = 194 - MDLLexerHEADER = 195 - MDLLexerCONTENT = 196 - MDLLexerRENDERMODE = 197 - MDLLexerBINDS = 198 - MDLLexerATTR = 199 - MDLLexerCONTENTPARAMS = 200 - MDLLexerCAPTIONPARAMS = 201 - MDLLexerPARAMS = 202 - MDLLexerVARIABLES_KW = 203 - MDLLexerDESKTOPWIDTH = 204 - MDLLexerTABLETWIDTH = 205 - MDLLexerPHONEWIDTH = 206 - MDLLexerCLASS = 207 - MDLLexerSTYLE = 208 - MDLLexerBUTTONSTYLE = 209 - MDLLexerDESIGN = 210 - MDLLexerPROPERTIES = 211 - MDLLexerDESIGNPROPERTIES = 212 - MDLLexerSTYLING = 213 - MDLLexerCLEAR = 214 - MDLLexerWIDTH = 215 - MDLLexerHEIGHT = 216 - MDLLexerAUTOFILL = 217 - MDLLexerURL = 218 - MDLLexerFOLDER = 219 - MDLLexerPASSING = 220 - MDLLexerCONTEXT = 221 - MDLLexerEDITABLE = 222 - MDLLexerREADONLY = 223 - MDLLexerATTRIBUTES = 224 - MDLLexerFILTERTYPE = 225 - MDLLexerIMAGE = 226 - MDLLexerCOLLECTION = 227 - MDLLexerSTATICIMAGE = 228 - MDLLexerDYNAMICIMAGE = 229 - MDLLexerCUSTOMCONTAINER = 230 - MDLLexerGROUPBOX = 231 - MDLLexerVISIBLE = 232 - MDLLexerSAVECHANGES = 233 - MDLLexerSAVE_CHANGES = 234 - MDLLexerCANCEL_CHANGES = 235 - MDLLexerCLOSE_PAGE = 236 - MDLLexerSHOW_PAGE = 237 - MDLLexerDELETE_ACTION = 238 - MDLLexerDELETE_OBJECT = 239 - MDLLexerCREATE_OBJECT = 240 - MDLLexerCALL_MICROFLOW = 241 - MDLLexerCALL_NANOFLOW = 242 - MDLLexerOPEN_LINK = 243 - MDLLexerSIGN_OUT = 244 - MDLLexerCANCEL = 245 - MDLLexerPRIMARY = 246 - MDLLexerSUCCESS = 247 - MDLLexerDANGER = 248 - MDLLexerWARNING_STYLE = 249 - MDLLexerINFO_STYLE = 250 - MDLLexerTEMPLATE = 251 - MDLLexerONCLICK = 252 - MDLLexerONCHANGE = 253 - MDLLexerTABINDEX = 254 - MDLLexerH1 = 255 - MDLLexerH2 = 256 - MDLLexerH3 = 257 - MDLLexerH4 = 258 - MDLLexerH5 = 259 - MDLLexerH6 = 260 - MDLLexerPARAGRAPH = 261 - MDLLexerSTRING_TYPE = 262 - MDLLexerINTEGER_TYPE = 263 - MDLLexerLONG_TYPE = 264 - MDLLexerDECIMAL_TYPE = 265 - MDLLexerBOOLEAN_TYPE = 266 - MDLLexerDATETIME_TYPE = 267 - MDLLexerDATE_TYPE = 268 - MDLLexerAUTONUMBER_TYPE = 269 - MDLLexerBINARY_TYPE = 270 - MDLLexerHASHEDSTRING_TYPE = 271 - MDLLexerCURRENCY_TYPE = 272 - MDLLexerFLOAT_TYPE = 273 - MDLLexerSTRINGTEMPLATE_TYPE = 274 - MDLLexerENUM_TYPE = 275 - MDLLexerCOUNT = 276 - MDLLexerSUM = 277 - MDLLexerAVG = 278 - MDLLexerMIN = 279 - MDLLexerMAX = 280 - MDLLexerLENGTH = 281 - MDLLexerTRIM = 282 - MDLLexerCOALESCE = 283 - MDLLexerCAST = 284 - MDLLexerAND = 285 - MDLLexerOR = 286 - MDLLexerNOT = 287 - MDLLexerNULL = 288 - MDLLexerIN = 289 - MDLLexerBETWEEN = 290 - MDLLexerLIKE = 291 - MDLLexerMATCH = 292 - MDLLexerEXISTS = 293 - MDLLexerUNIQUE = 294 - MDLLexerDEFAULT = 295 - MDLLexerTRUE = 296 - MDLLexerFALSE = 297 - MDLLexerVALIDATION = 298 - MDLLexerFEEDBACK = 299 - MDLLexerRULE = 300 - MDLLexerREQUIRED = 301 - MDLLexerERROR = 302 - MDLLexerRAISE = 303 - MDLLexerRANGE = 304 - MDLLexerREGEX = 305 - MDLLexerPATTERN = 306 - MDLLexerEXPRESSION = 307 - MDLLexerXPATH = 308 - MDLLexerCONSTRAINT = 309 - MDLLexerCALCULATED = 310 - MDLLexerREST = 311 - MDLLexerSERVICE = 312 - MDLLexerSERVICES = 313 - MDLLexerODATA = 314 - MDLLexerBASE = 315 - MDLLexerAUTH = 316 - MDLLexerAUTHENTICATION = 317 - MDLLexerBASIC = 318 - MDLLexerNOTHING = 319 - MDLLexerOAUTH = 320 - MDLLexerOPERATION = 321 - MDLLexerMETHOD = 322 - MDLLexerPATH = 323 - MDLLexerTIMEOUT = 324 - MDLLexerBODY = 325 - MDLLexerRESPONSE = 326 - MDLLexerREQUEST = 327 - MDLLexerSEND = 328 - MDLLexerJSON = 329 - MDLLexerXML = 330 - MDLLexerSTATUS = 331 - MDLLexerFILE_KW = 332 - MDLLexerVERSION = 333 - MDLLexerGET = 334 - MDLLexerPOST = 335 - MDLLexerPUT = 336 - MDLLexerPATCH = 337 - MDLLexerAPI = 338 - MDLLexerCLIENT = 339 - MDLLexerCLIENTS = 340 - MDLLexerPUBLISH = 341 - MDLLexerPUBLISHED = 342 - MDLLexerEXPOSE = 343 - MDLLexerCONTRACT = 344 - MDLLexerNAMESPACE_KW = 345 - MDLLexerSESSION = 346 - MDLLexerGUEST = 347 - MDLLexerPAGING = 348 - MDLLexerNOT_SUPPORTED = 349 - MDLLexerUSERNAME = 350 - MDLLexerPASSWORD = 351 - MDLLexerCONNECTION = 352 - MDLLexerDATABASE = 353 - MDLLexerQUERY = 354 - MDLLexerMAP = 355 - MDLLexerMAPPING = 356 - MDLLexerIMPORT = 357 - MDLLexerINTO = 358 - MDLLexerBATCH = 359 - MDLLexerLINK = 360 - MDLLexerEXPORT = 361 - MDLLexerGENERATE = 362 - MDLLexerCONNECTOR = 363 - MDLLexerEXEC = 364 - MDLLexerTABLES = 365 - MDLLexerVIEWS = 366 - MDLLexerEXPOSED = 367 - MDLLexerPARAMETER = 368 - MDLLexerPARAMETERS = 369 - MDLLexerHEADERS = 370 - MDLLexerNAVIGATION = 371 - MDLLexerMENU_KW = 372 - MDLLexerHOMES = 373 - MDLLexerHOME = 374 - MDLLexerLOGIN = 375 - MDLLexerFOUND = 376 - MDLLexerMODULES = 377 - MDLLexerENTITIES = 378 - MDLLexerASSOCIATIONS = 379 - MDLLexerMICROFLOWS = 380 - MDLLexerNANOFLOWS = 381 - MDLLexerWORKFLOWS = 382 - MDLLexerENUMERATIONS = 383 - MDLLexerCONSTANTS = 384 - MDLLexerCONNECTIONS = 385 - MDLLexerDEFINE = 386 - MDLLexerFRAGMENT = 387 - MDLLexerFRAGMENTS = 388 - MDLLexerINSERT = 389 - MDLLexerBEFORE = 390 - MDLLexerAFTER = 391 - MDLLexerUPDATE = 392 - MDLLexerREFRESH = 393 - MDLLexerCHECK = 394 - MDLLexerBUILD = 395 - MDLLexerEXECUTE = 396 - MDLLexerSCRIPT = 397 - MDLLexerLINT = 398 - MDLLexerRULES = 399 - MDLLexerTEXT = 400 - MDLLexerSARIF = 401 - MDLLexerMESSAGE = 402 - MDLLexerMESSAGES = 403 - MDLLexerCHANNELS = 404 - MDLLexerCOMMENT = 405 - MDLLexerCATALOG = 406 - MDLLexerFORCE = 407 - MDLLexerBACKGROUND = 408 - MDLLexerCALLERS = 409 - MDLLexerCALLEES = 410 - MDLLexerREFERENCES = 411 - MDLLexerTRANSITIVE = 412 - MDLLexerIMPACT = 413 - MDLLexerDEPTH = 414 - MDLLexerSTRUCTURE = 415 - MDLLexerTYPE = 416 - MDLLexerVALUE = 417 - MDLLexerVALUES = 418 - MDLLexerSINGLE = 419 - MDLLexerMULTIPLE = 420 - MDLLexerNONE = 421 - MDLLexerBOTH = 422 - MDLLexerTO = 423 - MDLLexerOF = 424 - MDLLexerOVER = 425 - MDLLexerFOR = 426 - MDLLexerREPLACE = 427 - MDLLexerMEMBERS = 428 - MDLLexerATTRIBUTE_NAME = 429 - MDLLexerFORMAT = 430 - MDLLexerSQL = 431 - MDLLexerWITHOUT = 432 - MDLLexerDRY = 433 - MDLLexerRUN = 434 - MDLLexerWIDGETTYPE = 435 - MDLLexerV3 = 436 - MDLLexerBUSINESS = 437 - MDLLexerEVENT = 438 - MDLLexerSUBSCRIBE = 439 - MDLLexerSETTINGS = 440 - MDLLexerCONFIGURATION = 441 - MDLLexerSECURITY = 442 - MDLLexerROLE = 443 - MDLLexerROLES = 444 - MDLLexerGRANT = 445 - MDLLexerREVOKE = 446 - MDLLexerPRODUCTION = 447 - MDLLexerPROTOTYPE = 448 - MDLLexerMANAGE = 449 - MDLLexerDEMO = 450 - MDLLexerMATRIX = 451 - MDLLexerAPPLY = 452 - MDLLexerACCESS = 453 - MDLLexerLEVEL = 454 - MDLLexerUSER = 455 - MDLLexerTASK = 456 - MDLLexerDECISION = 457 - MDLLexerSPLIT = 458 - MDLLexerOUTCOMES = 459 - MDLLexerTARGETING = 460 - MDLLexerNOTIFICATION = 461 - MDLLexerTIMER = 462 - MDLLexerJUMP = 463 - MDLLexerDUE = 464 - MDLLexerOVERVIEW = 465 - MDLLexerDATE = 466 - MDLLexerPARALLEL = 467 - MDLLexerWAIT = 468 - MDLLexerANNOTATION = 469 - MDLLexerBOUNDARY = 470 - MDLLexerINTERRUPTING = 471 - MDLLexerNON = 472 - MDLLexerMULTI = 473 - MDLLexerBY = 474 - MDLLexerREAD = 475 - MDLLexerWRITE = 476 - MDLLexerDESCRIPTION = 477 - MDLLexerDISPLAY = 478 - MDLLexerOFF = 479 - MDLLexerUSERS = 480 - MDLLexerNOT_EQUALS = 481 - MDLLexerLESS_THAN_OR_EQUAL = 482 - MDLLexerGREATER_THAN_OR_EQUAL = 483 - MDLLexerEQUALS = 484 - MDLLexerLESS_THAN = 485 - MDLLexerGREATER_THAN = 486 - MDLLexerPLUS = 487 - MDLLexerMINUS = 488 - MDLLexerSTAR = 489 - MDLLexerSLASH = 490 - MDLLexerPERCENT = 491 - MDLLexerMOD = 492 - MDLLexerDIV = 493 - MDLLexerSEMICOLON = 494 - MDLLexerCOMMA = 495 - MDLLexerDOT = 496 - MDLLexerLPAREN = 497 - MDLLexerRPAREN = 498 - MDLLexerLBRACE = 499 - MDLLexerRBRACE = 500 - MDLLexerLBRACKET = 501 - MDLLexerRBRACKET = 502 - MDLLexerCOLON = 503 - MDLLexerAT = 504 - MDLLexerPIPE = 505 - MDLLexerDOUBLE_COLON = 506 - MDLLexerARROW = 507 - MDLLexerQUESTION = 508 - MDLLexerHASH = 509 - MDLLexerMENDIX_TOKEN = 510 - MDLLexerSTRING_LITERAL = 511 - MDLLexerDOLLAR_STRING = 512 - MDLLexerNUMBER_LITERAL = 513 - MDLLexerVARIABLE = 514 - MDLLexerIDENTIFIER = 515 - MDLLexerHYPHENATED_ID = 516 - MDLLexerQUOTED_IDENTIFIER = 517 + MDLLexerPLUGGABLEWIDGET = 181 + MDLLexerTEXTFILTER = 182 + MDLLexerNUMBERFILTER = 183 + MDLLexerDROPDOWNFILTER = 184 + MDLLexerDATEFILTER = 185 + MDLLexerFILTER = 186 + MDLLexerWIDGET = 187 + MDLLexerWIDGETS = 188 + MDLLexerCAPTION = 189 + MDLLexerICON = 190 + MDLLexerTOOLTIP = 191 + MDLLexerDATASOURCE = 192 + MDLLexerSOURCE_KW = 193 + MDLLexerSELECTION = 194 + MDLLexerFOOTER = 195 + MDLLexerHEADER = 196 + MDLLexerCONTENT = 197 + MDLLexerRENDERMODE = 198 + MDLLexerBINDS = 199 + MDLLexerATTR = 200 + MDLLexerCONTENTPARAMS = 201 + MDLLexerCAPTIONPARAMS = 202 + MDLLexerPARAMS = 203 + MDLLexerVARIABLES_KW = 204 + MDLLexerDESKTOPWIDTH = 205 + MDLLexerTABLETWIDTH = 206 + MDLLexerPHONEWIDTH = 207 + MDLLexerCLASS = 208 + MDLLexerSTYLE = 209 + MDLLexerBUTTONSTYLE = 210 + MDLLexerDESIGN = 211 + MDLLexerPROPERTIES = 212 + MDLLexerDESIGNPROPERTIES = 213 + MDLLexerSTYLING = 214 + MDLLexerCLEAR = 215 + MDLLexerWIDTH = 216 + MDLLexerHEIGHT = 217 + MDLLexerAUTOFILL = 218 + MDLLexerURL = 219 + MDLLexerFOLDER = 220 + MDLLexerPASSING = 221 + MDLLexerCONTEXT = 222 + MDLLexerEDITABLE = 223 + MDLLexerREADONLY = 224 + MDLLexerATTRIBUTES = 225 + MDLLexerFILTERTYPE = 226 + MDLLexerIMAGE = 227 + MDLLexerCOLLECTION = 228 + MDLLexerSTATICIMAGE = 229 + MDLLexerDYNAMICIMAGE = 230 + MDLLexerCUSTOMCONTAINER = 231 + MDLLexerTABCONTAINER = 232 + MDLLexerTABPAGE = 233 + MDLLexerGROUPBOX = 234 + MDLLexerVISIBLE = 235 + MDLLexerSAVECHANGES = 236 + MDLLexerSAVE_CHANGES = 237 + MDLLexerCANCEL_CHANGES = 238 + MDLLexerCLOSE_PAGE = 239 + MDLLexerSHOW_PAGE = 240 + MDLLexerDELETE_ACTION = 241 + MDLLexerDELETE_OBJECT = 242 + MDLLexerCREATE_OBJECT = 243 + MDLLexerCALL_MICROFLOW = 244 + MDLLexerCALL_NANOFLOW = 245 + MDLLexerOPEN_LINK = 246 + MDLLexerSIGN_OUT = 247 + MDLLexerCANCEL = 248 + MDLLexerPRIMARY = 249 + MDLLexerSUCCESS = 250 + MDLLexerDANGER = 251 + MDLLexerWARNING_STYLE = 252 + MDLLexerINFO_STYLE = 253 + MDLLexerTEMPLATE = 254 + MDLLexerONCLICK = 255 + MDLLexerONCHANGE = 256 + MDLLexerTABINDEX = 257 + MDLLexerH1 = 258 + MDLLexerH2 = 259 + MDLLexerH3 = 260 + MDLLexerH4 = 261 + MDLLexerH5 = 262 + MDLLexerH6 = 263 + MDLLexerPARAGRAPH = 264 + MDLLexerSTRING_TYPE = 265 + MDLLexerINTEGER_TYPE = 266 + MDLLexerLONG_TYPE = 267 + MDLLexerDECIMAL_TYPE = 268 + MDLLexerBOOLEAN_TYPE = 269 + MDLLexerDATETIME_TYPE = 270 + MDLLexerDATE_TYPE = 271 + MDLLexerAUTONUMBER_TYPE = 272 + MDLLexerBINARY_TYPE = 273 + MDLLexerHASHEDSTRING_TYPE = 274 + MDLLexerCURRENCY_TYPE = 275 + MDLLexerFLOAT_TYPE = 276 + MDLLexerSTRINGTEMPLATE_TYPE = 277 + MDLLexerENUM_TYPE = 278 + MDLLexerCOUNT = 279 + MDLLexerSUM = 280 + MDLLexerAVG = 281 + MDLLexerMIN = 282 + MDLLexerMAX = 283 + MDLLexerLENGTH = 284 + MDLLexerTRIM = 285 + MDLLexerCOALESCE = 286 + MDLLexerCAST = 287 + MDLLexerAND = 288 + MDLLexerOR = 289 + MDLLexerNOT = 290 + MDLLexerNULL = 291 + MDLLexerIN = 292 + MDLLexerBETWEEN = 293 + MDLLexerLIKE = 294 + MDLLexerMATCH = 295 + MDLLexerEXISTS = 296 + MDLLexerUNIQUE = 297 + MDLLexerDEFAULT = 298 + MDLLexerTRUE = 299 + MDLLexerFALSE = 300 + MDLLexerVALIDATION = 301 + MDLLexerFEEDBACK = 302 + MDLLexerRULE = 303 + MDLLexerREQUIRED = 304 + MDLLexerERROR = 305 + MDLLexerRAISE = 306 + MDLLexerRANGE = 307 + MDLLexerREGEX = 308 + MDLLexerPATTERN = 309 + MDLLexerEXPRESSION = 310 + MDLLexerXPATH = 311 + MDLLexerCONSTRAINT = 312 + MDLLexerCALCULATED = 313 + MDLLexerREST = 314 + MDLLexerSERVICE = 315 + MDLLexerSERVICES = 316 + MDLLexerODATA = 317 + MDLLexerBASE = 318 + MDLLexerAUTH = 319 + MDLLexerAUTHENTICATION = 320 + MDLLexerBASIC = 321 + MDLLexerNOTHING = 322 + MDLLexerOAUTH = 323 + MDLLexerOPERATION = 324 + MDLLexerMETHOD = 325 + MDLLexerPATH = 326 + MDLLexerTIMEOUT = 327 + MDLLexerBODY = 328 + MDLLexerRESPONSE = 329 + MDLLexerREQUEST = 330 + MDLLexerSEND = 331 + MDLLexerJSON = 332 + MDLLexerXML = 333 + MDLLexerSTATUS = 334 + MDLLexerFILE_KW = 335 + MDLLexerVERSION = 336 + MDLLexerGET = 337 + MDLLexerPOST = 338 + MDLLexerPUT = 339 + MDLLexerPATCH = 340 + MDLLexerAPI = 341 + MDLLexerCLIENT = 342 + MDLLexerCLIENTS = 343 + MDLLexerPUBLISH = 344 + MDLLexerPUBLISHED = 345 + MDLLexerEXPOSE = 346 + MDLLexerCONTRACT = 347 + MDLLexerNAMESPACE_KW = 348 + MDLLexerSESSION = 349 + MDLLexerGUEST = 350 + MDLLexerPAGING = 351 + MDLLexerNOT_SUPPORTED = 352 + MDLLexerUSERNAME = 353 + MDLLexerPASSWORD = 354 + MDLLexerCONNECTION = 355 + MDLLexerDATABASE = 356 + MDLLexerQUERY = 357 + MDLLexerMAP = 358 + MDLLexerMAPPING = 359 + MDLLexerIMPORT = 360 + MDLLexerINTO = 361 + MDLLexerBATCH = 362 + MDLLexerLINK = 363 + MDLLexerEXPORT = 364 + MDLLexerGENERATE = 365 + MDLLexerCONNECTOR = 366 + MDLLexerEXEC = 367 + MDLLexerTABLES = 368 + MDLLexerVIEWS = 369 + MDLLexerEXPOSED = 370 + MDLLexerPARAMETER = 371 + MDLLexerPARAMETERS = 372 + MDLLexerHEADERS = 373 + MDLLexerNAVIGATION = 374 + MDLLexerMENU_KW = 375 + MDLLexerHOMES = 376 + MDLLexerHOME = 377 + MDLLexerLOGIN = 378 + MDLLexerFOUND = 379 + MDLLexerMODULES = 380 + MDLLexerENTITIES = 381 + MDLLexerASSOCIATIONS = 382 + MDLLexerMICROFLOWS = 383 + MDLLexerNANOFLOWS = 384 + MDLLexerWORKFLOWS = 385 + MDLLexerENUMERATIONS = 386 + MDLLexerCONSTANTS = 387 + MDLLexerCONNECTIONS = 388 + MDLLexerDEFINE = 389 + MDLLexerFRAGMENT = 390 + MDLLexerFRAGMENTS = 391 + MDLLexerINSERT = 392 + MDLLexerBEFORE = 393 + MDLLexerAFTER = 394 + MDLLexerUPDATE = 395 + MDLLexerREFRESH = 396 + MDLLexerCHECK = 397 + MDLLexerBUILD = 398 + MDLLexerEXECUTE = 399 + MDLLexerSCRIPT = 400 + MDLLexerLINT = 401 + MDLLexerRULES = 402 + MDLLexerTEXT = 403 + MDLLexerSARIF = 404 + MDLLexerMESSAGE = 405 + MDLLexerMESSAGES = 406 + MDLLexerCHANNELS = 407 + MDLLexerCOMMENT = 408 + MDLLexerCATALOG = 409 + MDLLexerFORCE = 410 + MDLLexerBACKGROUND = 411 + MDLLexerCALLERS = 412 + MDLLexerCALLEES = 413 + MDLLexerREFERENCES = 414 + MDLLexerTRANSITIVE = 415 + MDLLexerIMPACT = 416 + MDLLexerDEPTH = 417 + MDLLexerSTRUCTURE = 418 + MDLLexerTYPE = 419 + MDLLexerVALUE = 420 + MDLLexerVALUES = 421 + MDLLexerSINGLE = 422 + MDLLexerMULTIPLE = 423 + MDLLexerNONE = 424 + MDLLexerBOTH = 425 + MDLLexerTO = 426 + MDLLexerOF = 427 + MDLLexerOVER = 428 + MDLLexerFOR = 429 + MDLLexerREPLACE = 430 + MDLLexerMEMBERS = 431 + MDLLexerATTRIBUTE_NAME = 432 + MDLLexerFORMAT = 433 + MDLLexerSQL = 434 + MDLLexerWITHOUT = 435 + MDLLexerDRY = 436 + MDLLexerRUN = 437 + MDLLexerWIDGETTYPE = 438 + MDLLexerV3 = 439 + MDLLexerBUSINESS = 440 + MDLLexerEVENT = 441 + MDLLexerSUBSCRIBE = 442 + MDLLexerSETTINGS = 443 + MDLLexerCONFIGURATION = 444 + MDLLexerSECURITY = 445 + MDLLexerROLE = 446 + MDLLexerROLES = 447 + MDLLexerGRANT = 448 + MDLLexerREVOKE = 449 + MDLLexerPRODUCTION = 450 + MDLLexerPROTOTYPE = 451 + MDLLexerMANAGE = 452 + MDLLexerDEMO = 453 + MDLLexerMATRIX = 454 + MDLLexerAPPLY = 455 + MDLLexerACCESS = 456 + MDLLexerLEVEL = 457 + MDLLexerUSER = 458 + MDLLexerTASK = 459 + MDLLexerDECISION = 460 + MDLLexerSPLIT = 461 + MDLLexerOUTCOMES = 462 + MDLLexerTARGETING = 463 + MDLLexerNOTIFICATION = 464 + MDLLexerTIMER = 465 + MDLLexerJUMP = 466 + MDLLexerDUE = 467 + MDLLexerOVERVIEW = 468 + MDLLexerDATE = 469 + MDLLexerPARALLEL = 470 + MDLLexerWAIT = 471 + MDLLexerANNOTATION = 472 + MDLLexerBOUNDARY = 473 + MDLLexerINTERRUPTING = 474 + MDLLexerNON = 475 + MDLLexerMULTI = 476 + MDLLexerBY = 477 + MDLLexerREAD = 478 + MDLLexerWRITE = 479 + MDLLexerDESCRIPTION = 480 + MDLLexerDISPLAY = 481 + MDLLexerOFF = 482 + MDLLexerUSERS = 483 + MDLLexerNOT_EQUALS = 484 + MDLLexerLESS_THAN_OR_EQUAL = 485 + MDLLexerGREATER_THAN_OR_EQUAL = 486 + MDLLexerEQUALS = 487 + MDLLexerLESS_THAN = 488 + MDLLexerGREATER_THAN = 489 + MDLLexerPLUS = 490 + MDLLexerMINUS = 491 + MDLLexerSTAR = 492 + MDLLexerSLASH = 493 + MDLLexerPERCENT = 494 + MDLLexerMOD = 495 + MDLLexerDIV = 496 + MDLLexerSEMICOLON = 497 + MDLLexerCOMMA = 498 + MDLLexerDOT = 499 + MDLLexerLPAREN = 500 + MDLLexerRPAREN = 501 + MDLLexerLBRACE = 502 + MDLLexerRBRACE = 503 + MDLLexerLBRACKET = 504 + MDLLexerRBRACKET = 505 + MDLLexerCOLON = 506 + MDLLexerAT = 507 + MDLLexerPIPE = 508 + MDLLexerDOUBLE_COLON = 509 + MDLLexerARROW = 510 + MDLLexerQUESTION = 511 + MDLLexerHASH = 512 + MDLLexerMENDIX_TOKEN = 513 + MDLLexerSTRING_LITERAL = 514 + MDLLexerDOLLAR_STRING = 515 + MDLLexerNUMBER_LITERAL = 516 + MDLLexerVARIABLE = 517 + MDLLexerIDENTIFIER = 518 + MDLLexerHYPHENATED_ID = 519 + MDLLexerQUOTED_IDENTIFIER = 520 ) diff --git a/mdl/grammar/parser/mdl_parser.go b/mdl/grammar/parser/mdl_parser.go index 75e1da4..9d27baa 100644 --- a/mdl/grammar/parser/mdl_parser.go +++ b/mdl/grammar/parser/mdl_parser.go @@ -60,10 +60,10 @@ func mdlparserParserInit() { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "'<='", "'>='", "'='", "'<'", "'>'", "'+'", - "'-'", "'*'", "'/'", "'%'", "", "", "';'", "','", "'.'", "'('", "')'", - "'{'", "'}'", "'['", "']'", "':'", "'@'", "'|'", "'::'", "'->'", "'?'", - "'#'", + "", "", "", "", "", "", "", "", "", "'<='", "'>='", "'='", "'<'", "'>'", + "'+'", "'-'", "'*'", "'/'", "'%'", "", "", "';'", "','", "'.'", "'('", + "')'", "'{'", "'}'", "'['", "']'", "':'", "'@'", "'|'", "'::'", "'->'", + "'?'", "'#'", } staticData.SymbolicNames = []string{ "", "WS", "DOC_COMMENT", "BLOCK_COMMENT", "LINE_COMMENT", "IS_NOT_NULL", @@ -93,56 +93,57 @@ func mdlparserParserInit() { "ACTIONBUTTON", "LINKBUTTON", "BUTTON", "TITLE", "DYNAMICTEXT", "DYNAMIC", "STATICTEXT", "LABEL", "TEXTBOX", "TEXTAREA", "DATEPICKER", "RADIOBUTTONS", "DROPDOWN", "COMBOBOX", "CHECKBOX", "REFERENCESELECTOR", "INPUTREFERENCESETSELECTOR", - "FILEINPUT", "IMAGEINPUT", "CUSTOMWIDGET", "TEXTFILTER", "NUMBERFILTER", - "DROPDOWNFILTER", "DATEFILTER", "FILTER", "WIDGET", "WIDGETS", "CAPTION", - "ICON", "TOOLTIP", "DATASOURCE", "SOURCE_KW", "SELECTION", "FOOTER", - "HEADER", "CONTENT", "RENDERMODE", "BINDS", "ATTR", "CONTENTPARAMS", - "CAPTIONPARAMS", "PARAMS", "VARIABLES_KW", "DESKTOPWIDTH", "TABLETWIDTH", - "PHONEWIDTH", "CLASS", "STYLE", "BUTTONSTYLE", "DESIGN", "PROPERTIES", - "DESIGNPROPERTIES", "STYLING", "CLEAR", "WIDTH", "HEIGHT", "AUTOFILL", - "URL", "FOLDER", "PASSING", "CONTEXT", "EDITABLE", "READONLY", "ATTRIBUTES", - "FILTERTYPE", "IMAGE", "COLLECTION", "STATICIMAGE", "DYNAMICIMAGE", - "CUSTOMCONTAINER", "GROUPBOX", "VISIBLE", "SAVECHANGES", "SAVE_CHANGES", - "CANCEL_CHANGES", "CLOSE_PAGE", "SHOW_PAGE", "DELETE_ACTION", "DELETE_OBJECT", - "CREATE_OBJECT", "CALL_MICROFLOW", "CALL_NANOFLOW", "OPEN_LINK", "SIGN_OUT", - "CANCEL", "PRIMARY", "SUCCESS", "DANGER", "WARNING_STYLE", "INFO_STYLE", - "TEMPLATE", "ONCLICK", "ONCHANGE", "TABINDEX", "H1", "H2", "H3", "H4", - "H5", "H6", "PARAGRAPH", "STRING_TYPE", "INTEGER_TYPE", "LONG_TYPE", - "DECIMAL_TYPE", "BOOLEAN_TYPE", "DATETIME_TYPE", "DATE_TYPE", "AUTONUMBER_TYPE", - "BINARY_TYPE", "HASHEDSTRING_TYPE", "CURRENCY_TYPE", "FLOAT_TYPE", "STRINGTEMPLATE_TYPE", - "ENUM_TYPE", "COUNT", "SUM", "AVG", "MIN", "MAX", "LENGTH", "TRIM", - "COALESCE", "CAST", "AND", "OR", "NOT", "NULL", "IN", "BETWEEN", "LIKE", - "MATCH", "EXISTS", "UNIQUE", "DEFAULT", "TRUE", "FALSE", "VALIDATION", - "FEEDBACK", "RULE", "REQUIRED", "ERROR", "RAISE", "RANGE", "REGEX", - "PATTERN", "EXPRESSION", "XPATH", "CONSTRAINT", "CALCULATED", "REST", - "SERVICE", "SERVICES", "ODATA", "BASE", "AUTH", "AUTHENTICATION", "BASIC", - "NOTHING", "OAUTH", "OPERATION", "METHOD", "PATH", "TIMEOUT", "BODY", - "RESPONSE", "REQUEST", "SEND", "JSON", "XML", "STATUS", "FILE_KW", "VERSION", - "GET", "POST", "PUT", "PATCH", "API", "CLIENT", "CLIENTS", "PUBLISH", - "PUBLISHED", "EXPOSE", "CONTRACT", "NAMESPACE_KW", "SESSION", "GUEST", - "PAGING", "NOT_SUPPORTED", "USERNAME", "PASSWORD", "CONNECTION", "DATABASE", - "QUERY", "MAP", "MAPPING", "IMPORT", "INTO", "BATCH", "LINK", "EXPORT", - "GENERATE", "CONNECTOR", "EXEC", "TABLES", "VIEWS", "EXPOSED", "PARAMETER", - "PARAMETERS", "HEADERS", "NAVIGATION", "MENU_KW", "HOMES", "HOME", "LOGIN", - "FOUND", "MODULES", "ENTITIES", "ASSOCIATIONS", "MICROFLOWS", "NANOFLOWS", - "WORKFLOWS", "ENUMERATIONS", "CONSTANTS", "CONNECTIONS", "DEFINE", "FRAGMENT", - "FRAGMENTS", "INSERT", "BEFORE", "AFTER", "UPDATE", "REFRESH", "CHECK", - "BUILD", "EXECUTE", "SCRIPT", "LINT", "RULES", "TEXT", "SARIF", "MESSAGE", - "MESSAGES", "CHANNELS", "COMMENT", "CATALOG", "FORCE", "BACKGROUND", - "CALLERS", "CALLEES", "REFERENCES", "TRANSITIVE", "IMPACT", "DEPTH", - "STRUCTURE", "TYPE", "VALUE", "VALUES", "SINGLE", "MULTIPLE", "NONE", - "BOTH", "TO", "OF", "OVER", "FOR", "REPLACE", "MEMBERS", "ATTRIBUTE_NAME", - "FORMAT", "SQL", "WITHOUT", "DRY", "RUN", "WIDGETTYPE", "V3", "BUSINESS", - "EVENT", "SUBSCRIBE", "SETTINGS", "CONFIGURATION", "SECURITY", "ROLE", - "ROLES", "GRANT", "REVOKE", "PRODUCTION", "PROTOTYPE", "MANAGE", "DEMO", - "MATRIX", "APPLY", "ACCESS", "LEVEL", "USER", "TASK", "DECISION", "SPLIT", - "OUTCOMES", "TARGETING", "NOTIFICATION", "TIMER", "JUMP", "DUE", "OVERVIEW", - "DATE", "PARALLEL", "WAIT", "ANNOTATION", "BOUNDARY", "INTERRUPTING", - "NON", "MULTI", "BY", "READ", "WRITE", "DESCRIPTION", "DISPLAY", "OFF", - "USERS", "NOT_EQUALS", "LESS_THAN_OR_EQUAL", "GREATER_THAN_OR_EQUAL", - "EQUALS", "LESS_THAN", "GREATER_THAN", "PLUS", "MINUS", "STAR", "SLASH", - "PERCENT", "MOD", "DIV", "SEMICOLON", "COMMA", "DOT", "LPAREN", "RPAREN", - "LBRACE", "RBRACE", "LBRACKET", "RBRACKET", "COLON", "AT", "PIPE", "DOUBLE_COLON", + "FILEINPUT", "IMAGEINPUT", "CUSTOMWIDGET", "PLUGGABLEWIDGET", "TEXTFILTER", + "NUMBERFILTER", "DROPDOWNFILTER", "DATEFILTER", "FILTER", "WIDGET", + "WIDGETS", "CAPTION", "ICON", "TOOLTIP", "DATASOURCE", "SOURCE_KW", + "SELECTION", "FOOTER", "HEADER", "CONTENT", "RENDERMODE", "BINDS", "ATTR", + "CONTENTPARAMS", "CAPTIONPARAMS", "PARAMS", "VARIABLES_KW", "DESKTOPWIDTH", + "TABLETWIDTH", "PHONEWIDTH", "CLASS", "STYLE", "BUTTONSTYLE", "DESIGN", + "PROPERTIES", "DESIGNPROPERTIES", "STYLING", "CLEAR", "WIDTH", "HEIGHT", + "AUTOFILL", "URL", "FOLDER", "PASSING", "CONTEXT", "EDITABLE", "READONLY", + "ATTRIBUTES", "FILTERTYPE", "IMAGE", "COLLECTION", "STATICIMAGE", "DYNAMICIMAGE", + "CUSTOMCONTAINER", "TABCONTAINER", "TABPAGE", "GROUPBOX", "VISIBLE", + "SAVECHANGES", "SAVE_CHANGES", "CANCEL_CHANGES", "CLOSE_PAGE", "SHOW_PAGE", + "DELETE_ACTION", "DELETE_OBJECT", "CREATE_OBJECT", "CALL_MICROFLOW", + "CALL_NANOFLOW", "OPEN_LINK", "SIGN_OUT", "CANCEL", "PRIMARY", "SUCCESS", + "DANGER", "WARNING_STYLE", "INFO_STYLE", "TEMPLATE", "ONCLICK", "ONCHANGE", + "TABINDEX", "H1", "H2", "H3", "H4", "H5", "H6", "PARAGRAPH", "STRING_TYPE", + "INTEGER_TYPE", "LONG_TYPE", "DECIMAL_TYPE", "BOOLEAN_TYPE", "DATETIME_TYPE", + "DATE_TYPE", "AUTONUMBER_TYPE", "BINARY_TYPE", "HASHEDSTRING_TYPE", + "CURRENCY_TYPE", "FLOAT_TYPE", "STRINGTEMPLATE_TYPE", "ENUM_TYPE", "COUNT", + "SUM", "AVG", "MIN", "MAX", "LENGTH", "TRIM", "COALESCE", "CAST", "AND", + "OR", "NOT", "NULL", "IN", "BETWEEN", "LIKE", "MATCH", "EXISTS", "UNIQUE", + "DEFAULT", "TRUE", "FALSE", "VALIDATION", "FEEDBACK", "RULE", "REQUIRED", + "ERROR", "RAISE", "RANGE", "REGEX", "PATTERN", "EXPRESSION", "XPATH", + "CONSTRAINT", "CALCULATED", "REST", "SERVICE", "SERVICES", "ODATA", + "BASE", "AUTH", "AUTHENTICATION", "BASIC", "NOTHING", "OAUTH", "OPERATION", + "METHOD", "PATH", "TIMEOUT", "BODY", "RESPONSE", "REQUEST", "SEND", + "JSON", "XML", "STATUS", "FILE_KW", "VERSION", "GET", "POST", "PUT", + "PATCH", "API", "CLIENT", "CLIENTS", "PUBLISH", "PUBLISHED", "EXPOSE", + "CONTRACT", "NAMESPACE_KW", "SESSION", "GUEST", "PAGING", "NOT_SUPPORTED", + "USERNAME", "PASSWORD", "CONNECTION", "DATABASE", "QUERY", "MAP", "MAPPING", + "IMPORT", "INTO", "BATCH", "LINK", "EXPORT", "GENERATE", "CONNECTOR", + "EXEC", "TABLES", "VIEWS", "EXPOSED", "PARAMETER", "PARAMETERS", "HEADERS", + "NAVIGATION", "MENU_KW", "HOMES", "HOME", "LOGIN", "FOUND", "MODULES", + "ENTITIES", "ASSOCIATIONS", "MICROFLOWS", "NANOFLOWS", "WORKFLOWS", + "ENUMERATIONS", "CONSTANTS", "CONNECTIONS", "DEFINE", "FRAGMENT", "FRAGMENTS", + "INSERT", "BEFORE", "AFTER", "UPDATE", "REFRESH", "CHECK", "BUILD", + "EXECUTE", "SCRIPT", "LINT", "RULES", "TEXT", "SARIF", "MESSAGE", "MESSAGES", + "CHANNELS", "COMMENT", "CATALOG", "FORCE", "BACKGROUND", "CALLERS", + "CALLEES", "REFERENCES", "TRANSITIVE", "IMPACT", "DEPTH", "STRUCTURE", + "TYPE", "VALUE", "VALUES", "SINGLE", "MULTIPLE", "NONE", "BOTH", "TO", + "OF", "OVER", "FOR", "REPLACE", "MEMBERS", "ATTRIBUTE_NAME", "FORMAT", + "SQL", "WITHOUT", "DRY", "RUN", "WIDGETTYPE", "V3", "BUSINESS", "EVENT", + "SUBSCRIBE", "SETTINGS", "CONFIGURATION", "SECURITY", "ROLE", "ROLES", + "GRANT", "REVOKE", "PRODUCTION", "PROTOTYPE", "MANAGE", "DEMO", "MATRIX", + "APPLY", "ACCESS", "LEVEL", "USER", "TASK", "DECISION", "SPLIT", "OUTCOMES", + "TARGETING", "NOTIFICATION", "TIMER", "JUMP", "DUE", "OVERVIEW", "DATE", + "PARALLEL", "WAIT", "ANNOTATION", "BOUNDARY", "INTERRUPTING", "NON", + "MULTI", "BY", "READ", "WRITE", "DESCRIPTION", "DISPLAY", "OFF", "USERS", + "NOT_EQUALS", "LESS_THAN_OR_EQUAL", "GREATER_THAN_OR_EQUAL", "EQUALS", + "LESS_THAN", "GREATER_THAN", "PLUS", "MINUS", "STAR", "SLASH", "PERCENT", + "MOD", "DIV", "SEMICOLON", "COMMA", "DOT", "LPAREN", "RPAREN", "LBRACE", + "RBRACE", "LBRACKET", "RBRACKET", "COLON", "AT", "PIPE", "DOUBLE_COLON", "ARROW", "QUESTION", "HASH", "MENDIX_TOKEN", "STRING_LITERAL", "DOLLAR_STRING", "NUMBER_LITERAL", "VARIABLE", "IDENTIFIER", "HYPHENATED_ID", "QUOTED_IDENTIFIER", } @@ -248,7 +249,7 @@ func mdlparserParserInit() { } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 517, 6079, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, + 4, 1, 520, 6136, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, @@ -356,291 +357,297 @@ func mdlparserParserInit() { 9, 3, 9, 1007, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 1019, 8, 9, 10, 9, 12, 9, 1022, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1030, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, - 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1043, 8, 11, 1, 12, 1, - 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, - 1, 12, 1, 12, 3, 12, 1059, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, - 13, 1066, 8, 13, 10, 13, 12, 13, 1069, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, - 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, - 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1091, 8, 17, 1, 17, 1, 17, - 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 1103, 8, - 17, 10, 17, 12, 17, 1106, 9, 17, 1, 17, 3, 17, 1109, 8, 17, 1, 18, 1, 18, - 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1118, 8, 18, 1, 18, 3, 18, 1121, - 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 1127, 8, 18, 10, 18, 12, 18, - 1130, 9, 18, 1, 18, 1, 18, 3, 18, 1134, 8, 18, 3, 18, 1136, 8, 18, 1, 19, - 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, + 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1046, + 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, + 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1062, 8, 12, 1, 13, 1, 13, 1, 13, + 1, 13, 1, 13, 5, 13, 1069, 8, 13, 10, 13, 12, 13, 1072, 9, 13, 1, 14, 1, + 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, + 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1094, 8, + 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, + 5, 17, 1106, 8, 17, 10, 17, 12, 17, 1109, 9, 17, 1, 17, 3, 17, 1112, 8, + 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1121, 8, 18, + 1, 18, 3, 18, 1124, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 1130, 8, + 18, 10, 18, 12, 18, 1133, 9, 18, 1, 18, 1, 18, 3, 18, 1137, 8, 18, 3, 18, + 1139, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, - 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1211, - 8, 19, 3, 19, 1213, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, - 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1226, 8, 20, 1, 21, 1, 21, 1, 21, - 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1237, 8, 21, 1, 21, 1, - 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1246, 8, 21, 3, 21, 1248, - 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, - 21, 1259, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1265, 8, 21, 1, 21, - 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1273, 8, 21, 1, 21, 1, 21, 1, - 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1284, 8, 21, 3, 21, - 1286, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1294, 8, - 21, 3, 21, 1296, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, - 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, - 22, 1315, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1323, - 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, - 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1339, 8, 25, 1, 26, 1, 26, 1, 26, + 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, + 19, 1, 19, 3, 19, 1214, 8, 19, 3, 19, 1216, 8, 19, 1, 20, 1, 20, 1, 20, + 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1229, 8, + 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, + 1240, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1249, + 8, 21, 3, 21, 1251, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, + 21, 1, 21, 1, 21, 3, 21, 1262, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, + 1268, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1276, 8, + 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, + 1287, 8, 21, 3, 21, 1289, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, + 21, 3, 21, 1297, 8, 21, 3, 21, 1299, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, + 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, + 22, 1, 22, 1, 22, 3, 22, 1318, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, + 1, 23, 3, 23, 1326, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, + 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1342, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, - 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1363, - 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, - 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1379, 8, 28, 1, 29, 1, 29, 1, 29, - 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, - 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, - 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, - 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, - 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, - 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, - 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, - 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1463, 8, 38, 1, 39, 1, 39, - 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1472, 8, 39, 1, 39, 1, 39, 1, - 39, 1, 39, 5, 39, 1478, 8, 39, 10, 39, 12, 39, 1481, 9, 39, 1, 39, 1, 39, - 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1494, - 8, 41, 1, 42, 1, 42, 1, 42, 5, 42, 1499, 8, 42, 10, 42, 12, 42, 1502, 9, - 42, 1, 43, 1, 43, 1, 43, 5, 43, 1507, 8, 43, 10, 43, 12, 43, 1510, 9, 43, - 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1521, - 8, 44, 10, 44, 12, 44, 1524, 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, - 1, 44, 1, 44, 1, 44, 5, 44, 1534, 8, 44, 10, 44, 12, 44, 1537, 9, 44, 1, - 44, 3, 44, 1540, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1546, 8, 45, - 1, 45, 3, 45, 1549, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1555, 8, - 45, 1, 45, 3, 45, 1558, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1564, - 8, 45, 1, 45, 1, 45, 3, 45, 1568, 8, 45, 1, 45, 1, 45, 3, 45, 1572, 8, - 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1578, 8, 45, 1, 45, 1, 45, 1, 45, - 3, 45, 1583, 8, 45, 1, 45, 3, 45, 1586, 8, 45, 3, 45, 1588, 8, 45, 1, 46, - 1, 46, 1, 46, 1, 46, 3, 46, 1594, 8, 46, 1, 47, 1, 47, 3, 47, 1598, 8, - 47, 1, 47, 1, 47, 3, 47, 1602, 8, 47, 1, 47, 3, 47, 1605, 8, 47, 1, 48, - 1, 48, 3, 48, 1609, 8, 48, 1, 48, 5, 48, 1612, 8, 48, 10, 48, 12, 48, 1615, - 9, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1621, 8, 49, 1, 50, 1, 50, 1, - 50, 5, 50, 1626, 8, 50, 10, 50, 12, 50, 1629, 9, 50, 1, 51, 3, 51, 1632, - 8, 51, 1, 51, 5, 51, 1635, 8, 51, 10, 51, 12, 51, 1638, 9, 51, 1, 51, 1, - 51, 1, 51, 1, 51, 5, 51, 1644, 8, 51, 10, 51, 12, 51, 1647, 9, 51, 1, 52, - 1, 52, 1, 52, 3, 52, 1652, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 1657, 8, - 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1663, 8, 53, 1, 53, 1, 53, 1, 53, - 3, 53, 1668, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1673, 8, 53, 1, 53, 1, - 53, 1, 53, 3, 53, 1678, 8, 53, 1, 53, 1, 53, 3, 53, 1682, 8, 53, 1, 53, - 3, 53, 1685, 8, 53, 3, 53, 1687, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 3, - 54, 1693, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, - 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, + 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, + 1, 26, 3, 26, 1366, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, + 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1382, 8, 28, + 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, + 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, + 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, + 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, + 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, + 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, + 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, + 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1466, + 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1475, 8, + 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1481, 8, 39, 10, 39, 12, 39, 1484, + 9, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, + 41, 1, 41, 3, 41, 1497, 8, 41, 1, 42, 1, 42, 1, 42, 5, 42, 1502, 8, 42, + 10, 42, 12, 42, 1505, 9, 42, 1, 43, 1, 43, 1, 43, 5, 43, 1510, 8, 43, 10, + 43, 12, 43, 1513, 9, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, + 1, 44, 1, 44, 5, 44, 1524, 8, 44, 10, 44, 12, 44, 1527, 9, 44, 1, 44, 1, + 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1537, 8, 44, 10, 44, + 12, 44, 1540, 9, 44, 1, 44, 3, 44, 1543, 8, 44, 1, 45, 1, 45, 1, 45, 1, + 45, 3, 45, 1549, 8, 45, 1, 45, 3, 45, 1552, 8, 45, 1, 45, 1, 45, 1, 45, + 1, 45, 3, 45, 1558, 8, 45, 1, 45, 3, 45, 1561, 8, 45, 1, 45, 1, 45, 1, + 45, 1, 45, 3, 45, 1567, 8, 45, 1, 45, 1, 45, 3, 45, 1571, 8, 45, 1, 45, + 1, 45, 3, 45, 1575, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1581, 8, + 45, 1, 45, 1, 45, 1, 45, 3, 45, 1586, 8, 45, 1, 45, 3, 45, 1589, 8, 45, + 3, 45, 1591, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1597, 8, 46, 1, + 47, 1, 47, 3, 47, 1601, 8, 47, 1, 47, 1, 47, 3, 47, 1605, 8, 47, 1, 47, + 3, 47, 1608, 8, 47, 1, 48, 1, 48, 3, 48, 1612, 8, 48, 1, 48, 5, 48, 1615, + 8, 48, 10, 48, 12, 48, 1618, 9, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, + 1624, 8, 49, 1, 50, 1, 50, 1, 50, 5, 50, 1629, 8, 50, 10, 50, 12, 50, 1632, + 9, 50, 1, 51, 3, 51, 1635, 8, 51, 1, 51, 5, 51, 1638, 8, 51, 10, 51, 12, + 51, 1641, 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 1647, 8, 51, 10, 51, + 12, 51, 1650, 9, 51, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1656, 8, 52, 1, + 53, 1, 53, 1, 53, 3, 53, 1661, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, + 1667, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1672, 8, 53, 1, 53, 1, 53, 1, + 53, 3, 53, 1677, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1682, 8, 53, 1, 53, + 1, 53, 3, 53, 1686, 8, 53, 1, 53, 3, 53, 1689, 8, 53, 3, 53, 1691, 8, 53, + 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1697, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, - 1, 54, 3, 54, 1725, 8, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 3, - 56, 1733, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, - 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, - 56, 3, 56, 1754, 8, 56, 1, 57, 3, 57, 1757, 8, 57, 1, 57, 1, 57, 1, 57, - 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 1766, 8, 58, 10, 58, 12, 58, 1769, 9, - 58, 1, 59, 1, 59, 3, 59, 1773, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 1778, - 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1787, 8, - 61, 1, 62, 4, 62, 1790, 8, 62, 11, 62, 12, 62, 1791, 1, 63, 1, 63, 1, 63, - 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1804, 8, 63, 1, - 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, + 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, + 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1729, 8, 54, 1, 55, 1, 55, + 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1737, 8, 56, 1, 56, 1, 56, 1, 56, 1, + 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, + 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1758, 8, 56, 1, 57, 3, 57, 1761, + 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 1770, 8, + 58, 10, 58, 12, 58, 1773, 9, 58, 1, 59, 1, 59, 3, 59, 1777, 8, 59, 1, 60, + 1, 60, 1, 60, 3, 60, 1782, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, + 61, 1, 61, 3, 61, 1791, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, + 1, 61, 1, 61, 1, 61, 5, 61, 1802, 8, 61, 10, 61, 12, 61, 1805, 9, 61, 1, + 61, 1, 61, 3, 61, 1809, 8, 61, 1, 62, 4, 62, 1812, 8, 62, 11, 62, 12, 62, + 1813, 1, 63, 1, 63, 3, 63, 1818, 8, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1823, + 8, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1828, 8, 63, 1, 63, 1, 63, 1, 63, 1, + 63, 1, 63, 3, 63, 1835, 8, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, - 65, 1, 65, 1, 65, 1, 65, 5, 65, 1831, 8, 65, 10, 65, 12, 65, 1834, 9, 65, - 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1841, 8, 65, 10, 65, 12, 65, - 1844, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, + 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1862, + 8, 65, 10, 65, 12, 65, 1865, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, + 5, 65, 1872, 8, 65, 10, 65, 12, 65, 1875, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, - 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1874, - 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, - 66, 1, 66, 1, 66, 3, 66, 1888, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, - 3, 67, 1895, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, - 67, 1, 67, 1, 67, 1, 67, 3, 67, 1908, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, - 1, 68, 3, 68, 1915, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, - 68, 1923, 8, 68, 1, 69, 1, 69, 1, 69, 3, 69, 1928, 8, 69, 1, 70, 4, 70, - 1931, 8, 70, 11, 70, 12, 70, 1932, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1939, - 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1947, 8, 72, 1, - 73, 1, 73, 1, 73, 5, 73, 1952, 8, 73, 10, 73, 12, 73, 1955, 9, 73, 1, 74, - 3, 74, 1958, 8, 74, 1, 74, 1, 74, 3, 74, 1962, 8, 74, 1, 74, 3, 74, 1965, - 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, - 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1982, 8, 75, 1, 76, 4, 76, - 1985, 8, 76, 11, 76, 12, 76, 1986, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, - 78, 1, 78, 3, 78, 1996, 8, 78, 1, 78, 3, 78, 1999, 8, 78, 1, 79, 4, 79, - 2002, 8, 79, 11, 79, 12, 79, 2003, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, - 80, 2011, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 2017, 8, 81, 10, 81, - 12, 81, 2020, 9, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, - 82, 1, 83, 1, 83, 1, 83, 3, 83, 2033, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, - 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, - 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, - 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2069, - 8, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, - 86, 1, 86, 1, 86, 1, 86, 3, 86, 2084, 8, 86, 1, 87, 1, 87, 1, 87, 5, 87, - 2089, 8, 87, 10, 87, 12, 87, 2092, 9, 87, 1, 88, 1, 88, 1, 88, 5, 88, 2097, - 8, 88, 10, 88, 12, 88, 2100, 9, 88, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, - 2106, 8, 89, 1, 89, 1, 89, 3, 89, 2110, 8, 89, 1, 89, 3, 89, 2113, 8, 89, - 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 2119, 8, 89, 1, 89, 3, 89, 2122, 8, - 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 2129, 8, 90, 1, 90, 1, 90, - 3, 90, 2133, 8, 90, 1, 90, 3, 90, 2136, 8, 90, 1, 90, 1, 90, 1, 90, 3, - 90, 2141, 8, 90, 1, 91, 1, 91, 1, 91, 5, 91, 2146, 8, 91, 10, 91, 12, 91, - 2149, 9, 91, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2155, 8, 92, 1, 93, 1, - 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, - 5, 95, 2169, 8, 95, 10, 95, 12, 95, 2172, 9, 95, 1, 96, 1, 96, 3, 96, 2176, - 8, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 3, 97, 2184, 8, 97, 1, - 98, 1, 98, 1, 98, 1, 98, 3, 98, 2190, 8, 98, 1, 99, 4, 99, 2193, 8, 99, - 11, 99, 12, 99, 2194, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2201, 8, - 100, 1, 101, 5, 101, 2204, 8, 101, 10, 101, 12, 101, 2207, 9, 101, 1, 102, - 5, 102, 2210, 8, 102, 10, 102, 12, 102, 2213, 9, 102, 1, 102, 1, 102, 3, - 102, 2217, 8, 102, 1, 102, 5, 102, 2220, 8, 102, 10, 102, 12, 102, 2223, - 9, 102, 1, 102, 1, 102, 3, 102, 2227, 8, 102, 1, 102, 5, 102, 2230, 8, - 102, 10, 102, 12, 102, 2233, 9, 102, 1, 102, 1, 102, 3, 102, 2237, 8, 102, - 1, 102, 5, 102, 2240, 8, 102, 10, 102, 12, 102, 2243, 9, 102, 1, 102, 1, - 102, 3, 102, 2247, 8, 102, 1, 102, 5, 102, 2250, 8, 102, 10, 102, 12, 102, - 2253, 9, 102, 1, 102, 1, 102, 3, 102, 2257, 8, 102, 1, 102, 5, 102, 2260, - 8, 102, 10, 102, 12, 102, 2263, 9, 102, 1, 102, 1, 102, 3, 102, 2267, 8, - 102, 1, 102, 5, 102, 2270, 8, 102, 10, 102, 12, 102, 2273, 9, 102, 1, 102, - 1, 102, 3, 102, 2277, 8, 102, 1, 102, 5, 102, 2280, 8, 102, 10, 102, 12, - 102, 2283, 9, 102, 1, 102, 1, 102, 3, 102, 2287, 8, 102, 1, 102, 5, 102, - 2290, 8, 102, 10, 102, 12, 102, 2293, 9, 102, 1, 102, 1, 102, 3, 102, 2297, - 8, 102, 1, 102, 5, 102, 2300, 8, 102, 10, 102, 12, 102, 2303, 9, 102, 1, - 102, 1, 102, 3, 102, 2307, 8, 102, 1, 102, 5, 102, 2310, 8, 102, 10, 102, - 12, 102, 2313, 9, 102, 1, 102, 1, 102, 3, 102, 2317, 8, 102, 1, 102, 5, - 102, 2320, 8, 102, 10, 102, 12, 102, 2323, 9, 102, 1, 102, 1, 102, 3, 102, - 2327, 8, 102, 1, 102, 5, 102, 2330, 8, 102, 10, 102, 12, 102, 2333, 9, - 102, 1, 102, 1, 102, 3, 102, 2337, 8, 102, 1, 102, 5, 102, 2340, 8, 102, - 10, 102, 12, 102, 2343, 9, 102, 1, 102, 1, 102, 3, 102, 2347, 8, 102, 1, - 102, 5, 102, 2350, 8, 102, 10, 102, 12, 102, 2353, 9, 102, 1, 102, 1, 102, - 3, 102, 2357, 8, 102, 1, 102, 5, 102, 2360, 8, 102, 10, 102, 12, 102, 2363, - 9, 102, 1, 102, 1, 102, 3, 102, 2367, 8, 102, 1, 102, 5, 102, 2370, 8, - 102, 10, 102, 12, 102, 2373, 9, 102, 1, 102, 1, 102, 3, 102, 2377, 8, 102, - 1, 102, 5, 102, 2380, 8, 102, 10, 102, 12, 102, 2383, 9, 102, 1, 102, 1, - 102, 3, 102, 2387, 8, 102, 1, 102, 5, 102, 2390, 8, 102, 10, 102, 12, 102, - 2393, 9, 102, 1, 102, 1, 102, 3, 102, 2397, 8, 102, 1, 102, 5, 102, 2400, - 8, 102, 10, 102, 12, 102, 2403, 9, 102, 1, 102, 1, 102, 3, 102, 2407, 8, - 102, 1, 102, 5, 102, 2410, 8, 102, 10, 102, 12, 102, 2413, 9, 102, 1, 102, - 1, 102, 3, 102, 2417, 8, 102, 1, 102, 5, 102, 2420, 8, 102, 10, 102, 12, - 102, 2423, 9, 102, 1, 102, 1, 102, 3, 102, 2427, 8, 102, 1, 102, 5, 102, - 2430, 8, 102, 10, 102, 12, 102, 2433, 9, 102, 1, 102, 1, 102, 3, 102, 2437, - 8, 102, 1, 102, 5, 102, 2440, 8, 102, 10, 102, 12, 102, 2443, 9, 102, 1, - 102, 1, 102, 3, 102, 2447, 8, 102, 1, 102, 5, 102, 2450, 8, 102, 10, 102, - 12, 102, 2453, 9, 102, 1, 102, 1, 102, 3, 102, 2457, 8, 102, 1, 102, 5, - 102, 2460, 8, 102, 10, 102, 12, 102, 2463, 9, 102, 1, 102, 1, 102, 3, 102, - 2467, 8, 102, 1, 102, 5, 102, 2470, 8, 102, 10, 102, 12, 102, 2473, 9, - 102, 1, 102, 1, 102, 3, 102, 2477, 8, 102, 1, 102, 5, 102, 2480, 8, 102, - 10, 102, 12, 102, 2483, 9, 102, 1, 102, 1, 102, 3, 102, 2487, 8, 102, 1, - 102, 5, 102, 2490, 8, 102, 10, 102, 12, 102, 2493, 9, 102, 1, 102, 1, 102, - 3, 102, 2497, 8, 102, 1, 102, 5, 102, 2500, 8, 102, 10, 102, 12, 102, 2503, - 9, 102, 1, 102, 1, 102, 3, 102, 2507, 8, 102, 1, 102, 5, 102, 2510, 8, - 102, 10, 102, 12, 102, 2513, 9, 102, 1, 102, 1, 102, 3, 102, 2517, 8, 102, - 1, 102, 5, 102, 2520, 8, 102, 10, 102, 12, 102, 2523, 9, 102, 1, 102, 1, - 102, 3, 102, 2527, 8, 102, 1, 102, 5, 102, 2530, 8, 102, 10, 102, 12, 102, - 2533, 9, 102, 1, 102, 1, 102, 3, 102, 2537, 8, 102, 3, 102, 2539, 8, 102, - 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2546, 8, 103, 1, 104, 1, - 104, 1, 104, 3, 104, 2551, 8, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, - 3, 105, 2558, 8, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 2564, 8, - 105, 1, 105, 3, 105, 2567, 8, 105, 1, 105, 3, 105, 2570, 8, 105, 1, 106, - 1, 106, 1, 106, 1, 106, 3, 106, 2576, 8, 106, 1, 106, 3, 106, 2579, 8, - 106, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 2585, 8, 107, 4, 107, 2587, - 8, 107, 11, 107, 12, 107, 2588, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, - 2595, 8, 108, 1, 108, 3, 108, 2598, 8, 108, 1, 108, 3, 108, 2601, 8, 108, - 1, 109, 1, 109, 1, 109, 3, 109, 2606, 8, 109, 1, 110, 1, 110, 1, 110, 3, - 110, 2611, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, - 3, 111, 2620, 8, 111, 3, 111, 2622, 8, 111, 1, 111, 1, 111, 1, 111, 1, - 111, 5, 111, 2628, 8, 111, 10, 111, 12, 111, 2631, 9, 111, 3, 111, 2633, - 8, 111, 1, 111, 1, 111, 3, 111, 2637, 8, 111, 1, 111, 1, 111, 3, 111, 2641, - 8, 111, 1, 111, 3, 111, 2644, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, - 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 2656, 8, 112, 1, 113, - 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, + 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, + 65, 1, 65, 1, 65, 1, 65, 3, 65, 1905, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, + 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1919, 8, + 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1926, 8, 67, 1, 67, 1, 67, + 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1939, + 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1946, 8, 68, 1, 68, 1, + 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1954, 8, 68, 1, 69, 1, 69, 1, 69, + 3, 69, 1959, 8, 69, 1, 70, 4, 70, 1962, 8, 70, 11, 70, 12, 70, 1963, 1, + 71, 1, 71, 1, 71, 1, 71, 3, 71, 1970, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, + 1, 72, 1, 72, 3, 72, 1978, 8, 72, 1, 73, 1, 73, 1, 73, 5, 73, 1983, 8, + 73, 10, 73, 12, 73, 1986, 9, 73, 1, 74, 3, 74, 1989, 8, 74, 1, 74, 1, 74, + 3, 74, 1993, 8, 74, 1, 74, 3, 74, 1996, 8, 74, 1, 75, 1, 75, 1, 75, 1, + 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, + 1, 75, 1, 75, 1, 75, 3, 75, 2015, 8, 75, 1, 76, 4, 76, 2018, 8, 76, 11, + 76, 12, 76, 2019, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, + 2029, 8, 78, 1, 78, 3, 78, 2032, 8, 78, 1, 79, 4, 79, 2035, 8, 79, 11, + 79, 12, 79, 2036, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 2044, 8, 80, + 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 2050, 8, 81, 10, 81, 12, 81, 2053, 9, + 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, + 1, 83, 3, 83, 2066, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, + 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, + 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, + 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2102, 8, 85, 1, 86, + 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, + 86, 1, 86, 3, 86, 2117, 8, 86, 1, 87, 1, 87, 1, 87, 5, 87, 2122, 8, 87, + 10, 87, 12, 87, 2125, 9, 87, 1, 88, 1, 88, 1, 88, 5, 88, 2130, 8, 88, 10, + 88, 12, 88, 2133, 9, 88, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 2139, 8, 89, + 1, 89, 1, 89, 3, 89, 2143, 8, 89, 1, 89, 3, 89, 2146, 8, 89, 1, 89, 1, + 89, 1, 89, 1, 89, 3, 89, 2152, 8, 89, 1, 89, 3, 89, 2155, 8, 89, 1, 90, + 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 2162, 8, 90, 1, 90, 1, 90, 3, 90, 2166, + 8, 90, 1, 90, 3, 90, 2169, 8, 90, 1, 90, 1, 90, 1, 90, 3, 90, 2174, 8, + 90, 1, 91, 1, 91, 1, 91, 5, 91, 2179, 8, 91, 10, 91, 12, 91, 2182, 9, 91, + 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2188, 8, 92, 1, 93, 1, 93, 1, 93, 1, + 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 5, 95, 2202, + 8, 95, 10, 95, 12, 95, 2205, 9, 95, 1, 96, 1, 96, 3, 96, 2209, 8, 96, 1, + 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 3, 97, 2217, 8, 97, 1, 98, 1, 98, + 1, 98, 1, 98, 3, 98, 2223, 8, 98, 1, 99, 4, 99, 2226, 8, 99, 11, 99, 12, + 99, 2227, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2234, 8, 100, 1, 101, + 5, 101, 2237, 8, 101, 10, 101, 12, 101, 2240, 9, 101, 1, 102, 5, 102, 2243, + 8, 102, 10, 102, 12, 102, 2246, 9, 102, 1, 102, 1, 102, 3, 102, 2250, 8, + 102, 1, 102, 5, 102, 2253, 8, 102, 10, 102, 12, 102, 2256, 9, 102, 1, 102, + 1, 102, 3, 102, 2260, 8, 102, 1, 102, 5, 102, 2263, 8, 102, 10, 102, 12, + 102, 2266, 9, 102, 1, 102, 1, 102, 3, 102, 2270, 8, 102, 1, 102, 5, 102, + 2273, 8, 102, 10, 102, 12, 102, 2276, 9, 102, 1, 102, 1, 102, 3, 102, 2280, + 8, 102, 1, 102, 5, 102, 2283, 8, 102, 10, 102, 12, 102, 2286, 9, 102, 1, + 102, 1, 102, 3, 102, 2290, 8, 102, 1, 102, 5, 102, 2293, 8, 102, 10, 102, + 12, 102, 2296, 9, 102, 1, 102, 1, 102, 3, 102, 2300, 8, 102, 1, 102, 5, + 102, 2303, 8, 102, 10, 102, 12, 102, 2306, 9, 102, 1, 102, 1, 102, 3, 102, + 2310, 8, 102, 1, 102, 5, 102, 2313, 8, 102, 10, 102, 12, 102, 2316, 9, + 102, 1, 102, 1, 102, 3, 102, 2320, 8, 102, 1, 102, 5, 102, 2323, 8, 102, + 10, 102, 12, 102, 2326, 9, 102, 1, 102, 1, 102, 3, 102, 2330, 8, 102, 1, + 102, 5, 102, 2333, 8, 102, 10, 102, 12, 102, 2336, 9, 102, 1, 102, 1, 102, + 3, 102, 2340, 8, 102, 1, 102, 5, 102, 2343, 8, 102, 10, 102, 12, 102, 2346, + 9, 102, 1, 102, 1, 102, 3, 102, 2350, 8, 102, 1, 102, 5, 102, 2353, 8, + 102, 10, 102, 12, 102, 2356, 9, 102, 1, 102, 1, 102, 3, 102, 2360, 8, 102, + 1, 102, 5, 102, 2363, 8, 102, 10, 102, 12, 102, 2366, 9, 102, 1, 102, 1, + 102, 3, 102, 2370, 8, 102, 1, 102, 5, 102, 2373, 8, 102, 10, 102, 12, 102, + 2376, 9, 102, 1, 102, 1, 102, 3, 102, 2380, 8, 102, 1, 102, 5, 102, 2383, + 8, 102, 10, 102, 12, 102, 2386, 9, 102, 1, 102, 1, 102, 3, 102, 2390, 8, + 102, 1, 102, 5, 102, 2393, 8, 102, 10, 102, 12, 102, 2396, 9, 102, 1, 102, + 1, 102, 3, 102, 2400, 8, 102, 1, 102, 5, 102, 2403, 8, 102, 10, 102, 12, + 102, 2406, 9, 102, 1, 102, 1, 102, 3, 102, 2410, 8, 102, 1, 102, 5, 102, + 2413, 8, 102, 10, 102, 12, 102, 2416, 9, 102, 1, 102, 1, 102, 3, 102, 2420, + 8, 102, 1, 102, 5, 102, 2423, 8, 102, 10, 102, 12, 102, 2426, 9, 102, 1, + 102, 1, 102, 3, 102, 2430, 8, 102, 1, 102, 5, 102, 2433, 8, 102, 10, 102, + 12, 102, 2436, 9, 102, 1, 102, 1, 102, 3, 102, 2440, 8, 102, 1, 102, 5, + 102, 2443, 8, 102, 10, 102, 12, 102, 2446, 9, 102, 1, 102, 1, 102, 3, 102, + 2450, 8, 102, 1, 102, 5, 102, 2453, 8, 102, 10, 102, 12, 102, 2456, 9, + 102, 1, 102, 1, 102, 3, 102, 2460, 8, 102, 1, 102, 5, 102, 2463, 8, 102, + 10, 102, 12, 102, 2466, 9, 102, 1, 102, 1, 102, 3, 102, 2470, 8, 102, 1, + 102, 5, 102, 2473, 8, 102, 10, 102, 12, 102, 2476, 9, 102, 1, 102, 1, 102, + 3, 102, 2480, 8, 102, 1, 102, 5, 102, 2483, 8, 102, 10, 102, 12, 102, 2486, + 9, 102, 1, 102, 1, 102, 3, 102, 2490, 8, 102, 1, 102, 5, 102, 2493, 8, + 102, 10, 102, 12, 102, 2496, 9, 102, 1, 102, 1, 102, 3, 102, 2500, 8, 102, + 1, 102, 5, 102, 2503, 8, 102, 10, 102, 12, 102, 2506, 9, 102, 1, 102, 1, + 102, 3, 102, 2510, 8, 102, 1, 102, 5, 102, 2513, 8, 102, 10, 102, 12, 102, + 2516, 9, 102, 1, 102, 1, 102, 3, 102, 2520, 8, 102, 1, 102, 5, 102, 2523, + 8, 102, 10, 102, 12, 102, 2526, 9, 102, 1, 102, 1, 102, 3, 102, 2530, 8, + 102, 1, 102, 5, 102, 2533, 8, 102, 10, 102, 12, 102, 2536, 9, 102, 1, 102, + 1, 102, 3, 102, 2540, 8, 102, 1, 102, 5, 102, 2543, 8, 102, 10, 102, 12, + 102, 2546, 9, 102, 1, 102, 1, 102, 3, 102, 2550, 8, 102, 1, 102, 5, 102, + 2553, 8, 102, 10, 102, 12, 102, 2556, 9, 102, 1, 102, 1, 102, 3, 102, 2560, + 8, 102, 1, 102, 5, 102, 2563, 8, 102, 10, 102, 12, 102, 2566, 9, 102, 1, + 102, 1, 102, 3, 102, 2570, 8, 102, 3, 102, 2572, 8, 102, 1, 103, 1, 103, + 1, 103, 1, 103, 1, 103, 3, 103, 2579, 8, 103, 1, 104, 1, 104, 1, 104, 3, + 104, 2584, 8, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 3, 105, 2591, + 8, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 2597, 8, 105, 1, 105, 3, + 105, 2600, 8, 105, 1, 105, 3, 105, 2603, 8, 105, 1, 106, 1, 106, 1, 106, + 1, 106, 3, 106, 2609, 8, 106, 1, 106, 3, 106, 2612, 8, 106, 1, 107, 1, + 107, 1, 107, 1, 107, 3, 107, 2618, 8, 107, 4, 107, 2620, 8, 107, 11, 107, + 12, 107, 2621, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 2628, 8, 108, 1, + 108, 3, 108, 2631, 8, 108, 1, 108, 3, 108, 2634, 8, 108, 1, 109, 1, 109, + 1, 109, 3, 109, 2639, 8, 109, 1, 110, 1, 110, 1, 110, 3, 110, 2644, 8, + 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 2653, + 8, 111, 3, 111, 2655, 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 5, 111, 2661, + 8, 111, 10, 111, 12, 111, 2664, 9, 111, 3, 111, 2666, 8, 111, 1, 111, 1, + 111, 3, 111, 2670, 8, 111, 1, 111, 1, 111, 3, 111, 2674, 8, 111, 1, 111, + 3, 111, 2677, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, + 112, 1, 112, 1, 112, 1, 112, 3, 112, 2689, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, - 1, 113, 3, 113, 2678, 8, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, - 114, 1, 114, 1, 114, 1, 114, 5, 114, 2689, 8, 114, 10, 114, 12, 114, 2692, - 9, 114, 1, 114, 1, 114, 3, 114, 2696, 8, 114, 1, 114, 1, 114, 1, 114, 1, - 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 2706, 8, 115, 1, 115, 1, 115, - 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 3, 116, 2716, 8, 116, 1, - 116, 1, 116, 1, 116, 3, 116, 2721, 8, 116, 1, 117, 1, 117, 1, 118, 1, 118, - 1, 119, 1, 119, 3, 119, 2729, 8, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, - 121, 3, 121, 2736, 8, 121, 1, 121, 1, 121, 3, 121, 2740, 8, 121, 1, 121, - 1, 121, 3, 121, 2744, 8, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, - 123, 1, 123, 5, 123, 2753, 8, 123, 10, 123, 12, 123, 2756, 9, 123, 1, 123, - 1, 123, 1, 123, 1, 123, 3, 123, 2762, 8, 123, 1, 124, 1, 124, 1, 124, 1, - 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 3, - 127, 2776, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 2783, - 8, 127, 1, 127, 1, 127, 3, 127, 2787, 8, 127, 1, 128, 1, 128, 3, 128, 2791, - 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 2799, 8, - 128, 1, 128, 1, 128, 3, 128, 2803, 8, 128, 1, 129, 1, 129, 3, 129, 2807, - 8, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, - 3, 129, 2817, 8, 129, 3, 129, 2819, 8, 129, 1, 129, 1, 129, 3, 129, 2823, - 8, 129, 1, 129, 3, 129, 2826, 8, 129, 1, 129, 1, 129, 1, 129, 3, 129, 2831, - 8, 129, 1, 129, 3, 129, 2834, 8, 129, 1, 129, 3, 129, 2837, 8, 129, 1, - 130, 1, 130, 3, 130, 2841, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, - 1, 130, 3, 130, 2849, 8, 130, 1, 130, 1, 130, 3, 130, 2853, 8, 130, 1, - 131, 1, 131, 1, 131, 5, 131, 2858, 8, 131, 10, 131, 12, 131, 2861, 9, 131, - 1, 132, 1, 132, 3, 132, 2865, 8, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, - 133, 1, 133, 1, 133, 1, 133, 3, 133, 2875, 8, 133, 1, 133, 3, 133, 2878, - 8, 133, 1, 133, 1, 133, 3, 133, 2882, 8, 133, 1, 133, 1, 133, 3, 133, 2886, - 8, 133, 1, 134, 1, 134, 1, 134, 5, 134, 2891, 8, 134, 10, 134, 12, 134, - 2894, 9, 134, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 2900, 8, 135, 1, - 135, 1, 135, 1, 135, 1, 135, 3, 135, 2906, 8, 135, 1, 136, 1, 136, 1, 136, - 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, - 3, 138, 2920, 8, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 2927, - 8, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, - 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2942, 8, 140, 1, 141, 1, - 141, 3, 141, 2946, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, - 2953, 8, 141, 1, 141, 5, 141, 2956, 8, 141, 10, 141, 12, 141, 2959, 9, - 141, 1, 141, 3, 141, 2962, 8, 141, 1, 141, 3, 141, 2965, 8, 141, 1, 141, - 3, 141, 2968, 8, 141, 1, 141, 1, 141, 3, 141, 2972, 8, 141, 1, 142, 1, - 142, 1, 143, 1, 143, 3, 143, 2978, 8, 143, 1, 144, 1, 144, 1, 145, 1, 145, - 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, - 1, 147, 1, 147, 1, 147, 3, 147, 2996, 8, 147, 1, 147, 1, 147, 1, 147, 3, - 147, 3001, 8, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, - 3009, 8, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, - 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, - 149, 3, 149, 3028, 8, 149, 1, 150, 1, 150, 3, 150, 3032, 8, 150, 1, 150, - 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 3039, 8, 150, 1, 150, 3, 150, 3042, - 8, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, - 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, - 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, - 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, - 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, - 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, - 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, - 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 3110, 8, 153, 1, 154, 1, 154, 1, - 154, 5, 154, 3115, 8, 154, 10, 154, 12, 154, 3118, 9, 154, 1, 155, 1, 155, - 3, 155, 3122, 8, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, + 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, + 2711, 8, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, + 114, 1, 114, 5, 114, 2722, 8, 114, 10, 114, 12, 114, 2725, 9, 114, 1, 114, + 1, 114, 3, 114, 2729, 8, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, + 115, 1, 115, 1, 115, 3, 115, 2739, 8, 115, 1, 115, 1, 115, 1, 115, 1, 115, + 1, 115, 1, 116, 1, 116, 1, 116, 3, 116, 2749, 8, 116, 1, 116, 1, 116, 1, + 116, 3, 116, 2754, 8, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, + 3, 119, 2762, 8, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 3, 121, 2769, + 8, 121, 1, 121, 1, 121, 3, 121, 2773, 8, 121, 1, 121, 1, 121, 3, 121, 2777, + 8, 121, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, + 2786, 8, 123, 10, 123, 12, 123, 2789, 9, 123, 1, 123, 1, 123, 1, 123, 1, + 123, 3, 123, 2795, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, + 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 3, 127, 2809, 8, 127, 1, + 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 2816, 8, 127, 1, 127, 1, 127, + 3, 127, 2820, 8, 127, 1, 128, 1, 128, 3, 128, 2824, 8, 128, 1, 128, 1, + 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 2832, 8, 128, 1, 128, 1, 128, + 3, 128, 2836, 8, 128, 1, 129, 1, 129, 3, 129, 2840, 8, 129, 1, 129, 1, + 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 2850, 8, 129, + 3, 129, 2852, 8, 129, 1, 129, 1, 129, 3, 129, 2856, 8, 129, 1, 129, 3, + 129, 2859, 8, 129, 1, 129, 1, 129, 1, 129, 3, 129, 2864, 8, 129, 1, 129, + 3, 129, 2867, 8, 129, 1, 129, 3, 129, 2870, 8, 129, 1, 130, 1, 130, 3, + 130, 2874, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, + 2882, 8, 130, 1, 130, 1, 130, 3, 130, 2886, 8, 130, 1, 131, 1, 131, 1, + 131, 5, 131, 2891, 8, 131, 10, 131, 12, 131, 2894, 9, 131, 1, 132, 1, 132, + 3, 132, 2898, 8, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, + 133, 1, 133, 3, 133, 2908, 8, 133, 1, 133, 3, 133, 2911, 8, 133, 1, 133, + 1, 133, 3, 133, 2915, 8, 133, 1, 133, 1, 133, 3, 133, 2919, 8, 133, 1, + 134, 1, 134, 1, 134, 5, 134, 2924, 8, 134, 10, 134, 12, 134, 2927, 9, 134, + 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 2933, 8, 135, 1, 135, 1, 135, 1, + 135, 1, 135, 3, 135, 2939, 8, 135, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, + 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 2953, 8, + 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 2960, 8, 138, 1, 139, + 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, + 1, 140, 1, 140, 1, 140, 3, 140, 2975, 8, 140, 1, 141, 1, 141, 3, 141, 2979, + 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2986, 8, 141, 1, + 141, 5, 141, 2989, 8, 141, 10, 141, 12, 141, 2992, 9, 141, 1, 141, 3, 141, + 2995, 8, 141, 1, 141, 3, 141, 2998, 8, 141, 1, 141, 3, 141, 3001, 8, 141, + 1, 141, 1, 141, 3, 141, 3005, 8, 141, 1, 142, 1, 142, 1, 143, 1, 143, 3, + 143, 3011, 8, 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, + 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, + 3, 147, 3029, 8, 147, 1, 147, 1, 147, 1, 147, 3, 147, 3034, 8, 147, 1, + 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 3042, 8, 147, 1, 148, + 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, + 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3061, 8, + 149, 1, 150, 1, 150, 3, 150, 3065, 8, 150, 1, 150, 1, 150, 1, 150, 1, 150, + 1, 150, 3, 150, 3072, 8, 150, 1, 150, 3, 150, 3075, 8, 150, 1, 151, 1, + 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, + 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, + 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, + 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, + 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, + 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, + 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, + 153, 1, 153, 3, 153, 3143, 8, 153, 1, 154, 1, 154, 1, 154, 5, 154, 3148, + 8, 154, 10, 154, 12, 154, 3151, 9, 154, 1, 155, 1, 155, 3, 155, 3155, 8, + 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, - 157, 1, 157, 1, 157, 1, 157, 3, 157, 3152, 8, 157, 1, 158, 1, 158, 1, 158, - 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, - 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 5, 161, 3173, 8, - 161, 10, 161, 12, 161, 3176, 9, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, - 163, 1, 163, 1, 163, 1, 163, 3, 163, 3186, 8, 163, 1, 164, 1, 164, 1, 164, - 5, 164, 3191, 8, 164, 10, 164, 12, 164, 3194, 9, 164, 1, 165, 1, 165, 1, - 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, - 167, 1, 167, 1, 167, 3, 167, 3210, 8, 167, 1, 167, 3, 167, 3213, 8, 167, - 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 4, 168, 3220, 8, 168, 11, 168, - 12, 168, 3221, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 5, 170, - 3230, 8, 170, 10, 170, 12, 170, 3233, 9, 170, 1, 171, 1, 171, 1, 171, 1, - 171, 1, 172, 1, 172, 1, 172, 5, 172, 3242, 8, 172, 10, 172, 12, 172, 3245, - 9, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 5, 174, - 3254, 8, 174, 10, 174, 12, 174, 3257, 9, 174, 1, 175, 1, 175, 1, 175, 1, - 175, 1, 175, 1, 175, 1, 176, 1, 176, 3, 176, 3267, 8, 176, 1, 176, 3, 176, - 3270, 8, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, - 179, 1, 179, 5, 179, 3281, 8, 179, 10, 179, 12, 179, 3284, 9, 179, 1, 180, - 1, 180, 1, 180, 5, 180, 3289, 8, 180, 10, 180, 12, 180, 3292, 9, 180, 1, - 181, 1, 181, 1, 181, 3, 181, 3297, 8, 181, 1, 182, 1, 182, 1, 182, 1, 182, - 3, 182, 3303, 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, - 183, 3311, 8, 183, 1, 184, 1, 184, 1, 184, 5, 184, 3316, 8, 184, 10, 184, - 12, 184, 3319, 9, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, - 3326, 8, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 3333, 8, - 186, 1, 187, 1, 187, 1, 187, 5, 187, 3338, 8, 187, 10, 187, 12, 187, 3341, - 9, 187, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 5, 189, - 3350, 8, 189, 10, 189, 12, 189, 3353, 9, 189, 3, 189, 3355, 8, 189, 1, - 189, 1, 189, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 5, 191, 3365, - 8, 191, 10, 191, 12, 191, 3368, 9, 191, 1, 191, 1, 191, 1, 192, 1, 192, + 157, 1, 157, 3, 157, 3185, 8, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, + 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, + 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 5, 161, 3206, 8, 161, 10, 161, + 12, 161, 3209, 9, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, + 1, 163, 1, 163, 3, 163, 3219, 8, 163, 1, 164, 1, 164, 1, 164, 5, 164, 3224, + 8, 164, 10, 164, 12, 164, 3227, 9, 164, 1, 165, 1, 165, 1, 165, 1, 165, + 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, + 1, 167, 3, 167, 3243, 8, 167, 1, 167, 3, 167, 3246, 8, 167, 1, 167, 1, + 167, 1, 167, 1, 167, 1, 168, 4, 168, 3253, 8, 168, 11, 168, 12, 168, 3254, + 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 5, 170, 3263, 8, 170, 10, + 170, 12, 170, 3266, 9, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, + 172, 1, 172, 5, 172, 3275, 8, 172, 10, 172, 12, 172, 3278, 9, 172, 1, 173, + 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 5, 174, 3287, 8, 174, 10, + 174, 12, 174, 3290, 9, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, + 175, 1, 176, 1, 176, 3, 176, 3300, 8, 176, 1, 176, 3, 176, 3303, 8, 176, + 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, + 5, 179, 3314, 8, 179, 10, 179, 12, 179, 3317, 9, 179, 1, 180, 1, 180, 1, + 180, 5, 180, 3322, 8, 180, 10, 180, 12, 180, 3325, 9, 180, 1, 181, 1, 181, + 1, 181, 3, 181, 3330, 8, 181, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 3336, + 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 3344, 8, + 183, 1, 184, 1, 184, 1, 184, 5, 184, 3349, 8, 184, 10, 184, 12, 184, 3352, + 9, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, 3359, 8, 185, 1, + 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 3366, 8, 186, 1, 187, 1, 187, + 1, 187, 5, 187, 3371, 8, 187, 10, 187, 12, 187, 3374, 9, 187, 1, 188, 1, + 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 5, 189, 3383, 8, 189, 10, + 189, 12, 189, 3386, 9, 189, 3, 189, 3388, 8, 189, 1, 189, 1, 189, 1, 190, + 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 5, 191, 3398, 8, 191, 10, 191, + 12, 191, 3401, 9, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, - 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, - 3391, 8, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 3399, - 8, 192, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 3405, 8, 193, 10, 193, - 12, 193, 3408, 9, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, - 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, - 1, 194, 1, 194, 3, 194, 3427, 8, 194, 1, 195, 1, 195, 5, 195, 3431, 8, - 195, 10, 195, 12, 195, 3434, 9, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, - 196, 3, 196, 3441, 8, 196, 1, 197, 1, 197, 1, 197, 3, 197, 3446, 8, 197, - 1, 197, 3, 197, 3449, 8, 197, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, - 199, 5, 199, 3457, 8, 199, 10, 199, 12, 199, 3460, 9, 199, 1, 199, 1, 199, - 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, + 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 3424, 8, 192, 1, + 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 3432, 8, 192, 1, 193, + 1, 193, 1, 193, 1, 193, 5, 193, 3438, 8, 193, 10, 193, 12, 193, 3441, 9, + 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, + 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, + 194, 3460, 8, 194, 1, 195, 1, 195, 5, 195, 3464, 8, 195, 10, 195, 12, 195, + 3467, 9, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 3474, 8, + 196, 1, 197, 1, 197, 1, 197, 3, 197, 3479, 8, 197, 1, 197, 3, 197, 3482, + 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 3488, 8, 197, 1, 197, 3, + 197, 3491, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 3497, 8, 197, + 1, 197, 3, 197, 3500, 8, 197, 3, 197, 3502, 8, 197, 1, 198, 1, 198, 1, + 199, 1, 199, 1, 199, 1, 199, 5, 199, 3510, 8, 199, 10, 199, 12, 199, 3513, + 9, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, @@ -650,320 +657,321 @@ func mdlparserParserInit() { 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, - 3, 200, 3554, 8, 200, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 5, - 202, 3562, 8, 202, 10, 202, 12, 202, 3565, 9, 202, 1, 202, 1, 202, 1, 203, - 1, 203, 1, 203, 3, 203, 3572, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, - 203, 1, 203, 5, 203, 3580, 8, 203, 10, 203, 12, 203, 3583, 9, 203, 1, 203, - 3, 203, 3586, 8, 203, 3, 203, 3588, 8, 203, 1, 203, 1, 203, 1, 203, 1, - 203, 5, 203, 3594, 8, 203, 10, 203, 12, 203, 3597, 9, 203, 3, 203, 3599, - 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3604, 8, 203, 1, 203, 1, 203, 1, - 203, 3, 203, 3609, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3615, - 8, 203, 1, 204, 1, 204, 3, 204, 3619, 8, 204, 1, 204, 1, 204, 3, 204, 3623, - 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3629, 8, 204, 1, 204, 1, - 204, 1, 204, 1, 204, 3, 204, 3635, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, - 3640, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3645, 8, 204, 1, 204, 1, - 204, 1, 204, 3, 204, 3650, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3655, - 8, 204, 1, 205, 1, 205, 1, 205, 1, 205, 5, 205, 3661, 8, 205, 10, 205, - 12, 205, 3664, 9, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, - 1, 206, 1, 206, 3, 206, 3674, 8, 206, 1, 207, 1, 207, 1, 207, 3, 207, 3679, - 8, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 3685, 8, 207, 5, 207, 3687, - 8, 207, 10, 207, 12, 207, 3690, 9, 207, 1, 208, 1, 208, 1, 208, 1, 208, - 1, 208, 1, 208, 3, 208, 3698, 8, 208, 3, 208, 3700, 8, 208, 3, 208, 3702, - 8, 208, 1, 209, 1, 209, 1, 209, 1, 209, 5, 209, 3708, 8, 209, 10, 209, - 12, 209, 3711, 9, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, - 1, 210, 1, 210, 1, 211, 1, 211, 1, 212, 1, 212, 1, 213, 1, 213, 1, 214, - 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, - 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 5, 215, 3744, 8, - 215, 10, 215, 12, 215, 3747, 9, 215, 3, 215, 3749, 8, 215, 1, 215, 3, 215, - 3752, 8, 215, 1, 216, 1, 216, 1, 216, 1, 216, 5, 216, 3758, 8, 216, 10, - 216, 12, 216, 3761, 9, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 3767, - 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, - 1, 217, 3, 217, 3778, 8, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, - 219, 1, 219, 3, 219, 3787, 8, 219, 1, 219, 1, 219, 5, 219, 3791, 8, 219, - 10, 219, 12, 219, 3794, 9, 219, 1, 219, 1, 219, 1, 220, 4, 220, 3799, 8, - 220, 11, 220, 12, 220, 3800, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, - 222, 1, 222, 3, 222, 3810, 8, 222, 1, 223, 1, 223, 1, 223, 1, 223, 4, 223, - 3816, 8, 223, 11, 223, 12, 223, 3817, 1, 223, 1, 223, 5, 223, 3822, 8, - 223, 10, 223, 12, 223, 3825, 9, 223, 1, 223, 3, 223, 3828, 8, 223, 1, 224, - 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 3837, 8, 224, 1, - 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, - 224, 3, 224, 3849, 8, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 3855, - 8, 224, 3, 224, 3857, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, - 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 3, 225, 3870, 8, 225, 5, 225, - 3872, 8, 225, 10, 225, 12, 225, 3875, 9, 225, 1, 225, 1, 225, 1, 225, 1, - 225, 1, 225, 1, 225, 1, 225, 5, 225, 3884, 8, 225, 10, 225, 12, 225, 3887, - 9, 225, 1, 225, 1, 225, 3, 225, 3891, 8, 225, 3, 225, 3893, 8, 225, 1, - 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, - 227, 1, 227, 1, 227, 1, 227, 3, 227, 3908, 8, 227, 1, 228, 4, 228, 3911, - 8, 228, 11, 228, 12, 228, 3912, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, - 1, 229, 1, 229, 3, 229, 3922, 8, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, - 230, 5, 230, 3929, 8, 230, 10, 230, 12, 230, 3932, 9, 230, 3, 230, 3934, - 8, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 5, 231, - 3943, 8, 231, 10, 231, 12, 231, 3946, 9, 231, 1, 231, 1, 231, 1, 232, 1, - 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, - 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 3968, - 8, 233, 1, 234, 1, 234, 1, 235, 3, 235, 3973, 8, 235, 1, 235, 1, 235, 1, - 235, 3, 235, 3978, 8, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 5, 235, - 3985, 8, 235, 10, 235, 12, 235, 3988, 9, 235, 1, 235, 1, 235, 1, 235, 1, - 235, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, - 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, - 237, 1, 237, 1, 237, 3, 237, 4014, 8, 237, 1, 238, 1, 238, 1, 238, 1, 238, - 1, 238, 3, 238, 4021, 8, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, - 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 4036, - 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, - 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 5, 241, 4053, 8, - 241, 10, 241, 12, 241, 4056, 9, 241, 1, 241, 1, 241, 3, 241, 4060, 8, 241, - 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 5, 242, 4069, 8, - 242, 10, 242, 12, 242, 4072, 9, 242, 1, 242, 1, 242, 3, 242, 4076, 8, 242, - 1, 242, 1, 242, 5, 242, 4080, 8, 242, 10, 242, 12, 242, 4083, 9, 242, 1, - 242, 3, 242, 4086, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, - 3, 243, 4094, 8, 243, 1, 243, 3, 243, 4097, 8, 243, 1, 244, 1, 244, 1, - 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, - 246, 5, 246, 4111, 8, 246, 10, 246, 12, 246, 4114, 9, 246, 1, 247, 1, 247, - 1, 247, 1, 247, 1, 247, 3, 247, 4121, 8, 247, 1, 247, 3, 247, 4124, 8, - 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 4131, 8, 248, 1, 248, - 1, 248, 1, 248, 1, 248, 5, 248, 4137, 8, 248, 10, 248, 12, 248, 4140, 9, - 248, 1, 248, 1, 248, 3, 248, 4144, 8, 248, 1, 248, 3, 248, 4147, 8, 248, - 1, 248, 3, 248, 4150, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, - 249, 5, 249, 4158, 8, 249, 10, 249, 12, 249, 4161, 9, 249, 3, 249, 4163, - 8, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 3, 250, 4170, 8, 250, 1, - 250, 3, 250, 4173, 8, 250, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 4179, - 8, 251, 10, 251, 12, 251, 4182, 9, 251, 1, 251, 1, 251, 1, 252, 1, 252, - 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, - 5, 252, 4197, 8, 252, 10, 252, 12, 252, 4200, 9, 252, 1, 252, 1, 252, 1, - 252, 3, 252, 4205, 8, 252, 1, 252, 3, 252, 4208, 8, 252, 1, 253, 1, 253, - 1, 253, 3, 253, 4213, 8, 253, 1, 253, 5, 253, 4216, 8, 253, 10, 253, 12, - 253, 4219, 9, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 5, 254, 4226, - 8, 254, 10, 254, 12, 254, 4229, 9, 254, 1, 254, 1, 254, 1, 255, 1, 255, - 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, - 1, 256, 5, 256, 4245, 8, 256, 10, 256, 12, 256, 4248, 9, 256, 1, 256, 1, - 256, 1, 256, 4, 256, 4253, 8, 256, 11, 256, 12, 256, 4254, 1, 256, 1, 256, - 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 5, 257, 4265, 8, 257, 10, - 257, 12, 257, 4268, 9, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 4274, - 8, 257, 1, 257, 1, 257, 3, 257, 4278, 8, 257, 1, 257, 1, 257, 1, 258, 1, + 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 3611, 8, + 200, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 5, 202, 3619, 8, 202, + 10, 202, 12, 202, 3622, 9, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, + 3, 203, 3629, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 5, + 203, 3637, 8, 203, 10, 203, 12, 203, 3640, 9, 203, 1, 203, 3, 203, 3643, + 8, 203, 3, 203, 3645, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 5, 203, 3651, + 8, 203, 10, 203, 12, 203, 3654, 9, 203, 3, 203, 3656, 8, 203, 1, 203, 1, + 203, 1, 203, 3, 203, 3661, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3666, + 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3672, 8, 203, 1, 204, 1, + 204, 3, 204, 3676, 8, 204, 1, 204, 1, 204, 3, 204, 3680, 8, 204, 1, 204, + 1, 204, 1, 204, 1, 204, 3, 204, 3686, 8, 204, 1, 204, 1, 204, 1, 204, 1, + 204, 3, 204, 3692, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3697, 8, 204, + 1, 204, 1, 204, 1, 204, 3, 204, 3702, 8, 204, 1, 204, 1, 204, 1, 204, 3, + 204, 3707, 8, 204, 1, 204, 1, 204, 1, 204, 3, 204, 3712, 8, 204, 1, 205, + 1, 205, 1, 205, 1, 205, 5, 205, 3718, 8, 205, 10, 205, 12, 205, 3721, 9, + 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, + 206, 3731, 8, 206, 1, 207, 1, 207, 1, 207, 3, 207, 3736, 8, 207, 1, 207, + 1, 207, 1, 207, 1, 207, 3, 207, 3742, 8, 207, 5, 207, 3744, 8, 207, 10, + 207, 12, 207, 3747, 9, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, + 208, 3, 208, 3755, 8, 208, 3, 208, 3757, 8, 208, 3, 208, 3759, 8, 208, + 1, 209, 1, 209, 1, 209, 1, 209, 5, 209, 3765, 8, 209, 10, 209, 12, 209, + 3768, 9, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, + 210, 1, 211, 1, 211, 1, 212, 1, 212, 1, 213, 1, 213, 1, 214, 1, 214, 1, + 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, + 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 5, 215, 3801, 8, 215, 10, + 215, 12, 215, 3804, 9, 215, 3, 215, 3806, 8, 215, 1, 215, 3, 215, 3809, + 8, 215, 1, 216, 1, 216, 1, 216, 1, 216, 5, 216, 3815, 8, 216, 10, 216, + 12, 216, 3818, 9, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 3824, 8, + 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, + 217, 3, 217, 3835, 8, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, + 1, 219, 3, 219, 3844, 8, 219, 1, 219, 1, 219, 5, 219, 3848, 8, 219, 10, + 219, 12, 219, 3851, 9, 219, 1, 219, 1, 219, 1, 220, 4, 220, 3856, 8, 220, + 11, 220, 12, 220, 3857, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, + 1, 222, 3, 222, 3867, 8, 222, 1, 223, 1, 223, 1, 223, 1, 223, 4, 223, 3873, + 8, 223, 11, 223, 12, 223, 3874, 1, 223, 1, 223, 5, 223, 3879, 8, 223, 10, + 223, 12, 223, 3882, 9, 223, 1, 223, 3, 223, 3885, 8, 223, 1, 224, 1, 224, + 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 3894, 8, 224, 1, 224, 1, + 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, + 224, 3906, 8, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 3912, 8, 224, + 3, 224, 3914, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, + 225, 1, 225, 1, 225, 1, 225, 1, 225, 3, 225, 3927, 8, 225, 5, 225, 3929, + 8, 225, 10, 225, 12, 225, 3932, 9, 225, 1, 225, 1, 225, 1, 225, 1, 225, + 1, 225, 1, 225, 1, 225, 5, 225, 3941, 8, 225, 10, 225, 12, 225, 3944, 9, + 225, 1, 225, 1, 225, 3, 225, 3948, 8, 225, 3, 225, 3950, 8, 225, 1, 225, + 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, + 1, 227, 1, 227, 1, 227, 3, 227, 3965, 8, 227, 1, 228, 4, 228, 3968, 8, + 228, 11, 228, 12, 228, 3969, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, + 229, 1, 229, 3, 229, 3979, 8, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, + 5, 230, 3986, 8, 230, 10, 230, 12, 230, 3989, 9, 230, 3, 230, 3991, 8, + 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 5, 231, 4000, + 8, 231, 10, 231, 12, 231, 4003, 9, 231, 1, 231, 1, 231, 1, 232, 1, 232, + 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, + 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 4025, 8, + 233, 1, 234, 1, 234, 1, 235, 3, 235, 4030, 8, 235, 1, 235, 1, 235, 1, 235, + 3, 235, 4035, 8, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 5, 235, 4042, + 8, 235, 10, 235, 12, 235, 4045, 9, 235, 1, 235, 1, 235, 1, 235, 1, 235, + 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, + 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, + 1, 237, 1, 237, 3, 237, 4071, 8, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, + 238, 3, 238, 4078, 8, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, + 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 4093, 8, + 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, + 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 5, 241, 4110, 8, 241, + 10, 241, 12, 241, 4113, 9, 241, 1, 241, 1, 241, 3, 241, 4117, 8, 241, 1, + 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 5, 242, 4126, 8, 242, + 10, 242, 12, 242, 4129, 9, 242, 1, 242, 1, 242, 3, 242, 4133, 8, 242, 1, + 242, 1, 242, 5, 242, 4137, 8, 242, 10, 242, 12, 242, 4140, 9, 242, 1, 242, + 3, 242, 4143, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 3, + 243, 4151, 8, 243, 1, 243, 3, 243, 4154, 8, 243, 1, 244, 1, 244, 1, 244, + 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, + 5, 246, 4168, 8, 246, 10, 246, 12, 246, 4171, 9, 246, 1, 247, 1, 247, 1, + 247, 1, 247, 1, 247, 3, 247, 4178, 8, 247, 1, 247, 3, 247, 4181, 8, 247, + 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 4188, 8, 248, 1, 248, 1, + 248, 1, 248, 1, 248, 5, 248, 4194, 8, 248, 10, 248, 12, 248, 4197, 9, 248, + 1, 248, 1, 248, 3, 248, 4201, 8, 248, 1, 248, 3, 248, 4204, 8, 248, 1, + 248, 3, 248, 4207, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, + 5, 249, 4215, 8, 249, 10, 249, 12, 249, 4218, 9, 249, 3, 249, 4220, 8, + 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 3, 250, 4227, 8, 250, 1, 250, + 3, 250, 4230, 8, 250, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 4236, 8, + 251, 10, 251, 12, 251, 4239, 9, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, + 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 5, + 252, 4254, 8, 252, 10, 252, 12, 252, 4257, 9, 252, 1, 252, 1, 252, 1, 252, + 3, 252, 4262, 8, 252, 1, 252, 3, 252, 4265, 8, 252, 1, 253, 1, 253, 1, + 253, 3, 253, 4270, 8, 253, 1, 253, 5, 253, 4273, 8, 253, 10, 253, 12, 253, + 4276, 9, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 5, 254, 4283, 8, + 254, 10, 254, 12, 254, 4286, 9, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, + 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, + 256, 5, 256, 4302, 8, 256, 10, 256, 12, 256, 4305, 9, 256, 1, 256, 1, 256, + 1, 256, 4, 256, 4310, 8, 256, 11, 256, 12, 256, 4311, 1, 256, 1, 256, 1, + 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 5, 257, 4322, 8, 257, 10, + 257, 12, 257, 4325, 9, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 4331, + 8, 257, 1, 257, 1, 257, 3, 257, 4335, 8, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, - 259, 4292, 8, 259, 1, 259, 1, 259, 3, 259, 4296, 8, 259, 1, 259, 1, 259, - 3, 259, 4300, 8, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4305, 8, 259, 1, - 259, 1, 259, 1, 259, 3, 259, 4310, 8, 259, 1, 259, 1, 259, 1, 259, 3, 259, - 4315, 8, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4322, 8, - 259, 1, 259, 3, 259, 4325, 8, 259, 1, 260, 5, 260, 4328, 8, 260, 10, 260, - 12, 260, 4331, 9, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, + 259, 4349, 8, 259, 1, 259, 1, 259, 3, 259, 4353, 8, 259, 1, 259, 1, 259, + 3, 259, 4357, 8, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4362, 8, 259, 1, + 259, 1, 259, 1, 259, 3, 259, 4367, 8, 259, 1, 259, 1, 259, 1, 259, 3, 259, + 4372, 8, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4379, 8, + 259, 1, 259, 3, 259, 4382, 8, 259, 1, 260, 5, 260, 4385, 8, 260, 10, 260, + 12, 260, 4388, 9, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, - 1, 261, 1, 261, 1, 261, 3, 261, 4360, 8, 261, 1, 262, 1, 262, 1, 262, 1, - 262, 1, 262, 1, 262, 3, 262, 4368, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, - 4373, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4378, 8, 262, 1, 262, 1, - 262, 3, 262, 4382, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4387, 8, 262, - 1, 262, 1, 262, 3, 262, 4391, 8, 262, 1, 262, 1, 262, 4, 262, 4395, 8, - 262, 11, 262, 12, 262, 4396, 3, 262, 4399, 8, 262, 1, 262, 1, 262, 1, 262, - 4, 262, 4404, 8, 262, 11, 262, 12, 262, 4405, 3, 262, 4408, 8, 262, 1, - 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4417, 8, 262, - 1, 262, 1, 262, 1, 262, 3, 262, 4422, 8, 262, 1, 262, 1, 262, 1, 262, 3, - 262, 4427, 8, 262, 1, 262, 1, 262, 3, 262, 4431, 8, 262, 1, 262, 1, 262, - 1, 262, 3, 262, 4436, 8, 262, 1, 262, 1, 262, 3, 262, 4440, 8, 262, 1, - 262, 1, 262, 4, 262, 4444, 8, 262, 11, 262, 12, 262, 4445, 3, 262, 4448, - 8, 262, 1, 262, 1, 262, 1, 262, 4, 262, 4453, 8, 262, 11, 262, 12, 262, - 4454, 3, 262, 4457, 8, 262, 3, 262, 4459, 8, 262, 1, 263, 1, 263, 1, 263, - 3, 263, 4464, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4470, 8, - 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4476, 8, 263, 1, 263, 1, 263, - 1, 263, 1, 263, 3, 263, 4482, 8, 263, 1, 263, 1, 263, 3, 263, 4486, 8, - 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4492, 8, 263, 3, 263, 4494, + 1, 261, 1, 261, 1, 261, 3, 261, 4417, 8, 261, 1, 262, 1, 262, 1, 262, 1, + 262, 1, 262, 1, 262, 3, 262, 4425, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, + 4430, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4435, 8, 262, 1, 262, 1, + 262, 3, 262, 4439, 8, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4444, 8, 262, + 1, 262, 1, 262, 3, 262, 4448, 8, 262, 1, 262, 1, 262, 4, 262, 4452, 8, + 262, 11, 262, 12, 262, 4453, 3, 262, 4456, 8, 262, 1, 262, 1, 262, 1, 262, + 4, 262, 4461, 8, 262, 11, 262, 12, 262, 4462, 3, 262, 4465, 8, 262, 1, + 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 3, 262, 4474, 8, 262, + 1, 262, 1, 262, 1, 262, 3, 262, 4479, 8, 262, 1, 262, 1, 262, 1, 262, 3, + 262, 4484, 8, 262, 1, 262, 1, 262, 3, 262, 4488, 8, 262, 1, 262, 1, 262, + 1, 262, 3, 262, 4493, 8, 262, 1, 262, 1, 262, 3, 262, 4497, 8, 262, 1, + 262, 1, 262, 4, 262, 4501, 8, 262, 11, 262, 12, 262, 4502, 3, 262, 4505, + 8, 262, 1, 262, 1, 262, 1, 262, 4, 262, 4510, 8, 262, 11, 262, 12, 262, + 4511, 3, 262, 4514, 8, 262, 3, 262, 4516, 8, 262, 1, 263, 1, 263, 1, 263, + 3, 263, 4521, 8, 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4527, 8, + 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4533, 8, 263, 1, 263, 1, 263, + 1, 263, 1, 263, 3, 263, 4539, 8, 263, 1, 263, 1, 263, 3, 263, 4543, 8, + 263, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 4549, 8, 263, 3, 263, 4551, 8, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, - 1, 265, 1, 265, 3, 265, 4506, 8, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, - 265, 5, 265, 4513, 8, 265, 10, 265, 12, 265, 4516, 9, 265, 1, 265, 1, 265, - 3, 265, 4520, 8, 265, 1, 265, 1, 265, 4, 265, 4524, 8, 265, 11, 265, 12, - 265, 4525, 3, 265, 4528, 8, 265, 1, 265, 1, 265, 1, 265, 4, 265, 4533, - 8, 265, 11, 265, 12, 265, 4534, 3, 265, 4537, 8, 265, 1, 266, 1, 266, 1, - 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 4548, 8, 267, - 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 5, 267, 4555, 8, 267, 10, 267, - 12, 267, 4558, 9, 267, 1, 267, 1, 267, 3, 267, 4562, 8, 267, 1, 268, 1, - 268, 3, 268, 4566, 8, 268, 1, 268, 1, 268, 3, 268, 4570, 8, 268, 1, 268, - 1, 268, 4, 268, 4574, 8, 268, 11, 268, 12, 268, 4575, 3, 268, 4578, 8, + 1, 265, 1, 265, 3, 265, 4563, 8, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, + 265, 5, 265, 4570, 8, 265, 10, 265, 12, 265, 4573, 9, 265, 1, 265, 1, 265, + 3, 265, 4577, 8, 265, 1, 265, 1, 265, 4, 265, 4581, 8, 265, 11, 265, 12, + 265, 4582, 3, 265, 4585, 8, 265, 1, 265, 1, 265, 1, 265, 4, 265, 4590, + 8, 265, 11, 265, 12, 265, 4591, 3, 265, 4594, 8, 265, 1, 266, 1, 266, 1, + 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 4605, 8, 267, + 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 5, 267, 4612, 8, 267, 10, 267, + 12, 267, 4615, 9, 267, 1, 267, 1, 267, 3, 267, 4619, 8, 267, 1, 268, 1, + 268, 3, 268, 4623, 8, 268, 1, 268, 1, 268, 3, 268, 4627, 8, 268, 1, 268, + 1, 268, 4, 268, 4631, 8, 268, 11, 268, 12, 268, 4632, 3, 268, 4635, 8, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, - 270, 1, 270, 3, 270, 4590, 8, 270, 1, 270, 4, 270, 4593, 8, 270, 11, 270, - 12, 270, 4594, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, - 1, 272, 1, 272, 1, 272, 1, 272, 3, 272, 4608, 8, 272, 1, 273, 1, 273, 1, - 273, 1, 273, 3, 273, 4614, 8, 273, 1, 273, 1, 273, 3, 273, 4618, 8, 273, - 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 4625, 8, 274, 1, 274, 1, - 274, 1, 274, 4, 274, 4630, 8, 274, 11, 274, 12, 274, 4631, 3, 274, 4634, + 270, 1, 270, 3, 270, 4647, 8, 270, 1, 270, 4, 270, 4650, 8, 270, 11, 270, + 12, 270, 4651, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, + 1, 272, 1, 272, 1, 272, 1, 272, 3, 272, 4665, 8, 272, 1, 273, 1, 273, 1, + 273, 1, 273, 3, 273, 4671, 8, 273, 1, 273, 1, 273, 3, 273, 4675, 8, 273, + 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 4682, 8, 274, 1, 274, 1, + 274, 1, 274, 4, 274, 4687, 8, 274, 11, 274, 12, 274, 4688, 3, 274, 4691, 8, 274, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, - 4643, 8, 276, 10, 276, 12, 276, 4646, 9, 276, 1, 276, 1, 276, 1, 276, 1, - 276, 1, 276, 3, 276, 4653, 8, 276, 1, 276, 1, 276, 1, 276, 3, 276, 4658, - 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 4666, 8, - 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 4673, 8, 276, 10, - 276, 12, 276, 4676, 9, 276, 3, 276, 4678, 8, 276, 1, 277, 1, 277, 1, 278, - 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 3, 279, 4690, 8, - 279, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 4696, 8, 280, 1, 281, 1, 281, + 4700, 8, 276, 10, 276, 12, 276, 4703, 9, 276, 1, 276, 1, 276, 1, 276, 1, + 276, 1, 276, 3, 276, 4710, 8, 276, 1, 276, 1, 276, 1, 276, 3, 276, 4715, + 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 4723, 8, + 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 4730, 8, 276, 10, + 276, 12, 276, 4733, 9, 276, 3, 276, 4735, 8, 276, 1, 277, 1, 277, 1, 278, + 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 3, 279, 4747, 8, + 279, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 4753, 8, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, - 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4725, 8, - 281, 3, 281, 4727, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, - 4734, 8, 281, 3, 281, 4736, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, - 281, 3, 281, 4743, 8, 281, 3, 281, 4745, 8, 281, 1, 281, 1, 281, 1, 281, - 1, 281, 1, 281, 3, 281, 4752, 8, 281, 3, 281, 4754, 8, 281, 1, 281, 1, - 281, 1, 281, 1, 281, 1, 281, 3, 281, 4761, 8, 281, 3, 281, 4763, 8, 281, - 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4770, 8, 281, 3, 281, 4772, - 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4779, 8, 281, 3, - 281, 4781, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4788, - 8, 281, 3, 281, 4790, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, - 281, 4797, 8, 281, 3, 281, 4799, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, - 1, 281, 1, 281, 3, 281, 4807, 8, 281, 3, 281, 4809, 8, 281, 1, 281, 1, - 281, 1, 281, 1, 281, 1, 281, 3, 281, 4816, 8, 281, 3, 281, 4818, 8, 281, - 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4825, 8, 281, 3, 281, 4827, - 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4835, 8, - 281, 3, 281, 4837, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, - 3, 281, 4845, 8, 281, 3, 281, 4847, 8, 281, 1, 281, 1, 281, 1, 281, 1, - 281, 1, 281, 1, 281, 3, 281, 4855, 8, 281, 3, 281, 4857, 8, 281, 1, 281, + 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4782, 8, + 281, 3, 281, 4784, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, + 4791, 8, 281, 3, 281, 4793, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, + 281, 3, 281, 4800, 8, 281, 3, 281, 4802, 8, 281, 1, 281, 1, 281, 1, 281, + 1, 281, 1, 281, 3, 281, 4809, 8, 281, 3, 281, 4811, 8, 281, 1, 281, 1, + 281, 1, 281, 1, 281, 1, 281, 3, 281, 4818, 8, 281, 3, 281, 4820, 8, 281, + 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4827, 8, 281, 3, 281, 4829, + 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4836, 8, 281, 3, + 281, 4838, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4845, + 8, 281, 3, 281, 4847, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, + 281, 4854, 8, 281, 3, 281, 4856, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, + 1, 281, 1, 281, 3, 281, 4864, 8, 281, 3, 281, 4866, 8, 281, 1, 281, 1, + 281, 1, 281, 1, 281, 1, 281, 3, 281, 4873, 8, 281, 3, 281, 4875, 8, 281, + 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4882, 8, 281, 3, 281, 4884, + 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4892, 8, + 281, 3, 281, 4894, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, + 3, 281, 4902, 8, 281, 3, 281, 4904, 8, 281, 1, 281, 1, 281, 1, 281, 1, + 281, 1, 281, 1, 281, 3, 281, 4912, 8, 281, 3, 281, 4914, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, - 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4885, 8, - 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4892, 8, 281, 1, 281, + 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4942, 8, + 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4949, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, - 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4908, 8, 281, 1, 281, 1, 281, 1, - 281, 3, 281, 4913, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, - 1, 281, 1, 281, 1, 281, 3, 281, 4924, 8, 281, 3, 281, 4926, 8, 281, 1, + 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4965, 8, 281, 1, 281, 1, 281, 1, + 281, 3, 281, 4970, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, + 1, 281, 1, 281, 1, 281, 3, 281, 4981, 8, 281, 3, 281, 4983, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, - 281, 1, 281, 1, 281, 1, 281, 3, 281, 4959, 8, 281, 3, 281, 4961, 8, 281, - 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4969, 8, 281, 3, - 281, 4971, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, - 4979, 8, 281, 3, 281, 4981, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, - 281, 1, 281, 3, 281, 4989, 8, 281, 3, 281, 4991, 8, 281, 1, 281, 1, 281, - 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 4999, 8, 281, 3, 281, 5001, 8, - 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5010, + 281, 1, 281, 1, 281, 1, 281, 3, 281, 5016, 8, 281, 3, 281, 5018, 8, 281, + 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5026, 8, 281, 3, + 281, 5028, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, + 5036, 8, 281, 3, 281, 5038, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, + 281, 1, 281, 3, 281, 5046, 8, 281, 3, 281, 5048, 8, 281, 1, 281, 1, 281, + 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5056, 8, 281, 3, 281, 5058, 8, + 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5067, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, - 3, 281, 5020, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5026, 8, - 281, 1, 281, 1, 281, 1, 281, 3, 281, 5031, 8, 281, 3, 281, 5033, 8, 281, - 1, 281, 3, 281, 5036, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, - 281, 1, 281, 3, 281, 5045, 8, 281, 3, 281, 5047, 8, 281, 1, 281, 1, 281, - 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5056, 8, 281, 3, 281, 5058, - 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5066, 8, - 281, 3, 281, 5068, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, - 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5080, 8, 281, 3, 281, 5082, 8, - 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5090, 8, 281, - 3, 281, 5092, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, - 281, 3, 281, 5101, 8, 281, 3, 281, 5103, 8, 281, 3, 281, 5105, 8, 281, - 1, 282, 1, 282, 1, 282, 1, 282, 5, 282, 5111, 8, 282, 10, 282, 12, 282, - 5114, 9, 282, 1, 282, 1, 282, 1, 282, 3, 282, 5119, 8, 282, 3, 282, 5121, - 8, 282, 1, 282, 1, 282, 1, 282, 3, 282, 5126, 8, 282, 3, 282, 5128, 8, + 3, 281, 5077, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5083, 8, + 281, 1, 281, 1, 281, 1, 281, 3, 281, 5088, 8, 281, 3, 281, 5090, 8, 281, + 1, 281, 3, 281, 5093, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, + 281, 1, 281, 3, 281, 5102, 8, 281, 3, 281, 5104, 8, 281, 1, 281, 1, 281, + 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5113, 8, 281, 3, 281, 5115, + 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5123, 8, + 281, 3, 281, 5125, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, + 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5137, 8, 281, 3, 281, 5139, 8, + 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5147, 8, 281, + 3, 281, 5149, 8, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, + 281, 3, 281, 5158, 8, 281, 3, 281, 5160, 8, 281, 3, 281, 5162, 8, 281, + 1, 282, 1, 282, 1, 282, 1, 282, 5, 282, 5168, 8, 282, 10, 282, 12, 282, + 5171, 9, 282, 1, 282, 1, 282, 1, 282, 3, 282, 5176, 8, 282, 3, 282, 5178, + 8, 282, 1, 282, 1, 282, 1, 282, 3, 282, 5183, 8, 282, 3, 282, 5185, 8, 282, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, - 284, 5138, 8, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, - 1, 286, 3, 286, 5148, 8, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, - 287, 3, 287, 5156, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, - 3, 287, 5164, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, + 284, 5195, 8, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, + 1, 286, 3, 286, 5205, 8, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, + 287, 3, 287, 5213, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, + 3, 287, 5221, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, - 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5213, 8, 287, 1, 287, 1, 287, + 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5270, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, - 5243, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, - 287, 5252, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, + 5300, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, + 287, 5309, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, - 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5301, 8, 287, 1, 288, 1, 288, 3, - 288, 5305, 8, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, - 5313, 8, 288, 1, 288, 3, 288, 5316, 8, 288, 1, 288, 5, 288, 5319, 8, 288, - 10, 288, 12, 288, 5322, 9, 288, 1, 288, 1, 288, 3, 288, 5326, 8, 288, 1, - 288, 1, 288, 1, 288, 1, 288, 3, 288, 5332, 8, 288, 3, 288, 5334, 8, 288, - 1, 288, 1, 288, 3, 288, 5338, 8, 288, 1, 288, 1, 288, 3, 288, 5342, 8, - 288, 1, 288, 1, 288, 3, 288, 5346, 8, 288, 1, 289, 3, 289, 5349, 8, 289, - 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 5356, 8, 289, 1, 289, 3, - 289, 5359, 8, 289, 1, 289, 1, 289, 3, 289, 5363, 8, 289, 1, 290, 1, 290, - 1, 291, 1, 291, 1, 291, 3, 291, 5370, 8, 291, 1, 291, 5, 291, 5373, 8, - 291, 10, 291, 12, 291, 5376, 9, 291, 1, 292, 1, 292, 3, 292, 5380, 8, 292, - 1, 292, 3, 292, 5383, 8, 292, 1, 292, 3, 292, 5386, 8, 292, 1, 292, 3, - 292, 5389, 8, 292, 1, 292, 3, 292, 5392, 8, 292, 1, 292, 3, 292, 5395, - 8, 292, 1, 292, 1, 292, 3, 292, 5399, 8, 292, 1, 292, 3, 292, 5402, 8, - 292, 1, 292, 3, 292, 5405, 8, 292, 1, 292, 1, 292, 3, 292, 5409, 8, 292, - 1, 292, 3, 292, 5412, 8, 292, 3, 292, 5414, 8, 292, 1, 293, 1, 293, 3, - 293, 5418, 8, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 5, 294, - 5426, 8, 294, 10, 294, 12, 294, 5429, 9, 294, 3, 294, 5431, 8, 294, 1, - 295, 1, 295, 1, 295, 3, 295, 5436, 8, 295, 1, 295, 1, 295, 1, 295, 3, 295, - 5441, 8, 295, 3, 295, 5443, 8, 295, 1, 296, 1, 296, 3, 296, 5447, 8, 296, - 1, 297, 1, 297, 1, 297, 5, 297, 5452, 8, 297, 10, 297, 12, 297, 5455, 9, - 297, 1, 298, 1, 298, 3, 298, 5459, 8, 298, 1, 298, 3, 298, 5462, 8, 298, - 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 5468, 8, 298, 1, 298, 3, 298, 5471, - 8, 298, 3, 298, 5473, 8, 298, 1, 299, 3, 299, 5476, 8, 299, 1, 299, 1, - 299, 1, 299, 1, 299, 3, 299, 5482, 8, 299, 1, 299, 3, 299, 5485, 8, 299, - 1, 299, 1, 299, 1, 299, 3, 299, 5490, 8, 299, 1, 299, 3, 299, 5493, 8, - 299, 3, 299, 5495, 8, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, - 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 5507, 8, 300, 1, 301, 1, 301, 3, - 301, 5511, 8, 301, 1, 301, 1, 301, 3, 301, 5515, 8, 301, 1, 301, 1, 301, - 1, 301, 3, 301, 5520, 8, 301, 1, 301, 3, 301, 5523, 8, 301, 1, 302, 1, + 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5358, 8, 287, 1, 288, 1, 288, 3, + 288, 5362, 8, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, + 5370, 8, 288, 1, 288, 3, 288, 5373, 8, 288, 1, 288, 5, 288, 5376, 8, 288, + 10, 288, 12, 288, 5379, 9, 288, 1, 288, 1, 288, 3, 288, 5383, 8, 288, 1, + 288, 1, 288, 1, 288, 1, 288, 3, 288, 5389, 8, 288, 3, 288, 5391, 8, 288, + 1, 288, 1, 288, 3, 288, 5395, 8, 288, 1, 288, 1, 288, 3, 288, 5399, 8, + 288, 1, 288, 1, 288, 3, 288, 5403, 8, 288, 1, 289, 3, 289, 5406, 8, 289, + 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 5413, 8, 289, 1, 289, 3, + 289, 5416, 8, 289, 1, 289, 1, 289, 3, 289, 5420, 8, 289, 1, 290, 1, 290, + 1, 291, 1, 291, 1, 291, 3, 291, 5427, 8, 291, 1, 291, 5, 291, 5430, 8, + 291, 10, 291, 12, 291, 5433, 9, 291, 1, 292, 1, 292, 3, 292, 5437, 8, 292, + 1, 292, 3, 292, 5440, 8, 292, 1, 292, 3, 292, 5443, 8, 292, 1, 292, 3, + 292, 5446, 8, 292, 1, 292, 3, 292, 5449, 8, 292, 1, 292, 3, 292, 5452, + 8, 292, 1, 292, 1, 292, 3, 292, 5456, 8, 292, 1, 292, 3, 292, 5459, 8, + 292, 1, 292, 3, 292, 5462, 8, 292, 1, 292, 1, 292, 3, 292, 5466, 8, 292, + 1, 292, 3, 292, 5469, 8, 292, 3, 292, 5471, 8, 292, 1, 293, 1, 293, 3, + 293, 5475, 8, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 5, 294, + 5483, 8, 294, 10, 294, 12, 294, 5486, 9, 294, 3, 294, 5488, 8, 294, 1, + 295, 1, 295, 1, 295, 3, 295, 5493, 8, 295, 1, 295, 1, 295, 1, 295, 3, 295, + 5498, 8, 295, 3, 295, 5500, 8, 295, 1, 296, 1, 296, 3, 296, 5504, 8, 296, + 1, 297, 1, 297, 1, 297, 5, 297, 5509, 8, 297, 10, 297, 12, 297, 5512, 9, + 297, 1, 298, 1, 298, 3, 298, 5516, 8, 298, 1, 298, 3, 298, 5519, 8, 298, + 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 5525, 8, 298, 1, 298, 3, 298, 5528, + 8, 298, 3, 298, 5530, 8, 298, 1, 299, 3, 299, 5533, 8, 299, 1, 299, 1, + 299, 1, 299, 1, 299, 3, 299, 5539, 8, 299, 1, 299, 3, 299, 5542, 8, 299, + 1, 299, 1, 299, 1, 299, 3, 299, 5547, 8, 299, 1, 299, 3, 299, 5550, 8, + 299, 3, 299, 5552, 8, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, + 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 5564, 8, 300, 1, 301, 1, 301, 3, + 301, 5568, 8, 301, 1, 301, 1, 301, 3, 301, 5572, 8, 301, 1, 301, 1, 301, + 1, 301, 3, 301, 5577, 8, 301, 1, 301, 3, 301, 5580, 8, 301, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 305, 1, - 305, 1, 305, 1, 306, 1, 306, 1, 306, 5, 306, 5540, 8, 306, 10, 306, 12, - 306, 5543, 9, 306, 1, 307, 1, 307, 3, 307, 5547, 8, 307, 1, 308, 1, 308, - 1, 308, 5, 308, 5552, 8, 308, 10, 308, 12, 308, 5555, 9, 308, 1, 309, 1, - 309, 1, 309, 1, 309, 3, 309, 5561, 8, 309, 1, 309, 1, 309, 1, 309, 1, 309, - 3, 309, 5567, 8, 309, 3, 309, 5569, 8, 309, 1, 310, 1, 310, 1, 310, 1, + 305, 1, 305, 1, 306, 1, 306, 1, 306, 5, 306, 5597, 8, 306, 10, 306, 12, + 306, 5600, 9, 306, 1, 307, 1, 307, 3, 307, 5604, 8, 307, 1, 308, 1, 308, + 1, 308, 5, 308, 5609, 8, 308, 10, 308, 12, 308, 5612, 9, 308, 1, 309, 1, + 309, 1, 309, 1, 309, 3, 309, 5618, 8, 309, 1, 309, 1, 309, 1, 309, 1, 309, + 3, 309, 5624, 8, 309, 3, 309, 5626, 8, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, - 310, 1, 310, 1, 310, 1, 310, 3, 310, 5587, 8, 310, 1, 311, 1, 311, 1, 311, - 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 5598, 8, 312, 1, + 310, 1, 310, 1, 310, 1, 310, 3, 310, 5644, 8, 310, 1, 311, 1, 311, 1, 311, + 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 5655, 8, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, - 312, 1, 312, 1, 312, 1, 312, 3, 312, 5613, 8, 312, 3, 312, 5615, 8, 312, - 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 3, 314, 5623, 8, 314, 1, - 314, 3, 314, 5626, 8, 314, 1, 314, 3, 314, 5629, 8, 314, 1, 314, 3, 314, - 5632, 8, 314, 1, 314, 3, 314, 5635, 8, 314, 1, 315, 1, 315, 1, 316, 1, + 312, 1, 312, 1, 312, 1, 312, 3, 312, 5670, 8, 312, 3, 312, 5672, 8, 312, + 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 3, 314, 5680, 8, 314, 1, + 314, 3, 314, 5683, 8, 314, 1, 314, 3, 314, 5686, 8, 314, 1, 314, 3, 314, + 5689, 8, 314, 1, 314, 3, 314, 5692, 8, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, - 319, 1, 319, 3, 319, 5651, 8, 319, 1, 319, 1, 319, 3, 319, 5655, 8, 319, - 1, 319, 1, 319, 1, 319, 3, 319, 5660, 8, 319, 1, 320, 1, 320, 1, 320, 1, - 320, 1, 320, 1, 320, 3, 320, 5668, 8, 320, 1, 321, 1, 321, 1, 322, 1, 322, - 1, 322, 1, 322, 3, 322, 5676, 8, 322, 1, 323, 1, 323, 1, 323, 5, 323, 5681, - 8, 323, 10, 323, 12, 323, 5684, 9, 323, 1, 324, 1, 324, 1, 325, 1, 325, + 319, 1, 319, 3, 319, 5708, 8, 319, 1, 319, 1, 319, 3, 319, 5712, 8, 319, + 1, 319, 1, 319, 1, 319, 3, 319, 5717, 8, 319, 1, 320, 1, 320, 1, 320, 1, + 320, 1, 320, 1, 320, 3, 320, 5725, 8, 320, 1, 321, 1, 321, 1, 322, 1, 322, + 1, 322, 1, 322, 3, 322, 5733, 8, 322, 1, 323, 1, 323, 1, 323, 5, 323, 5738, + 8, 323, 10, 323, 12, 323, 5741, 9, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, - 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 5724, 8, - 327, 10, 327, 12, 327, 5727, 9, 327, 1, 327, 1, 327, 3, 327, 5731, 8, 327, - 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 5738, 8, 327, 10, 327, - 12, 327, 5741, 9, 327, 1, 327, 1, 327, 3, 327, 5745, 8, 327, 1, 327, 3, - 327, 5748, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 5753, 8, 327, 1, 328, - 4, 328, 5756, 8, 328, 11, 328, 12, 328, 5757, 1, 329, 1, 329, 1, 329, 1, + 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 5781, 8, + 327, 10, 327, 12, 327, 5784, 9, 327, 1, 327, 1, 327, 3, 327, 5788, 8, 327, + 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 5795, 8, 327, 10, 327, + 12, 327, 5798, 9, 327, 1, 327, 1, 327, 3, 327, 5802, 8, 327, 1, 327, 3, + 327, 5805, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 5810, 8, 327, 1, 328, + 4, 328, 5813, 8, 328, 11, 328, 12, 328, 5814, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 5, - 329, 5772, 8, 329, 10, 329, 12, 329, 5775, 9, 329, 1, 329, 1, 329, 1, 329, - 1, 329, 1, 329, 1, 329, 5, 329, 5783, 8, 329, 10, 329, 12, 329, 5786, 9, - 329, 1, 329, 1, 329, 3, 329, 5790, 8, 329, 1, 329, 1, 329, 3, 329, 5794, - 8, 329, 1, 329, 1, 329, 3, 329, 5798, 8, 329, 1, 330, 1, 330, 1, 330, 1, + 329, 5829, 8, 329, 10, 329, 12, 329, 5832, 9, 329, 1, 329, 1, 329, 1, 329, + 1, 329, 1, 329, 1, 329, 5, 329, 5840, 8, 329, 10, 329, 12, 329, 5843, 9, + 329, 1, 329, 1, 329, 3, 329, 5847, 8, 329, 1, 329, 1, 329, 3, 329, 5851, + 8, 329, 1, 329, 1, 329, 3, 329, 5855, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, - 331, 1, 331, 3, 331, 5814, 8, 331, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, + 331, 1, 331, 3, 331, 5871, 8, 331, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 335, 1, 335, - 1, 335, 5, 335, 5831, 8, 335, 10, 335, 12, 335, 5834, 9, 335, 1, 336, 1, - 336, 1, 336, 5, 336, 5839, 8, 336, 10, 336, 12, 336, 5842, 9, 336, 1, 337, - 3, 337, 5845, 8, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, - 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5859, 8, 338, 1, 338, - 1, 338, 1, 338, 3, 338, 5864, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, - 338, 1, 338, 3, 338, 5872, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, - 5878, 8, 338, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 5, 340, 5885, 8, - 340, 10, 340, 12, 340, 5888, 9, 340, 1, 341, 1, 341, 1, 341, 5, 341, 5893, - 8, 341, 10, 341, 12, 341, 5896, 9, 341, 1, 342, 3, 342, 5899, 8, 342, 1, + 1, 335, 5, 335, 5888, 8, 335, 10, 335, 12, 335, 5891, 9, 335, 1, 336, 1, + 336, 1, 336, 5, 336, 5896, 8, 336, 10, 336, 12, 336, 5899, 9, 336, 1, 337, + 3, 337, 5902, 8, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, + 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5916, 8, 338, 1, 338, + 1, 338, 1, 338, 3, 338, 5921, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, + 338, 1, 338, 3, 338, 5929, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, + 5935, 8, 338, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 5, 340, 5942, 8, + 340, 10, 340, 12, 340, 5945, 9, 340, 1, 341, 1, 341, 1, 341, 5, 341, 5950, + 8, 341, 10, 341, 12, 341, 5953, 9, 341, 1, 342, 3, 342, 5956, 8, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, - 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 5924, 8, 343, 1, 344, 1, 344, - 1, 344, 1, 344, 1, 344, 1, 344, 4, 344, 5932, 8, 344, 11, 344, 12, 344, - 5933, 1, 344, 1, 344, 3, 344, 5938, 8, 344, 1, 344, 1, 344, 1, 345, 1, + 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 5981, 8, 343, 1, 344, 1, 344, + 1, 344, 1, 344, 1, 344, 1, 344, 4, 344, 5989, 8, 344, 11, 344, 12, 344, + 5990, 1, 344, 1, 344, 3, 344, 5995, 8, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 3, - 348, 5961, 8, 348, 1, 348, 1, 348, 3, 348, 5965, 8, 348, 1, 348, 1, 348, - 1, 349, 1, 349, 1, 349, 3, 349, 5972, 8, 349, 1, 349, 1, 349, 1, 350, 1, - 350, 1, 351, 1, 351, 1, 351, 5, 351, 5981, 8, 351, 10, 351, 12, 351, 5984, - 9, 351, 1, 352, 1, 352, 1, 352, 1, 352, 5, 352, 5990, 8, 352, 10, 352, - 12, 352, 5993, 9, 352, 1, 352, 1, 352, 1, 352, 3, 352, 5998, 8, 352, 1, - 353, 1, 353, 1, 353, 5, 353, 6003, 8, 353, 10, 353, 12, 353, 6006, 9, 353, - 1, 354, 1, 354, 1, 354, 5, 354, 6011, 8, 354, 10, 354, 12, 354, 6014, 9, - 354, 1, 355, 1, 355, 1, 355, 3, 355, 6019, 8, 355, 1, 356, 1, 356, 1, 356, - 1, 356, 1, 356, 3, 356, 6026, 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 5, - 357, 6032, 8, 357, 10, 357, 12, 357, 6035, 9, 357, 3, 357, 6037, 8, 357, + 348, 6018, 8, 348, 1, 348, 1, 348, 3, 348, 6022, 8, 348, 1, 348, 1, 348, + 1, 349, 1, 349, 1, 349, 3, 349, 6029, 8, 349, 1, 349, 1, 349, 1, 350, 1, + 350, 1, 351, 1, 351, 1, 351, 5, 351, 6038, 8, 351, 10, 351, 12, 351, 6041, + 9, 351, 1, 352, 1, 352, 1, 352, 1, 352, 5, 352, 6047, 8, 352, 10, 352, + 12, 352, 6050, 9, 352, 1, 352, 1, 352, 1, 352, 3, 352, 6055, 8, 352, 1, + 353, 1, 353, 1, 353, 5, 353, 6060, 8, 353, 10, 353, 12, 353, 6063, 9, 353, + 1, 354, 1, 354, 1, 354, 5, 354, 6068, 8, 354, 10, 354, 12, 354, 6071, 9, + 354, 1, 355, 1, 355, 1, 355, 3, 355, 6076, 8, 355, 1, 356, 1, 356, 1, 356, + 1, 356, 1, 356, 3, 356, 6083, 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 5, + 357, 6089, 8, 357, 10, 357, 12, 357, 6092, 9, 357, 3, 357, 6094, 8, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, - 1, 360, 1, 360, 1, 360, 1, 360, 3, 360, 6052, 8, 360, 1, 361, 1, 361, 1, - 362, 1, 362, 1, 362, 5, 362, 6059, 8, 362, 10, 362, 12, 362, 6062, 9, 362, - 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 6068, 8, 363, 1, 364, 1, 364, 1, - 364, 3, 364, 6073, 8, 364, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 0, 0, + 1, 360, 1, 360, 1, 360, 1, 360, 3, 360, 6109, 8, 360, 1, 361, 1, 361, 1, + 362, 1, 362, 1, 362, 5, 362, 6116, 8, 362, 10, 362, 12, 362, 6119, 9, 362, + 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 6125, 8, 363, 1, 364, 1, 364, 1, + 364, 3, 364, 6130, 8, 364, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 0, 0, 367, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, @@ -988,2453 +996,2480 @@ func mdlparserParserInit() { 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 0, - 49, 2, 0, 22, 22, 427, 427, 1, 0, 33, 34, 2, 0, 30, 30, 33, 33, 2, 0, 447, - 448, 479, 479, 2, 0, 93, 93, 479, 479, 2, 0, 400, 400, 431, 431, 1, 0, - 94, 95, 2, 0, 12, 12, 44, 44, 2, 0, 295, 295, 422, 422, 2, 0, 39, 39, 52, - 52, 2, 0, 14, 16, 54, 55, 2, 0, 490, 490, 496, 496, 3, 0, 69, 69, 135, - 138, 302, 302, 2, 0, 100, 100, 334, 337, 2, 0, 511, 511, 515, 515, 1, 0, - 514, 515, 1, 0, 285, 286, 6, 0, 285, 287, 481, 486, 490, 490, 494, 498, - 501, 502, 510, 514, 4, 0, 128, 128, 287, 287, 296, 297, 515, 516, 11, 0, - 39, 39, 148, 157, 160, 162, 164, 165, 167, 167, 169, 176, 180, 185, 194, - 195, 226, 226, 228, 231, 251, 251, 3, 0, 128, 128, 140, 140, 515, 515, - 3, 0, 255, 261, 400, 400, 515, 515, 4, 0, 135, 136, 246, 250, 295, 295, - 515, 515, 2, 0, 217, 217, 513, 513, 1, 0, 419, 421, 1, 0, 511, 512, 2, - 0, 511, 511, 514, 514, 2, 0, 329, 329, 332, 332, 2, 0, 341, 341, 439, 439, - 2, 0, 338, 338, 515, 515, 2, 0, 295, 297, 511, 511, 2, 0, 382, 382, 515, - 515, 8, 0, 148, 154, 160, 162, 165, 165, 169, 176, 194, 195, 226, 226, - 228, 231, 515, 515, 2, 0, 291, 291, 484, 484, 1, 0, 84, 85, 8, 0, 143, - 145, 187, 187, 192, 192, 224, 224, 314, 314, 377, 378, 380, 383, 515, 515, - 2, 0, 329, 329, 400, 401, 1, 0, 515, 516, 2, 1, 490, 490, 494, 494, 1, - 0, 481, 486, 1, 0, 487, 488, 2, 0, 489, 493, 503, 503, 1, 0, 262, 267, - 1, 0, 276, 280, 7, 0, 123, 123, 128, 128, 140, 140, 185, 185, 276, 282, - 296, 297, 515, 516, 1, 0, 296, 297, 7, 0, 49, 49, 188, 189, 219, 219, 301, - 301, 405, 405, 469, 469, 515, 515, 40, 0, 41, 42, 44, 44, 49, 49, 51, 52, - 54, 54, 69, 69, 116, 116, 124, 124, 135, 136, 138, 138, 164, 164, 168, - 168, 188, 188, 191, 193, 196, 196, 205, 208, 215, 216, 218, 219, 222, 222, - 232, 232, 247, 247, 276, 280, 302, 302, 304, 304, 331, 331, 333, 333, 350, - 351, 371, 371, 374, 374, 394, 394, 400, 400, 402, 402, 416, 417, 419, 422, - 430, 430, 443, 443, 447, 448, 453, 455, 477, 477, 479, 479, 58, 0, 8, 9, - 17, 21, 23, 30, 32, 35, 38, 44, 48, 49, 51, 52, 54, 54, 56, 59, 65, 67, - 69, 76, 81, 90, 93, 93, 96, 101, 103, 106, 110, 110, 112, 114, 116, 118, - 120, 120, 124, 124, 132, 132, 135, 136, 138, 139, 141, 146, 148, 153, 156, - 166, 168, 172, 174, 175, 179, 179, 187, 188, 191, 196, 207, 216, 218, 219, - 221, 222, 226, 232, 245, 248, 251, 251, 262, 270, 276, 280, 285, 291, 294, - 302, 304, 307, 311, 333, 338, 366, 368, 384, 386, 398, 400, 400, 402, 404, - 406, 407, 409, 417, 419, 428, 430, 430, 432, 432, 435, 435, 437, 468, 474, - 477, 479, 480, 492, 493, 6887, 0, 737, 1, 0, 0, 0, 2, 743, 1, 0, 0, 0, - 4, 763, 1, 0, 0, 0, 6, 765, 1, 0, 0, 0, 8, 797, 1, 0, 0, 0, 10, 931, 1, - 0, 0, 0, 12, 945, 1, 0, 0, 0, 14, 962, 1, 0, 0, 0, 16, 988, 1, 0, 0, 0, - 18, 1029, 1, 0, 0, 0, 20, 1031, 1, 0, 0, 0, 22, 1042, 1, 0, 0, 0, 24, 1058, - 1, 0, 0, 0, 26, 1060, 1, 0, 0, 0, 28, 1070, 1, 0, 0, 0, 30, 1077, 1, 0, - 0, 0, 32, 1081, 1, 0, 0, 0, 34, 1108, 1, 0, 0, 0, 36, 1135, 1, 0, 0, 0, - 38, 1212, 1, 0, 0, 0, 40, 1225, 1, 0, 0, 0, 42, 1295, 1, 0, 0, 0, 44, 1314, - 1, 0, 0, 0, 46, 1316, 1, 0, 0, 0, 48, 1324, 1, 0, 0, 0, 50, 1329, 1, 0, - 0, 0, 52, 1362, 1, 0, 0, 0, 54, 1364, 1, 0, 0, 0, 56, 1369, 1, 0, 0, 0, - 58, 1380, 1, 0, 0, 0, 60, 1385, 1, 0, 0, 0, 62, 1393, 1, 0, 0, 0, 64, 1401, - 1, 0, 0, 0, 66, 1409, 1, 0, 0, 0, 68, 1417, 1, 0, 0, 0, 70, 1425, 1, 0, - 0, 0, 72, 1433, 1, 0, 0, 0, 74, 1442, 1, 0, 0, 0, 76, 1462, 1, 0, 0, 0, - 78, 1464, 1, 0, 0, 0, 80, 1484, 1, 0, 0, 0, 82, 1489, 1, 0, 0, 0, 84, 1495, - 1, 0, 0, 0, 86, 1503, 1, 0, 0, 0, 88, 1539, 1, 0, 0, 0, 90, 1587, 1, 0, - 0, 0, 92, 1593, 1, 0, 0, 0, 94, 1604, 1, 0, 0, 0, 96, 1606, 1, 0, 0, 0, - 98, 1620, 1, 0, 0, 0, 100, 1622, 1, 0, 0, 0, 102, 1631, 1, 0, 0, 0, 104, - 1651, 1, 0, 0, 0, 106, 1686, 1, 0, 0, 0, 108, 1724, 1, 0, 0, 0, 110, 1726, - 1, 0, 0, 0, 112, 1753, 1, 0, 0, 0, 114, 1756, 1, 0, 0, 0, 116, 1762, 1, - 0, 0, 0, 118, 1770, 1, 0, 0, 0, 120, 1777, 1, 0, 0, 0, 122, 1779, 1, 0, - 0, 0, 124, 1789, 1, 0, 0, 0, 126, 1803, 1, 0, 0, 0, 128, 1805, 1, 0, 0, - 0, 130, 1873, 1, 0, 0, 0, 132, 1887, 1, 0, 0, 0, 134, 1907, 1, 0, 0, 0, - 136, 1922, 1, 0, 0, 0, 138, 1924, 1, 0, 0, 0, 140, 1930, 1, 0, 0, 0, 142, - 1938, 1, 0, 0, 0, 144, 1940, 1, 0, 0, 0, 146, 1948, 1, 0, 0, 0, 148, 1957, - 1, 0, 0, 0, 150, 1981, 1, 0, 0, 0, 152, 1984, 1, 0, 0, 0, 154, 1988, 1, - 0, 0, 0, 156, 1991, 1, 0, 0, 0, 158, 2001, 1, 0, 0, 0, 160, 2010, 1, 0, - 0, 0, 162, 2012, 1, 0, 0, 0, 164, 2023, 1, 0, 0, 0, 166, 2032, 1, 0, 0, - 0, 168, 2034, 1, 0, 0, 0, 170, 2068, 1, 0, 0, 0, 172, 2083, 1, 0, 0, 0, - 174, 2085, 1, 0, 0, 0, 176, 2093, 1, 0, 0, 0, 178, 2101, 1, 0, 0, 0, 180, - 2123, 1, 0, 0, 0, 182, 2142, 1, 0, 0, 0, 184, 2150, 1, 0, 0, 0, 186, 2156, - 1, 0, 0, 0, 188, 2159, 1, 0, 0, 0, 190, 2165, 1, 0, 0, 0, 192, 2175, 1, - 0, 0, 0, 194, 2183, 1, 0, 0, 0, 196, 2185, 1, 0, 0, 0, 198, 2192, 1, 0, - 0, 0, 200, 2200, 1, 0, 0, 0, 202, 2205, 1, 0, 0, 0, 204, 2538, 1, 0, 0, - 0, 206, 2540, 1, 0, 0, 0, 208, 2547, 1, 0, 0, 0, 210, 2557, 1, 0, 0, 0, - 212, 2571, 1, 0, 0, 0, 214, 2580, 1, 0, 0, 0, 216, 2590, 1, 0, 0, 0, 218, - 2602, 1, 0, 0, 0, 220, 2607, 1, 0, 0, 0, 222, 2612, 1, 0, 0, 0, 224, 2655, - 1, 0, 0, 0, 226, 2677, 1, 0, 0, 0, 228, 2679, 1, 0, 0, 0, 230, 2700, 1, - 0, 0, 0, 232, 2712, 1, 0, 0, 0, 234, 2722, 1, 0, 0, 0, 236, 2724, 1, 0, - 0, 0, 238, 2726, 1, 0, 0, 0, 240, 2730, 1, 0, 0, 0, 242, 2733, 1, 0, 0, - 0, 244, 2745, 1, 0, 0, 0, 246, 2761, 1, 0, 0, 0, 248, 2763, 1, 0, 0, 0, - 250, 2769, 1, 0, 0, 0, 252, 2771, 1, 0, 0, 0, 254, 2775, 1, 0, 0, 0, 256, - 2790, 1, 0, 0, 0, 258, 2806, 1, 0, 0, 0, 260, 2840, 1, 0, 0, 0, 262, 2854, - 1, 0, 0, 0, 264, 2864, 1, 0, 0, 0, 266, 2869, 1, 0, 0, 0, 268, 2887, 1, - 0, 0, 0, 270, 2905, 1, 0, 0, 0, 272, 2907, 1, 0, 0, 0, 274, 2910, 1, 0, - 0, 0, 276, 2914, 1, 0, 0, 0, 278, 2928, 1, 0, 0, 0, 280, 2931, 1, 0, 0, - 0, 282, 2945, 1, 0, 0, 0, 284, 2973, 1, 0, 0, 0, 286, 2977, 1, 0, 0, 0, - 288, 2979, 1, 0, 0, 0, 290, 2981, 1, 0, 0, 0, 292, 2986, 1, 0, 0, 0, 294, - 3008, 1, 0, 0, 0, 296, 3010, 1, 0, 0, 0, 298, 3027, 1, 0, 0, 0, 300, 3031, - 1, 0, 0, 0, 302, 3043, 1, 0, 0, 0, 304, 3046, 1, 0, 0, 0, 306, 3109, 1, - 0, 0, 0, 308, 3111, 1, 0, 0, 0, 310, 3119, 1, 0, 0, 0, 312, 3123, 1, 0, - 0, 0, 314, 3151, 1, 0, 0, 0, 316, 3153, 1, 0, 0, 0, 318, 3159, 1, 0, 0, - 0, 320, 3164, 1, 0, 0, 0, 322, 3169, 1, 0, 0, 0, 324, 3177, 1, 0, 0, 0, - 326, 3185, 1, 0, 0, 0, 328, 3187, 1, 0, 0, 0, 330, 3195, 1, 0, 0, 0, 332, - 3199, 1, 0, 0, 0, 334, 3206, 1, 0, 0, 0, 336, 3219, 1, 0, 0, 0, 338, 3223, - 1, 0, 0, 0, 340, 3226, 1, 0, 0, 0, 342, 3234, 1, 0, 0, 0, 344, 3238, 1, - 0, 0, 0, 346, 3246, 1, 0, 0, 0, 348, 3250, 1, 0, 0, 0, 350, 3258, 1, 0, - 0, 0, 352, 3266, 1, 0, 0, 0, 354, 3271, 1, 0, 0, 0, 356, 3275, 1, 0, 0, - 0, 358, 3277, 1, 0, 0, 0, 360, 3285, 1, 0, 0, 0, 362, 3296, 1, 0, 0, 0, - 364, 3298, 1, 0, 0, 0, 366, 3310, 1, 0, 0, 0, 368, 3312, 1, 0, 0, 0, 370, - 3320, 1, 0, 0, 0, 372, 3332, 1, 0, 0, 0, 374, 3334, 1, 0, 0, 0, 376, 3342, - 1, 0, 0, 0, 378, 3344, 1, 0, 0, 0, 380, 3358, 1, 0, 0, 0, 382, 3360, 1, - 0, 0, 0, 384, 3398, 1, 0, 0, 0, 386, 3400, 1, 0, 0, 0, 388, 3426, 1, 0, - 0, 0, 390, 3432, 1, 0, 0, 0, 392, 3435, 1, 0, 0, 0, 394, 3442, 1, 0, 0, - 0, 396, 3450, 1, 0, 0, 0, 398, 3452, 1, 0, 0, 0, 400, 3553, 1, 0, 0, 0, - 402, 3555, 1, 0, 0, 0, 404, 3557, 1, 0, 0, 0, 406, 3614, 1, 0, 0, 0, 408, - 3654, 1, 0, 0, 0, 410, 3656, 1, 0, 0, 0, 412, 3673, 1, 0, 0, 0, 414, 3678, - 1, 0, 0, 0, 416, 3701, 1, 0, 0, 0, 418, 3703, 1, 0, 0, 0, 420, 3714, 1, - 0, 0, 0, 422, 3720, 1, 0, 0, 0, 424, 3722, 1, 0, 0, 0, 426, 3724, 1, 0, - 0, 0, 428, 3726, 1, 0, 0, 0, 430, 3751, 1, 0, 0, 0, 432, 3766, 1, 0, 0, - 0, 434, 3777, 1, 0, 0, 0, 436, 3779, 1, 0, 0, 0, 438, 3783, 1, 0, 0, 0, - 440, 3798, 1, 0, 0, 0, 442, 3802, 1, 0, 0, 0, 444, 3805, 1, 0, 0, 0, 446, - 3811, 1, 0, 0, 0, 448, 3856, 1, 0, 0, 0, 450, 3858, 1, 0, 0, 0, 452, 3896, - 1, 0, 0, 0, 454, 3900, 1, 0, 0, 0, 456, 3910, 1, 0, 0, 0, 458, 3921, 1, - 0, 0, 0, 460, 3923, 1, 0, 0, 0, 462, 3935, 1, 0, 0, 0, 464, 3949, 1, 0, - 0, 0, 466, 3967, 1, 0, 0, 0, 468, 3969, 1, 0, 0, 0, 470, 3972, 1, 0, 0, - 0, 472, 3993, 1, 0, 0, 0, 474, 4013, 1, 0, 0, 0, 476, 4020, 1, 0, 0, 0, - 478, 4035, 1, 0, 0, 0, 480, 4037, 1, 0, 0, 0, 482, 4045, 1, 0, 0, 0, 484, - 4061, 1, 0, 0, 0, 486, 4096, 1, 0, 0, 0, 488, 4098, 1, 0, 0, 0, 490, 4102, - 1, 0, 0, 0, 492, 4106, 1, 0, 0, 0, 494, 4123, 1, 0, 0, 0, 496, 4125, 1, - 0, 0, 0, 498, 4151, 1, 0, 0, 0, 500, 4166, 1, 0, 0, 0, 502, 4174, 1, 0, - 0, 0, 504, 4185, 1, 0, 0, 0, 506, 4209, 1, 0, 0, 0, 508, 4220, 1, 0, 0, - 0, 510, 4232, 1, 0, 0, 0, 512, 4236, 1, 0, 0, 0, 514, 4258, 1, 0, 0, 0, - 516, 4281, 1, 0, 0, 0, 518, 4285, 1, 0, 0, 0, 520, 4329, 1, 0, 0, 0, 522, - 4359, 1, 0, 0, 0, 524, 4458, 1, 0, 0, 0, 526, 4493, 1, 0, 0, 0, 528, 4495, - 1, 0, 0, 0, 530, 4500, 1, 0, 0, 0, 532, 4538, 1, 0, 0, 0, 534, 4542, 1, - 0, 0, 0, 536, 4563, 1, 0, 0, 0, 538, 4579, 1, 0, 0, 0, 540, 4585, 1, 0, - 0, 0, 542, 4596, 1, 0, 0, 0, 544, 4602, 1, 0, 0, 0, 546, 4609, 1, 0, 0, - 0, 548, 4619, 1, 0, 0, 0, 550, 4635, 1, 0, 0, 0, 552, 4677, 1, 0, 0, 0, - 554, 4679, 1, 0, 0, 0, 556, 4681, 1, 0, 0, 0, 558, 4689, 1, 0, 0, 0, 560, - 4695, 1, 0, 0, 0, 562, 5104, 1, 0, 0, 0, 564, 5127, 1, 0, 0, 0, 566, 5129, - 1, 0, 0, 0, 568, 5137, 1, 0, 0, 0, 570, 5139, 1, 0, 0, 0, 572, 5147, 1, - 0, 0, 0, 574, 5300, 1, 0, 0, 0, 576, 5302, 1, 0, 0, 0, 578, 5348, 1, 0, - 0, 0, 580, 5364, 1, 0, 0, 0, 582, 5366, 1, 0, 0, 0, 584, 5413, 1, 0, 0, - 0, 586, 5415, 1, 0, 0, 0, 588, 5430, 1, 0, 0, 0, 590, 5442, 1, 0, 0, 0, - 592, 5446, 1, 0, 0, 0, 594, 5448, 1, 0, 0, 0, 596, 5472, 1, 0, 0, 0, 598, - 5494, 1, 0, 0, 0, 600, 5506, 1, 0, 0, 0, 602, 5522, 1, 0, 0, 0, 604, 5524, - 1, 0, 0, 0, 606, 5527, 1, 0, 0, 0, 608, 5530, 1, 0, 0, 0, 610, 5533, 1, - 0, 0, 0, 612, 5536, 1, 0, 0, 0, 614, 5544, 1, 0, 0, 0, 616, 5548, 1, 0, - 0, 0, 618, 5568, 1, 0, 0, 0, 620, 5586, 1, 0, 0, 0, 622, 5588, 1, 0, 0, - 0, 624, 5614, 1, 0, 0, 0, 626, 5616, 1, 0, 0, 0, 628, 5634, 1, 0, 0, 0, - 630, 5636, 1, 0, 0, 0, 632, 5638, 1, 0, 0, 0, 634, 5640, 1, 0, 0, 0, 636, - 5644, 1, 0, 0, 0, 638, 5659, 1, 0, 0, 0, 640, 5667, 1, 0, 0, 0, 642, 5669, - 1, 0, 0, 0, 644, 5675, 1, 0, 0, 0, 646, 5677, 1, 0, 0, 0, 648, 5685, 1, - 0, 0, 0, 650, 5687, 1, 0, 0, 0, 652, 5690, 1, 0, 0, 0, 654, 5752, 1, 0, - 0, 0, 656, 5755, 1, 0, 0, 0, 658, 5759, 1, 0, 0, 0, 660, 5799, 1, 0, 0, - 0, 662, 5813, 1, 0, 0, 0, 664, 5815, 1, 0, 0, 0, 666, 5817, 1, 0, 0, 0, - 668, 5825, 1, 0, 0, 0, 670, 5827, 1, 0, 0, 0, 672, 5835, 1, 0, 0, 0, 674, - 5844, 1, 0, 0, 0, 676, 5848, 1, 0, 0, 0, 678, 5879, 1, 0, 0, 0, 680, 5881, - 1, 0, 0, 0, 682, 5889, 1, 0, 0, 0, 684, 5898, 1, 0, 0, 0, 686, 5923, 1, - 0, 0, 0, 688, 5925, 1, 0, 0, 0, 690, 5941, 1, 0, 0, 0, 692, 5948, 1, 0, - 0, 0, 694, 5955, 1, 0, 0, 0, 696, 5957, 1, 0, 0, 0, 698, 5968, 1, 0, 0, - 0, 700, 5975, 1, 0, 0, 0, 702, 5977, 1, 0, 0, 0, 704, 5997, 1, 0, 0, 0, - 706, 5999, 1, 0, 0, 0, 708, 6007, 1, 0, 0, 0, 710, 6018, 1, 0, 0, 0, 712, - 6025, 1, 0, 0, 0, 714, 6027, 1, 0, 0, 0, 716, 6040, 1, 0, 0, 0, 718, 6042, - 1, 0, 0, 0, 720, 6044, 1, 0, 0, 0, 722, 6053, 1, 0, 0, 0, 724, 6055, 1, - 0, 0, 0, 726, 6067, 1, 0, 0, 0, 728, 6072, 1, 0, 0, 0, 730, 6074, 1, 0, - 0, 0, 732, 6076, 1, 0, 0, 0, 734, 736, 3, 2, 1, 0, 735, 734, 1, 0, 0, 0, - 736, 739, 1, 0, 0, 0, 737, 735, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, - 740, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, 740, 741, 5, 0, 0, 1, 741, 1, 1, - 0, 0, 0, 742, 744, 3, 718, 359, 0, 743, 742, 1, 0, 0, 0, 743, 744, 1, 0, - 0, 0, 744, 748, 1, 0, 0, 0, 745, 749, 3, 4, 2, 0, 746, 749, 3, 560, 280, - 0, 747, 749, 3, 620, 310, 0, 748, 745, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, - 748, 747, 1, 0, 0, 0, 749, 751, 1, 0, 0, 0, 750, 752, 5, 494, 0, 0, 751, - 750, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 754, 1, 0, 0, 0, 753, 755, - 5, 490, 0, 0, 754, 753, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 3, 1, 0, - 0, 0, 756, 764, 3, 8, 4, 0, 757, 764, 3, 10, 5, 0, 758, 764, 3, 38, 19, - 0, 759, 764, 3, 40, 20, 0, 760, 764, 3, 42, 21, 0, 761, 764, 3, 6, 3, 0, - 762, 764, 3, 44, 22, 0, 763, 756, 1, 0, 0, 0, 763, 757, 1, 0, 0, 0, 763, - 758, 1, 0, 0, 0, 763, 759, 1, 0, 0, 0, 763, 760, 1, 0, 0, 0, 763, 761, - 1, 0, 0, 0, 763, 762, 1, 0, 0, 0, 764, 5, 1, 0, 0, 0, 765, 766, 5, 392, - 0, 0, 766, 767, 5, 187, 0, 0, 767, 768, 5, 48, 0, 0, 768, 773, 3, 570, - 285, 0, 769, 770, 5, 495, 0, 0, 770, 772, 3, 570, 285, 0, 771, 769, 1, - 0, 0, 0, 772, 775, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, - 0, 774, 776, 1, 0, 0, 0, 775, 773, 1, 0, 0, 0, 776, 777, 5, 72, 0, 0, 777, - 782, 3, 568, 284, 0, 778, 779, 5, 285, 0, 0, 779, 781, 3, 568, 284, 0, - 780, 778, 1, 0, 0, 0, 781, 784, 1, 0, 0, 0, 782, 780, 1, 0, 0, 0, 782, - 783, 1, 0, 0, 0, 783, 790, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 785, 788, - 5, 289, 0, 0, 786, 789, 3, 708, 354, 0, 787, 789, 5, 515, 0, 0, 788, 786, - 1, 0, 0, 0, 788, 787, 1, 0, 0, 0, 789, 791, 1, 0, 0, 0, 790, 785, 1, 0, - 0, 0, 790, 791, 1, 0, 0, 0, 791, 794, 1, 0, 0, 0, 792, 793, 5, 433, 0, - 0, 793, 795, 5, 434, 0, 0, 794, 792, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, - 795, 7, 1, 0, 0, 0, 796, 798, 3, 718, 359, 0, 797, 796, 1, 0, 0, 0, 797, - 798, 1, 0, 0, 0, 798, 802, 1, 0, 0, 0, 799, 801, 3, 720, 360, 0, 800, 799, - 1, 0, 0, 0, 801, 804, 1, 0, 0, 0, 802, 800, 1, 0, 0, 0, 802, 803, 1, 0, - 0, 0, 803, 805, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 805, 808, 5, 17, 0, 0, - 806, 807, 5, 286, 0, 0, 807, 809, 7, 0, 0, 0, 808, 806, 1, 0, 0, 0, 808, - 809, 1, 0, 0, 0, 809, 834, 1, 0, 0, 0, 810, 835, 3, 90, 45, 0, 811, 835, - 3, 122, 61, 0, 812, 835, 3, 138, 69, 0, 813, 835, 3, 178, 89, 0, 814, 835, - 3, 180, 90, 0, 815, 835, 3, 332, 166, 0, 816, 835, 3, 334, 167, 0, 817, - 835, 3, 144, 72, 0, 818, 835, 3, 168, 84, 0, 819, 835, 3, 438, 219, 0, - 820, 835, 3, 446, 223, 0, 821, 835, 3, 454, 227, 0, 822, 835, 3, 462, 231, - 0, 823, 835, 3, 480, 240, 0, 824, 835, 3, 482, 241, 0, 825, 835, 3, 484, - 242, 0, 826, 835, 3, 504, 252, 0, 827, 835, 3, 506, 253, 0, 828, 835, 3, - 512, 256, 0, 829, 835, 3, 518, 259, 0, 830, 835, 3, 50, 25, 0, 831, 835, - 3, 78, 39, 0, 832, 835, 3, 156, 78, 0, 833, 835, 3, 460, 230, 0, 834, 810, - 1, 0, 0, 0, 834, 811, 1, 0, 0, 0, 834, 812, 1, 0, 0, 0, 834, 813, 1, 0, - 0, 0, 834, 814, 1, 0, 0, 0, 834, 815, 1, 0, 0, 0, 834, 816, 1, 0, 0, 0, - 834, 817, 1, 0, 0, 0, 834, 818, 1, 0, 0, 0, 834, 819, 1, 0, 0, 0, 834, - 820, 1, 0, 0, 0, 834, 821, 1, 0, 0, 0, 834, 822, 1, 0, 0, 0, 834, 823, - 1, 0, 0, 0, 834, 824, 1, 0, 0, 0, 834, 825, 1, 0, 0, 0, 834, 826, 1, 0, - 0, 0, 834, 827, 1, 0, 0, 0, 834, 828, 1, 0, 0, 0, 834, 829, 1, 0, 0, 0, - 834, 830, 1, 0, 0, 0, 834, 831, 1, 0, 0, 0, 834, 832, 1, 0, 0, 0, 834, - 833, 1, 0, 0, 0, 835, 9, 1, 0, 0, 0, 836, 837, 5, 18, 0, 0, 837, 838, 5, - 23, 0, 0, 838, 840, 3, 708, 354, 0, 839, 841, 3, 130, 65, 0, 840, 839, - 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, - 0, 0, 843, 932, 1, 0, 0, 0, 844, 845, 5, 18, 0, 0, 845, 846, 5, 27, 0, - 0, 846, 848, 3, 708, 354, 0, 847, 849, 3, 132, 66, 0, 848, 847, 1, 0, 0, - 0, 849, 850, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, - 932, 1, 0, 0, 0, 852, 853, 5, 18, 0, 0, 853, 854, 5, 28, 0, 0, 854, 856, - 3, 708, 354, 0, 855, 857, 3, 134, 67, 0, 856, 855, 1, 0, 0, 0, 857, 858, - 1, 0, 0, 0, 858, 856, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 932, 1, 0, - 0, 0, 860, 861, 5, 18, 0, 0, 861, 862, 5, 36, 0, 0, 862, 864, 3, 708, 354, - 0, 863, 865, 3, 136, 68, 0, 864, 863, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, - 866, 864, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 932, 1, 0, 0, 0, 868, - 869, 5, 18, 0, 0, 869, 870, 5, 314, 0, 0, 870, 871, 5, 339, 0, 0, 871, - 872, 3, 708, 354, 0, 872, 873, 5, 48, 0, 0, 873, 878, 3, 490, 245, 0, 874, - 875, 5, 495, 0, 0, 875, 877, 3, 490, 245, 0, 876, 874, 1, 0, 0, 0, 877, - 880, 1, 0, 0, 0, 878, 876, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 932, - 1, 0, 0, 0, 880, 878, 1, 0, 0, 0, 881, 882, 5, 18, 0, 0, 882, 883, 5, 314, - 0, 0, 883, 884, 5, 312, 0, 0, 884, 885, 3, 708, 354, 0, 885, 886, 5, 48, - 0, 0, 886, 891, 3, 490, 245, 0, 887, 888, 5, 495, 0, 0, 888, 890, 3, 490, - 245, 0, 889, 887, 1, 0, 0, 0, 890, 893, 1, 0, 0, 0, 891, 889, 1, 0, 0, - 0, 891, 892, 1, 0, 0, 0, 892, 932, 1, 0, 0, 0, 893, 891, 1, 0, 0, 0, 894, - 895, 5, 18, 0, 0, 895, 896, 5, 213, 0, 0, 896, 897, 5, 93, 0, 0, 897, 898, - 7, 1, 0, 0, 898, 899, 3, 708, 354, 0, 899, 900, 5, 186, 0, 0, 900, 902, - 5, 515, 0, 0, 901, 903, 3, 12, 6, 0, 902, 901, 1, 0, 0, 0, 903, 904, 1, - 0, 0, 0, 904, 902, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, 905, 932, 1, 0, 0, - 0, 906, 907, 5, 18, 0, 0, 907, 908, 5, 440, 0, 0, 908, 932, 3, 552, 276, - 0, 909, 910, 5, 18, 0, 0, 910, 911, 5, 33, 0, 0, 911, 912, 3, 708, 354, - 0, 912, 914, 5, 499, 0, 0, 913, 915, 3, 16, 8, 0, 914, 913, 1, 0, 0, 0, - 915, 916, 1, 0, 0, 0, 916, 914, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, - 918, 1, 0, 0, 0, 918, 919, 5, 500, 0, 0, 919, 932, 1, 0, 0, 0, 920, 921, - 5, 18, 0, 0, 921, 922, 5, 34, 0, 0, 922, 923, 3, 708, 354, 0, 923, 925, - 5, 499, 0, 0, 924, 926, 3, 16, 8, 0, 925, 924, 1, 0, 0, 0, 926, 927, 1, - 0, 0, 0, 927, 925, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 929, 1, 0, 0, - 0, 929, 930, 5, 500, 0, 0, 930, 932, 1, 0, 0, 0, 931, 836, 1, 0, 0, 0, - 931, 844, 1, 0, 0, 0, 931, 852, 1, 0, 0, 0, 931, 860, 1, 0, 0, 0, 931, - 868, 1, 0, 0, 0, 931, 881, 1, 0, 0, 0, 931, 894, 1, 0, 0, 0, 931, 906, - 1, 0, 0, 0, 931, 909, 1, 0, 0, 0, 931, 920, 1, 0, 0, 0, 932, 11, 1, 0, - 0, 0, 933, 934, 5, 48, 0, 0, 934, 939, 3, 14, 7, 0, 935, 936, 5, 495, 0, - 0, 936, 938, 3, 14, 7, 0, 937, 935, 1, 0, 0, 0, 938, 941, 1, 0, 0, 0, 939, - 937, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 946, 1, 0, 0, 0, 941, 939, - 1, 0, 0, 0, 942, 943, 5, 214, 0, 0, 943, 944, 5, 210, 0, 0, 944, 946, 5, - 211, 0, 0, 945, 933, 1, 0, 0, 0, 945, 942, 1, 0, 0, 0, 946, 13, 1, 0, 0, - 0, 947, 948, 5, 207, 0, 0, 948, 949, 5, 484, 0, 0, 949, 963, 5, 511, 0, - 0, 950, 951, 5, 208, 0, 0, 951, 952, 5, 484, 0, 0, 952, 963, 5, 511, 0, - 0, 953, 954, 5, 511, 0, 0, 954, 955, 5, 484, 0, 0, 955, 963, 5, 511, 0, - 0, 956, 957, 5, 511, 0, 0, 957, 958, 5, 484, 0, 0, 958, 963, 5, 93, 0, - 0, 959, 960, 5, 511, 0, 0, 960, 961, 5, 484, 0, 0, 961, 963, 5, 479, 0, - 0, 962, 947, 1, 0, 0, 0, 962, 950, 1, 0, 0, 0, 962, 953, 1, 0, 0, 0, 962, - 956, 1, 0, 0, 0, 962, 959, 1, 0, 0, 0, 963, 15, 1, 0, 0, 0, 964, 966, 3, - 18, 9, 0, 965, 967, 5, 494, 0, 0, 966, 965, 1, 0, 0, 0, 966, 967, 1, 0, - 0, 0, 967, 989, 1, 0, 0, 0, 968, 970, 3, 24, 12, 0, 969, 971, 5, 494, 0, - 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 989, 1, 0, 0, 0, 972, - 974, 3, 26, 13, 0, 973, 975, 5, 494, 0, 0, 974, 973, 1, 0, 0, 0, 974, 975, - 1, 0, 0, 0, 975, 989, 1, 0, 0, 0, 976, 978, 3, 28, 14, 0, 977, 979, 5, - 494, 0, 0, 978, 977, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 989, 1, 0, - 0, 0, 980, 982, 3, 30, 15, 0, 981, 983, 5, 494, 0, 0, 982, 981, 1, 0, 0, - 0, 982, 983, 1, 0, 0, 0, 983, 989, 1, 0, 0, 0, 984, 986, 3, 32, 16, 0, - 985, 987, 5, 494, 0, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, - 989, 1, 0, 0, 0, 988, 964, 1, 0, 0, 0, 988, 968, 1, 0, 0, 0, 988, 972, - 1, 0, 0, 0, 988, 976, 1, 0, 0, 0, 988, 980, 1, 0, 0, 0, 988, 984, 1, 0, - 0, 0, 989, 17, 1, 0, 0, 0, 990, 991, 5, 48, 0, 0, 991, 992, 5, 35, 0, 0, - 992, 993, 5, 484, 0, 0, 993, 1006, 3, 708, 354, 0, 994, 995, 5, 355, 0, - 0, 995, 996, 5, 497, 0, 0, 996, 1001, 3, 20, 10, 0, 997, 998, 5, 495, 0, - 0, 998, 1000, 3, 20, 10, 0, 999, 997, 1, 0, 0, 0, 1000, 1003, 1, 0, 0, - 0, 1001, 999, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1004, 1, 0, 0, - 0, 1003, 1001, 1, 0, 0, 0, 1004, 1005, 5, 498, 0, 0, 1005, 1007, 1, 0, - 0, 0, 1006, 994, 1, 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1030, 1, 0, - 0, 0, 1008, 1009, 5, 48, 0, 0, 1009, 1010, 3, 22, 11, 0, 1010, 1011, 5, - 93, 0, 0, 1011, 1012, 3, 710, 355, 0, 1012, 1030, 1, 0, 0, 0, 1013, 1014, - 5, 48, 0, 0, 1014, 1015, 5, 497, 0, 0, 1015, 1020, 3, 22, 11, 0, 1016, - 1017, 5, 495, 0, 0, 1017, 1019, 3, 22, 11, 0, 1018, 1016, 1, 0, 0, 0, 1019, - 1022, 1, 0, 0, 0, 1020, 1018, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, - 1023, 1, 0, 0, 0, 1022, 1020, 1, 0, 0, 0, 1023, 1024, 5, 498, 0, 0, 1024, - 1025, 5, 93, 0, 0, 1025, 1026, 3, 710, 355, 0, 1026, 1030, 1, 0, 0, 0, - 1027, 1028, 5, 48, 0, 0, 1028, 1030, 3, 22, 11, 0, 1029, 990, 1, 0, 0, - 0, 1029, 1008, 1, 0, 0, 0, 1029, 1013, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, - 0, 1030, 19, 1, 0, 0, 0, 1031, 1032, 3, 710, 355, 0, 1032, 1033, 5, 76, - 0, 0, 1033, 1034, 3, 710, 355, 0, 1034, 21, 1, 0, 0, 0, 1035, 1036, 3, - 710, 355, 0, 1036, 1037, 5, 484, 0, 0, 1037, 1038, 3, 430, 215, 0, 1038, - 1043, 1, 0, 0, 0, 1039, 1040, 5, 511, 0, 0, 1040, 1041, 5, 484, 0, 0, 1041, - 1043, 3, 430, 215, 0, 1042, 1035, 1, 0, 0, 0, 1042, 1039, 1, 0, 0, 0, 1043, - 23, 1, 0, 0, 0, 1044, 1045, 5, 389, 0, 0, 1045, 1046, 5, 391, 0, 0, 1046, - 1047, 3, 710, 355, 0, 1047, 1048, 5, 499, 0, 0, 1048, 1049, 3, 390, 195, - 0, 1049, 1050, 5, 500, 0, 0, 1050, 1059, 1, 0, 0, 0, 1051, 1052, 5, 389, - 0, 0, 1052, 1053, 5, 390, 0, 0, 1053, 1054, 3, 710, 355, 0, 1054, 1055, - 5, 499, 0, 0, 1055, 1056, 3, 390, 195, 0, 1056, 1057, 5, 500, 0, 0, 1057, - 1059, 1, 0, 0, 0, 1058, 1044, 1, 0, 0, 0, 1058, 1051, 1, 0, 0, 0, 1059, - 25, 1, 0, 0, 0, 1060, 1061, 5, 19, 0, 0, 1061, 1062, 5, 186, 0, 0, 1062, - 1067, 3, 710, 355, 0, 1063, 1064, 5, 495, 0, 0, 1064, 1066, 3, 710, 355, - 0, 1065, 1063, 1, 0, 0, 0, 1066, 1069, 1, 0, 0, 0, 1067, 1065, 1, 0, 0, - 0, 1067, 1068, 1, 0, 0, 0, 1068, 27, 1, 0, 0, 0, 1069, 1067, 1, 0, 0, 0, - 1070, 1071, 5, 427, 0, 0, 1071, 1072, 3, 710, 355, 0, 1072, 1073, 5, 139, - 0, 0, 1073, 1074, 5, 499, 0, 0, 1074, 1075, 3, 390, 195, 0, 1075, 1076, - 5, 500, 0, 0, 1076, 29, 1, 0, 0, 0, 1077, 1078, 5, 47, 0, 0, 1078, 1079, - 5, 203, 0, 0, 1079, 1080, 3, 350, 175, 0, 1080, 31, 1, 0, 0, 0, 1081, 1082, - 5, 19, 0, 0, 1082, 1083, 5, 203, 0, 0, 1083, 1084, 5, 514, 0, 0, 1084, - 33, 1, 0, 0, 0, 1085, 1086, 5, 374, 0, 0, 1086, 1087, 7, 2, 0, 0, 1087, - 1090, 3, 708, 354, 0, 1088, 1089, 5, 426, 0, 0, 1089, 1091, 3, 708, 354, - 0, 1090, 1088, 1, 0, 0, 0, 1090, 1091, 1, 0, 0, 0, 1091, 1109, 1, 0, 0, - 0, 1092, 1093, 5, 375, 0, 0, 1093, 1094, 5, 33, 0, 0, 1094, 1109, 3, 708, - 354, 0, 1095, 1096, 5, 287, 0, 0, 1096, 1097, 5, 376, 0, 0, 1097, 1098, - 5, 33, 0, 0, 1098, 1109, 3, 708, 354, 0, 1099, 1100, 5, 372, 0, 0, 1100, - 1104, 5, 497, 0, 0, 1101, 1103, 3, 36, 18, 0, 1102, 1101, 1, 0, 0, 0, 1103, - 1106, 1, 0, 0, 0, 1104, 1102, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, - 1107, 1, 0, 0, 0, 1106, 1104, 1, 0, 0, 0, 1107, 1109, 5, 498, 0, 0, 1108, - 1085, 1, 0, 0, 0, 1108, 1092, 1, 0, 0, 0, 1108, 1095, 1, 0, 0, 0, 1108, - 1099, 1, 0, 0, 0, 1109, 35, 1, 0, 0, 0, 1110, 1111, 5, 372, 0, 0, 1111, - 1112, 5, 156, 0, 0, 1112, 1117, 5, 511, 0, 0, 1113, 1114, 5, 33, 0, 0, - 1114, 1118, 3, 708, 354, 0, 1115, 1116, 5, 30, 0, 0, 1116, 1118, 3, 708, - 354, 0, 1117, 1113, 1, 0, 0, 0, 1117, 1115, 1, 0, 0, 0, 1117, 1118, 1, - 0, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, 1121, 5, 494, 0, 0, 1120, 1119, - 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 1136, 1, 0, 0, 0, 1122, 1123, - 5, 372, 0, 0, 1123, 1124, 5, 511, 0, 0, 1124, 1128, 5, 497, 0, 0, 1125, - 1127, 3, 36, 18, 0, 1126, 1125, 1, 0, 0, 0, 1127, 1130, 1, 0, 0, 0, 1128, - 1126, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1131, 1, 0, 0, 0, 1130, - 1128, 1, 0, 0, 0, 1131, 1133, 5, 498, 0, 0, 1132, 1134, 5, 494, 0, 0, 1133, - 1132, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1136, 1, 0, 0, 0, 1135, - 1110, 1, 0, 0, 0, 1135, 1122, 1, 0, 0, 0, 1136, 37, 1, 0, 0, 0, 1137, 1138, - 5, 19, 0, 0, 1138, 1139, 5, 23, 0, 0, 1139, 1213, 3, 708, 354, 0, 1140, - 1141, 5, 19, 0, 0, 1141, 1142, 5, 27, 0, 0, 1142, 1213, 3, 708, 354, 0, - 1143, 1144, 5, 19, 0, 0, 1144, 1145, 5, 28, 0, 0, 1145, 1213, 3, 708, 354, - 0, 1146, 1147, 5, 19, 0, 0, 1147, 1148, 5, 37, 0, 0, 1148, 1213, 3, 708, - 354, 0, 1149, 1150, 5, 19, 0, 0, 1150, 1151, 5, 30, 0, 0, 1151, 1213, 3, - 708, 354, 0, 1152, 1153, 5, 19, 0, 0, 1153, 1154, 5, 31, 0, 0, 1154, 1213, - 3, 708, 354, 0, 1155, 1156, 5, 19, 0, 0, 1156, 1157, 5, 33, 0, 0, 1157, - 1213, 3, 708, 354, 0, 1158, 1159, 5, 19, 0, 0, 1159, 1160, 5, 34, 0, 0, - 1160, 1213, 3, 708, 354, 0, 1161, 1162, 5, 19, 0, 0, 1162, 1163, 5, 29, - 0, 0, 1163, 1213, 3, 708, 354, 0, 1164, 1165, 5, 19, 0, 0, 1165, 1166, - 5, 36, 0, 0, 1166, 1213, 3, 708, 354, 0, 1167, 1168, 5, 19, 0, 0, 1168, - 1169, 5, 114, 0, 0, 1169, 1170, 5, 116, 0, 0, 1170, 1213, 3, 708, 354, - 0, 1171, 1172, 5, 19, 0, 0, 1172, 1173, 5, 41, 0, 0, 1173, 1174, 3, 708, - 354, 0, 1174, 1175, 5, 93, 0, 0, 1175, 1176, 3, 708, 354, 0, 1176, 1213, - 1, 0, 0, 0, 1177, 1178, 5, 19, 0, 0, 1178, 1179, 5, 314, 0, 0, 1179, 1180, - 5, 339, 0, 0, 1180, 1213, 3, 708, 354, 0, 1181, 1182, 5, 19, 0, 0, 1182, - 1183, 5, 314, 0, 0, 1183, 1184, 5, 312, 0, 0, 1184, 1213, 3, 708, 354, - 0, 1185, 1186, 5, 19, 0, 0, 1186, 1187, 5, 437, 0, 0, 1187, 1188, 5, 438, - 0, 0, 1188, 1189, 5, 312, 0, 0, 1189, 1213, 3, 708, 354, 0, 1190, 1191, - 5, 19, 0, 0, 1191, 1192, 5, 32, 0, 0, 1192, 1213, 3, 708, 354, 0, 1193, - 1194, 5, 19, 0, 0, 1194, 1195, 5, 226, 0, 0, 1195, 1196, 5, 227, 0, 0, - 1196, 1213, 3, 708, 354, 0, 1197, 1198, 5, 19, 0, 0, 1198, 1199, 5, 311, - 0, 0, 1199, 1200, 5, 339, 0, 0, 1200, 1213, 3, 708, 354, 0, 1201, 1202, - 5, 19, 0, 0, 1202, 1203, 5, 441, 0, 0, 1203, 1213, 5, 511, 0, 0, 1204, - 1205, 5, 19, 0, 0, 1205, 1206, 5, 219, 0, 0, 1206, 1207, 5, 511, 0, 0, - 1207, 1210, 5, 289, 0, 0, 1208, 1211, 3, 708, 354, 0, 1209, 1211, 5, 515, - 0, 0, 1210, 1208, 1, 0, 0, 0, 1210, 1209, 1, 0, 0, 0, 1211, 1213, 1, 0, - 0, 0, 1212, 1137, 1, 0, 0, 0, 1212, 1140, 1, 0, 0, 0, 1212, 1143, 1, 0, - 0, 0, 1212, 1146, 1, 0, 0, 0, 1212, 1149, 1, 0, 0, 0, 1212, 1152, 1, 0, - 0, 0, 1212, 1155, 1, 0, 0, 0, 1212, 1158, 1, 0, 0, 0, 1212, 1161, 1, 0, - 0, 0, 1212, 1164, 1, 0, 0, 0, 1212, 1167, 1, 0, 0, 0, 1212, 1171, 1, 0, - 0, 0, 1212, 1177, 1, 0, 0, 0, 1212, 1181, 1, 0, 0, 0, 1212, 1185, 1, 0, - 0, 0, 1212, 1190, 1, 0, 0, 0, 1212, 1193, 1, 0, 0, 0, 1212, 1197, 1, 0, - 0, 0, 1212, 1201, 1, 0, 0, 0, 1212, 1204, 1, 0, 0, 0, 1213, 39, 1, 0, 0, - 0, 1214, 1215, 5, 20, 0, 0, 1215, 1216, 5, 23, 0, 0, 1216, 1217, 3, 708, - 354, 0, 1217, 1218, 5, 423, 0, 0, 1218, 1219, 5, 515, 0, 0, 1219, 1226, - 1, 0, 0, 0, 1220, 1221, 5, 20, 0, 0, 1221, 1222, 5, 29, 0, 0, 1222, 1223, - 5, 515, 0, 0, 1223, 1224, 5, 423, 0, 0, 1224, 1226, 5, 515, 0, 0, 1225, - 1214, 1, 0, 0, 0, 1225, 1220, 1, 0, 0, 0, 1226, 41, 1, 0, 0, 0, 1227, 1236, - 5, 21, 0, 0, 1228, 1237, 5, 33, 0, 0, 1229, 1237, 5, 30, 0, 0, 1230, 1237, - 5, 34, 0, 0, 1231, 1237, 5, 31, 0, 0, 1232, 1237, 5, 28, 0, 0, 1233, 1237, - 5, 37, 0, 0, 1234, 1235, 5, 353, 0, 0, 1235, 1237, 5, 352, 0, 0, 1236, - 1228, 1, 0, 0, 0, 1236, 1229, 1, 0, 0, 0, 1236, 1230, 1, 0, 0, 0, 1236, - 1231, 1, 0, 0, 0, 1236, 1232, 1, 0, 0, 0, 1236, 1233, 1, 0, 0, 0, 1236, - 1234, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 3, 708, 354, 0, 1239, - 1240, 5, 423, 0, 0, 1240, 1241, 5, 219, 0, 0, 1241, 1247, 5, 511, 0, 0, - 1242, 1245, 5, 289, 0, 0, 1243, 1246, 3, 708, 354, 0, 1244, 1246, 5, 515, - 0, 0, 1245, 1243, 1, 0, 0, 0, 1245, 1244, 1, 0, 0, 0, 1246, 1248, 1, 0, - 0, 0, 1247, 1242, 1, 0, 0, 0, 1247, 1248, 1, 0, 0, 0, 1248, 1296, 1, 0, - 0, 0, 1249, 1258, 5, 21, 0, 0, 1250, 1259, 5, 33, 0, 0, 1251, 1259, 5, - 30, 0, 0, 1252, 1259, 5, 34, 0, 0, 1253, 1259, 5, 31, 0, 0, 1254, 1259, - 5, 28, 0, 0, 1255, 1259, 5, 37, 0, 0, 1256, 1257, 5, 353, 0, 0, 1257, 1259, - 5, 352, 0, 0, 1258, 1250, 1, 0, 0, 0, 1258, 1251, 1, 0, 0, 0, 1258, 1252, - 1, 0, 0, 0, 1258, 1253, 1, 0, 0, 0, 1258, 1254, 1, 0, 0, 0, 1258, 1255, - 1, 0, 0, 0, 1258, 1256, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1261, - 3, 708, 354, 0, 1261, 1264, 5, 423, 0, 0, 1262, 1265, 3, 708, 354, 0, 1263, - 1265, 5, 515, 0, 0, 1264, 1262, 1, 0, 0, 0, 1264, 1263, 1, 0, 0, 0, 1265, - 1296, 1, 0, 0, 0, 1266, 1267, 5, 21, 0, 0, 1267, 1268, 5, 23, 0, 0, 1268, - 1269, 3, 708, 354, 0, 1269, 1272, 5, 423, 0, 0, 1270, 1273, 3, 708, 354, - 0, 1271, 1273, 5, 515, 0, 0, 1272, 1270, 1, 0, 0, 0, 1272, 1271, 1, 0, - 0, 0, 1273, 1296, 1, 0, 0, 0, 1274, 1275, 5, 21, 0, 0, 1275, 1276, 5, 219, - 0, 0, 1276, 1277, 3, 708, 354, 0, 1277, 1278, 5, 423, 0, 0, 1278, 1279, - 5, 219, 0, 0, 1279, 1285, 5, 511, 0, 0, 1280, 1283, 5, 289, 0, 0, 1281, - 1284, 3, 708, 354, 0, 1282, 1284, 5, 515, 0, 0, 1283, 1281, 1, 0, 0, 0, - 1283, 1282, 1, 0, 0, 0, 1284, 1286, 1, 0, 0, 0, 1285, 1280, 1, 0, 0, 0, - 1285, 1286, 1, 0, 0, 0, 1286, 1296, 1, 0, 0, 0, 1287, 1288, 5, 21, 0, 0, - 1288, 1289, 5, 219, 0, 0, 1289, 1290, 3, 708, 354, 0, 1290, 1293, 5, 423, - 0, 0, 1291, 1294, 3, 708, 354, 0, 1292, 1294, 5, 515, 0, 0, 1293, 1291, - 1, 0, 0, 0, 1293, 1292, 1, 0, 0, 0, 1294, 1296, 1, 0, 0, 0, 1295, 1227, - 1, 0, 0, 0, 1295, 1249, 1, 0, 0, 0, 1295, 1266, 1, 0, 0, 0, 1295, 1274, - 1, 0, 0, 0, 1295, 1287, 1, 0, 0, 0, 1296, 43, 1, 0, 0, 0, 1297, 1315, 3, - 46, 23, 0, 1298, 1315, 3, 48, 24, 0, 1299, 1315, 3, 52, 26, 0, 1300, 1315, - 3, 54, 27, 0, 1301, 1315, 3, 56, 28, 0, 1302, 1315, 3, 58, 29, 0, 1303, - 1315, 3, 60, 30, 0, 1304, 1315, 3, 62, 31, 0, 1305, 1315, 3, 64, 32, 0, - 1306, 1315, 3, 66, 33, 0, 1307, 1315, 3, 68, 34, 0, 1308, 1315, 3, 70, - 35, 0, 1309, 1315, 3, 72, 36, 0, 1310, 1315, 3, 74, 37, 0, 1311, 1315, - 3, 76, 38, 0, 1312, 1315, 3, 80, 40, 0, 1313, 1315, 3, 82, 41, 0, 1314, - 1297, 1, 0, 0, 0, 1314, 1298, 1, 0, 0, 0, 1314, 1299, 1, 0, 0, 0, 1314, - 1300, 1, 0, 0, 0, 1314, 1301, 1, 0, 0, 0, 1314, 1302, 1, 0, 0, 0, 1314, - 1303, 1, 0, 0, 0, 1314, 1304, 1, 0, 0, 0, 1314, 1305, 1, 0, 0, 0, 1314, - 1306, 1, 0, 0, 0, 1314, 1307, 1, 0, 0, 0, 1314, 1308, 1, 0, 0, 0, 1314, - 1309, 1, 0, 0, 0, 1314, 1310, 1, 0, 0, 0, 1314, 1311, 1, 0, 0, 0, 1314, - 1312, 1, 0, 0, 0, 1314, 1313, 1, 0, 0, 0, 1315, 45, 1, 0, 0, 0, 1316, 1317, - 5, 17, 0, 0, 1317, 1318, 5, 29, 0, 0, 1318, 1319, 5, 443, 0, 0, 1319, 1322, - 3, 708, 354, 0, 1320, 1321, 5, 477, 0, 0, 1321, 1323, 5, 511, 0, 0, 1322, - 1320, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 47, 1, 0, 0, 0, 1324, 1325, - 5, 19, 0, 0, 1325, 1326, 5, 29, 0, 0, 1326, 1327, 5, 443, 0, 0, 1327, 1328, - 3, 708, 354, 0, 1328, 49, 1, 0, 0, 0, 1329, 1330, 5, 455, 0, 0, 1330, 1331, - 5, 443, 0, 0, 1331, 1332, 3, 710, 355, 0, 1332, 1333, 5, 497, 0, 0, 1333, - 1334, 3, 84, 42, 0, 1334, 1338, 5, 498, 0, 0, 1335, 1336, 5, 449, 0, 0, - 1336, 1337, 5, 85, 0, 0, 1337, 1339, 5, 444, 0, 0, 1338, 1335, 1, 0, 0, - 0, 1338, 1339, 1, 0, 0, 0, 1339, 51, 1, 0, 0, 0, 1340, 1341, 5, 18, 0, - 0, 1341, 1342, 5, 455, 0, 0, 1342, 1343, 5, 443, 0, 0, 1343, 1344, 3, 710, - 355, 0, 1344, 1345, 5, 47, 0, 0, 1345, 1346, 5, 29, 0, 0, 1346, 1347, 5, - 444, 0, 0, 1347, 1348, 5, 497, 0, 0, 1348, 1349, 3, 84, 42, 0, 1349, 1350, - 5, 498, 0, 0, 1350, 1363, 1, 0, 0, 0, 1351, 1352, 5, 18, 0, 0, 1352, 1353, - 5, 455, 0, 0, 1353, 1354, 5, 443, 0, 0, 1354, 1355, 3, 710, 355, 0, 1355, - 1356, 5, 133, 0, 0, 1356, 1357, 5, 29, 0, 0, 1357, 1358, 5, 444, 0, 0, - 1358, 1359, 5, 497, 0, 0, 1359, 1360, 3, 84, 42, 0, 1360, 1361, 5, 498, - 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, 1340, 1, 0, 0, 0, 1362, 1351, 1, 0, - 0, 0, 1363, 53, 1, 0, 0, 0, 1364, 1365, 5, 19, 0, 0, 1365, 1366, 5, 455, - 0, 0, 1366, 1367, 5, 443, 0, 0, 1367, 1368, 3, 710, 355, 0, 1368, 55, 1, - 0, 0, 0, 1369, 1370, 5, 445, 0, 0, 1370, 1371, 3, 84, 42, 0, 1371, 1372, - 5, 93, 0, 0, 1372, 1373, 3, 708, 354, 0, 1373, 1374, 5, 497, 0, 0, 1374, - 1375, 3, 86, 43, 0, 1375, 1378, 5, 498, 0, 0, 1376, 1377, 5, 72, 0, 0, - 1377, 1379, 5, 511, 0, 0, 1378, 1376, 1, 0, 0, 0, 1378, 1379, 1, 0, 0, - 0, 1379, 57, 1, 0, 0, 0, 1380, 1381, 5, 446, 0, 0, 1381, 1382, 3, 84, 42, - 0, 1382, 1383, 5, 93, 0, 0, 1383, 1384, 3, 708, 354, 0, 1384, 59, 1, 0, - 0, 0, 1385, 1386, 5, 445, 0, 0, 1386, 1387, 5, 396, 0, 0, 1387, 1388, 5, - 93, 0, 0, 1388, 1389, 5, 30, 0, 0, 1389, 1390, 3, 708, 354, 0, 1390, 1391, - 5, 423, 0, 0, 1391, 1392, 3, 84, 42, 0, 1392, 61, 1, 0, 0, 0, 1393, 1394, - 5, 446, 0, 0, 1394, 1395, 5, 396, 0, 0, 1395, 1396, 5, 93, 0, 0, 1396, - 1397, 5, 30, 0, 0, 1397, 1398, 3, 708, 354, 0, 1398, 1399, 5, 71, 0, 0, - 1399, 1400, 3, 84, 42, 0, 1400, 63, 1, 0, 0, 0, 1401, 1402, 5, 445, 0, - 0, 1402, 1403, 5, 25, 0, 0, 1403, 1404, 5, 93, 0, 0, 1404, 1405, 5, 33, - 0, 0, 1405, 1406, 3, 708, 354, 0, 1406, 1407, 5, 423, 0, 0, 1407, 1408, - 3, 84, 42, 0, 1408, 65, 1, 0, 0, 0, 1409, 1410, 5, 446, 0, 0, 1410, 1411, - 5, 25, 0, 0, 1411, 1412, 5, 93, 0, 0, 1412, 1413, 5, 33, 0, 0, 1413, 1414, - 3, 708, 354, 0, 1414, 1415, 5, 71, 0, 0, 1415, 1416, 3, 84, 42, 0, 1416, - 67, 1, 0, 0, 0, 1417, 1418, 5, 445, 0, 0, 1418, 1419, 5, 396, 0, 0, 1419, - 1420, 5, 93, 0, 0, 1420, 1421, 5, 32, 0, 0, 1421, 1422, 3, 708, 354, 0, - 1422, 1423, 5, 423, 0, 0, 1423, 1424, 3, 84, 42, 0, 1424, 69, 1, 0, 0, - 0, 1425, 1426, 5, 446, 0, 0, 1426, 1427, 5, 396, 0, 0, 1427, 1428, 5, 93, - 0, 0, 1428, 1429, 5, 32, 0, 0, 1429, 1430, 3, 708, 354, 0, 1430, 1431, - 5, 71, 0, 0, 1431, 1432, 3, 84, 42, 0, 1432, 71, 1, 0, 0, 0, 1433, 1434, - 5, 445, 0, 0, 1434, 1435, 5, 453, 0, 0, 1435, 1436, 5, 93, 0, 0, 1436, - 1437, 5, 314, 0, 0, 1437, 1438, 5, 312, 0, 0, 1438, 1439, 3, 708, 354, - 0, 1439, 1440, 5, 423, 0, 0, 1440, 1441, 3, 84, 42, 0, 1441, 73, 1, 0, - 0, 0, 1442, 1443, 5, 446, 0, 0, 1443, 1444, 5, 453, 0, 0, 1444, 1445, 5, - 93, 0, 0, 1445, 1446, 5, 314, 0, 0, 1446, 1447, 5, 312, 0, 0, 1447, 1448, - 3, 708, 354, 0, 1448, 1449, 5, 71, 0, 0, 1449, 1450, 3, 84, 42, 0, 1450, - 75, 1, 0, 0, 0, 1451, 1452, 5, 18, 0, 0, 1452, 1453, 5, 59, 0, 0, 1453, - 1454, 5, 442, 0, 0, 1454, 1455, 5, 454, 0, 0, 1455, 1463, 7, 3, 0, 0, 1456, - 1457, 5, 18, 0, 0, 1457, 1458, 5, 59, 0, 0, 1458, 1459, 5, 442, 0, 0, 1459, - 1460, 5, 450, 0, 0, 1460, 1461, 5, 480, 0, 0, 1461, 1463, 7, 4, 0, 0, 1462, - 1451, 1, 0, 0, 0, 1462, 1456, 1, 0, 0, 0, 1463, 77, 1, 0, 0, 0, 1464, 1465, - 5, 450, 0, 0, 1465, 1466, 5, 455, 0, 0, 1466, 1467, 5, 511, 0, 0, 1467, - 1468, 5, 351, 0, 0, 1468, 1471, 5, 511, 0, 0, 1469, 1470, 5, 23, 0, 0, - 1470, 1472, 3, 708, 354, 0, 1471, 1469, 1, 0, 0, 0, 1471, 1472, 1, 0, 0, - 0, 1472, 1473, 1, 0, 0, 0, 1473, 1474, 5, 497, 0, 0, 1474, 1479, 3, 710, - 355, 0, 1475, 1476, 5, 495, 0, 0, 1476, 1478, 3, 710, 355, 0, 1477, 1475, - 1, 0, 0, 0, 1478, 1481, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1479, 1480, - 1, 0, 0, 0, 1480, 1482, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1482, 1483, - 5, 498, 0, 0, 1483, 79, 1, 0, 0, 0, 1484, 1485, 5, 19, 0, 0, 1485, 1486, - 5, 450, 0, 0, 1486, 1487, 5, 455, 0, 0, 1487, 1488, 5, 511, 0, 0, 1488, - 81, 1, 0, 0, 0, 1489, 1490, 5, 392, 0, 0, 1490, 1493, 5, 442, 0, 0, 1491, - 1492, 5, 289, 0, 0, 1492, 1494, 3, 708, 354, 0, 1493, 1491, 1, 0, 0, 0, - 1493, 1494, 1, 0, 0, 0, 1494, 83, 1, 0, 0, 0, 1495, 1500, 3, 708, 354, - 0, 1496, 1497, 5, 495, 0, 0, 1497, 1499, 3, 708, 354, 0, 1498, 1496, 1, - 0, 0, 0, 1499, 1502, 1, 0, 0, 0, 1500, 1498, 1, 0, 0, 0, 1500, 1501, 1, - 0, 0, 0, 1501, 85, 1, 0, 0, 0, 1502, 1500, 1, 0, 0, 0, 1503, 1508, 3, 88, - 44, 0, 1504, 1505, 5, 495, 0, 0, 1505, 1507, 3, 88, 44, 0, 1506, 1504, - 1, 0, 0, 0, 1507, 1510, 1, 0, 0, 0, 1508, 1506, 1, 0, 0, 0, 1508, 1509, - 1, 0, 0, 0, 1509, 87, 1, 0, 0, 0, 1510, 1508, 1, 0, 0, 0, 1511, 1540, 5, - 17, 0, 0, 1512, 1540, 5, 100, 0, 0, 1513, 1514, 5, 475, 0, 0, 1514, 1540, - 5, 489, 0, 0, 1515, 1516, 5, 475, 0, 0, 1516, 1517, 5, 497, 0, 0, 1517, - 1522, 5, 515, 0, 0, 1518, 1519, 5, 495, 0, 0, 1519, 1521, 5, 515, 0, 0, - 1520, 1518, 1, 0, 0, 0, 1521, 1524, 1, 0, 0, 0, 1522, 1520, 1, 0, 0, 0, - 1522, 1523, 1, 0, 0, 0, 1523, 1525, 1, 0, 0, 0, 1524, 1522, 1, 0, 0, 0, - 1525, 1540, 5, 498, 0, 0, 1526, 1527, 5, 476, 0, 0, 1527, 1540, 5, 489, - 0, 0, 1528, 1529, 5, 476, 0, 0, 1529, 1530, 5, 497, 0, 0, 1530, 1535, 5, - 515, 0, 0, 1531, 1532, 5, 495, 0, 0, 1532, 1534, 5, 515, 0, 0, 1533, 1531, - 1, 0, 0, 0, 1534, 1537, 1, 0, 0, 0, 1535, 1533, 1, 0, 0, 0, 1535, 1536, - 1, 0, 0, 0, 1536, 1538, 1, 0, 0, 0, 1537, 1535, 1, 0, 0, 0, 1538, 1540, - 5, 498, 0, 0, 1539, 1511, 1, 0, 0, 0, 1539, 1512, 1, 0, 0, 0, 1539, 1513, - 1, 0, 0, 0, 1539, 1515, 1, 0, 0, 0, 1539, 1526, 1, 0, 0, 0, 1539, 1528, - 1, 0, 0, 0, 1540, 89, 1, 0, 0, 0, 1541, 1542, 5, 24, 0, 0, 1542, 1543, - 5, 23, 0, 0, 1543, 1545, 3, 708, 354, 0, 1544, 1546, 3, 92, 46, 0, 1545, - 1544, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1548, 1, 0, 0, 0, 1547, - 1549, 3, 94, 47, 0, 1548, 1547, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, - 1588, 1, 0, 0, 0, 1550, 1551, 5, 11, 0, 0, 1551, 1552, 5, 23, 0, 0, 1552, - 1554, 3, 708, 354, 0, 1553, 1555, 3, 92, 46, 0, 1554, 1553, 1, 0, 0, 0, - 1554, 1555, 1, 0, 0, 0, 1555, 1557, 1, 0, 0, 0, 1556, 1558, 3, 94, 47, - 0, 1557, 1556, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1588, 1, 0, 0, - 0, 1559, 1560, 5, 25, 0, 0, 1560, 1561, 5, 23, 0, 0, 1561, 1563, 3, 708, - 354, 0, 1562, 1564, 3, 94, 47, 0, 1563, 1562, 1, 0, 0, 0, 1563, 1564, 1, - 0, 0, 0, 1564, 1565, 1, 0, 0, 0, 1565, 1567, 5, 76, 0, 0, 1566, 1568, 5, - 497, 0, 0, 1567, 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, - 1, 0, 0, 0, 1569, 1571, 3, 582, 291, 0, 1570, 1572, 5, 498, 0, 0, 1571, - 1570, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1588, 1, 0, 0, 0, 1573, - 1574, 5, 26, 0, 0, 1574, 1575, 5, 23, 0, 0, 1575, 1577, 3, 708, 354, 0, - 1576, 1578, 3, 94, 47, 0, 1577, 1576, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, - 0, 1578, 1588, 1, 0, 0, 0, 1579, 1580, 5, 23, 0, 0, 1580, 1582, 3, 708, - 354, 0, 1581, 1583, 3, 92, 46, 0, 1582, 1581, 1, 0, 0, 0, 1582, 1583, 1, - 0, 0, 0, 1583, 1585, 1, 0, 0, 0, 1584, 1586, 3, 94, 47, 0, 1585, 1584, - 1, 0, 0, 0, 1585, 1586, 1, 0, 0, 0, 1586, 1588, 1, 0, 0, 0, 1587, 1541, - 1, 0, 0, 0, 1587, 1550, 1, 0, 0, 0, 1587, 1559, 1, 0, 0, 0, 1587, 1573, - 1, 0, 0, 0, 1587, 1579, 1, 0, 0, 0, 1588, 91, 1, 0, 0, 0, 1589, 1590, 5, - 46, 0, 0, 1590, 1594, 3, 708, 354, 0, 1591, 1592, 5, 45, 0, 0, 1592, 1594, - 3, 708, 354, 0, 1593, 1589, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1594, 93, - 1, 0, 0, 0, 1595, 1597, 5, 497, 0, 0, 1596, 1598, 3, 100, 50, 0, 1597, - 1596, 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1599, 1, 0, 0, 0, 1599, - 1601, 5, 498, 0, 0, 1600, 1602, 3, 96, 48, 0, 1601, 1600, 1, 0, 0, 0, 1601, - 1602, 1, 0, 0, 0, 1602, 1605, 1, 0, 0, 0, 1603, 1605, 3, 96, 48, 0, 1604, - 1595, 1, 0, 0, 0, 1604, 1603, 1, 0, 0, 0, 1605, 95, 1, 0, 0, 0, 1606, 1613, - 3, 98, 49, 0, 1607, 1609, 5, 495, 0, 0, 1608, 1607, 1, 0, 0, 0, 1608, 1609, - 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1612, 3, 98, 49, 0, 1611, 1608, - 1, 0, 0, 0, 1612, 1615, 1, 0, 0, 0, 1613, 1611, 1, 0, 0, 0, 1613, 1614, - 1, 0, 0, 0, 1614, 97, 1, 0, 0, 0, 1615, 1613, 1, 0, 0, 0, 1616, 1617, 5, - 405, 0, 0, 1617, 1621, 5, 511, 0, 0, 1618, 1619, 5, 41, 0, 0, 1619, 1621, - 3, 114, 57, 0, 1620, 1616, 1, 0, 0, 0, 1620, 1618, 1, 0, 0, 0, 1621, 99, - 1, 0, 0, 0, 1622, 1627, 3, 102, 51, 0, 1623, 1624, 5, 495, 0, 0, 1624, - 1626, 3, 102, 51, 0, 1625, 1623, 1, 0, 0, 0, 1626, 1629, 1, 0, 0, 0, 1627, - 1625, 1, 0, 0, 0, 1627, 1628, 1, 0, 0, 0, 1628, 101, 1, 0, 0, 0, 1629, - 1627, 1, 0, 0, 0, 1630, 1632, 3, 718, 359, 0, 1631, 1630, 1, 0, 0, 0, 1631, - 1632, 1, 0, 0, 0, 1632, 1636, 1, 0, 0, 0, 1633, 1635, 3, 720, 360, 0, 1634, - 1633, 1, 0, 0, 0, 1635, 1638, 1, 0, 0, 0, 1636, 1634, 1, 0, 0, 0, 1636, - 1637, 1, 0, 0, 0, 1637, 1639, 1, 0, 0, 0, 1638, 1636, 1, 0, 0, 0, 1639, - 1640, 3, 104, 52, 0, 1640, 1641, 5, 503, 0, 0, 1641, 1645, 3, 108, 54, - 0, 1642, 1644, 3, 106, 53, 0, 1643, 1642, 1, 0, 0, 0, 1644, 1647, 1, 0, - 0, 0, 1645, 1643, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 103, 1, 0, - 0, 0, 1647, 1645, 1, 0, 0, 0, 1648, 1652, 5, 515, 0, 0, 1649, 1652, 5, - 517, 0, 0, 1650, 1652, 3, 730, 365, 0, 1651, 1648, 1, 0, 0, 0, 1651, 1649, - 1, 0, 0, 0, 1651, 1650, 1, 0, 0, 0, 1652, 105, 1, 0, 0, 0, 1653, 1656, - 5, 7, 0, 0, 1654, 1655, 5, 302, 0, 0, 1655, 1657, 5, 511, 0, 0, 1656, 1654, - 1, 0, 0, 0, 1656, 1657, 1, 0, 0, 0, 1657, 1687, 1, 0, 0, 0, 1658, 1659, - 5, 287, 0, 0, 1659, 1662, 5, 288, 0, 0, 1660, 1661, 5, 302, 0, 0, 1661, - 1663, 5, 511, 0, 0, 1662, 1660, 1, 0, 0, 0, 1662, 1663, 1, 0, 0, 0, 1663, - 1687, 1, 0, 0, 0, 1664, 1667, 5, 294, 0, 0, 1665, 1666, 5, 302, 0, 0, 1666, - 1668, 5, 511, 0, 0, 1667, 1665, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, - 1687, 1, 0, 0, 0, 1669, 1672, 5, 295, 0, 0, 1670, 1673, 3, 712, 356, 0, - 1671, 1673, 3, 668, 334, 0, 1672, 1670, 1, 0, 0, 0, 1672, 1671, 1, 0, 0, - 0, 1673, 1687, 1, 0, 0, 0, 1674, 1677, 5, 301, 0, 0, 1675, 1676, 5, 302, - 0, 0, 1676, 1678, 5, 511, 0, 0, 1677, 1675, 1, 0, 0, 0, 1677, 1678, 1, - 0, 0, 0, 1678, 1687, 1, 0, 0, 0, 1679, 1684, 5, 310, 0, 0, 1680, 1682, - 5, 474, 0, 0, 1681, 1680, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1683, - 1, 0, 0, 0, 1683, 1685, 3, 708, 354, 0, 1684, 1681, 1, 0, 0, 0, 1684, 1685, - 1, 0, 0, 0, 1685, 1687, 1, 0, 0, 0, 1686, 1653, 1, 0, 0, 0, 1686, 1658, - 1, 0, 0, 0, 1686, 1664, 1, 0, 0, 0, 1686, 1669, 1, 0, 0, 0, 1686, 1674, - 1, 0, 0, 0, 1686, 1679, 1, 0, 0, 0, 1687, 107, 1, 0, 0, 0, 1688, 1692, - 5, 262, 0, 0, 1689, 1690, 5, 497, 0, 0, 1690, 1691, 5, 513, 0, 0, 1691, - 1693, 5, 498, 0, 0, 1692, 1689, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, - 1725, 1, 0, 0, 0, 1694, 1725, 5, 263, 0, 0, 1695, 1725, 5, 264, 0, 0, 1696, - 1725, 5, 265, 0, 0, 1697, 1725, 5, 266, 0, 0, 1698, 1725, 5, 267, 0, 0, - 1699, 1725, 5, 268, 0, 0, 1700, 1725, 5, 269, 0, 0, 1701, 1725, 5, 270, - 0, 0, 1702, 1725, 5, 271, 0, 0, 1703, 1725, 5, 272, 0, 0, 1704, 1725, 5, - 273, 0, 0, 1705, 1706, 5, 274, 0, 0, 1706, 1707, 5, 497, 0, 0, 1707, 1708, - 3, 110, 55, 0, 1708, 1709, 5, 498, 0, 0, 1709, 1725, 1, 0, 0, 0, 1710, - 1711, 5, 23, 0, 0, 1711, 1712, 5, 485, 0, 0, 1712, 1713, 5, 515, 0, 0, - 1713, 1725, 5, 486, 0, 0, 1714, 1715, 5, 275, 0, 0, 1715, 1725, 3, 708, - 354, 0, 1716, 1717, 5, 28, 0, 0, 1717, 1718, 5, 497, 0, 0, 1718, 1719, - 3, 708, 354, 0, 1719, 1720, 5, 498, 0, 0, 1720, 1725, 1, 0, 0, 0, 1721, - 1722, 5, 13, 0, 0, 1722, 1725, 3, 708, 354, 0, 1723, 1725, 3, 708, 354, - 0, 1724, 1688, 1, 0, 0, 0, 1724, 1694, 1, 0, 0, 0, 1724, 1695, 1, 0, 0, - 0, 1724, 1696, 1, 0, 0, 0, 1724, 1697, 1, 0, 0, 0, 1724, 1698, 1, 0, 0, - 0, 1724, 1699, 1, 0, 0, 0, 1724, 1700, 1, 0, 0, 0, 1724, 1701, 1, 0, 0, - 0, 1724, 1702, 1, 0, 0, 0, 1724, 1703, 1, 0, 0, 0, 1724, 1704, 1, 0, 0, - 0, 1724, 1705, 1, 0, 0, 0, 1724, 1710, 1, 0, 0, 0, 1724, 1714, 1, 0, 0, - 0, 1724, 1716, 1, 0, 0, 0, 1724, 1721, 1, 0, 0, 0, 1724, 1723, 1, 0, 0, - 0, 1725, 109, 1, 0, 0, 0, 1726, 1727, 7, 5, 0, 0, 1727, 111, 1, 0, 0, 0, - 1728, 1732, 5, 262, 0, 0, 1729, 1730, 5, 497, 0, 0, 1730, 1731, 5, 513, - 0, 0, 1731, 1733, 5, 498, 0, 0, 1732, 1729, 1, 0, 0, 0, 1732, 1733, 1, - 0, 0, 0, 1733, 1754, 1, 0, 0, 0, 1734, 1754, 5, 263, 0, 0, 1735, 1754, - 5, 264, 0, 0, 1736, 1754, 5, 265, 0, 0, 1737, 1754, 5, 266, 0, 0, 1738, - 1754, 5, 267, 0, 0, 1739, 1754, 5, 268, 0, 0, 1740, 1754, 5, 269, 0, 0, - 1741, 1754, 5, 270, 0, 0, 1742, 1754, 5, 271, 0, 0, 1743, 1754, 5, 272, - 0, 0, 1744, 1754, 5, 273, 0, 0, 1745, 1746, 5, 275, 0, 0, 1746, 1754, 3, - 708, 354, 0, 1747, 1748, 5, 28, 0, 0, 1748, 1749, 5, 497, 0, 0, 1749, 1750, - 3, 708, 354, 0, 1750, 1751, 5, 498, 0, 0, 1751, 1754, 1, 0, 0, 0, 1752, - 1754, 3, 708, 354, 0, 1753, 1728, 1, 0, 0, 0, 1753, 1734, 1, 0, 0, 0, 1753, - 1735, 1, 0, 0, 0, 1753, 1736, 1, 0, 0, 0, 1753, 1737, 1, 0, 0, 0, 1753, - 1738, 1, 0, 0, 0, 1753, 1739, 1, 0, 0, 0, 1753, 1740, 1, 0, 0, 0, 1753, - 1741, 1, 0, 0, 0, 1753, 1742, 1, 0, 0, 0, 1753, 1743, 1, 0, 0, 0, 1753, - 1744, 1, 0, 0, 0, 1753, 1745, 1, 0, 0, 0, 1753, 1747, 1, 0, 0, 0, 1753, - 1752, 1, 0, 0, 0, 1754, 113, 1, 0, 0, 0, 1755, 1757, 5, 515, 0, 0, 1756, - 1755, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, - 1759, 5, 497, 0, 0, 1759, 1760, 3, 116, 58, 0, 1760, 1761, 5, 498, 0, 0, - 1761, 115, 1, 0, 0, 0, 1762, 1767, 3, 118, 59, 0, 1763, 1764, 5, 495, 0, - 0, 1764, 1766, 3, 118, 59, 0, 1765, 1763, 1, 0, 0, 0, 1766, 1769, 1, 0, - 0, 0, 1767, 1765, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 117, 1, 0, - 0, 0, 1769, 1767, 1, 0, 0, 0, 1770, 1772, 3, 120, 60, 0, 1771, 1773, 7, - 6, 0, 0, 1772, 1771, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 119, 1, - 0, 0, 0, 1774, 1778, 5, 515, 0, 0, 1775, 1778, 5, 517, 0, 0, 1776, 1778, - 3, 730, 365, 0, 1777, 1774, 1, 0, 0, 0, 1777, 1775, 1, 0, 0, 0, 1777, 1776, - 1, 0, 0, 0, 1778, 121, 1, 0, 0, 0, 1779, 1780, 5, 27, 0, 0, 1780, 1781, - 3, 708, 354, 0, 1781, 1782, 5, 71, 0, 0, 1782, 1783, 3, 708, 354, 0, 1783, - 1784, 5, 423, 0, 0, 1784, 1786, 3, 708, 354, 0, 1785, 1787, 3, 124, 62, - 0, 1786, 1785, 1, 0, 0, 0, 1786, 1787, 1, 0, 0, 0, 1787, 123, 1, 0, 0, - 0, 1788, 1790, 3, 126, 63, 0, 1789, 1788, 1, 0, 0, 0, 1790, 1791, 1, 0, - 0, 0, 1791, 1789, 1, 0, 0, 0, 1791, 1792, 1, 0, 0, 0, 1792, 125, 1, 0, - 0, 0, 1793, 1794, 5, 416, 0, 0, 1794, 1804, 7, 7, 0, 0, 1795, 1796, 5, - 42, 0, 0, 1796, 1804, 7, 8, 0, 0, 1797, 1798, 5, 51, 0, 0, 1798, 1804, - 7, 9, 0, 0, 1799, 1800, 5, 53, 0, 0, 1800, 1804, 3, 128, 64, 0, 1801, 1802, - 5, 405, 0, 0, 1802, 1804, 5, 511, 0, 0, 1803, 1793, 1, 0, 0, 0, 1803, 1795, - 1, 0, 0, 0, 1803, 1797, 1, 0, 0, 0, 1803, 1799, 1, 0, 0, 0, 1803, 1801, - 1, 0, 0, 0, 1804, 127, 1, 0, 0, 0, 1805, 1806, 7, 10, 0, 0, 1806, 129, - 1, 0, 0, 0, 1807, 1808, 5, 47, 0, 0, 1808, 1809, 5, 38, 0, 0, 1809, 1874, - 3, 102, 51, 0, 1810, 1811, 5, 47, 0, 0, 1811, 1812, 5, 39, 0, 0, 1812, - 1874, 3, 102, 51, 0, 1813, 1814, 5, 20, 0, 0, 1814, 1815, 5, 38, 0, 0, - 1815, 1816, 3, 104, 52, 0, 1816, 1817, 5, 423, 0, 0, 1817, 1818, 3, 104, - 52, 0, 1818, 1874, 1, 0, 0, 0, 1819, 1820, 5, 20, 0, 0, 1820, 1821, 5, - 39, 0, 0, 1821, 1822, 3, 104, 52, 0, 1822, 1823, 5, 423, 0, 0, 1823, 1824, - 3, 104, 52, 0, 1824, 1874, 1, 0, 0, 0, 1825, 1826, 5, 22, 0, 0, 1826, 1827, - 5, 38, 0, 0, 1827, 1828, 3, 104, 52, 0, 1828, 1832, 3, 108, 54, 0, 1829, - 1831, 3, 106, 53, 0, 1830, 1829, 1, 0, 0, 0, 1831, 1834, 1, 0, 0, 0, 1832, - 1830, 1, 0, 0, 0, 1832, 1833, 1, 0, 0, 0, 1833, 1874, 1, 0, 0, 0, 1834, - 1832, 1, 0, 0, 0, 1835, 1836, 5, 22, 0, 0, 1836, 1837, 5, 39, 0, 0, 1837, - 1838, 3, 104, 52, 0, 1838, 1842, 3, 108, 54, 0, 1839, 1841, 3, 106, 53, - 0, 1840, 1839, 1, 0, 0, 0, 1841, 1844, 1, 0, 0, 0, 1842, 1840, 1, 0, 0, - 0, 1842, 1843, 1, 0, 0, 0, 1843, 1874, 1, 0, 0, 0, 1844, 1842, 1, 0, 0, - 0, 1845, 1846, 5, 19, 0, 0, 1846, 1847, 5, 38, 0, 0, 1847, 1874, 3, 104, - 52, 0, 1848, 1849, 5, 19, 0, 0, 1849, 1850, 5, 39, 0, 0, 1850, 1874, 3, - 104, 52, 0, 1851, 1852, 5, 48, 0, 0, 1852, 1853, 5, 50, 0, 0, 1853, 1874, - 5, 511, 0, 0, 1854, 1855, 5, 48, 0, 0, 1855, 1856, 5, 405, 0, 0, 1856, - 1874, 5, 511, 0, 0, 1857, 1858, 5, 48, 0, 0, 1858, 1859, 5, 43, 0, 0, 1859, - 1874, 5, 42, 0, 0, 1860, 1861, 5, 48, 0, 0, 1861, 1862, 5, 49, 0, 0, 1862, - 1863, 5, 497, 0, 0, 1863, 1864, 5, 513, 0, 0, 1864, 1865, 5, 495, 0, 0, - 1865, 1866, 5, 513, 0, 0, 1866, 1874, 5, 498, 0, 0, 1867, 1868, 5, 47, - 0, 0, 1868, 1869, 5, 41, 0, 0, 1869, 1874, 3, 114, 57, 0, 1870, 1871, 5, - 19, 0, 0, 1871, 1872, 5, 41, 0, 0, 1872, 1874, 5, 515, 0, 0, 1873, 1807, - 1, 0, 0, 0, 1873, 1810, 1, 0, 0, 0, 1873, 1813, 1, 0, 0, 0, 1873, 1819, - 1, 0, 0, 0, 1873, 1825, 1, 0, 0, 0, 1873, 1835, 1, 0, 0, 0, 1873, 1845, - 1, 0, 0, 0, 1873, 1848, 1, 0, 0, 0, 1873, 1851, 1, 0, 0, 0, 1873, 1854, - 1, 0, 0, 0, 1873, 1857, 1, 0, 0, 0, 1873, 1860, 1, 0, 0, 0, 1873, 1867, - 1, 0, 0, 0, 1873, 1870, 1, 0, 0, 0, 1874, 131, 1, 0, 0, 0, 1875, 1876, - 5, 48, 0, 0, 1876, 1877, 5, 53, 0, 0, 1877, 1888, 3, 128, 64, 0, 1878, - 1879, 5, 48, 0, 0, 1879, 1880, 5, 42, 0, 0, 1880, 1888, 7, 8, 0, 0, 1881, - 1882, 5, 48, 0, 0, 1882, 1883, 5, 51, 0, 0, 1883, 1888, 7, 9, 0, 0, 1884, - 1885, 5, 48, 0, 0, 1885, 1886, 5, 405, 0, 0, 1886, 1888, 5, 511, 0, 0, - 1887, 1875, 1, 0, 0, 0, 1887, 1878, 1, 0, 0, 0, 1887, 1881, 1, 0, 0, 0, - 1887, 1884, 1, 0, 0, 0, 1888, 133, 1, 0, 0, 0, 1889, 1890, 5, 47, 0, 0, - 1890, 1891, 5, 417, 0, 0, 1891, 1894, 5, 515, 0, 0, 1892, 1893, 5, 188, - 0, 0, 1893, 1895, 5, 511, 0, 0, 1894, 1892, 1, 0, 0, 0, 1894, 1895, 1, - 0, 0, 0, 1895, 1908, 1, 0, 0, 0, 1896, 1897, 5, 20, 0, 0, 1897, 1898, 5, - 417, 0, 0, 1898, 1899, 5, 515, 0, 0, 1899, 1900, 5, 423, 0, 0, 1900, 1908, - 5, 515, 0, 0, 1901, 1902, 5, 19, 0, 0, 1902, 1903, 5, 417, 0, 0, 1903, - 1908, 5, 515, 0, 0, 1904, 1905, 5, 48, 0, 0, 1905, 1906, 5, 405, 0, 0, - 1906, 1908, 5, 511, 0, 0, 1907, 1889, 1, 0, 0, 0, 1907, 1896, 1, 0, 0, - 0, 1907, 1901, 1, 0, 0, 0, 1907, 1904, 1, 0, 0, 0, 1908, 135, 1, 0, 0, - 0, 1909, 1910, 5, 47, 0, 0, 1910, 1911, 5, 33, 0, 0, 1911, 1914, 3, 708, - 354, 0, 1912, 1913, 5, 49, 0, 0, 1913, 1915, 5, 513, 0, 0, 1914, 1912, - 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1923, 1, 0, 0, 0, 1916, 1917, - 5, 19, 0, 0, 1917, 1918, 5, 33, 0, 0, 1918, 1923, 3, 708, 354, 0, 1919, - 1920, 5, 48, 0, 0, 1920, 1921, 5, 405, 0, 0, 1921, 1923, 5, 511, 0, 0, - 1922, 1909, 1, 0, 0, 0, 1922, 1916, 1, 0, 0, 0, 1922, 1919, 1, 0, 0, 0, - 1923, 137, 1, 0, 0, 0, 1924, 1925, 5, 29, 0, 0, 1925, 1927, 5, 515, 0, - 0, 1926, 1928, 3, 140, 70, 0, 1927, 1926, 1, 0, 0, 0, 1927, 1928, 1, 0, - 0, 0, 1928, 139, 1, 0, 0, 0, 1929, 1931, 3, 142, 71, 0, 1930, 1929, 1, - 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 1930, 1, 0, 0, 0, 1932, 1933, 1, - 0, 0, 0, 1933, 141, 1, 0, 0, 0, 1934, 1935, 5, 405, 0, 0, 1935, 1939, 5, - 511, 0, 0, 1936, 1937, 5, 219, 0, 0, 1937, 1939, 5, 511, 0, 0, 1938, 1934, - 1, 0, 0, 0, 1938, 1936, 1, 0, 0, 0, 1939, 143, 1, 0, 0, 0, 1940, 1941, - 5, 28, 0, 0, 1941, 1942, 3, 708, 354, 0, 1942, 1943, 5, 497, 0, 0, 1943, - 1944, 3, 146, 73, 0, 1944, 1946, 5, 498, 0, 0, 1945, 1947, 3, 152, 76, - 0, 1946, 1945, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 145, 1, 0, 0, - 0, 1948, 1953, 3, 148, 74, 0, 1949, 1950, 5, 495, 0, 0, 1950, 1952, 3, - 148, 74, 0, 1951, 1949, 1, 0, 0, 0, 1952, 1955, 1, 0, 0, 0, 1953, 1951, - 1, 0, 0, 0, 1953, 1954, 1, 0, 0, 0, 1954, 147, 1, 0, 0, 0, 1955, 1953, - 1, 0, 0, 0, 1956, 1958, 3, 718, 359, 0, 1957, 1956, 1, 0, 0, 0, 1957, 1958, - 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 1964, 3, 150, 75, 0, 1960, 1962, - 5, 188, 0, 0, 1961, 1960, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1963, - 1, 0, 0, 0, 1963, 1965, 5, 511, 0, 0, 1964, 1961, 1, 0, 0, 0, 1964, 1965, - 1, 0, 0, 0, 1965, 149, 1, 0, 0, 0, 1966, 1982, 5, 515, 0, 0, 1967, 1982, - 5, 517, 0, 0, 1968, 1982, 3, 730, 365, 0, 1969, 1982, 5, 312, 0, 0, 1970, - 1982, 5, 313, 0, 0, 1971, 1982, 5, 347, 0, 0, 1972, 1982, 5, 346, 0, 0, - 1973, 1982, 5, 318, 0, 0, 1974, 1982, 5, 339, 0, 0, 1975, 1982, 5, 340, - 0, 0, 1976, 1982, 5, 341, 0, 0, 1977, 1982, 5, 343, 0, 0, 1978, 1982, 5, - 26, 0, 0, 1979, 1982, 5, 348, 0, 0, 1980, 1982, 5, 370, 0, 0, 1981, 1966, - 1, 0, 0, 0, 1981, 1967, 1, 0, 0, 0, 1981, 1968, 1, 0, 0, 0, 1981, 1969, - 1, 0, 0, 0, 1981, 1970, 1, 0, 0, 0, 1981, 1971, 1, 0, 0, 0, 1981, 1972, - 1, 0, 0, 0, 1981, 1973, 1, 0, 0, 0, 1981, 1974, 1, 0, 0, 0, 1981, 1975, - 1, 0, 0, 0, 1981, 1976, 1, 0, 0, 0, 1981, 1977, 1, 0, 0, 0, 1981, 1978, - 1, 0, 0, 0, 1981, 1979, 1, 0, 0, 0, 1981, 1980, 1, 0, 0, 0, 1982, 151, - 1, 0, 0, 0, 1983, 1985, 3, 154, 77, 0, 1984, 1983, 1, 0, 0, 0, 1985, 1986, - 1, 0, 0, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1987, 1, 0, 0, 0, 1987, 153, - 1, 0, 0, 0, 1988, 1989, 5, 405, 0, 0, 1989, 1990, 5, 511, 0, 0, 1990, 155, - 1, 0, 0, 0, 1991, 1992, 5, 226, 0, 0, 1992, 1993, 5, 227, 0, 0, 1993, 1995, - 3, 708, 354, 0, 1994, 1996, 3, 158, 79, 0, 1995, 1994, 1, 0, 0, 0, 1995, - 1996, 1, 0, 0, 0, 1996, 1998, 1, 0, 0, 0, 1997, 1999, 3, 162, 81, 0, 1998, - 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 157, 1, 0, 0, 0, 2000, - 2002, 3, 160, 80, 0, 2001, 2000, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, - 2001, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 159, 1, 0, 0, 0, 2005, - 2006, 5, 361, 0, 0, 2006, 2007, 5, 454, 0, 0, 2007, 2011, 5, 511, 0, 0, - 2008, 2009, 5, 405, 0, 0, 2009, 2011, 5, 511, 0, 0, 2010, 2005, 1, 0, 0, - 0, 2010, 2008, 1, 0, 0, 0, 2011, 161, 1, 0, 0, 0, 2012, 2013, 5, 497, 0, - 0, 2013, 2018, 3, 164, 82, 0, 2014, 2015, 5, 495, 0, 0, 2015, 2017, 3, - 164, 82, 0, 2016, 2014, 1, 0, 0, 0, 2017, 2020, 1, 0, 0, 0, 2018, 2016, - 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2021, 1, 0, 0, 0, 2020, 2018, - 1, 0, 0, 0, 2021, 2022, 5, 498, 0, 0, 2022, 163, 1, 0, 0, 0, 2023, 2024, - 5, 226, 0, 0, 2024, 2025, 3, 166, 83, 0, 2025, 2026, 5, 71, 0, 0, 2026, - 2027, 5, 332, 0, 0, 2027, 2028, 5, 511, 0, 0, 2028, 165, 1, 0, 0, 0, 2029, - 2033, 5, 515, 0, 0, 2030, 2033, 5, 517, 0, 0, 2031, 2033, 3, 730, 365, - 0, 2032, 2029, 1, 0, 0, 0, 2032, 2030, 1, 0, 0, 0, 2032, 2031, 1, 0, 0, - 0, 2033, 167, 1, 0, 0, 0, 2034, 2035, 5, 298, 0, 0, 2035, 2036, 5, 300, - 0, 0, 2036, 2037, 3, 708, 354, 0, 2037, 2038, 5, 426, 0, 0, 2038, 2039, - 3, 708, 354, 0, 2039, 2040, 3, 170, 85, 0, 2040, 169, 1, 0, 0, 0, 2041, - 2042, 5, 307, 0, 0, 2042, 2043, 3, 668, 334, 0, 2043, 2044, 5, 299, 0, - 0, 2044, 2045, 5, 511, 0, 0, 2045, 2069, 1, 0, 0, 0, 2046, 2047, 5, 301, - 0, 0, 2047, 2048, 3, 174, 87, 0, 2048, 2049, 5, 299, 0, 0, 2049, 2050, - 5, 511, 0, 0, 2050, 2069, 1, 0, 0, 0, 2051, 2052, 5, 294, 0, 0, 2052, 2053, - 3, 176, 88, 0, 2053, 2054, 5, 299, 0, 0, 2054, 2055, 5, 511, 0, 0, 2055, - 2069, 1, 0, 0, 0, 2056, 2057, 5, 304, 0, 0, 2057, 2058, 3, 174, 87, 0, - 2058, 2059, 3, 172, 86, 0, 2059, 2060, 5, 299, 0, 0, 2060, 2061, 5, 511, - 0, 0, 2061, 2069, 1, 0, 0, 0, 2062, 2063, 5, 305, 0, 0, 2063, 2064, 3, - 174, 87, 0, 2064, 2065, 5, 511, 0, 0, 2065, 2066, 5, 299, 0, 0, 2066, 2067, - 5, 511, 0, 0, 2067, 2069, 1, 0, 0, 0, 2068, 2041, 1, 0, 0, 0, 2068, 2046, - 1, 0, 0, 0, 2068, 2051, 1, 0, 0, 0, 2068, 2056, 1, 0, 0, 0, 2068, 2062, - 1, 0, 0, 0, 2069, 171, 1, 0, 0, 0, 2070, 2071, 5, 290, 0, 0, 2071, 2072, - 3, 712, 356, 0, 2072, 2073, 5, 285, 0, 0, 2073, 2074, 3, 712, 356, 0, 2074, - 2084, 1, 0, 0, 0, 2075, 2076, 5, 485, 0, 0, 2076, 2084, 3, 712, 356, 0, - 2077, 2078, 5, 482, 0, 0, 2078, 2084, 3, 712, 356, 0, 2079, 2080, 5, 486, - 0, 0, 2080, 2084, 3, 712, 356, 0, 2081, 2082, 5, 483, 0, 0, 2082, 2084, - 3, 712, 356, 0, 2083, 2070, 1, 0, 0, 0, 2083, 2075, 1, 0, 0, 0, 2083, 2077, - 1, 0, 0, 0, 2083, 2079, 1, 0, 0, 0, 2083, 2081, 1, 0, 0, 0, 2084, 173, - 1, 0, 0, 0, 2085, 2090, 5, 515, 0, 0, 2086, 2087, 5, 490, 0, 0, 2087, 2089, - 5, 515, 0, 0, 2088, 2086, 1, 0, 0, 0, 2089, 2092, 1, 0, 0, 0, 2090, 2088, - 1, 0, 0, 0, 2090, 2091, 1, 0, 0, 0, 2091, 175, 1, 0, 0, 0, 2092, 2090, - 1, 0, 0, 0, 2093, 2098, 3, 174, 87, 0, 2094, 2095, 5, 495, 0, 0, 2095, - 2097, 3, 174, 87, 0, 2096, 2094, 1, 0, 0, 0, 2097, 2100, 1, 0, 0, 0, 2098, - 2096, 1, 0, 0, 0, 2098, 2099, 1, 0, 0, 0, 2099, 177, 1, 0, 0, 0, 2100, - 2098, 1, 0, 0, 0, 2101, 2102, 5, 30, 0, 0, 2102, 2103, 3, 708, 354, 0, - 2103, 2105, 5, 497, 0, 0, 2104, 2106, 3, 190, 95, 0, 2105, 2104, 1, 0, - 0, 0, 2105, 2106, 1, 0, 0, 0, 2106, 2107, 1, 0, 0, 0, 2107, 2109, 5, 498, - 0, 0, 2108, 2110, 3, 196, 98, 0, 2109, 2108, 1, 0, 0, 0, 2109, 2110, 1, - 0, 0, 0, 2110, 2112, 1, 0, 0, 0, 2111, 2113, 3, 198, 99, 0, 2112, 2111, - 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2115, - 5, 96, 0, 0, 2115, 2116, 3, 202, 101, 0, 2116, 2118, 5, 83, 0, 0, 2117, - 2119, 5, 494, 0, 0, 2118, 2117, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, - 2121, 1, 0, 0, 0, 2120, 2122, 5, 490, 0, 0, 2121, 2120, 1, 0, 0, 0, 2121, - 2122, 1, 0, 0, 0, 2122, 179, 1, 0, 0, 0, 2123, 2124, 5, 114, 0, 0, 2124, - 2125, 5, 116, 0, 0, 2125, 2126, 3, 708, 354, 0, 2126, 2128, 5, 497, 0, - 0, 2127, 2129, 3, 182, 91, 0, 2128, 2127, 1, 0, 0, 0, 2128, 2129, 1, 0, - 0, 0, 2129, 2130, 1, 0, 0, 0, 2130, 2132, 5, 498, 0, 0, 2131, 2133, 3, - 186, 93, 0, 2132, 2131, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2135, - 1, 0, 0, 0, 2134, 2136, 3, 188, 94, 0, 2135, 2134, 1, 0, 0, 0, 2135, 2136, - 1, 0, 0, 0, 2136, 2137, 1, 0, 0, 0, 2137, 2138, 5, 76, 0, 0, 2138, 2140, - 5, 512, 0, 0, 2139, 2141, 5, 494, 0, 0, 2140, 2139, 1, 0, 0, 0, 2140, 2141, - 1, 0, 0, 0, 2141, 181, 1, 0, 0, 0, 2142, 2147, 3, 184, 92, 0, 2143, 2144, - 5, 495, 0, 0, 2144, 2146, 3, 184, 92, 0, 2145, 2143, 1, 0, 0, 0, 2146, - 2149, 1, 0, 0, 0, 2147, 2145, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, - 183, 1, 0, 0, 0, 2149, 2147, 1, 0, 0, 0, 2150, 2151, 3, 194, 97, 0, 2151, - 2152, 5, 503, 0, 0, 2152, 2154, 3, 108, 54, 0, 2153, 2155, 5, 7, 0, 0, - 2154, 2153, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 185, 1, 0, 0, 0, - 2156, 2157, 5, 77, 0, 0, 2157, 2158, 3, 108, 54, 0, 2158, 187, 1, 0, 0, - 0, 2159, 2160, 5, 367, 0, 0, 2160, 2161, 5, 76, 0, 0, 2161, 2162, 5, 511, - 0, 0, 2162, 2163, 5, 289, 0, 0, 2163, 2164, 5, 511, 0, 0, 2164, 189, 1, - 0, 0, 0, 2165, 2170, 3, 192, 96, 0, 2166, 2167, 5, 495, 0, 0, 2167, 2169, - 3, 192, 96, 0, 2168, 2166, 1, 0, 0, 0, 2169, 2172, 1, 0, 0, 0, 2170, 2168, - 1, 0, 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 191, 1, 0, 0, 0, 2172, 2170, - 1, 0, 0, 0, 2173, 2176, 3, 194, 97, 0, 2174, 2176, 5, 514, 0, 0, 2175, - 2173, 1, 0, 0, 0, 2175, 2174, 1, 0, 0, 0, 2176, 2177, 1, 0, 0, 0, 2177, - 2178, 5, 503, 0, 0, 2178, 2179, 3, 108, 54, 0, 2179, 193, 1, 0, 0, 0, 2180, - 2184, 5, 515, 0, 0, 2181, 2184, 5, 517, 0, 0, 2182, 2184, 3, 730, 365, - 0, 2183, 2180, 1, 0, 0, 0, 2183, 2181, 1, 0, 0, 0, 2183, 2182, 1, 0, 0, - 0, 2184, 195, 1, 0, 0, 0, 2185, 2186, 5, 77, 0, 0, 2186, 2189, 3, 108, - 54, 0, 2187, 2188, 5, 76, 0, 0, 2188, 2190, 5, 514, 0, 0, 2189, 2187, 1, - 0, 0, 0, 2189, 2190, 1, 0, 0, 0, 2190, 197, 1, 0, 0, 0, 2191, 2193, 3, - 200, 100, 0, 2192, 2191, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2192, - 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 199, 1, 0, 0, 0, 2196, 2197, - 5, 219, 0, 0, 2197, 2201, 5, 511, 0, 0, 2198, 2199, 5, 405, 0, 0, 2199, - 2201, 5, 511, 0, 0, 2200, 2196, 1, 0, 0, 0, 2200, 2198, 1, 0, 0, 0, 2201, - 201, 1, 0, 0, 0, 2202, 2204, 3, 204, 102, 0, 2203, 2202, 1, 0, 0, 0, 2204, - 2207, 1, 0, 0, 0, 2205, 2203, 1, 0, 0, 0, 2205, 2206, 1, 0, 0, 0, 2206, - 203, 1, 0, 0, 0, 2207, 2205, 1, 0, 0, 0, 2208, 2210, 3, 720, 360, 0, 2209, - 2208, 1, 0, 0, 0, 2210, 2213, 1, 0, 0, 0, 2211, 2209, 1, 0, 0, 0, 2211, - 2212, 1, 0, 0, 0, 2212, 2214, 1, 0, 0, 0, 2213, 2211, 1, 0, 0, 0, 2214, - 2216, 3, 206, 103, 0, 2215, 2217, 5, 494, 0, 0, 2216, 2215, 1, 0, 0, 0, - 2216, 2217, 1, 0, 0, 0, 2217, 2539, 1, 0, 0, 0, 2218, 2220, 3, 720, 360, - 0, 2219, 2218, 1, 0, 0, 0, 2220, 2223, 1, 0, 0, 0, 2221, 2219, 1, 0, 0, - 0, 2221, 2222, 1, 0, 0, 0, 2222, 2224, 1, 0, 0, 0, 2223, 2221, 1, 0, 0, - 0, 2224, 2226, 3, 208, 104, 0, 2225, 2227, 5, 494, 0, 0, 2226, 2225, 1, - 0, 0, 0, 2226, 2227, 1, 0, 0, 0, 2227, 2539, 1, 0, 0, 0, 2228, 2230, 3, - 720, 360, 0, 2229, 2228, 1, 0, 0, 0, 2230, 2233, 1, 0, 0, 0, 2231, 2229, - 1, 0, 0, 0, 2231, 2232, 1, 0, 0, 0, 2232, 2234, 1, 0, 0, 0, 2233, 2231, - 1, 0, 0, 0, 2234, 2236, 3, 316, 158, 0, 2235, 2237, 5, 494, 0, 0, 2236, - 2235, 1, 0, 0, 0, 2236, 2237, 1, 0, 0, 0, 2237, 2539, 1, 0, 0, 0, 2238, - 2240, 3, 720, 360, 0, 2239, 2238, 1, 0, 0, 0, 2240, 2243, 1, 0, 0, 0, 2241, - 2239, 1, 0, 0, 0, 2241, 2242, 1, 0, 0, 0, 2242, 2244, 1, 0, 0, 0, 2243, - 2241, 1, 0, 0, 0, 2244, 2246, 3, 210, 105, 0, 2245, 2247, 5, 494, 0, 0, - 2246, 2245, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2539, 1, 0, 0, 0, - 2248, 2250, 3, 720, 360, 0, 2249, 2248, 1, 0, 0, 0, 2250, 2253, 1, 0, 0, - 0, 2251, 2249, 1, 0, 0, 0, 2251, 2252, 1, 0, 0, 0, 2252, 2254, 1, 0, 0, - 0, 2253, 2251, 1, 0, 0, 0, 2254, 2256, 3, 212, 106, 0, 2255, 2257, 5, 494, - 0, 0, 2256, 2255, 1, 0, 0, 0, 2256, 2257, 1, 0, 0, 0, 2257, 2539, 1, 0, - 0, 0, 2258, 2260, 3, 720, 360, 0, 2259, 2258, 1, 0, 0, 0, 2260, 2263, 1, - 0, 0, 0, 2261, 2259, 1, 0, 0, 0, 2261, 2262, 1, 0, 0, 0, 2262, 2264, 1, - 0, 0, 0, 2263, 2261, 1, 0, 0, 0, 2264, 2266, 3, 216, 108, 0, 2265, 2267, - 5, 494, 0, 0, 2266, 2265, 1, 0, 0, 0, 2266, 2267, 1, 0, 0, 0, 2267, 2539, - 1, 0, 0, 0, 2268, 2270, 3, 720, 360, 0, 2269, 2268, 1, 0, 0, 0, 2270, 2273, - 1, 0, 0, 0, 2271, 2269, 1, 0, 0, 0, 2271, 2272, 1, 0, 0, 0, 2272, 2274, - 1, 0, 0, 0, 2273, 2271, 1, 0, 0, 0, 2274, 2276, 3, 218, 109, 0, 2275, 2277, - 5, 494, 0, 0, 2276, 2275, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2539, - 1, 0, 0, 0, 2278, 2280, 3, 720, 360, 0, 2279, 2278, 1, 0, 0, 0, 2280, 2283, - 1, 0, 0, 0, 2281, 2279, 1, 0, 0, 0, 2281, 2282, 1, 0, 0, 0, 2282, 2284, - 1, 0, 0, 0, 2283, 2281, 1, 0, 0, 0, 2284, 2286, 3, 220, 110, 0, 2285, 2287, - 5, 494, 0, 0, 2286, 2285, 1, 0, 0, 0, 2286, 2287, 1, 0, 0, 0, 2287, 2539, - 1, 0, 0, 0, 2288, 2290, 3, 720, 360, 0, 2289, 2288, 1, 0, 0, 0, 2290, 2293, - 1, 0, 0, 0, 2291, 2289, 1, 0, 0, 0, 2291, 2292, 1, 0, 0, 0, 2292, 2294, - 1, 0, 0, 0, 2293, 2291, 1, 0, 0, 0, 2294, 2296, 3, 222, 111, 0, 2295, 2297, - 5, 494, 0, 0, 2296, 2295, 1, 0, 0, 0, 2296, 2297, 1, 0, 0, 0, 2297, 2539, - 1, 0, 0, 0, 2298, 2300, 3, 720, 360, 0, 2299, 2298, 1, 0, 0, 0, 2300, 2303, - 1, 0, 0, 0, 2301, 2299, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2302, 2304, - 1, 0, 0, 0, 2303, 2301, 1, 0, 0, 0, 2304, 2306, 3, 228, 114, 0, 2305, 2307, - 5, 494, 0, 0, 2306, 2305, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2539, - 1, 0, 0, 0, 2308, 2310, 3, 720, 360, 0, 2309, 2308, 1, 0, 0, 0, 2310, 2313, - 1, 0, 0, 0, 2311, 2309, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 2314, - 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2314, 2316, 3, 230, 115, 0, 2315, 2317, - 5, 494, 0, 0, 2316, 2315, 1, 0, 0, 0, 2316, 2317, 1, 0, 0, 0, 2317, 2539, - 1, 0, 0, 0, 2318, 2320, 3, 720, 360, 0, 2319, 2318, 1, 0, 0, 0, 2320, 2323, - 1, 0, 0, 0, 2321, 2319, 1, 0, 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2324, - 1, 0, 0, 0, 2323, 2321, 1, 0, 0, 0, 2324, 2326, 3, 232, 116, 0, 2325, 2327, - 5, 494, 0, 0, 2326, 2325, 1, 0, 0, 0, 2326, 2327, 1, 0, 0, 0, 2327, 2539, - 1, 0, 0, 0, 2328, 2330, 3, 720, 360, 0, 2329, 2328, 1, 0, 0, 0, 2330, 2333, - 1, 0, 0, 0, 2331, 2329, 1, 0, 0, 0, 2331, 2332, 1, 0, 0, 0, 2332, 2334, - 1, 0, 0, 0, 2333, 2331, 1, 0, 0, 0, 2334, 2336, 3, 234, 117, 0, 2335, 2337, - 5, 494, 0, 0, 2336, 2335, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2539, - 1, 0, 0, 0, 2338, 2340, 3, 720, 360, 0, 2339, 2338, 1, 0, 0, 0, 2340, 2343, - 1, 0, 0, 0, 2341, 2339, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2344, - 1, 0, 0, 0, 2343, 2341, 1, 0, 0, 0, 2344, 2346, 3, 236, 118, 0, 2345, 2347, - 5, 494, 0, 0, 2346, 2345, 1, 0, 0, 0, 2346, 2347, 1, 0, 0, 0, 2347, 2539, - 1, 0, 0, 0, 2348, 2350, 3, 720, 360, 0, 2349, 2348, 1, 0, 0, 0, 2350, 2353, - 1, 0, 0, 0, 2351, 2349, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 2354, - 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2354, 2356, 3, 238, 119, 0, 2355, 2357, - 5, 494, 0, 0, 2356, 2355, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2539, - 1, 0, 0, 0, 2358, 2360, 3, 720, 360, 0, 2359, 2358, 1, 0, 0, 0, 2360, 2363, - 1, 0, 0, 0, 2361, 2359, 1, 0, 0, 0, 2361, 2362, 1, 0, 0, 0, 2362, 2364, - 1, 0, 0, 0, 2363, 2361, 1, 0, 0, 0, 2364, 2366, 3, 240, 120, 0, 2365, 2367, - 5, 494, 0, 0, 2366, 2365, 1, 0, 0, 0, 2366, 2367, 1, 0, 0, 0, 2367, 2539, - 1, 0, 0, 0, 2368, 2370, 3, 720, 360, 0, 2369, 2368, 1, 0, 0, 0, 2370, 2373, - 1, 0, 0, 0, 2371, 2369, 1, 0, 0, 0, 2371, 2372, 1, 0, 0, 0, 2372, 2374, - 1, 0, 0, 0, 2373, 2371, 1, 0, 0, 0, 2374, 2376, 3, 242, 121, 0, 2375, 2377, - 5, 494, 0, 0, 2376, 2375, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2539, - 1, 0, 0, 0, 2378, 2380, 3, 720, 360, 0, 2379, 2378, 1, 0, 0, 0, 2380, 2383, - 1, 0, 0, 0, 2381, 2379, 1, 0, 0, 0, 2381, 2382, 1, 0, 0, 0, 2382, 2384, - 1, 0, 0, 0, 2383, 2381, 1, 0, 0, 0, 2384, 2386, 3, 254, 127, 0, 2385, 2387, - 5, 494, 0, 0, 2386, 2385, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2539, - 1, 0, 0, 0, 2388, 2390, 3, 720, 360, 0, 2389, 2388, 1, 0, 0, 0, 2390, 2393, - 1, 0, 0, 0, 2391, 2389, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, - 1, 0, 0, 0, 2393, 2391, 1, 0, 0, 0, 2394, 2396, 3, 256, 128, 0, 2395, 2397, - 5, 494, 0, 0, 2396, 2395, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2539, - 1, 0, 0, 0, 2398, 2400, 3, 720, 360, 0, 2399, 2398, 1, 0, 0, 0, 2400, 2403, - 1, 0, 0, 0, 2401, 2399, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2404, - 1, 0, 0, 0, 2403, 2401, 1, 0, 0, 0, 2404, 2406, 3, 258, 129, 0, 2405, 2407, - 5, 494, 0, 0, 2406, 2405, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2539, - 1, 0, 0, 0, 2408, 2410, 3, 720, 360, 0, 2409, 2408, 1, 0, 0, 0, 2410, 2413, - 1, 0, 0, 0, 2411, 2409, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2414, - 1, 0, 0, 0, 2413, 2411, 1, 0, 0, 0, 2414, 2416, 3, 260, 130, 0, 2415, 2417, - 5, 494, 0, 0, 2416, 2415, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2539, - 1, 0, 0, 0, 2418, 2420, 3, 720, 360, 0, 2419, 2418, 1, 0, 0, 0, 2420, 2423, - 1, 0, 0, 0, 2421, 2419, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 2424, - 1, 0, 0, 0, 2423, 2421, 1, 0, 0, 0, 2424, 2426, 3, 266, 133, 0, 2425, 2427, - 5, 494, 0, 0, 2426, 2425, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2539, - 1, 0, 0, 0, 2428, 2430, 3, 720, 360, 0, 2429, 2428, 1, 0, 0, 0, 2430, 2433, - 1, 0, 0, 0, 2431, 2429, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2434, - 1, 0, 0, 0, 2433, 2431, 1, 0, 0, 0, 2434, 2436, 3, 272, 136, 0, 2435, 2437, - 5, 494, 0, 0, 2436, 2435, 1, 0, 0, 0, 2436, 2437, 1, 0, 0, 0, 2437, 2539, - 1, 0, 0, 0, 2438, 2440, 3, 720, 360, 0, 2439, 2438, 1, 0, 0, 0, 2440, 2443, - 1, 0, 0, 0, 2441, 2439, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2444, - 1, 0, 0, 0, 2443, 2441, 1, 0, 0, 0, 2444, 2446, 3, 274, 137, 0, 2445, 2447, - 5, 494, 0, 0, 2446, 2445, 1, 0, 0, 0, 2446, 2447, 1, 0, 0, 0, 2447, 2539, - 1, 0, 0, 0, 2448, 2450, 3, 720, 360, 0, 2449, 2448, 1, 0, 0, 0, 2450, 2453, - 1, 0, 0, 0, 2451, 2449, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2454, - 1, 0, 0, 0, 2453, 2451, 1, 0, 0, 0, 2454, 2456, 3, 276, 138, 0, 2455, 2457, - 5, 494, 0, 0, 2456, 2455, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 2539, - 1, 0, 0, 0, 2458, 2460, 3, 720, 360, 0, 2459, 2458, 1, 0, 0, 0, 2460, 2463, - 1, 0, 0, 0, 2461, 2459, 1, 0, 0, 0, 2461, 2462, 1, 0, 0, 0, 2462, 2464, - 1, 0, 0, 0, 2463, 2461, 1, 0, 0, 0, 2464, 2466, 3, 278, 139, 0, 2465, 2467, - 5, 494, 0, 0, 2466, 2465, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0, 2467, 2539, - 1, 0, 0, 0, 2468, 2470, 3, 720, 360, 0, 2469, 2468, 1, 0, 0, 0, 2470, 2473, - 1, 0, 0, 0, 2471, 2469, 1, 0, 0, 0, 2471, 2472, 1, 0, 0, 0, 2472, 2474, - 1, 0, 0, 0, 2473, 2471, 1, 0, 0, 0, 2474, 2476, 3, 304, 152, 0, 2475, 2477, - 5, 494, 0, 0, 2476, 2475, 1, 0, 0, 0, 2476, 2477, 1, 0, 0, 0, 2477, 2539, - 1, 0, 0, 0, 2478, 2480, 3, 720, 360, 0, 2479, 2478, 1, 0, 0, 0, 2480, 2483, - 1, 0, 0, 0, 2481, 2479, 1, 0, 0, 0, 2481, 2482, 1, 0, 0, 0, 2482, 2484, - 1, 0, 0, 0, 2483, 2481, 1, 0, 0, 0, 2484, 2486, 3, 312, 156, 0, 2485, 2487, - 5, 494, 0, 0, 2486, 2485, 1, 0, 0, 0, 2486, 2487, 1, 0, 0, 0, 2487, 2539, - 1, 0, 0, 0, 2488, 2490, 3, 720, 360, 0, 2489, 2488, 1, 0, 0, 0, 2490, 2493, - 1, 0, 0, 0, 2491, 2489, 1, 0, 0, 0, 2491, 2492, 1, 0, 0, 0, 2492, 2494, - 1, 0, 0, 0, 2493, 2491, 1, 0, 0, 0, 2494, 2496, 3, 318, 159, 0, 2495, 2497, - 5, 494, 0, 0, 2496, 2495, 1, 0, 0, 0, 2496, 2497, 1, 0, 0, 0, 2497, 2539, - 1, 0, 0, 0, 2498, 2500, 3, 720, 360, 0, 2499, 2498, 1, 0, 0, 0, 2500, 2503, - 1, 0, 0, 0, 2501, 2499, 1, 0, 0, 0, 2501, 2502, 1, 0, 0, 0, 2502, 2504, - 1, 0, 0, 0, 2503, 2501, 1, 0, 0, 0, 2504, 2506, 3, 320, 160, 0, 2505, 2507, - 5, 494, 0, 0, 2506, 2505, 1, 0, 0, 0, 2506, 2507, 1, 0, 0, 0, 2507, 2539, - 1, 0, 0, 0, 2508, 2510, 3, 720, 360, 0, 2509, 2508, 1, 0, 0, 0, 2510, 2513, - 1, 0, 0, 0, 2511, 2509, 1, 0, 0, 0, 2511, 2512, 1, 0, 0, 0, 2512, 2514, - 1, 0, 0, 0, 2513, 2511, 1, 0, 0, 0, 2514, 2516, 3, 280, 140, 0, 2515, 2517, - 5, 494, 0, 0, 2516, 2515, 1, 0, 0, 0, 2516, 2517, 1, 0, 0, 0, 2517, 2539, - 1, 0, 0, 0, 2518, 2520, 3, 720, 360, 0, 2519, 2518, 1, 0, 0, 0, 2520, 2523, - 1, 0, 0, 0, 2521, 2519, 1, 0, 0, 0, 2521, 2522, 1, 0, 0, 0, 2522, 2524, - 1, 0, 0, 0, 2523, 2521, 1, 0, 0, 0, 2524, 2526, 3, 282, 141, 0, 2525, 2527, - 5, 494, 0, 0, 2526, 2525, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527, 2539, - 1, 0, 0, 0, 2528, 2530, 3, 720, 360, 0, 2529, 2528, 1, 0, 0, 0, 2530, 2533, - 1, 0, 0, 0, 2531, 2529, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 2534, - 1, 0, 0, 0, 2533, 2531, 1, 0, 0, 0, 2534, 2536, 3, 300, 150, 0, 2535, 2537, - 5, 494, 0, 0, 2536, 2535, 1, 0, 0, 0, 2536, 2537, 1, 0, 0, 0, 2537, 2539, - 1, 0, 0, 0, 2538, 2211, 1, 0, 0, 0, 2538, 2221, 1, 0, 0, 0, 2538, 2231, - 1, 0, 0, 0, 2538, 2241, 1, 0, 0, 0, 2538, 2251, 1, 0, 0, 0, 2538, 2261, - 1, 0, 0, 0, 2538, 2271, 1, 0, 0, 0, 2538, 2281, 1, 0, 0, 0, 2538, 2291, - 1, 0, 0, 0, 2538, 2301, 1, 0, 0, 0, 2538, 2311, 1, 0, 0, 0, 2538, 2321, - 1, 0, 0, 0, 2538, 2331, 1, 0, 0, 0, 2538, 2341, 1, 0, 0, 0, 2538, 2351, - 1, 0, 0, 0, 2538, 2361, 1, 0, 0, 0, 2538, 2371, 1, 0, 0, 0, 2538, 2381, - 1, 0, 0, 0, 2538, 2391, 1, 0, 0, 0, 2538, 2401, 1, 0, 0, 0, 2538, 2411, - 1, 0, 0, 0, 2538, 2421, 1, 0, 0, 0, 2538, 2431, 1, 0, 0, 0, 2538, 2441, - 1, 0, 0, 0, 2538, 2451, 1, 0, 0, 0, 2538, 2461, 1, 0, 0, 0, 2538, 2471, - 1, 0, 0, 0, 2538, 2481, 1, 0, 0, 0, 2538, 2491, 1, 0, 0, 0, 2538, 2501, - 1, 0, 0, 0, 2538, 2511, 1, 0, 0, 0, 2538, 2521, 1, 0, 0, 0, 2538, 2531, - 1, 0, 0, 0, 2539, 205, 1, 0, 0, 0, 2540, 2541, 5, 97, 0, 0, 2541, 2542, - 5, 514, 0, 0, 2542, 2545, 3, 108, 54, 0, 2543, 2544, 5, 484, 0, 0, 2544, - 2546, 3, 668, 334, 0, 2545, 2543, 1, 0, 0, 0, 2545, 2546, 1, 0, 0, 0, 2546, - 207, 1, 0, 0, 0, 2547, 2550, 5, 48, 0, 0, 2548, 2551, 5, 514, 0, 0, 2549, - 2551, 3, 214, 107, 0, 2550, 2548, 1, 0, 0, 0, 2550, 2549, 1, 0, 0, 0, 2551, - 2552, 1, 0, 0, 0, 2552, 2553, 5, 484, 0, 0, 2553, 2554, 3, 668, 334, 0, - 2554, 209, 1, 0, 0, 0, 2555, 2556, 5, 514, 0, 0, 2556, 2558, 5, 484, 0, - 0, 2557, 2555, 1, 0, 0, 0, 2557, 2558, 1, 0, 0, 0, 2558, 2559, 1, 0, 0, - 0, 2559, 2560, 5, 17, 0, 0, 2560, 2566, 3, 112, 56, 0, 2561, 2563, 5, 497, - 0, 0, 2562, 2564, 3, 322, 161, 0, 2563, 2562, 1, 0, 0, 0, 2563, 2564, 1, - 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2567, 5, 498, 0, 0, 2566, 2561, - 1, 0, 0, 0, 2566, 2567, 1, 0, 0, 0, 2567, 2569, 1, 0, 0, 0, 2568, 2570, - 3, 226, 113, 0, 2569, 2568, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 211, - 1, 0, 0, 0, 2571, 2572, 5, 98, 0, 0, 2572, 2578, 5, 514, 0, 0, 2573, 2575, - 5, 497, 0, 0, 2574, 2576, 3, 322, 161, 0, 2575, 2574, 1, 0, 0, 0, 2575, - 2576, 1, 0, 0, 0, 2576, 2577, 1, 0, 0, 0, 2577, 2579, 5, 498, 0, 0, 2578, - 2573, 1, 0, 0, 0, 2578, 2579, 1, 0, 0, 0, 2579, 213, 1, 0, 0, 0, 2580, - 2586, 5, 514, 0, 0, 2581, 2584, 7, 11, 0, 0, 2582, 2585, 5, 515, 0, 0, - 2583, 2585, 3, 708, 354, 0, 2584, 2582, 1, 0, 0, 0, 2584, 2583, 1, 0, 0, - 0, 2585, 2587, 1, 0, 0, 0, 2586, 2581, 1, 0, 0, 0, 2587, 2588, 1, 0, 0, - 0, 2588, 2586, 1, 0, 0, 0, 2588, 2589, 1, 0, 0, 0, 2589, 215, 1, 0, 0, - 0, 2590, 2591, 5, 101, 0, 0, 2591, 2594, 5, 514, 0, 0, 2592, 2593, 5, 139, - 0, 0, 2593, 2595, 5, 120, 0, 0, 2594, 2592, 1, 0, 0, 0, 2594, 2595, 1, - 0, 0, 0, 2595, 2597, 1, 0, 0, 0, 2596, 2598, 5, 393, 0, 0, 2597, 2596, - 1, 0, 0, 0, 2597, 2598, 1, 0, 0, 0, 2598, 2600, 1, 0, 0, 0, 2599, 2601, - 3, 226, 113, 0, 2600, 2599, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 217, - 1, 0, 0, 0, 2602, 2603, 5, 100, 0, 0, 2603, 2605, 5, 514, 0, 0, 2604, 2606, - 3, 226, 113, 0, 2605, 2604, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 219, - 1, 0, 0, 0, 2607, 2608, 5, 102, 0, 0, 2608, 2610, 5, 514, 0, 0, 2609, 2611, - 5, 393, 0, 0, 2610, 2609, 1, 0, 0, 0, 2610, 2611, 1, 0, 0, 0, 2611, 221, - 1, 0, 0, 0, 2612, 2613, 5, 99, 0, 0, 2613, 2614, 5, 514, 0, 0, 2614, 2615, - 5, 71, 0, 0, 2615, 2621, 3, 224, 112, 0, 2616, 2619, 5, 72, 0, 0, 2617, - 2620, 3, 354, 177, 0, 2618, 2620, 3, 668, 334, 0, 2619, 2617, 1, 0, 0, - 0, 2619, 2618, 1, 0, 0, 0, 2620, 2622, 1, 0, 0, 0, 2621, 2616, 1, 0, 0, - 0, 2621, 2622, 1, 0, 0, 0, 2622, 2632, 1, 0, 0, 0, 2623, 2624, 5, 10, 0, - 0, 2624, 2629, 3, 352, 176, 0, 2625, 2626, 5, 495, 0, 0, 2626, 2628, 3, - 352, 176, 0, 2627, 2625, 1, 0, 0, 0, 2628, 2631, 1, 0, 0, 0, 2629, 2627, - 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 2633, 1, 0, 0, 0, 2631, 2629, - 1, 0, 0, 0, 2632, 2623, 1, 0, 0, 0, 2632, 2633, 1, 0, 0, 0, 2633, 2636, - 1, 0, 0, 0, 2634, 2635, 5, 75, 0, 0, 2635, 2637, 3, 668, 334, 0, 2636, - 2634, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2640, 1, 0, 0, 0, 2638, - 2639, 5, 74, 0, 0, 2639, 2641, 3, 668, 334, 0, 2640, 2638, 1, 0, 0, 0, - 2640, 2641, 1, 0, 0, 0, 2641, 2643, 1, 0, 0, 0, 2642, 2644, 3, 226, 113, - 0, 2643, 2642, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 223, 1, 0, 0, - 0, 2645, 2656, 3, 708, 354, 0, 2646, 2647, 5, 514, 0, 0, 2647, 2648, 5, - 490, 0, 0, 2648, 2656, 3, 708, 354, 0, 2649, 2650, 5, 497, 0, 0, 2650, - 2651, 3, 582, 291, 0, 2651, 2652, 5, 498, 0, 0, 2652, 2656, 1, 0, 0, 0, - 2653, 2654, 5, 353, 0, 0, 2654, 2656, 5, 511, 0, 0, 2655, 2645, 1, 0, 0, - 0, 2655, 2646, 1, 0, 0, 0, 2655, 2649, 1, 0, 0, 0, 2655, 2653, 1, 0, 0, - 0, 2656, 225, 1, 0, 0, 0, 2657, 2658, 5, 93, 0, 0, 2658, 2659, 5, 302, - 0, 0, 2659, 2678, 5, 108, 0, 0, 2660, 2661, 5, 93, 0, 0, 2661, 2662, 5, - 302, 0, 0, 2662, 2678, 5, 102, 0, 0, 2663, 2664, 5, 93, 0, 0, 2664, 2665, - 5, 302, 0, 0, 2665, 2666, 5, 499, 0, 0, 2666, 2667, 3, 202, 101, 0, 2667, - 2668, 5, 500, 0, 0, 2668, 2678, 1, 0, 0, 0, 2669, 2670, 5, 93, 0, 0, 2670, - 2671, 5, 302, 0, 0, 2671, 2672, 5, 432, 0, 0, 2672, 2673, 5, 102, 0, 0, - 2673, 2674, 5, 499, 0, 0, 2674, 2675, 3, 202, 101, 0, 2675, 2676, 5, 500, - 0, 0, 2676, 2678, 1, 0, 0, 0, 2677, 2657, 1, 0, 0, 0, 2677, 2660, 1, 0, - 0, 0, 2677, 2663, 1, 0, 0, 0, 2677, 2669, 1, 0, 0, 0, 2678, 227, 1, 0, - 0, 0, 2679, 2680, 5, 105, 0, 0, 2680, 2681, 3, 668, 334, 0, 2681, 2682, - 5, 81, 0, 0, 2682, 2690, 3, 202, 101, 0, 2683, 2684, 5, 106, 0, 0, 2684, - 2685, 3, 668, 334, 0, 2685, 2686, 5, 81, 0, 0, 2686, 2687, 3, 202, 101, - 0, 2687, 2689, 1, 0, 0, 0, 2688, 2683, 1, 0, 0, 0, 2689, 2692, 1, 0, 0, - 0, 2690, 2688, 1, 0, 0, 0, 2690, 2691, 1, 0, 0, 0, 2691, 2695, 1, 0, 0, - 0, 2692, 2690, 1, 0, 0, 0, 2693, 2694, 5, 82, 0, 0, 2694, 2696, 3, 202, - 101, 0, 2695, 2693, 1, 0, 0, 0, 2695, 2696, 1, 0, 0, 0, 2696, 2697, 1, - 0, 0, 0, 2697, 2698, 5, 83, 0, 0, 2698, 2699, 5, 105, 0, 0, 2699, 229, - 1, 0, 0, 0, 2700, 2701, 5, 103, 0, 0, 2701, 2702, 5, 514, 0, 0, 2702, 2705, - 5, 289, 0, 0, 2703, 2706, 5, 514, 0, 0, 2704, 2706, 3, 214, 107, 0, 2705, - 2703, 1, 0, 0, 0, 2705, 2704, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, - 2708, 5, 96, 0, 0, 2708, 2709, 3, 202, 101, 0, 2709, 2710, 5, 83, 0, 0, - 2710, 2711, 5, 103, 0, 0, 2711, 231, 1, 0, 0, 0, 2712, 2713, 5, 104, 0, - 0, 2713, 2715, 3, 668, 334, 0, 2714, 2716, 5, 96, 0, 0, 2715, 2714, 1, - 0, 0, 0, 2715, 2716, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2718, 3, - 202, 101, 0, 2718, 2720, 5, 83, 0, 0, 2719, 2721, 5, 104, 0, 0, 2720, 2719, - 1, 0, 0, 0, 2720, 2721, 1, 0, 0, 0, 2721, 233, 1, 0, 0, 0, 2722, 2723, - 5, 108, 0, 0, 2723, 235, 1, 0, 0, 0, 2724, 2725, 5, 109, 0, 0, 2725, 237, - 1, 0, 0, 0, 2726, 2728, 5, 110, 0, 0, 2727, 2729, 3, 668, 334, 0, 2728, - 2727, 1, 0, 0, 0, 2728, 2729, 1, 0, 0, 0, 2729, 239, 1, 0, 0, 0, 2730, - 2731, 5, 303, 0, 0, 2731, 2732, 5, 302, 0, 0, 2732, 241, 1, 0, 0, 0, 2733, - 2735, 5, 112, 0, 0, 2734, 2736, 3, 244, 122, 0, 2735, 2734, 1, 0, 0, 0, - 2735, 2736, 1, 0, 0, 0, 2736, 2739, 1, 0, 0, 0, 2737, 2738, 5, 119, 0, - 0, 2738, 2740, 5, 511, 0, 0, 2739, 2737, 1, 0, 0, 0, 2739, 2740, 1, 0, - 0, 0, 2740, 2741, 1, 0, 0, 0, 2741, 2743, 3, 668, 334, 0, 2742, 2744, 3, - 250, 125, 0, 2743, 2742, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, 0, 2744, 243, - 1, 0, 0, 0, 2745, 2746, 7, 12, 0, 0, 2746, 245, 1, 0, 0, 0, 2747, 2748, - 5, 139, 0, 0, 2748, 2749, 5, 497, 0, 0, 2749, 2754, 3, 248, 124, 0, 2750, - 2751, 5, 495, 0, 0, 2751, 2753, 3, 248, 124, 0, 2752, 2750, 1, 0, 0, 0, - 2753, 2756, 1, 0, 0, 0, 2754, 2752, 1, 0, 0, 0, 2754, 2755, 1, 0, 0, 0, - 2755, 2757, 1, 0, 0, 0, 2756, 2754, 1, 0, 0, 0, 2757, 2758, 5, 498, 0, - 0, 2758, 2762, 1, 0, 0, 0, 2759, 2760, 5, 369, 0, 0, 2760, 2762, 3, 714, - 357, 0, 2761, 2747, 1, 0, 0, 0, 2761, 2759, 1, 0, 0, 0, 2762, 247, 1, 0, - 0, 0, 2763, 2764, 5, 499, 0, 0, 2764, 2765, 5, 513, 0, 0, 2765, 2766, 5, - 500, 0, 0, 2766, 2767, 5, 484, 0, 0, 2767, 2768, 3, 668, 334, 0, 2768, - 249, 1, 0, 0, 0, 2769, 2770, 3, 246, 123, 0, 2770, 251, 1, 0, 0, 0, 2771, - 2772, 3, 248, 124, 0, 2772, 253, 1, 0, 0, 0, 2773, 2774, 5, 514, 0, 0, - 2774, 2776, 5, 484, 0, 0, 2775, 2773, 1, 0, 0, 0, 2775, 2776, 1, 0, 0, - 0, 2776, 2777, 1, 0, 0, 0, 2777, 2778, 5, 113, 0, 0, 2778, 2779, 5, 30, - 0, 0, 2779, 2780, 3, 708, 354, 0, 2780, 2782, 5, 497, 0, 0, 2781, 2783, - 3, 262, 131, 0, 2782, 2781, 1, 0, 0, 0, 2782, 2783, 1, 0, 0, 0, 2783, 2784, - 1, 0, 0, 0, 2784, 2786, 5, 498, 0, 0, 2785, 2787, 3, 226, 113, 0, 2786, - 2785, 1, 0, 0, 0, 2786, 2787, 1, 0, 0, 0, 2787, 255, 1, 0, 0, 0, 2788, - 2789, 5, 514, 0, 0, 2789, 2791, 5, 484, 0, 0, 2790, 2788, 1, 0, 0, 0, 2790, - 2791, 1, 0, 0, 0, 2791, 2792, 1, 0, 0, 0, 2792, 2793, 5, 113, 0, 0, 2793, - 2794, 5, 114, 0, 0, 2794, 2795, 5, 116, 0, 0, 2795, 2796, 3, 708, 354, - 0, 2796, 2798, 5, 497, 0, 0, 2797, 2799, 3, 262, 131, 0, 2798, 2797, 1, - 0, 0, 0, 2798, 2799, 1, 0, 0, 0, 2799, 2800, 1, 0, 0, 0, 2800, 2802, 5, - 498, 0, 0, 2801, 2803, 3, 226, 113, 0, 2802, 2801, 1, 0, 0, 0, 2802, 2803, - 1, 0, 0, 0, 2803, 257, 1, 0, 0, 0, 2804, 2805, 5, 514, 0, 0, 2805, 2807, - 5, 484, 0, 0, 2806, 2804, 1, 0, 0, 0, 2806, 2807, 1, 0, 0, 0, 2807, 2808, - 1, 0, 0, 0, 2808, 2809, 5, 396, 0, 0, 2809, 2810, 5, 353, 0, 0, 2810, 2811, - 5, 354, 0, 0, 2811, 2818, 3, 708, 354, 0, 2812, 2816, 5, 166, 0, 0, 2813, - 2817, 5, 511, 0, 0, 2814, 2817, 5, 512, 0, 0, 2815, 2817, 3, 668, 334, - 0, 2816, 2813, 1, 0, 0, 0, 2816, 2814, 1, 0, 0, 0, 2816, 2815, 1, 0, 0, - 0, 2817, 2819, 1, 0, 0, 0, 2818, 2812, 1, 0, 0, 0, 2818, 2819, 1, 0, 0, - 0, 2819, 2825, 1, 0, 0, 0, 2820, 2822, 5, 497, 0, 0, 2821, 2823, 3, 262, - 131, 0, 2822, 2821, 1, 0, 0, 0, 2822, 2823, 1, 0, 0, 0, 2823, 2824, 1, - 0, 0, 0, 2824, 2826, 5, 498, 0, 0, 2825, 2820, 1, 0, 0, 0, 2825, 2826, - 1, 0, 0, 0, 2826, 2833, 1, 0, 0, 0, 2827, 2828, 5, 352, 0, 0, 2828, 2830, - 5, 497, 0, 0, 2829, 2831, 3, 262, 131, 0, 2830, 2829, 1, 0, 0, 0, 2830, - 2831, 1, 0, 0, 0, 2831, 2832, 1, 0, 0, 0, 2832, 2834, 5, 498, 0, 0, 2833, - 2827, 1, 0, 0, 0, 2833, 2834, 1, 0, 0, 0, 2834, 2836, 1, 0, 0, 0, 2835, - 2837, 3, 226, 113, 0, 2836, 2835, 1, 0, 0, 0, 2836, 2837, 1, 0, 0, 0, 2837, - 259, 1, 0, 0, 0, 2838, 2839, 5, 514, 0, 0, 2839, 2841, 5, 484, 0, 0, 2840, - 2838, 1, 0, 0, 0, 2840, 2841, 1, 0, 0, 0, 2841, 2842, 1, 0, 0, 0, 2842, - 2843, 5, 113, 0, 0, 2843, 2844, 5, 26, 0, 0, 2844, 2845, 5, 116, 0, 0, - 2845, 2846, 3, 708, 354, 0, 2846, 2848, 5, 497, 0, 0, 2847, 2849, 3, 262, - 131, 0, 2848, 2847, 1, 0, 0, 0, 2848, 2849, 1, 0, 0, 0, 2849, 2850, 1, - 0, 0, 0, 2850, 2852, 5, 498, 0, 0, 2851, 2853, 3, 226, 113, 0, 2852, 2851, - 1, 0, 0, 0, 2852, 2853, 1, 0, 0, 0, 2853, 261, 1, 0, 0, 0, 2854, 2859, - 3, 264, 132, 0, 2855, 2856, 5, 495, 0, 0, 2856, 2858, 3, 264, 132, 0, 2857, - 2855, 1, 0, 0, 0, 2858, 2861, 1, 0, 0, 0, 2859, 2857, 1, 0, 0, 0, 2859, - 2860, 1, 0, 0, 0, 2860, 263, 1, 0, 0, 0, 2861, 2859, 1, 0, 0, 0, 2862, - 2865, 5, 514, 0, 0, 2863, 2865, 3, 194, 97, 0, 2864, 2862, 1, 0, 0, 0, - 2864, 2863, 1, 0, 0, 0, 2865, 2866, 1, 0, 0, 0, 2866, 2867, 5, 484, 0, - 0, 2867, 2868, 3, 668, 334, 0, 2868, 265, 1, 0, 0, 0, 2869, 2870, 5, 65, - 0, 0, 2870, 2871, 5, 33, 0, 0, 2871, 2877, 3, 708, 354, 0, 2872, 2874, - 5, 497, 0, 0, 2873, 2875, 3, 268, 134, 0, 2874, 2873, 1, 0, 0, 0, 2874, - 2875, 1, 0, 0, 0, 2875, 2876, 1, 0, 0, 0, 2876, 2878, 5, 498, 0, 0, 2877, - 2872, 1, 0, 0, 0, 2877, 2878, 1, 0, 0, 0, 2878, 2881, 1, 0, 0, 0, 2879, - 2880, 5, 426, 0, 0, 2880, 2882, 5, 514, 0, 0, 2881, 2879, 1, 0, 0, 0, 2881, - 2882, 1, 0, 0, 0, 2882, 2885, 1, 0, 0, 0, 2883, 2884, 5, 139, 0, 0, 2884, - 2886, 3, 322, 161, 0, 2885, 2883, 1, 0, 0, 0, 2885, 2886, 1, 0, 0, 0, 2886, - 267, 1, 0, 0, 0, 2887, 2892, 3, 270, 135, 0, 2888, 2889, 5, 495, 0, 0, - 2889, 2891, 3, 270, 135, 0, 2890, 2888, 1, 0, 0, 0, 2891, 2894, 1, 0, 0, - 0, 2892, 2890, 1, 0, 0, 0, 2892, 2893, 1, 0, 0, 0, 2893, 269, 1, 0, 0, - 0, 2894, 2892, 1, 0, 0, 0, 2895, 2896, 5, 514, 0, 0, 2896, 2899, 5, 484, - 0, 0, 2897, 2900, 5, 514, 0, 0, 2898, 2900, 3, 668, 334, 0, 2899, 2897, - 1, 0, 0, 0, 2899, 2898, 1, 0, 0, 0, 2900, 2906, 1, 0, 0, 0, 2901, 2902, - 3, 710, 355, 0, 2902, 2903, 5, 503, 0, 0, 2903, 2904, 3, 668, 334, 0, 2904, - 2906, 1, 0, 0, 0, 2905, 2895, 1, 0, 0, 0, 2905, 2901, 1, 0, 0, 0, 2906, - 271, 1, 0, 0, 0, 2907, 2908, 5, 118, 0, 0, 2908, 2909, 5, 33, 0, 0, 2909, - 273, 1, 0, 0, 0, 2910, 2911, 5, 65, 0, 0, 2911, 2912, 5, 374, 0, 0, 2912, - 2913, 5, 33, 0, 0, 2913, 275, 1, 0, 0, 0, 2914, 2915, 5, 65, 0, 0, 2915, - 2916, 5, 402, 0, 0, 2916, 2919, 3, 668, 334, 0, 2917, 2918, 5, 416, 0, - 0, 2918, 2920, 3, 710, 355, 0, 2919, 2917, 1, 0, 0, 0, 2919, 2920, 1, 0, - 0, 0, 2920, 2926, 1, 0, 0, 0, 2921, 2922, 5, 142, 0, 0, 2922, 2923, 5, - 501, 0, 0, 2923, 2924, 3, 706, 353, 0, 2924, 2925, 5, 502, 0, 0, 2925, - 2927, 1, 0, 0, 0, 2926, 2921, 1, 0, 0, 0, 2926, 2927, 1, 0, 0, 0, 2927, - 277, 1, 0, 0, 0, 2928, 2929, 5, 111, 0, 0, 2929, 2930, 3, 668, 334, 0, - 2930, 279, 1, 0, 0, 0, 2931, 2932, 5, 298, 0, 0, 2932, 2933, 5, 299, 0, - 0, 2933, 2934, 3, 214, 107, 0, 2934, 2935, 5, 402, 0, 0, 2935, 2941, 3, - 668, 334, 0, 2936, 2937, 5, 142, 0, 0, 2937, 2938, 5, 501, 0, 0, 2938, - 2939, 3, 706, 353, 0, 2939, 2940, 5, 502, 0, 0, 2940, 2942, 1, 0, 0, 0, - 2941, 2936, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 281, 1, 0, 0, 0, - 2943, 2944, 5, 514, 0, 0, 2944, 2946, 5, 484, 0, 0, 2945, 2943, 1, 0, 0, - 0, 2945, 2946, 1, 0, 0, 0, 2946, 2947, 1, 0, 0, 0, 2947, 2948, 5, 311, - 0, 0, 2948, 2949, 5, 113, 0, 0, 2949, 2950, 3, 284, 142, 0, 2950, 2952, - 3, 286, 143, 0, 2951, 2953, 3, 288, 144, 0, 2952, 2951, 1, 0, 0, 0, 2952, - 2953, 1, 0, 0, 0, 2953, 2957, 1, 0, 0, 0, 2954, 2956, 3, 290, 145, 0, 2955, - 2954, 1, 0, 0, 0, 2956, 2959, 1, 0, 0, 0, 2957, 2955, 1, 0, 0, 0, 2957, - 2958, 1, 0, 0, 0, 2958, 2961, 1, 0, 0, 0, 2959, 2957, 1, 0, 0, 0, 2960, - 2962, 3, 292, 146, 0, 2961, 2960, 1, 0, 0, 0, 2961, 2962, 1, 0, 0, 0, 2962, - 2964, 1, 0, 0, 0, 2963, 2965, 3, 294, 147, 0, 2964, 2963, 1, 0, 0, 0, 2964, - 2965, 1, 0, 0, 0, 2965, 2967, 1, 0, 0, 0, 2966, 2968, 3, 296, 148, 0, 2967, - 2966, 1, 0, 0, 0, 2967, 2968, 1, 0, 0, 0, 2968, 2969, 1, 0, 0, 0, 2969, - 2971, 3, 298, 149, 0, 2970, 2972, 3, 226, 113, 0, 2971, 2970, 1, 0, 0, - 0, 2971, 2972, 1, 0, 0, 0, 2972, 283, 1, 0, 0, 0, 2973, 2974, 7, 13, 0, - 0, 2974, 285, 1, 0, 0, 0, 2975, 2978, 5, 511, 0, 0, 2976, 2978, 3, 668, - 334, 0, 2977, 2975, 1, 0, 0, 0, 2977, 2976, 1, 0, 0, 0, 2978, 287, 1, 0, - 0, 0, 2979, 2980, 3, 246, 123, 0, 2980, 289, 1, 0, 0, 0, 2981, 2982, 5, - 195, 0, 0, 2982, 2983, 7, 14, 0, 0, 2983, 2984, 5, 484, 0, 0, 2984, 2985, - 3, 668, 334, 0, 2985, 291, 1, 0, 0, 0, 2986, 2987, 5, 316, 0, 0, 2987, - 2988, 5, 318, 0, 0, 2988, 2989, 3, 668, 334, 0, 2989, 2990, 5, 351, 0, - 0, 2990, 2991, 3, 668, 334, 0, 2991, 293, 1, 0, 0, 0, 2992, 2993, 5, 325, - 0, 0, 2993, 2995, 5, 511, 0, 0, 2994, 2996, 3, 246, 123, 0, 2995, 2994, - 1, 0, 0, 0, 2995, 2996, 1, 0, 0, 0, 2996, 3009, 1, 0, 0, 0, 2997, 2998, - 5, 325, 0, 0, 2998, 3000, 3, 668, 334, 0, 2999, 3001, 3, 246, 123, 0, 3000, - 2999, 1, 0, 0, 0, 3000, 3001, 1, 0, 0, 0, 3001, 3009, 1, 0, 0, 0, 3002, - 3003, 5, 325, 0, 0, 3003, 3004, 5, 356, 0, 0, 3004, 3005, 3, 708, 354, - 0, 3005, 3006, 5, 71, 0, 0, 3006, 3007, 5, 514, 0, 0, 3007, 3009, 1, 0, - 0, 0, 3008, 2992, 1, 0, 0, 0, 3008, 2997, 1, 0, 0, 0, 3008, 3002, 1, 0, - 0, 0, 3009, 295, 1, 0, 0, 0, 3010, 3011, 5, 324, 0, 0, 3011, 3012, 3, 668, - 334, 0, 3012, 297, 1, 0, 0, 0, 3013, 3014, 5, 77, 0, 0, 3014, 3028, 5, - 262, 0, 0, 3015, 3016, 5, 77, 0, 0, 3016, 3028, 5, 326, 0, 0, 3017, 3018, - 5, 77, 0, 0, 3018, 3019, 5, 356, 0, 0, 3019, 3020, 3, 708, 354, 0, 3020, - 3021, 5, 76, 0, 0, 3021, 3022, 3, 708, 354, 0, 3022, 3028, 1, 0, 0, 0, - 3023, 3024, 5, 77, 0, 0, 3024, 3028, 5, 421, 0, 0, 3025, 3026, 5, 77, 0, - 0, 3026, 3028, 5, 319, 0, 0, 3027, 3013, 1, 0, 0, 0, 3027, 3015, 1, 0, - 0, 0, 3027, 3017, 1, 0, 0, 0, 3027, 3023, 1, 0, 0, 0, 3027, 3025, 1, 0, - 0, 0, 3028, 299, 1, 0, 0, 0, 3029, 3030, 5, 514, 0, 0, 3030, 3032, 5, 484, - 0, 0, 3031, 3029, 1, 0, 0, 0, 3031, 3032, 1, 0, 0, 0, 3032, 3033, 1, 0, - 0, 0, 3033, 3034, 5, 328, 0, 0, 3034, 3035, 5, 311, 0, 0, 3035, 3036, 5, - 327, 0, 0, 3036, 3038, 3, 708, 354, 0, 3037, 3039, 3, 302, 151, 0, 3038, - 3037, 1, 0, 0, 0, 3038, 3039, 1, 0, 0, 0, 3039, 3041, 1, 0, 0, 0, 3040, - 3042, 3, 226, 113, 0, 3041, 3040, 1, 0, 0, 0, 3041, 3042, 1, 0, 0, 0, 3042, - 301, 1, 0, 0, 0, 3043, 3044, 5, 325, 0, 0, 3044, 3045, 5, 514, 0, 0, 3045, - 303, 1, 0, 0, 0, 3046, 3047, 5, 514, 0, 0, 3047, 3048, 5, 484, 0, 0, 3048, - 3049, 3, 306, 153, 0, 3049, 305, 1, 0, 0, 0, 3050, 3051, 5, 121, 0, 0, - 3051, 3052, 5, 497, 0, 0, 3052, 3053, 5, 514, 0, 0, 3053, 3110, 5, 498, - 0, 0, 3054, 3055, 5, 122, 0, 0, 3055, 3056, 5, 497, 0, 0, 3056, 3057, 5, - 514, 0, 0, 3057, 3110, 5, 498, 0, 0, 3058, 3059, 5, 123, 0, 0, 3059, 3060, - 5, 497, 0, 0, 3060, 3061, 5, 514, 0, 0, 3061, 3062, 5, 495, 0, 0, 3062, - 3063, 3, 668, 334, 0, 3063, 3064, 5, 498, 0, 0, 3064, 3110, 1, 0, 0, 0, - 3065, 3066, 5, 185, 0, 0, 3066, 3067, 5, 497, 0, 0, 3067, 3068, 5, 514, - 0, 0, 3068, 3069, 5, 495, 0, 0, 3069, 3070, 3, 668, 334, 0, 3070, 3071, - 5, 498, 0, 0, 3071, 3110, 1, 0, 0, 0, 3072, 3073, 5, 124, 0, 0, 3073, 3074, - 5, 497, 0, 0, 3074, 3075, 5, 514, 0, 0, 3075, 3076, 5, 495, 0, 0, 3076, - 3077, 3, 308, 154, 0, 3077, 3078, 5, 498, 0, 0, 3078, 3110, 1, 0, 0, 0, - 3079, 3080, 5, 125, 0, 0, 3080, 3081, 5, 497, 0, 0, 3081, 3082, 5, 514, - 0, 0, 3082, 3083, 5, 495, 0, 0, 3083, 3084, 5, 514, 0, 0, 3084, 3110, 5, - 498, 0, 0, 3085, 3086, 5, 126, 0, 0, 3086, 3087, 5, 497, 0, 0, 3087, 3088, - 5, 514, 0, 0, 3088, 3089, 5, 495, 0, 0, 3089, 3090, 5, 514, 0, 0, 3090, - 3110, 5, 498, 0, 0, 3091, 3092, 5, 127, 0, 0, 3092, 3093, 5, 497, 0, 0, - 3093, 3094, 5, 514, 0, 0, 3094, 3095, 5, 495, 0, 0, 3095, 3096, 5, 514, - 0, 0, 3096, 3110, 5, 498, 0, 0, 3097, 3098, 5, 128, 0, 0, 3098, 3099, 5, - 497, 0, 0, 3099, 3100, 5, 514, 0, 0, 3100, 3101, 5, 495, 0, 0, 3101, 3102, - 5, 514, 0, 0, 3102, 3110, 5, 498, 0, 0, 3103, 3104, 5, 134, 0, 0, 3104, - 3105, 5, 497, 0, 0, 3105, 3106, 5, 514, 0, 0, 3106, 3107, 5, 495, 0, 0, - 3107, 3108, 5, 514, 0, 0, 3108, 3110, 5, 498, 0, 0, 3109, 3050, 1, 0, 0, - 0, 3109, 3054, 1, 0, 0, 0, 3109, 3058, 1, 0, 0, 0, 3109, 3065, 1, 0, 0, - 0, 3109, 3072, 1, 0, 0, 0, 3109, 3079, 1, 0, 0, 0, 3109, 3085, 1, 0, 0, - 0, 3109, 3091, 1, 0, 0, 0, 3109, 3097, 1, 0, 0, 0, 3109, 3103, 1, 0, 0, - 0, 3110, 307, 1, 0, 0, 0, 3111, 3116, 3, 310, 155, 0, 3112, 3113, 5, 495, - 0, 0, 3113, 3115, 3, 310, 155, 0, 3114, 3112, 1, 0, 0, 0, 3115, 3118, 1, - 0, 0, 0, 3116, 3114, 1, 0, 0, 0, 3116, 3117, 1, 0, 0, 0, 3117, 309, 1, - 0, 0, 0, 3118, 3116, 1, 0, 0, 0, 3119, 3121, 5, 515, 0, 0, 3120, 3122, - 7, 6, 0, 0, 3121, 3120, 1, 0, 0, 0, 3121, 3122, 1, 0, 0, 0, 3122, 311, - 1, 0, 0, 0, 3123, 3124, 5, 514, 0, 0, 3124, 3125, 5, 484, 0, 0, 3125, 3126, - 3, 314, 157, 0, 3126, 313, 1, 0, 0, 0, 3127, 3128, 5, 276, 0, 0, 3128, - 3129, 5, 497, 0, 0, 3129, 3130, 5, 514, 0, 0, 3130, 3152, 5, 498, 0, 0, - 3131, 3132, 5, 277, 0, 0, 3132, 3133, 5, 497, 0, 0, 3133, 3134, 3, 214, - 107, 0, 3134, 3135, 5, 498, 0, 0, 3135, 3152, 1, 0, 0, 0, 3136, 3137, 5, - 129, 0, 0, 3137, 3138, 5, 497, 0, 0, 3138, 3139, 3, 214, 107, 0, 3139, - 3140, 5, 498, 0, 0, 3140, 3152, 1, 0, 0, 0, 3141, 3142, 5, 130, 0, 0, 3142, - 3143, 5, 497, 0, 0, 3143, 3144, 3, 214, 107, 0, 3144, 3145, 5, 498, 0, - 0, 3145, 3152, 1, 0, 0, 0, 3146, 3147, 5, 131, 0, 0, 3147, 3148, 5, 497, - 0, 0, 3148, 3149, 3, 214, 107, 0, 3149, 3150, 5, 498, 0, 0, 3150, 3152, - 1, 0, 0, 0, 3151, 3127, 1, 0, 0, 0, 3151, 3131, 1, 0, 0, 0, 3151, 3136, - 1, 0, 0, 0, 3151, 3141, 1, 0, 0, 0, 3151, 3146, 1, 0, 0, 0, 3152, 315, - 1, 0, 0, 0, 3153, 3154, 5, 514, 0, 0, 3154, 3155, 5, 484, 0, 0, 3155, 3156, - 5, 17, 0, 0, 3156, 3157, 5, 13, 0, 0, 3157, 3158, 3, 708, 354, 0, 3158, - 317, 1, 0, 0, 0, 3159, 3160, 5, 47, 0, 0, 3160, 3161, 5, 514, 0, 0, 3161, - 3162, 5, 423, 0, 0, 3162, 3163, 5, 514, 0, 0, 3163, 319, 1, 0, 0, 0, 3164, - 3165, 5, 133, 0, 0, 3165, 3166, 5, 514, 0, 0, 3166, 3167, 5, 71, 0, 0, - 3167, 3168, 5, 514, 0, 0, 3168, 321, 1, 0, 0, 0, 3169, 3174, 3, 324, 162, - 0, 3170, 3171, 5, 495, 0, 0, 3171, 3173, 3, 324, 162, 0, 3172, 3170, 1, - 0, 0, 0, 3173, 3176, 1, 0, 0, 0, 3174, 3172, 1, 0, 0, 0, 3174, 3175, 1, - 0, 0, 0, 3175, 323, 1, 0, 0, 0, 3176, 3174, 1, 0, 0, 0, 3177, 3178, 3, - 326, 163, 0, 3178, 3179, 5, 484, 0, 0, 3179, 3180, 3, 668, 334, 0, 3180, - 325, 1, 0, 0, 0, 3181, 3186, 3, 708, 354, 0, 3182, 3186, 5, 515, 0, 0, - 3183, 3186, 5, 517, 0, 0, 3184, 3186, 3, 730, 365, 0, 3185, 3181, 1, 0, - 0, 0, 3185, 3182, 1, 0, 0, 0, 3185, 3183, 1, 0, 0, 0, 3185, 3184, 1, 0, - 0, 0, 3186, 327, 1, 0, 0, 0, 3187, 3192, 3, 330, 165, 0, 3188, 3189, 5, - 495, 0, 0, 3189, 3191, 3, 330, 165, 0, 3190, 3188, 1, 0, 0, 0, 3191, 3194, - 1, 0, 0, 0, 3192, 3190, 1, 0, 0, 0, 3192, 3193, 1, 0, 0, 0, 3193, 329, - 1, 0, 0, 0, 3194, 3192, 1, 0, 0, 0, 3195, 3196, 5, 515, 0, 0, 3196, 3197, - 5, 484, 0, 0, 3197, 3198, 3, 668, 334, 0, 3198, 331, 1, 0, 0, 0, 3199, - 3200, 5, 33, 0, 0, 3200, 3201, 3, 708, 354, 0, 3201, 3202, 3, 382, 191, - 0, 3202, 3203, 5, 499, 0, 0, 3203, 3204, 3, 390, 195, 0, 3204, 3205, 5, - 500, 0, 0, 3205, 333, 1, 0, 0, 0, 3206, 3207, 5, 34, 0, 0, 3207, 3209, - 3, 708, 354, 0, 3208, 3210, 3, 386, 193, 0, 3209, 3208, 1, 0, 0, 0, 3209, - 3210, 1, 0, 0, 0, 3210, 3212, 1, 0, 0, 0, 3211, 3213, 3, 336, 168, 0, 3212, - 3211, 1, 0, 0, 0, 3212, 3213, 1, 0, 0, 0, 3213, 3214, 1, 0, 0, 0, 3214, - 3215, 5, 499, 0, 0, 3215, 3216, 3, 390, 195, 0, 3216, 3217, 5, 500, 0, - 0, 3217, 335, 1, 0, 0, 0, 3218, 3220, 3, 338, 169, 0, 3219, 3218, 1, 0, - 0, 0, 3220, 3221, 1, 0, 0, 0, 3221, 3219, 1, 0, 0, 0, 3221, 3222, 1, 0, - 0, 0, 3222, 337, 1, 0, 0, 0, 3223, 3224, 5, 219, 0, 0, 3224, 3225, 5, 511, - 0, 0, 3225, 339, 1, 0, 0, 0, 3226, 3231, 3, 342, 171, 0, 3227, 3228, 5, - 495, 0, 0, 3228, 3230, 3, 342, 171, 0, 3229, 3227, 1, 0, 0, 0, 3230, 3233, - 1, 0, 0, 0, 3231, 3229, 1, 0, 0, 0, 3231, 3232, 1, 0, 0, 0, 3232, 341, - 1, 0, 0, 0, 3233, 3231, 1, 0, 0, 0, 3234, 3235, 7, 15, 0, 0, 3235, 3236, - 5, 503, 0, 0, 3236, 3237, 3, 108, 54, 0, 3237, 343, 1, 0, 0, 0, 3238, 3243, - 3, 346, 173, 0, 3239, 3240, 5, 495, 0, 0, 3240, 3242, 3, 346, 173, 0, 3241, - 3239, 1, 0, 0, 0, 3242, 3245, 1, 0, 0, 0, 3243, 3241, 1, 0, 0, 0, 3243, - 3244, 1, 0, 0, 0, 3244, 345, 1, 0, 0, 0, 3245, 3243, 1, 0, 0, 0, 3246, - 3247, 7, 15, 0, 0, 3247, 3248, 5, 503, 0, 0, 3248, 3249, 3, 108, 54, 0, - 3249, 347, 1, 0, 0, 0, 3250, 3255, 3, 350, 175, 0, 3251, 3252, 5, 495, - 0, 0, 3252, 3254, 3, 350, 175, 0, 3253, 3251, 1, 0, 0, 0, 3254, 3257, 1, - 0, 0, 0, 3255, 3253, 1, 0, 0, 0, 3255, 3256, 1, 0, 0, 0, 3256, 349, 1, - 0, 0, 0, 3257, 3255, 1, 0, 0, 0, 3258, 3259, 5, 514, 0, 0, 3259, 3260, - 5, 503, 0, 0, 3260, 3261, 3, 108, 54, 0, 3261, 3262, 5, 484, 0, 0, 3262, - 3263, 5, 511, 0, 0, 3263, 351, 1, 0, 0, 0, 3264, 3267, 3, 708, 354, 0, - 3265, 3267, 5, 515, 0, 0, 3266, 3264, 1, 0, 0, 0, 3266, 3265, 1, 0, 0, - 0, 3267, 3269, 1, 0, 0, 0, 3268, 3270, 7, 6, 0, 0, 3269, 3268, 1, 0, 0, - 0, 3269, 3270, 1, 0, 0, 0, 3270, 353, 1, 0, 0, 0, 3271, 3272, 5, 501, 0, - 0, 3272, 3273, 3, 358, 179, 0, 3273, 3274, 5, 502, 0, 0, 3274, 355, 1, - 0, 0, 0, 3275, 3276, 7, 16, 0, 0, 3276, 357, 1, 0, 0, 0, 3277, 3282, 3, - 360, 180, 0, 3278, 3279, 5, 286, 0, 0, 3279, 3281, 3, 360, 180, 0, 3280, - 3278, 1, 0, 0, 0, 3281, 3284, 1, 0, 0, 0, 3282, 3280, 1, 0, 0, 0, 3282, - 3283, 1, 0, 0, 0, 3283, 359, 1, 0, 0, 0, 3284, 3282, 1, 0, 0, 0, 3285, - 3290, 3, 362, 181, 0, 3286, 3287, 5, 285, 0, 0, 3287, 3289, 3, 362, 181, - 0, 3288, 3286, 1, 0, 0, 0, 3289, 3292, 1, 0, 0, 0, 3290, 3288, 1, 0, 0, - 0, 3290, 3291, 1, 0, 0, 0, 3291, 361, 1, 0, 0, 0, 3292, 3290, 1, 0, 0, - 0, 3293, 3294, 5, 287, 0, 0, 3294, 3297, 3, 362, 181, 0, 3295, 3297, 3, - 364, 182, 0, 3296, 3293, 1, 0, 0, 0, 3296, 3295, 1, 0, 0, 0, 3297, 363, - 1, 0, 0, 0, 3298, 3302, 3, 366, 183, 0, 3299, 3300, 3, 678, 339, 0, 3300, - 3301, 3, 366, 183, 0, 3301, 3303, 1, 0, 0, 0, 3302, 3299, 1, 0, 0, 0, 3302, - 3303, 1, 0, 0, 0, 3303, 365, 1, 0, 0, 0, 3304, 3311, 3, 378, 189, 0, 3305, - 3311, 3, 368, 184, 0, 3306, 3307, 5, 497, 0, 0, 3307, 3308, 3, 358, 179, - 0, 3308, 3309, 5, 498, 0, 0, 3309, 3311, 1, 0, 0, 0, 3310, 3304, 1, 0, - 0, 0, 3310, 3305, 1, 0, 0, 0, 3310, 3306, 1, 0, 0, 0, 3311, 367, 1, 0, - 0, 0, 3312, 3317, 3, 370, 185, 0, 3313, 3314, 5, 490, 0, 0, 3314, 3316, - 3, 370, 185, 0, 3315, 3313, 1, 0, 0, 0, 3316, 3319, 1, 0, 0, 0, 3317, 3315, - 1, 0, 0, 0, 3317, 3318, 1, 0, 0, 0, 3318, 369, 1, 0, 0, 0, 3319, 3317, - 1, 0, 0, 0, 3320, 3325, 3, 372, 186, 0, 3321, 3322, 5, 501, 0, 0, 3322, - 3323, 3, 358, 179, 0, 3323, 3324, 5, 502, 0, 0, 3324, 3326, 1, 0, 0, 0, - 3325, 3321, 1, 0, 0, 0, 3325, 3326, 1, 0, 0, 0, 3326, 371, 1, 0, 0, 0, - 3327, 3333, 3, 374, 187, 0, 3328, 3333, 5, 514, 0, 0, 3329, 3333, 5, 511, - 0, 0, 3330, 3333, 5, 513, 0, 0, 3331, 3333, 5, 510, 0, 0, 3332, 3327, 1, - 0, 0, 0, 3332, 3328, 1, 0, 0, 0, 3332, 3329, 1, 0, 0, 0, 3332, 3330, 1, - 0, 0, 0, 3332, 3331, 1, 0, 0, 0, 3333, 373, 1, 0, 0, 0, 3334, 3339, 3, - 376, 188, 0, 3335, 3336, 5, 496, 0, 0, 3336, 3338, 3, 376, 188, 0, 3337, - 3335, 1, 0, 0, 0, 3338, 3341, 1, 0, 0, 0, 3339, 3337, 1, 0, 0, 0, 3339, - 3340, 1, 0, 0, 0, 3340, 375, 1, 0, 0, 0, 3341, 3339, 1, 0, 0, 0, 3342, - 3343, 8, 17, 0, 0, 3343, 377, 1, 0, 0, 0, 3344, 3345, 3, 380, 190, 0, 3345, - 3354, 5, 497, 0, 0, 3346, 3351, 3, 358, 179, 0, 3347, 3348, 5, 495, 0, - 0, 3348, 3350, 3, 358, 179, 0, 3349, 3347, 1, 0, 0, 0, 3350, 3353, 1, 0, - 0, 0, 3351, 3349, 1, 0, 0, 0, 3351, 3352, 1, 0, 0, 0, 3352, 3355, 1, 0, - 0, 0, 3353, 3351, 1, 0, 0, 0, 3354, 3346, 1, 0, 0, 0, 3354, 3355, 1, 0, - 0, 0, 3355, 3356, 1, 0, 0, 0, 3356, 3357, 5, 498, 0, 0, 3357, 379, 1, 0, - 0, 0, 3358, 3359, 7, 18, 0, 0, 3359, 381, 1, 0, 0, 0, 3360, 3361, 5, 497, - 0, 0, 3361, 3366, 3, 384, 192, 0, 3362, 3363, 5, 495, 0, 0, 3363, 3365, - 3, 384, 192, 0, 3364, 3362, 1, 0, 0, 0, 3365, 3368, 1, 0, 0, 0, 3366, 3364, - 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3369, 1, 0, 0, 0, 3368, 3366, - 1, 0, 0, 0, 3369, 3370, 5, 498, 0, 0, 3370, 383, 1, 0, 0, 0, 3371, 3372, - 5, 202, 0, 0, 3372, 3373, 5, 503, 0, 0, 3373, 3374, 5, 499, 0, 0, 3374, - 3375, 3, 340, 170, 0, 3375, 3376, 5, 500, 0, 0, 3376, 3399, 1, 0, 0, 0, - 3377, 3378, 5, 203, 0, 0, 3378, 3379, 5, 503, 0, 0, 3379, 3380, 5, 499, - 0, 0, 3380, 3381, 3, 348, 174, 0, 3381, 3382, 5, 500, 0, 0, 3382, 3399, - 1, 0, 0, 0, 3383, 3384, 5, 164, 0, 0, 3384, 3385, 5, 503, 0, 0, 3385, 3399, - 5, 511, 0, 0, 3386, 3387, 5, 35, 0, 0, 3387, 3390, 5, 503, 0, 0, 3388, - 3391, 3, 708, 354, 0, 3389, 3391, 5, 511, 0, 0, 3390, 3388, 1, 0, 0, 0, - 3390, 3389, 1, 0, 0, 0, 3391, 3399, 1, 0, 0, 0, 3392, 3393, 5, 218, 0, - 0, 3393, 3394, 5, 503, 0, 0, 3394, 3399, 5, 511, 0, 0, 3395, 3396, 5, 219, - 0, 0, 3396, 3397, 5, 503, 0, 0, 3397, 3399, 5, 511, 0, 0, 3398, 3371, 1, - 0, 0, 0, 3398, 3377, 1, 0, 0, 0, 3398, 3383, 1, 0, 0, 0, 3398, 3386, 1, - 0, 0, 0, 3398, 3392, 1, 0, 0, 0, 3398, 3395, 1, 0, 0, 0, 3399, 385, 1, - 0, 0, 0, 3400, 3401, 5, 497, 0, 0, 3401, 3406, 3, 388, 194, 0, 3402, 3403, - 5, 495, 0, 0, 3403, 3405, 3, 388, 194, 0, 3404, 3402, 1, 0, 0, 0, 3405, - 3408, 1, 0, 0, 0, 3406, 3404, 1, 0, 0, 0, 3406, 3407, 1, 0, 0, 0, 3407, - 3409, 1, 0, 0, 0, 3408, 3406, 1, 0, 0, 0, 3409, 3410, 5, 498, 0, 0, 3410, - 387, 1, 0, 0, 0, 3411, 3412, 5, 202, 0, 0, 3412, 3413, 5, 503, 0, 0, 3413, - 3414, 5, 499, 0, 0, 3414, 3415, 3, 344, 172, 0, 3415, 3416, 5, 500, 0, - 0, 3416, 3427, 1, 0, 0, 0, 3417, 3418, 5, 203, 0, 0, 3418, 3419, 5, 503, - 0, 0, 3419, 3420, 5, 499, 0, 0, 3420, 3421, 3, 348, 174, 0, 3421, 3422, - 5, 500, 0, 0, 3422, 3427, 1, 0, 0, 0, 3423, 3424, 5, 219, 0, 0, 3424, 3425, - 5, 503, 0, 0, 3425, 3427, 5, 511, 0, 0, 3426, 3411, 1, 0, 0, 0, 3426, 3417, - 1, 0, 0, 0, 3426, 3423, 1, 0, 0, 0, 3427, 389, 1, 0, 0, 0, 3428, 3431, - 3, 394, 197, 0, 3429, 3431, 3, 392, 196, 0, 3430, 3428, 1, 0, 0, 0, 3430, - 3429, 1, 0, 0, 0, 3431, 3434, 1, 0, 0, 0, 3432, 3430, 1, 0, 0, 0, 3432, - 3433, 1, 0, 0, 0, 3433, 391, 1, 0, 0, 0, 3434, 3432, 1, 0, 0, 0, 3435, - 3436, 5, 67, 0, 0, 3436, 3437, 5, 387, 0, 0, 3437, 3440, 3, 710, 355, 0, - 3438, 3439, 5, 76, 0, 0, 3439, 3441, 3, 710, 355, 0, 3440, 3438, 1, 0, - 0, 0, 3440, 3441, 1, 0, 0, 0, 3441, 393, 1, 0, 0, 0, 3442, 3443, 3, 396, - 198, 0, 3443, 3445, 5, 515, 0, 0, 3444, 3446, 3, 398, 199, 0, 3445, 3444, - 1, 0, 0, 0, 3445, 3446, 1, 0, 0, 0, 3446, 3448, 1, 0, 0, 0, 3447, 3449, - 3, 436, 218, 0, 3448, 3447, 1, 0, 0, 0, 3448, 3449, 1, 0, 0, 0, 3449, 395, - 1, 0, 0, 0, 3450, 3451, 7, 19, 0, 0, 3451, 397, 1, 0, 0, 0, 3452, 3453, - 5, 497, 0, 0, 3453, 3458, 3, 400, 200, 0, 3454, 3455, 5, 495, 0, 0, 3455, - 3457, 3, 400, 200, 0, 3456, 3454, 1, 0, 0, 0, 3457, 3460, 1, 0, 0, 0, 3458, - 3456, 1, 0, 0, 0, 3458, 3459, 1, 0, 0, 0, 3459, 3461, 1, 0, 0, 0, 3460, - 3458, 1, 0, 0, 0, 3461, 3462, 5, 498, 0, 0, 3462, 399, 1, 0, 0, 0, 3463, - 3464, 5, 191, 0, 0, 3464, 3465, 5, 503, 0, 0, 3465, 3554, 3, 406, 203, - 0, 3466, 3467, 5, 38, 0, 0, 3467, 3468, 5, 503, 0, 0, 3468, 3554, 3, 414, - 207, 0, 3469, 3470, 5, 198, 0, 0, 3470, 3471, 5, 503, 0, 0, 3471, 3554, - 3, 414, 207, 0, 3472, 3473, 5, 116, 0, 0, 3473, 3474, 5, 503, 0, 0, 3474, - 3554, 3, 408, 204, 0, 3475, 3476, 5, 188, 0, 0, 3476, 3477, 5, 503, 0, - 0, 3477, 3554, 3, 416, 208, 0, 3478, 3479, 5, 168, 0, 0, 3479, 3480, 5, - 503, 0, 0, 3480, 3554, 5, 511, 0, 0, 3481, 3482, 5, 199, 0, 0, 3482, 3483, - 5, 503, 0, 0, 3483, 3554, 3, 414, 207, 0, 3484, 3485, 5, 196, 0, 0, 3485, - 3486, 5, 503, 0, 0, 3486, 3554, 3, 416, 208, 0, 3487, 3488, 5, 197, 0, - 0, 3488, 3489, 5, 503, 0, 0, 3489, 3554, 3, 422, 211, 0, 3490, 3491, 5, - 200, 0, 0, 3491, 3492, 5, 503, 0, 0, 3492, 3554, 3, 418, 209, 0, 3493, - 3494, 5, 201, 0, 0, 3494, 3495, 5, 503, 0, 0, 3495, 3554, 3, 418, 209, - 0, 3496, 3497, 5, 209, 0, 0, 3497, 3498, 5, 503, 0, 0, 3498, 3554, 3, 424, - 212, 0, 3499, 3500, 5, 207, 0, 0, 3500, 3501, 5, 503, 0, 0, 3501, 3554, - 5, 511, 0, 0, 3502, 3503, 5, 208, 0, 0, 3503, 3504, 5, 503, 0, 0, 3504, - 3554, 5, 511, 0, 0, 3505, 3506, 5, 204, 0, 0, 3506, 3507, 5, 503, 0, 0, - 3507, 3554, 3, 426, 213, 0, 3508, 3509, 5, 205, 0, 0, 3509, 3510, 5, 503, - 0, 0, 3510, 3554, 3, 426, 213, 0, 3511, 3512, 5, 206, 0, 0, 3512, 3513, - 5, 503, 0, 0, 3513, 3554, 3, 426, 213, 0, 3514, 3515, 5, 193, 0, 0, 3515, - 3516, 5, 503, 0, 0, 3516, 3554, 3, 428, 214, 0, 3517, 3518, 5, 34, 0, 0, - 3518, 3519, 5, 503, 0, 0, 3519, 3554, 3, 708, 354, 0, 3520, 3521, 5, 224, - 0, 0, 3521, 3522, 5, 503, 0, 0, 3522, 3554, 3, 404, 202, 0, 3523, 3524, - 5, 225, 0, 0, 3524, 3525, 5, 503, 0, 0, 3525, 3554, 3, 402, 201, 0, 3526, - 3527, 5, 212, 0, 0, 3527, 3528, 5, 503, 0, 0, 3528, 3554, 3, 432, 216, - 0, 3529, 3530, 5, 215, 0, 0, 3530, 3531, 5, 503, 0, 0, 3531, 3554, 5, 513, - 0, 0, 3532, 3533, 5, 216, 0, 0, 3533, 3534, 5, 503, 0, 0, 3534, 3554, 5, - 513, 0, 0, 3535, 3536, 5, 232, 0, 0, 3536, 3537, 5, 503, 0, 0, 3537, 3554, - 3, 354, 177, 0, 3538, 3539, 5, 232, 0, 0, 3539, 3540, 5, 503, 0, 0, 3540, - 3554, 3, 430, 215, 0, 3541, 3542, 5, 222, 0, 0, 3542, 3543, 5, 503, 0, - 0, 3543, 3554, 3, 354, 177, 0, 3544, 3545, 5, 222, 0, 0, 3545, 3546, 5, - 503, 0, 0, 3546, 3554, 3, 430, 215, 0, 3547, 3548, 5, 190, 0, 0, 3548, - 3549, 5, 503, 0, 0, 3549, 3554, 3, 430, 215, 0, 3550, 3551, 5, 515, 0, - 0, 3551, 3552, 5, 503, 0, 0, 3552, 3554, 3, 430, 215, 0, 3553, 3463, 1, - 0, 0, 0, 3553, 3466, 1, 0, 0, 0, 3553, 3469, 1, 0, 0, 0, 3553, 3472, 1, - 0, 0, 0, 3553, 3475, 1, 0, 0, 0, 3553, 3478, 1, 0, 0, 0, 3553, 3481, 1, - 0, 0, 0, 3553, 3484, 1, 0, 0, 0, 3553, 3487, 1, 0, 0, 0, 3553, 3490, 1, - 0, 0, 0, 3553, 3493, 1, 0, 0, 0, 3553, 3496, 1, 0, 0, 0, 3553, 3499, 1, - 0, 0, 0, 3553, 3502, 1, 0, 0, 0, 3553, 3505, 1, 0, 0, 0, 3553, 3508, 1, - 0, 0, 0, 3553, 3511, 1, 0, 0, 0, 3553, 3514, 1, 0, 0, 0, 3553, 3517, 1, - 0, 0, 0, 3553, 3520, 1, 0, 0, 0, 3553, 3523, 1, 0, 0, 0, 3553, 3526, 1, - 0, 0, 0, 3553, 3529, 1, 0, 0, 0, 3553, 3532, 1, 0, 0, 0, 3553, 3535, 1, - 0, 0, 0, 3553, 3538, 1, 0, 0, 0, 3553, 3541, 1, 0, 0, 0, 3553, 3544, 1, - 0, 0, 0, 3553, 3547, 1, 0, 0, 0, 3553, 3550, 1, 0, 0, 0, 3554, 401, 1, - 0, 0, 0, 3555, 3556, 7, 20, 0, 0, 3556, 403, 1, 0, 0, 0, 3557, 3558, 5, - 501, 0, 0, 3558, 3563, 3, 708, 354, 0, 3559, 3560, 5, 495, 0, 0, 3560, - 3562, 3, 708, 354, 0, 3561, 3559, 1, 0, 0, 0, 3562, 3565, 1, 0, 0, 0, 3563, - 3561, 1, 0, 0, 0, 3563, 3564, 1, 0, 0, 0, 3564, 3566, 1, 0, 0, 0, 3565, - 3563, 1, 0, 0, 0, 3566, 3567, 5, 502, 0, 0, 3567, 405, 1, 0, 0, 0, 3568, - 3615, 5, 514, 0, 0, 3569, 3571, 5, 353, 0, 0, 3570, 3572, 5, 71, 0, 0, - 3571, 3570, 1, 0, 0, 0, 3571, 3572, 1, 0, 0, 0, 3572, 3573, 1, 0, 0, 0, - 3573, 3587, 3, 708, 354, 0, 3574, 3585, 5, 72, 0, 0, 3575, 3581, 3, 354, - 177, 0, 3576, 3577, 3, 356, 178, 0, 3577, 3578, 3, 354, 177, 0, 3578, 3580, - 1, 0, 0, 0, 3579, 3576, 1, 0, 0, 0, 3580, 3583, 1, 0, 0, 0, 3581, 3579, - 1, 0, 0, 0, 3581, 3582, 1, 0, 0, 0, 3582, 3586, 1, 0, 0, 0, 3583, 3581, - 1, 0, 0, 0, 3584, 3586, 3, 668, 334, 0, 3585, 3575, 1, 0, 0, 0, 3585, 3584, - 1, 0, 0, 0, 3586, 3588, 1, 0, 0, 0, 3587, 3574, 1, 0, 0, 0, 3587, 3588, - 1, 0, 0, 0, 3588, 3598, 1, 0, 0, 0, 3589, 3590, 5, 10, 0, 0, 3590, 3595, - 3, 352, 176, 0, 3591, 3592, 5, 495, 0, 0, 3592, 3594, 3, 352, 176, 0, 3593, - 3591, 1, 0, 0, 0, 3594, 3597, 1, 0, 0, 0, 3595, 3593, 1, 0, 0, 0, 3595, - 3596, 1, 0, 0, 0, 3596, 3599, 1, 0, 0, 0, 3597, 3595, 1, 0, 0, 0, 3598, - 3589, 1, 0, 0, 0, 3598, 3599, 1, 0, 0, 0, 3599, 3615, 1, 0, 0, 0, 3600, - 3601, 5, 30, 0, 0, 3601, 3603, 3, 708, 354, 0, 3602, 3604, 3, 410, 205, - 0, 3603, 3602, 1, 0, 0, 0, 3603, 3604, 1, 0, 0, 0, 3604, 3615, 1, 0, 0, - 0, 3605, 3606, 5, 31, 0, 0, 3606, 3608, 3, 708, 354, 0, 3607, 3609, 3, - 410, 205, 0, 3608, 3607, 1, 0, 0, 0, 3608, 3609, 1, 0, 0, 0, 3609, 3615, - 1, 0, 0, 0, 3610, 3611, 5, 27, 0, 0, 3611, 3615, 3, 414, 207, 0, 3612, - 3613, 5, 193, 0, 0, 3613, 3615, 5, 515, 0, 0, 3614, 3568, 1, 0, 0, 0, 3614, - 3569, 1, 0, 0, 0, 3614, 3600, 1, 0, 0, 0, 3614, 3605, 1, 0, 0, 0, 3614, - 3610, 1, 0, 0, 0, 3614, 3612, 1, 0, 0, 0, 3615, 407, 1, 0, 0, 0, 3616, - 3618, 5, 234, 0, 0, 3617, 3619, 5, 236, 0, 0, 3618, 3617, 1, 0, 0, 0, 3618, - 3619, 1, 0, 0, 0, 3619, 3655, 1, 0, 0, 0, 3620, 3622, 5, 235, 0, 0, 3621, - 3623, 5, 236, 0, 0, 3622, 3621, 1, 0, 0, 0, 3622, 3623, 1, 0, 0, 0, 3623, - 3655, 1, 0, 0, 0, 3624, 3655, 5, 236, 0, 0, 3625, 3655, 5, 239, 0, 0, 3626, - 3628, 5, 100, 0, 0, 3627, 3629, 5, 236, 0, 0, 3628, 3627, 1, 0, 0, 0, 3628, - 3629, 1, 0, 0, 0, 3629, 3655, 1, 0, 0, 0, 3630, 3631, 5, 240, 0, 0, 3631, - 3634, 3, 708, 354, 0, 3632, 3633, 5, 81, 0, 0, 3633, 3635, 3, 408, 204, - 0, 3634, 3632, 1, 0, 0, 0, 3634, 3635, 1, 0, 0, 0, 3635, 3655, 1, 0, 0, - 0, 3636, 3637, 5, 237, 0, 0, 3637, 3639, 3, 708, 354, 0, 3638, 3640, 3, - 410, 205, 0, 3639, 3638, 1, 0, 0, 0, 3639, 3640, 1, 0, 0, 0, 3640, 3655, - 1, 0, 0, 0, 3641, 3642, 5, 30, 0, 0, 3642, 3644, 3, 708, 354, 0, 3643, - 3645, 3, 410, 205, 0, 3644, 3643, 1, 0, 0, 0, 3644, 3645, 1, 0, 0, 0, 3645, - 3655, 1, 0, 0, 0, 3646, 3647, 5, 31, 0, 0, 3647, 3649, 3, 708, 354, 0, - 3648, 3650, 3, 410, 205, 0, 3649, 3648, 1, 0, 0, 0, 3649, 3650, 1, 0, 0, - 0, 3650, 3655, 1, 0, 0, 0, 3651, 3652, 5, 243, 0, 0, 3652, 3655, 5, 511, - 0, 0, 3653, 3655, 5, 244, 0, 0, 3654, 3616, 1, 0, 0, 0, 3654, 3620, 1, - 0, 0, 0, 3654, 3624, 1, 0, 0, 0, 3654, 3625, 1, 0, 0, 0, 3654, 3626, 1, - 0, 0, 0, 3654, 3630, 1, 0, 0, 0, 3654, 3636, 1, 0, 0, 0, 3654, 3641, 1, - 0, 0, 0, 3654, 3646, 1, 0, 0, 0, 3654, 3651, 1, 0, 0, 0, 3654, 3653, 1, - 0, 0, 0, 3655, 409, 1, 0, 0, 0, 3656, 3657, 5, 497, 0, 0, 3657, 3662, 3, - 412, 206, 0, 3658, 3659, 5, 495, 0, 0, 3659, 3661, 3, 412, 206, 0, 3660, - 3658, 1, 0, 0, 0, 3661, 3664, 1, 0, 0, 0, 3662, 3660, 1, 0, 0, 0, 3662, - 3663, 1, 0, 0, 0, 3663, 3665, 1, 0, 0, 0, 3664, 3662, 1, 0, 0, 0, 3665, - 3666, 5, 498, 0, 0, 3666, 411, 1, 0, 0, 0, 3667, 3668, 5, 515, 0, 0, 3668, - 3669, 5, 503, 0, 0, 3669, 3674, 3, 668, 334, 0, 3670, 3671, 5, 514, 0, - 0, 3671, 3672, 5, 484, 0, 0, 3672, 3674, 3, 668, 334, 0, 3673, 3667, 1, - 0, 0, 0, 3673, 3670, 1, 0, 0, 0, 3674, 413, 1, 0, 0, 0, 3675, 3679, 5, - 515, 0, 0, 3676, 3679, 5, 517, 0, 0, 3677, 3679, 3, 732, 366, 0, 3678, - 3675, 1, 0, 0, 0, 3678, 3676, 1, 0, 0, 0, 3678, 3677, 1, 0, 0, 0, 3679, - 3688, 1, 0, 0, 0, 3680, 3684, 5, 490, 0, 0, 3681, 3685, 5, 515, 0, 0, 3682, - 3685, 5, 517, 0, 0, 3683, 3685, 3, 732, 366, 0, 3684, 3681, 1, 0, 0, 0, - 3684, 3682, 1, 0, 0, 0, 3684, 3683, 1, 0, 0, 0, 3685, 3687, 1, 0, 0, 0, - 3686, 3680, 1, 0, 0, 0, 3687, 3690, 1, 0, 0, 0, 3688, 3686, 1, 0, 0, 0, - 3688, 3689, 1, 0, 0, 0, 3689, 415, 1, 0, 0, 0, 3690, 3688, 1, 0, 0, 0, - 3691, 3702, 5, 511, 0, 0, 3692, 3702, 3, 414, 207, 0, 3693, 3699, 5, 514, - 0, 0, 3694, 3697, 5, 496, 0, 0, 3695, 3698, 5, 515, 0, 0, 3696, 3698, 3, - 732, 366, 0, 3697, 3695, 1, 0, 0, 0, 3697, 3696, 1, 0, 0, 0, 3698, 3700, - 1, 0, 0, 0, 3699, 3694, 1, 0, 0, 0, 3699, 3700, 1, 0, 0, 0, 3700, 3702, - 1, 0, 0, 0, 3701, 3691, 1, 0, 0, 0, 3701, 3692, 1, 0, 0, 0, 3701, 3693, - 1, 0, 0, 0, 3702, 417, 1, 0, 0, 0, 3703, 3704, 5, 501, 0, 0, 3704, 3709, - 3, 420, 210, 0, 3705, 3706, 5, 495, 0, 0, 3706, 3708, 3, 420, 210, 0, 3707, - 3705, 1, 0, 0, 0, 3708, 3711, 1, 0, 0, 0, 3709, 3707, 1, 0, 0, 0, 3709, - 3710, 1, 0, 0, 0, 3710, 3712, 1, 0, 0, 0, 3711, 3709, 1, 0, 0, 0, 3712, - 3713, 5, 502, 0, 0, 3713, 419, 1, 0, 0, 0, 3714, 3715, 5, 499, 0, 0, 3715, - 3716, 5, 513, 0, 0, 3716, 3717, 5, 500, 0, 0, 3717, 3718, 5, 484, 0, 0, - 3718, 3719, 3, 668, 334, 0, 3719, 421, 1, 0, 0, 0, 3720, 3721, 7, 21, 0, - 0, 3721, 423, 1, 0, 0, 0, 3722, 3723, 7, 22, 0, 0, 3723, 425, 1, 0, 0, - 0, 3724, 3725, 7, 23, 0, 0, 3725, 427, 1, 0, 0, 0, 3726, 3727, 7, 24, 0, - 0, 3727, 429, 1, 0, 0, 0, 3728, 3752, 5, 511, 0, 0, 3729, 3752, 5, 513, - 0, 0, 3730, 3752, 3, 716, 358, 0, 3731, 3752, 3, 708, 354, 0, 3732, 3752, - 5, 515, 0, 0, 3733, 3752, 5, 255, 0, 0, 3734, 3752, 5, 256, 0, 0, 3735, - 3752, 5, 257, 0, 0, 3736, 3752, 5, 258, 0, 0, 3737, 3752, 5, 259, 0, 0, - 3738, 3752, 5, 260, 0, 0, 3739, 3748, 5, 501, 0, 0, 3740, 3745, 3, 668, - 334, 0, 3741, 3742, 5, 495, 0, 0, 3742, 3744, 3, 668, 334, 0, 3743, 3741, - 1, 0, 0, 0, 3744, 3747, 1, 0, 0, 0, 3745, 3743, 1, 0, 0, 0, 3745, 3746, - 1, 0, 0, 0, 3746, 3749, 1, 0, 0, 0, 3747, 3745, 1, 0, 0, 0, 3748, 3740, - 1, 0, 0, 0, 3748, 3749, 1, 0, 0, 0, 3749, 3750, 1, 0, 0, 0, 3750, 3752, - 5, 502, 0, 0, 3751, 3728, 1, 0, 0, 0, 3751, 3729, 1, 0, 0, 0, 3751, 3730, - 1, 0, 0, 0, 3751, 3731, 1, 0, 0, 0, 3751, 3732, 1, 0, 0, 0, 3751, 3733, - 1, 0, 0, 0, 3751, 3734, 1, 0, 0, 0, 3751, 3735, 1, 0, 0, 0, 3751, 3736, - 1, 0, 0, 0, 3751, 3737, 1, 0, 0, 0, 3751, 3738, 1, 0, 0, 0, 3751, 3739, - 1, 0, 0, 0, 3752, 431, 1, 0, 0, 0, 3753, 3754, 5, 501, 0, 0, 3754, 3759, - 3, 434, 217, 0, 3755, 3756, 5, 495, 0, 0, 3756, 3758, 3, 434, 217, 0, 3757, - 3755, 1, 0, 0, 0, 3758, 3761, 1, 0, 0, 0, 3759, 3757, 1, 0, 0, 0, 3759, - 3760, 1, 0, 0, 0, 3760, 3762, 1, 0, 0, 0, 3761, 3759, 1, 0, 0, 0, 3762, - 3763, 5, 502, 0, 0, 3763, 3767, 1, 0, 0, 0, 3764, 3765, 5, 501, 0, 0, 3765, - 3767, 5, 502, 0, 0, 3766, 3753, 1, 0, 0, 0, 3766, 3764, 1, 0, 0, 0, 3767, - 433, 1, 0, 0, 0, 3768, 3769, 5, 511, 0, 0, 3769, 3770, 5, 503, 0, 0, 3770, - 3778, 5, 511, 0, 0, 3771, 3772, 5, 511, 0, 0, 3772, 3773, 5, 503, 0, 0, - 3773, 3778, 5, 93, 0, 0, 3774, 3775, 5, 511, 0, 0, 3775, 3776, 5, 503, - 0, 0, 3776, 3778, 5, 479, 0, 0, 3777, 3768, 1, 0, 0, 0, 3777, 3771, 1, - 0, 0, 0, 3777, 3774, 1, 0, 0, 0, 3778, 435, 1, 0, 0, 0, 3779, 3780, 5, - 499, 0, 0, 3780, 3781, 3, 390, 195, 0, 3781, 3782, 5, 500, 0, 0, 3782, - 437, 1, 0, 0, 0, 3783, 3784, 5, 36, 0, 0, 3784, 3786, 3, 708, 354, 0, 3785, - 3787, 3, 440, 220, 0, 3786, 3785, 1, 0, 0, 0, 3786, 3787, 1, 0, 0, 0, 3787, - 3788, 1, 0, 0, 0, 3788, 3792, 5, 96, 0, 0, 3789, 3791, 3, 444, 222, 0, - 3790, 3789, 1, 0, 0, 0, 3791, 3794, 1, 0, 0, 0, 3792, 3790, 1, 0, 0, 0, - 3792, 3793, 1, 0, 0, 0, 3793, 3795, 1, 0, 0, 0, 3794, 3792, 1, 0, 0, 0, - 3795, 3796, 5, 83, 0, 0, 3796, 439, 1, 0, 0, 0, 3797, 3799, 3, 442, 221, - 0, 3798, 3797, 1, 0, 0, 0, 3799, 3800, 1, 0, 0, 0, 3800, 3798, 1, 0, 0, - 0, 3800, 3801, 1, 0, 0, 0, 3801, 441, 1, 0, 0, 0, 3802, 3803, 5, 405, 0, - 0, 3803, 3804, 5, 511, 0, 0, 3804, 443, 1, 0, 0, 0, 3805, 3806, 5, 33, - 0, 0, 3806, 3809, 3, 708, 354, 0, 3807, 3808, 5, 188, 0, 0, 3808, 3810, - 5, 511, 0, 0, 3809, 3807, 1, 0, 0, 0, 3809, 3810, 1, 0, 0, 0, 3810, 445, - 1, 0, 0, 0, 3811, 3812, 5, 353, 0, 0, 3812, 3813, 5, 352, 0, 0, 3813, 3815, - 3, 708, 354, 0, 3814, 3816, 3, 448, 224, 0, 3815, 3814, 1, 0, 0, 0, 3816, - 3817, 1, 0, 0, 0, 3817, 3815, 1, 0, 0, 0, 3817, 3818, 1, 0, 0, 0, 3818, - 3827, 1, 0, 0, 0, 3819, 3823, 5, 96, 0, 0, 3820, 3822, 3, 450, 225, 0, - 3821, 3820, 1, 0, 0, 0, 3822, 3825, 1, 0, 0, 0, 3823, 3821, 1, 0, 0, 0, - 3823, 3824, 1, 0, 0, 0, 3824, 3826, 1, 0, 0, 0, 3825, 3823, 1, 0, 0, 0, - 3826, 3828, 5, 83, 0, 0, 3827, 3819, 1, 0, 0, 0, 3827, 3828, 1, 0, 0, 0, - 3828, 447, 1, 0, 0, 0, 3829, 3830, 5, 416, 0, 0, 3830, 3857, 5, 511, 0, - 0, 3831, 3832, 5, 352, 0, 0, 3832, 3836, 5, 262, 0, 0, 3833, 3837, 5, 511, - 0, 0, 3834, 3835, 5, 504, 0, 0, 3835, 3837, 3, 708, 354, 0, 3836, 3833, - 1, 0, 0, 0, 3836, 3834, 1, 0, 0, 0, 3837, 3857, 1, 0, 0, 0, 3838, 3839, - 5, 63, 0, 0, 3839, 3857, 5, 511, 0, 0, 3840, 3841, 5, 64, 0, 0, 3841, 3857, - 5, 513, 0, 0, 3842, 3843, 5, 353, 0, 0, 3843, 3857, 5, 511, 0, 0, 3844, - 3848, 5, 350, 0, 0, 3845, 3849, 5, 511, 0, 0, 3846, 3847, 5, 504, 0, 0, - 3847, 3849, 3, 708, 354, 0, 3848, 3845, 1, 0, 0, 0, 3848, 3846, 1, 0, 0, - 0, 3849, 3857, 1, 0, 0, 0, 3850, 3854, 5, 351, 0, 0, 3851, 3855, 5, 511, - 0, 0, 3852, 3853, 5, 504, 0, 0, 3853, 3855, 3, 708, 354, 0, 3854, 3851, - 1, 0, 0, 0, 3854, 3852, 1, 0, 0, 0, 3855, 3857, 1, 0, 0, 0, 3856, 3829, - 1, 0, 0, 0, 3856, 3831, 1, 0, 0, 0, 3856, 3838, 1, 0, 0, 0, 3856, 3840, - 1, 0, 0, 0, 3856, 3842, 1, 0, 0, 0, 3856, 3844, 1, 0, 0, 0, 3856, 3850, - 1, 0, 0, 0, 3857, 449, 1, 0, 0, 0, 3858, 3859, 5, 354, 0, 0, 3859, 3860, - 3, 710, 355, 0, 3860, 3861, 5, 431, 0, 0, 3861, 3873, 7, 25, 0, 0, 3862, - 3863, 5, 368, 0, 0, 3863, 3864, 3, 710, 355, 0, 3864, 3865, 5, 503, 0, - 0, 3865, 3869, 3, 108, 54, 0, 3866, 3867, 5, 295, 0, 0, 3867, 3870, 5, - 511, 0, 0, 3868, 3870, 5, 288, 0, 0, 3869, 3866, 1, 0, 0, 0, 3869, 3868, - 1, 0, 0, 0, 3869, 3870, 1, 0, 0, 0, 3870, 3872, 1, 0, 0, 0, 3871, 3862, - 1, 0, 0, 0, 3872, 3875, 1, 0, 0, 0, 3873, 3871, 1, 0, 0, 0, 3873, 3874, - 1, 0, 0, 0, 3874, 3892, 1, 0, 0, 0, 3875, 3873, 1, 0, 0, 0, 3876, 3877, - 5, 77, 0, 0, 3877, 3890, 3, 708, 354, 0, 3878, 3879, 5, 355, 0, 0, 3879, - 3880, 5, 497, 0, 0, 3880, 3885, 3, 452, 226, 0, 3881, 3882, 5, 495, 0, - 0, 3882, 3884, 3, 452, 226, 0, 3883, 3881, 1, 0, 0, 0, 3884, 3887, 1, 0, - 0, 0, 3885, 3883, 1, 0, 0, 0, 3885, 3886, 1, 0, 0, 0, 3886, 3888, 1, 0, - 0, 0, 3887, 3885, 1, 0, 0, 0, 3888, 3889, 5, 498, 0, 0, 3889, 3891, 1, - 0, 0, 0, 3890, 3878, 1, 0, 0, 0, 3890, 3891, 1, 0, 0, 0, 3891, 3893, 1, - 0, 0, 0, 3892, 3876, 1, 0, 0, 0, 3892, 3893, 1, 0, 0, 0, 3893, 3894, 1, - 0, 0, 0, 3894, 3895, 5, 494, 0, 0, 3895, 451, 1, 0, 0, 0, 3896, 3897, 3, - 710, 355, 0, 3897, 3898, 5, 76, 0, 0, 3898, 3899, 3, 710, 355, 0, 3899, - 453, 1, 0, 0, 0, 3900, 3901, 5, 37, 0, 0, 3901, 3902, 3, 708, 354, 0, 3902, - 3903, 5, 416, 0, 0, 3903, 3904, 3, 108, 54, 0, 3904, 3905, 5, 295, 0, 0, - 3905, 3907, 3, 712, 356, 0, 3906, 3908, 3, 456, 228, 0, 3907, 3906, 1, - 0, 0, 0, 3907, 3908, 1, 0, 0, 0, 3908, 455, 1, 0, 0, 0, 3909, 3911, 3, - 458, 229, 0, 3910, 3909, 1, 0, 0, 0, 3911, 3912, 1, 0, 0, 0, 3912, 3910, - 1, 0, 0, 0, 3912, 3913, 1, 0, 0, 0, 3913, 457, 1, 0, 0, 0, 3914, 3915, - 5, 405, 0, 0, 3915, 3922, 5, 511, 0, 0, 3916, 3917, 5, 219, 0, 0, 3917, - 3922, 5, 511, 0, 0, 3918, 3919, 5, 367, 0, 0, 3919, 3920, 5, 423, 0, 0, - 3920, 3922, 5, 339, 0, 0, 3921, 3914, 1, 0, 0, 0, 3921, 3916, 1, 0, 0, - 0, 3921, 3918, 1, 0, 0, 0, 3922, 459, 1, 0, 0, 0, 3923, 3924, 5, 441, 0, - 0, 3924, 3933, 5, 511, 0, 0, 3925, 3930, 3, 556, 278, 0, 3926, 3927, 5, - 495, 0, 0, 3927, 3929, 3, 556, 278, 0, 3928, 3926, 1, 0, 0, 0, 3929, 3932, - 1, 0, 0, 0, 3930, 3928, 1, 0, 0, 0, 3930, 3931, 1, 0, 0, 0, 3931, 3934, - 1, 0, 0, 0, 3932, 3930, 1, 0, 0, 0, 3933, 3925, 1, 0, 0, 0, 3933, 3934, - 1, 0, 0, 0, 3934, 461, 1, 0, 0, 0, 3935, 3936, 5, 311, 0, 0, 3936, 3937, - 5, 339, 0, 0, 3937, 3938, 3, 708, 354, 0, 3938, 3939, 3, 464, 232, 0, 3939, - 3940, 3, 466, 233, 0, 3940, 3944, 5, 96, 0, 0, 3941, 3943, 3, 470, 235, - 0, 3942, 3941, 1, 0, 0, 0, 3943, 3946, 1, 0, 0, 0, 3944, 3942, 1, 0, 0, - 0, 3944, 3945, 1, 0, 0, 0, 3945, 3947, 1, 0, 0, 0, 3946, 3944, 1, 0, 0, - 0, 3947, 3948, 5, 83, 0, 0, 3948, 463, 1, 0, 0, 0, 3949, 3950, 5, 315, - 0, 0, 3950, 3951, 5, 218, 0, 0, 3951, 3952, 5, 511, 0, 0, 3952, 465, 1, - 0, 0, 0, 3953, 3954, 5, 317, 0, 0, 3954, 3968, 5, 421, 0, 0, 3955, 3956, - 5, 317, 0, 0, 3956, 3957, 5, 318, 0, 0, 3957, 3958, 5, 497, 0, 0, 3958, - 3959, 5, 350, 0, 0, 3959, 3960, 5, 484, 0, 0, 3960, 3961, 3, 468, 234, - 0, 3961, 3962, 5, 495, 0, 0, 3962, 3963, 5, 351, 0, 0, 3963, 3964, 5, 484, - 0, 0, 3964, 3965, 3, 468, 234, 0, 3965, 3966, 5, 498, 0, 0, 3966, 3968, - 1, 0, 0, 0, 3967, 3953, 1, 0, 0, 0, 3967, 3955, 1, 0, 0, 0, 3968, 467, - 1, 0, 0, 0, 3969, 3970, 7, 26, 0, 0, 3970, 469, 1, 0, 0, 0, 3971, 3973, - 3, 718, 359, 0, 3972, 3971, 1, 0, 0, 0, 3972, 3973, 1, 0, 0, 0, 3973, 3974, - 1, 0, 0, 0, 3974, 3977, 5, 321, 0, 0, 3975, 3978, 3, 710, 355, 0, 3976, - 3978, 5, 511, 0, 0, 3977, 3975, 1, 0, 0, 0, 3977, 3976, 1, 0, 0, 0, 3978, - 3979, 1, 0, 0, 0, 3979, 3980, 5, 322, 0, 0, 3980, 3981, 3, 472, 236, 0, - 3981, 3982, 5, 323, 0, 0, 3982, 3986, 5, 511, 0, 0, 3983, 3985, 3, 474, - 237, 0, 3984, 3983, 1, 0, 0, 0, 3985, 3988, 1, 0, 0, 0, 3986, 3984, 1, - 0, 0, 0, 3986, 3987, 1, 0, 0, 0, 3987, 3989, 1, 0, 0, 0, 3988, 3986, 1, - 0, 0, 0, 3989, 3990, 5, 326, 0, 0, 3990, 3991, 3, 478, 239, 0, 3991, 3992, - 5, 494, 0, 0, 3992, 471, 1, 0, 0, 0, 3993, 3994, 7, 13, 0, 0, 3994, 473, - 1, 0, 0, 0, 3995, 3996, 5, 368, 0, 0, 3996, 3997, 5, 514, 0, 0, 3997, 3998, - 5, 503, 0, 0, 3998, 4014, 3, 108, 54, 0, 3999, 4000, 5, 354, 0, 0, 4000, - 4001, 5, 514, 0, 0, 4001, 4002, 5, 503, 0, 0, 4002, 4014, 3, 108, 54, 0, - 4003, 4004, 5, 195, 0, 0, 4004, 4005, 5, 511, 0, 0, 4005, 4006, 5, 484, - 0, 0, 4006, 4014, 3, 476, 238, 0, 4007, 4008, 5, 325, 0, 0, 4008, 4009, - 7, 27, 0, 0, 4009, 4010, 5, 71, 0, 0, 4010, 4014, 5, 514, 0, 0, 4011, 4012, - 5, 324, 0, 0, 4012, 4014, 5, 513, 0, 0, 4013, 3995, 1, 0, 0, 0, 4013, 3999, - 1, 0, 0, 0, 4013, 4003, 1, 0, 0, 0, 4013, 4007, 1, 0, 0, 0, 4013, 4011, - 1, 0, 0, 0, 4014, 475, 1, 0, 0, 0, 4015, 4021, 5, 511, 0, 0, 4016, 4021, - 5, 514, 0, 0, 4017, 4018, 5, 511, 0, 0, 4018, 4019, 5, 487, 0, 0, 4019, - 4021, 5, 514, 0, 0, 4020, 4015, 1, 0, 0, 0, 4020, 4016, 1, 0, 0, 0, 4020, - 4017, 1, 0, 0, 0, 4021, 477, 1, 0, 0, 0, 4022, 4023, 5, 329, 0, 0, 4023, - 4024, 5, 76, 0, 0, 4024, 4036, 5, 514, 0, 0, 4025, 4026, 5, 262, 0, 0, - 4026, 4027, 5, 76, 0, 0, 4027, 4036, 5, 514, 0, 0, 4028, 4029, 5, 332, - 0, 0, 4029, 4030, 5, 76, 0, 0, 4030, 4036, 5, 514, 0, 0, 4031, 4032, 5, - 331, 0, 0, 4032, 4033, 5, 76, 0, 0, 4033, 4036, 5, 514, 0, 0, 4034, 4036, - 5, 421, 0, 0, 4035, 4022, 1, 0, 0, 0, 4035, 4025, 1, 0, 0, 0, 4035, 4028, - 1, 0, 0, 0, 4035, 4031, 1, 0, 0, 0, 4035, 4034, 1, 0, 0, 0, 4036, 479, - 1, 0, 0, 0, 4037, 4038, 5, 41, 0, 0, 4038, 4039, 5, 515, 0, 0, 4039, 4040, - 5, 93, 0, 0, 4040, 4041, 3, 708, 354, 0, 4041, 4042, 5, 497, 0, 0, 4042, - 4043, 3, 116, 58, 0, 4043, 4044, 5, 498, 0, 0, 4044, 481, 1, 0, 0, 0, 4045, - 4046, 5, 314, 0, 0, 4046, 4047, 5, 339, 0, 0, 4047, 4048, 3, 708, 354, - 0, 4048, 4049, 5, 497, 0, 0, 4049, 4054, 3, 488, 244, 0, 4050, 4051, 5, - 495, 0, 0, 4051, 4053, 3, 488, 244, 0, 4052, 4050, 1, 0, 0, 0, 4053, 4056, - 1, 0, 0, 0, 4054, 4052, 1, 0, 0, 0, 4054, 4055, 1, 0, 0, 0, 4055, 4057, - 1, 0, 0, 0, 4056, 4054, 1, 0, 0, 0, 4057, 4059, 5, 498, 0, 0, 4058, 4060, - 3, 508, 254, 0, 4059, 4058, 1, 0, 0, 0, 4059, 4060, 1, 0, 0, 0, 4060, 483, - 1, 0, 0, 0, 4061, 4062, 5, 314, 0, 0, 4062, 4063, 5, 312, 0, 0, 4063, 4064, - 3, 708, 354, 0, 4064, 4065, 5, 497, 0, 0, 4065, 4070, 3, 488, 244, 0, 4066, - 4067, 5, 495, 0, 0, 4067, 4069, 3, 488, 244, 0, 4068, 4066, 1, 0, 0, 0, - 4069, 4072, 1, 0, 0, 0, 4070, 4068, 1, 0, 0, 0, 4070, 4071, 1, 0, 0, 0, - 4071, 4073, 1, 0, 0, 0, 4072, 4070, 1, 0, 0, 0, 4073, 4075, 5, 498, 0, - 0, 4074, 4076, 3, 492, 246, 0, 4075, 4074, 1, 0, 0, 0, 4075, 4076, 1, 0, - 0, 0, 4076, 4085, 1, 0, 0, 0, 4077, 4081, 5, 499, 0, 0, 4078, 4080, 3, - 496, 248, 0, 4079, 4078, 1, 0, 0, 0, 4080, 4083, 1, 0, 0, 0, 4081, 4079, - 1, 0, 0, 0, 4081, 4082, 1, 0, 0, 0, 4082, 4084, 1, 0, 0, 0, 4083, 4081, - 1, 0, 0, 0, 4084, 4086, 5, 500, 0, 0, 4085, 4077, 1, 0, 0, 0, 4085, 4086, - 1, 0, 0, 0, 4086, 485, 1, 0, 0, 0, 4087, 4097, 5, 511, 0, 0, 4088, 4097, - 5, 513, 0, 0, 4089, 4097, 5, 296, 0, 0, 4090, 4097, 5, 297, 0, 0, 4091, - 4093, 5, 30, 0, 0, 4092, 4094, 3, 708, 354, 0, 4093, 4092, 1, 0, 0, 0, - 4093, 4094, 1, 0, 0, 0, 4094, 4097, 1, 0, 0, 0, 4095, 4097, 3, 708, 354, - 0, 4096, 4087, 1, 0, 0, 0, 4096, 4088, 1, 0, 0, 0, 4096, 4089, 1, 0, 0, - 0, 4096, 4090, 1, 0, 0, 0, 4096, 4091, 1, 0, 0, 0, 4096, 4095, 1, 0, 0, - 0, 4097, 487, 1, 0, 0, 0, 4098, 4099, 3, 710, 355, 0, 4099, 4100, 5, 503, - 0, 0, 4100, 4101, 3, 486, 243, 0, 4101, 489, 1, 0, 0, 0, 4102, 4103, 3, - 710, 355, 0, 4103, 4104, 5, 484, 0, 0, 4104, 4105, 3, 486, 243, 0, 4105, - 491, 1, 0, 0, 0, 4106, 4107, 5, 317, 0, 0, 4107, 4112, 3, 494, 247, 0, - 4108, 4109, 5, 495, 0, 0, 4109, 4111, 3, 494, 247, 0, 4110, 4108, 1, 0, - 0, 0, 4111, 4114, 1, 0, 0, 0, 4112, 4110, 1, 0, 0, 0, 4112, 4113, 1, 0, - 0, 0, 4113, 493, 1, 0, 0, 0, 4114, 4112, 1, 0, 0, 0, 4115, 4124, 5, 318, - 0, 0, 4116, 4124, 5, 346, 0, 0, 4117, 4124, 5, 347, 0, 0, 4118, 4120, 5, - 30, 0, 0, 4119, 4121, 3, 708, 354, 0, 4120, 4119, 1, 0, 0, 0, 4120, 4121, - 1, 0, 0, 0, 4121, 4124, 1, 0, 0, 0, 4122, 4124, 5, 515, 0, 0, 4123, 4115, - 1, 0, 0, 0, 4123, 4116, 1, 0, 0, 0, 4123, 4117, 1, 0, 0, 0, 4123, 4118, - 1, 0, 0, 0, 4123, 4122, 1, 0, 0, 0, 4124, 495, 1, 0, 0, 0, 4125, 4126, - 5, 341, 0, 0, 4126, 4127, 5, 23, 0, 0, 4127, 4130, 3, 708, 354, 0, 4128, - 4129, 5, 76, 0, 0, 4129, 4131, 5, 511, 0, 0, 4130, 4128, 1, 0, 0, 0, 4130, - 4131, 1, 0, 0, 0, 4131, 4143, 1, 0, 0, 0, 4132, 4133, 5, 497, 0, 0, 4133, - 4138, 3, 488, 244, 0, 4134, 4135, 5, 495, 0, 0, 4135, 4137, 3, 488, 244, - 0, 4136, 4134, 1, 0, 0, 0, 4137, 4140, 1, 0, 0, 0, 4138, 4136, 1, 0, 0, - 0, 4138, 4139, 1, 0, 0, 0, 4139, 4141, 1, 0, 0, 0, 4140, 4138, 1, 0, 0, - 0, 4141, 4142, 5, 498, 0, 0, 4142, 4144, 1, 0, 0, 0, 4143, 4132, 1, 0, - 0, 0, 4143, 4144, 1, 0, 0, 0, 4144, 4146, 1, 0, 0, 0, 4145, 4147, 3, 498, - 249, 0, 4146, 4145, 1, 0, 0, 0, 4146, 4147, 1, 0, 0, 0, 4147, 4149, 1, - 0, 0, 0, 4148, 4150, 5, 494, 0, 0, 4149, 4148, 1, 0, 0, 0, 4149, 4150, - 1, 0, 0, 0, 4150, 497, 1, 0, 0, 0, 4151, 4152, 5, 343, 0, 0, 4152, 4162, - 5, 497, 0, 0, 4153, 4163, 5, 489, 0, 0, 4154, 4159, 3, 500, 250, 0, 4155, - 4156, 5, 495, 0, 0, 4156, 4158, 3, 500, 250, 0, 4157, 4155, 1, 0, 0, 0, - 4158, 4161, 1, 0, 0, 0, 4159, 4157, 1, 0, 0, 0, 4159, 4160, 1, 0, 0, 0, - 4160, 4163, 1, 0, 0, 0, 4161, 4159, 1, 0, 0, 0, 4162, 4153, 1, 0, 0, 0, - 4162, 4154, 1, 0, 0, 0, 4163, 4164, 1, 0, 0, 0, 4164, 4165, 5, 498, 0, - 0, 4165, 499, 1, 0, 0, 0, 4166, 4169, 5, 515, 0, 0, 4167, 4168, 5, 76, - 0, 0, 4168, 4170, 5, 511, 0, 0, 4169, 4167, 1, 0, 0, 0, 4169, 4170, 1, - 0, 0, 0, 4170, 4172, 1, 0, 0, 0, 4171, 4173, 3, 502, 251, 0, 4172, 4171, - 1, 0, 0, 0, 4172, 4173, 1, 0, 0, 0, 4173, 501, 1, 0, 0, 0, 4174, 4175, - 5, 497, 0, 0, 4175, 4180, 5, 515, 0, 0, 4176, 4177, 5, 495, 0, 0, 4177, - 4179, 5, 515, 0, 0, 4178, 4176, 1, 0, 0, 0, 4179, 4182, 1, 0, 0, 0, 4180, - 4178, 1, 0, 0, 0, 4180, 4181, 1, 0, 0, 0, 4181, 4183, 1, 0, 0, 0, 4182, - 4180, 1, 0, 0, 0, 4183, 4184, 5, 498, 0, 0, 4184, 503, 1, 0, 0, 0, 4185, - 4186, 5, 26, 0, 0, 4186, 4187, 5, 23, 0, 0, 4187, 4188, 3, 708, 354, 0, - 4188, 4189, 5, 71, 0, 0, 4189, 4190, 5, 314, 0, 0, 4190, 4191, 5, 339, - 0, 0, 4191, 4192, 3, 708, 354, 0, 4192, 4193, 5, 497, 0, 0, 4193, 4198, - 3, 488, 244, 0, 4194, 4195, 5, 495, 0, 0, 4195, 4197, 3, 488, 244, 0, 4196, - 4194, 1, 0, 0, 0, 4197, 4200, 1, 0, 0, 0, 4198, 4196, 1, 0, 0, 0, 4198, - 4199, 1, 0, 0, 0, 4199, 4201, 1, 0, 0, 0, 4200, 4198, 1, 0, 0, 0, 4201, - 4207, 5, 498, 0, 0, 4202, 4204, 5, 497, 0, 0, 4203, 4205, 3, 100, 50, 0, - 4204, 4203, 1, 0, 0, 0, 4204, 4205, 1, 0, 0, 0, 4205, 4206, 1, 0, 0, 0, - 4206, 4208, 5, 498, 0, 0, 4207, 4202, 1, 0, 0, 0, 4207, 4208, 1, 0, 0, - 0, 4208, 505, 1, 0, 0, 0, 4209, 4212, 5, 371, 0, 0, 4210, 4213, 3, 708, - 354, 0, 4211, 4213, 5, 515, 0, 0, 4212, 4210, 1, 0, 0, 0, 4212, 4211, 1, - 0, 0, 0, 4213, 4217, 1, 0, 0, 0, 4214, 4216, 3, 34, 17, 0, 4215, 4214, - 1, 0, 0, 0, 4216, 4219, 1, 0, 0, 0, 4217, 4215, 1, 0, 0, 0, 4217, 4218, - 1, 0, 0, 0, 4218, 507, 1, 0, 0, 0, 4219, 4217, 1, 0, 0, 0, 4220, 4221, - 5, 370, 0, 0, 4221, 4222, 5, 497, 0, 0, 4222, 4227, 3, 510, 255, 0, 4223, - 4224, 5, 495, 0, 0, 4224, 4226, 3, 510, 255, 0, 4225, 4223, 1, 0, 0, 0, - 4226, 4229, 1, 0, 0, 0, 4227, 4225, 1, 0, 0, 0, 4227, 4228, 1, 0, 0, 0, - 4228, 4230, 1, 0, 0, 0, 4229, 4227, 1, 0, 0, 0, 4230, 4231, 5, 498, 0, - 0, 4231, 509, 1, 0, 0, 0, 4232, 4233, 5, 511, 0, 0, 4233, 4234, 5, 503, - 0, 0, 4234, 4235, 3, 486, 243, 0, 4235, 511, 1, 0, 0, 0, 4236, 4237, 5, - 437, 0, 0, 4237, 4238, 5, 438, 0, 0, 4238, 4239, 5, 312, 0, 0, 4239, 4240, - 3, 708, 354, 0, 4240, 4241, 5, 497, 0, 0, 4241, 4246, 3, 488, 244, 0, 4242, - 4243, 5, 495, 0, 0, 4243, 4245, 3, 488, 244, 0, 4244, 4242, 1, 0, 0, 0, - 4245, 4248, 1, 0, 0, 0, 4246, 4244, 1, 0, 0, 0, 4246, 4247, 1, 0, 0, 0, - 4247, 4249, 1, 0, 0, 0, 4248, 4246, 1, 0, 0, 0, 4249, 4250, 5, 498, 0, - 0, 4250, 4252, 5, 499, 0, 0, 4251, 4253, 3, 514, 257, 0, 4252, 4251, 1, - 0, 0, 0, 4253, 4254, 1, 0, 0, 0, 4254, 4252, 1, 0, 0, 0, 4254, 4255, 1, - 0, 0, 0, 4255, 4256, 1, 0, 0, 0, 4256, 4257, 5, 500, 0, 0, 4257, 513, 1, - 0, 0, 0, 4258, 4259, 5, 402, 0, 0, 4259, 4260, 5, 515, 0, 0, 4260, 4261, - 5, 497, 0, 0, 4261, 4266, 3, 516, 258, 0, 4262, 4263, 5, 495, 0, 0, 4263, - 4265, 3, 516, 258, 0, 4264, 4262, 1, 0, 0, 0, 4265, 4268, 1, 0, 0, 0, 4266, - 4264, 1, 0, 0, 0, 4266, 4267, 1, 0, 0, 0, 4267, 4269, 1, 0, 0, 0, 4268, - 4266, 1, 0, 0, 0, 4269, 4270, 5, 498, 0, 0, 4270, 4273, 7, 28, 0, 0, 4271, - 4272, 5, 23, 0, 0, 4272, 4274, 3, 708, 354, 0, 4273, 4271, 1, 0, 0, 0, - 4273, 4274, 1, 0, 0, 0, 4274, 4277, 1, 0, 0, 0, 4275, 4276, 5, 30, 0, 0, - 4276, 4278, 3, 708, 354, 0, 4277, 4275, 1, 0, 0, 0, 4277, 4278, 1, 0, 0, - 0, 4278, 4279, 1, 0, 0, 0, 4279, 4280, 5, 494, 0, 0, 4280, 515, 1, 0, 0, - 0, 4281, 4282, 5, 515, 0, 0, 4282, 4283, 5, 503, 0, 0, 4283, 4284, 3, 108, - 54, 0, 4284, 517, 1, 0, 0, 0, 4285, 4286, 5, 32, 0, 0, 4286, 4291, 3, 708, - 354, 0, 4287, 4288, 5, 368, 0, 0, 4288, 4289, 5, 514, 0, 0, 4289, 4290, - 5, 503, 0, 0, 4290, 4292, 3, 708, 354, 0, 4291, 4287, 1, 0, 0, 0, 4291, - 4292, 1, 0, 0, 0, 4292, 4295, 1, 0, 0, 0, 4293, 4294, 5, 478, 0, 0, 4294, - 4296, 5, 511, 0, 0, 4295, 4293, 1, 0, 0, 0, 4295, 4296, 1, 0, 0, 0, 4296, - 4299, 1, 0, 0, 0, 4297, 4298, 5, 477, 0, 0, 4298, 4300, 5, 511, 0, 0, 4299, - 4297, 1, 0, 0, 0, 4299, 4300, 1, 0, 0, 0, 4300, 4304, 1, 0, 0, 0, 4301, - 4302, 5, 361, 0, 0, 4302, 4303, 5, 454, 0, 0, 4303, 4305, 7, 29, 0, 0, - 4304, 4301, 1, 0, 0, 0, 4304, 4305, 1, 0, 0, 0, 4305, 4309, 1, 0, 0, 0, - 4306, 4307, 5, 465, 0, 0, 4307, 4308, 5, 33, 0, 0, 4308, 4310, 3, 708, - 354, 0, 4309, 4306, 1, 0, 0, 0, 4309, 4310, 1, 0, 0, 0, 4310, 4314, 1, - 0, 0, 0, 4311, 4312, 5, 464, 0, 0, 4312, 4313, 5, 268, 0, 0, 4313, 4315, - 5, 511, 0, 0, 4314, 4311, 1, 0, 0, 0, 4314, 4315, 1, 0, 0, 0, 4315, 4316, - 1, 0, 0, 0, 4316, 4317, 5, 96, 0, 0, 4317, 4318, 3, 520, 260, 0, 4318, - 4319, 5, 83, 0, 0, 4319, 4321, 5, 32, 0, 0, 4320, 4322, 5, 494, 0, 0, 4321, - 4320, 1, 0, 0, 0, 4321, 4322, 1, 0, 0, 0, 4322, 4324, 1, 0, 0, 0, 4323, - 4325, 5, 490, 0, 0, 4324, 4323, 1, 0, 0, 0, 4324, 4325, 1, 0, 0, 0, 4325, - 519, 1, 0, 0, 0, 4326, 4328, 3, 522, 261, 0, 4327, 4326, 1, 0, 0, 0, 4328, - 4331, 1, 0, 0, 0, 4329, 4327, 1, 0, 0, 0, 4329, 4330, 1, 0, 0, 0, 4330, - 521, 1, 0, 0, 0, 4331, 4329, 1, 0, 0, 0, 4332, 4333, 3, 524, 262, 0, 4333, - 4334, 5, 494, 0, 0, 4334, 4360, 1, 0, 0, 0, 4335, 4336, 3, 530, 265, 0, - 4336, 4337, 5, 494, 0, 0, 4337, 4360, 1, 0, 0, 0, 4338, 4339, 3, 534, 267, - 0, 4339, 4340, 5, 494, 0, 0, 4340, 4360, 1, 0, 0, 0, 4341, 4342, 3, 536, - 268, 0, 4342, 4343, 5, 494, 0, 0, 4343, 4360, 1, 0, 0, 0, 4344, 4345, 3, - 540, 270, 0, 4345, 4346, 5, 494, 0, 0, 4346, 4360, 1, 0, 0, 0, 4347, 4348, - 3, 544, 272, 0, 4348, 4349, 5, 494, 0, 0, 4349, 4360, 1, 0, 0, 0, 4350, - 4351, 3, 546, 273, 0, 4351, 4352, 5, 494, 0, 0, 4352, 4360, 1, 0, 0, 0, - 4353, 4354, 3, 548, 274, 0, 4354, 4355, 5, 494, 0, 0, 4355, 4360, 1, 0, - 0, 0, 4356, 4357, 3, 550, 275, 0, 4357, 4358, 5, 494, 0, 0, 4358, 4360, - 1, 0, 0, 0, 4359, 4332, 1, 0, 0, 0, 4359, 4335, 1, 0, 0, 0, 4359, 4338, - 1, 0, 0, 0, 4359, 4341, 1, 0, 0, 0, 4359, 4344, 1, 0, 0, 0, 4359, 4347, - 1, 0, 0, 0, 4359, 4350, 1, 0, 0, 0, 4359, 4353, 1, 0, 0, 0, 4359, 4356, - 1, 0, 0, 0, 4360, 523, 1, 0, 0, 0, 4361, 4362, 5, 455, 0, 0, 4362, 4363, - 5, 456, 0, 0, 4363, 4364, 5, 515, 0, 0, 4364, 4367, 5, 511, 0, 0, 4365, - 4366, 5, 33, 0, 0, 4366, 4368, 3, 708, 354, 0, 4367, 4365, 1, 0, 0, 0, - 4367, 4368, 1, 0, 0, 0, 4368, 4372, 1, 0, 0, 0, 4369, 4370, 5, 460, 0, - 0, 4370, 4371, 5, 30, 0, 0, 4371, 4373, 3, 708, 354, 0, 4372, 4369, 1, - 0, 0, 0, 4372, 4373, 1, 0, 0, 0, 4373, 4377, 1, 0, 0, 0, 4374, 4375, 5, - 460, 0, 0, 4375, 4376, 5, 308, 0, 0, 4376, 4378, 5, 511, 0, 0, 4377, 4374, - 1, 0, 0, 0, 4377, 4378, 1, 0, 0, 0, 4378, 4381, 1, 0, 0, 0, 4379, 4380, - 5, 23, 0, 0, 4380, 4382, 3, 708, 354, 0, 4381, 4379, 1, 0, 0, 0, 4381, - 4382, 1, 0, 0, 0, 4382, 4386, 1, 0, 0, 0, 4383, 4384, 5, 464, 0, 0, 4384, - 4385, 5, 268, 0, 0, 4385, 4387, 5, 511, 0, 0, 4386, 4383, 1, 0, 0, 0, 4386, - 4387, 1, 0, 0, 0, 4387, 4390, 1, 0, 0, 0, 4388, 4389, 5, 477, 0, 0, 4389, - 4391, 5, 511, 0, 0, 4390, 4388, 1, 0, 0, 0, 4390, 4391, 1, 0, 0, 0, 4391, - 4398, 1, 0, 0, 0, 4392, 4394, 5, 459, 0, 0, 4393, 4395, 3, 528, 264, 0, - 4394, 4393, 1, 0, 0, 0, 4395, 4396, 1, 0, 0, 0, 4396, 4394, 1, 0, 0, 0, - 4396, 4397, 1, 0, 0, 0, 4397, 4399, 1, 0, 0, 0, 4398, 4392, 1, 0, 0, 0, - 4398, 4399, 1, 0, 0, 0, 4399, 4407, 1, 0, 0, 0, 4400, 4401, 5, 470, 0, - 0, 4401, 4403, 5, 438, 0, 0, 4402, 4404, 3, 526, 263, 0, 4403, 4402, 1, - 0, 0, 0, 4404, 4405, 1, 0, 0, 0, 4405, 4403, 1, 0, 0, 0, 4405, 4406, 1, - 0, 0, 0, 4406, 4408, 1, 0, 0, 0, 4407, 4400, 1, 0, 0, 0, 4407, 4408, 1, - 0, 0, 0, 4408, 4459, 1, 0, 0, 0, 4409, 4410, 5, 473, 0, 0, 4410, 4411, - 5, 455, 0, 0, 4411, 4412, 5, 456, 0, 0, 4412, 4413, 5, 515, 0, 0, 4413, - 4416, 5, 511, 0, 0, 4414, 4415, 5, 33, 0, 0, 4415, 4417, 3, 708, 354, 0, - 4416, 4414, 1, 0, 0, 0, 4416, 4417, 1, 0, 0, 0, 4417, 4421, 1, 0, 0, 0, - 4418, 4419, 5, 460, 0, 0, 4419, 4420, 5, 30, 0, 0, 4420, 4422, 3, 708, - 354, 0, 4421, 4418, 1, 0, 0, 0, 4421, 4422, 1, 0, 0, 0, 4422, 4426, 1, - 0, 0, 0, 4423, 4424, 5, 460, 0, 0, 4424, 4425, 5, 308, 0, 0, 4425, 4427, - 5, 511, 0, 0, 4426, 4423, 1, 0, 0, 0, 4426, 4427, 1, 0, 0, 0, 4427, 4430, - 1, 0, 0, 0, 4428, 4429, 5, 23, 0, 0, 4429, 4431, 3, 708, 354, 0, 4430, - 4428, 1, 0, 0, 0, 4430, 4431, 1, 0, 0, 0, 4431, 4435, 1, 0, 0, 0, 4432, - 4433, 5, 464, 0, 0, 4433, 4434, 5, 268, 0, 0, 4434, 4436, 5, 511, 0, 0, - 4435, 4432, 1, 0, 0, 0, 4435, 4436, 1, 0, 0, 0, 4436, 4439, 1, 0, 0, 0, - 4437, 4438, 5, 477, 0, 0, 4438, 4440, 5, 511, 0, 0, 4439, 4437, 1, 0, 0, - 0, 4439, 4440, 1, 0, 0, 0, 4440, 4447, 1, 0, 0, 0, 4441, 4443, 5, 459, - 0, 0, 4442, 4444, 3, 528, 264, 0, 4443, 4442, 1, 0, 0, 0, 4444, 4445, 1, - 0, 0, 0, 4445, 4443, 1, 0, 0, 0, 4445, 4446, 1, 0, 0, 0, 4446, 4448, 1, - 0, 0, 0, 4447, 4441, 1, 0, 0, 0, 4447, 4448, 1, 0, 0, 0, 4448, 4456, 1, - 0, 0, 0, 4449, 4450, 5, 470, 0, 0, 4450, 4452, 5, 438, 0, 0, 4451, 4453, - 3, 526, 263, 0, 4452, 4451, 1, 0, 0, 0, 4453, 4454, 1, 0, 0, 0, 4454, 4452, - 1, 0, 0, 0, 4454, 4455, 1, 0, 0, 0, 4455, 4457, 1, 0, 0, 0, 4456, 4449, - 1, 0, 0, 0, 4456, 4457, 1, 0, 0, 0, 4457, 4459, 1, 0, 0, 0, 4458, 4361, - 1, 0, 0, 0, 4458, 4409, 1, 0, 0, 0, 4459, 525, 1, 0, 0, 0, 4460, 4461, - 5, 471, 0, 0, 4461, 4463, 5, 462, 0, 0, 4462, 4464, 5, 511, 0, 0, 4463, - 4462, 1, 0, 0, 0, 4463, 4464, 1, 0, 0, 0, 4464, 4469, 1, 0, 0, 0, 4465, - 4466, 5, 499, 0, 0, 4466, 4467, 3, 520, 260, 0, 4467, 4468, 5, 500, 0, - 0, 4468, 4470, 1, 0, 0, 0, 4469, 4465, 1, 0, 0, 0, 4469, 4470, 1, 0, 0, - 0, 4470, 4494, 1, 0, 0, 0, 4471, 4472, 5, 472, 0, 0, 4472, 4473, 5, 471, - 0, 0, 4473, 4475, 5, 462, 0, 0, 4474, 4476, 5, 511, 0, 0, 4475, 4474, 1, - 0, 0, 0, 4475, 4476, 1, 0, 0, 0, 4476, 4481, 1, 0, 0, 0, 4477, 4478, 5, - 499, 0, 0, 4478, 4479, 3, 520, 260, 0, 4479, 4480, 5, 500, 0, 0, 4480, - 4482, 1, 0, 0, 0, 4481, 4477, 1, 0, 0, 0, 4481, 4482, 1, 0, 0, 0, 4482, - 4494, 1, 0, 0, 0, 4483, 4485, 5, 462, 0, 0, 4484, 4486, 5, 511, 0, 0, 4485, - 4484, 1, 0, 0, 0, 4485, 4486, 1, 0, 0, 0, 4486, 4491, 1, 0, 0, 0, 4487, - 4488, 5, 499, 0, 0, 4488, 4489, 3, 520, 260, 0, 4489, 4490, 5, 500, 0, - 0, 4490, 4492, 1, 0, 0, 0, 4491, 4487, 1, 0, 0, 0, 4491, 4492, 1, 0, 0, - 0, 4492, 4494, 1, 0, 0, 0, 4493, 4460, 1, 0, 0, 0, 4493, 4471, 1, 0, 0, - 0, 4493, 4483, 1, 0, 0, 0, 4494, 527, 1, 0, 0, 0, 4495, 4496, 5, 511, 0, - 0, 4496, 4497, 5, 499, 0, 0, 4497, 4498, 3, 520, 260, 0, 4498, 4499, 5, - 500, 0, 0, 4499, 529, 1, 0, 0, 0, 4500, 4501, 5, 113, 0, 0, 4501, 4502, - 5, 30, 0, 0, 4502, 4505, 3, 708, 354, 0, 4503, 4504, 5, 405, 0, 0, 4504, - 4506, 5, 511, 0, 0, 4505, 4503, 1, 0, 0, 0, 4505, 4506, 1, 0, 0, 0, 4506, - 4519, 1, 0, 0, 0, 4507, 4508, 5, 139, 0, 0, 4508, 4509, 5, 497, 0, 0, 4509, - 4514, 3, 532, 266, 0, 4510, 4511, 5, 495, 0, 0, 4511, 4513, 3, 532, 266, - 0, 4512, 4510, 1, 0, 0, 0, 4513, 4516, 1, 0, 0, 0, 4514, 4512, 1, 0, 0, - 0, 4514, 4515, 1, 0, 0, 0, 4515, 4517, 1, 0, 0, 0, 4516, 4514, 1, 0, 0, - 0, 4517, 4518, 5, 498, 0, 0, 4518, 4520, 1, 0, 0, 0, 4519, 4507, 1, 0, - 0, 0, 4519, 4520, 1, 0, 0, 0, 4520, 4527, 1, 0, 0, 0, 4521, 4523, 5, 459, - 0, 0, 4522, 4524, 3, 538, 269, 0, 4523, 4522, 1, 0, 0, 0, 4524, 4525, 1, - 0, 0, 0, 4525, 4523, 1, 0, 0, 0, 4525, 4526, 1, 0, 0, 0, 4526, 4528, 1, - 0, 0, 0, 4527, 4521, 1, 0, 0, 0, 4527, 4528, 1, 0, 0, 0, 4528, 4536, 1, - 0, 0, 0, 4529, 4530, 5, 470, 0, 0, 4530, 4532, 5, 438, 0, 0, 4531, 4533, - 3, 526, 263, 0, 4532, 4531, 1, 0, 0, 0, 4533, 4534, 1, 0, 0, 0, 4534, 4532, - 1, 0, 0, 0, 4534, 4535, 1, 0, 0, 0, 4535, 4537, 1, 0, 0, 0, 4536, 4529, - 1, 0, 0, 0, 4536, 4537, 1, 0, 0, 0, 4537, 531, 1, 0, 0, 0, 4538, 4539, - 3, 708, 354, 0, 4539, 4540, 5, 484, 0, 0, 4540, 4541, 5, 511, 0, 0, 4541, - 533, 1, 0, 0, 0, 4542, 4543, 5, 113, 0, 0, 4543, 4544, 5, 32, 0, 0, 4544, - 4547, 3, 708, 354, 0, 4545, 4546, 5, 405, 0, 0, 4546, 4548, 5, 511, 0, - 0, 4547, 4545, 1, 0, 0, 0, 4547, 4548, 1, 0, 0, 0, 4548, 4561, 1, 0, 0, - 0, 4549, 4550, 5, 139, 0, 0, 4550, 4551, 5, 497, 0, 0, 4551, 4556, 3, 532, - 266, 0, 4552, 4553, 5, 495, 0, 0, 4553, 4555, 3, 532, 266, 0, 4554, 4552, - 1, 0, 0, 0, 4555, 4558, 1, 0, 0, 0, 4556, 4554, 1, 0, 0, 0, 4556, 4557, - 1, 0, 0, 0, 4557, 4559, 1, 0, 0, 0, 4558, 4556, 1, 0, 0, 0, 4559, 4560, - 5, 498, 0, 0, 4560, 4562, 1, 0, 0, 0, 4561, 4549, 1, 0, 0, 0, 4561, 4562, - 1, 0, 0, 0, 4562, 535, 1, 0, 0, 0, 4563, 4565, 5, 457, 0, 0, 4564, 4566, - 5, 511, 0, 0, 4565, 4564, 1, 0, 0, 0, 4565, 4566, 1, 0, 0, 0, 4566, 4569, - 1, 0, 0, 0, 4567, 4568, 5, 405, 0, 0, 4568, 4570, 5, 511, 0, 0, 4569, 4567, - 1, 0, 0, 0, 4569, 4570, 1, 0, 0, 0, 4570, 4577, 1, 0, 0, 0, 4571, 4573, - 5, 459, 0, 0, 4572, 4574, 3, 538, 269, 0, 4573, 4572, 1, 0, 0, 0, 4574, - 4575, 1, 0, 0, 0, 4575, 4573, 1, 0, 0, 0, 4575, 4576, 1, 0, 0, 0, 4576, - 4578, 1, 0, 0, 0, 4577, 4571, 1, 0, 0, 0, 4577, 4578, 1, 0, 0, 0, 4578, - 537, 1, 0, 0, 0, 4579, 4580, 7, 30, 0, 0, 4580, 4581, 5, 507, 0, 0, 4581, - 4582, 5, 499, 0, 0, 4582, 4583, 3, 520, 260, 0, 4583, 4584, 5, 500, 0, - 0, 4584, 539, 1, 0, 0, 0, 4585, 4586, 5, 467, 0, 0, 4586, 4589, 5, 458, - 0, 0, 4587, 4588, 5, 405, 0, 0, 4588, 4590, 5, 511, 0, 0, 4589, 4587, 1, - 0, 0, 0, 4589, 4590, 1, 0, 0, 0, 4590, 4592, 1, 0, 0, 0, 4591, 4593, 3, - 542, 271, 0, 4592, 4591, 1, 0, 0, 0, 4593, 4594, 1, 0, 0, 0, 4594, 4592, - 1, 0, 0, 0, 4594, 4595, 1, 0, 0, 0, 4595, 541, 1, 0, 0, 0, 4596, 4597, - 5, 323, 0, 0, 4597, 4598, 5, 513, 0, 0, 4598, 4599, 5, 499, 0, 0, 4599, - 4600, 3, 520, 260, 0, 4600, 4601, 5, 500, 0, 0, 4601, 543, 1, 0, 0, 0, - 4602, 4603, 5, 463, 0, 0, 4603, 4604, 5, 423, 0, 0, 4604, 4607, 5, 515, - 0, 0, 4605, 4606, 5, 405, 0, 0, 4606, 4608, 5, 511, 0, 0, 4607, 4605, 1, - 0, 0, 0, 4607, 4608, 1, 0, 0, 0, 4608, 545, 1, 0, 0, 0, 4609, 4610, 5, - 468, 0, 0, 4610, 4611, 5, 426, 0, 0, 4611, 4613, 5, 462, 0, 0, 4612, 4614, - 5, 511, 0, 0, 4613, 4612, 1, 0, 0, 0, 4613, 4614, 1, 0, 0, 0, 4614, 4617, - 1, 0, 0, 0, 4615, 4616, 5, 405, 0, 0, 4616, 4618, 5, 511, 0, 0, 4617, 4615, - 1, 0, 0, 0, 4617, 4618, 1, 0, 0, 0, 4618, 547, 1, 0, 0, 0, 4619, 4620, - 5, 468, 0, 0, 4620, 4621, 5, 426, 0, 0, 4621, 4624, 5, 461, 0, 0, 4622, - 4623, 5, 405, 0, 0, 4623, 4625, 5, 511, 0, 0, 4624, 4622, 1, 0, 0, 0, 4624, - 4625, 1, 0, 0, 0, 4625, 4633, 1, 0, 0, 0, 4626, 4627, 5, 470, 0, 0, 4627, - 4629, 5, 438, 0, 0, 4628, 4630, 3, 526, 263, 0, 4629, 4628, 1, 0, 0, 0, - 4630, 4631, 1, 0, 0, 0, 4631, 4629, 1, 0, 0, 0, 4631, 4632, 1, 0, 0, 0, - 4632, 4634, 1, 0, 0, 0, 4633, 4626, 1, 0, 0, 0, 4633, 4634, 1, 0, 0, 0, - 4634, 549, 1, 0, 0, 0, 4635, 4636, 5, 469, 0, 0, 4636, 4637, 5, 511, 0, - 0, 4637, 551, 1, 0, 0, 0, 4638, 4639, 3, 554, 277, 0, 4639, 4644, 3, 556, - 278, 0, 4640, 4641, 5, 495, 0, 0, 4641, 4643, 3, 556, 278, 0, 4642, 4640, - 1, 0, 0, 0, 4643, 4646, 1, 0, 0, 0, 4644, 4642, 1, 0, 0, 0, 4644, 4645, - 1, 0, 0, 0, 4645, 4678, 1, 0, 0, 0, 4646, 4644, 1, 0, 0, 0, 4647, 4648, - 5, 37, 0, 0, 4648, 4652, 5, 511, 0, 0, 4649, 4650, 5, 417, 0, 0, 4650, - 4653, 3, 558, 279, 0, 4651, 4653, 5, 19, 0, 0, 4652, 4649, 1, 0, 0, 0, - 4652, 4651, 1, 0, 0, 0, 4653, 4657, 1, 0, 0, 0, 4654, 4655, 5, 289, 0, - 0, 4655, 4656, 5, 441, 0, 0, 4656, 4658, 5, 511, 0, 0, 4657, 4654, 1, 0, - 0, 0, 4657, 4658, 1, 0, 0, 0, 4658, 4678, 1, 0, 0, 0, 4659, 4660, 5, 19, - 0, 0, 4660, 4661, 5, 37, 0, 0, 4661, 4665, 5, 511, 0, 0, 4662, 4663, 5, - 289, 0, 0, 4663, 4664, 5, 441, 0, 0, 4664, 4666, 5, 511, 0, 0, 4665, 4662, - 1, 0, 0, 0, 4665, 4666, 1, 0, 0, 0, 4666, 4678, 1, 0, 0, 0, 4667, 4668, - 5, 441, 0, 0, 4668, 4669, 5, 511, 0, 0, 4669, 4674, 3, 556, 278, 0, 4670, - 4671, 5, 495, 0, 0, 4671, 4673, 3, 556, 278, 0, 4672, 4670, 1, 0, 0, 0, - 4673, 4676, 1, 0, 0, 0, 4674, 4672, 1, 0, 0, 0, 4674, 4675, 1, 0, 0, 0, - 4675, 4678, 1, 0, 0, 0, 4676, 4674, 1, 0, 0, 0, 4677, 4638, 1, 0, 0, 0, - 4677, 4647, 1, 0, 0, 0, 4677, 4659, 1, 0, 0, 0, 4677, 4667, 1, 0, 0, 0, - 4678, 553, 1, 0, 0, 0, 4679, 4680, 7, 31, 0, 0, 4680, 555, 1, 0, 0, 0, - 4681, 4682, 5, 515, 0, 0, 4682, 4683, 5, 484, 0, 0, 4683, 4684, 3, 558, - 279, 0, 4684, 557, 1, 0, 0, 0, 4685, 4690, 5, 511, 0, 0, 4686, 4690, 5, - 513, 0, 0, 4687, 4690, 3, 716, 358, 0, 4688, 4690, 3, 708, 354, 0, 4689, - 4685, 1, 0, 0, 0, 4689, 4686, 1, 0, 0, 0, 4689, 4687, 1, 0, 0, 0, 4689, - 4688, 1, 0, 0, 0, 4690, 559, 1, 0, 0, 0, 4691, 4696, 3, 562, 281, 0, 4692, - 4696, 3, 574, 287, 0, 4693, 4696, 3, 576, 288, 0, 4694, 4696, 3, 582, 291, - 0, 4695, 4691, 1, 0, 0, 0, 4695, 4692, 1, 0, 0, 0, 4695, 4693, 1, 0, 0, - 0, 4695, 4694, 1, 0, 0, 0, 4696, 561, 1, 0, 0, 0, 4697, 4698, 5, 65, 0, - 0, 4698, 5105, 5, 377, 0, 0, 4699, 4700, 5, 65, 0, 0, 4700, 4701, 5, 344, - 0, 0, 4701, 4702, 5, 378, 0, 0, 4702, 4703, 5, 71, 0, 0, 4703, 5105, 3, - 708, 354, 0, 4704, 4705, 5, 65, 0, 0, 4705, 4706, 5, 344, 0, 0, 4706, 4707, - 5, 117, 0, 0, 4707, 4708, 5, 71, 0, 0, 4708, 5105, 3, 708, 354, 0, 4709, - 4710, 5, 65, 0, 0, 4710, 4711, 5, 344, 0, 0, 4711, 4712, 5, 404, 0, 0, - 4712, 4713, 5, 71, 0, 0, 4713, 5105, 3, 708, 354, 0, 4714, 4715, 5, 65, - 0, 0, 4715, 4716, 5, 344, 0, 0, 4716, 4717, 5, 403, 0, 0, 4717, 4718, 5, - 71, 0, 0, 4718, 5105, 3, 708, 354, 0, 4719, 4720, 5, 65, 0, 0, 4720, 4726, - 5, 378, 0, 0, 4721, 4724, 5, 289, 0, 0, 4722, 4725, 3, 708, 354, 0, 4723, - 4725, 5, 515, 0, 0, 4724, 4722, 1, 0, 0, 0, 4724, 4723, 1, 0, 0, 0, 4725, - 4727, 1, 0, 0, 0, 4726, 4721, 1, 0, 0, 0, 4726, 4727, 1, 0, 0, 0, 4727, - 5105, 1, 0, 0, 0, 4728, 4729, 5, 65, 0, 0, 4729, 4735, 5, 379, 0, 0, 4730, - 4733, 5, 289, 0, 0, 4731, 4734, 3, 708, 354, 0, 4732, 4734, 5, 515, 0, - 0, 4733, 4731, 1, 0, 0, 0, 4733, 4732, 1, 0, 0, 0, 4734, 4736, 1, 0, 0, - 0, 4735, 4730, 1, 0, 0, 0, 4735, 4736, 1, 0, 0, 0, 4736, 5105, 1, 0, 0, - 0, 4737, 4738, 5, 65, 0, 0, 4738, 4744, 5, 380, 0, 0, 4739, 4742, 5, 289, - 0, 0, 4740, 4743, 3, 708, 354, 0, 4741, 4743, 5, 515, 0, 0, 4742, 4740, - 1, 0, 0, 0, 4742, 4741, 1, 0, 0, 0, 4743, 4745, 1, 0, 0, 0, 4744, 4739, - 1, 0, 0, 0, 4744, 4745, 1, 0, 0, 0, 4745, 5105, 1, 0, 0, 0, 4746, 4747, - 5, 65, 0, 0, 4747, 4753, 5, 381, 0, 0, 4748, 4751, 5, 289, 0, 0, 4749, - 4752, 3, 708, 354, 0, 4750, 4752, 5, 515, 0, 0, 4751, 4749, 1, 0, 0, 0, - 4751, 4750, 1, 0, 0, 0, 4752, 4754, 1, 0, 0, 0, 4753, 4748, 1, 0, 0, 0, - 4753, 4754, 1, 0, 0, 0, 4754, 5105, 1, 0, 0, 0, 4755, 4756, 5, 65, 0, 0, - 4756, 4762, 5, 382, 0, 0, 4757, 4760, 5, 289, 0, 0, 4758, 4761, 3, 708, - 354, 0, 4759, 4761, 5, 515, 0, 0, 4760, 4758, 1, 0, 0, 0, 4760, 4759, 1, - 0, 0, 0, 4761, 4763, 1, 0, 0, 0, 4762, 4757, 1, 0, 0, 0, 4762, 4763, 1, - 0, 0, 0, 4763, 5105, 1, 0, 0, 0, 4764, 4765, 5, 65, 0, 0, 4765, 4771, 5, - 143, 0, 0, 4766, 4769, 5, 289, 0, 0, 4767, 4770, 3, 708, 354, 0, 4768, - 4770, 5, 515, 0, 0, 4769, 4767, 1, 0, 0, 0, 4769, 4768, 1, 0, 0, 0, 4770, - 4772, 1, 0, 0, 0, 4771, 4766, 1, 0, 0, 0, 4771, 4772, 1, 0, 0, 0, 4772, - 5105, 1, 0, 0, 0, 4773, 4774, 5, 65, 0, 0, 4774, 4780, 5, 145, 0, 0, 4775, - 4778, 5, 289, 0, 0, 4776, 4779, 3, 708, 354, 0, 4777, 4779, 5, 515, 0, - 0, 4778, 4776, 1, 0, 0, 0, 4778, 4777, 1, 0, 0, 0, 4779, 4781, 1, 0, 0, - 0, 4780, 4775, 1, 0, 0, 0, 4780, 4781, 1, 0, 0, 0, 4781, 5105, 1, 0, 0, - 0, 4782, 4783, 5, 65, 0, 0, 4783, 4789, 5, 383, 0, 0, 4784, 4787, 5, 289, - 0, 0, 4785, 4788, 3, 708, 354, 0, 4786, 4788, 5, 515, 0, 0, 4787, 4785, - 1, 0, 0, 0, 4787, 4786, 1, 0, 0, 0, 4788, 4790, 1, 0, 0, 0, 4789, 4784, - 1, 0, 0, 0, 4789, 4790, 1, 0, 0, 0, 4790, 5105, 1, 0, 0, 0, 4791, 4792, - 5, 65, 0, 0, 4792, 4798, 5, 384, 0, 0, 4793, 4796, 5, 289, 0, 0, 4794, - 4797, 3, 708, 354, 0, 4795, 4797, 5, 515, 0, 0, 4796, 4794, 1, 0, 0, 0, - 4796, 4795, 1, 0, 0, 0, 4797, 4799, 1, 0, 0, 0, 4798, 4793, 1, 0, 0, 0, - 4798, 4799, 1, 0, 0, 0, 4799, 5105, 1, 0, 0, 0, 4800, 4801, 5, 65, 0, 0, - 4801, 4802, 5, 37, 0, 0, 4802, 4808, 5, 418, 0, 0, 4803, 4806, 5, 289, - 0, 0, 4804, 4807, 3, 708, 354, 0, 4805, 4807, 5, 515, 0, 0, 4806, 4804, - 1, 0, 0, 0, 4806, 4805, 1, 0, 0, 0, 4807, 4809, 1, 0, 0, 0, 4808, 4803, - 1, 0, 0, 0, 4808, 4809, 1, 0, 0, 0, 4809, 5105, 1, 0, 0, 0, 4810, 4811, - 5, 65, 0, 0, 4811, 4817, 5, 144, 0, 0, 4812, 4815, 5, 289, 0, 0, 4813, - 4816, 3, 708, 354, 0, 4814, 4816, 5, 515, 0, 0, 4815, 4813, 1, 0, 0, 0, - 4815, 4814, 1, 0, 0, 0, 4816, 4818, 1, 0, 0, 0, 4817, 4812, 1, 0, 0, 0, - 4817, 4818, 1, 0, 0, 0, 4818, 5105, 1, 0, 0, 0, 4819, 4820, 5, 65, 0, 0, - 4820, 4826, 5, 146, 0, 0, 4821, 4824, 5, 289, 0, 0, 4822, 4825, 3, 708, - 354, 0, 4823, 4825, 5, 515, 0, 0, 4824, 4822, 1, 0, 0, 0, 4824, 4823, 1, - 0, 0, 0, 4825, 4827, 1, 0, 0, 0, 4826, 4821, 1, 0, 0, 0, 4826, 4827, 1, - 0, 0, 0, 4827, 5105, 1, 0, 0, 0, 4828, 4829, 5, 65, 0, 0, 4829, 4830, 5, - 114, 0, 0, 4830, 4836, 5, 117, 0, 0, 4831, 4834, 5, 289, 0, 0, 4832, 4835, - 3, 708, 354, 0, 4833, 4835, 5, 515, 0, 0, 4834, 4832, 1, 0, 0, 0, 4834, - 4833, 1, 0, 0, 0, 4835, 4837, 1, 0, 0, 0, 4836, 4831, 1, 0, 0, 0, 4836, - 4837, 1, 0, 0, 0, 4837, 5105, 1, 0, 0, 0, 4838, 4839, 5, 65, 0, 0, 4839, - 4840, 5, 115, 0, 0, 4840, 4846, 5, 117, 0, 0, 4841, 4844, 5, 289, 0, 0, - 4842, 4845, 3, 708, 354, 0, 4843, 4845, 5, 515, 0, 0, 4844, 4842, 1, 0, - 0, 0, 4844, 4843, 1, 0, 0, 0, 4845, 4847, 1, 0, 0, 0, 4846, 4841, 1, 0, - 0, 0, 4846, 4847, 1, 0, 0, 0, 4847, 5105, 1, 0, 0, 0, 4848, 4849, 5, 65, - 0, 0, 4849, 4850, 5, 226, 0, 0, 4850, 4856, 5, 227, 0, 0, 4851, 4854, 5, - 289, 0, 0, 4852, 4855, 3, 708, 354, 0, 4853, 4855, 5, 515, 0, 0, 4854, - 4852, 1, 0, 0, 0, 4854, 4853, 1, 0, 0, 0, 4855, 4857, 1, 0, 0, 0, 4856, - 4851, 1, 0, 0, 0, 4856, 4857, 1, 0, 0, 0, 4857, 5105, 1, 0, 0, 0, 4858, - 4859, 5, 65, 0, 0, 4859, 4860, 5, 23, 0, 0, 4860, 5105, 3, 708, 354, 0, - 4861, 4862, 5, 65, 0, 0, 4862, 4863, 5, 27, 0, 0, 4863, 5105, 3, 708, 354, - 0, 4864, 4865, 5, 65, 0, 0, 4865, 4866, 5, 33, 0, 0, 4866, 5105, 3, 708, - 354, 0, 4867, 4868, 5, 65, 0, 0, 4868, 5105, 5, 385, 0, 0, 4869, 4870, - 5, 65, 0, 0, 4870, 5105, 5, 331, 0, 0, 4871, 4872, 5, 65, 0, 0, 4872, 5105, - 5, 333, 0, 0, 4873, 4874, 5, 65, 0, 0, 4874, 4875, 5, 406, 0, 0, 4875, - 5105, 5, 331, 0, 0, 4876, 4877, 5, 65, 0, 0, 4877, 4878, 5, 406, 0, 0, - 4878, 5105, 5, 365, 0, 0, 4879, 4880, 5, 65, 0, 0, 4880, 4881, 5, 409, - 0, 0, 4881, 4882, 5, 424, 0, 0, 4882, 4884, 3, 708, 354, 0, 4883, 4885, - 5, 412, 0, 0, 4884, 4883, 1, 0, 0, 0, 4884, 4885, 1, 0, 0, 0, 4885, 5105, - 1, 0, 0, 0, 4886, 4887, 5, 65, 0, 0, 4887, 4888, 5, 410, 0, 0, 4888, 4889, - 5, 424, 0, 0, 4889, 4891, 3, 708, 354, 0, 4890, 4892, 5, 412, 0, 0, 4891, - 4890, 1, 0, 0, 0, 4891, 4892, 1, 0, 0, 0, 4892, 5105, 1, 0, 0, 0, 4893, - 4894, 5, 65, 0, 0, 4894, 4895, 5, 411, 0, 0, 4895, 4896, 5, 423, 0, 0, - 4896, 5105, 3, 708, 354, 0, 4897, 4898, 5, 65, 0, 0, 4898, 4899, 5, 413, - 0, 0, 4899, 4900, 5, 424, 0, 0, 4900, 5105, 3, 708, 354, 0, 4901, 4902, - 5, 65, 0, 0, 4902, 4903, 5, 221, 0, 0, 4903, 4904, 5, 424, 0, 0, 4904, - 4907, 3, 708, 354, 0, 4905, 4906, 5, 414, 0, 0, 4906, 4908, 5, 513, 0, - 0, 4907, 4905, 1, 0, 0, 0, 4907, 4908, 1, 0, 0, 0, 4908, 5105, 1, 0, 0, - 0, 4909, 4910, 5, 65, 0, 0, 4910, 4912, 5, 187, 0, 0, 4911, 4913, 3, 564, - 282, 0, 4912, 4911, 1, 0, 0, 0, 4912, 4913, 1, 0, 0, 0, 4913, 5105, 1, - 0, 0, 0, 4914, 4915, 5, 65, 0, 0, 4915, 4916, 5, 59, 0, 0, 4916, 5105, - 5, 442, 0, 0, 4917, 4918, 5, 65, 0, 0, 4918, 4919, 5, 29, 0, 0, 4919, 4925, - 5, 444, 0, 0, 4920, 4923, 5, 289, 0, 0, 4921, 4924, 3, 708, 354, 0, 4922, - 4924, 5, 515, 0, 0, 4923, 4921, 1, 0, 0, 0, 4923, 4922, 1, 0, 0, 0, 4924, - 4926, 1, 0, 0, 0, 4925, 4920, 1, 0, 0, 0, 4925, 4926, 1, 0, 0, 0, 4926, - 5105, 1, 0, 0, 0, 4927, 4928, 5, 65, 0, 0, 4928, 4929, 5, 455, 0, 0, 4929, - 5105, 5, 444, 0, 0, 4930, 4931, 5, 65, 0, 0, 4931, 4932, 5, 450, 0, 0, - 4932, 5105, 5, 480, 0, 0, 4933, 4934, 5, 65, 0, 0, 4934, 4935, 5, 453, - 0, 0, 4935, 4936, 5, 93, 0, 0, 4936, 5105, 3, 708, 354, 0, 4937, 4938, - 5, 65, 0, 0, 4938, 4939, 5, 453, 0, 0, 4939, 4940, 5, 93, 0, 0, 4940, 4941, - 5, 30, 0, 0, 4941, 5105, 3, 708, 354, 0, 4942, 4943, 5, 65, 0, 0, 4943, - 4944, 5, 453, 0, 0, 4944, 4945, 5, 93, 0, 0, 4945, 4946, 5, 33, 0, 0, 4946, - 5105, 3, 708, 354, 0, 4947, 4948, 5, 65, 0, 0, 4948, 4949, 5, 453, 0, 0, - 4949, 4950, 5, 93, 0, 0, 4950, 4951, 5, 32, 0, 0, 4951, 5105, 3, 708, 354, - 0, 4952, 4953, 5, 65, 0, 0, 4953, 4954, 5, 442, 0, 0, 4954, 4960, 5, 451, - 0, 0, 4955, 4958, 5, 289, 0, 0, 4956, 4959, 3, 708, 354, 0, 4957, 4959, - 5, 515, 0, 0, 4958, 4956, 1, 0, 0, 0, 4958, 4957, 1, 0, 0, 0, 4959, 4961, - 1, 0, 0, 0, 4960, 4955, 1, 0, 0, 0, 4960, 4961, 1, 0, 0, 0, 4961, 5105, - 1, 0, 0, 0, 4962, 4963, 5, 65, 0, 0, 4963, 4964, 5, 314, 0, 0, 4964, 4970, - 5, 340, 0, 0, 4965, 4968, 5, 289, 0, 0, 4966, 4969, 3, 708, 354, 0, 4967, - 4969, 5, 515, 0, 0, 4968, 4966, 1, 0, 0, 0, 4968, 4967, 1, 0, 0, 0, 4969, - 4971, 1, 0, 0, 0, 4970, 4965, 1, 0, 0, 0, 4970, 4971, 1, 0, 0, 0, 4971, - 5105, 1, 0, 0, 0, 4972, 4973, 5, 65, 0, 0, 4973, 4974, 5, 314, 0, 0, 4974, - 4980, 5, 313, 0, 0, 4975, 4978, 5, 289, 0, 0, 4976, 4979, 3, 708, 354, - 0, 4977, 4979, 5, 515, 0, 0, 4978, 4976, 1, 0, 0, 0, 4978, 4977, 1, 0, - 0, 0, 4979, 4981, 1, 0, 0, 0, 4980, 4975, 1, 0, 0, 0, 4980, 4981, 1, 0, - 0, 0, 4981, 5105, 1, 0, 0, 0, 4982, 4983, 5, 65, 0, 0, 4983, 4984, 5, 26, - 0, 0, 4984, 4990, 5, 378, 0, 0, 4985, 4988, 5, 289, 0, 0, 4986, 4989, 3, - 708, 354, 0, 4987, 4989, 5, 515, 0, 0, 4988, 4986, 1, 0, 0, 0, 4988, 4987, - 1, 0, 0, 0, 4989, 4991, 1, 0, 0, 0, 4990, 4985, 1, 0, 0, 0, 4990, 4991, - 1, 0, 0, 0, 4991, 5105, 1, 0, 0, 0, 4992, 4993, 5, 65, 0, 0, 4993, 4994, - 5, 26, 0, 0, 4994, 5000, 5, 117, 0, 0, 4995, 4998, 5, 289, 0, 0, 4996, - 4999, 3, 708, 354, 0, 4997, 4999, 5, 515, 0, 0, 4998, 4996, 1, 0, 0, 0, - 4998, 4997, 1, 0, 0, 0, 4999, 5001, 1, 0, 0, 0, 5000, 4995, 1, 0, 0, 0, - 5000, 5001, 1, 0, 0, 0, 5001, 5105, 1, 0, 0, 0, 5002, 5003, 5, 65, 0, 0, - 5003, 5105, 5, 371, 0, 0, 5004, 5005, 5, 65, 0, 0, 5005, 5006, 5, 371, - 0, 0, 5006, 5009, 5, 372, 0, 0, 5007, 5010, 3, 708, 354, 0, 5008, 5010, - 5, 515, 0, 0, 5009, 5007, 1, 0, 0, 0, 5009, 5008, 1, 0, 0, 0, 5009, 5010, - 1, 0, 0, 0, 5010, 5105, 1, 0, 0, 0, 5011, 5012, 5, 65, 0, 0, 5012, 5013, - 5, 371, 0, 0, 5013, 5105, 5, 373, 0, 0, 5014, 5015, 5, 65, 0, 0, 5015, - 5016, 5, 210, 0, 0, 5016, 5019, 5, 211, 0, 0, 5017, 5018, 5, 426, 0, 0, - 5018, 5020, 3, 566, 283, 0, 5019, 5017, 1, 0, 0, 0, 5019, 5020, 1, 0, 0, - 0, 5020, 5105, 1, 0, 0, 0, 5021, 5022, 5, 65, 0, 0, 5022, 5025, 5, 415, - 0, 0, 5023, 5024, 5, 414, 0, 0, 5024, 5026, 5, 513, 0, 0, 5025, 5023, 1, - 0, 0, 0, 5025, 5026, 1, 0, 0, 0, 5026, 5032, 1, 0, 0, 0, 5027, 5030, 5, - 289, 0, 0, 5028, 5031, 3, 708, 354, 0, 5029, 5031, 5, 515, 0, 0, 5030, - 5028, 1, 0, 0, 0, 5030, 5029, 1, 0, 0, 0, 5031, 5033, 1, 0, 0, 0, 5032, - 5027, 1, 0, 0, 0, 5032, 5033, 1, 0, 0, 0, 5033, 5035, 1, 0, 0, 0, 5034, - 5036, 5, 85, 0, 0, 5035, 5034, 1, 0, 0, 0, 5035, 5036, 1, 0, 0, 0, 5036, - 5105, 1, 0, 0, 0, 5037, 5038, 5, 65, 0, 0, 5038, 5039, 5, 437, 0, 0, 5039, - 5040, 5, 438, 0, 0, 5040, 5046, 5, 313, 0, 0, 5041, 5044, 5, 289, 0, 0, - 5042, 5045, 3, 708, 354, 0, 5043, 5045, 5, 515, 0, 0, 5044, 5042, 1, 0, - 0, 0, 5044, 5043, 1, 0, 0, 0, 5045, 5047, 1, 0, 0, 0, 5046, 5041, 1, 0, - 0, 0, 5046, 5047, 1, 0, 0, 0, 5047, 5105, 1, 0, 0, 0, 5048, 5049, 5, 65, - 0, 0, 5049, 5050, 5, 437, 0, 0, 5050, 5051, 5, 438, 0, 0, 5051, 5057, 5, - 340, 0, 0, 5052, 5055, 5, 289, 0, 0, 5053, 5056, 3, 708, 354, 0, 5054, - 5056, 5, 515, 0, 0, 5055, 5053, 1, 0, 0, 0, 5055, 5054, 1, 0, 0, 0, 5056, - 5058, 1, 0, 0, 0, 5057, 5052, 1, 0, 0, 0, 5057, 5058, 1, 0, 0, 0, 5058, - 5105, 1, 0, 0, 0, 5059, 5060, 5, 65, 0, 0, 5060, 5061, 5, 437, 0, 0, 5061, - 5067, 5, 120, 0, 0, 5062, 5065, 5, 289, 0, 0, 5063, 5066, 3, 708, 354, - 0, 5064, 5066, 5, 515, 0, 0, 5065, 5063, 1, 0, 0, 0, 5065, 5064, 1, 0, - 0, 0, 5066, 5068, 1, 0, 0, 0, 5067, 5062, 1, 0, 0, 0, 5067, 5068, 1, 0, - 0, 0, 5068, 5105, 1, 0, 0, 0, 5069, 5070, 5, 65, 0, 0, 5070, 5105, 5, 440, - 0, 0, 5071, 5072, 5, 65, 0, 0, 5072, 5105, 5, 388, 0, 0, 5073, 5074, 5, - 65, 0, 0, 5074, 5075, 5, 353, 0, 0, 5075, 5081, 5, 385, 0, 0, 5076, 5079, - 5, 289, 0, 0, 5077, 5080, 3, 708, 354, 0, 5078, 5080, 5, 515, 0, 0, 5079, - 5077, 1, 0, 0, 0, 5079, 5078, 1, 0, 0, 0, 5080, 5082, 1, 0, 0, 0, 5081, - 5076, 1, 0, 0, 0, 5081, 5082, 1, 0, 0, 0, 5082, 5105, 1, 0, 0, 0, 5083, - 5084, 5, 65, 0, 0, 5084, 5085, 5, 311, 0, 0, 5085, 5091, 5, 340, 0, 0, - 5086, 5089, 5, 289, 0, 0, 5087, 5090, 3, 708, 354, 0, 5088, 5090, 5, 515, - 0, 0, 5089, 5087, 1, 0, 0, 0, 5089, 5088, 1, 0, 0, 0, 5090, 5092, 1, 0, - 0, 0, 5091, 5086, 1, 0, 0, 0, 5091, 5092, 1, 0, 0, 0, 5092, 5105, 1, 0, - 0, 0, 5093, 5094, 5, 65, 0, 0, 5094, 5095, 5, 342, 0, 0, 5095, 5096, 5, - 311, 0, 0, 5096, 5102, 5, 313, 0, 0, 5097, 5100, 5, 289, 0, 0, 5098, 5101, - 3, 708, 354, 0, 5099, 5101, 5, 515, 0, 0, 5100, 5098, 1, 0, 0, 0, 5100, - 5099, 1, 0, 0, 0, 5101, 5103, 1, 0, 0, 0, 5102, 5097, 1, 0, 0, 0, 5102, - 5103, 1, 0, 0, 0, 5103, 5105, 1, 0, 0, 0, 5104, 4697, 1, 0, 0, 0, 5104, - 4699, 1, 0, 0, 0, 5104, 4704, 1, 0, 0, 0, 5104, 4709, 1, 0, 0, 0, 5104, - 4714, 1, 0, 0, 0, 5104, 4719, 1, 0, 0, 0, 5104, 4728, 1, 0, 0, 0, 5104, - 4737, 1, 0, 0, 0, 5104, 4746, 1, 0, 0, 0, 5104, 4755, 1, 0, 0, 0, 5104, - 4764, 1, 0, 0, 0, 5104, 4773, 1, 0, 0, 0, 5104, 4782, 1, 0, 0, 0, 5104, - 4791, 1, 0, 0, 0, 5104, 4800, 1, 0, 0, 0, 5104, 4810, 1, 0, 0, 0, 5104, - 4819, 1, 0, 0, 0, 5104, 4828, 1, 0, 0, 0, 5104, 4838, 1, 0, 0, 0, 5104, - 4848, 1, 0, 0, 0, 5104, 4858, 1, 0, 0, 0, 5104, 4861, 1, 0, 0, 0, 5104, - 4864, 1, 0, 0, 0, 5104, 4867, 1, 0, 0, 0, 5104, 4869, 1, 0, 0, 0, 5104, - 4871, 1, 0, 0, 0, 5104, 4873, 1, 0, 0, 0, 5104, 4876, 1, 0, 0, 0, 5104, - 4879, 1, 0, 0, 0, 5104, 4886, 1, 0, 0, 0, 5104, 4893, 1, 0, 0, 0, 5104, - 4897, 1, 0, 0, 0, 5104, 4901, 1, 0, 0, 0, 5104, 4909, 1, 0, 0, 0, 5104, - 4914, 1, 0, 0, 0, 5104, 4917, 1, 0, 0, 0, 5104, 4927, 1, 0, 0, 0, 5104, - 4930, 1, 0, 0, 0, 5104, 4933, 1, 0, 0, 0, 5104, 4937, 1, 0, 0, 0, 5104, - 4942, 1, 0, 0, 0, 5104, 4947, 1, 0, 0, 0, 5104, 4952, 1, 0, 0, 0, 5104, - 4962, 1, 0, 0, 0, 5104, 4972, 1, 0, 0, 0, 5104, 4982, 1, 0, 0, 0, 5104, - 4992, 1, 0, 0, 0, 5104, 5002, 1, 0, 0, 0, 5104, 5004, 1, 0, 0, 0, 5104, - 5011, 1, 0, 0, 0, 5104, 5014, 1, 0, 0, 0, 5104, 5021, 1, 0, 0, 0, 5104, - 5037, 1, 0, 0, 0, 5104, 5048, 1, 0, 0, 0, 5104, 5059, 1, 0, 0, 0, 5104, - 5069, 1, 0, 0, 0, 5104, 5071, 1, 0, 0, 0, 5104, 5073, 1, 0, 0, 0, 5104, - 5083, 1, 0, 0, 0, 5104, 5093, 1, 0, 0, 0, 5105, 563, 1, 0, 0, 0, 5106, - 5107, 5, 72, 0, 0, 5107, 5112, 3, 568, 284, 0, 5108, 5109, 5, 285, 0, 0, - 5109, 5111, 3, 568, 284, 0, 5110, 5108, 1, 0, 0, 0, 5111, 5114, 1, 0, 0, - 0, 5112, 5110, 1, 0, 0, 0, 5112, 5113, 1, 0, 0, 0, 5113, 5120, 1, 0, 0, - 0, 5114, 5112, 1, 0, 0, 0, 5115, 5118, 5, 289, 0, 0, 5116, 5119, 3, 708, - 354, 0, 5117, 5119, 5, 515, 0, 0, 5118, 5116, 1, 0, 0, 0, 5118, 5117, 1, - 0, 0, 0, 5119, 5121, 1, 0, 0, 0, 5120, 5115, 1, 0, 0, 0, 5120, 5121, 1, - 0, 0, 0, 5121, 5128, 1, 0, 0, 0, 5122, 5125, 5, 289, 0, 0, 5123, 5126, - 3, 708, 354, 0, 5124, 5126, 5, 515, 0, 0, 5125, 5123, 1, 0, 0, 0, 5125, - 5124, 1, 0, 0, 0, 5126, 5128, 1, 0, 0, 0, 5127, 5106, 1, 0, 0, 0, 5127, - 5122, 1, 0, 0, 0, 5128, 565, 1, 0, 0, 0, 5129, 5130, 7, 32, 0, 0, 5130, - 567, 1, 0, 0, 0, 5131, 5132, 5, 435, 0, 0, 5132, 5133, 7, 33, 0, 0, 5133, - 5138, 5, 511, 0, 0, 5134, 5135, 5, 515, 0, 0, 5135, 5136, 7, 33, 0, 0, - 5136, 5138, 5, 511, 0, 0, 5137, 5131, 1, 0, 0, 0, 5137, 5134, 1, 0, 0, - 0, 5138, 569, 1, 0, 0, 0, 5139, 5140, 5, 511, 0, 0, 5140, 5141, 5, 484, - 0, 0, 5141, 5142, 3, 572, 286, 0, 5142, 571, 1, 0, 0, 0, 5143, 5148, 5, - 511, 0, 0, 5144, 5148, 5, 513, 0, 0, 5145, 5148, 3, 716, 358, 0, 5146, - 5148, 5, 288, 0, 0, 5147, 5143, 1, 0, 0, 0, 5147, 5144, 1, 0, 0, 0, 5147, - 5145, 1, 0, 0, 0, 5147, 5146, 1, 0, 0, 0, 5148, 573, 1, 0, 0, 0, 5149, - 5150, 5, 66, 0, 0, 5150, 5151, 5, 344, 0, 0, 5151, 5152, 5, 23, 0, 0, 5152, - 5155, 3, 708, 354, 0, 5153, 5154, 5, 430, 0, 0, 5154, 5156, 5, 515, 0, - 0, 5155, 5153, 1, 0, 0, 0, 5155, 5156, 1, 0, 0, 0, 5156, 5301, 1, 0, 0, - 0, 5157, 5158, 5, 66, 0, 0, 5158, 5159, 5, 344, 0, 0, 5159, 5160, 5, 116, - 0, 0, 5160, 5163, 3, 708, 354, 0, 5161, 5162, 5, 430, 0, 0, 5162, 5164, - 5, 515, 0, 0, 5163, 5161, 1, 0, 0, 0, 5163, 5164, 1, 0, 0, 0, 5164, 5301, - 1, 0, 0, 0, 5165, 5166, 5, 66, 0, 0, 5166, 5167, 5, 344, 0, 0, 5167, 5168, - 5, 402, 0, 0, 5168, 5301, 3, 708, 354, 0, 5169, 5170, 5, 66, 0, 0, 5170, - 5171, 5, 23, 0, 0, 5171, 5301, 3, 708, 354, 0, 5172, 5173, 5, 66, 0, 0, - 5173, 5174, 5, 27, 0, 0, 5174, 5301, 3, 708, 354, 0, 5175, 5176, 5, 66, - 0, 0, 5176, 5177, 5, 30, 0, 0, 5177, 5301, 3, 708, 354, 0, 5178, 5179, - 5, 66, 0, 0, 5179, 5180, 5, 31, 0, 0, 5180, 5301, 3, 708, 354, 0, 5181, - 5182, 5, 66, 0, 0, 5182, 5183, 5, 32, 0, 0, 5183, 5301, 3, 708, 354, 0, - 5184, 5185, 5, 66, 0, 0, 5185, 5186, 5, 33, 0, 0, 5186, 5301, 3, 708, 354, - 0, 5187, 5188, 5, 66, 0, 0, 5188, 5189, 5, 34, 0, 0, 5189, 5301, 3, 708, - 354, 0, 5190, 5191, 5, 66, 0, 0, 5191, 5192, 5, 35, 0, 0, 5192, 5301, 3, - 708, 354, 0, 5193, 5194, 5, 66, 0, 0, 5194, 5195, 5, 28, 0, 0, 5195, 5301, - 3, 708, 354, 0, 5196, 5197, 5, 66, 0, 0, 5197, 5198, 5, 37, 0, 0, 5198, - 5301, 3, 708, 354, 0, 5199, 5200, 5, 66, 0, 0, 5200, 5201, 5, 114, 0, 0, - 5201, 5202, 5, 116, 0, 0, 5202, 5301, 3, 708, 354, 0, 5203, 5204, 5, 66, - 0, 0, 5204, 5205, 5, 115, 0, 0, 5205, 5206, 5, 116, 0, 0, 5206, 5301, 3, - 708, 354, 0, 5207, 5208, 5, 66, 0, 0, 5208, 5209, 5, 29, 0, 0, 5209, 5212, - 5, 515, 0, 0, 5210, 5211, 5, 139, 0, 0, 5211, 5213, 5, 85, 0, 0, 5212, - 5210, 1, 0, 0, 0, 5212, 5213, 1, 0, 0, 0, 5213, 5301, 1, 0, 0, 0, 5214, - 5215, 5, 66, 0, 0, 5215, 5216, 5, 29, 0, 0, 5216, 5217, 5, 443, 0, 0, 5217, - 5301, 3, 708, 354, 0, 5218, 5219, 5, 66, 0, 0, 5219, 5220, 5, 455, 0, 0, - 5220, 5221, 5, 443, 0, 0, 5221, 5301, 5, 511, 0, 0, 5222, 5223, 5, 66, - 0, 0, 5223, 5224, 5, 450, 0, 0, 5224, 5225, 5, 455, 0, 0, 5225, 5301, 5, - 511, 0, 0, 5226, 5227, 5, 66, 0, 0, 5227, 5228, 5, 314, 0, 0, 5228, 5229, - 5, 339, 0, 0, 5229, 5301, 3, 708, 354, 0, 5230, 5231, 5, 66, 0, 0, 5231, - 5232, 5, 314, 0, 0, 5232, 5233, 5, 312, 0, 0, 5233, 5301, 3, 708, 354, - 0, 5234, 5235, 5, 66, 0, 0, 5235, 5236, 5, 26, 0, 0, 5236, 5237, 5, 23, - 0, 0, 5237, 5301, 3, 708, 354, 0, 5238, 5239, 5, 66, 0, 0, 5239, 5242, - 5, 371, 0, 0, 5240, 5243, 3, 708, 354, 0, 5241, 5243, 5, 515, 0, 0, 5242, - 5240, 1, 0, 0, 0, 5242, 5241, 1, 0, 0, 0, 5242, 5243, 1, 0, 0, 0, 5243, - 5301, 1, 0, 0, 0, 5244, 5245, 5, 66, 0, 0, 5245, 5246, 5, 213, 0, 0, 5246, - 5247, 5, 93, 0, 0, 5247, 5248, 7, 1, 0, 0, 5248, 5251, 3, 708, 354, 0, - 5249, 5250, 5, 186, 0, 0, 5250, 5252, 5, 515, 0, 0, 5251, 5249, 1, 0, 0, - 0, 5251, 5252, 1, 0, 0, 0, 5252, 5301, 1, 0, 0, 0, 5253, 5254, 5, 66, 0, - 0, 5254, 5255, 5, 406, 0, 0, 5255, 5256, 5, 496, 0, 0, 5256, 5301, 3, 580, - 290, 0, 5257, 5258, 5, 66, 0, 0, 5258, 5259, 5, 437, 0, 0, 5259, 5260, - 5, 438, 0, 0, 5260, 5261, 5, 312, 0, 0, 5261, 5301, 3, 708, 354, 0, 5262, - 5263, 5, 66, 0, 0, 5263, 5264, 5, 353, 0, 0, 5264, 5265, 5, 352, 0, 0, - 5265, 5301, 3, 708, 354, 0, 5266, 5267, 5, 66, 0, 0, 5267, 5301, 5, 440, - 0, 0, 5268, 5269, 5, 66, 0, 0, 5269, 5270, 5, 387, 0, 0, 5270, 5271, 5, - 71, 0, 0, 5271, 5272, 5, 33, 0, 0, 5272, 5273, 3, 708, 354, 0, 5273, 5274, - 5, 186, 0, 0, 5274, 5275, 3, 710, 355, 0, 5275, 5301, 1, 0, 0, 0, 5276, - 5277, 5, 66, 0, 0, 5277, 5278, 5, 387, 0, 0, 5278, 5279, 5, 71, 0, 0, 5279, - 5280, 5, 34, 0, 0, 5280, 5281, 3, 708, 354, 0, 5281, 5282, 5, 186, 0, 0, - 5282, 5283, 3, 710, 355, 0, 5283, 5301, 1, 0, 0, 0, 5284, 5285, 5, 66, - 0, 0, 5285, 5286, 5, 226, 0, 0, 5286, 5287, 5, 227, 0, 0, 5287, 5301, 3, - 708, 354, 0, 5288, 5289, 5, 66, 0, 0, 5289, 5290, 5, 311, 0, 0, 5290, 5291, - 5, 339, 0, 0, 5291, 5301, 3, 708, 354, 0, 5292, 5293, 5, 66, 0, 0, 5293, - 5294, 5, 342, 0, 0, 5294, 5295, 5, 311, 0, 0, 5295, 5296, 5, 312, 0, 0, - 5296, 5301, 3, 708, 354, 0, 5297, 5298, 5, 66, 0, 0, 5298, 5299, 5, 387, - 0, 0, 5299, 5301, 3, 710, 355, 0, 5300, 5149, 1, 0, 0, 0, 5300, 5157, 1, - 0, 0, 0, 5300, 5165, 1, 0, 0, 0, 5300, 5169, 1, 0, 0, 0, 5300, 5172, 1, - 0, 0, 0, 5300, 5175, 1, 0, 0, 0, 5300, 5178, 1, 0, 0, 0, 5300, 5181, 1, - 0, 0, 0, 5300, 5184, 1, 0, 0, 0, 5300, 5187, 1, 0, 0, 0, 5300, 5190, 1, - 0, 0, 0, 5300, 5193, 1, 0, 0, 0, 5300, 5196, 1, 0, 0, 0, 5300, 5199, 1, - 0, 0, 0, 5300, 5203, 1, 0, 0, 0, 5300, 5207, 1, 0, 0, 0, 5300, 5214, 1, - 0, 0, 0, 5300, 5218, 1, 0, 0, 0, 5300, 5222, 1, 0, 0, 0, 5300, 5226, 1, - 0, 0, 0, 5300, 5230, 1, 0, 0, 0, 5300, 5234, 1, 0, 0, 0, 5300, 5238, 1, - 0, 0, 0, 5300, 5244, 1, 0, 0, 0, 5300, 5253, 1, 0, 0, 0, 5300, 5257, 1, - 0, 0, 0, 5300, 5262, 1, 0, 0, 0, 5300, 5266, 1, 0, 0, 0, 5300, 5268, 1, - 0, 0, 0, 5300, 5276, 1, 0, 0, 0, 5300, 5284, 1, 0, 0, 0, 5300, 5288, 1, - 0, 0, 0, 5300, 5292, 1, 0, 0, 0, 5300, 5297, 1, 0, 0, 0, 5301, 575, 1, - 0, 0, 0, 5302, 5304, 5, 70, 0, 0, 5303, 5305, 7, 34, 0, 0, 5304, 5303, - 1, 0, 0, 0, 5304, 5305, 1, 0, 0, 0, 5305, 5306, 1, 0, 0, 0, 5306, 5307, - 3, 588, 294, 0, 5307, 5308, 5, 71, 0, 0, 5308, 5309, 5, 406, 0, 0, 5309, - 5310, 5, 496, 0, 0, 5310, 5315, 3, 580, 290, 0, 5311, 5313, 5, 76, 0, 0, - 5312, 5311, 1, 0, 0, 0, 5312, 5313, 1, 0, 0, 0, 5313, 5314, 1, 0, 0, 0, - 5314, 5316, 5, 515, 0, 0, 5315, 5312, 1, 0, 0, 0, 5315, 5316, 1, 0, 0, - 0, 5316, 5320, 1, 0, 0, 0, 5317, 5319, 3, 578, 289, 0, 5318, 5317, 1, 0, - 0, 0, 5319, 5322, 1, 0, 0, 0, 5320, 5318, 1, 0, 0, 0, 5320, 5321, 1, 0, - 0, 0, 5321, 5325, 1, 0, 0, 0, 5322, 5320, 1, 0, 0, 0, 5323, 5324, 5, 72, - 0, 0, 5324, 5326, 3, 668, 334, 0, 5325, 5323, 1, 0, 0, 0, 5325, 5326, 1, - 0, 0, 0, 5326, 5333, 1, 0, 0, 0, 5327, 5328, 5, 8, 0, 0, 5328, 5331, 3, - 616, 308, 0, 5329, 5330, 5, 73, 0, 0, 5330, 5332, 3, 668, 334, 0, 5331, - 5329, 1, 0, 0, 0, 5331, 5332, 1, 0, 0, 0, 5332, 5334, 1, 0, 0, 0, 5333, - 5327, 1, 0, 0, 0, 5333, 5334, 1, 0, 0, 0, 5334, 5337, 1, 0, 0, 0, 5335, - 5336, 5, 9, 0, 0, 5336, 5338, 3, 612, 306, 0, 5337, 5335, 1, 0, 0, 0, 5337, - 5338, 1, 0, 0, 0, 5338, 5341, 1, 0, 0, 0, 5339, 5340, 5, 75, 0, 0, 5340, - 5342, 5, 513, 0, 0, 5341, 5339, 1, 0, 0, 0, 5341, 5342, 1, 0, 0, 0, 5342, - 5345, 1, 0, 0, 0, 5343, 5344, 5, 74, 0, 0, 5344, 5346, 5, 513, 0, 0, 5345, - 5343, 1, 0, 0, 0, 5345, 5346, 1, 0, 0, 0, 5346, 577, 1, 0, 0, 0, 5347, - 5349, 3, 602, 301, 0, 5348, 5347, 1, 0, 0, 0, 5348, 5349, 1, 0, 0, 0, 5349, - 5350, 1, 0, 0, 0, 5350, 5351, 5, 86, 0, 0, 5351, 5352, 5, 406, 0, 0, 5352, - 5353, 5, 496, 0, 0, 5353, 5358, 3, 580, 290, 0, 5354, 5356, 5, 76, 0, 0, - 5355, 5354, 1, 0, 0, 0, 5355, 5356, 1, 0, 0, 0, 5356, 5357, 1, 0, 0, 0, - 5357, 5359, 5, 515, 0, 0, 5358, 5355, 1, 0, 0, 0, 5358, 5359, 1, 0, 0, - 0, 5359, 5362, 1, 0, 0, 0, 5360, 5361, 5, 93, 0, 0, 5361, 5363, 3, 668, - 334, 0, 5362, 5360, 1, 0, 0, 0, 5362, 5363, 1, 0, 0, 0, 5363, 579, 1, 0, - 0, 0, 5364, 5365, 7, 35, 0, 0, 5365, 581, 1, 0, 0, 0, 5366, 5374, 3, 584, - 292, 0, 5367, 5369, 5, 125, 0, 0, 5368, 5370, 5, 85, 0, 0, 5369, 5368, - 1, 0, 0, 0, 5369, 5370, 1, 0, 0, 0, 5370, 5371, 1, 0, 0, 0, 5371, 5373, - 3, 584, 292, 0, 5372, 5367, 1, 0, 0, 0, 5373, 5376, 1, 0, 0, 0, 5374, 5372, - 1, 0, 0, 0, 5374, 5375, 1, 0, 0, 0, 5375, 583, 1, 0, 0, 0, 5376, 5374, - 1, 0, 0, 0, 5377, 5379, 3, 586, 293, 0, 5378, 5380, 3, 594, 297, 0, 5379, - 5378, 1, 0, 0, 0, 5379, 5380, 1, 0, 0, 0, 5380, 5382, 1, 0, 0, 0, 5381, - 5383, 3, 604, 302, 0, 5382, 5381, 1, 0, 0, 0, 5382, 5383, 1, 0, 0, 0, 5383, - 5385, 1, 0, 0, 0, 5384, 5386, 3, 606, 303, 0, 5385, 5384, 1, 0, 0, 0, 5385, - 5386, 1, 0, 0, 0, 5386, 5388, 1, 0, 0, 0, 5387, 5389, 3, 608, 304, 0, 5388, - 5387, 1, 0, 0, 0, 5388, 5389, 1, 0, 0, 0, 5389, 5391, 1, 0, 0, 0, 5390, - 5392, 3, 610, 305, 0, 5391, 5390, 1, 0, 0, 0, 5391, 5392, 1, 0, 0, 0, 5392, - 5394, 1, 0, 0, 0, 5393, 5395, 3, 618, 309, 0, 5394, 5393, 1, 0, 0, 0, 5394, - 5395, 1, 0, 0, 0, 5395, 5414, 1, 0, 0, 0, 5396, 5398, 3, 594, 297, 0, 5397, - 5399, 3, 604, 302, 0, 5398, 5397, 1, 0, 0, 0, 5398, 5399, 1, 0, 0, 0, 5399, - 5401, 1, 0, 0, 0, 5400, 5402, 3, 606, 303, 0, 5401, 5400, 1, 0, 0, 0, 5401, - 5402, 1, 0, 0, 0, 5402, 5404, 1, 0, 0, 0, 5403, 5405, 3, 608, 304, 0, 5404, - 5403, 1, 0, 0, 0, 5404, 5405, 1, 0, 0, 0, 5405, 5406, 1, 0, 0, 0, 5406, - 5408, 3, 586, 293, 0, 5407, 5409, 3, 610, 305, 0, 5408, 5407, 1, 0, 0, - 0, 5408, 5409, 1, 0, 0, 0, 5409, 5411, 1, 0, 0, 0, 5410, 5412, 3, 618, - 309, 0, 5411, 5410, 1, 0, 0, 0, 5411, 5412, 1, 0, 0, 0, 5412, 5414, 1, - 0, 0, 0, 5413, 5377, 1, 0, 0, 0, 5413, 5396, 1, 0, 0, 0, 5414, 585, 1, - 0, 0, 0, 5415, 5417, 5, 70, 0, 0, 5416, 5418, 7, 34, 0, 0, 5417, 5416, - 1, 0, 0, 0, 5417, 5418, 1, 0, 0, 0, 5418, 5419, 1, 0, 0, 0, 5419, 5420, - 3, 588, 294, 0, 5420, 587, 1, 0, 0, 0, 5421, 5431, 5, 489, 0, 0, 5422, - 5427, 3, 590, 295, 0, 5423, 5424, 5, 495, 0, 0, 5424, 5426, 3, 590, 295, - 0, 5425, 5423, 1, 0, 0, 0, 5426, 5429, 1, 0, 0, 0, 5427, 5425, 1, 0, 0, - 0, 5427, 5428, 1, 0, 0, 0, 5428, 5431, 1, 0, 0, 0, 5429, 5427, 1, 0, 0, - 0, 5430, 5421, 1, 0, 0, 0, 5430, 5422, 1, 0, 0, 0, 5431, 589, 1, 0, 0, - 0, 5432, 5435, 3, 668, 334, 0, 5433, 5434, 5, 76, 0, 0, 5434, 5436, 3, - 592, 296, 0, 5435, 5433, 1, 0, 0, 0, 5435, 5436, 1, 0, 0, 0, 5436, 5443, - 1, 0, 0, 0, 5437, 5440, 3, 696, 348, 0, 5438, 5439, 5, 76, 0, 0, 5439, - 5441, 3, 592, 296, 0, 5440, 5438, 1, 0, 0, 0, 5440, 5441, 1, 0, 0, 0, 5441, - 5443, 1, 0, 0, 0, 5442, 5432, 1, 0, 0, 0, 5442, 5437, 1, 0, 0, 0, 5443, - 591, 1, 0, 0, 0, 5444, 5447, 5, 515, 0, 0, 5445, 5447, 3, 730, 365, 0, - 5446, 5444, 1, 0, 0, 0, 5446, 5445, 1, 0, 0, 0, 5447, 593, 1, 0, 0, 0, - 5448, 5449, 5, 71, 0, 0, 5449, 5453, 3, 596, 298, 0, 5450, 5452, 3, 598, - 299, 0, 5451, 5450, 1, 0, 0, 0, 5452, 5455, 1, 0, 0, 0, 5453, 5451, 1, - 0, 0, 0, 5453, 5454, 1, 0, 0, 0, 5454, 595, 1, 0, 0, 0, 5455, 5453, 1, - 0, 0, 0, 5456, 5461, 3, 708, 354, 0, 5457, 5459, 5, 76, 0, 0, 5458, 5457, - 1, 0, 0, 0, 5458, 5459, 1, 0, 0, 0, 5459, 5460, 1, 0, 0, 0, 5460, 5462, - 5, 515, 0, 0, 5461, 5458, 1, 0, 0, 0, 5461, 5462, 1, 0, 0, 0, 5462, 5473, - 1, 0, 0, 0, 5463, 5464, 5, 497, 0, 0, 5464, 5465, 3, 582, 291, 0, 5465, - 5470, 5, 498, 0, 0, 5466, 5468, 5, 76, 0, 0, 5467, 5466, 1, 0, 0, 0, 5467, - 5468, 1, 0, 0, 0, 5468, 5469, 1, 0, 0, 0, 5469, 5471, 5, 515, 0, 0, 5470, - 5467, 1, 0, 0, 0, 5470, 5471, 1, 0, 0, 0, 5471, 5473, 1, 0, 0, 0, 5472, - 5456, 1, 0, 0, 0, 5472, 5463, 1, 0, 0, 0, 5473, 597, 1, 0, 0, 0, 5474, - 5476, 3, 602, 301, 0, 5475, 5474, 1, 0, 0, 0, 5475, 5476, 1, 0, 0, 0, 5476, - 5477, 1, 0, 0, 0, 5477, 5478, 5, 86, 0, 0, 5478, 5481, 3, 596, 298, 0, - 5479, 5480, 5, 93, 0, 0, 5480, 5482, 3, 668, 334, 0, 5481, 5479, 1, 0, - 0, 0, 5481, 5482, 1, 0, 0, 0, 5482, 5495, 1, 0, 0, 0, 5483, 5485, 3, 602, - 301, 0, 5484, 5483, 1, 0, 0, 0, 5484, 5485, 1, 0, 0, 0, 5485, 5486, 1, - 0, 0, 0, 5486, 5487, 5, 86, 0, 0, 5487, 5492, 3, 600, 300, 0, 5488, 5490, - 5, 76, 0, 0, 5489, 5488, 1, 0, 0, 0, 5489, 5490, 1, 0, 0, 0, 5490, 5491, - 1, 0, 0, 0, 5491, 5493, 5, 515, 0, 0, 5492, 5489, 1, 0, 0, 0, 5492, 5493, - 1, 0, 0, 0, 5493, 5495, 1, 0, 0, 0, 5494, 5475, 1, 0, 0, 0, 5494, 5484, - 1, 0, 0, 0, 5495, 599, 1, 0, 0, 0, 5496, 5497, 5, 515, 0, 0, 5497, 5498, - 5, 490, 0, 0, 5498, 5499, 3, 708, 354, 0, 5499, 5500, 5, 490, 0, 0, 5500, - 5501, 3, 708, 354, 0, 5501, 5507, 1, 0, 0, 0, 5502, 5503, 3, 708, 354, - 0, 5503, 5504, 5, 490, 0, 0, 5504, 5505, 3, 708, 354, 0, 5505, 5507, 1, - 0, 0, 0, 5506, 5496, 1, 0, 0, 0, 5506, 5502, 1, 0, 0, 0, 5507, 601, 1, - 0, 0, 0, 5508, 5510, 5, 87, 0, 0, 5509, 5511, 5, 90, 0, 0, 5510, 5509, - 1, 0, 0, 0, 5510, 5511, 1, 0, 0, 0, 5511, 5523, 1, 0, 0, 0, 5512, 5514, - 5, 88, 0, 0, 5513, 5515, 5, 90, 0, 0, 5514, 5513, 1, 0, 0, 0, 5514, 5515, - 1, 0, 0, 0, 5515, 5523, 1, 0, 0, 0, 5516, 5523, 5, 89, 0, 0, 5517, 5519, - 5, 91, 0, 0, 5518, 5520, 5, 90, 0, 0, 5519, 5518, 1, 0, 0, 0, 5519, 5520, - 1, 0, 0, 0, 5520, 5523, 1, 0, 0, 0, 5521, 5523, 5, 92, 0, 0, 5522, 5508, - 1, 0, 0, 0, 5522, 5512, 1, 0, 0, 0, 5522, 5516, 1, 0, 0, 0, 5522, 5517, - 1, 0, 0, 0, 5522, 5521, 1, 0, 0, 0, 5523, 603, 1, 0, 0, 0, 5524, 5525, - 5, 72, 0, 0, 5525, 5526, 3, 668, 334, 0, 5526, 605, 1, 0, 0, 0, 5527, 5528, - 5, 8, 0, 0, 5528, 5529, 3, 706, 353, 0, 5529, 607, 1, 0, 0, 0, 5530, 5531, - 5, 73, 0, 0, 5531, 5532, 3, 668, 334, 0, 5532, 609, 1, 0, 0, 0, 5533, 5534, - 5, 9, 0, 0, 5534, 5535, 3, 612, 306, 0, 5535, 611, 1, 0, 0, 0, 5536, 5541, - 3, 614, 307, 0, 5537, 5538, 5, 495, 0, 0, 5538, 5540, 3, 614, 307, 0, 5539, - 5537, 1, 0, 0, 0, 5540, 5543, 1, 0, 0, 0, 5541, 5539, 1, 0, 0, 0, 5541, - 5542, 1, 0, 0, 0, 5542, 613, 1, 0, 0, 0, 5543, 5541, 1, 0, 0, 0, 5544, - 5546, 3, 668, 334, 0, 5545, 5547, 7, 6, 0, 0, 5546, 5545, 1, 0, 0, 0, 5546, - 5547, 1, 0, 0, 0, 5547, 615, 1, 0, 0, 0, 5548, 5553, 3, 668, 334, 0, 5549, - 5550, 5, 495, 0, 0, 5550, 5552, 3, 668, 334, 0, 5551, 5549, 1, 0, 0, 0, - 5552, 5555, 1, 0, 0, 0, 5553, 5551, 1, 0, 0, 0, 5553, 5554, 1, 0, 0, 0, - 5554, 617, 1, 0, 0, 0, 5555, 5553, 1, 0, 0, 0, 5556, 5557, 5, 75, 0, 0, - 5557, 5560, 5, 513, 0, 0, 5558, 5559, 5, 74, 0, 0, 5559, 5561, 5, 513, - 0, 0, 5560, 5558, 1, 0, 0, 0, 5560, 5561, 1, 0, 0, 0, 5561, 5569, 1, 0, - 0, 0, 5562, 5563, 5, 74, 0, 0, 5563, 5566, 5, 513, 0, 0, 5564, 5565, 5, - 75, 0, 0, 5565, 5567, 5, 513, 0, 0, 5566, 5564, 1, 0, 0, 0, 5566, 5567, - 1, 0, 0, 0, 5567, 5569, 1, 0, 0, 0, 5568, 5556, 1, 0, 0, 0, 5568, 5562, - 1, 0, 0, 0, 5569, 619, 1, 0, 0, 0, 5570, 5587, 3, 624, 312, 0, 5571, 5587, - 3, 626, 313, 0, 5572, 5587, 3, 628, 314, 0, 5573, 5587, 3, 630, 315, 0, - 5574, 5587, 3, 632, 316, 0, 5575, 5587, 3, 634, 317, 0, 5576, 5587, 3, - 636, 318, 0, 5577, 5587, 3, 638, 319, 0, 5578, 5587, 3, 622, 311, 0, 5579, - 5587, 3, 644, 322, 0, 5580, 5587, 3, 650, 325, 0, 5581, 5587, 3, 652, 326, - 0, 5582, 5587, 3, 666, 333, 0, 5583, 5587, 3, 654, 327, 0, 5584, 5587, - 3, 658, 329, 0, 5585, 5587, 3, 664, 332, 0, 5586, 5570, 1, 0, 0, 0, 5586, - 5571, 1, 0, 0, 0, 5586, 5572, 1, 0, 0, 0, 5586, 5573, 1, 0, 0, 0, 5586, - 5574, 1, 0, 0, 0, 5586, 5575, 1, 0, 0, 0, 5586, 5576, 1, 0, 0, 0, 5586, - 5577, 1, 0, 0, 0, 5586, 5578, 1, 0, 0, 0, 5586, 5579, 1, 0, 0, 0, 5586, - 5580, 1, 0, 0, 0, 5586, 5581, 1, 0, 0, 0, 5586, 5582, 1, 0, 0, 0, 5586, - 5583, 1, 0, 0, 0, 5586, 5584, 1, 0, 0, 0, 5586, 5585, 1, 0, 0, 0, 5587, - 621, 1, 0, 0, 0, 5588, 5589, 5, 158, 0, 0, 5589, 5590, 5, 511, 0, 0, 5590, - 623, 1, 0, 0, 0, 5591, 5592, 5, 56, 0, 0, 5592, 5593, 5, 423, 0, 0, 5593, - 5594, 5, 59, 0, 0, 5594, 5597, 5, 511, 0, 0, 5595, 5596, 5, 61, 0, 0, 5596, - 5598, 5, 511, 0, 0, 5597, 5595, 1, 0, 0, 0, 5597, 5598, 1, 0, 0, 0, 5598, - 5599, 1, 0, 0, 0, 5599, 5600, 5, 62, 0, 0, 5600, 5615, 5, 511, 0, 0, 5601, - 5602, 5, 56, 0, 0, 5602, 5603, 5, 58, 0, 0, 5603, 5615, 5, 511, 0, 0, 5604, - 5605, 5, 56, 0, 0, 5605, 5606, 5, 60, 0, 0, 5606, 5607, 5, 63, 0, 0, 5607, - 5608, 5, 511, 0, 0, 5608, 5609, 5, 64, 0, 0, 5609, 5612, 5, 513, 0, 0, - 5610, 5611, 5, 62, 0, 0, 5611, 5613, 5, 511, 0, 0, 5612, 5610, 1, 0, 0, - 0, 5612, 5613, 1, 0, 0, 0, 5613, 5615, 1, 0, 0, 0, 5614, 5591, 1, 0, 0, - 0, 5614, 5601, 1, 0, 0, 0, 5614, 5604, 1, 0, 0, 0, 5615, 625, 1, 0, 0, - 0, 5616, 5617, 5, 57, 0, 0, 5617, 627, 1, 0, 0, 0, 5618, 5635, 5, 392, - 0, 0, 5619, 5620, 5, 393, 0, 0, 5620, 5622, 5, 406, 0, 0, 5621, 5623, 5, - 91, 0, 0, 5622, 5621, 1, 0, 0, 0, 5622, 5623, 1, 0, 0, 0, 5623, 5625, 1, - 0, 0, 0, 5624, 5626, 5, 192, 0, 0, 5625, 5624, 1, 0, 0, 0, 5625, 5626, - 1, 0, 0, 0, 5626, 5628, 1, 0, 0, 0, 5627, 5629, 5, 407, 0, 0, 5628, 5627, - 1, 0, 0, 0, 5628, 5629, 1, 0, 0, 0, 5629, 5631, 1, 0, 0, 0, 5630, 5632, - 5, 408, 0, 0, 5631, 5630, 1, 0, 0, 0, 5631, 5632, 1, 0, 0, 0, 5632, 5635, - 1, 0, 0, 0, 5633, 5635, 5, 393, 0, 0, 5634, 5618, 1, 0, 0, 0, 5634, 5619, - 1, 0, 0, 0, 5634, 5633, 1, 0, 0, 0, 5635, 629, 1, 0, 0, 0, 5636, 5637, - 5, 394, 0, 0, 5637, 631, 1, 0, 0, 0, 5638, 5639, 5, 395, 0, 0, 5639, 633, - 1, 0, 0, 0, 5640, 5641, 5, 396, 0, 0, 5641, 5642, 5, 397, 0, 0, 5642, 5643, - 5, 511, 0, 0, 5643, 635, 1, 0, 0, 0, 5644, 5645, 5, 396, 0, 0, 5645, 5646, - 5, 60, 0, 0, 5646, 5647, 5, 511, 0, 0, 5647, 637, 1, 0, 0, 0, 5648, 5650, - 5, 398, 0, 0, 5649, 5651, 3, 640, 320, 0, 5650, 5649, 1, 0, 0, 0, 5650, - 5651, 1, 0, 0, 0, 5651, 5654, 1, 0, 0, 0, 5652, 5653, 5, 430, 0, 0, 5653, - 5655, 3, 642, 321, 0, 5654, 5652, 1, 0, 0, 0, 5654, 5655, 1, 0, 0, 0, 5655, - 5660, 1, 0, 0, 0, 5656, 5657, 5, 65, 0, 0, 5657, 5658, 5, 398, 0, 0, 5658, - 5660, 5, 399, 0, 0, 5659, 5648, 1, 0, 0, 0, 5659, 5656, 1, 0, 0, 0, 5660, - 639, 1, 0, 0, 0, 5661, 5662, 3, 708, 354, 0, 5662, 5663, 5, 496, 0, 0, - 5663, 5664, 5, 489, 0, 0, 5664, 5668, 1, 0, 0, 0, 5665, 5668, 3, 708, 354, - 0, 5666, 5668, 5, 489, 0, 0, 5667, 5661, 1, 0, 0, 0, 5667, 5665, 1, 0, - 0, 0, 5667, 5666, 1, 0, 0, 0, 5668, 641, 1, 0, 0, 0, 5669, 5670, 7, 36, - 0, 0, 5670, 643, 1, 0, 0, 0, 5671, 5672, 5, 67, 0, 0, 5672, 5676, 3, 646, - 323, 0, 5673, 5674, 5, 67, 0, 0, 5674, 5676, 5, 85, 0, 0, 5675, 5671, 1, - 0, 0, 0, 5675, 5673, 1, 0, 0, 0, 5676, 645, 1, 0, 0, 0, 5677, 5682, 3, - 648, 324, 0, 5678, 5679, 5, 495, 0, 0, 5679, 5681, 3, 648, 324, 0, 5680, - 5678, 1, 0, 0, 0, 5681, 5684, 1, 0, 0, 0, 5682, 5680, 1, 0, 0, 0, 5682, - 5683, 1, 0, 0, 0, 5683, 647, 1, 0, 0, 0, 5684, 5682, 1, 0, 0, 0, 5685, - 5686, 7, 37, 0, 0, 5686, 649, 1, 0, 0, 0, 5687, 5688, 5, 68, 0, 0, 5688, - 5689, 5, 338, 0, 0, 5689, 651, 1, 0, 0, 0, 5690, 5691, 5, 69, 0, 0, 5691, - 5692, 5, 511, 0, 0, 5692, 653, 1, 0, 0, 0, 5693, 5694, 5, 431, 0, 0, 5694, - 5695, 5, 56, 0, 0, 5695, 5696, 5, 515, 0, 0, 5696, 5697, 5, 511, 0, 0, - 5697, 5698, 5, 76, 0, 0, 5698, 5753, 5, 515, 0, 0, 5699, 5700, 5, 431, - 0, 0, 5700, 5701, 5, 57, 0, 0, 5701, 5753, 5, 515, 0, 0, 5702, 5703, 5, - 431, 0, 0, 5703, 5753, 5, 385, 0, 0, 5704, 5705, 5, 431, 0, 0, 5705, 5706, - 5, 515, 0, 0, 5706, 5707, 5, 65, 0, 0, 5707, 5753, 5, 515, 0, 0, 5708, - 5709, 5, 431, 0, 0, 5709, 5710, 5, 515, 0, 0, 5710, 5711, 5, 66, 0, 0, - 5711, 5753, 5, 515, 0, 0, 5712, 5713, 5, 431, 0, 0, 5713, 5714, 5, 515, - 0, 0, 5714, 5715, 5, 362, 0, 0, 5715, 5716, 5, 363, 0, 0, 5716, 5717, 5, - 358, 0, 0, 5717, 5730, 3, 710, 355, 0, 5718, 5719, 5, 365, 0, 0, 5719, - 5720, 5, 497, 0, 0, 5720, 5725, 3, 710, 355, 0, 5721, 5722, 5, 495, 0, - 0, 5722, 5724, 3, 710, 355, 0, 5723, 5721, 1, 0, 0, 0, 5724, 5727, 1, 0, - 0, 0, 5725, 5723, 1, 0, 0, 0, 5725, 5726, 1, 0, 0, 0, 5726, 5728, 1, 0, - 0, 0, 5727, 5725, 1, 0, 0, 0, 5728, 5729, 5, 498, 0, 0, 5729, 5731, 1, - 0, 0, 0, 5730, 5718, 1, 0, 0, 0, 5730, 5731, 1, 0, 0, 0, 5731, 5744, 1, - 0, 0, 0, 5732, 5733, 5, 366, 0, 0, 5733, 5734, 5, 497, 0, 0, 5734, 5739, - 3, 710, 355, 0, 5735, 5736, 5, 495, 0, 0, 5736, 5738, 3, 710, 355, 0, 5737, + 50, 2, 0, 22, 22, 430, 430, 1, 0, 33, 34, 2, 0, 30, 30, 33, 33, 2, 0, 450, + 451, 482, 482, 2, 0, 93, 93, 482, 482, 2, 0, 516, 516, 518, 518, 2, 0, + 403, 403, 434, 434, 1, 0, 94, 95, 2, 0, 12, 12, 44, 44, 2, 0, 298, 298, + 425, 425, 2, 0, 39, 39, 52, 52, 2, 0, 14, 16, 54, 55, 2, 0, 493, 493, 499, + 499, 3, 0, 69, 69, 135, 138, 305, 305, 2, 0, 100, 100, 337, 340, 2, 0, + 514, 514, 518, 518, 1, 0, 517, 518, 1, 0, 288, 289, 6, 0, 288, 290, 484, + 489, 493, 493, 497, 501, 504, 505, 513, 517, 4, 0, 128, 128, 290, 290, + 299, 300, 518, 519, 12, 0, 39, 39, 148, 157, 160, 162, 164, 165, 167, 167, + 169, 176, 180, 180, 182, 186, 195, 196, 227, 227, 229, 234, 254, 254, 3, + 0, 128, 128, 140, 140, 518, 518, 3, 0, 258, 264, 403, 403, 518, 518, 4, + 0, 135, 136, 249, 253, 298, 298, 518, 518, 2, 0, 218, 218, 516, 516, 1, + 0, 422, 424, 1, 0, 514, 515, 2, 0, 514, 514, 517, 517, 2, 0, 332, 332, + 335, 335, 2, 0, 344, 344, 442, 442, 2, 0, 341, 341, 518, 518, 2, 0, 298, + 300, 514, 514, 2, 0, 385, 385, 518, 518, 8, 0, 148, 154, 160, 162, 165, + 165, 169, 176, 195, 196, 227, 227, 229, 234, 518, 518, 2, 0, 294, 294, + 487, 487, 1, 0, 84, 85, 8, 0, 143, 145, 188, 188, 193, 193, 225, 225, 317, + 317, 380, 381, 383, 386, 518, 518, 2, 0, 332, 332, 403, 404, 1, 0, 518, + 519, 2, 1, 493, 493, 497, 497, 1, 0, 484, 489, 1, 0, 490, 491, 2, 0, 492, + 496, 506, 506, 1, 0, 265, 270, 1, 0, 279, 283, 7, 0, 123, 123, 128, 128, + 140, 140, 186, 186, 279, 285, 299, 300, 518, 519, 1, 0, 299, 300, 7, 0, + 49, 49, 189, 190, 220, 220, 304, 304, 408, 408, 472, 472, 518, 518, 40, + 0, 41, 42, 44, 44, 49, 49, 51, 52, 54, 54, 69, 69, 116, 116, 124, 124, + 135, 136, 138, 138, 164, 164, 168, 168, 189, 189, 192, 194, 197, 197, 206, + 209, 216, 217, 219, 220, 223, 223, 235, 235, 250, 250, 279, 283, 305, 305, + 307, 307, 334, 334, 336, 336, 353, 354, 374, 374, 377, 377, 397, 397, 403, + 403, 405, 405, 419, 420, 422, 425, 433, 433, 446, 446, 450, 451, 456, 458, + 480, 480, 482, 482, 58, 0, 8, 9, 17, 21, 23, 30, 32, 35, 38, 44, 48, 49, + 51, 52, 54, 54, 56, 59, 65, 67, 69, 76, 81, 90, 93, 93, 96, 101, 103, 106, + 110, 110, 112, 114, 116, 118, 120, 120, 124, 124, 132, 132, 135, 136, 138, + 139, 141, 146, 148, 153, 156, 166, 168, 172, 174, 175, 179, 179, 188, 189, + 192, 197, 208, 217, 219, 220, 222, 223, 227, 235, 248, 251, 254, 254, 265, + 273, 279, 283, 288, 294, 297, 305, 307, 310, 314, 336, 341, 369, 371, 387, + 389, 401, 403, 403, 405, 407, 409, 410, 412, 420, 422, 431, 433, 433, 435, + 435, 438, 438, 440, 471, 477, 480, 482, 483, 495, 496, 6960, 0, 737, 1, + 0, 0, 0, 2, 743, 1, 0, 0, 0, 4, 763, 1, 0, 0, 0, 6, 765, 1, 0, 0, 0, 8, + 797, 1, 0, 0, 0, 10, 931, 1, 0, 0, 0, 12, 945, 1, 0, 0, 0, 14, 962, 1, + 0, 0, 0, 16, 988, 1, 0, 0, 0, 18, 1029, 1, 0, 0, 0, 20, 1031, 1, 0, 0, + 0, 22, 1045, 1, 0, 0, 0, 24, 1061, 1, 0, 0, 0, 26, 1063, 1, 0, 0, 0, 28, + 1073, 1, 0, 0, 0, 30, 1080, 1, 0, 0, 0, 32, 1084, 1, 0, 0, 0, 34, 1111, + 1, 0, 0, 0, 36, 1138, 1, 0, 0, 0, 38, 1215, 1, 0, 0, 0, 40, 1228, 1, 0, + 0, 0, 42, 1298, 1, 0, 0, 0, 44, 1317, 1, 0, 0, 0, 46, 1319, 1, 0, 0, 0, + 48, 1327, 1, 0, 0, 0, 50, 1332, 1, 0, 0, 0, 52, 1365, 1, 0, 0, 0, 54, 1367, + 1, 0, 0, 0, 56, 1372, 1, 0, 0, 0, 58, 1383, 1, 0, 0, 0, 60, 1388, 1, 0, + 0, 0, 62, 1396, 1, 0, 0, 0, 64, 1404, 1, 0, 0, 0, 66, 1412, 1, 0, 0, 0, + 68, 1420, 1, 0, 0, 0, 70, 1428, 1, 0, 0, 0, 72, 1436, 1, 0, 0, 0, 74, 1445, + 1, 0, 0, 0, 76, 1465, 1, 0, 0, 0, 78, 1467, 1, 0, 0, 0, 80, 1487, 1, 0, + 0, 0, 82, 1492, 1, 0, 0, 0, 84, 1498, 1, 0, 0, 0, 86, 1506, 1, 0, 0, 0, + 88, 1542, 1, 0, 0, 0, 90, 1590, 1, 0, 0, 0, 92, 1596, 1, 0, 0, 0, 94, 1607, + 1, 0, 0, 0, 96, 1609, 1, 0, 0, 0, 98, 1623, 1, 0, 0, 0, 100, 1625, 1, 0, + 0, 0, 102, 1634, 1, 0, 0, 0, 104, 1655, 1, 0, 0, 0, 106, 1690, 1, 0, 0, + 0, 108, 1728, 1, 0, 0, 0, 110, 1730, 1, 0, 0, 0, 112, 1757, 1, 0, 0, 0, + 114, 1760, 1, 0, 0, 0, 116, 1766, 1, 0, 0, 0, 118, 1774, 1, 0, 0, 0, 120, + 1781, 1, 0, 0, 0, 122, 1808, 1, 0, 0, 0, 124, 1811, 1, 0, 0, 0, 126, 1834, + 1, 0, 0, 0, 128, 1836, 1, 0, 0, 0, 130, 1904, 1, 0, 0, 0, 132, 1918, 1, + 0, 0, 0, 134, 1938, 1, 0, 0, 0, 136, 1953, 1, 0, 0, 0, 138, 1955, 1, 0, + 0, 0, 140, 1961, 1, 0, 0, 0, 142, 1969, 1, 0, 0, 0, 144, 1971, 1, 0, 0, + 0, 146, 1979, 1, 0, 0, 0, 148, 1988, 1, 0, 0, 0, 150, 2014, 1, 0, 0, 0, + 152, 2017, 1, 0, 0, 0, 154, 2021, 1, 0, 0, 0, 156, 2024, 1, 0, 0, 0, 158, + 2034, 1, 0, 0, 0, 160, 2043, 1, 0, 0, 0, 162, 2045, 1, 0, 0, 0, 164, 2056, + 1, 0, 0, 0, 166, 2065, 1, 0, 0, 0, 168, 2067, 1, 0, 0, 0, 170, 2101, 1, + 0, 0, 0, 172, 2116, 1, 0, 0, 0, 174, 2118, 1, 0, 0, 0, 176, 2126, 1, 0, + 0, 0, 178, 2134, 1, 0, 0, 0, 180, 2156, 1, 0, 0, 0, 182, 2175, 1, 0, 0, + 0, 184, 2183, 1, 0, 0, 0, 186, 2189, 1, 0, 0, 0, 188, 2192, 1, 0, 0, 0, + 190, 2198, 1, 0, 0, 0, 192, 2208, 1, 0, 0, 0, 194, 2216, 1, 0, 0, 0, 196, + 2218, 1, 0, 0, 0, 198, 2225, 1, 0, 0, 0, 200, 2233, 1, 0, 0, 0, 202, 2238, + 1, 0, 0, 0, 204, 2571, 1, 0, 0, 0, 206, 2573, 1, 0, 0, 0, 208, 2580, 1, + 0, 0, 0, 210, 2590, 1, 0, 0, 0, 212, 2604, 1, 0, 0, 0, 214, 2613, 1, 0, + 0, 0, 216, 2623, 1, 0, 0, 0, 218, 2635, 1, 0, 0, 0, 220, 2640, 1, 0, 0, + 0, 222, 2645, 1, 0, 0, 0, 224, 2688, 1, 0, 0, 0, 226, 2710, 1, 0, 0, 0, + 228, 2712, 1, 0, 0, 0, 230, 2733, 1, 0, 0, 0, 232, 2745, 1, 0, 0, 0, 234, + 2755, 1, 0, 0, 0, 236, 2757, 1, 0, 0, 0, 238, 2759, 1, 0, 0, 0, 240, 2763, + 1, 0, 0, 0, 242, 2766, 1, 0, 0, 0, 244, 2778, 1, 0, 0, 0, 246, 2794, 1, + 0, 0, 0, 248, 2796, 1, 0, 0, 0, 250, 2802, 1, 0, 0, 0, 252, 2804, 1, 0, + 0, 0, 254, 2808, 1, 0, 0, 0, 256, 2823, 1, 0, 0, 0, 258, 2839, 1, 0, 0, + 0, 260, 2873, 1, 0, 0, 0, 262, 2887, 1, 0, 0, 0, 264, 2897, 1, 0, 0, 0, + 266, 2902, 1, 0, 0, 0, 268, 2920, 1, 0, 0, 0, 270, 2938, 1, 0, 0, 0, 272, + 2940, 1, 0, 0, 0, 274, 2943, 1, 0, 0, 0, 276, 2947, 1, 0, 0, 0, 278, 2961, + 1, 0, 0, 0, 280, 2964, 1, 0, 0, 0, 282, 2978, 1, 0, 0, 0, 284, 3006, 1, + 0, 0, 0, 286, 3010, 1, 0, 0, 0, 288, 3012, 1, 0, 0, 0, 290, 3014, 1, 0, + 0, 0, 292, 3019, 1, 0, 0, 0, 294, 3041, 1, 0, 0, 0, 296, 3043, 1, 0, 0, + 0, 298, 3060, 1, 0, 0, 0, 300, 3064, 1, 0, 0, 0, 302, 3076, 1, 0, 0, 0, + 304, 3079, 1, 0, 0, 0, 306, 3142, 1, 0, 0, 0, 308, 3144, 1, 0, 0, 0, 310, + 3152, 1, 0, 0, 0, 312, 3156, 1, 0, 0, 0, 314, 3184, 1, 0, 0, 0, 316, 3186, + 1, 0, 0, 0, 318, 3192, 1, 0, 0, 0, 320, 3197, 1, 0, 0, 0, 322, 3202, 1, + 0, 0, 0, 324, 3210, 1, 0, 0, 0, 326, 3218, 1, 0, 0, 0, 328, 3220, 1, 0, + 0, 0, 330, 3228, 1, 0, 0, 0, 332, 3232, 1, 0, 0, 0, 334, 3239, 1, 0, 0, + 0, 336, 3252, 1, 0, 0, 0, 338, 3256, 1, 0, 0, 0, 340, 3259, 1, 0, 0, 0, + 342, 3267, 1, 0, 0, 0, 344, 3271, 1, 0, 0, 0, 346, 3279, 1, 0, 0, 0, 348, + 3283, 1, 0, 0, 0, 350, 3291, 1, 0, 0, 0, 352, 3299, 1, 0, 0, 0, 354, 3304, + 1, 0, 0, 0, 356, 3308, 1, 0, 0, 0, 358, 3310, 1, 0, 0, 0, 360, 3318, 1, + 0, 0, 0, 362, 3329, 1, 0, 0, 0, 364, 3331, 1, 0, 0, 0, 366, 3343, 1, 0, + 0, 0, 368, 3345, 1, 0, 0, 0, 370, 3353, 1, 0, 0, 0, 372, 3365, 1, 0, 0, + 0, 374, 3367, 1, 0, 0, 0, 376, 3375, 1, 0, 0, 0, 378, 3377, 1, 0, 0, 0, + 380, 3391, 1, 0, 0, 0, 382, 3393, 1, 0, 0, 0, 384, 3431, 1, 0, 0, 0, 386, + 3433, 1, 0, 0, 0, 388, 3459, 1, 0, 0, 0, 390, 3465, 1, 0, 0, 0, 392, 3468, + 1, 0, 0, 0, 394, 3501, 1, 0, 0, 0, 396, 3503, 1, 0, 0, 0, 398, 3505, 1, + 0, 0, 0, 400, 3610, 1, 0, 0, 0, 402, 3612, 1, 0, 0, 0, 404, 3614, 1, 0, + 0, 0, 406, 3671, 1, 0, 0, 0, 408, 3711, 1, 0, 0, 0, 410, 3713, 1, 0, 0, + 0, 412, 3730, 1, 0, 0, 0, 414, 3735, 1, 0, 0, 0, 416, 3758, 1, 0, 0, 0, + 418, 3760, 1, 0, 0, 0, 420, 3771, 1, 0, 0, 0, 422, 3777, 1, 0, 0, 0, 424, + 3779, 1, 0, 0, 0, 426, 3781, 1, 0, 0, 0, 428, 3783, 1, 0, 0, 0, 430, 3808, + 1, 0, 0, 0, 432, 3823, 1, 0, 0, 0, 434, 3834, 1, 0, 0, 0, 436, 3836, 1, + 0, 0, 0, 438, 3840, 1, 0, 0, 0, 440, 3855, 1, 0, 0, 0, 442, 3859, 1, 0, + 0, 0, 444, 3862, 1, 0, 0, 0, 446, 3868, 1, 0, 0, 0, 448, 3913, 1, 0, 0, + 0, 450, 3915, 1, 0, 0, 0, 452, 3953, 1, 0, 0, 0, 454, 3957, 1, 0, 0, 0, + 456, 3967, 1, 0, 0, 0, 458, 3978, 1, 0, 0, 0, 460, 3980, 1, 0, 0, 0, 462, + 3992, 1, 0, 0, 0, 464, 4006, 1, 0, 0, 0, 466, 4024, 1, 0, 0, 0, 468, 4026, + 1, 0, 0, 0, 470, 4029, 1, 0, 0, 0, 472, 4050, 1, 0, 0, 0, 474, 4070, 1, + 0, 0, 0, 476, 4077, 1, 0, 0, 0, 478, 4092, 1, 0, 0, 0, 480, 4094, 1, 0, + 0, 0, 482, 4102, 1, 0, 0, 0, 484, 4118, 1, 0, 0, 0, 486, 4153, 1, 0, 0, + 0, 488, 4155, 1, 0, 0, 0, 490, 4159, 1, 0, 0, 0, 492, 4163, 1, 0, 0, 0, + 494, 4180, 1, 0, 0, 0, 496, 4182, 1, 0, 0, 0, 498, 4208, 1, 0, 0, 0, 500, + 4223, 1, 0, 0, 0, 502, 4231, 1, 0, 0, 0, 504, 4242, 1, 0, 0, 0, 506, 4266, + 1, 0, 0, 0, 508, 4277, 1, 0, 0, 0, 510, 4289, 1, 0, 0, 0, 512, 4293, 1, + 0, 0, 0, 514, 4315, 1, 0, 0, 0, 516, 4338, 1, 0, 0, 0, 518, 4342, 1, 0, + 0, 0, 520, 4386, 1, 0, 0, 0, 522, 4416, 1, 0, 0, 0, 524, 4515, 1, 0, 0, + 0, 526, 4550, 1, 0, 0, 0, 528, 4552, 1, 0, 0, 0, 530, 4557, 1, 0, 0, 0, + 532, 4595, 1, 0, 0, 0, 534, 4599, 1, 0, 0, 0, 536, 4620, 1, 0, 0, 0, 538, + 4636, 1, 0, 0, 0, 540, 4642, 1, 0, 0, 0, 542, 4653, 1, 0, 0, 0, 544, 4659, + 1, 0, 0, 0, 546, 4666, 1, 0, 0, 0, 548, 4676, 1, 0, 0, 0, 550, 4692, 1, + 0, 0, 0, 552, 4734, 1, 0, 0, 0, 554, 4736, 1, 0, 0, 0, 556, 4738, 1, 0, + 0, 0, 558, 4746, 1, 0, 0, 0, 560, 4752, 1, 0, 0, 0, 562, 5161, 1, 0, 0, + 0, 564, 5184, 1, 0, 0, 0, 566, 5186, 1, 0, 0, 0, 568, 5194, 1, 0, 0, 0, + 570, 5196, 1, 0, 0, 0, 572, 5204, 1, 0, 0, 0, 574, 5357, 1, 0, 0, 0, 576, + 5359, 1, 0, 0, 0, 578, 5405, 1, 0, 0, 0, 580, 5421, 1, 0, 0, 0, 582, 5423, + 1, 0, 0, 0, 584, 5470, 1, 0, 0, 0, 586, 5472, 1, 0, 0, 0, 588, 5487, 1, + 0, 0, 0, 590, 5499, 1, 0, 0, 0, 592, 5503, 1, 0, 0, 0, 594, 5505, 1, 0, + 0, 0, 596, 5529, 1, 0, 0, 0, 598, 5551, 1, 0, 0, 0, 600, 5563, 1, 0, 0, + 0, 602, 5579, 1, 0, 0, 0, 604, 5581, 1, 0, 0, 0, 606, 5584, 1, 0, 0, 0, + 608, 5587, 1, 0, 0, 0, 610, 5590, 1, 0, 0, 0, 612, 5593, 1, 0, 0, 0, 614, + 5601, 1, 0, 0, 0, 616, 5605, 1, 0, 0, 0, 618, 5625, 1, 0, 0, 0, 620, 5643, + 1, 0, 0, 0, 622, 5645, 1, 0, 0, 0, 624, 5671, 1, 0, 0, 0, 626, 5673, 1, + 0, 0, 0, 628, 5691, 1, 0, 0, 0, 630, 5693, 1, 0, 0, 0, 632, 5695, 1, 0, + 0, 0, 634, 5697, 1, 0, 0, 0, 636, 5701, 1, 0, 0, 0, 638, 5716, 1, 0, 0, + 0, 640, 5724, 1, 0, 0, 0, 642, 5726, 1, 0, 0, 0, 644, 5732, 1, 0, 0, 0, + 646, 5734, 1, 0, 0, 0, 648, 5742, 1, 0, 0, 0, 650, 5744, 1, 0, 0, 0, 652, + 5747, 1, 0, 0, 0, 654, 5809, 1, 0, 0, 0, 656, 5812, 1, 0, 0, 0, 658, 5816, + 1, 0, 0, 0, 660, 5856, 1, 0, 0, 0, 662, 5870, 1, 0, 0, 0, 664, 5872, 1, + 0, 0, 0, 666, 5874, 1, 0, 0, 0, 668, 5882, 1, 0, 0, 0, 670, 5884, 1, 0, + 0, 0, 672, 5892, 1, 0, 0, 0, 674, 5901, 1, 0, 0, 0, 676, 5905, 1, 0, 0, + 0, 678, 5936, 1, 0, 0, 0, 680, 5938, 1, 0, 0, 0, 682, 5946, 1, 0, 0, 0, + 684, 5955, 1, 0, 0, 0, 686, 5980, 1, 0, 0, 0, 688, 5982, 1, 0, 0, 0, 690, + 5998, 1, 0, 0, 0, 692, 6005, 1, 0, 0, 0, 694, 6012, 1, 0, 0, 0, 696, 6014, + 1, 0, 0, 0, 698, 6025, 1, 0, 0, 0, 700, 6032, 1, 0, 0, 0, 702, 6034, 1, + 0, 0, 0, 704, 6054, 1, 0, 0, 0, 706, 6056, 1, 0, 0, 0, 708, 6064, 1, 0, + 0, 0, 710, 6075, 1, 0, 0, 0, 712, 6082, 1, 0, 0, 0, 714, 6084, 1, 0, 0, + 0, 716, 6097, 1, 0, 0, 0, 718, 6099, 1, 0, 0, 0, 720, 6101, 1, 0, 0, 0, + 722, 6110, 1, 0, 0, 0, 724, 6112, 1, 0, 0, 0, 726, 6124, 1, 0, 0, 0, 728, + 6129, 1, 0, 0, 0, 730, 6131, 1, 0, 0, 0, 732, 6133, 1, 0, 0, 0, 734, 736, + 3, 2, 1, 0, 735, 734, 1, 0, 0, 0, 736, 739, 1, 0, 0, 0, 737, 735, 1, 0, + 0, 0, 737, 738, 1, 0, 0, 0, 738, 740, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, + 740, 741, 5, 0, 0, 1, 741, 1, 1, 0, 0, 0, 742, 744, 3, 718, 359, 0, 743, + 742, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, 748, 1, 0, 0, 0, 745, 749, + 3, 4, 2, 0, 746, 749, 3, 560, 280, 0, 747, 749, 3, 620, 310, 0, 748, 745, + 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 748, 747, 1, 0, 0, 0, 749, 751, 1, 0, + 0, 0, 750, 752, 5, 497, 0, 0, 751, 750, 1, 0, 0, 0, 751, 752, 1, 0, 0, + 0, 752, 754, 1, 0, 0, 0, 753, 755, 5, 493, 0, 0, 754, 753, 1, 0, 0, 0, + 754, 755, 1, 0, 0, 0, 755, 3, 1, 0, 0, 0, 756, 764, 3, 8, 4, 0, 757, 764, + 3, 10, 5, 0, 758, 764, 3, 38, 19, 0, 759, 764, 3, 40, 20, 0, 760, 764, + 3, 42, 21, 0, 761, 764, 3, 6, 3, 0, 762, 764, 3, 44, 22, 0, 763, 756, 1, + 0, 0, 0, 763, 757, 1, 0, 0, 0, 763, 758, 1, 0, 0, 0, 763, 759, 1, 0, 0, + 0, 763, 760, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 763, 762, 1, 0, 0, 0, 764, + 5, 1, 0, 0, 0, 765, 766, 5, 395, 0, 0, 766, 767, 5, 188, 0, 0, 767, 768, + 5, 48, 0, 0, 768, 773, 3, 570, 285, 0, 769, 770, 5, 498, 0, 0, 770, 772, + 3, 570, 285, 0, 771, 769, 1, 0, 0, 0, 772, 775, 1, 0, 0, 0, 773, 771, 1, + 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 776, 1, 0, 0, 0, 775, 773, 1, 0, 0, + 0, 776, 777, 5, 72, 0, 0, 777, 782, 3, 568, 284, 0, 778, 779, 5, 288, 0, + 0, 779, 781, 3, 568, 284, 0, 780, 778, 1, 0, 0, 0, 781, 784, 1, 0, 0, 0, + 782, 780, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 790, 1, 0, 0, 0, 784, + 782, 1, 0, 0, 0, 785, 788, 5, 292, 0, 0, 786, 789, 3, 708, 354, 0, 787, + 789, 5, 518, 0, 0, 788, 786, 1, 0, 0, 0, 788, 787, 1, 0, 0, 0, 789, 791, + 1, 0, 0, 0, 790, 785, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 794, 1, 0, + 0, 0, 792, 793, 5, 436, 0, 0, 793, 795, 5, 437, 0, 0, 794, 792, 1, 0, 0, + 0, 794, 795, 1, 0, 0, 0, 795, 7, 1, 0, 0, 0, 796, 798, 3, 718, 359, 0, + 797, 796, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 802, 1, 0, 0, 0, 799, + 801, 3, 720, 360, 0, 800, 799, 1, 0, 0, 0, 801, 804, 1, 0, 0, 0, 802, 800, + 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 805, 1, 0, 0, 0, 804, 802, 1, 0, + 0, 0, 805, 808, 5, 17, 0, 0, 806, 807, 5, 289, 0, 0, 807, 809, 7, 0, 0, + 0, 808, 806, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 834, 1, 0, 0, 0, 810, + 835, 3, 90, 45, 0, 811, 835, 3, 122, 61, 0, 812, 835, 3, 138, 69, 0, 813, + 835, 3, 178, 89, 0, 814, 835, 3, 180, 90, 0, 815, 835, 3, 332, 166, 0, + 816, 835, 3, 334, 167, 0, 817, 835, 3, 144, 72, 0, 818, 835, 3, 168, 84, + 0, 819, 835, 3, 438, 219, 0, 820, 835, 3, 446, 223, 0, 821, 835, 3, 454, + 227, 0, 822, 835, 3, 462, 231, 0, 823, 835, 3, 480, 240, 0, 824, 835, 3, + 482, 241, 0, 825, 835, 3, 484, 242, 0, 826, 835, 3, 504, 252, 0, 827, 835, + 3, 506, 253, 0, 828, 835, 3, 512, 256, 0, 829, 835, 3, 518, 259, 0, 830, + 835, 3, 50, 25, 0, 831, 835, 3, 78, 39, 0, 832, 835, 3, 156, 78, 0, 833, + 835, 3, 460, 230, 0, 834, 810, 1, 0, 0, 0, 834, 811, 1, 0, 0, 0, 834, 812, + 1, 0, 0, 0, 834, 813, 1, 0, 0, 0, 834, 814, 1, 0, 0, 0, 834, 815, 1, 0, + 0, 0, 834, 816, 1, 0, 0, 0, 834, 817, 1, 0, 0, 0, 834, 818, 1, 0, 0, 0, + 834, 819, 1, 0, 0, 0, 834, 820, 1, 0, 0, 0, 834, 821, 1, 0, 0, 0, 834, + 822, 1, 0, 0, 0, 834, 823, 1, 0, 0, 0, 834, 824, 1, 0, 0, 0, 834, 825, + 1, 0, 0, 0, 834, 826, 1, 0, 0, 0, 834, 827, 1, 0, 0, 0, 834, 828, 1, 0, + 0, 0, 834, 829, 1, 0, 0, 0, 834, 830, 1, 0, 0, 0, 834, 831, 1, 0, 0, 0, + 834, 832, 1, 0, 0, 0, 834, 833, 1, 0, 0, 0, 835, 9, 1, 0, 0, 0, 836, 837, + 5, 18, 0, 0, 837, 838, 5, 23, 0, 0, 838, 840, 3, 708, 354, 0, 839, 841, + 3, 130, 65, 0, 840, 839, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 840, 1, + 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 932, 1, 0, 0, 0, 844, 845, 5, 18, 0, + 0, 845, 846, 5, 27, 0, 0, 846, 848, 3, 708, 354, 0, 847, 849, 3, 132, 66, + 0, 848, 847, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 850, + 851, 1, 0, 0, 0, 851, 932, 1, 0, 0, 0, 852, 853, 5, 18, 0, 0, 853, 854, + 5, 28, 0, 0, 854, 856, 3, 708, 354, 0, 855, 857, 3, 134, 67, 0, 856, 855, + 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 856, 1, 0, 0, 0, 858, 859, 1, 0, + 0, 0, 859, 932, 1, 0, 0, 0, 860, 861, 5, 18, 0, 0, 861, 862, 5, 36, 0, + 0, 862, 864, 3, 708, 354, 0, 863, 865, 3, 136, 68, 0, 864, 863, 1, 0, 0, + 0, 865, 866, 1, 0, 0, 0, 866, 864, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, + 932, 1, 0, 0, 0, 868, 869, 5, 18, 0, 0, 869, 870, 5, 317, 0, 0, 870, 871, + 5, 342, 0, 0, 871, 872, 3, 708, 354, 0, 872, 873, 5, 48, 0, 0, 873, 878, + 3, 490, 245, 0, 874, 875, 5, 498, 0, 0, 875, 877, 3, 490, 245, 0, 876, + 874, 1, 0, 0, 0, 877, 880, 1, 0, 0, 0, 878, 876, 1, 0, 0, 0, 878, 879, + 1, 0, 0, 0, 879, 932, 1, 0, 0, 0, 880, 878, 1, 0, 0, 0, 881, 882, 5, 18, + 0, 0, 882, 883, 5, 317, 0, 0, 883, 884, 5, 315, 0, 0, 884, 885, 3, 708, + 354, 0, 885, 886, 5, 48, 0, 0, 886, 891, 3, 490, 245, 0, 887, 888, 5, 498, + 0, 0, 888, 890, 3, 490, 245, 0, 889, 887, 1, 0, 0, 0, 890, 893, 1, 0, 0, + 0, 891, 889, 1, 0, 0, 0, 891, 892, 1, 0, 0, 0, 892, 932, 1, 0, 0, 0, 893, + 891, 1, 0, 0, 0, 894, 895, 5, 18, 0, 0, 895, 896, 5, 214, 0, 0, 896, 897, + 5, 93, 0, 0, 897, 898, 7, 1, 0, 0, 898, 899, 3, 708, 354, 0, 899, 900, + 5, 187, 0, 0, 900, 902, 5, 518, 0, 0, 901, 903, 3, 12, 6, 0, 902, 901, + 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 902, 1, 0, 0, 0, 904, 905, 1, 0, + 0, 0, 905, 932, 1, 0, 0, 0, 906, 907, 5, 18, 0, 0, 907, 908, 5, 443, 0, + 0, 908, 932, 3, 552, 276, 0, 909, 910, 5, 18, 0, 0, 910, 911, 5, 33, 0, + 0, 911, 912, 3, 708, 354, 0, 912, 914, 5, 502, 0, 0, 913, 915, 3, 16, 8, + 0, 914, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 914, 1, 0, 0, 0, 916, + 917, 1, 0, 0, 0, 917, 918, 1, 0, 0, 0, 918, 919, 5, 503, 0, 0, 919, 932, + 1, 0, 0, 0, 920, 921, 5, 18, 0, 0, 921, 922, 5, 34, 0, 0, 922, 923, 3, + 708, 354, 0, 923, 925, 5, 502, 0, 0, 924, 926, 3, 16, 8, 0, 925, 924, 1, + 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 925, 1, 0, 0, 0, 927, 928, 1, 0, 0, + 0, 928, 929, 1, 0, 0, 0, 929, 930, 5, 503, 0, 0, 930, 932, 1, 0, 0, 0, + 931, 836, 1, 0, 0, 0, 931, 844, 1, 0, 0, 0, 931, 852, 1, 0, 0, 0, 931, + 860, 1, 0, 0, 0, 931, 868, 1, 0, 0, 0, 931, 881, 1, 0, 0, 0, 931, 894, + 1, 0, 0, 0, 931, 906, 1, 0, 0, 0, 931, 909, 1, 0, 0, 0, 931, 920, 1, 0, + 0, 0, 932, 11, 1, 0, 0, 0, 933, 934, 5, 48, 0, 0, 934, 939, 3, 14, 7, 0, + 935, 936, 5, 498, 0, 0, 936, 938, 3, 14, 7, 0, 937, 935, 1, 0, 0, 0, 938, + 941, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 946, + 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 942, 943, 5, 215, 0, 0, 943, 944, 5, + 211, 0, 0, 944, 946, 5, 212, 0, 0, 945, 933, 1, 0, 0, 0, 945, 942, 1, 0, + 0, 0, 946, 13, 1, 0, 0, 0, 947, 948, 5, 208, 0, 0, 948, 949, 5, 487, 0, + 0, 949, 963, 5, 514, 0, 0, 950, 951, 5, 209, 0, 0, 951, 952, 5, 487, 0, + 0, 952, 963, 5, 514, 0, 0, 953, 954, 5, 514, 0, 0, 954, 955, 5, 487, 0, + 0, 955, 963, 5, 514, 0, 0, 956, 957, 5, 514, 0, 0, 957, 958, 5, 487, 0, + 0, 958, 963, 5, 93, 0, 0, 959, 960, 5, 514, 0, 0, 960, 961, 5, 487, 0, + 0, 961, 963, 5, 482, 0, 0, 962, 947, 1, 0, 0, 0, 962, 950, 1, 0, 0, 0, + 962, 953, 1, 0, 0, 0, 962, 956, 1, 0, 0, 0, 962, 959, 1, 0, 0, 0, 963, + 15, 1, 0, 0, 0, 964, 966, 3, 18, 9, 0, 965, 967, 5, 497, 0, 0, 966, 965, + 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 989, 1, 0, 0, 0, 968, 970, 3, 24, + 12, 0, 969, 971, 5, 497, 0, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, + 0, 971, 989, 1, 0, 0, 0, 972, 974, 3, 26, 13, 0, 973, 975, 5, 497, 0, 0, + 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 989, 1, 0, 0, 0, 976, + 978, 3, 28, 14, 0, 977, 979, 5, 497, 0, 0, 978, 977, 1, 0, 0, 0, 978, 979, + 1, 0, 0, 0, 979, 989, 1, 0, 0, 0, 980, 982, 3, 30, 15, 0, 981, 983, 5, + 497, 0, 0, 982, 981, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 989, 1, 0, + 0, 0, 984, 986, 3, 32, 16, 0, 985, 987, 5, 497, 0, 0, 986, 985, 1, 0, 0, + 0, 986, 987, 1, 0, 0, 0, 987, 989, 1, 0, 0, 0, 988, 964, 1, 0, 0, 0, 988, + 968, 1, 0, 0, 0, 988, 972, 1, 0, 0, 0, 988, 976, 1, 0, 0, 0, 988, 980, + 1, 0, 0, 0, 988, 984, 1, 0, 0, 0, 989, 17, 1, 0, 0, 0, 990, 991, 5, 48, + 0, 0, 991, 992, 5, 35, 0, 0, 992, 993, 5, 487, 0, 0, 993, 1006, 3, 708, + 354, 0, 994, 995, 5, 358, 0, 0, 995, 996, 5, 500, 0, 0, 996, 1001, 3, 20, + 10, 0, 997, 998, 5, 498, 0, 0, 998, 1000, 3, 20, 10, 0, 999, 997, 1, 0, + 0, 0, 1000, 1003, 1, 0, 0, 0, 1001, 999, 1, 0, 0, 0, 1001, 1002, 1, 0, + 0, 0, 1002, 1004, 1, 0, 0, 0, 1003, 1001, 1, 0, 0, 0, 1004, 1005, 5, 501, + 0, 0, 1005, 1007, 1, 0, 0, 0, 1006, 994, 1, 0, 0, 0, 1006, 1007, 1, 0, + 0, 0, 1007, 1030, 1, 0, 0, 0, 1008, 1009, 5, 48, 0, 0, 1009, 1010, 3, 22, + 11, 0, 1010, 1011, 5, 93, 0, 0, 1011, 1012, 3, 710, 355, 0, 1012, 1030, + 1, 0, 0, 0, 1013, 1014, 5, 48, 0, 0, 1014, 1015, 5, 500, 0, 0, 1015, 1020, + 3, 22, 11, 0, 1016, 1017, 5, 498, 0, 0, 1017, 1019, 3, 22, 11, 0, 1018, + 1016, 1, 0, 0, 0, 1019, 1022, 1, 0, 0, 0, 1020, 1018, 1, 0, 0, 0, 1020, + 1021, 1, 0, 0, 0, 1021, 1023, 1, 0, 0, 0, 1022, 1020, 1, 0, 0, 0, 1023, + 1024, 5, 501, 0, 0, 1024, 1025, 5, 93, 0, 0, 1025, 1026, 3, 710, 355, 0, + 1026, 1030, 1, 0, 0, 0, 1027, 1028, 5, 48, 0, 0, 1028, 1030, 3, 22, 11, + 0, 1029, 990, 1, 0, 0, 0, 1029, 1008, 1, 0, 0, 0, 1029, 1013, 1, 0, 0, + 0, 1029, 1027, 1, 0, 0, 0, 1030, 19, 1, 0, 0, 0, 1031, 1032, 3, 710, 355, + 0, 1032, 1033, 5, 76, 0, 0, 1033, 1034, 3, 710, 355, 0, 1034, 21, 1, 0, + 0, 0, 1035, 1036, 5, 192, 0, 0, 1036, 1037, 5, 487, 0, 0, 1037, 1046, 3, + 406, 203, 0, 1038, 1039, 3, 710, 355, 0, 1039, 1040, 5, 487, 0, 0, 1040, + 1041, 3, 430, 215, 0, 1041, 1046, 1, 0, 0, 0, 1042, 1043, 5, 514, 0, 0, + 1043, 1044, 5, 487, 0, 0, 1044, 1046, 3, 430, 215, 0, 1045, 1035, 1, 0, + 0, 0, 1045, 1038, 1, 0, 0, 0, 1045, 1042, 1, 0, 0, 0, 1046, 23, 1, 0, 0, + 0, 1047, 1048, 5, 392, 0, 0, 1048, 1049, 5, 394, 0, 0, 1049, 1050, 3, 710, + 355, 0, 1050, 1051, 5, 502, 0, 0, 1051, 1052, 3, 390, 195, 0, 1052, 1053, + 5, 503, 0, 0, 1053, 1062, 1, 0, 0, 0, 1054, 1055, 5, 392, 0, 0, 1055, 1056, + 5, 393, 0, 0, 1056, 1057, 3, 710, 355, 0, 1057, 1058, 5, 502, 0, 0, 1058, + 1059, 3, 390, 195, 0, 1059, 1060, 5, 503, 0, 0, 1060, 1062, 1, 0, 0, 0, + 1061, 1047, 1, 0, 0, 0, 1061, 1054, 1, 0, 0, 0, 1062, 25, 1, 0, 0, 0, 1063, + 1064, 5, 19, 0, 0, 1064, 1065, 5, 187, 0, 0, 1065, 1070, 3, 710, 355, 0, + 1066, 1067, 5, 498, 0, 0, 1067, 1069, 3, 710, 355, 0, 1068, 1066, 1, 0, + 0, 0, 1069, 1072, 1, 0, 0, 0, 1070, 1068, 1, 0, 0, 0, 1070, 1071, 1, 0, + 0, 0, 1071, 27, 1, 0, 0, 0, 1072, 1070, 1, 0, 0, 0, 1073, 1074, 5, 430, + 0, 0, 1074, 1075, 3, 710, 355, 0, 1075, 1076, 5, 139, 0, 0, 1076, 1077, + 5, 502, 0, 0, 1077, 1078, 3, 390, 195, 0, 1078, 1079, 5, 503, 0, 0, 1079, + 29, 1, 0, 0, 0, 1080, 1081, 5, 47, 0, 0, 1081, 1082, 5, 204, 0, 0, 1082, + 1083, 3, 350, 175, 0, 1083, 31, 1, 0, 0, 0, 1084, 1085, 5, 19, 0, 0, 1085, + 1086, 5, 204, 0, 0, 1086, 1087, 5, 517, 0, 0, 1087, 33, 1, 0, 0, 0, 1088, + 1089, 5, 377, 0, 0, 1089, 1090, 7, 2, 0, 0, 1090, 1093, 3, 708, 354, 0, + 1091, 1092, 5, 429, 0, 0, 1092, 1094, 3, 708, 354, 0, 1093, 1091, 1, 0, + 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1112, 1, 0, 0, 0, 1095, 1096, 5, 378, + 0, 0, 1096, 1097, 5, 33, 0, 0, 1097, 1112, 3, 708, 354, 0, 1098, 1099, + 5, 290, 0, 0, 1099, 1100, 5, 379, 0, 0, 1100, 1101, 5, 33, 0, 0, 1101, + 1112, 3, 708, 354, 0, 1102, 1103, 5, 375, 0, 0, 1103, 1107, 5, 500, 0, + 0, 1104, 1106, 3, 36, 18, 0, 1105, 1104, 1, 0, 0, 0, 1106, 1109, 1, 0, + 0, 0, 1107, 1105, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1110, 1, 0, + 0, 0, 1109, 1107, 1, 0, 0, 0, 1110, 1112, 5, 501, 0, 0, 1111, 1088, 1, + 0, 0, 0, 1111, 1095, 1, 0, 0, 0, 1111, 1098, 1, 0, 0, 0, 1111, 1102, 1, + 0, 0, 0, 1112, 35, 1, 0, 0, 0, 1113, 1114, 5, 375, 0, 0, 1114, 1115, 5, + 156, 0, 0, 1115, 1120, 5, 514, 0, 0, 1116, 1117, 5, 33, 0, 0, 1117, 1121, + 3, 708, 354, 0, 1118, 1119, 5, 30, 0, 0, 1119, 1121, 3, 708, 354, 0, 1120, + 1116, 1, 0, 0, 0, 1120, 1118, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, + 1123, 1, 0, 0, 0, 1122, 1124, 5, 497, 0, 0, 1123, 1122, 1, 0, 0, 0, 1123, + 1124, 1, 0, 0, 0, 1124, 1139, 1, 0, 0, 0, 1125, 1126, 5, 375, 0, 0, 1126, + 1127, 5, 514, 0, 0, 1127, 1131, 5, 500, 0, 0, 1128, 1130, 3, 36, 18, 0, + 1129, 1128, 1, 0, 0, 0, 1130, 1133, 1, 0, 0, 0, 1131, 1129, 1, 0, 0, 0, + 1131, 1132, 1, 0, 0, 0, 1132, 1134, 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, + 1134, 1136, 5, 501, 0, 0, 1135, 1137, 5, 497, 0, 0, 1136, 1135, 1, 0, 0, + 0, 1136, 1137, 1, 0, 0, 0, 1137, 1139, 1, 0, 0, 0, 1138, 1113, 1, 0, 0, + 0, 1138, 1125, 1, 0, 0, 0, 1139, 37, 1, 0, 0, 0, 1140, 1141, 5, 19, 0, + 0, 1141, 1142, 5, 23, 0, 0, 1142, 1216, 3, 708, 354, 0, 1143, 1144, 5, + 19, 0, 0, 1144, 1145, 5, 27, 0, 0, 1145, 1216, 3, 708, 354, 0, 1146, 1147, + 5, 19, 0, 0, 1147, 1148, 5, 28, 0, 0, 1148, 1216, 3, 708, 354, 0, 1149, + 1150, 5, 19, 0, 0, 1150, 1151, 5, 37, 0, 0, 1151, 1216, 3, 708, 354, 0, + 1152, 1153, 5, 19, 0, 0, 1153, 1154, 5, 30, 0, 0, 1154, 1216, 3, 708, 354, + 0, 1155, 1156, 5, 19, 0, 0, 1156, 1157, 5, 31, 0, 0, 1157, 1216, 3, 708, + 354, 0, 1158, 1159, 5, 19, 0, 0, 1159, 1160, 5, 33, 0, 0, 1160, 1216, 3, + 708, 354, 0, 1161, 1162, 5, 19, 0, 0, 1162, 1163, 5, 34, 0, 0, 1163, 1216, + 3, 708, 354, 0, 1164, 1165, 5, 19, 0, 0, 1165, 1166, 5, 29, 0, 0, 1166, + 1216, 3, 708, 354, 0, 1167, 1168, 5, 19, 0, 0, 1168, 1169, 5, 36, 0, 0, + 1169, 1216, 3, 708, 354, 0, 1170, 1171, 5, 19, 0, 0, 1171, 1172, 5, 114, + 0, 0, 1172, 1173, 5, 116, 0, 0, 1173, 1216, 3, 708, 354, 0, 1174, 1175, + 5, 19, 0, 0, 1175, 1176, 5, 41, 0, 0, 1176, 1177, 3, 708, 354, 0, 1177, + 1178, 5, 93, 0, 0, 1178, 1179, 3, 708, 354, 0, 1179, 1216, 1, 0, 0, 0, + 1180, 1181, 5, 19, 0, 0, 1181, 1182, 5, 317, 0, 0, 1182, 1183, 5, 342, + 0, 0, 1183, 1216, 3, 708, 354, 0, 1184, 1185, 5, 19, 0, 0, 1185, 1186, + 5, 317, 0, 0, 1186, 1187, 5, 315, 0, 0, 1187, 1216, 3, 708, 354, 0, 1188, + 1189, 5, 19, 0, 0, 1189, 1190, 5, 440, 0, 0, 1190, 1191, 5, 441, 0, 0, + 1191, 1192, 5, 315, 0, 0, 1192, 1216, 3, 708, 354, 0, 1193, 1194, 5, 19, + 0, 0, 1194, 1195, 5, 32, 0, 0, 1195, 1216, 3, 708, 354, 0, 1196, 1197, + 5, 19, 0, 0, 1197, 1198, 5, 227, 0, 0, 1198, 1199, 5, 228, 0, 0, 1199, + 1216, 3, 708, 354, 0, 1200, 1201, 5, 19, 0, 0, 1201, 1202, 5, 314, 0, 0, + 1202, 1203, 5, 342, 0, 0, 1203, 1216, 3, 708, 354, 0, 1204, 1205, 5, 19, + 0, 0, 1205, 1206, 5, 444, 0, 0, 1206, 1216, 5, 514, 0, 0, 1207, 1208, 5, + 19, 0, 0, 1208, 1209, 5, 220, 0, 0, 1209, 1210, 5, 514, 0, 0, 1210, 1213, + 5, 292, 0, 0, 1211, 1214, 3, 708, 354, 0, 1212, 1214, 5, 518, 0, 0, 1213, + 1211, 1, 0, 0, 0, 1213, 1212, 1, 0, 0, 0, 1214, 1216, 1, 0, 0, 0, 1215, + 1140, 1, 0, 0, 0, 1215, 1143, 1, 0, 0, 0, 1215, 1146, 1, 0, 0, 0, 1215, + 1149, 1, 0, 0, 0, 1215, 1152, 1, 0, 0, 0, 1215, 1155, 1, 0, 0, 0, 1215, + 1158, 1, 0, 0, 0, 1215, 1161, 1, 0, 0, 0, 1215, 1164, 1, 0, 0, 0, 1215, + 1167, 1, 0, 0, 0, 1215, 1170, 1, 0, 0, 0, 1215, 1174, 1, 0, 0, 0, 1215, + 1180, 1, 0, 0, 0, 1215, 1184, 1, 0, 0, 0, 1215, 1188, 1, 0, 0, 0, 1215, + 1193, 1, 0, 0, 0, 1215, 1196, 1, 0, 0, 0, 1215, 1200, 1, 0, 0, 0, 1215, + 1204, 1, 0, 0, 0, 1215, 1207, 1, 0, 0, 0, 1216, 39, 1, 0, 0, 0, 1217, 1218, + 5, 20, 0, 0, 1218, 1219, 5, 23, 0, 0, 1219, 1220, 3, 708, 354, 0, 1220, + 1221, 5, 426, 0, 0, 1221, 1222, 5, 518, 0, 0, 1222, 1229, 1, 0, 0, 0, 1223, + 1224, 5, 20, 0, 0, 1224, 1225, 5, 29, 0, 0, 1225, 1226, 5, 518, 0, 0, 1226, + 1227, 5, 426, 0, 0, 1227, 1229, 5, 518, 0, 0, 1228, 1217, 1, 0, 0, 0, 1228, + 1223, 1, 0, 0, 0, 1229, 41, 1, 0, 0, 0, 1230, 1239, 5, 21, 0, 0, 1231, + 1240, 5, 33, 0, 0, 1232, 1240, 5, 30, 0, 0, 1233, 1240, 5, 34, 0, 0, 1234, + 1240, 5, 31, 0, 0, 1235, 1240, 5, 28, 0, 0, 1236, 1240, 5, 37, 0, 0, 1237, + 1238, 5, 356, 0, 0, 1238, 1240, 5, 355, 0, 0, 1239, 1231, 1, 0, 0, 0, 1239, + 1232, 1, 0, 0, 0, 1239, 1233, 1, 0, 0, 0, 1239, 1234, 1, 0, 0, 0, 1239, + 1235, 1, 0, 0, 0, 1239, 1236, 1, 0, 0, 0, 1239, 1237, 1, 0, 0, 0, 1240, + 1241, 1, 0, 0, 0, 1241, 1242, 3, 708, 354, 0, 1242, 1243, 5, 426, 0, 0, + 1243, 1244, 5, 220, 0, 0, 1244, 1250, 5, 514, 0, 0, 1245, 1248, 5, 292, + 0, 0, 1246, 1249, 3, 708, 354, 0, 1247, 1249, 5, 518, 0, 0, 1248, 1246, + 1, 0, 0, 0, 1248, 1247, 1, 0, 0, 0, 1249, 1251, 1, 0, 0, 0, 1250, 1245, + 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1299, 1, 0, 0, 0, 1252, 1261, + 5, 21, 0, 0, 1253, 1262, 5, 33, 0, 0, 1254, 1262, 5, 30, 0, 0, 1255, 1262, + 5, 34, 0, 0, 1256, 1262, 5, 31, 0, 0, 1257, 1262, 5, 28, 0, 0, 1258, 1262, + 5, 37, 0, 0, 1259, 1260, 5, 356, 0, 0, 1260, 1262, 5, 355, 0, 0, 1261, + 1253, 1, 0, 0, 0, 1261, 1254, 1, 0, 0, 0, 1261, 1255, 1, 0, 0, 0, 1261, + 1256, 1, 0, 0, 0, 1261, 1257, 1, 0, 0, 0, 1261, 1258, 1, 0, 0, 0, 1261, + 1259, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 3, 708, 354, 0, 1264, + 1267, 5, 426, 0, 0, 1265, 1268, 3, 708, 354, 0, 1266, 1268, 5, 518, 0, + 0, 1267, 1265, 1, 0, 0, 0, 1267, 1266, 1, 0, 0, 0, 1268, 1299, 1, 0, 0, + 0, 1269, 1270, 5, 21, 0, 0, 1270, 1271, 5, 23, 0, 0, 1271, 1272, 3, 708, + 354, 0, 1272, 1275, 5, 426, 0, 0, 1273, 1276, 3, 708, 354, 0, 1274, 1276, + 5, 518, 0, 0, 1275, 1273, 1, 0, 0, 0, 1275, 1274, 1, 0, 0, 0, 1276, 1299, + 1, 0, 0, 0, 1277, 1278, 5, 21, 0, 0, 1278, 1279, 5, 220, 0, 0, 1279, 1280, + 3, 708, 354, 0, 1280, 1281, 5, 426, 0, 0, 1281, 1282, 5, 220, 0, 0, 1282, + 1288, 5, 514, 0, 0, 1283, 1286, 5, 292, 0, 0, 1284, 1287, 3, 708, 354, + 0, 1285, 1287, 5, 518, 0, 0, 1286, 1284, 1, 0, 0, 0, 1286, 1285, 1, 0, + 0, 0, 1287, 1289, 1, 0, 0, 0, 1288, 1283, 1, 0, 0, 0, 1288, 1289, 1, 0, + 0, 0, 1289, 1299, 1, 0, 0, 0, 1290, 1291, 5, 21, 0, 0, 1291, 1292, 5, 220, + 0, 0, 1292, 1293, 3, 708, 354, 0, 1293, 1296, 5, 426, 0, 0, 1294, 1297, + 3, 708, 354, 0, 1295, 1297, 5, 518, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, + 1295, 1, 0, 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1230, 1, 0, 0, 0, 1298, + 1252, 1, 0, 0, 0, 1298, 1269, 1, 0, 0, 0, 1298, 1277, 1, 0, 0, 0, 1298, + 1290, 1, 0, 0, 0, 1299, 43, 1, 0, 0, 0, 1300, 1318, 3, 46, 23, 0, 1301, + 1318, 3, 48, 24, 0, 1302, 1318, 3, 52, 26, 0, 1303, 1318, 3, 54, 27, 0, + 1304, 1318, 3, 56, 28, 0, 1305, 1318, 3, 58, 29, 0, 1306, 1318, 3, 60, + 30, 0, 1307, 1318, 3, 62, 31, 0, 1308, 1318, 3, 64, 32, 0, 1309, 1318, + 3, 66, 33, 0, 1310, 1318, 3, 68, 34, 0, 1311, 1318, 3, 70, 35, 0, 1312, + 1318, 3, 72, 36, 0, 1313, 1318, 3, 74, 37, 0, 1314, 1318, 3, 76, 38, 0, + 1315, 1318, 3, 80, 40, 0, 1316, 1318, 3, 82, 41, 0, 1317, 1300, 1, 0, 0, + 0, 1317, 1301, 1, 0, 0, 0, 1317, 1302, 1, 0, 0, 0, 1317, 1303, 1, 0, 0, + 0, 1317, 1304, 1, 0, 0, 0, 1317, 1305, 1, 0, 0, 0, 1317, 1306, 1, 0, 0, + 0, 1317, 1307, 1, 0, 0, 0, 1317, 1308, 1, 0, 0, 0, 1317, 1309, 1, 0, 0, + 0, 1317, 1310, 1, 0, 0, 0, 1317, 1311, 1, 0, 0, 0, 1317, 1312, 1, 0, 0, + 0, 1317, 1313, 1, 0, 0, 0, 1317, 1314, 1, 0, 0, 0, 1317, 1315, 1, 0, 0, + 0, 1317, 1316, 1, 0, 0, 0, 1318, 45, 1, 0, 0, 0, 1319, 1320, 5, 17, 0, + 0, 1320, 1321, 5, 29, 0, 0, 1321, 1322, 5, 446, 0, 0, 1322, 1325, 3, 708, + 354, 0, 1323, 1324, 5, 480, 0, 0, 1324, 1326, 5, 514, 0, 0, 1325, 1323, + 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 47, 1, 0, 0, 0, 1327, 1328, 5, + 19, 0, 0, 1328, 1329, 5, 29, 0, 0, 1329, 1330, 5, 446, 0, 0, 1330, 1331, + 3, 708, 354, 0, 1331, 49, 1, 0, 0, 0, 1332, 1333, 5, 458, 0, 0, 1333, 1334, + 5, 446, 0, 0, 1334, 1335, 3, 710, 355, 0, 1335, 1336, 5, 500, 0, 0, 1336, + 1337, 3, 84, 42, 0, 1337, 1341, 5, 501, 0, 0, 1338, 1339, 5, 452, 0, 0, + 1339, 1340, 5, 85, 0, 0, 1340, 1342, 5, 447, 0, 0, 1341, 1338, 1, 0, 0, + 0, 1341, 1342, 1, 0, 0, 0, 1342, 51, 1, 0, 0, 0, 1343, 1344, 5, 18, 0, + 0, 1344, 1345, 5, 458, 0, 0, 1345, 1346, 5, 446, 0, 0, 1346, 1347, 3, 710, + 355, 0, 1347, 1348, 5, 47, 0, 0, 1348, 1349, 5, 29, 0, 0, 1349, 1350, 5, + 447, 0, 0, 1350, 1351, 5, 500, 0, 0, 1351, 1352, 3, 84, 42, 0, 1352, 1353, + 5, 501, 0, 0, 1353, 1366, 1, 0, 0, 0, 1354, 1355, 5, 18, 0, 0, 1355, 1356, + 5, 458, 0, 0, 1356, 1357, 5, 446, 0, 0, 1357, 1358, 3, 710, 355, 0, 1358, + 1359, 5, 133, 0, 0, 1359, 1360, 5, 29, 0, 0, 1360, 1361, 5, 447, 0, 0, + 1361, 1362, 5, 500, 0, 0, 1362, 1363, 3, 84, 42, 0, 1363, 1364, 5, 501, + 0, 0, 1364, 1366, 1, 0, 0, 0, 1365, 1343, 1, 0, 0, 0, 1365, 1354, 1, 0, + 0, 0, 1366, 53, 1, 0, 0, 0, 1367, 1368, 5, 19, 0, 0, 1368, 1369, 5, 458, + 0, 0, 1369, 1370, 5, 446, 0, 0, 1370, 1371, 3, 710, 355, 0, 1371, 55, 1, + 0, 0, 0, 1372, 1373, 5, 448, 0, 0, 1373, 1374, 3, 84, 42, 0, 1374, 1375, + 5, 93, 0, 0, 1375, 1376, 3, 708, 354, 0, 1376, 1377, 5, 500, 0, 0, 1377, + 1378, 3, 86, 43, 0, 1378, 1381, 5, 501, 0, 0, 1379, 1380, 5, 72, 0, 0, + 1380, 1382, 5, 514, 0, 0, 1381, 1379, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, + 0, 1382, 57, 1, 0, 0, 0, 1383, 1384, 5, 449, 0, 0, 1384, 1385, 3, 84, 42, + 0, 1385, 1386, 5, 93, 0, 0, 1386, 1387, 3, 708, 354, 0, 1387, 59, 1, 0, + 0, 0, 1388, 1389, 5, 448, 0, 0, 1389, 1390, 5, 399, 0, 0, 1390, 1391, 5, + 93, 0, 0, 1391, 1392, 5, 30, 0, 0, 1392, 1393, 3, 708, 354, 0, 1393, 1394, + 5, 426, 0, 0, 1394, 1395, 3, 84, 42, 0, 1395, 61, 1, 0, 0, 0, 1396, 1397, + 5, 449, 0, 0, 1397, 1398, 5, 399, 0, 0, 1398, 1399, 5, 93, 0, 0, 1399, + 1400, 5, 30, 0, 0, 1400, 1401, 3, 708, 354, 0, 1401, 1402, 5, 71, 0, 0, + 1402, 1403, 3, 84, 42, 0, 1403, 63, 1, 0, 0, 0, 1404, 1405, 5, 448, 0, + 0, 1405, 1406, 5, 25, 0, 0, 1406, 1407, 5, 93, 0, 0, 1407, 1408, 5, 33, + 0, 0, 1408, 1409, 3, 708, 354, 0, 1409, 1410, 5, 426, 0, 0, 1410, 1411, + 3, 84, 42, 0, 1411, 65, 1, 0, 0, 0, 1412, 1413, 5, 449, 0, 0, 1413, 1414, + 5, 25, 0, 0, 1414, 1415, 5, 93, 0, 0, 1415, 1416, 5, 33, 0, 0, 1416, 1417, + 3, 708, 354, 0, 1417, 1418, 5, 71, 0, 0, 1418, 1419, 3, 84, 42, 0, 1419, + 67, 1, 0, 0, 0, 1420, 1421, 5, 448, 0, 0, 1421, 1422, 5, 399, 0, 0, 1422, + 1423, 5, 93, 0, 0, 1423, 1424, 5, 32, 0, 0, 1424, 1425, 3, 708, 354, 0, + 1425, 1426, 5, 426, 0, 0, 1426, 1427, 3, 84, 42, 0, 1427, 69, 1, 0, 0, + 0, 1428, 1429, 5, 449, 0, 0, 1429, 1430, 5, 399, 0, 0, 1430, 1431, 5, 93, + 0, 0, 1431, 1432, 5, 32, 0, 0, 1432, 1433, 3, 708, 354, 0, 1433, 1434, + 5, 71, 0, 0, 1434, 1435, 3, 84, 42, 0, 1435, 71, 1, 0, 0, 0, 1436, 1437, + 5, 448, 0, 0, 1437, 1438, 5, 456, 0, 0, 1438, 1439, 5, 93, 0, 0, 1439, + 1440, 5, 317, 0, 0, 1440, 1441, 5, 315, 0, 0, 1441, 1442, 3, 708, 354, + 0, 1442, 1443, 5, 426, 0, 0, 1443, 1444, 3, 84, 42, 0, 1444, 73, 1, 0, + 0, 0, 1445, 1446, 5, 449, 0, 0, 1446, 1447, 5, 456, 0, 0, 1447, 1448, 5, + 93, 0, 0, 1448, 1449, 5, 317, 0, 0, 1449, 1450, 5, 315, 0, 0, 1450, 1451, + 3, 708, 354, 0, 1451, 1452, 5, 71, 0, 0, 1452, 1453, 3, 84, 42, 0, 1453, + 75, 1, 0, 0, 0, 1454, 1455, 5, 18, 0, 0, 1455, 1456, 5, 59, 0, 0, 1456, + 1457, 5, 445, 0, 0, 1457, 1458, 5, 457, 0, 0, 1458, 1466, 7, 3, 0, 0, 1459, + 1460, 5, 18, 0, 0, 1460, 1461, 5, 59, 0, 0, 1461, 1462, 5, 445, 0, 0, 1462, + 1463, 5, 453, 0, 0, 1463, 1464, 5, 483, 0, 0, 1464, 1466, 7, 4, 0, 0, 1465, + 1454, 1, 0, 0, 0, 1465, 1459, 1, 0, 0, 0, 1466, 77, 1, 0, 0, 0, 1467, 1468, + 5, 453, 0, 0, 1468, 1469, 5, 458, 0, 0, 1469, 1470, 5, 514, 0, 0, 1470, + 1471, 5, 354, 0, 0, 1471, 1474, 5, 514, 0, 0, 1472, 1473, 5, 23, 0, 0, + 1473, 1475, 3, 708, 354, 0, 1474, 1472, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, + 0, 1475, 1476, 1, 0, 0, 0, 1476, 1477, 5, 500, 0, 0, 1477, 1482, 3, 710, + 355, 0, 1478, 1479, 5, 498, 0, 0, 1479, 1481, 3, 710, 355, 0, 1480, 1478, + 1, 0, 0, 0, 1481, 1484, 1, 0, 0, 0, 1482, 1480, 1, 0, 0, 0, 1482, 1483, + 1, 0, 0, 0, 1483, 1485, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1485, 1486, + 5, 501, 0, 0, 1486, 79, 1, 0, 0, 0, 1487, 1488, 5, 19, 0, 0, 1488, 1489, + 5, 453, 0, 0, 1489, 1490, 5, 458, 0, 0, 1490, 1491, 5, 514, 0, 0, 1491, + 81, 1, 0, 0, 0, 1492, 1493, 5, 395, 0, 0, 1493, 1496, 5, 445, 0, 0, 1494, + 1495, 5, 292, 0, 0, 1495, 1497, 3, 708, 354, 0, 1496, 1494, 1, 0, 0, 0, + 1496, 1497, 1, 0, 0, 0, 1497, 83, 1, 0, 0, 0, 1498, 1503, 3, 708, 354, + 0, 1499, 1500, 5, 498, 0, 0, 1500, 1502, 3, 708, 354, 0, 1501, 1499, 1, + 0, 0, 0, 1502, 1505, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, + 0, 0, 0, 1504, 85, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1511, 3, 88, + 44, 0, 1507, 1508, 5, 498, 0, 0, 1508, 1510, 3, 88, 44, 0, 1509, 1507, + 1, 0, 0, 0, 1510, 1513, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, + 1, 0, 0, 0, 1512, 87, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1543, 5, + 17, 0, 0, 1515, 1543, 5, 100, 0, 0, 1516, 1517, 5, 478, 0, 0, 1517, 1543, + 5, 492, 0, 0, 1518, 1519, 5, 478, 0, 0, 1519, 1520, 5, 500, 0, 0, 1520, + 1525, 5, 518, 0, 0, 1521, 1522, 5, 498, 0, 0, 1522, 1524, 5, 518, 0, 0, + 1523, 1521, 1, 0, 0, 0, 1524, 1527, 1, 0, 0, 0, 1525, 1523, 1, 0, 0, 0, + 1525, 1526, 1, 0, 0, 0, 1526, 1528, 1, 0, 0, 0, 1527, 1525, 1, 0, 0, 0, + 1528, 1543, 5, 501, 0, 0, 1529, 1530, 5, 479, 0, 0, 1530, 1543, 5, 492, + 0, 0, 1531, 1532, 5, 479, 0, 0, 1532, 1533, 5, 500, 0, 0, 1533, 1538, 5, + 518, 0, 0, 1534, 1535, 5, 498, 0, 0, 1535, 1537, 5, 518, 0, 0, 1536, 1534, + 1, 0, 0, 0, 1537, 1540, 1, 0, 0, 0, 1538, 1536, 1, 0, 0, 0, 1538, 1539, + 1, 0, 0, 0, 1539, 1541, 1, 0, 0, 0, 1540, 1538, 1, 0, 0, 0, 1541, 1543, + 5, 501, 0, 0, 1542, 1514, 1, 0, 0, 0, 1542, 1515, 1, 0, 0, 0, 1542, 1516, + 1, 0, 0, 0, 1542, 1518, 1, 0, 0, 0, 1542, 1529, 1, 0, 0, 0, 1542, 1531, + 1, 0, 0, 0, 1543, 89, 1, 0, 0, 0, 1544, 1545, 5, 24, 0, 0, 1545, 1546, + 5, 23, 0, 0, 1546, 1548, 3, 708, 354, 0, 1547, 1549, 3, 92, 46, 0, 1548, + 1547, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1551, 1, 0, 0, 0, 1550, + 1552, 3, 94, 47, 0, 1551, 1550, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, + 1591, 1, 0, 0, 0, 1553, 1554, 5, 11, 0, 0, 1554, 1555, 5, 23, 0, 0, 1555, + 1557, 3, 708, 354, 0, 1556, 1558, 3, 92, 46, 0, 1557, 1556, 1, 0, 0, 0, + 1557, 1558, 1, 0, 0, 0, 1558, 1560, 1, 0, 0, 0, 1559, 1561, 3, 94, 47, + 0, 1560, 1559, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1591, 1, 0, 0, + 0, 1562, 1563, 5, 25, 0, 0, 1563, 1564, 5, 23, 0, 0, 1564, 1566, 3, 708, + 354, 0, 1565, 1567, 3, 94, 47, 0, 1566, 1565, 1, 0, 0, 0, 1566, 1567, 1, + 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1570, 5, 76, 0, 0, 1569, 1571, 5, + 500, 0, 0, 1570, 1569, 1, 0, 0, 0, 1570, 1571, 1, 0, 0, 0, 1571, 1572, + 1, 0, 0, 0, 1572, 1574, 3, 582, 291, 0, 1573, 1575, 5, 501, 0, 0, 1574, + 1573, 1, 0, 0, 0, 1574, 1575, 1, 0, 0, 0, 1575, 1591, 1, 0, 0, 0, 1576, + 1577, 5, 26, 0, 0, 1577, 1578, 5, 23, 0, 0, 1578, 1580, 3, 708, 354, 0, + 1579, 1581, 3, 94, 47, 0, 1580, 1579, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, + 0, 1581, 1591, 1, 0, 0, 0, 1582, 1583, 5, 23, 0, 0, 1583, 1585, 3, 708, + 354, 0, 1584, 1586, 3, 92, 46, 0, 1585, 1584, 1, 0, 0, 0, 1585, 1586, 1, + 0, 0, 0, 1586, 1588, 1, 0, 0, 0, 1587, 1589, 3, 94, 47, 0, 1588, 1587, + 1, 0, 0, 0, 1588, 1589, 1, 0, 0, 0, 1589, 1591, 1, 0, 0, 0, 1590, 1544, + 1, 0, 0, 0, 1590, 1553, 1, 0, 0, 0, 1590, 1562, 1, 0, 0, 0, 1590, 1576, + 1, 0, 0, 0, 1590, 1582, 1, 0, 0, 0, 1591, 91, 1, 0, 0, 0, 1592, 1593, 5, + 46, 0, 0, 1593, 1597, 3, 708, 354, 0, 1594, 1595, 5, 45, 0, 0, 1595, 1597, + 3, 708, 354, 0, 1596, 1592, 1, 0, 0, 0, 1596, 1594, 1, 0, 0, 0, 1597, 93, + 1, 0, 0, 0, 1598, 1600, 5, 500, 0, 0, 1599, 1601, 3, 100, 50, 0, 1600, + 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, + 1604, 5, 501, 0, 0, 1603, 1605, 3, 96, 48, 0, 1604, 1603, 1, 0, 0, 0, 1604, + 1605, 1, 0, 0, 0, 1605, 1608, 1, 0, 0, 0, 1606, 1608, 3, 96, 48, 0, 1607, + 1598, 1, 0, 0, 0, 1607, 1606, 1, 0, 0, 0, 1608, 95, 1, 0, 0, 0, 1609, 1616, + 3, 98, 49, 0, 1610, 1612, 5, 498, 0, 0, 1611, 1610, 1, 0, 0, 0, 1611, 1612, + 1, 0, 0, 0, 1612, 1613, 1, 0, 0, 0, 1613, 1615, 3, 98, 49, 0, 1614, 1611, + 1, 0, 0, 0, 1615, 1618, 1, 0, 0, 0, 1616, 1614, 1, 0, 0, 0, 1616, 1617, + 1, 0, 0, 0, 1617, 97, 1, 0, 0, 0, 1618, 1616, 1, 0, 0, 0, 1619, 1620, 5, + 408, 0, 0, 1620, 1624, 5, 514, 0, 0, 1621, 1622, 5, 41, 0, 0, 1622, 1624, + 3, 114, 57, 0, 1623, 1619, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1624, 99, + 1, 0, 0, 0, 1625, 1630, 3, 102, 51, 0, 1626, 1627, 5, 498, 0, 0, 1627, + 1629, 3, 102, 51, 0, 1628, 1626, 1, 0, 0, 0, 1629, 1632, 1, 0, 0, 0, 1630, + 1628, 1, 0, 0, 0, 1630, 1631, 1, 0, 0, 0, 1631, 101, 1, 0, 0, 0, 1632, + 1630, 1, 0, 0, 0, 1633, 1635, 3, 718, 359, 0, 1634, 1633, 1, 0, 0, 0, 1634, + 1635, 1, 0, 0, 0, 1635, 1639, 1, 0, 0, 0, 1636, 1638, 3, 720, 360, 0, 1637, + 1636, 1, 0, 0, 0, 1638, 1641, 1, 0, 0, 0, 1639, 1637, 1, 0, 0, 0, 1639, + 1640, 1, 0, 0, 0, 1640, 1642, 1, 0, 0, 0, 1641, 1639, 1, 0, 0, 0, 1642, + 1643, 3, 104, 52, 0, 1643, 1644, 5, 506, 0, 0, 1644, 1648, 3, 108, 54, + 0, 1645, 1647, 3, 106, 53, 0, 1646, 1645, 1, 0, 0, 0, 1647, 1650, 1, 0, + 0, 0, 1648, 1646, 1, 0, 0, 0, 1648, 1649, 1, 0, 0, 0, 1649, 103, 1, 0, + 0, 0, 1650, 1648, 1, 0, 0, 0, 1651, 1656, 5, 518, 0, 0, 1652, 1656, 5, + 520, 0, 0, 1653, 1656, 3, 730, 365, 0, 1654, 1656, 5, 38, 0, 0, 1655, 1651, + 1, 0, 0, 0, 1655, 1652, 1, 0, 0, 0, 1655, 1653, 1, 0, 0, 0, 1655, 1654, + 1, 0, 0, 0, 1656, 105, 1, 0, 0, 0, 1657, 1660, 5, 7, 0, 0, 1658, 1659, + 5, 305, 0, 0, 1659, 1661, 5, 514, 0, 0, 1660, 1658, 1, 0, 0, 0, 1660, 1661, + 1, 0, 0, 0, 1661, 1691, 1, 0, 0, 0, 1662, 1663, 5, 290, 0, 0, 1663, 1666, + 5, 291, 0, 0, 1664, 1665, 5, 305, 0, 0, 1665, 1667, 5, 514, 0, 0, 1666, + 1664, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1691, 1, 0, 0, 0, 1668, + 1671, 5, 297, 0, 0, 1669, 1670, 5, 305, 0, 0, 1670, 1672, 5, 514, 0, 0, + 1671, 1669, 1, 0, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 1691, 1, 0, 0, 0, + 1673, 1676, 5, 298, 0, 0, 1674, 1677, 3, 712, 356, 0, 1675, 1677, 3, 668, + 334, 0, 1676, 1674, 1, 0, 0, 0, 1676, 1675, 1, 0, 0, 0, 1677, 1691, 1, + 0, 0, 0, 1678, 1681, 5, 304, 0, 0, 1679, 1680, 5, 305, 0, 0, 1680, 1682, + 5, 514, 0, 0, 1681, 1679, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1691, + 1, 0, 0, 0, 1683, 1688, 5, 313, 0, 0, 1684, 1686, 5, 477, 0, 0, 1685, 1684, + 1, 0, 0, 0, 1685, 1686, 1, 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1687, 1689, + 3, 708, 354, 0, 1688, 1685, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1691, + 1, 0, 0, 0, 1690, 1657, 1, 0, 0, 0, 1690, 1662, 1, 0, 0, 0, 1690, 1668, + 1, 0, 0, 0, 1690, 1673, 1, 0, 0, 0, 1690, 1678, 1, 0, 0, 0, 1690, 1683, + 1, 0, 0, 0, 1691, 107, 1, 0, 0, 0, 1692, 1696, 5, 265, 0, 0, 1693, 1694, + 5, 500, 0, 0, 1694, 1695, 7, 5, 0, 0, 1695, 1697, 5, 501, 0, 0, 1696, 1693, + 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1729, 1, 0, 0, 0, 1698, 1729, + 5, 266, 0, 0, 1699, 1729, 5, 267, 0, 0, 1700, 1729, 5, 268, 0, 0, 1701, + 1729, 5, 269, 0, 0, 1702, 1729, 5, 270, 0, 0, 1703, 1729, 5, 271, 0, 0, + 1704, 1729, 5, 272, 0, 0, 1705, 1729, 5, 273, 0, 0, 1706, 1729, 5, 274, + 0, 0, 1707, 1729, 5, 275, 0, 0, 1708, 1729, 5, 276, 0, 0, 1709, 1710, 5, + 277, 0, 0, 1710, 1711, 5, 500, 0, 0, 1711, 1712, 3, 110, 55, 0, 1712, 1713, + 5, 501, 0, 0, 1713, 1729, 1, 0, 0, 0, 1714, 1715, 5, 23, 0, 0, 1715, 1716, + 5, 488, 0, 0, 1716, 1717, 5, 518, 0, 0, 1717, 1729, 5, 489, 0, 0, 1718, + 1719, 5, 278, 0, 0, 1719, 1729, 3, 708, 354, 0, 1720, 1721, 5, 28, 0, 0, + 1721, 1722, 5, 500, 0, 0, 1722, 1723, 3, 708, 354, 0, 1723, 1724, 5, 501, + 0, 0, 1724, 1729, 1, 0, 0, 0, 1725, 1726, 5, 13, 0, 0, 1726, 1729, 3, 708, + 354, 0, 1727, 1729, 3, 708, 354, 0, 1728, 1692, 1, 0, 0, 0, 1728, 1698, + 1, 0, 0, 0, 1728, 1699, 1, 0, 0, 0, 1728, 1700, 1, 0, 0, 0, 1728, 1701, + 1, 0, 0, 0, 1728, 1702, 1, 0, 0, 0, 1728, 1703, 1, 0, 0, 0, 1728, 1704, + 1, 0, 0, 0, 1728, 1705, 1, 0, 0, 0, 1728, 1706, 1, 0, 0, 0, 1728, 1707, + 1, 0, 0, 0, 1728, 1708, 1, 0, 0, 0, 1728, 1709, 1, 0, 0, 0, 1728, 1714, + 1, 0, 0, 0, 1728, 1718, 1, 0, 0, 0, 1728, 1720, 1, 0, 0, 0, 1728, 1725, + 1, 0, 0, 0, 1728, 1727, 1, 0, 0, 0, 1729, 109, 1, 0, 0, 0, 1730, 1731, + 7, 6, 0, 0, 1731, 111, 1, 0, 0, 0, 1732, 1736, 5, 265, 0, 0, 1733, 1734, + 5, 500, 0, 0, 1734, 1735, 7, 5, 0, 0, 1735, 1737, 5, 501, 0, 0, 1736, 1733, + 1, 0, 0, 0, 1736, 1737, 1, 0, 0, 0, 1737, 1758, 1, 0, 0, 0, 1738, 1758, + 5, 266, 0, 0, 1739, 1758, 5, 267, 0, 0, 1740, 1758, 5, 268, 0, 0, 1741, + 1758, 5, 269, 0, 0, 1742, 1758, 5, 270, 0, 0, 1743, 1758, 5, 271, 0, 0, + 1744, 1758, 5, 272, 0, 0, 1745, 1758, 5, 273, 0, 0, 1746, 1758, 5, 274, + 0, 0, 1747, 1758, 5, 275, 0, 0, 1748, 1758, 5, 276, 0, 0, 1749, 1750, 5, + 278, 0, 0, 1750, 1758, 3, 708, 354, 0, 1751, 1752, 5, 28, 0, 0, 1752, 1753, + 5, 500, 0, 0, 1753, 1754, 3, 708, 354, 0, 1754, 1755, 5, 501, 0, 0, 1755, + 1758, 1, 0, 0, 0, 1756, 1758, 3, 708, 354, 0, 1757, 1732, 1, 0, 0, 0, 1757, + 1738, 1, 0, 0, 0, 1757, 1739, 1, 0, 0, 0, 1757, 1740, 1, 0, 0, 0, 1757, + 1741, 1, 0, 0, 0, 1757, 1742, 1, 0, 0, 0, 1757, 1743, 1, 0, 0, 0, 1757, + 1744, 1, 0, 0, 0, 1757, 1745, 1, 0, 0, 0, 1757, 1746, 1, 0, 0, 0, 1757, + 1747, 1, 0, 0, 0, 1757, 1748, 1, 0, 0, 0, 1757, 1749, 1, 0, 0, 0, 1757, + 1751, 1, 0, 0, 0, 1757, 1756, 1, 0, 0, 0, 1758, 113, 1, 0, 0, 0, 1759, + 1761, 5, 518, 0, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, + 1762, 1, 0, 0, 0, 1762, 1763, 5, 500, 0, 0, 1763, 1764, 3, 116, 58, 0, + 1764, 1765, 5, 501, 0, 0, 1765, 115, 1, 0, 0, 0, 1766, 1771, 3, 118, 59, + 0, 1767, 1768, 5, 498, 0, 0, 1768, 1770, 3, 118, 59, 0, 1769, 1767, 1, + 0, 0, 0, 1770, 1773, 1, 0, 0, 0, 1771, 1769, 1, 0, 0, 0, 1771, 1772, 1, + 0, 0, 0, 1772, 117, 1, 0, 0, 0, 1773, 1771, 1, 0, 0, 0, 1774, 1776, 3, + 120, 60, 0, 1775, 1777, 7, 7, 0, 0, 1776, 1775, 1, 0, 0, 0, 1776, 1777, + 1, 0, 0, 0, 1777, 119, 1, 0, 0, 0, 1778, 1782, 5, 518, 0, 0, 1779, 1782, + 5, 520, 0, 0, 1780, 1782, 3, 730, 365, 0, 1781, 1778, 1, 0, 0, 0, 1781, + 1779, 1, 0, 0, 0, 1781, 1780, 1, 0, 0, 0, 1782, 121, 1, 0, 0, 0, 1783, + 1784, 5, 27, 0, 0, 1784, 1785, 3, 708, 354, 0, 1785, 1786, 5, 71, 0, 0, + 1786, 1787, 3, 708, 354, 0, 1787, 1788, 5, 426, 0, 0, 1788, 1790, 3, 708, + 354, 0, 1789, 1791, 3, 124, 62, 0, 1790, 1789, 1, 0, 0, 0, 1790, 1791, + 1, 0, 0, 0, 1791, 1809, 1, 0, 0, 0, 1792, 1793, 5, 27, 0, 0, 1793, 1794, + 3, 708, 354, 0, 1794, 1795, 5, 500, 0, 0, 1795, 1796, 5, 71, 0, 0, 1796, + 1797, 3, 708, 354, 0, 1797, 1798, 5, 426, 0, 0, 1798, 1803, 3, 708, 354, + 0, 1799, 1800, 5, 498, 0, 0, 1800, 1802, 3, 126, 63, 0, 1801, 1799, 1, + 0, 0, 0, 1802, 1805, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1803, 1804, 1, + 0, 0, 0, 1804, 1806, 1, 0, 0, 0, 1805, 1803, 1, 0, 0, 0, 1806, 1807, 5, + 501, 0, 0, 1807, 1809, 1, 0, 0, 0, 1808, 1783, 1, 0, 0, 0, 1808, 1792, + 1, 0, 0, 0, 1809, 123, 1, 0, 0, 0, 1810, 1812, 3, 126, 63, 0, 1811, 1810, + 1, 0, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1811, 1, 0, 0, 0, 1813, 1814, + 1, 0, 0, 0, 1814, 125, 1, 0, 0, 0, 1815, 1817, 5, 419, 0, 0, 1816, 1818, + 5, 506, 0, 0, 1817, 1816, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1819, + 1, 0, 0, 0, 1819, 1835, 7, 8, 0, 0, 1820, 1822, 5, 42, 0, 0, 1821, 1823, + 5, 506, 0, 0, 1822, 1821, 1, 0, 0, 0, 1822, 1823, 1, 0, 0, 0, 1823, 1824, + 1, 0, 0, 0, 1824, 1835, 7, 9, 0, 0, 1825, 1827, 5, 51, 0, 0, 1826, 1828, + 5, 506, 0, 0, 1827, 1826, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1829, + 1, 0, 0, 0, 1829, 1835, 7, 10, 0, 0, 1830, 1831, 5, 53, 0, 0, 1831, 1835, + 3, 128, 64, 0, 1832, 1833, 5, 408, 0, 0, 1833, 1835, 5, 514, 0, 0, 1834, + 1815, 1, 0, 0, 0, 1834, 1820, 1, 0, 0, 0, 1834, 1825, 1, 0, 0, 0, 1834, + 1830, 1, 0, 0, 0, 1834, 1832, 1, 0, 0, 0, 1835, 127, 1, 0, 0, 0, 1836, + 1837, 7, 11, 0, 0, 1837, 129, 1, 0, 0, 0, 1838, 1839, 5, 47, 0, 0, 1839, + 1840, 5, 38, 0, 0, 1840, 1905, 3, 102, 51, 0, 1841, 1842, 5, 47, 0, 0, + 1842, 1843, 5, 39, 0, 0, 1843, 1905, 3, 102, 51, 0, 1844, 1845, 5, 20, + 0, 0, 1845, 1846, 5, 38, 0, 0, 1846, 1847, 3, 104, 52, 0, 1847, 1848, 5, + 426, 0, 0, 1848, 1849, 3, 104, 52, 0, 1849, 1905, 1, 0, 0, 0, 1850, 1851, + 5, 20, 0, 0, 1851, 1852, 5, 39, 0, 0, 1852, 1853, 3, 104, 52, 0, 1853, + 1854, 5, 426, 0, 0, 1854, 1855, 3, 104, 52, 0, 1855, 1905, 1, 0, 0, 0, + 1856, 1857, 5, 22, 0, 0, 1857, 1858, 5, 38, 0, 0, 1858, 1859, 3, 104, 52, + 0, 1859, 1863, 3, 108, 54, 0, 1860, 1862, 3, 106, 53, 0, 1861, 1860, 1, + 0, 0, 0, 1862, 1865, 1, 0, 0, 0, 1863, 1861, 1, 0, 0, 0, 1863, 1864, 1, + 0, 0, 0, 1864, 1905, 1, 0, 0, 0, 1865, 1863, 1, 0, 0, 0, 1866, 1867, 5, + 22, 0, 0, 1867, 1868, 5, 39, 0, 0, 1868, 1869, 3, 104, 52, 0, 1869, 1873, + 3, 108, 54, 0, 1870, 1872, 3, 106, 53, 0, 1871, 1870, 1, 0, 0, 0, 1872, + 1875, 1, 0, 0, 0, 1873, 1871, 1, 0, 0, 0, 1873, 1874, 1, 0, 0, 0, 1874, + 1905, 1, 0, 0, 0, 1875, 1873, 1, 0, 0, 0, 1876, 1877, 5, 19, 0, 0, 1877, + 1878, 5, 38, 0, 0, 1878, 1905, 3, 104, 52, 0, 1879, 1880, 5, 19, 0, 0, + 1880, 1881, 5, 39, 0, 0, 1881, 1905, 3, 104, 52, 0, 1882, 1883, 5, 48, + 0, 0, 1883, 1884, 5, 50, 0, 0, 1884, 1905, 5, 514, 0, 0, 1885, 1886, 5, + 48, 0, 0, 1886, 1887, 5, 408, 0, 0, 1887, 1905, 5, 514, 0, 0, 1888, 1889, + 5, 48, 0, 0, 1889, 1890, 5, 43, 0, 0, 1890, 1905, 5, 42, 0, 0, 1891, 1892, + 5, 48, 0, 0, 1892, 1893, 5, 49, 0, 0, 1893, 1894, 5, 500, 0, 0, 1894, 1895, + 5, 516, 0, 0, 1895, 1896, 5, 498, 0, 0, 1896, 1897, 5, 516, 0, 0, 1897, + 1905, 5, 501, 0, 0, 1898, 1899, 5, 47, 0, 0, 1899, 1900, 5, 41, 0, 0, 1900, + 1905, 3, 114, 57, 0, 1901, 1902, 5, 19, 0, 0, 1902, 1903, 5, 41, 0, 0, + 1903, 1905, 5, 518, 0, 0, 1904, 1838, 1, 0, 0, 0, 1904, 1841, 1, 0, 0, + 0, 1904, 1844, 1, 0, 0, 0, 1904, 1850, 1, 0, 0, 0, 1904, 1856, 1, 0, 0, + 0, 1904, 1866, 1, 0, 0, 0, 1904, 1876, 1, 0, 0, 0, 1904, 1879, 1, 0, 0, + 0, 1904, 1882, 1, 0, 0, 0, 1904, 1885, 1, 0, 0, 0, 1904, 1888, 1, 0, 0, + 0, 1904, 1891, 1, 0, 0, 0, 1904, 1898, 1, 0, 0, 0, 1904, 1901, 1, 0, 0, + 0, 1905, 131, 1, 0, 0, 0, 1906, 1907, 5, 48, 0, 0, 1907, 1908, 5, 53, 0, + 0, 1908, 1919, 3, 128, 64, 0, 1909, 1910, 5, 48, 0, 0, 1910, 1911, 5, 42, + 0, 0, 1911, 1919, 7, 9, 0, 0, 1912, 1913, 5, 48, 0, 0, 1913, 1914, 5, 51, + 0, 0, 1914, 1919, 7, 10, 0, 0, 1915, 1916, 5, 48, 0, 0, 1916, 1917, 5, + 408, 0, 0, 1917, 1919, 5, 514, 0, 0, 1918, 1906, 1, 0, 0, 0, 1918, 1909, + 1, 0, 0, 0, 1918, 1912, 1, 0, 0, 0, 1918, 1915, 1, 0, 0, 0, 1919, 133, + 1, 0, 0, 0, 1920, 1921, 5, 47, 0, 0, 1921, 1922, 5, 420, 0, 0, 1922, 1925, + 5, 518, 0, 0, 1923, 1924, 5, 189, 0, 0, 1924, 1926, 5, 514, 0, 0, 1925, + 1923, 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1939, 1, 0, 0, 0, 1927, + 1928, 5, 20, 0, 0, 1928, 1929, 5, 420, 0, 0, 1929, 1930, 5, 518, 0, 0, + 1930, 1931, 5, 426, 0, 0, 1931, 1939, 5, 518, 0, 0, 1932, 1933, 5, 19, + 0, 0, 1933, 1934, 5, 420, 0, 0, 1934, 1939, 5, 518, 0, 0, 1935, 1936, 5, + 48, 0, 0, 1936, 1937, 5, 408, 0, 0, 1937, 1939, 5, 514, 0, 0, 1938, 1920, + 1, 0, 0, 0, 1938, 1927, 1, 0, 0, 0, 1938, 1932, 1, 0, 0, 0, 1938, 1935, + 1, 0, 0, 0, 1939, 135, 1, 0, 0, 0, 1940, 1941, 5, 47, 0, 0, 1941, 1942, + 5, 33, 0, 0, 1942, 1945, 3, 708, 354, 0, 1943, 1944, 5, 49, 0, 0, 1944, + 1946, 5, 516, 0, 0, 1945, 1943, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, + 1954, 1, 0, 0, 0, 1947, 1948, 5, 19, 0, 0, 1948, 1949, 5, 33, 0, 0, 1949, + 1954, 3, 708, 354, 0, 1950, 1951, 5, 48, 0, 0, 1951, 1952, 5, 408, 0, 0, + 1952, 1954, 5, 514, 0, 0, 1953, 1940, 1, 0, 0, 0, 1953, 1947, 1, 0, 0, + 0, 1953, 1950, 1, 0, 0, 0, 1954, 137, 1, 0, 0, 0, 1955, 1956, 5, 29, 0, + 0, 1956, 1958, 5, 518, 0, 0, 1957, 1959, 3, 140, 70, 0, 1958, 1957, 1, + 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 139, 1, 0, 0, 0, 1960, 1962, 3, + 142, 71, 0, 1961, 1960, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 1961, + 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 141, 1, 0, 0, 0, 1965, 1966, + 5, 408, 0, 0, 1966, 1970, 5, 514, 0, 0, 1967, 1968, 5, 220, 0, 0, 1968, + 1970, 5, 514, 0, 0, 1969, 1965, 1, 0, 0, 0, 1969, 1967, 1, 0, 0, 0, 1970, + 143, 1, 0, 0, 0, 1971, 1972, 5, 28, 0, 0, 1972, 1973, 3, 708, 354, 0, 1973, + 1974, 5, 500, 0, 0, 1974, 1975, 3, 146, 73, 0, 1975, 1977, 5, 501, 0, 0, + 1976, 1978, 3, 152, 76, 0, 1977, 1976, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, + 0, 1978, 145, 1, 0, 0, 0, 1979, 1984, 3, 148, 74, 0, 1980, 1981, 5, 498, + 0, 0, 1981, 1983, 3, 148, 74, 0, 1982, 1980, 1, 0, 0, 0, 1983, 1986, 1, + 0, 0, 0, 1984, 1982, 1, 0, 0, 0, 1984, 1985, 1, 0, 0, 0, 1985, 147, 1, + 0, 0, 0, 1986, 1984, 1, 0, 0, 0, 1987, 1989, 3, 718, 359, 0, 1988, 1987, + 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1995, + 3, 150, 75, 0, 1991, 1993, 5, 189, 0, 0, 1992, 1991, 1, 0, 0, 0, 1992, + 1993, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 1996, 5, 514, 0, 0, 1995, + 1992, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 149, 1, 0, 0, 0, 1997, + 2015, 5, 518, 0, 0, 1998, 2015, 5, 520, 0, 0, 1999, 2015, 3, 730, 365, + 0, 2000, 2015, 5, 315, 0, 0, 2001, 2015, 5, 316, 0, 0, 2002, 2015, 5, 350, + 0, 0, 2003, 2015, 5, 349, 0, 0, 2004, 2015, 5, 321, 0, 0, 2005, 2015, 5, + 342, 0, 0, 2006, 2015, 5, 343, 0, 0, 2007, 2015, 5, 344, 0, 0, 2008, 2015, + 5, 346, 0, 0, 2009, 2015, 5, 26, 0, 0, 2010, 2015, 5, 351, 0, 0, 2011, + 2015, 5, 373, 0, 0, 2012, 2015, 5, 481, 0, 0, 2013, 2015, 5, 418, 0, 0, + 2014, 1997, 1, 0, 0, 0, 2014, 1998, 1, 0, 0, 0, 2014, 1999, 1, 0, 0, 0, + 2014, 2000, 1, 0, 0, 0, 2014, 2001, 1, 0, 0, 0, 2014, 2002, 1, 0, 0, 0, + 2014, 2003, 1, 0, 0, 0, 2014, 2004, 1, 0, 0, 0, 2014, 2005, 1, 0, 0, 0, + 2014, 2006, 1, 0, 0, 0, 2014, 2007, 1, 0, 0, 0, 2014, 2008, 1, 0, 0, 0, + 2014, 2009, 1, 0, 0, 0, 2014, 2010, 1, 0, 0, 0, 2014, 2011, 1, 0, 0, 0, + 2014, 2012, 1, 0, 0, 0, 2014, 2013, 1, 0, 0, 0, 2015, 151, 1, 0, 0, 0, + 2016, 2018, 3, 154, 77, 0, 2017, 2016, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, + 0, 2019, 2017, 1, 0, 0, 0, 2019, 2020, 1, 0, 0, 0, 2020, 153, 1, 0, 0, + 0, 2021, 2022, 5, 408, 0, 0, 2022, 2023, 5, 514, 0, 0, 2023, 155, 1, 0, + 0, 0, 2024, 2025, 5, 227, 0, 0, 2025, 2026, 5, 228, 0, 0, 2026, 2028, 3, + 708, 354, 0, 2027, 2029, 3, 158, 79, 0, 2028, 2027, 1, 0, 0, 0, 2028, 2029, + 1, 0, 0, 0, 2029, 2031, 1, 0, 0, 0, 2030, 2032, 3, 162, 81, 0, 2031, 2030, + 1, 0, 0, 0, 2031, 2032, 1, 0, 0, 0, 2032, 157, 1, 0, 0, 0, 2033, 2035, + 3, 160, 80, 0, 2034, 2033, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2034, + 1, 0, 0, 0, 2036, 2037, 1, 0, 0, 0, 2037, 159, 1, 0, 0, 0, 2038, 2039, + 5, 364, 0, 0, 2039, 2040, 5, 457, 0, 0, 2040, 2044, 5, 514, 0, 0, 2041, + 2042, 5, 408, 0, 0, 2042, 2044, 5, 514, 0, 0, 2043, 2038, 1, 0, 0, 0, 2043, + 2041, 1, 0, 0, 0, 2044, 161, 1, 0, 0, 0, 2045, 2046, 5, 500, 0, 0, 2046, + 2051, 3, 164, 82, 0, 2047, 2048, 5, 498, 0, 0, 2048, 2050, 3, 164, 82, + 0, 2049, 2047, 1, 0, 0, 0, 2050, 2053, 1, 0, 0, 0, 2051, 2049, 1, 0, 0, + 0, 2051, 2052, 1, 0, 0, 0, 2052, 2054, 1, 0, 0, 0, 2053, 2051, 1, 0, 0, + 0, 2054, 2055, 5, 501, 0, 0, 2055, 163, 1, 0, 0, 0, 2056, 2057, 5, 227, + 0, 0, 2057, 2058, 3, 166, 83, 0, 2058, 2059, 5, 71, 0, 0, 2059, 2060, 5, + 335, 0, 0, 2060, 2061, 5, 514, 0, 0, 2061, 165, 1, 0, 0, 0, 2062, 2066, + 5, 518, 0, 0, 2063, 2066, 5, 520, 0, 0, 2064, 2066, 3, 730, 365, 0, 2065, + 2062, 1, 0, 0, 0, 2065, 2063, 1, 0, 0, 0, 2065, 2064, 1, 0, 0, 0, 2066, + 167, 1, 0, 0, 0, 2067, 2068, 5, 301, 0, 0, 2068, 2069, 5, 303, 0, 0, 2069, + 2070, 3, 708, 354, 0, 2070, 2071, 5, 429, 0, 0, 2071, 2072, 3, 708, 354, + 0, 2072, 2073, 3, 170, 85, 0, 2073, 169, 1, 0, 0, 0, 2074, 2075, 5, 310, + 0, 0, 2075, 2076, 3, 668, 334, 0, 2076, 2077, 5, 302, 0, 0, 2077, 2078, + 5, 514, 0, 0, 2078, 2102, 1, 0, 0, 0, 2079, 2080, 5, 304, 0, 0, 2080, 2081, + 3, 174, 87, 0, 2081, 2082, 5, 302, 0, 0, 2082, 2083, 5, 514, 0, 0, 2083, + 2102, 1, 0, 0, 0, 2084, 2085, 5, 297, 0, 0, 2085, 2086, 3, 176, 88, 0, + 2086, 2087, 5, 302, 0, 0, 2087, 2088, 5, 514, 0, 0, 2088, 2102, 1, 0, 0, + 0, 2089, 2090, 5, 307, 0, 0, 2090, 2091, 3, 174, 87, 0, 2091, 2092, 3, + 172, 86, 0, 2092, 2093, 5, 302, 0, 0, 2093, 2094, 5, 514, 0, 0, 2094, 2102, + 1, 0, 0, 0, 2095, 2096, 5, 308, 0, 0, 2096, 2097, 3, 174, 87, 0, 2097, + 2098, 5, 514, 0, 0, 2098, 2099, 5, 302, 0, 0, 2099, 2100, 5, 514, 0, 0, + 2100, 2102, 1, 0, 0, 0, 2101, 2074, 1, 0, 0, 0, 2101, 2079, 1, 0, 0, 0, + 2101, 2084, 1, 0, 0, 0, 2101, 2089, 1, 0, 0, 0, 2101, 2095, 1, 0, 0, 0, + 2102, 171, 1, 0, 0, 0, 2103, 2104, 5, 293, 0, 0, 2104, 2105, 3, 712, 356, + 0, 2105, 2106, 5, 288, 0, 0, 2106, 2107, 3, 712, 356, 0, 2107, 2117, 1, + 0, 0, 0, 2108, 2109, 5, 488, 0, 0, 2109, 2117, 3, 712, 356, 0, 2110, 2111, + 5, 485, 0, 0, 2111, 2117, 3, 712, 356, 0, 2112, 2113, 5, 489, 0, 0, 2113, + 2117, 3, 712, 356, 0, 2114, 2115, 5, 486, 0, 0, 2115, 2117, 3, 712, 356, + 0, 2116, 2103, 1, 0, 0, 0, 2116, 2108, 1, 0, 0, 0, 2116, 2110, 1, 0, 0, + 0, 2116, 2112, 1, 0, 0, 0, 2116, 2114, 1, 0, 0, 0, 2117, 173, 1, 0, 0, + 0, 2118, 2123, 5, 518, 0, 0, 2119, 2120, 5, 493, 0, 0, 2120, 2122, 5, 518, + 0, 0, 2121, 2119, 1, 0, 0, 0, 2122, 2125, 1, 0, 0, 0, 2123, 2121, 1, 0, + 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 175, 1, 0, 0, 0, 2125, 2123, 1, 0, + 0, 0, 2126, 2131, 3, 174, 87, 0, 2127, 2128, 5, 498, 0, 0, 2128, 2130, + 3, 174, 87, 0, 2129, 2127, 1, 0, 0, 0, 2130, 2133, 1, 0, 0, 0, 2131, 2129, + 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 177, 1, 0, 0, 0, 2133, 2131, + 1, 0, 0, 0, 2134, 2135, 5, 30, 0, 0, 2135, 2136, 3, 708, 354, 0, 2136, + 2138, 5, 500, 0, 0, 2137, 2139, 3, 190, 95, 0, 2138, 2137, 1, 0, 0, 0, + 2138, 2139, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 2142, 5, 501, 0, + 0, 2141, 2143, 3, 196, 98, 0, 2142, 2141, 1, 0, 0, 0, 2142, 2143, 1, 0, + 0, 0, 2143, 2145, 1, 0, 0, 0, 2144, 2146, 3, 198, 99, 0, 2145, 2144, 1, + 0, 0, 0, 2145, 2146, 1, 0, 0, 0, 2146, 2147, 1, 0, 0, 0, 2147, 2148, 5, + 96, 0, 0, 2148, 2149, 3, 202, 101, 0, 2149, 2151, 5, 83, 0, 0, 2150, 2152, + 5, 497, 0, 0, 2151, 2150, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2154, + 1, 0, 0, 0, 2153, 2155, 5, 493, 0, 0, 2154, 2153, 1, 0, 0, 0, 2154, 2155, + 1, 0, 0, 0, 2155, 179, 1, 0, 0, 0, 2156, 2157, 5, 114, 0, 0, 2157, 2158, + 5, 116, 0, 0, 2158, 2159, 3, 708, 354, 0, 2159, 2161, 5, 500, 0, 0, 2160, + 2162, 3, 182, 91, 0, 2161, 2160, 1, 0, 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, + 2163, 1, 0, 0, 0, 2163, 2165, 5, 501, 0, 0, 2164, 2166, 3, 186, 93, 0, + 2165, 2164, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2168, 1, 0, 0, 0, + 2167, 2169, 3, 188, 94, 0, 2168, 2167, 1, 0, 0, 0, 2168, 2169, 1, 0, 0, + 0, 2169, 2170, 1, 0, 0, 0, 2170, 2171, 5, 76, 0, 0, 2171, 2173, 5, 515, + 0, 0, 2172, 2174, 5, 497, 0, 0, 2173, 2172, 1, 0, 0, 0, 2173, 2174, 1, + 0, 0, 0, 2174, 181, 1, 0, 0, 0, 2175, 2180, 3, 184, 92, 0, 2176, 2177, + 5, 498, 0, 0, 2177, 2179, 3, 184, 92, 0, 2178, 2176, 1, 0, 0, 0, 2179, + 2182, 1, 0, 0, 0, 2180, 2178, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, + 183, 1, 0, 0, 0, 2182, 2180, 1, 0, 0, 0, 2183, 2184, 3, 194, 97, 0, 2184, + 2185, 5, 506, 0, 0, 2185, 2187, 3, 108, 54, 0, 2186, 2188, 5, 7, 0, 0, + 2187, 2186, 1, 0, 0, 0, 2187, 2188, 1, 0, 0, 0, 2188, 185, 1, 0, 0, 0, + 2189, 2190, 5, 77, 0, 0, 2190, 2191, 3, 108, 54, 0, 2191, 187, 1, 0, 0, + 0, 2192, 2193, 5, 370, 0, 0, 2193, 2194, 5, 76, 0, 0, 2194, 2195, 5, 514, + 0, 0, 2195, 2196, 5, 292, 0, 0, 2196, 2197, 5, 514, 0, 0, 2197, 189, 1, + 0, 0, 0, 2198, 2203, 3, 192, 96, 0, 2199, 2200, 5, 498, 0, 0, 2200, 2202, + 3, 192, 96, 0, 2201, 2199, 1, 0, 0, 0, 2202, 2205, 1, 0, 0, 0, 2203, 2201, + 1, 0, 0, 0, 2203, 2204, 1, 0, 0, 0, 2204, 191, 1, 0, 0, 0, 2205, 2203, + 1, 0, 0, 0, 2206, 2209, 3, 194, 97, 0, 2207, 2209, 5, 517, 0, 0, 2208, + 2206, 1, 0, 0, 0, 2208, 2207, 1, 0, 0, 0, 2209, 2210, 1, 0, 0, 0, 2210, + 2211, 5, 506, 0, 0, 2211, 2212, 3, 108, 54, 0, 2212, 193, 1, 0, 0, 0, 2213, + 2217, 5, 518, 0, 0, 2214, 2217, 5, 520, 0, 0, 2215, 2217, 3, 730, 365, + 0, 2216, 2213, 1, 0, 0, 0, 2216, 2214, 1, 0, 0, 0, 2216, 2215, 1, 0, 0, + 0, 2217, 195, 1, 0, 0, 0, 2218, 2219, 5, 77, 0, 0, 2219, 2222, 3, 108, + 54, 0, 2220, 2221, 5, 76, 0, 0, 2221, 2223, 5, 517, 0, 0, 2222, 2220, 1, + 0, 0, 0, 2222, 2223, 1, 0, 0, 0, 2223, 197, 1, 0, 0, 0, 2224, 2226, 3, + 200, 100, 0, 2225, 2224, 1, 0, 0, 0, 2226, 2227, 1, 0, 0, 0, 2227, 2225, + 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 199, 1, 0, 0, 0, 2229, 2230, + 5, 220, 0, 0, 2230, 2234, 5, 514, 0, 0, 2231, 2232, 5, 408, 0, 0, 2232, + 2234, 5, 514, 0, 0, 2233, 2229, 1, 0, 0, 0, 2233, 2231, 1, 0, 0, 0, 2234, + 201, 1, 0, 0, 0, 2235, 2237, 3, 204, 102, 0, 2236, 2235, 1, 0, 0, 0, 2237, + 2240, 1, 0, 0, 0, 2238, 2236, 1, 0, 0, 0, 2238, 2239, 1, 0, 0, 0, 2239, + 203, 1, 0, 0, 0, 2240, 2238, 1, 0, 0, 0, 2241, 2243, 3, 720, 360, 0, 2242, + 2241, 1, 0, 0, 0, 2243, 2246, 1, 0, 0, 0, 2244, 2242, 1, 0, 0, 0, 2244, + 2245, 1, 0, 0, 0, 2245, 2247, 1, 0, 0, 0, 2246, 2244, 1, 0, 0, 0, 2247, + 2249, 3, 206, 103, 0, 2248, 2250, 5, 497, 0, 0, 2249, 2248, 1, 0, 0, 0, + 2249, 2250, 1, 0, 0, 0, 2250, 2572, 1, 0, 0, 0, 2251, 2253, 3, 720, 360, + 0, 2252, 2251, 1, 0, 0, 0, 2253, 2256, 1, 0, 0, 0, 2254, 2252, 1, 0, 0, + 0, 2254, 2255, 1, 0, 0, 0, 2255, 2257, 1, 0, 0, 0, 2256, 2254, 1, 0, 0, + 0, 2257, 2259, 3, 208, 104, 0, 2258, 2260, 5, 497, 0, 0, 2259, 2258, 1, + 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2572, 1, 0, 0, 0, 2261, 2263, 3, + 720, 360, 0, 2262, 2261, 1, 0, 0, 0, 2263, 2266, 1, 0, 0, 0, 2264, 2262, + 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 2267, 1, 0, 0, 0, 2266, 2264, + 1, 0, 0, 0, 2267, 2269, 3, 316, 158, 0, 2268, 2270, 5, 497, 0, 0, 2269, + 2268, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2572, 1, 0, 0, 0, 2271, + 2273, 3, 720, 360, 0, 2272, 2271, 1, 0, 0, 0, 2273, 2276, 1, 0, 0, 0, 2274, + 2272, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2277, 1, 0, 0, 0, 2276, + 2274, 1, 0, 0, 0, 2277, 2279, 3, 210, 105, 0, 2278, 2280, 5, 497, 0, 0, + 2279, 2278, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2572, 1, 0, 0, 0, + 2281, 2283, 3, 720, 360, 0, 2282, 2281, 1, 0, 0, 0, 2283, 2286, 1, 0, 0, + 0, 2284, 2282, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2287, 1, 0, 0, + 0, 2286, 2284, 1, 0, 0, 0, 2287, 2289, 3, 212, 106, 0, 2288, 2290, 5, 497, + 0, 0, 2289, 2288, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2572, 1, 0, + 0, 0, 2291, 2293, 3, 720, 360, 0, 2292, 2291, 1, 0, 0, 0, 2293, 2296, 1, + 0, 0, 0, 2294, 2292, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2297, 1, + 0, 0, 0, 2296, 2294, 1, 0, 0, 0, 2297, 2299, 3, 216, 108, 0, 2298, 2300, + 5, 497, 0, 0, 2299, 2298, 1, 0, 0, 0, 2299, 2300, 1, 0, 0, 0, 2300, 2572, + 1, 0, 0, 0, 2301, 2303, 3, 720, 360, 0, 2302, 2301, 1, 0, 0, 0, 2303, 2306, + 1, 0, 0, 0, 2304, 2302, 1, 0, 0, 0, 2304, 2305, 1, 0, 0, 0, 2305, 2307, + 1, 0, 0, 0, 2306, 2304, 1, 0, 0, 0, 2307, 2309, 3, 218, 109, 0, 2308, 2310, + 5, 497, 0, 0, 2309, 2308, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2572, + 1, 0, 0, 0, 2311, 2313, 3, 720, 360, 0, 2312, 2311, 1, 0, 0, 0, 2313, 2316, + 1, 0, 0, 0, 2314, 2312, 1, 0, 0, 0, 2314, 2315, 1, 0, 0, 0, 2315, 2317, + 1, 0, 0, 0, 2316, 2314, 1, 0, 0, 0, 2317, 2319, 3, 220, 110, 0, 2318, 2320, + 5, 497, 0, 0, 2319, 2318, 1, 0, 0, 0, 2319, 2320, 1, 0, 0, 0, 2320, 2572, + 1, 0, 0, 0, 2321, 2323, 3, 720, 360, 0, 2322, 2321, 1, 0, 0, 0, 2323, 2326, + 1, 0, 0, 0, 2324, 2322, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325, 2327, + 1, 0, 0, 0, 2326, 2324, 1, 0, 0, 0, 2327, 2329, 3, 222, 111, 0, 2328, 2330, + 5, 497, 0, 0, 2329, 2328, 1, 0, 0, 0, 2329, 2330, 1, 0, 0, 0, 2330, 2572, + 1, 0, 0, 0, 2331, 2333, 3, 720, 360, 0, 2332, 2331, 1, 0, 0, 0, 2333, 2336, + 1, 0, 0, 0, 2334, 2332, 1, 0, 0, 0, 2334, 2335, 1, 0, 0, 0, 2335, 2337, + 1, 0, 0, 0, 2336, 2334, 1, 0, 0, 0, 2337, 2339, 3, 228, 114, 0, 2338, 2340, + 5, 497, 0, 0, 2339, 2338, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2572, + 1, 0, 0, 0, 2341, 2343, 3, 720, 360, 0, 2342, 2341, 1, 0, 0, 0, 2343, 2346, + 1, 0, 0, 0, 2344, 2342, 1, 0, 0, 0, 2344, 2345, 1, 0, 0, 0, 2345, 2347, + 1, 0, 0, 0, 2346, 2344, 1, 0, 0, 0, 2347, 2349, 3, 230, 115, 0, 2348, 2350, + 5, 497, 0, 0, 2349, 2348, 1, 0, 0, 0, 2349, 2350, 1, 0, 0, 0, 2350, 2572, + 1, 0, 0, 0, 2351, 2353, 3, 720, 360, 0, 2352, 2351, 1, 0, 0, 0, 2353, 2356, + 1, 0, 0, 0, 2354, 2352, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2357, + 1, 0, 0, 0, 2356, 2354, 1, 0, 0, 0, 2357, 2359, 3, 232, 116, 0, 2358, 2360, + 5, 497, 0, 0, 2359, 2358, 1, 0, 0, 0, 2359, 2360, 1, 0, 0, 0, 2360, 2572, + 1, 0, 0, 0, 2361, 2363, 3, 720, 360, 0, 2362, 2361, 1, 0, 0, 0, 2363, 2366, + 1, 0, 0, 0, 2364, 2362, 1, 0, 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2367, + 1, 0, 0, 0, 2366, 2364, 1, 0, 0, 0, 2367, 2369, 3, 234, 117, 0, 2368, 2370, + 5, 497, 0, 0, 2369, 2368, 1, 0, 0, 0, 2369, 2370, 1, 0, 0, 0, 2370, 2572, + 1, 0, 0, 0, 2371, 2373, 3, 720, 360, 0, 2372, 2371, 1, 0, 0, 0, 2373, 2376, + 1, 0, 0, 0, 2374, 2372, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2377, + 1, 0, 0, 0, 2376, 2374, 1, 0, 0, 0, 2377, 2379, 3, 236, 118, 0, 2378, 2380, + 5, 497, 0, 0, 2379, 2378, 1, 0, 0, 0, 2379, 2380, 1, 0, 0, 0, 2380, 2572, + 1, 0, 0, 0, 2381, 2383, 3, 720, 360, 0, 2382, 2381, 1, 0, 0, 0, 2383, 2386, + 1, 0, 0, 0, 2384, 2382, 1, 0, 0, 0, 2384, 2385, 1, 0, 0, 0, 2385, 2387, + 1, 0, 0, 0, 2386, 2384, 1, 0, 0, 0, 2387, 2389, 3, 238, 119, 0, 2388, 2390, + 5, 497, 0, 0, 2389, 2388, 1, 0, 0, 0, 2389, 2390, 1, 0, 0, 0, 2390, 2572, + 1, 0, 0, 0, 2391, 2393, 3, 720, 360, 0, 2392, 2391, 1, 0, 0, 0, 2393, 2396, + 1, 0, 0, 0, 2394, 2392, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2397, + 1, 0, 0, 0, 2396, 2394, 1, 0, 0, 0, 2397, 2399, 3, 240, 120, 0, 2398, 2400, + 5, 497, 0, 0, 2399, 2398, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2572, + 1, 0, 0, 0, 2401, 2403, 3, 720, 360, 0, 2402, 2401, 1, 0, 0, 0, 2403, 2406, + 1, 0, 0, 0, 2404, 2402, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2407, + 1, 0, 0, 0, 2406, 2404, 1, 0, 0, 0, 2407, 2409, 3, 242, 121, 0, 2408, 2410, + 5, 497, 0, 0, 2409, 2408, 1, 0, 0, 0, 2409, 2410, 1, 0, 0, 0, 2410, 2572, + 1, 0, 0, 0, 2411, 2413, 3, 720, 360, 0, 2412, 2411, 1, 0, 0, 0, 2413, 2416, + 1, 0, 0, 0, 2414, 2412, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2417, + 1, 0, 0, 0, 2416, 2414, 1, 0, 0, 0, 2417, 2419, 3, 254, 127, 0, 2418, 2420, + 5, 497, 0, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2572, + 1, 0, 0, 0, 2421, 2423, 3, 720, 360, 0, 2422, 2421, 1, 0, 0, 0, 2423, 2426, + 1, 0, 0, 0, 2424, 2422, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2427, + 1, 0, 0, 0, 2426, 2424, 1, 0, 0, 0, 2427, 2429, 3, 256, 128, 0, 2428, 2430, + 5, 497, 0, 0, 2429, 2428, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2572, + 1, 0, 0, 0, 2431, 2433, 3, 720, 360, 0, 2432, 2431, 1, 0, 0, 0, 2433, 2436, + 1, 0, 0, 0, 2434, 2432, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2437, + 1, 0, 0, 0, 2436, 2434, 1, 0, 0, 0, 2437, 2439, 3, 258, 129, 0, 2438, 2440, + 5, 497, 0, 0, 2439, 2438, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2572, + 1, 0, 0, 0, 2441, 2443, 3, 720, 360, 0, 2442, 2441, 1, 0, 0, 0, 2443, 2446, + 1, 0, 0, 0, 2444, 2442, 1, 0, 0, 0, 2444, 2445, 1, 0, 0, 0, 2445, 2447, + 1, 0, 0, 0, 2446, 2444, 1, 0, 0, 0, 2447, 2449, 3, 260, 130, 0, 2448, 2450, + 5, 497, 0, 0, 2449, 2448, 1, 0, 0, 0, 2449, 2450, 1, 0, 0, 0, 2450, 2572, + 1, 0, 0, 0, 2451, 2453, 3, 720, 360, 0, 2452, 2451, 1, 0, 0, 0, 2453, 2456, + 1, 0, 0, 0, 2454, 2452, 1, 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 2457, + 1, 0, 0, 0, 2456, 2454, 1, 0, 0, 0, 2457, 2459, 3, 266, 133, 0, 2458, 2460, + 5, 497, 0, 0, 2459, 2458, 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 2572, + 1, 0, 0, 0, 2461, 2463, 3, 720, 360, 0, 2462, 2461, 1, 0, 0, 0, 2463, 2466, + 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2464, 2465, 1, 0, 0, 0, 2465, 2467, + 1, 0, 0, 0, 2466, 2464, 1, 0, 0, 0, 2467, 2469, 3, 272, 136, 0, 2468, 2470, + 5, 497, 0, 0, 2469, 2468, 1, 0, 0, 0, 2469, 2470, 1, 0, 0, 0, 2470, 2572, + 1, 0, 0, 0, 2471, 2473, 3, 720, 360, 0, 2472, 2471, 1, 0, 0, 0, 2473, 2476, + 1, 0, 0, 0, 2474, 2472, 1, 0, 0, 0, 2474, 2475, 1, 0, 0, 0, 2475, 2477, + 1, 0, 0, 0, 2476, 2474, 1, 0, 0, 0, 2477, 2479, 3, 274, 137, 0, 2478, 2480, + 5, 497, 0, 0, 2479, 2478, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2572, + 1, 0, 0, 0, 2481, 2483, 3, 720, 360, 0, 2482, 2481, 1, 0, 0, 0, 2483, 2486, + 1, 0, 0, 0, 2484, 2482, 1, 0, 0, 0, 2484, 2485, 1, 0, 0, 0, 2485, 2487, + 1, 0, 0, 0, 2486, 2484, 1, 0, 0, 0, 2487, 2489, 3, 276, 138, 0, 2488, 2490, + 5, 497, 0, 0, 2489, 2488, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 2572, + 1, 0, 0, 0, 2491, 2493, 3, 720, 360, 0, 2492, 2491, 1, 0, 0, 0, 2493, 2496, + 1, 0, 0, 0, 2494, 2492, 1, 0, 0, 0, 2494, 2495, 1, 0, 0, 0, 2495, 2497, + 1, 0, 0, 0, 2496, 2494, 1, 0, 0, 0, 2497, 2499, 3, 278, 139, 0, 2498, 2500, + 5, 497, 0, 0, 2499, 2498, 1, 0, 0, 0, 2499, 2500, 1, 0, 0, 0, 2500, 2572, + 1, 0, 0, 0, 2501, 2503, 3, 720, 360, 0, 2502, 2501, 1, 0, 0, 0, 2503, 2506, + 1, 0, 0, 0, 2504, 2502, 1, 0, 0, 0, 2504, 2505, 1, 0, 0, 0, 2505, 2507, + 1, 0, 0, 0, 2506, 2504, 1, 0, 0, 0, 2507, 2509, 3, 304, 152, 0, 2508, 2510, + 5, 497, 0, 0, 2509, 2508, 1, 0, 0, 0, 2509, 2510, 1, 0, 0, 0, 2510, 2572, + 1, 0, 0, 0, 2511, 2513, 3, 720, 360, 0, 2512, 2511, 1, 0, 0, 0, 2513, 2516, + 1, 0, 0, 0, 2514, 2512, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2517, + 1, 0, 0, 0, 2516, 2514, 1, 0, 0, 0, 2517, 2519, 3, 312, 156, 0, 2518, 2520, + 5, 497, 0, 0, 2519, 2518, 1, 0, 0, 0, 2519, 2520, 1, 0, 0, 0, 2520, 2572, + 1, 0, 0, 0, 2521, 2523, 3, 720, 360, 0, 2522, 2521, 1, 0, 0, 0, 2523, 2526, + 1, 0, 0, 0, 2524, 2522, 1, 0, 0, 0, 2524, 2525, 1, 0, 0, 0, 2525, 2527, + 1, 0, 0, 0, 2526, 2524, 1, 0, 0, 0, 2527, 2529, 3, 318, 159, 0, 2528, 2530, + 5, 497, 0, 0, 2529, 2528, 1, 0, 0, 0, 2529, 2530, 1, 0, 0, 0, 2530, 2572, + 1, 0, 0, 0, 2531, 2533, 3, 720, 360, 0, 2532, 2531, 1, 0, 0, 0, 2533, 2536, + 1, 0, 0, 0, 2534, 2532, 1, 0, 0, 0, 2534, 2535, 1, 0, 0, 0, 2535, 2537, + 1, 0, 0, 0, 2536, 2534, 1, 0, 0, 0, 2537, 2539, 3, 320, 160, 0, 2538, 2540, + 5, 497, 0, 0, 2539, 2538, 1, 0, 0, 0, 2539, 2540, 1, 0, 0, 0, 2540, 2572, + 1, 0, 0, 0, 2541, 2543, 3, 720, 360, 0, 2542, 2541, 1, 0, 0, 0, 2543, 2546, + 1, 0, 0, 0, 2544, 2542, 1, 0, 0, 0, 2544, 2545, 1, 0, 0, 0, 2545, 2547, + 1, 0, 0, 0, 2546, 2544, 1, 0, 0, 0, 2547, 2549, 3, 280, 140, 0, 2548, 2550, + 5, 497, 0, 0, 2549, 2548, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2572, + 1, 0, 0, 0, 2551, 2553, 3, 720, 360, 0, 2552, 2551, 1, 0, 0, 0, 2553, 2556, + 1, 0, 0, 0, 2554, 2552, 1, 0, 0, 0, 2554, 2555, 1, 0, 0, 0, 2555, 2557, + 1, 0, 0, 0, 2556, 2554, 1, 0, 0, 0, 2557, 2559, 3, 282, 141, 0, 2558, 2560, + 5, 497, 0, 0, 2559, 2558, 1, 0, 0, 0, 2559, 2560, 1, 0, 0, 0, 2560, 2572, + 1, 0, 0, 0, 2561, 2563, 3, 720, 360, 0, 2562, 2561, 1, 0, 0, 0, 2563, 2566, + 1, 0, 0, 0, 2564, 2562, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2567, + 1, 0, 0, 0, 2566, 2564, 1, 0, 0, 0, 2567, 2569, 3, 300, 150, 0, 2568, 2570, + 5, 497, 0, 0, 2569, 2568, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 2572, + 1, 0, 0, 0, 2571, 2244, 1, 0, 0, 0, 2571, 2254, 1, 0, 0, 0, 2571, 2264, + 1, 0, 0, 0, 2571, 2274, 1, 0, 0, 0, 2571, 2284, 1, 0, 0, 0, 2571, 2294, + 1, 0, 0, 0, 2571, 2304, 1, 0, 0, 0, 2571, 2314, 1, 0, 0, 0, 2571, 2324, + 1, 0, 0, 0, 2571, 2334, 1, 0, 0, 0, 2571, 2344, 1, 0, 0, 0, 2571, 2354, + 1, 0, 0, 0, 2571, 2364, 1, 0, 0, 0, 2571, 2374, 1, 0, 0, 0, 2571, 2384, + 1, 0, 0, 0, 2571, 2394, 1, 0, 0, 0, 2571, 2404, 1, 0, 0, 0, 2571, 2414, + 1, 0, 0, 0, 2571, 2424, 1, 0, 0, 0, 2571, 2434, 1, 0, 0, 0, 2571, 2444, + 1, 0, 0, 0, 2571, 2454, 1, 0, 0, 0, 2571, 2464, 1, 0, 0, 0, 2571, 2474, + 1, 0, 0, 0, 2571, 2484, 1, 0, 0, 0, 2571, 2494, 1, 0, 0, 0, 2571, 2504, + 1, 0, 0, 0, 2571, 2514, 1, 0, 0, 0, 2571, 2524, 1, 0, 0, 0, 2571, 2534, + 1, 0, 0, 0, 2571, 2544, 1, 0, 0, 0, 2571, 2554, 1, 0, 0, 0, 2571, 2564, + 1, 0, 0, 0, 2572, 205, 1, 0, 0, 0, 2573, 2574, 5, 97, 0, 0, 2574, 2575, + 5, 517, 0, 0, 2575, 2578, 3, 108, 54, 0, 2576, 2577, 5, 487, 0, 0, 2577, + 2579, 3, 668, 334, 0, 2578, 2576, 1, 0, 0, 0, 2578, 2579, 1, 0, 0, 0, 2579, + 207, 1, 0, 0, 0, 2580, 2583, 5, 48, 0, 0, 2581, 2584, 5, 517, 0, 0, 2582, + 2584, 3, 214, 107, 0, 2583, 2581, 1, 0, 0, 0, 2583, 2582, 1, 0, 0, 0, 2584, + 2585, 1, 0, 0, 0, 2585, 2586, 5, 487, 0, 0, 2586, 2587, 3, 668, 334, 0, + 2587, 209, 1, 0, 0, 0, 2588, 2589, 5, 517, 0, 0, 2589, 2591, 5, 487, 0, + 0, 2590, 2588, 1, 0, 0, 0, 2590, 2591, 1, 0, 0, 0, 2591, 2592, 1, 0, 0, + 0, 2592, 2593, 5, 17, 0, 0, 2593, 2599, 3, 112, 56, 0, 2594, 2596, 5, 500, + 0, 0, 2595, 2597, 3, 322, 161, 0, 2596, 2595, 1, 0, 0, 0, 2596, 2597, 1, + 0, 0, 0, 2597, 2598, 1, 0, 0, 0, 2598, 2600, 5, 501, 0, 0, 2599, 2594, + 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 2602, 1, 0, 0, 0, 2601, 2603, + 3, 226, 113, 0, 2602, 2601, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 211, + 1, 0, 0, 0, 2604, 2605, 5, 98, 0, 0, 2605, 2611, 5, 517, 0, 0, 2606, 2608, + 5, 500, 0, 0, 2607, 2609, 3, 322, 161, 0, 2608, 2607, 1, 0, 0, 0, 2608, + 2609, 1, 0, 0, 0, 2609, 2610, 1, 0, 0, 0, 2610, 2612, 5, 501, 0, 0, 2611, + 2606, 1, 0, 0, 0, 2611, 2612, 1, 0, 0, 0, 2612, 213, 1, 0, 0, 0, 2613, + 2619, 5, 517, 0, 0, 2614, 2617, 7, 12, 0, 0, 2615, 2618, 5, 518, 0, 0, + 2616, 2618, 3, 708, 354, 0, 2617, 2615, 1, 0, 0, 0, 2617, 2616, 1, 0, 0, + 0, 2618, 2620, 1, 0, 0, 0, 2619, 2614, 1, 0, 0, 0, 2620, 2621, 1, 0, 0, + 0, 2621, 2619, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 215, 1, 0, 0, + 0, 2623, 2624, 5, 101, 0, 0, 2624, 2627, 5, 517, 0, 0, 2625, 2626, 5, 139, + 0, 0, 2626, 2628, 5, 120, 0, 0, 2627, 2625, 1, 0, 0, 0, 2627, 2628, 1, + 0, 0, 0, 2628, 2630, 1, 0, 0, 0, 2629, 2631, 5, 396, 0, 0, 2630, 2629, + 1, 0, 0, 0, 2630, 2631, 1, 0, 0, 0, 2631, 2633, 1, 0, 0, 0, 2632, 2634, + 3, 226, 113, 0, 2633, 2632, 1, 0, 0, 0, 2633, 2634, 1, 0, 0, 0, 2634, 217, + 1, 0, 0, 0, 2635, 2636, 5, 100, 0, 0, 2636, 2638, 5, 517, 0, 0, 2637, 2639, + 3, 226, 113, 0, 2638, 2637, 1, 0, 0, 0, 2638, 2639, 1, 0, 0, 0, 2639, 219, + 1, 0, 0, 0, 2640, 2641, 5, 102, 0, 0, 2641, 2643, 5, 517, 0, 0, 2642, 2644, + 5, 396, 0, 0, 2643, 2642, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 221, + 1, 0, 0, 0, 2645, 2646, 5, 99, 0, 0, 2646, 2647, 5, 517, 0, 0, 2647, 2648, + 5, 71, 0, 0, 2648, 2654, 3, 224, 112, 0, 2649, 2652, 5, 72, 0, 0, 2650, + 2653, 3, 354, 177, 0, 2651, 2653, 3, 668, 334, 0, 2652, 2650, 1, 0, 0, + 0, 2652, 2651, 1, 0, 0, 0, 2653, 2655, 1, 0, 0, 0, 2654, 2649, 1, 0, 0, + 0, 2654, 2655, 1, 0, 0, 0, 2655, 2665, 1, 0, 0, 0, 2656, 2657, 5, 10, 0, + 0, 2657, 2662, 3, 352, 176, 0, 2658, 2659, 5, 498, 0, 0, 2659, 2661, 3, + 352, 176, 0, 2660, 2658, 1, 0, 0, 0, 2661, 2664, 1, 0, 0, 0, 2662, 2660, + 1, 0, 0, 0, 2662, 2663, 1, 0, 0, 0, 2663, 2666, 1, 0, 0, 0, 2664, 2662, + 1, 0, 0, 0, 2665, 2656, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2669, + 1, 0, 0, 0, 2667, 2668, 5, 75, 0, 0, 2668, 2670, 3, 668, 334, 0, 2669, + 2667, 1, 0, 0, 0, 2669, 2670, 1, 0, 0, 0, 2670, 2673, 1, 0, 0, 0, 2671, + 2672, 5, 74, 0, 0, 2672, 2674, 3, 668, 334, 0, 2673, 2671, 1, 0, 0, 0, + 2673, 2674, 1, 0, 0, 0, 2674, 2676, 1, 0, 0, 0, 2675, 2677, 3, 226, 113, + 0, 2676, 2675, 1, 0, 0, 0, 2676, 2677, 1, 0, 0, 0, 2677, 223, 1, 0, 0, + 0, 2678, 2689, 3, 708, 354, 0, 2679, 2680, 5, 517, 0, 0, 2680, 2681, 5, + 493, 0, 0, 2681, 2689, 3, 708, 354, 0, 2682, 2683, 5, 500, 0, 0, 2683, + 2684, 3, 582, 291, 0, 2684, 2685, 5, 501, 0, 0, 2685, 2689, 1, 0, 0, 0, + 2686, 2687, 5, 356, 0, 0, 2687, 2689, 5, 514, 0, 0, 2688, 2678, 1, 0, 0, + 0, 2688, 2679, 1, 0, 0, 0, 2688, 2682, 1, 0, 0, 0, 2688, 2686, 1, 0, 0, + 0, 2689, 225, 1, 0, 0, 0, 2690, 2691, 5, 93, 0, 0, 2691, 2692, 5, 305, + 0, 0, 2692, 2711, 5, 108, 0, 0, 2693, 2694, 5, 93, 0, 0, 2694, 2695, 5, + 305, 0, 0, 2695, 2711, 5, 102, 0, 0, 2696, 2697, 5, 93, 0, 0, 2697, 2698, + 5, 305, 0, 0, 2698, 2699, 5, 502, 0, 0, 2699, 2700, 3, 202, 101, 0, 2700, + 2701, 5, 503, 0, 0, 2701, 2711, 1, 0, 0, 0, 2702, 2703, 5, 93, 0, 0, 2703, + 2704, 5, 305, 0, 0, 2704, 2705, 5, 435, 0, 0, 2705, 2706, 5, 102, 0, 0, + 2706, 2707, 5, 502, 0, 0, 2707, 2708, 3, 202, 101, 0, 2708, 2709, 5, 503, + 0, 0, 2709, 2711, 1, 0, 0, 0, 2710, 2690, 1, 0, 0, 0, 2710, 2693, 1, 0, + 0, 0, 2710, 2696, 1, 0, 0, 0, 2710, 2702, 1, 0, 0, 0, 2711, 227, 1, 0, + 0, 0, 2712, 2713, 5, 105, 0, 0, 2713, 2714, 3, 668, 334, 0, 2714, 2715, + 5, 81, 0, 0, 2715, 2723, 3, 202, 101, 0, 2716, 2717, 5, 106, 0, 0, 2717, + 2718, 3, 668, 334, 0, 2718, 2719, 5, 81, 0, 0, 2719, 2720, 3, 202, 101, + 0, 2720, 2722, 1, 0, 0, 0, 2721, 2716, 1, 0, 0, 0, 2722, 2725, 1, 0, 0, + 0, 2723, 2721, 1, 0, 0, 0, 2723, 2724, 1, 0, 0, 0, 2724, 2728, 1, 0, 0, + 0, 2725, 2723, 1, 0, 0, 0, 2726, 2727, 5, 82, 0, 0, 2727, 2729, 3, 202, + 101, 0, 2728, 2726, 1, 0, 0, 0, 2728, 2729, 1, 0, 0, 0, 2729, 2730, 1, + 0, 0, 0, 2730, 2731, 5, 83, 0, 0, 2731, 2732, 5, 105, 0, 0, 2732, 229, + 1, 0, 0, 0, 2733, 2734, 5, 103, 0, 0, 2734, 2735, 5, 517, 0, 0, 2735, 2738, + 5, 292, 0, 0, 2736, 2739, 5, 517, 0, 0, 2737, 2739, 3, 214, 107, 0, 2738, + 2736, 1, 0, 0, 0, 2738, 2737, 1, 0, 0, 0, 2739, 2740, 1, 0, 0, 0, 2740, + 2741, 5, 96, 0, 0, 2741, 2742, 3, 202, 101, 0, 2742, 2743, 5, 83, 0, 0, + 2743, 2744, 5, 103, 0, 0, 2744, 231, 1, 0, 0, 0, 2745, 2746, 5, 104, 0, + 0, 2746, 2748, 3, 668, 334, 0, 2747, 2749, 5, 96, 0, 0, 2748, 2747, 1, + 0, 0, 0, 2748, 2749, 1, 0, 0, 0, 2749, 2750, 1, 0, 0, 0, 2750, 2751, 3, + 202, 101, 0, 2751, 2753, 5, 83, 0, 0, 2752, 2754, 5, 104, 0, 0, 2753, 2752, + 1, 0, 0, 0, 2753, 2754, 1, 0, 0, 0, 2754, 233, 1, 0, 0, 0, 2755, 2756, + 5, 108, 0, 0, 2756, 235, 1, 0, 0, 0, 2757, 2758, 5, 109, 0, 0, 2758, 237, + 1, 0, 0, 0, 2759, 2761, 5, 110, 0, 0, 2760, 2762, 3, 668, 334, 0, 2761, + 2760, 1, 0, 0, 0, 2761, 2762, 1, 0, 0, 0, 2762, 239, 1, 0, 0, 0, 2763, + 2764, 5, 306, 0, 0, 2764, 2765, 5, 305, 0, 0, 2765, 241, 1, 0, 0, 0, 2766, + 2768, 5, 112, 0, 0, 2767, 2769, 3, 244, 122, 0, 2768, 2767, 1, 0, 0, 0, + 2768, 2769, 1, 0, 0, 0, 2769, 2772, 1, 0, 0, 0, 2770, 2771, 5, 119, 0, + 0, 2771, 2773, 5, 514, 0, 0, 2772, 2770, 1, 0, 0, 0, 2772, 2773, 1, 0, + 0, 0, 2773, 2774, 1, 0, 0, 0, 2774, 2776, 3, 668, 334, 0, 2775, 2777, 3, + 250, 125, 0, 2776, 2775, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 243, + 1, 0, 0, 0, 2778, 2779, 7, 13, 0, 0, 2779, 245, 1, 0, 0, 0, 2780, 2781, + 5, 139, 0, 0, 2781, 2782, 5, 500, 0, 0, 2782, 2787, 3, 248, 124, 0, 2783, + 2784, 5, 498, 0, 0, 2784, 2786, 3, 248, 124, 0, 2785, 2783, 1, 0, 0, 0, + 2786, 2789, 1, 0, 0, 0, 2787, 2785, 1, 0, 0, 0, 2787, 2788, 1, 0, 0, 0, + 2788, 2790, 1, 0, 0, 0, 2789, 2787, 1, 0, 0, 0, 2790, 2791, 5, 501, 0, + 0, 2791, 2795, 1, 0, 0, 0, 2792, 2793, 5, 372, 0, 0, 2793, 2795, 3, 714, + 357, 0, 2794, 2780, 1, 0, 0, 0, 2794, 2792, 1, 0, 0, 0, 2795, 247, 1, 0, + 0, 0, 2796, 2797, 5, 502, 0, 0, 2797, 2798, 5, 516, 0, 0, 2798, 2799, 5, + 503, 0, 0, 2799, 2800, 5, 487, 0, 0, 2800, 2801, 3, 668, 334, 0, 2801, + 249, 1, 0, 0, 0, 2802, 2803, 3, 246, 123, 0, 2803, 251, 1, 0, 0, 0, 2804, + 2805, 3, 248, 124, 0, 2805, 253, 1, 0, 0, 0, 2806, 2807, 5, 517, 0, 0, + 2807, 2809, 5, 487, 0, 0, 2808, 2806, 1, 0, 0, 0, 2808, 2809, 1, 0, 0, + 0, 2809, 2810, 1, 0, 0, 0, 2810, 2811, 5, 113, 0, 0, 2811, 2812, 5, 30, + 0, 0, 2812, 2813, 3, 708, 354, 0, 2813, 2815, 5, 500, 0, 0, 2814, 2816, + 3, 262, 131, 0, 2815, 2814, 1, 0, 0, 0, 2815, 2816, 1, 0, 0, 0, 2816, 2817, + 1, 0, 0, 0, 2817, 2819, 5, 501, 0, 0, 2818, 2820, 3, 226, 113, 0, 2819, + 2818, 1, 0, 0, 0, 2819, 2820, 1, 0, 0, 0, 2820, 255, 1, 0, 0, 0, 2821, + 2822, 5, 517, 0, 0, 2822, 2824, 5, 487, 0, 0, 2823, 2821, 1, 0, 0, 0, 2823, + 2824, 1, 0, 0, 0, 2824, 2825, 1, 0, 0, 0, 2825, 2826, 5, 113, 0, 0, 2826, + 2827, 5, 114, 0, 0, 2827, 2828, 5, 116, 0, 0, 2828, 2829, 3, 708, 354, + 0, 2829, 2831, 5, 500, 0, 0, 2830, 2832, 3, 262, 131, 0, 2831, 2830, 1, + 0, 0, 0, 2831, 2832, 1, 0, 0, 0, 2832, 2833, 1, 0, 0, 0, 2833, 2835, 5, + 501, 0, 0, 2834, 2836, 3, 226, 113, 0, 2835, 2834, 1, 0, 0, 0, 2835, 2836, + 1, 0, 0, 0, 2836, 257, 1, 0, 0, 0, 2837, 2838, 5, 517, 0, 0, 2838, 2840, + 5, 487, 0, 0, 2839, 2837, 1, 0, 0, 0, 2839, 2840, 1, 0, 0, 0, 2840, 2841, + 1, 0, 0, 0, 2841, 2842, 5, 399, 0, 0, 2842, 2843, 5, 356, 0, 0, 2843, 2844, + 5, 357, 0, 0, 2844, 2851, 3, 708, 354, 0, 2845, 2849, 5, 166, 0, 0, 2846, + 2850, 5, 514, 0, 0, 2847, 2850, 5, 515, 0, 0, 2848, 2850, 3, 668, 334, + 0, 2849, 2846, 1, 0, 0, 0, 2849, 2847, 1, 0, 0, 0, 2849, 2848, 1, 0, 0, + 0, 2850, 2852, 1, 0, 0, 0, 2851, 2845, 1, 0, 0, 0, 2851, 2852, 1, 0, 0, + 0, 2852, 2858, 1, 0, 0, 0, 2853, 2855, 5, 500, 0, 0, 2854, 2856, 3, 262, + 131, 0, 2855, 2854, 1, 0, 0, 0, 2855, 2856, 1, 0, 0, 0, 2856, 2857, 1, + 0, 0, 0, 2857, 2859, 5, 501, 0, 0, 2858, 2853, 1, 0, 0, 0, 2858, 2859, + 1, 0, 0, 0, 2859, 2866, 1, 0, 0, 0, 2860, 2861, 5, 355, 0, 0, 2861, 2863, + 5, 500, 0, 0, 2862, 2864, 3, 262, 131, 0, 2863, 2862, 1, 0, 0, 0, 2863, + 2864, 1, 0, 0, 0, 2864, 2865, 1, 0, 0, 0, 2865, 2867, 5, 501, 0, 0, 2866, + 2860, 1, 0, 0, 0, 2866, 2867, 1, 0, 0, 0, 2867, 2869, 1, 0, 0, 0, 2868, + 2870, 3, 226, 113, 0, 2869, 2868, 1, 0, 0, 0, 2869, 2870, 1, 0, 0, 0, 2870, + 259, 1, 0, 0, 0, 2871, 2872, 5, 517, 0, 0, 2872, 2874, 5, 487, 0, 0, 2873, + 2871, 1, 0, 0, 0, 2873, 2874, 1, 0, 0, 0, 2874, 2875, 1, 0, 0, 0, 2875, + 2876, 5, 113, 0, 0, 2876, 2877, 5, 26, 0, 0, 2877, 2878, 5, 116, 0, 0, + 2878, 2879, 3, 708, 354, 0, 2879, 2881, 5, 500, 0, 0, 2880, 2882, 3, 262, + 131, 0, 2881, 2880, 1, 0, 0, 0, 2881, 2882, 1, 0, 0, 0, 2882, 2883, 1, + 0, 0, 0, 2883, 2885, 5, 501, 0, 0, 2884, 2886, 3, 226, 113, 0, 2885, 2884, + 1, 0, 0, 0, 2885, 2886, 1, 0, 0, 0, 2886, 261, 1, 0, 0, 0, 2887, 2892, + 3, 264, 132, 0, 2888, 2889, 5, 498, 0, 0, 2889, 2891, 3, 264, 132, 0, 2890, + 2888, 1, 0, 0, 0, 2891, 2894, 1, 0, 0, 0, 2892, 2890, 1, 0, 0, 0, 2892, + 2893, 1, 0, 0, 0, 2893, 263, 1, 0, 0, 0, 2894, 2892, 1, 0, 0, 0, 2895, + 2898, 5, 517, 0, 0, 2896, 2898, 3, 194, 97, 0, 2897, 2895, 1, 0, 0, 0, + 2897, 2896, 1, 0, 0, 0, 2898, 2899, 1, 0, 0, 0, 2899, 2900, 5, 487, 0, + 0, 2900, 2901, 3, 668, 334, 0, 2901, 265, 1, 0, 0, 0, 2902, 2903, 5, 65, + 0, 0, 2903, 2904, 5, 33, 0, 0, 2904, 2910, 3, 708, 354, 0, 2905, 2907, + 5, 500, 0, 0, 2906, 2908, 3, 268, 134, 0, 2907, 2906, 1, 0, 0, 0, 2907, + 2908, 1, 0, 0, 0, 2908, 2909, 1, 0, 0, 0, 2909, 2911, 5, 501, 0, 0, 2910, + 2905, 1, 0, 0, 0, 2910, 2911, 1, 0, 0, 0, 2911, 2914, 1, 0, 0, 0, 2912, + 2913, 5, 429, 0, 0, 2913, 2915, 5, 517, 0, 0, 2914, 2912, 1, 0, 0, 0, 2914, + 2915, 1, 0, 0, 0, 2915, 2918, 1, 0, 0, 0, 2916, 2917, 5, 139, 0, 0, 2917, + 2919, 3, 322, 161, 0, 2918, 2916, 1, 0, 0, 0, 2918, 2919, 1, 0, 0, 0, 2919, + 267, 1, 0, 0, 0, 2920, 2925, 3, 270, 135, 0, 2921, 2922, 5, 498, 0, 0, + 2922, 2924, 3, 270, 135, 0, 2923, 2921, 1, 0, 0, 0, 2924, 2927, 1, 0, 0, + 0, 2925, 2923, 1, 0, 0, 0, 2925, 2926, 1, 0, 0, 0, 2926, 269, 1, 0, 0, + 0, 2927, 2925, 1, 0, 0, 0, 2928, 2929, 5, 517, 0, 0, 2929, 2932, 5, 487, + 0, 0, 2930, 2933, 5, 517, 0, 0, 2931, 2933, 3, 668, 334, 0, 2932, 2930, + 1, 0, 0, 0, 2932, 2931, 1, 0, 0, 0, 2933, 2939, 1, 0, 0, 0, 2934, 2935, + 3, 710, 355, 0, 2935, 2936, 5, 506, 0, 0, 2936, 2937, 3, 668, 334, 0, 2937, + 2939, 1, 0, 0, 0, 2938, 2928, 1, 0, 0, 0, 2938, 2934, 1, 0, 0, 0, 2939, + 271, 1, 0, 0, 0, 2940, 2941, 5, 118, 0, 0, 2941, 2942, 5, 33, 0, 0, 2942, + 273, 1, 0, 0, 0, 2943, 2944, 5, 65, 0, 0, 2944, 2945, 5, 377, 0, 0, 2945, + 2946, 5, 33, 0, 0, 2946, 275, 1, 0, 0, 0, 2947, 2948, 5, 65, 0, 0, 2948, + 2949, 5, 405, 0, 0, 2949, 2952, 3, 668, 334, 0, 2950, 2951, 5, 419, 0, + 0, 2951, 2953, 3, 710, 355, 0, 2952, 2950, 1, 0, 0, 0, 2952, 2953, 1, 0, + 0, 0, 2953, 2959, 1, 0, 0, 0, 2954, 2955, 5, 142, 0, 0, 2955, 2956, 5, + 504, 0, 0, 2956, 2957, 3, 706, 353, 0, 2957, 2958, 5, 505, 0, 0, 2958, + 2960, 1, 0, 0, 0, 2959, 2954, 1, 0, 0, 0, 2959, 2960, 1, 0, 0, 0, 2960, + 277, 1, 0, 0, 0, 2961, 2962, 5, 111, 0, 0, 2962, 2963, 3, 668, 334, 0, + 2963, 279, 1, 0, 0, 0, 2964, 2965, 5, 301, 0, 0, 2965, 2966, 5, 302, 0, + 0, 2966, 2967, 3, 214, 107, 0, 2967, 2968, 5, 405, 0, 0, 2968, 2974, 3, + 668, 334, 0, 2969, 2970, 5, 142, 0, 0, 2970, 2971, 5, 504, 0, 0, 2971, + 2972, 3, 706, 353, 0, 2972, 2973, 5, 505, 0, 0, 2973, 2975, 1, 0, 0, 0, + 2974, 2969, 1, 0, 0, 0, 2974, 2975, 1, 0, 0, 0, 2975, 281, 1, 0, 0, 0, + 2976, 2977, 5, 517, 0, 0, 2977, 2979, 5, 487, 0, 0, 2978, 2976, 1, 0, 0, + 0, 2978, 2979, 1, 0, 0, 0, 2979, 2980, 1, 0, 0, 0, 2980, 2981, 5, 314, + 0, 0, 2981, 2982, 5, 113, 0, 0, 2982, 2983, 3, 284, 142, 0, 2983, 2985, + 3, 286, 143, 0, 2984, 2986, 3, 288, 144, 0, 2985, 2984, 1, 0, 0, 0, 2985, + 2986, 1, 0, 0, 0, 2986, 2990, 1, 0, 0, 0, 2987, 2989, 3, 290, 145, 0, 2988, + 2987, 1, 0, 0, 0, 2989, 2992, 1, 0, 0, 0, 2990, 2988, 1, 0, 0, 0, 2990, + 2991, 1, 0, 0, 0, 2991, 2994, 1, 0, 0, 0, 2992, 2990, 1, 0, 0, 0, 2993, + 2995, 3, 292, 146, 0, 2994, 2993, 1, 0, 0, 0, 2994, 2995, 1, 0, 0, 0, 2995, + 2997, 1, 0, 0, 0, 2996, 2998, 3, 294, 147, 0, 2997, 2996, 1, 0, 0, 0, 2997, + 2998, 1, 0, 0, 0, 2998, 3000, 1, 0, 0, 0, 2999, 3001, 3, 296, 148, 0, 3000, + 2999, 1, 0, 0, 0, 3000, 3001, 1, 0, 0, 0, 3001, 3002, 1, 0, 0, 0, 3002, + 3004, 3, 298, 149, 0, 3003, 3005, 3, 226, 113, 0, 3004, 3003, 1, 0, 0, + 0, 3004, 3005, 1, 0, 0, 0, 3005, 283, 1, 0, 0, 0, 3006, 3007, 7, 14, 0, + 0, 3007, 285, 1, 0, 0, 0, 3008, 3011, 5, 514, 0, 0, 3009, 3011, 3, 668, + 334, 0, 3010, 3008, 1, 0, 0, 0, 3010, 3009, 1, 0, 0, 0, 3011, 287, 1, 0, + 0, 0, 3012, 3013, 3, 246, 123, 0, 3013, 289, 1, 0, 0, 0, 3014, 3015, 5, + 196, 0, 0, 3015, 3016, 7, 15, 0, 0, 3016, 3017, 5, 487, 0, 0, 3017, 3018, + 3, 668, 334, 0, 3018, 291, 1, 0, 0, 0, 3019, 3020, 5, 319, 0, 0, 3020, + 3021, 5, 321, 0, 0, 3021, 3022, 3, 668, 334, 0, 3022, 3023, 5, 354, 0, + 0, 3023, 3024, 3, 668, 334, 0, 3024, 293, 1, 0, 0, 0, 3025, 3026, 5, 328, + 0, 0, 3026, 3028, 5, 514, 0, 0, 3027, 3029, 3, 246, 123, 0, 3028, 3027, + 1, 0, 0, 0, 3028, 3029, 1, 0, 0, 0, 3029, 3042, 1, 0, 0, 0, 3030, 3031, + 5, 328, 0, 0, 3031, 3033, 3, 668, 334, 0, 3032, 3034, 3, 246, 123, 0, 3033, + 3032, 1, 0, 0, 0, 3033, 3034, 1, 0, 0, 0, 3034, 3042, 1, 0, 0, 0, 3035, + 3036, 5, 328, 0, 0, 3036, 3037, 5, 359, 0, 0, 3037, 3038, 3, 708, 354, + 0, 3038, 3039, 5, 71, 0, 0, 3039, 3040, 5, 517, 0, 0, 3040, 3042, 1, 0, + 0, 0, 3041, 3025, 1, 0, 0, 0, 3041, 3030, 1, 0, 0, 0, 3041, 3035, 1, 0, + 0, 0, 3042, 295, 1, 0, 0, 0, 3043, 3044, 5, 327, 0, 0, 3044, 3045, 3, 668, + 334, 0, 3045, 297, 1, 0, 0, 0, 3046, 3047, 5, 77, 0, 0, 3047, 3061, 5, + 265, 0, 0, 3048, 3049, 5, 77, 0, 0, 3049, 3061, 5, 329, 0, 0, 3050, 3051, + 5, 77, 0, 0, 3051, 3052, 5, 359, 0, 0, 3052, 3053, 3, 708, 354, 0, 3053, + 3054, 5, 76, 0, 0, 3054, 3055, 3, 708, 354, 0, 3055, 3061, 1, 0, 0, 0, + 3056, 3057, 5, 77, 0, 0, 3057, 3061, 5, 424, 0, 0, 3058, 3059, 5, 77, 0, + 0, 3059, 3061, 5, 322, 0, 0, 3060, 3046, 1, 0, 0, 0, 3060, 3048, 1, 0, + 0, 0, 3060, 3050, 1, 0, 0, 0, 3060, 3056, 1, 0, 0, 0, 3060, 3058, 1, 0, + 0, 0, 3061, 299, 1, 0, 0, 0, 3062, 3063, 5, 517, 0, 0, 3063, 3065, 5, 487, + 0, 0, 3064, 3062, 1, 0, 0, 0, 3064, 3065, 1, 0, 0, 0, 3065, 3066, 1, 0, + 0, 0, 3066, 3067, 5, 331, 0, 0, 3067, 3068, 5, 314, 0, 0, 3068, 3069, 5, + 330, 0, 0, 3069, 3071, 3, 708, 354, 0, 3070, 3072, 3, 302, 151, 0, 3071, + 3070, 1, 0, 0, 0, 3071, 3072, 1, 0, 0, 0, 3072, 3074, 1, 0, 0, 0, 3073, + 3075, 3, 226, 113, 0, 3074, 3073, 1, 0, 0, 0, 3074, 3075, 1, 0, 0, 0, 3075, + 301, 1, 0, 0, 0, 3076, 3077, 5, 328, 0, 0, 3077, 3078, 5, 517, 0, 0, 3078, + 303, 1, 0, 0, 0, 3079, 3080, 5, 517, 0, 0, 3080, 3081, 5, 487, 0, 0, 3081, + 3082, 3, 306, 153, 0, 3082, 305, 1, 0, 0, 0, 3083, 3084, 5, 121, 0, 0, + 3084, 3085, 5, 500, 0, 0, 3085, 3086, 5, 517, 0, 0, 3086, 3143, 5, 501, + 0, 0, 3087, 3088, 5, 122, 0, 0, 3088, 3089, 5, 500, 0, 0, 3089, 3090, 5, + 517, 0, 0, 3090, 3143, 5, 501, 0, 0, 3091, 3092, 5, 123, 0, 0, 3092, 3093, + 5, 500, 0, 0, 3093, 3094, 5, 517, 0, 0, 3094, 3095, 5, 498, 0, 0, 3095, + 3096, 3, 668, 334, 0, 3096, 3097, 5, 501, 0, 0, 3097, 3143, 1, 0, 0, 0, + 3098, 3099, 5, 186, 0, 0, 3099, 3100, 5, 500, 0, 0, 3100, 3101, 5, 517, + 0, 0, 3101, 3102, 5, 498, 0, 0, 3102, 3103, 3, 668, 334, 0, 3103, 3104, + 5, 501, 0, 0, 3104, 3143, 1, 0, 0, 0, 3105, 3106, 5, 124, 0, 0, 3106, 3107, + 5, 500, 0, 0, 3107, 3108, 5, 517, 0, 0, 3108, 3109, 5, 498, 0, 0, 3109, + 3110, 3, 308, 154, 0, 3110, 3111, 5, 501, 0, 0, 3111, 3143, 1, 0, 0, 0, + 3112, 3113, 5, 125, 0, 0, 3113, 3114, 5, 500, 0, 0, 3114, 3115, 5, 517, + 0, 0, 3115, 3116, 5, 498, 0, 0, 3116, 3117, 5, 517, 0, 0, 3117, 3143, 5, + 501, 0, 0, 3118, 3119, 5, 126, 0, 0, 3119, 3120, 5, 500, 0, 0, 3120, 3121, + 5, 517, 0, 0, 3121, 3122, 5, 498, 0, 0, 3122, 3123, 5, 517, 0, 0, 3123, + 3143, 5, 501, 0, 0, 3124, 3125, 5, 127, 0, 0, 3125, 3126, 5, 500, 0, 0, + 3126, 3127, 5, 517, 0, 0, 3127, 3128, 5, 498, 0, 0, 3128, 3129, 5, 517, + 0, 0, 3129, 3143, 5, 501, 0, 0, 3130, 3131, 5, 128, 0, 0, 3131, 3132, 5, + 500, 0, 0, 3132, 3133, 5, 517, 0, 0, 3133, 3134, 5, 498, 0, 0, 3134, 3135, + 5, 517, 0, 0, 3135, 3143, 5, 501, 0, 0, 3136, 3137, 5, 134, 0, 0, 3137, + 3138, 5, 500, 0, 0, 3138, 3139, 5, 517, 0, 0, 3139, 3140, 5, 498, 0, 0, + 3140, 3141, 5, 517, 0, 0, 3141, 3143, 5, 501, 0, 0, 3142, 3083, 1, 0, 0, + 0, 3142, 3087, 1, 0, 0, 0, 3142, 3091, 1, 0, 0, 0, 3142, 3098, 1, 0, 0, + 0, 3142, 3105, 1, 0, 0, 0, 3142, 3112, 1, 0, 0, 0, 3142, 3118, 1, 0, 0, + 0, 3142, 3124, 1, 0, 0, 0, 3142, 3130, 1, 0, 0, 0, 3142, 3136, 1, 0, 0, + 0, 3143, 307, 1, 0, 0, 0, 3144, 3149, 3, 310, 155, 0, 3145, 3146, 5, 498, + 0, 0, 3146, 3148, 3, 310, 155, 0, 3147, 3145, 1, 0, 0, 0, 3148, 3151, 1, + 0, 0, 0, 3149, 3147, 1, 0, 0, 0, 3149, 3150, 1, 0, 0, 0, 3150, 309, 1, + 0, 0, 0, 3151, 3149, 1, 0, 0, 0, 3152, 3154, 5, 518, 0, 0, 3153, 3155, + 7, 7, 0, 0, 3154, 3153, 1, 0, 0, 0, 3154, 3155, 1, 0, 0, 0, 3155, 311, + 1, 0, 0, 0, 3156, 3157, 5, 517, 0, 0, 3157, 3158, 5, 487, 0, 0, 3158, 3159, + 3, 314, 157, 0, 3159, 313, 1, 0, 0, 0, 3160, 3161, 5, 279, 0, 0, 3161, + 3162, 5, 500, 0, 0, 3162, 3163, 5, 517, 0, 0, 3163, 3185, 5, 501, 0, 0, + 3164, 3165, 5, 280, 0, 0, 3165, 3166, 5, 500, 0, 0, 3166, 3167, 3, 214, + 107, 0, 3167, 3168, 5, 501, 0, 0, 3168, 3185, 1, 0, 0, 0, 3169, 3170, 5, + 129, 0, 0, 3170, 3171, 5, 500, 0, 0, 3171, 3172, 3, 214, 107, 0, 3172, + 3173, 5, 501, 0, 0, 3173, 3185, 1, 0, 0, 0, 3174, 3175, 5, 130, 0, 0, 3175, + 3176, 5, 500, 0, 0, 3176, 3177, 3, 214, 107, 0, 3177, 3178, 5, 501, 0, + 0, 3178, 3185, 1, 0, 0, 0, 3179, 3180, 5, 131, 0, 0, 3180, 3181, 5, 500, + 0, 0, 3181, 3182, 3, 214, 107, 0, 3182, 3183, 5, 501, 0, 0, 3183, 3185, + 1, 0, 0, 0, 3184, 3160, 1, 0, 0, 0, 3184, 3164, 1, 0, 0, 0, 3184, 3169, + 1, 0, 0, 0, 3184, 3174, 1, 0, 0, 0, 3184, 3179, 1, 0, 0, 0, 3185, 315, + 1, 0, 0, 0, 3186, 3187, 5, 517, 0, 0, 3187, 3188, 5, 487, 0, 0, 3188, 3189, + 5, 17, 0, 0, 3189, 3190, 5, 13, 0, 0, 3190, 3191, 3, 708, 354, 0, 3191, + 317, 1, 0, 0, 0, 3192, 3193, 5, 47, 0, 0, 3193, 3194, 5, 517, 0, 0, 3194, + 3195, 5, 426, 0, 0, 3195, 3196, 5, 517, 0, 0, 3196, 319, 1, 0, 0, 0, 3197, + 3198, 5, 133, 0, 0, 3198, 3199, 5, 517, 0, 0, 3199, 3200, 5, 71, 0, 0, + 3200, 3201, 5, 517, 0, 0, 3201, 321, 1, 0, 0, 0, 3202, 3207, 3, 324, 162, + 0, 3203, 3204, 5, 498, 0, 0, 3204, 3206, 3, 324, 162, 0, 3205, 3203, 1, + 0, 0, 0, 3206, 3209, 1, 0, 0, 0, 3207, 3205, 1, 0, 0, 0, 3207, 3208, 1, + 0, 0, 0, 3208, 323, 1, 0, 0, 0, 3209, 3207, 1, 0, 0, 0, 3210, 3211, 3, + 326, 163, 0, 3211, 3212, 5, 487, 0, 0, 3212, 3213, 3, 668, 334, 0, 3213, + 325, 1, 0, 0, 0, 3214, 3219, 3, 708, 354, 0, 3215, 3219, 5, 518, 0, 0, + 3216, 3219, 5, 520, 0, 0, 3217, 3219, 3, 730, 365, 0, 3218, 3214, 1, 0, + 0, 0, 3218, 3215, 1, 0, 0, 0, 3218, 3216, 1, 0, 0, 0, 3218, 3217, 1, 0, + 0, 0, 3219, 327, 1, 0, 0, 0, 3220, 3225, 3, 330, 165, 0, 3221, 3222, 5, + 498, 0, 0, 3222, 3224, 3, 330, 165, 0, 3223, 3221, 1, 0, 0, 0, 3224, 3227, + 1, 0, 0, 0, 3225, 3223, 1, 0, 0, 0, 3225, 3226, 1, 0, 0, 0, 3226, 329, + 1, 0, 0, 0, 3227, 3225, 1, 0, 0, 0, 3228, 3229, 5, 518, 0, 0, 3229, 3230, + 5, 487, 0, 0, 3230, 3231, 3, 668, 334, 0, 3231, 331, 1, 0, 0, 0, 3232, + 3233, 5, 33, 0, 0, 3233, 3234, 3, 708, 354, 0, 3234, 3235, 3, 382, 191, + 0, 3235, 3236, 5, 502, 0, 0, 3236, 3237, 3, 390, 195, 0, 3237, 3238, 5, + 503, 0, 0, 3238, 333, 1, 0, 0, 0, 3239, 3240, 5, 34, 0, 0, 3240, 3242, + 3, 708, 354, 0, 3241, 3243, 3, 386, 193, 0, 3242, 3241, 1, 0, 0, 0, 3242, + 3243, 1, 0, 0, 0, 3243, 3245, 1, 0, 0, 0, 3244, 3246, 3, 336, 168, 0, 3245, + 3244, 1, 0, 0, 0, 3245, 3246, 1, 0, 0, 0, 3246, 3247, 1, 0, 0, 0, 3247, + 3248, 5, 502, 0, 0, 3248, 3249, 3, 390, 195, 0, 3249, 3250, 5, 503, 0, + 0, 3250, 335, 1, 0, 0, 0, 3251, 3253, 3, 338, 169, 0, 3252, 3251, 1, 0, + 0, 0, 3253, 3254, 1, 0, 0, 0, 3254, 3252, 1, 0, 0, 0, 3254, 3255, 1, 0, + 0, 0, 3255, 337, 1, 0, 0, 0, 3256, 3257, 5, 220, 0, 0, 3257, 3258, 5, 514, + 0, 0, 3258, 339, 1, 0, 0, 0, 3259, 3264, 3, 342, 171, 0, 3260, 3261, 5, + 498, 0, 0, 3261, 3263, 3, 342, 171, 0, 3262, 3260, 1, 0, 0, 0, 3263, 3266, + 1, 0, 0, 0, 3264, 3262, 1, 0, 0, 0, 3264, 3265, 1, 0, 0, 0, 3265, 341, + 1, 0, 0, 0, 3266, 3264, 1, 0, 0, 0, 3267, 3268, 7, 16, 0, 0, 3268, 3269, + 5, 506, 0, 0, 3269, 3270, 3, 108, 54, 0, 3270, 343, 1, 0, 0, 0, 3271, 3276, + 3, 346, 173, 0, 3272, 3273, 5, 498, 0, 0, 3273, 3275, 3, 346, 173, 0, 3274, + 3272, 1, 0, 0, 0, 3275, 3278, 1, 0, 0, 0, 3276, 3274, 1, 0, 0, 0, 3276, + 3277, 1, 0, 0, 0, 3277, 345, 1, 0, 0, 0, 3278, 3276, 1, 0, 0, 0, 3279, + 3280, 7, 16, 0, 0, 3280, 3281, 5, 506, 0, 0, 3281, 3282, 3, 108, 54, 0, + 3282, 347, 1, 0, 0, 0, 3283, 3288, 3, 350, 175, 0, 3284, 3285, 5, 498, + 0, 0, 3285, 3287, 3, 350, 175, 0, 3286, 3284, 1, 0, 0, 0, 3287, 3290, 1, + 0, 0, 0, 3288, 3286, 1, 0, 0, 0, 3288, 3289, 1, 0, 0, 0, 3289, 349, 1, + 0, 0, 0, 3290, 3288, 1, 0, 0, 0, 3291, 3292, 5, 517, 0, 0, 3292, 3293, + 5, 506, 0, 0, 3293, 3294, 3, 108, 54, 0, 3294, 3295, 5, 487, 0, 0, 3295, + 3296, 5, 514, 0, 0, 3296, 351, 1, 0, 0, 0, 3297, 3300, 3, 708, 354, 0, + 3298, 3300, 5, 518, 0, 0, 3299, 3297, 1, 0, 0, 0, 3299, 3298, 1, 0, 0, + 0, 3300, 3302, 1, 0, 0, 0, 3301, 3303, 7, 7, 0, 0, 3302, 3301, 1, 0, 0, + 0, 3302, 3303, 1, 0, 0, 0, 3303, 353, 1, 0, 0, 0, 3304, 3305, 5, 504, 0, + 0, 3305, 3306, 3, 358, 179, 0, 3306, 3307, 5, 505, 0, 0, 3307, 355, 1, + 0, 0, 0, 3308, 3309, 7, 17, 0, 0, 3309, 357, 1, 0, 0, 0, 3310, 3315, 3, + 360, 180, 0, 3311, 3312, 5, 289, 0, 0, 3312, 3314, 3, 360, 180, 0, 3313, + 3311, 1, 0, 0, 0, 3314, 3317, 1, 0, 0, 0, 3315, 3313, 1, 0, 0, 0, 3315, + 3316, 1, 0, 0, 0, 3316, 359, 1, 0, 0, 0, 3317, 3315, 1, 0, 0, 0, 3318, + 3323, 3, 362, 181, 0, 3319, 3320, 5, 288, 0, 0, 3320, 3322, 3, 362, 181, + 0, 3321, 3319, 1, 0, 0, 0, 3322, 3325, 1, 0, 0, 0, 3323, 3321, 1, 0, 0, + 0, 3323, 3324, 1, 0, 0, 0, 3324, 361, 1, 0, 0, 0, 3325, 3323, 1, 0, 0, + 0, 3326, 3327, 5, 290, 0, 0, 3327, 3330, 3, 362, 181, 0, 3328, 3330, 3, + 364, 182, 0, 3329, 3326, 1, 0, 0, 0, 3329, 3328, 1, 0, 0, 0, 3330, 363, + 1, 0, 0, 0, 3331, 3335, 3, 366, 183, 0, 3332, 3333, 3, 678, 339, 0, 3333, + 3334, 3, 366, 183, 0, 3334, 3336, 1, 0, 0, 0, 3335, 3332, 1, 0, 0, 0, 3335, + 3336, 1, 0, 0, 0, 3336, 365, 1, 0, 0, 0, 3337, 3344, 3, 378, 189, 0, 3338, + 3344, 3, 368, 184, 0, 3339, 3340, 5, 500, 0, 0, 3340, 3341, 3, 358, 179, + 0, 3341, 3342, 5, 501, 0, 0, 3342, 3344, 1, 0, 0, 0, 3343, 3337, 1, 0, + 0, 0, 3343, 3338, 1, 0, 0, 0, 3343, 3339, 1, 0, 0, 0, 3344, 367, 1, 0, + 0, 0, 3345, 3350, 3, 370, 185, 0, 3346, 3347, 5, 493, 0, 0, 3347, 3349, + 3, 370, 185, 0, 3348, 3346, 1, 0, 0, 0, 3349, 3352, 1, 0, 0, 0, 3350, 3348, + 1, 0, 0, 0, 3350, 3351, 1, 0, 0, 0, 3351, 369, 1, 0, 0, 0, 3352, 3350, + 1, 0, 0, 0, 3353, 3358, 3, 372, 186, 0, 3354, 3355, 5, 504, 0, 0, 3355, + 3356, 3, 358, 179, 0, 3356, 3357, 5, 505, 0, 0, 3357, 3359, 1, 0, 0, 0, + 3358, 3354, 1, 0, 0, 0, 3358, 3359, 1, 0, 0, 0, 3359, 371, 1, 0, 0, 0, + 3360, 3366, 3, 374, 187, 0, 3361, 3366, 5, 517, 0, 0, 3362, 3366, 5, 514, + 0, 0, 3363, 3366, 5, 516, 0, 0, 3364, 3366, 5, 513, 0, 0, 3365, 3360, 1, + 0, 0, 0, 3365, 3361, 1, 0, 0, 0, 3365, 3362, 1, 0, 0, 0, 3365, 3363, 1, + 0, 0, 0, 3365, 3364, 1, 0, 0, 0, 3366, 373, 1, 0, 0, 0, 3367, 3372, 3, + 376, 188, 0, 3368, 3369, 5, 499, 0, 0, 3369, 3371, 3, 376, 188, 0, 3370, + 3368, 1, 0, 0, 0, 3371, 3374, 1, 0, 0, 0, 3372, 3370, 1, 0, 0, 0, 3372, + 3373, 1, 0, 0, 0, 3373, 375, 1, 0, 0, 0, 3374, 3372, 1, 0, 0, 0, 3375, + 3376, 8, 18, 0, 0, 3376, 377, 1, 0, 0, 0, 3377, 3378, 3, 380, 190, 0, 3378, + 3387, 5, 500, 0, 0, 3379, 3384, 3, 358, 179, 0, 3380, 3381, 5, 498, 0, + 0, 3381, 3383, 3, 358, 179, 0, 3382, 3380, 1, 0, 0, 0, 3383, 3386, 1, 0, + 0, 0, 3384, 3382, 1, 0, 0, 0, 3384, 3385, 1, 0, 0, 0, 3385, 3388, 1, 0, + 0, 0, 3386, 3384, 1, 0, 0, 0, 3387, 3379, 1, 0, 0, 0, 3387, 3388, 1, 0, + 0, 0, 3388, 3389, 1, 0, 0, 0, 3389, 3390, 5, 501, 0, 0, 3390, 379, 1, 0, + 0, 0, 3391, 3392, 7, 19, 0, 0, 3392, 381, 1, 0, 0, 0, 3393, 3394, 5, 500, + 0, 0, 3394, 3399, 3, 384, 192, 0, 3395, 3396, 5, 498, 0, 0, 3396, 3398, + 3, 384, 192, 0, 3397, 3395, 1, 0, 0, 0, 3398, 3401, 1, 0, 0, 0, 3399, 3397, + 1, 0, 0, 0, 3399, 3400, 1, 0, 0, 0, 3400, 3402, 1, 0, 0, 0, 3401, 3399, + 1, 0, 0, 0, 3402, 3403, 5, 501, 0, 0, 3403, 383, 1, 0, 0, 0, 3404, 3405, + 5, 203, 0, 0, 3405, 3406, 5, 506, 0, 0, 3406, 3407, 5, 502, 0, 0, 3407, + 3408, 3, 340, 170, 0, 3408, 3409, 5, 503, 0, 0, 3409, 3432, 1, 0, 0, 0, + 3410, 3411, 5, 204, 0, 0, 3411, 3412, 5, 506, 0, 0, 3412, 3413, 5, 502, + 0, 0, 3413, 3414, 3, 348, 174, 0, 3414, 3415, 5, 503, 0, 0, 3415, 3432, + 1, 0, 0, 0, 3416, 3417, 5, 164, 0, 0, 3417, 3418, 5, 506, 0, 0, 3418, 3432, + 5, 514, 0, 0, 3419, 3420, 5, 35, 0, 0, 3420, 3423, 5, 506, 0, 0, 3421, + 3424, 3, 708, 354, 0, 3422, 3424, 5, 514, 0, 0, 3423, 3421, 1, 0, 0, 0, + 3423, 3422, 1, 0, 0, 0, 3424, 3432, 1, 0, 0, 0, 3425, 3426, 5, 219, 0, + 0, 3426, 3427, 5, 506, 0, 0, 3427, 3432, 5, 514, 0, 0, 3428, 3429, 5, 220, + 0, 0, 3429, 3430, 5, 506, 0, 0, 3430, 3432, 5, 514, 0, 0, 3431, 3404, 1, + 0, 0, 0, 3431, 3410, 1, 0, 0, 0, 3431, 3416, 1, 0, 0, 0, 3431, 3419, 1, + 0, 0, 0, 3431, 3425, 1, 0, 0, 0, 3431, 3428, 1, 0, 0, 0, 3432, 385, 1, + 0, 0, 0, 3433, 3434, 5, 500, 0, 0, 3434, 3439, 3, 388, 194, 0, 3435, 3436, + 5, 498, 0, 0, 3436, 3438, 3, 388, 194, 0, 3437, 3435, 1, 0, 0, 0, 3438, + 3441, 1, 0, 0, 0, 3439, 3437, 1, 0, 0, 0, 3439, 3440, 1, 0, 0, 0, 3440, + 3442, 1, 0, 0, 0, 3441, 3439, 1, 0, 0, 0, 3442, 3443, 5, 501, 0, 0, 3443, + 387, 1, 0, 0, 0, 3444, 3445, 5, 203, 0, 0, 3445, 3446, 5, 506, 0, 0, 3446, + 3447, 5, 502, 0, 0, 3447, 3448, 3, 344, 172, 0, 3448, 3449, 5, 503, 0, + 0, 3449, 3460, 1, 0, 0, 0, 3450, 3451, 5, 204, 0, 0, 3451, 3452, 5, 506, + 0, 0, 3452, 3453, 5, 502, 0, 0, 3453, 3454, 3, 348, 174, 0, 3454, 3455, + 5, 503, 0, 0, 3455, 3460, 1, 0, 0, 0, 3456, 3457, 5, 220, 0, 0, 3457, 3458, + 5, 506, 0, 0, 3458, 3460, 5, 514, 0, 0, 3459, 3444, 1, 0, 0, 0, 3459, 3450, + 1, 0, 0, 0, 3459, 3456, 1, 0, 0, 0, 3460, 389, 1, 0, 0, 0, 3461, 3464, + 3, 394, 197, 0, 3462, 3464, 3, 392, 196, 0, 3463, 3461, 1, 0, 0, 0, 3463, + 3462, 1, 0, 0, 0, 3464, 3467, 1, 0, 0, 0, 3465, 3463, 1, 0, 0, 0, 3465, + 3466, 1, 0, 0, 0, 3466, 391, 1, 0, 0, 0, 3467, 3465, 1, 0, 0, 0, 3468, + 3469, 5, 67, 0, 0, 3469, 3470, 5, 390, 0, 0, 3470, 3473, 3, 710, 355, 0, + 3471, 3472, 5, 76, 0, 0, 3472, 3474, 3, 710, 355, 0, 3473, 3471, 1, 0, + 0, 0, 3473, 3474, 1, 0, 0, 0, 3474, 393, 1, 0, 0, 0, 3475, 3476, 3, 396, + 198, 0, 3476, 3478, 5, 518, 0, 0, 3477, 3479, 3, 398, 199, 0, 3478, 3477, + 1, 0, 0, 0, 3478, 3479, 1, 0, 0, 0, 3479, 3481, 1, 0, 0, 0, 3480, 3482, + 3, 436, 218, 0, 3481, 3480, 1, 0, 0, 0, 3481, 3482, 1, 0, 0, 0, 3482, 3502, + 1, 0, 0, 0, 3483, 3484, 5, 181, 0, 0, 3484, 3485, 5, 514, 0, 0, 3485, 3487, + 5, 518, 0, 0, 3486, 3488, 3, 398, 199, 0, 3487, 3486, 1, 0, 0, 0, 3487, + 3488, 1, 0, 0, 0, 3488, 3490, 1, 0, 0, 0, 3489, 3491, 3, 436, 218, 0, 3490, + 3489, 1, 0, 0, 0, 3490, 3491, 1, 0, 0, 0, 3491, 3502, 1, 0, 0, 0, 3492, + 3493, 5, 180, 0, 0, 3493, 3494, 5, 514, 0, 0, 3494, 3496, 5, 518, 0, 0, + 3495, 3497, 3, 398, 199, 0, 3496, 3495, 1, 0, 0, 0, 3496, 3497, 1, 0, 0, + 0, 3497, 3499, 1, 0, 0, 0, 3498, 3500, 3, 436, 218, 0, 3499, 3498, 1, 0, + 0, 0, 3499, 3500, 1, 0, 0, 0, 3500, 3502, 1, 0, 0, 0, 3501, 3475, 1, 0, + 0, 0, 3501, 3483, 1, 0, 0, 0, 3501, 3492, 1, 0, 0, 0, 3502, 395, 1, 0, + 0, 0, 3503, 3504, 7, 20, 0, 0, 3504, 397, 1, 0, 0, 0, 3505, 3506, 5, 500, + 0, 0, 3506, 3511, 3, 400, 200, 0, 3507, 3508, 5, 498, 0, 0, 3508, 3510, + 3, 400, 200, 0, 3509, 3507, 1, 0, 0, 0, 3510, 3513, 1, 0, 0, 0, 3511, 3509, + 1, 0, 0, 0, 3511, 3512, 1, 0, 0, 0, 3512, 3514, 1, 0, 0, 0, 3513, 3511, + 1, 0, 0, 0, 3514, 3515, 5, 501, 0, 0, 3515, 399, 1, 0, 0, 0, 3516, 3517, + 5, 192, 0, 0, 3517, 3518, 5, 506, 0, 0, 3518, 3611, 3, 406, 203, 0, 3519, + 3520, 5, 38, 0, 0, 3520, 3521, 5, 506, 0, 0, 3521, 3611, 3, 414, 207, 0, + 3522, 3523, 5, 199, 0, 0, 3523, 3524, 5, 506, 0, 0, 3524, 3611, 3, 414, + 207, 0, 3525, 3526, 5, 116, 0, 0, 3526, 3527, 5, 506, 0, 0, 3527, 3611, + 3, 408, 204, 0, 3528, 3529, 5, 189, 0, 0, 3529, 3530, 5, 506, 0, 0, 3530, + 3611, 3, 416, 208, 0, 3531, 3532, 5, 168, 0, 0, 3532, 3533, 5, 506, 0, + 0, 3533, 3611, 5, 514, 0, 0, 3534, 3535, 5, 200, 0, 0, 3535, 3536, 5, 506, + 0, 0, 3536, 3611, 3, 414, 207, 0, 3537, 3538, 5, 197, 0, 0, 3538, 3539, + 5, 506, 0, 0, 3539, 3611, 3, 416, 208, 0, 3540, 3541, 5, 198, 0, 0, 3541, + 3542, 5, 506, 0, 0, 3542, 3611, 3, 422, 211, 0, 3543, 3544, 5, 201, 0, + 0, 3544, 3545, 5, 506, 0, 0, 3545, 3611, 3, 418, 209, 0, 3546, 3547, 5, + 202, 0, 0, 3547, 3548, 5, 506, 0, 0, 3548, 3611, 3, 418, 209, 0, 3549, + 3550, 5, 210, 0, 0, 3550, 3551, 5, 506, 0, 0, 3551, 3611, 3, 424, 212, + 0, 3552, 3553, 5, 208, 0, 0, 3553, 3554, 5, 506, 0, 0, 3554, 3611, 5, 514, + 0, 0, 3555, 3556, 5, 209, 0, 0, 3556, 3557, 5, 506, 0, 0, 3557, 3611, 5, + 514, 0, 0, 3558, 3559, 5, 205, 0, 0, 3559, 3560, 5, 506, 0, 0, 3560, 3611, + 3, 426, 213, 0, 3561, 3562, 5, 206, 0, 0, 3562, 3563, 5, 506, 0, 0, 3563, + 3611, 3, 426, 213, 0, 3564, 3565, 5, 207, 0, 0, 3565, 3566, 5, 506, 0, + 0, 3566, 3611, 3, 426, 213, 0, 3567, 3568, 5, 194, 0, 0, 3568, 3569, 5, + 506, 0, 0, 3569, 3611, 3, 428, 214, 0, 3570, 3571, 5, 34, 0, 0, 3571, 3572, + 5, 506, 0, 0, 3572, 3611, 3, 708, 354, 0, 3573, 3574, 5, 225, 0, 0, 3574, + 3575, 5, 506, 0, 0, 3575, 3611, 3, 404, 202, 0, 3576, 3577, 5, 226, 0, + 0, 3577, 3578, 5, 506, 0, 0, 3578, 3611, 3, 402, 201, 0, 3579, 3580, 5, + 213, 0, 0, 3580, 3581, 5, 506, 0, 0, 3581, 3611, 3, 432, 216, 0, 3582, + 3583, 5, 216, 0, 0, 3583, 3584, 5, 506, 0, 0, 3584, 3611, 5, 516, 0, 0, + 3585, 3586, 5, 217, 0, 0, 3586, 3587, 5, 506, 0, 0, 3587, 3611, 5, 516, + 0, 0, 3588, 3589, 5, 235, 0, 0, 3589, 3590, 5, 506, 0, 0, 3590, 3611, 3, + 354, 177, 0, 3591, 3592, 5, 235, 0, 0, 3592, 3593, 5, 506, 0, 0, 3593, + 3611, 3, 430, 215, 0, 3594, 3595, 5, 223, 0, 0, 3595, 3596, 5, 506, 0, + 0, 3596, 3611, 3, 354, 177, 0, 3597, 3598, 5, 223, 0, 0, 3598, 3599, 5, + 506, 0, 0, 3599, 3611, 3, 430, 215, 0, 3600, 3601, 5, 191, 0, 0, 3601, + 3602, 5, 506, 0, 0, 3602, 3611, 3, 430, 215, 0, 3603, 3604, 5, 518, 0, + 0, 3604, 3605, 5, 506, 0, 0, 3605, 3611, 3, 430, 215, 0, 3606, 3607, 3, + 732, 366, 0, 3607, 3608, 5, 506, 0, 0, 3608, 3609, 3, 430, 215, 0, 3609, + 3611, 1, 0, 0, 0, 3610, 3516, 1, 0, 0, 0, 3610, 3519, 1, 0, 0, 0, 3610, + 3522, 1, 0, 0, 0, 3610, 3525, 1, 0, 0, 0, 3610, 3528, 1, 0, 0, 0, 3610, + 3531, 1, 0, 0, 0, 3610, 3534, 1, 0, 0, 0, 3610, 3537, 1, 0, 0, 0, 3610, + 3540, 1, 0, 0, 0, 3610, 3543, 1, 0, 0, 0, 3610, 3546, 1, 0, 0, 0, 3610, + 3549, 1, 0, 0, 0, 3610, 3552, 1, 0, 0, 0, 3610, 3555, 1, 0, 0, 0, 3610, + 3558, 1, 0, 0, 0, 3610, 3561, 1, 0, 0, 0, 3610, 3564, 1, 0, 0, 0, 3610, + 3567, 1, 0, 0, 0, 3610, 3570, 1, 0, 0, 0, 3610, 3573, 1, 0, 0, 0, 3610, + 3576, 1, 0, 0, 0, 3610, 3579, 1, 0, 0, 0, 3610, 3582, 1, 0, 0, 0, 3610, + 3585, 1, 0, 0, 0, 3610, 3588, 1, 0, 0, 0, 3610, 3591, 1, 0, 0, 0, 3610, + 3594, 1, 0, 0, 0, 3610, 3597, 1, 0, 0, 0, 3610, 3600, 1, 0, 0, 0, 3610, + 3603, 1, 0, 0, 0, 3610, 3606, 1, 0, 0, 0, 3611, 401, 1, 0, 0, 0, 3612, + 3613, 7, 21, 0, 0, 3613, 403, 1, 0, 0, 0, 3614, 3615, 5, 504, 0, 0, 3615, + 3620, 3, 708, 354, 0, 3616, 3617, 5, 498, 0, 0, 3617, 3619, 3, 708, 354, + 0, 3618, 3616, 1, 0, 0, 0, 3619, 3622, 1, 0, 0, 0, 3620, 3618, 1, 0, 0, + 0, 3620, 3621, 1, 0, 0, 0, 3621, 3623, 1, 0, 0, 0, 3622, 3620, 1, 0, 0, + 0, 3623, 3624, 5, 505, 0, 0, 3624, 405, 1, 0, 0, 0, 3625, 3672, 5, 517, + 0, 0, 3626, 3628, 5, 356, 0, 0, 3627, 3629, 5, 71, 0, 0, 3628, 3627, 1, + 0, 0, 0, 3628, 3629, 1, 0, 0, 0, 3629, 3630, 1, 0, 0, 0, 3630, 3644, 3, + 708, 354, 0, 3631, 3642, 5, 72, 0, 0, 3632, 3638, 3, 354, 177, 0, 3633, + 3634, 3, 356, 178, 0, 3634, 3635, 3, 354, 177, 0, 3635, 3637, 1, 0, 0, + 0, 3636, 3633, 1, 0, 0, 0, 3637, 3640, 1, 0, 0, 0, 3638, 3636, 1, 0, 0, + 0, 3638, 3639, 1, 0, 0, 0, 3639, 3643, 1, 0, 0, 0, 3640, 3638, 1, 0, 0, + 0, 3641, 3643, 3, 668, 334, 0, 3642, 3632, 1, 0, 0, 0, 3642, 3641, 1, 0, + 0, 0, 3643, 3645, 1, 0, 0, 0, 3644, 3631, 1, 0, 0, 0, 3644, 3645, 1, 0, + 0, 0, 3645, 3655, 1, 0, 0, 0, 3646, 3647, 5, 10, 0, 0, 3647, 3652, 3, 352, + 176, 0, 3648, 3649, 5, 498, 0, 0, 3649, 3651, 3, 352, 176, 0, 3650, 3648, + 1, 0, 0, 0, 3651, 3654, 1, 0, 0, 0, 3652, 3650, 1, 0, 0, 0, 3652, 3653, + 1, 0, 0, 0, 3653, 3656, 1, 0, 0, 0, 3654, 3652, 1, 0, 0, 0, 3655, 3646, + 1, 0, 0, 0, 3655, 3656, 1, 0, 0, 0, 3656, 3672, 1, 0, 0, 0, 3657, 3658, + 5, 30, 0, 0, 3658, 3660, 3, 708, 354, 0, 3659, 3661, 3, 410, 205, 0, 3660, + 3659, 1, 0, 0, 0, 3660, 3661, 1, 0, 0, 0, 3661, 3672, 1, 0, 0, 0, 3662, + 3663, 5, 31, 0, 0, 3663, 3665, 3, 708, 354, 0, 3664, 3666, 3, 410, 205, + 0, 3665, 3664, 1, 0, 0, 0, 3665, 3666, 1, 0, 0, 0, 3666, 3672, 1, 0, 0, + 0, 3667, 3668, 5, 27, 0, 0, 3668, 3672, 3, 414, 207, 0, 3669, 3670, 5, + 194, 0, 0, 3670, 3672, 5, 518, 0, 0, 3671, 3625, 1, 0, 0, 0, 3671, 3626, + 1, 0, 0, 0, 3671, 3657, 1, 0, 0, 0, 3671, 3662, 1, 0, 0, 0, 3671, 3667, + 1, 0, 0, 0, 3671, 3669, 1, 0, 0, 0, 3672, 407, 1, 0, 0, 0, 3673, 3675, + 5, 237, 0, 0, 3674, 3676, 5, 239, 0, 0, 3675, 3674, 1, 0, 0, 0, 3675, 3676, + 1, 0, 0, 0, 3676, 3712, 1, 0, 0, 0, 3677, 3679, 5, 238, 0, 0, 3678, 3680, + 5, 239, 0, 0, 3679, 3678, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 3712, + 1, 0, 0, 0, 3681, 3712, 5, 239, 0, 0, 3682, 3712, 5, 242, 0, 0, 3683, 3685, + 5, 100, 0, 0, 3684, 3686, 5, 239, 0, 0, 3685, 3684, 1, 0, 0, 0, 3685, 3686, + 1, 0, 0, 0, 3686, 3712, 1, 0, 0, 0, 3687, 3688, 5, 243, 0, 0, 3688, 3691, + 3, 708, 354, 0, 3689, 3690, 5, 81, 0, 0, 3690, 3692, 3, 408, 204, 0, 3691, + 3689, 1, 0, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3712, 1, 0, 0, 0, 3693, + 3694, 5, 240, 0, 0, 3694, 3696, 3, 708, 354, 0, 3695, 3697, 3, 410, 205, + 0, 3696, 3695, 1, 0, 0, 0, 3696, 3697, 1, 0, 0, 0, 3697, 3712, 1, 0, 0, + 0, 3698, 3699, 5, 30, 0, 0, 3699, 3701, 3, 708, 354, 0, 3700, 3702, 3, + 410, 205, 0, 3701, 3700, 1, 0, 0, 0, 3701, 3702, 1, 0, 0, 0, 3702, 3712, + 1, 0, 0, 0, 3703, 3704, 5, 31, 0, 0, 3704, 3706, 3, 708, 354, 0, 3705, + 3707, 3, 410, 205, 0, 3706, 3705, 1, 0, 0, 0, 3706, 3707, 1, 0, 0, 0, 3707, + 3712, 1, 0, 0, 0, 3708, 3709, 5, 246, 0, 0, 3709, 3712, 5, 514, 0, 0, 3710, + 3712, 5, 247, 0, 0, 3711, 3673, 1, 0, 0, 0, 3711, 3677, 1, 0, 0, 0, 3711, + 3681, 1, 0, 0, 0, 3711, 3682, 1, 0, 0, 0, 3711, 3683, 1, 0, 0, 0, 3711, + 3687, 1, 0, 0, 0, 3711, 3693, 1, 0, 0, 0, 3711, 3698, 1, 0, 0, 0, 3711, + 3703, 1, 0, 0, 0, 3711, 3708, 1, 0, 0, 0, 3711, 3710, 1, 0, 0, 0, 3712, + 409, 1, 0, 0, 0, 3713, 3714, 5, 500, 0, 0, 3714, 3719, 3, 412, 206, 0, + 3715, 3716, 5, 498, 0, 0, 3716, 3718, 3, 412, 206, 0, 3717, 3715, 1, 0, + 0, 0, 3718, 3721, 1, 0, 0, 0, 3719, 3717, 1, 0, 0, 0, 3719, 3720, 1, 0, + 0, 0, 3720, 3722, 1, 0, 0, 0, 3721, 3719, 1, 0, 0, 0, 3722, 3723, 5, 501, + 0, 0, 3723, 411, 1, 0, 0, 0, 3724, 3725, 5, 518, 0, 0, 3725, 3726, 5, 506, + 0, 0, 3726, 3731, 3, 668, 334, 0, 3727, 3728, 5, 517, 0, 0, 3728, 3729, + 5, 487, 0, 0, 3729, 3731, 3, 668, 334, 0, 3730, 3724, 1, 0, 0, 0, 3730, + 3727, 1, 0, 0, 0, 3731, 413, 1, 0, 0, 0, 3732, 3736, 5, 518, 0, 0, 3733, + 3736, 5, 520, 0, 0, 3734, 3736, 3, 732, 366, 0, 3735, 3732, 1, 0, 0, 0, + 3735, 3733, 1, 0, 0, 0, 3735, 3734, 1, 0, 0, 0, 3736, 3745, 1, 0, 0, 0, + 3737, 3741, 5, 493, 0, 0, 3738, 3742, 5, 518, 0, 0, 3739, 3742, 5, 520, + 0, 0, 3740, 3742, 3, 732, 366, 0, 3741, 3738, 1, 0, 0, 0, 3741, 3739, 1, + 0, 0, 0, 3741, 3740, 1, 0, 0, 0, 3742, 3744, 1, 0, 0, 0, 3743, 3737, 1, + 0, 0, 0, 3744, 3747, 1, 0, 0, 0, 3745, 3743, 1, 0, 0, 0, 3745, 3746, 1, + 0, 0, 0, 3746, 415, 1, 0, 0, 0, 3747, 3745, 1, 0, 0, 0, 3748, 3759, 5, + 514, 0, 0, 3749, 3759, 3, 414, 207, 0, 3750, 3756, 5, 517, 0, 0, 3751, + 3754, 5, 499, 0, 0, 3752, 3755, 5, 518, 0, 0, 3753, 3755, 3, 732, 366, + 0, 3754, 3752, 1, 0, 0, 0, 3754, 3753, 1, 0, 0, 0, 3755, 3757, 1, 0, 0, + 0, 3756, 3751, 1, 0, 0, 0, 3756, 3757, 1, 0, 0, 0, 3757, 3759, 1, 0, 0, + 0, 3758, 3748, 1, 0, 0, 0, 3758, 3749, 1, 0, 0, 0, 3758, 3750, 1, 0, 0, + 0, 3759, 417, 1, 0, 0, 0, 3760, 3761, 5, 504, 0, 0, 3761, 3766, 3, 420, + 210, 0, 3762, 3763, 5, 498, 0, 0, 3763, 3765, 3, 420, 210, 0, 3764, 3762, + 1, 0, 0, 0, 3765, 3768, 1, 0, 0, 0, 3766, 3764, 1, 0, 0, 0, 3766, 3767, + 1, 0, 0, 0, 3767, 3769, 1, 0, 0, 0, 3768, 3766, 1, 0, 0, 0, 3769, 3770, + 5, 505, 0, 0, 3770, 419, 1, 0, 0, 0, 3771, 3772, 5, 502, 0, 0, 3772, 3773, + 5, 516, 0, 0, 3773, 3774, 5, 503, 0, 0, 3774, 3775, 5, 487, 0, 0, 3775, + 3776, 3, 668, 334, 0, 3776, 421, 1, 0, 0, 0, 3777, 3778, 7, 22, 0, 0, 3778, + 423, 1, 0, 0, 0, 3779, 3780, 7, 23, 0, 0, 3780, 425, 1, 0, 0, 0, 3781, + 3782, 7, 24, 0, 0, 3782, 427, 1, 0, 0, 0, 3783, 3784, 7, 25, 0, 0, 3784, + 429, 1, 0, 0, 0, 3785, 3809, 5, 514, 0, 0, 3786, 3809, 5, 516, 0, 0, 3787, + 3809, 3, 716, 358, 0, 3788, 3809, 3, 708, 354, 0, 3789, 3809, 5, 518, 0, + 0, 3790, 3809, 5, 258, 0, 0, 3791, 3809, 5, 259, 0, 0, 3792, 3809, 5, 260, + 0, 0, 3793, 3809, 5, 261, 0, 0, 3794, 3809, 5, 262, 0, 0, 3795, 3809, 5, + 263, 0, 0, 3796, 3805, 5, 504, 0, 0, 3797, 3802, 3, 668, 334, 0, 3798, + 3799, 5, 498, 0, 0, 3799, 3801, 3, 668, 334, 0, 3800, 3798, 1, 0, 0, 0, + 3801, 3804, 1, 0, 0, 0, 3802, 3800, 1, 0, 0, 0, 3802, 3803, 1, 0, 0, 0, + 3803, 3806, 1, 0, 0, 0, 3804, 3802, 1, 0, 0, 0, 3805, 3797, 1, 0, 0, 0, + 3805, 3806, 1, 0, 0, 0, 3806, 3807, 1, 0, 0, 0, 3807, 3809, 5, 505, 0, + 0, 3808, 3785, 1, 0, 0, 0, 3808, 3786, 1, 0, 0, 0, 3808, 3787, 1, 0, 0, + 0, 3808, 3788, 1, 0, 0, 0, 3808, 3789, 1, 0, 0, 0, 3808, 3790, 1, 0, 0, + 0, 3808, 3791, 1, 0, 0, 0, 3808, 3792, 1, 0, 0, 0, 3808, 3793, 1, 0, 0, + 0, 3808, 3794, 1, 0, 0, 0, 3808, 3795, 1, 0, 0, 0, 3808, 3796, 1, 0, 0, + 0, 3809, 431, 1, 0, 0, 0, 3810, 3811, 5, 504, 0, 0, 3811, 3816, 3, 434, + 217, 0, 3812, 3813, 5, 498, 0, 0, 3813, 3815, 3, 434, 217, 0, 3814, 3812, + 1, 0, 0, 0, 3815, 3818, 1, 0, 0, 0, 3816, 3814, 1, 0, 0, 0, 3816, 3817, + 1, 0, 0, 0, 3817, 3819, 1, 0, 0, 0, 3818, 3816, 1, 0, 0, 0, 3819, 3820, + 5, 505, 0, 0, 3820, 3824, 1, 0, 0, 0, 3821, 3822, 5, 504, 0, 0, 3822, 3824, + 5, 505, 0, 0, 3823, 3810, 1, 0, 0, 0, 3823, 3821, 1, 0, 0, 0, 3824, 433, + 1, 0, 0, 0, 3825, 3826, 5, 514, 0, 0, 3826, 3827, 5, 506, 0, 0, 3827, 3835, + 5, 514, 0, 0, 3828, 3829, 5, 514, 0, 0, 3829, 3830, 5, 506, 0, 0, 3830, + 3835, 5, 93, 0, 0, 3831, 3832, 5, 514, 0, 0, 3832, 3833, 5, 506, 0, 0, + 3833, 3835, 5, 482, 0, 0, 3834, 3825, 1, 0, 0, 0, 3834, 3828, 1, 0, 0, + 0, 3834, 3831, 1, 0, 0, 0, 3835, 435, 1, 0, 0, 0, 3836, 3837, 5, 502, 0, + 0, 3837, 3838, 3, 390, 195, 0, 3838, 3839, 5, 503, 0, 0, 3839, 437, 1, + 0, 0, 0, 3840, 3841, 5, 36, 0, 0, 3841, 3843, 3, 708, 354, 0, 3842, 3844, + 3, 440, 220, 0, 3843, 3842, 1, 0, 0, 0, 3843, 3844, 1, 0, 0, 0, 3844, 3845, + 1, 0, 0, 0, 3845, 3849, 5, 96, 0, 0, 3846, 3848, 3, 444, 222, 0, 3847, + 3846, 1, 0, 0, 0, 3848, 3851, 1, 0, 0, 0, 3849, 3847, 1, 0, 0, 0, 3849, + 3850, 1, 0, 0, 0, 3850, 3852, 1, 0, 0, 0, 3851, 3849, 1, 0, 0, 0, 3852, + 3853, 5, 83, 0, 0, 3853, 439, 1, 0, 0, 0, 3854, 3856, 3, 442, 221, 0, 3855, + 3854, 1, 0, 0, 0, 3856, 3857, 1, 0, 0, 0, 3857, 3855, 1, 0, 0, 0, 3857, + 3858, 1, 0, 0, 0, 3858, 441, 1, 0, 0, 0, 3859, 3860, 5, 408, 0, 0, 3860, + 3861, 5, 514, 0, 0, 3861, 443, 1, 0, 0, 0, 3862, 3863, 5, 33, 0, 0, 3863, + 3866, 3, 708, 354, 0, 3864, 3865, 5, 189, 0, 0, 3865, 3867, 5, 514, 0, + 0, 3866, 3864, 1, 0, 0, 0, 3866, 3867, 1, 0, 0, 0, 3867, 445, 1, 0, 0, + 0, 3868, 3869, 5, 356, 0, 0, 3869, 3870, 5, 355, 0, 0, 3870, 3872, 3, 708, + 354, 0, 3871, 3873, 3, 448, 224, 0, 3872, 3871, 1, 0, 0, 0, 3873, 3874, + 1, 0, 0, 0, 3874, 3872, 1, 0, 0, 0, 3874, 3875, 1, 0, 0, 0, 3875, 3884, + 1, 0, 0, 0, 3876, 3880, 5, 96, 0, 0, 3877, 3879, 3, 450, 225, 0, 3878, + 3877, 1, 0, 0, 0, 3879, 3882, 1, 0, 0, 0, 3880, 3878, 1, 0, 0, 0, 3880, + 3881, 1, 0, 0, 0, 3881, 3883, 1, 0, 0, 0, 3882, 3880, 1, 0, 0, 0, 3883, + 3885, 5, 83, 0, 0, 3884, 3876, 1, 0, 0, 0, 3884, 3885, 1, 0, 0, 0, 3885, + 447, 1, 0, 0, 0, 3886, 3887, 5, 419, 0, 0, 3887, 3914, 5, 514, 0, 0, 3888, + 3889, 5, 355, 0, 0, 3889, 3893, 5, 265, 0, 0, 3890, 3894, 5, 514, 0, 0, + 3891, 3892, 5, 507, 0, 0, 3892, 3894, 3, 708, 354, 0, 3893, 3890, 1, 0, + 0, 0, 3893, 3891, 1, 0, 0, 0, 3894, 3914, 1, 0, 0, 0, 3895, 3896, 5, 63, + 0, 0, 3896, 3914, 5, 514, 0, 0, 3897, 3898, 5, 64, 0, 0, 3898, 3914, 5, + 516, 0, 0, 3899, 3900, 5, 356, 0, 0, 3900, 3914, 5, 514, 0, 0, 3901, 3905, + 5, 353, 0, 0, 3902, 3906, 5, 514, 0, 0, 3903, 3904, 5, 507, 0, 0, 3904, + 3906, 3, 708, 354, 0, 3905, 3902, 1, 0, 0, 0, 3905, 3903, 1, 0, 0, 0, 3906, + 3914, 1, 0, 0, 0, 3907, 3911, 5, 354, 0, 0, 3908, 3912, 5, 514, 0, 0, 3909, + 3910, 5, 507, 0, 0, 3910, 3912, 3, 708, 354, 0, 3911, 3908, 1, 0, 0, 0, + 3911, 3909, 1, 0, 0, 0, 3912, 3914, 1, 0, 0, 0, 3913, 3886, 1, 0, 0, 0, + 3913, 3888, 1, 0, 0, 0, 3913, 3895, 1, 0, 0, 0, 3913, 3897, 1, 0, 0, 0, + 3913, 3899, 1, 0, 0, 0, 3913, 3901, 1, 0, 0, 0, 3913, 3907, 1, 0, 0, 0, + 3914, 449, 1, 0, 0, 0, 3915, 3916, 5, 357, 0, 0, 3916, 3917, 3, 710, 355, + 0, 3917, 3918, 5, 434, 0, 0, 3918, 3930, 7, 26, 0, 0, 3919, 3920, 5, 371, + 0, 0, 3920, 3921, 3, 710, 355, 0, 3921, 3922, 5, 506, 0, 0, 3922, 3926, + 3, 108, 54, 0, 3923, 3924, 5, 298, 0, 0, 3924, 3927, 5, 514, 0, 0, 3925, + 3927, 5, 291, 0, 0, 3926, 3923, 1, 0, 0, 0, 3926, 3925, 1, 0, 0, 0, 3926, + 3927, 1, 0, 0, 0, 3927, 3929, 1, 0, 0, 0, 3928, 3919, 1, 0, 0, 0, 3929, + 3932, 1, 0, 0, 0, 3930, 3928, 1, 0, 0, 0, 3930, 3931, 1, 0, 0, 0, 3931, + 3949, 1, 0, 0, 0, 3932, 3930, 1, 0, 0, 0, 3933, 3934, 5, 77, 0, 0, 3934, + 3947, 3, 708, 354, 0, 3935, 3936, 5, 358, 0, 0, 3936, 3937, 5, 500, 0, + 0, 3937, 3942, 3, 452, 226, 0, 3938, 3939, 5, 498, 0, 0, 3939, 3941, 3, + 452, 226, 0, 3940, 3938, 1, 0, 0, 0, 3941, 3944, 1, 0, 0, 0, 3942, 3940, + 1, 0, 0, 0, 3942, 3943, 1, 0, 0, 0, 3943, 3945, 1, 0, 0, 0, 3944, 3942, + 1, 0, 0, 0, 3945, 3946, 5, 501, 0, 0, 3946, 3948, 1, 0, 0, 0, 3947, 3935, + 1, 0, 0, 0, 3947, 3948, 1, 0, 0, 0, 3948, 3950, 1, 0, 0, 0, 3949, 3933, + 1, 0, 0, 0, 3949, 3950, 1, 0, 0, 0, 3950, 3951, 1, 0, 0, 0, 3951, 3952, + 5, 497, 0, 0, 3952, 451, 1, 0, 0, 0, 3953, 3954, 3, 710, 355, 0, 3954, + 3955, 5, 76, 0, 0, 3955, 3956, 3, 710, 355, 0, 3956, 453, 1, 0, 0, 0, 3957, + 3958, 5, 37, 0, 0, 3958, 3959, 3, 708, 354, 0, 3959, 3960, 5, 419, 0, 0, + 3960, 3961, 3, 108, 54, 0, 3961, 3962, 5, 298, 0, 0, 3962, 3964, 3, 712, + 356, 0, 3963, 3965, 3, 456, 228, 0, 3964, 3963, 1, 0, 0, 0, 3964, 3965, + 1, 0, 0, 0, 3965, 455, 1, 0, 0, 0, 3966, 3968, 3, 458, 229, 0, 3967, 3966, + 1, 0, 0, 0, 3968, 3969, 1, 0, 0, 0, 3969, 3967, 1, 0, 0, 0, 3969, 3970, + 1, 0, 0, 0, 3970, 457, 1, 0, 0, 0, 3971, 3972, 5, 408, 0, 0, 3972, 3979, + 5, 514, 0, 0, 3973, 3974, 5, 220, 0, 0, 3974, 3979, 5, 514, 0, 0, 3975, + 3976, 5, 370, 0, 0, 3976, 3977, 5, 426, 0, 0, 3977, 3979, 5, 342, 0, 0, + 3978, 3971, 1, 0, 0, 0, 3978, 3973, 1, 0, 0, 0, 3978, 3975, 1, 0, 0, 0, + 3979, 459, 1, 0, 0, 0, 3980, 3981, 5, 444, 0, 0, 3981, 3990, 5, 514, 0, + 0, 3982, 3987, 3, 556, 278, 0, 3983, 3984, 5, 498, 0, 0, 3984, 3986, 3, + 556, 278, 0, 3985, 3983, 1, 0, 0, 0, 3986, 3989, 1, 0, 0, 0, 3987, 3985, + 1, 0, 0, 0, 3987, 3988, 1, 0, 0, 0, 3988, 3991, 1, 0, 0, 0, 3989, 3987, + 1, 0, 0, 0, 3990, 3982, 1, 0, 0, 0, 3990, 3991, 1, 0, 0, 0, 3991, 461, + 1, 0, 0, 0, 3992, 3993, 5, 314, 0, 0, 3993, 3994, 5, 342, 0, 0, 3994, 3995, + 3, 708, 354, 0, 3995, 3996, 3, 464, 232, 0, 3996, 3997, 3, 466, 233, 0, + 3997, 4001, 5, 96, 0, 0, 3998, 4000, 3, 470, 235, 0, 3999, 3998, 1, 0, + 0, 0, 4000, 4003, 1, 0, 0, 0, 4001, 3999, 1, 0, 0, 0, 4001, 4002, 1, 0, + 0, 0, 4002, 4004, 1, 0, 0, 0, 4003, 4001, 1, 0, 0, 0, 4004, 4005, 5, 83, + 0, 0, 4005, 463, 1, 0, 0, 0, 4006, 4007, 5, 318, 0, 0, 4007, 4008, 5, 219, + 0, 0, 4008, 4009, 5, 514, 0, 0, 4009, 465, 1, 0, 0, 0, 4010, 4011, 5, 320, + 0, 0, 4011, 4025, 5, 424, 0, 0, 4012, 4013, 5, 320, 0, 0, 4013, 4014, 5, + 321, 0, 0, 4014, 4015, 5, 500, 0, 0, 4015, 4016, 5, 353, 0, 0, 4016, 4017, + 5, 487, 0, 0, 4017, 4018, 3, 468, 234, 0, 4018, 4019, 5, 498, 0, 0, 4019, + 4020, 5, 354, 0, 0, 4020, 4021, 5, 487, 0, 0, 4021, 4022, 3, 468, 234, + 0, 4022, 4023, 5, 501, 0, 0, 4023, 4025, 1, 0, 0, 0, 4024, 4010, 1, 0, + 0, 0, 4024, 4012, 1, 0, 0, 0, 4025, 467, 1, 0, 0, 0, 4026, 4027, 7, 27, + 0, 0, 4027, 469, 1, 0, 0, 0, 4028, 4030, 3, 718, 359, 0, 4029, 4028, 1, + 0, 0, 0, 4029, 4030, 1, 0, 0, 0, 4030, 4031, 1, 0, 0, 0, 4031, 4034, 5, + 324, 0, 0, 4032, 4035, 3, 710, 355, 0, 4033, 4035, 5, 514, 0, 0, 4034, + 4032, 1, 0, 0, 0, 4034, 4033, 1, 0, 0, 0, 4035, 4036, 1, 0, 0, 0, 4036, + 4037, 5, 325, 0, 0, 4037, 4038, 3, 472, 236, 0, 4038, 4039, 5, 326, 0, + 0, 4039, 4043, 5, 514, 0, 0, 4040, 4042, 3, 474, 237, 0, 4041, 4040, 1, + 0, 0, 0, 4042, 4045, 1, 0, 0, 0, 4043, 4041, 1, 0, 0, 0, 4043, 4044, 1, + 0, 0, 0, 4044, 4046, 1, 0, 0, 0, 4045, 4043, 1, 0, 0, 0, 4046, 4047, 5, + 329, 0, 0, 4047, 4048, 3, 478, 239, 0, 4048, 4049, 5, 497, 0, 0, 4049, + 471, 1, 0, 0, 0, 4050, 4051, 7, 14, 0, 0, 4051, 473, 1, 0, 0, 0, 4052, + 4053, 5, 371, 0, 0, 4053, 4054, 5, 517, 0, 0, 4054, 4055, 5, 506, 0, 0, + 4055, 4071, 3, 108, 54, 0, 4056, 4057, 5, 357, 0, 0, 4057, 4058, 5, 517, + 0, 0, 4058, 4059, 5, 506, 0, 0, 4059, 4071, 3, 108, 54, 0, 4060, 4061, + 5, 196, 0, 0, 4061, 4062, 5, 514, 0, 0, 4062, 4063, 5, 487, 0, 0, 4063, + 4071, 3, 476, 238, 0, 4064, 4065, 5, 328, 0, 0, 4065, 4066, 7, 28, 0, 0, + 4066, 4067, 5, 71, 0, 0, 4067, 4071, 5, 517, 0, 0, 4068, 4069, 5, 327, + 0, 0, 4069, 4071, 5, 516, 0, 0, 4070, 4052, 1, 0, 0, 0, 4070, 4056, 1, + 0, 0, 0, 4070, 4060, 1, 0, 0, 0, 4070, 4064, 1, 0, 0, 0, 4070, 4068, 1, + 0, 0, 0, 4071, 475, 1, 0, 0, 0, 4072, 4078, 5, 514, 0, 0, 4073, 4078, 5, + 517, 0, 0, 4074, 4075, 5, 514, 0, 0, 4075, 4076, 5, 490, 0, 0, 4076, 4078, + 5, 517, 0, 0, 4077, 4072, 1, 0, 0, 0, 4077, 4073, 1, 0, 0, 0, 4077, 4074, + 1, 0, 0, 0, 4078, 477, 1, 0, 0, 0, 4079, 4080, 5, 332, 0, 0, 4080, 4081, + 5, 76, 0, 0, 4081, 4093, 5, 517, 0, 0, 4082, 4083, 5, 265, 0, 0, 4083, + 4084, 5, 76, 0, 0, 4084, 4093, 5, 517, 0, 0, 4085, 4086, 5, 335, 0, 0, + 4086, 4087, 5, 76, 0, 0, 4087, 4093, 5, 517, 0, 0, 4088, 4089, 5, 334, + 0, 0, 4089, 4090, 5, 76, 0, 0, 4090, 4093, 5, 517, 0, 0, 4091, 4093, 5, + 424, 0, 0, 4092, 4079, 1, 0, 0, 0, 4092, 4082, 1, 0, 0, 0, 4092, 4085, + 1, 0, 0, 0, 4092, 4088, 1, 0, 0, 0, 4092, 4091, 1, 0, 0, 0, 4093, 479, + 1, 0, 0, 0, 4094, 4095, 5, 41, 0, 0, 4095, 4096, 5, 518, 0, 0, 4096, 4097, + 5, 93, 0, 0, 4097, 4098, 3, 708, 354, 0, 4098, 4099, 5, 500, 0, 0, 4099, + 4100, 3, 116, 58, 0, 4100, 4101, 5, 501, 0, 0, 4101, 481, 1, 0, 0, 0, 4102, + 4103, 5, 317, 0, 0, 4103, 4104, 5, 342, 0, 0, 4104, 4105, 3, 708, 354, + 0, 4105, 4106, 5, 500, 0, 0, 4106, 4111, 3, 488, 244, 0, 4107, 4108, 5, + 498, 0, 0, 4108, 4110, 3, 488, 244, 0, 4109, 4107, 1, 0, 0, 0, 4110, 4113, + 1, 0, 0, 0, 4111, 4109, 1, 0, 0, 0, 4111, 4112, 1, 0, 0, 0, 4112, 4114, + 1, 0, 0, 0, 4113, 4111, 1, 0, 0, 0, 4114, 4116, 5, 501, 0, 0, 4115, 4117, + 3, 508, 254, 0, 4116, 4115, 1, 0, 0, 0, 4116, 4117, 1, 0, 0, 0, 4117, 483, + 1, 0, 0, 0, 4118, 4119, 5, 317, 0, 0, 4119, 4120, 5, 315, 0, 0, 4120, 4121, + 3, 708, 354, 0, 4121, 4122, 5, 500, 0, 0, 4122, 4127, 3, 488, 244, 0, 4123, + 4124, 5, 498, 0, 0, 4124, 4126, 3, 488, 244, 0, 4125, 4123, 1, 0, 0, 0, + 4126, 4129, 1, 0, 0, 0, 4127, 4125, 1, 0, 0, 0, 4127, 4128, 1, 0, 0, 0, + 4128, 4130, 1, 0, 0, 0, 4129, 4127, 1, 0, 0, 0, 4130, 4132, 5, 501, 0, + 0, 4131, 4133, 3, 492, 246, 0, 4132, 4131, 1, 0, 0, 0, 4132, 4133, 1, 0, + 0, 0, 4133, 4142, 1, 0, 0, 0, 4134, 4138, 5, 502, 0, 0, 4135, 4137, 3, + 496, 248, 0, 4136, 4135, 1, 0, 0, 0, 4137, 4140, 1, 0, 0, 0, 4138, 4136, + 1, 0, 0, 0, 4138, 4139, 1, 0, 0, 0, 4139, 4141, 1, 0, 0, 0, 4140, 4138, + 1, 0, 0, 0, 4141, 4143, 5, 503, 0, 0, 4142, 4134, 1, 0, 0, 0, 4142, 4143, + 1, 0, 0, 0, 4143, 485, 1, 0, 0, 0, 4144, 4154, 5, 514, 0, 0, 4145, 4154, + 5, 516, 0, 0, 4146, 4154, 5, 299, 0, 0, 4147, 4154, 5, 300, 0, 0, 4148, + 4150, 5, 30, 0, 0, 4149, 4151, 3, 708, 354, 0, 4150, 4149, 1, 0, 0, 0, + 4150, 4151, 1, 0, 0, 0, 4151, 4154, 1, 0, 0, 0, 4152, 4154, 3, 708, 354, + 0, 4153, 4144, 1, 0, 0, 0, 4153, 4145, 1, 0, 0, 0, 4153, 4146, 1, 0, 0, + 0, 4153, 4147, 1, 0, 0, 0, 4153, 4148, 1, 0, 0, 0, 4153, 4152, 1, 0, 0, + 0, 4154, 487, 1, 0, 0, 0, 4155, 4156, 3, 710, 355, 0, 4156, 4157, 5, 506, + 0, 0, 4157, 4158, 3, 486, 243, 0, 4158, 489, 1, 0, 0, 0, 4159, 4160, 3, + 710, 355, 0, 4160, 4161, 5, 487, 0, 0, 4161, 4162, 3, 486, 243, 0, 4162, + 491, 1, 0, 0, 0, 4163, 4164, 5, 320, 0, 0, 4164, 4169, 3, 494, 247, 0, + 4165, 4166, 5, 498, 0, 0, 4166, 4168, 3, 494, 247, 0, 4167, 4165, 1, 0, + 0, 0, 4168, 4171, 1, 0, 0, 0, 4169, 4167, 1, 0, 0, 0, 4169, 4170, 1, 0, + 0, 0, 4170, 493, 1, 0, 0, 0, 4171, 4169, 1, 0, 0, 0, 4172, 4181, 5, 321, + 0, 0, 4173, 4181, 5, 349, 0, 0, 4174, 4181, 5, 350, 0, 0, 4175, 4177, 5, + 30, 0, 0, 4176, 4178, 3, 708, 354, 0, 4177, 4176, 1, 0, 0, 0, 4177, 4178, + 1, 0, 0, 0, 4178, 4181, 1, 0, 0, 0, 4179, 4181, 5, 518, 0, 0, 4180, 4172, + 1, 0, 0, 0, 4180, 4173, 1, 0, 0, 0, 4180, 4174, 1, 0, 0, 0, 4180, 4175, + 1, 0, 0, 0, 4180, 4179, 1, 0, 0, 0, 4181, 495, 1, 0, 0, 0, 4182, 4183, + 5, 344, 0, 0, 4183, 4184, 5, 23, 0, 0, 4184, 4187, 3, 708, 354, 0, 4185, + 4186, 5, 76, 0, 0, 4186, 4188, 5, 514, 0, 0, 4187, 4185, 1, 0, 0, 0, 4187, + 4188, 1, 0, 0, 0, 4188, 4200, 1, 0, 0, 0, 4189, 4190, 5, 500, 0, 0, 4190, + 4195, 3, 488, 244, 0, 4191, 4192, 5, 498, 0, 0, 4192, 4194, 3, 488, 244, + 0, 4193, 4191, 1, 0, 0, 0, 4194, 4197, 1, 0, 0, 0, 4195, 4193, 1, 0, 0, + 0, 4195, 4196, 1, 0, 0, 0, 4196, 4198, 1, 0, 0, 0, 4197, 4195, 1, 0, 0, + 0, 4198, 4199, 5, 501, 0, 0, 4199, 4201, 1, 0, 0, 0, 4200, 4189, 1, 0, + 0, 0, 4200, 4201, 1, 0, 0, 0, 4201, 4203, 1, 0, 0, 0, 4202, 4204, 3, 498, + 249, 0, 4203, 4202, 1, 0, 0, 0, 4203, 4204, 1, 0, 0, 0, 4204, 4206, 1, + 0, 0, 0, 4205, 4207, 5, 497, 0, 0, 4206, 4205, 1, 0, 0, 0, 4206, 4207, + 1, 0, 0, 0, 4207, 497, 1, 0, 0, 0, 4208, 4209, 5, 346, 0, 0, 4209, 4219, + 5, 500, 0, 0, 4210, 4220, 5, 492, 0, 0, 4211, 4216, 3, 500, 250, 0, 4212, + 4213, 5, 498, 0, 0, 4213, 4215, 3, 500, 250, 0, 4214, 4212, 1, 0, 0, 0, + 4215, 4218, 1, 0, 0, 0, 4216, 4214, 1, 0, 0, 0, 4216, 4217, 1, 0, 0, 0, + 4217, 4220, 1, 0, 0, 0, 4218, 4216, 1, 0, 0, 0, 4219, 4210, 1, 0, 0, 0, + 4219, 4211, 1, 0, 0, 0, 4220, 4221, 1, 0, 0, 0, 4221, 4222, 5, 501, 0, + 0, 4222, 499, 1, 0, 0, 0, 4223, 4226, 5, 518, 0, 0, 4224, 4225, 5, 76, + 0, 0, 4225, 4227, 5, 514, 0, 0, 4226, 4224, 1, 0, 0, 0, 4226, 4227, 1, + 0, 0, 0, 4227, 4229, 1, 0, 0, 0, 4228, 4230, 3, 502, 251, 0, 4229, 4228, + 1, 0, 0, 0, 4229, 4230, 1, 0, 0, 0, 4230, 501, 1, 0, 0, 0, 4231, 4232, + 5, 500, 0, 0, 4232, 4237, 5, 518, 0, 0, 4233, 4234, 5, 498, 0, 0, 4234, + 4236, 5, 518, 0, 0, 4235, 4233, 1, 0, 0, 0, 4236, 4239, 1, 0, 0, 0, 4237, + 4235, 1, 0, 0, 0, 4237, 4238, 1, 0, 0, 0, 4238, 4240, 1, 0, 0, 0, 4239, + 4237, 1, 0, 0, 0, 4240, 4241, 5, 501, 0, 0, 4241, 503, 1, 0, 0, 0, 4242, + 4243, 5, 26, 0, 0, 4243, 4244, 5, 23, 0, 0, 4244, 4245, 3, 708, 354, 0, + 4245, 4246, 5, 71, 0, 0, 4246, 4247, 5, 317, 0, 0, 4247, 4248, 5, 342, + 0, 0, 4248, 4249, 3, 708, 354, 0, 4249, 4250, 5, 500, 0, 0, 4250, 4255, + 3, 488, 244, 0, 4251, 4252, 5, 498, 0, 0, 4252, 4254, 3, 488, 244, 0, 4253, + 4251, 1, 0, 0, 0, 4254, 4257, 1, 0, 0, 0, 4255, 4253, 1, 0, 0, 0, 4255, + 4256, 1, 0, 0, 0, 4256, 4258, 1, 0, 0, 0, 4257, 4255, 1, 0, 0, 0, 4258, + 4264, 5, 501, 0, 0, 4259, 4261, 5, 500, 0, 0, 4260, 4262, 3, 100, 50, 0, + 4261, 4260, 1, 0, 0, 0, 4261, 4262, 1, 0, 0, 0, 4262, 4263, 1, 0, 0, 0, + 4263, 4265, 5, 501, 0, 0, 4264, 4259, 1, 0, 0, 0, 4264, 4265, 1, 0, 0, + 0, 4265, 505, 1, 0, 0, 0, 4266, 4269, 5, 374, 0, 0, 4267, 4270, 3, 708, + 354, 0, 4268, 4270, 5, 518, 0, 0, 4269, 4267, 1, 0, 0, 0, 4269, 4268, 1, + 0, 0, 0, 4270, 4274, 1, 0, 0, 0, 4271, 4273, 3, 34, 17, 0, 4272, 4271, + 1, 0, 0, 0, 4273, 4276, 1, 0, 0, 0, 4274, 4272, 1, 0, 0, 0, 4274, 4275, + 1, 0, 0, 0, 4275, 507, 1, 0, 0, 0, 4276, 4274, 1, 0, 0, 0, 4277, 4278, + 5, 373, 0, 0, 4278, 4279, 5, 500, 0, 0, 4279, 4284, 3, 510, 255, 0, 4280, + 4281, 5, 498, 0, 0, 4281, 4283, 3, 510, 255, 0, 4282, 4280, 1, 0, 0, 0, + 4283, 4286, 1, 0, 0, 0, 4284, 4282, 1, 0, 0, 0, 4284, 4285, 1, 0, 0, 0, + 4285, 4287, 1, 0, 0, 0, 4286, 4284, 1, 0, 0, 0, 4287, 4288, 5, 501, 0, + 0, 4288, 509, 1, 0, 0, 0, 4289, 4290, 5, 514, 0, 0, 4290, 4291, 5, 506, + 0, 0, 4291, 4292, 3, 486, 243, 0, 4292, 511, 1, 0, 0, 0, 4293, 4294, 5, + 440, 0, 0, 4294, 4295, 5, 441, 0, 0, 4295, 4296, 5, 315, 0, 0, 4296, 4297, + 3, 708, 354, 0, 4297, 4298, 5, 500, 0, 0, 4298, 4303, 3, 488, 244, 0, 4299, + 4300, 5, 498, 0, 0, 4300, 4302, 3, 488, 244, 0, 4301, 4299, 1, 0, 0, 0, + 4302, 4305, 1, 0, 0, 0, 4303, 4301, 1, 0, 0, 0, 4303, 4304, 1, 0, 0, 0, + 4304, 4306, 1, 0, 0, 0, 4305, 4303, 1, 0, 0, 0, 4306, 4307, 5, 501, 0, + 0, 4307, 4309, 5, 502, 0, 0, 4308, 4310, 3, 514, 257, 0, 4309, 4308, 1, + 0, 0, 0, 4310, 4311, 1, 0, 0, 0, 4311, 4309, 1, 0, 0, 0, 4311, 4312, 1, + 0, 0, 0, 4312, 4313, 1, 0, 0, 0, 4313, 4314, 5, 503, 0, 0, 4314, 513, 1, + 0, 0, 0, 4315, 4316, 5, 405, 0, 0, 4316, 4317, 5, 518, 0, 0, 4317, 4318, + 5, 500, 0, 0, 4318, 4323, 3, 516, 258, 0, 4319, 4320, 5, 498, 0, 0, 4320, + 4322, 3, 516, 258, 0, 4321, 4319, 1, 0, 0, 0, 4322, 4325, 1, 0, 0, 0, 4323, + 4321, 1, 0, 0, 0, 4323, 4324, 1, 0, 0, 0, 4324, 4326, 1, 0, 0, 0, 4325, + 4323, 1, 0, 0, 0, 4326, 4327, 5, 501, 0, 0, 4327, 4330, 7, 29, 0, 0, 4328, + 4329, 5, 23, 0, 0, 4329, 4331, 3, 708, 354, 0, 4330, 4328, 1, 0, 0, 0, + 4330, 4331, 1, 0, 0, 0, 4331, 4334, 1, 0, 0, 0, 4332, 4333, 5, 30, 0, 0, + 4333, 4335, 3, 708, 354, 0, 4334, 4332, 1, 0, 0, 0, 4334, 4335, 1, 0, 0, + 0, 4335, 4336, 1, 0, 0, 0, 4336, 4337, 5, 497, 0, 0, 4337, 515, 1, 0, 0, + 0, 4338, 4339, 5, 518, 0, 0, 4339, 4340, 5, 506, 0, 0, 4340, 4341, 3, 108, + 54, 0, 4341, 517, 1, 0, 0, 0, 4342, 4343, 5, 32, 0, 0, 4343, 4348, 3, 708, + 354, 0, 4344, 4345, 5, 371, 0, 0, 4345, 4346, 5, 517, 0, 0, 4346, 4347, + 5, 506, 0, 0, 4347, 4349, 3, 708, 354, 0, 4348, 4344, 1, 0, 0, 0, 4348, + 4349, 1, 0, 0, 0, 4349, 4352, 1, 0, 0, 0, 4350, 4351, 5, 481, 0, 0, 4351, + 4353, 5, 514, 0, 0, 4352, 4350, 1, 0, 0, 0, 4352, 4353, 1, 0, 0, 0, 4353, + 4356, 1, 0, 0, 0, 4354, 4355, 5, 480, 0, 0, 4355, 4357, 5, 514, 0, 0, 4356, + 4354, 1, 0, 0, 0, 4356, 4357, 1, 0, 0, 0, 4357, 4361, 1, 0, 0, 0, 4358, + 4359, 5, 364, 0, 0, 4359, 4360, 5, 457, 0, 0, 4360, 4362, 7, 30, 0, 0, + 4361, 4358, 1, 0, 0, 0, 4361, 4362, 1, 0, 0, 0, 4362, 4366, 1, 0, 0, 0, + 4363, 4364, 5, 468, 0, 0, 4364, 4365, 5, 33, 0, 0, 4365, 4367, 3, 708, + 354, 0, 4366, 4363, 1, 0, 0, 0, 4366, 4367, 1, 0, 0, 0, 4367, 4371, 1, + 0, 0, 0, 4368, 4369, 5, 467, 0, 0, 4369, 4370, 5, 271, 0, 0, 4370, 4372, + 5, 514, 0, 0, 4371, 4368, 1, 0, 0, 0, 4371, 4372, 1, 0, 0, 0, 4372, 4373, + 1, 0, 0, 0, 4373, 4374, 5, 96, 0, 0, 4374, 4375, 3, 520, 260, 0, 4375, + 4376, 5, 83, 0, 0, 4376, 4378, 5, 32, 0, 0, 4377, 4379, 5, 497, 0, 0, 4378, + 4377, 1, 0, 0, 0, 4378, 4379, 1, 0, 0, 0, 4379, 4381, 1, 0, 0, 0, 4380, + 4382, 5, 493, 0, 0, 4381, 4380, 1, 0, 0, 0, 4381, 4382, 1, 0, 0, 0, 4382, + 519, 1, 0, 0, 0, 4383, 4385, 3, 522, 261, 0, 4384, 4383, 1, 0, 0, 0, 4385, + 4388, 1, 0, 0, 0, 4386, 4384, 1, 0, 0, 0, 4386, 4387, 1, 0, 0, 0, 4387, + 521, 1, 0, 0, 0, 4388, 4386, 1, 0, 0, 0, 4389, 4390, 3, 524, 262, 0, 4390, + 4391, 5, 497, 0, 0, 4391, 4417, 1, 0, 0, 0, 4392, 4393, 3, 530, 265, 0, + 4393, 4394, 5, 497, 0, 0, 4394, 4417, 1, 0, 0, 0, 4395, 4396, 3, 534, 267, + 0, 4396, 4397, 5, 497, 0, 0, 4397, 4417, 1, 0, 0, 0, 4398, 4399, 3, 536, + 268, 0, 4399, 4400, 5, 497, 0, 0, 4400, 4417, 1, 0, 0, 0, 4401, 4402, 3, + 540, 270, 0, 4402, 4403, 5, 497, 0, 0, 4403, 4417, 1, 0, 0, 0, 4404, 4405, + 3, 544, 272, 0, 4405, 4406, 5, 497, 0, 0, 4406, 4417, 1, 0, 0, 0, 4407, + 4408, 3, 546, 273, 0, 4408, 4409, 5, 497, 0, 0, 4409, 4417, 1, 0, 0, 0, + 4410, 4411, 3, 548, 274, 0, 4411, 4412, 5, 497, 0, 0, 4412, 4417, 1, 0, + 0, 0, 4413, 4414, 3, 550, 275, 0, 4414, 4415, 5, 497, 0, 0, 4415, 4417, + 1, 0, 0, 0, 4416, 4389, 1, 0, 0, 0, 4416, 4392, 1, 0, 0, 0, 4416, 4395, + 1, 0, 0, 0, 4416, 4398, 1, 0, 0, 0, 4416, 4401, 1, 0, 0, 0, 4416, 4404, + 1, 0, 0, 0, 4416, 4407, 1, 0, 0, 0, 4416, 4410, 1, 0, 0, 0, 4416, 4413, + 1, 0, 0, 0, 4417, 523, 1, 0, 0, 0, 4418, 4419, 5, 458, 0, 0, 4419, 4420, + 5, 459, 0, 0, 4420, 4421, 5, 518, 0, 0, 4421, 4424, 5, 514, 0, 0, 4422, + 4423, 5, 33, 0, 0, 4423, 4425, 3, 708, 354, 0, 4424, 4422, 1, 0, 0, 0, + 4424, 4425, 1, 0, 0, 0, 4425, 4429, 1, 0, 0, 0, 4426, 4427, 5, 463, 0, + 0, 4427, 4428, 5, 30, 0, 0, 4428, 4430, 3, 708, 354, 0, 4429, 4426, 1, + 0, 0, 0, 4429, 4430, 1, 0, 0, 0, 4430, 4434, 1, 0, 0, 0, 4431, 4432, 5, + 463, 0, 0, 4432, 4433, 5, 311, 0, 0, 4433, 4435, 5, 514, 0, 0, 4434, 4431, + 1, 0, 0, 0, 4434, 4435, 1, 0, 0, 0, 4435, 4438, 1, 0, 0, 0, 4436, 4437, + 5, 23, 0, 0, 4437, 4439, 3, 708, 354, 0, 4438, 4436, 1, 0, 0, 0, 4438, + 4439, 1, 0, 0, 0, 4439, 4443, 1, 0, 0, 0, 4440, 4441, 5, 467, 0, 0, 4441, + 4442, 5, 271, 0, 0, 4442, 4444, 5, 514, 0, 0, 4443, 4440, 1, 0, 0, 0, 4443, + 4444, 1, 0, 0, 0, 4444, 4447, 1, 0, 0, 0, 4445, 4446, 5, 480, 0, 0, 4446, + 4448, 5, 514, 0, 0, 4447, 4445, 1, 0, 0, 0, 4447, 4448, 1, 0, 0, 0, 4448, + 4455, 1, 0, 0, 0, 4449, 4451, 5, 462, 0, 0, 4450, 4452, 3, 528, 264, 0, + 4451, 4450, 1, 0, 0, 0, 4452, 4453, 1, 0, 0, 0, 4453, 4451, 1, 0, 0, 0, + 4453, 4454, 1, 0, 0, 0, 4454, 4456, 1, 0, 0, 0, 4455, 4449, 1, 0, 0, 0, + 4455, 4456, 1, 0, 0, 0, 4456, 4464, 1, 0, 0, 0, 4457, 4458, 5, 473, 0, + 0, 4458, 4460, 5, 441, 0, 0, 4459, 4461, 3, 526, 263, 0, 4460, 4459, 1, + 0, 0, 0, 4461, 4462, 1, 0, 0, 0, 4462, 4460, 1, 0, 0, 0, 4462, 4463, 1, + 0, 0, 0, 4463, 4465, 1, 0, 0, 0, 4464, 4457, 1, 0, 0, 0, 4464, 4465, 1, + 0, 0, 0, 4465, 4516, 1, 0, 0, 0, 4466, 4467, 5, 476, 0, 0, 4467, 4468, + 5, 458, 0, 0, 4468, 4469, 5, 459, 0, 0, 4469, 4470, 5, 518, 0, 0, 4470, + 4473, 5, 514, 0, 0, 4471, 4472, 5, 33, 0, 0, 4472, 4474, 3, 708, 354, 0, + 4473, 4471, 1, 0, 0, 0, 4473, 4474, 1, 0, 0, 0, 4474, 4478, 1, 0, 0, 0, + 4475, 4476, 5, 463, 0, 0, 4476, 4477, 5, 30, 0, 0, 4477, 4479, 3, 708, + 354, 0, 4478, 4475, 1, 0, 0, 0, 4478, 4479, 1, 0, 0, 0, 4479, 4483, 1, + 0, 0, 0, 4480, 4481, 5, 463, 0, 0, 4481, 4482, 5, 311, 0, 0, 4482, 4484, + 5, 514, 0, 0, 4483, 4480, 1, 0, 0, 0, 4483, 4484, 1, 0, 0, 0, 4484, 4487, + 1, 0, 0, 0, 4485, 4486, 5, 23, 0, 0, 4486, 4488, 3, 708, 354, 0, 4487, + 4485, 1, 0, 0, 0, 4487, 4488, 1, 0, 0, 0, 4488, 4492, 1, 0, 0, 0, 4489, + 4490, 5, 467, 0, 0, 4490, 4491, 5, 271, 0, 0, 4491, 4493, 5, 514, 0, 0, + 4492, 4489, 1, 0, 0, 0, 4492, 4493, 1, 0, 0, 0, 4493, 4496, 1, 0, 0, 0, + 4494, 4495, 5, 480, 0, 0, 4495, 4497, 5, 514, 0, 0, 4496, 4494, 1, 0, 0, + 0, 4496, 4497, 1, 0, 0, 0, 4497, 4504, 1, 0, 0, 0, 4498, 4500, 5, 462, + 0, 0, 4499, 4501, 3, 528, 264, 0, 4500, 4499, 1, 0, 0, 0, 4501, 4502, 1, + 0, 0, 0, 4502, 4500, 1, 0, 0, 0, 4502, 4503, 1, 0, 0, 0, 4503, 4505, 1, + 0, 0, 0, 4504, 4498, 1, 0, 0, 0, 4504, 4505, 1, 0, 0, 0, 4505, 4513, 1, + 0, 0, 0, 4506, 4507, 5, 473, 0, 0, 4507, 4509, 5, 441, 0, 0, 4508, 4510, + 3, 526, 263, 0, 4509, 4508, 1, 0, 0, 0, 4510, 4511, 1, 0, 0, 0, 4511, 4509, + 1, 0, 0, 0, 4511, 4512, 1, 0, 0, 0, 4512, 4514, 1, 0, 0, 0, 4513, 4506, + 1, 0, 0, 0, 4513, 4514, 1, 0, 0, 0, 4514, 4516, 1, 0, 0, 0, 4515, 4418, + 1, 0, 0, 0, 4515, 4466, 1, 0, 0, 0, 4516, 525, 1, 0, 0, 0, 4517, 4518, + 5, 474, 0, 0, 4518, 4520, 5, 465, 0, 0, 4519, 4521, 5, 514, 0, 0, 4520, + 4519, 1, 0, 0, 0, 4520, 4521, 1, 0, 0, 0, 4521, 4526, 1, 0, 0, 0, 4522, + 4523, 5, 502, 0, 0, 4523, 4524, 3, 520, 260, 0, 4524, 4525, 5, 503, 0, + 0, 4525, 4527, 1, 0, 0, 0, 4526, 4522, 1, 0, 0, 0, 4526, 4527, 1, 0, 0, + 0, 4527, 4551, 1, 0, 0, 0, 4528, 4529, 5, 475, 0, 0, 4529, 4530, 5, 474, + 0, 0, 4530, 4532, 5, 465, 0, 0, 4531, 4533, 5, 514, 0, 0, 4532, 4531, 1, + 0, 0, 0, 4532, 4533, 1, 0, 0, 0, 4533, 4538, 1, 0, 0, 0, 4534, 4535, 5, + 502, 0, 0, 4535, 4536, 3, 520, 260, 0, 4536, 4537, 5, 503, 0, 0, 4537, + 4539, 1, 0, 0, 0, 4538, 4534, 1, 0, 0, 0, 4538, 4539, 1, 0, 0, 0, 4539, + 4551, 1, 0, 0, 0, 4540, 4542, 5, 465, 0, 0, 4541, 4543, 5, 514, 0, 0, 4542, + 4541, 1, 0, 0, 0, 4542, 4543, 1, 0, 0, 0, 4543, 4548, 1, 0, 0, 0, 4544, + 4545, 5, 502, 0, 0, 4545, 4546, 3, 520, 260, 0, 4546, 4547, 5, 503, 0, + 0, 4547, 4549, 1, 0, 0, 0, 4548, 4544, 1, 0, 0, 0, 4548, 4549, 1, 0, 0, + 0, 4549, 4551, 1, 0, 0, 0, 4550, 4517, 1, 0, 0, 0, 4550, 4528, 1, 0, 0, + 0, 4550, 4540, 1, 0, 0, 0, 4551, 527, 1, 0, 0, 0, 4552, 4553, 5, 514, 0, + 0, 4553, 4554, 5, 502, 0, 0, 4554, 4555, 3, 520, 260, 0, 4555, 4556, 5, + 503, 0, 0, 4556, 529, 1, 0, 0, 0, 4557, 4558, 5, 113, 0, 0, 4558, 4559, + 5, 30, 0, 0, 4559, 4562, 3, 708, 354, 0, 4560, 4561, 5, 408, 0, 0, 4561, + 4563, 5, 514, 0, 0, 4562, 4560, 1, 0, 0, 0, 4562, 4563, 1, 0, 0, 0, 4563, + 4576, 1, 0, 0, 0, 4564, 4565, 5, 139, 0, 0, 4565, 4566, 5, 500, 0, 0, 4566, + 4571, 3, 532, 266, 0, 4567, 4568, 5, 498, 0, 0, 4568, 4570, 3, 532, 266, + 0, 4569, 4567, 1, 0, 0, 0, 4570, 4573, 1, 0, 0, 0, 4571, 4569, 1, 0, 0, + 0, 4571, 4572, 1, 0, 0, 0, 4572, 4574, 1, 0, 0, 0, 4573, 4571, 1, 0, 0, + 0, 4574, 4575, 5, 501, 0, 0, 4575, 4577, 1, 0, 0, 0, 4576, 4564, 1, 0, + 0, 0, 4576, 4577, 1, 0, 0, 0, 4577, 4584, 1, 0, 0, 0, 4578, 4580, 5, 462, + 0, 0, 4579, 4581, 3, 538, 269, 0, 4580, 4579, 1, 0, 0, 0, 4581, 4582, 1, + 0, 0, 0, 4582, 4580, 1, 0, 0, 0, 4582, 4583, 1, 0, 0, 0, 4583, 4585, 1, + 0, 0, 0, 4584, 4578, 1, 0, 0, 0, 4584, 4585, 1, 0, 0, 0, 4585, 4593, 1, + 0, 0, 0, 4586, 4587, 5, 473, 0, 0, 4587, 4589, 5, 441, 0, 0, 4588, 4590, + 3, 526, 263, 0, 4589, 4588, 1, 0, 0, 0, 4590, 4591, 1, 0, 0, 0, 4591, 4589, + 1, 0, 0, 0, 4591, 4592, 1, 0, 0, 0, 4592, 4594, 1, 0, 0, 0, 4593, 4586, + 1, 0, 0, 0, 4593, 4594, 1, 0, 0, 0, 4594, 531, 1, 0, 0, 0, 4595, 4596, + 3, 708, 354, 0, 4596, 4597, 5, 487, 0, 0, 4597, 4598, 5, 514, 0, 0, 4598, + 533, 1, 0, 0, 0, 4599, 4600, 5, 113, 0, 0, 4600, 4601, 5, 32, 0, 0, 4601, + 4604, 3, 708, 354, 0, 4602, 4603, 5, 408, 0, 0, 4603, 4605, 5, 514, 0, + 0, 4604, 4602, 1, 0, 0, 0, 4604, 4605, 1, 0, 0, 0, 4605, 4618, 1, 0, 0, + 0, 4606, 4607, 5, 139, 0, 0, 4607, 4608, 5, 500, 0, 0, 4608, 4613, 3, 532, + 266, 0, 4609, 4610, 5, 498, 0, 0, 4610, 4612, 3, 532, 266, 0, 4611, 4609, + 1, 0, 0, 0, 4612, 4615, 1, 0, 0, 0, 4613, 4611, 1, 0, 0, 0, 4613, 4614, + 1, 0, 0, 0, 4614, 4616, 1, 0, 0, 0, 4615, 4613, 1, 0, 0, 0, 4616, 4617, + 5, 501, 0, 0, 4617, 4619, 1, 0, 0, 0, 4618, 4606, 1, 0, 0, 0, 4618, 4619, + 1, 0, 0, 0, 4619, 535, 1, 0, 0, 0, 4620, 4622, 5, 460, 0, 0, 4621, 4623, + 5, 514, 0, 0, 4622, 4621, 1, 0, 0, 0, 4622, 4623, 1, 0, 0, 0, 4623, 4626, + 1, 0, 0, 0, 4624, 4625, 5, 408, 0, 0, 4625, 4627, 5, 514, 0, 0, 4626, 4624, + 1, 0, 0, 0, 4626, 4627, 1, 0, 0, 0, 4627, 4634, 1, 0, 0, 0, 4628, 4630, + 5, 462, 0, 0, 4629, 4631, 3, 538, 269, 0, 4630, 4629, 1, 0, 0, 0, 4631, + 4632, 1, 0, 0, 0, 4632, 4630, 1, 0, 0, 0, 4632, 4633, 1, 0, 0, 0, 4633, + 4635, 1, 0, 0, 0, 4634, 4628, 1, 0, 0, 0, 4634, 4635, 1, 0, 0, 0, 4635, + 537, 1, 0, 0, 0, 4636, 4637, 7, 31, 0, 0, 4637, 4638, 5, 510, 0, 0, 4638, + 4639, 5, 502, 0, 0, 4639, 4640, 3, 520, 260, 0, 4640, 4641, 5, 503, 0, + 0, 4641, 539, 1, 0, 0, 0, 4642, 4643, 5, 470, 0, 0, 4643, 4646, 5, 461, + 0, 0, 4644, 4645, 5, 408, 0, 0, 4645, 4647, 5, 514, 0, 0, 4646, 4644, 1, + 0, 0, 0, 4646, 4647, 1, 0, 0, 0, 4647, 4649, 1, 0, 0, 0, 4648, 4650, 3, + 542, 271, 0, 4649, 4648, 1, 0, 0, 0, 4650, 4651, 1, 0, 0, 0, 4651, 4649, + 1, 0, 0, 0, 4651, 4652, 1, 0, 0, 0, 4652, 541, 1, 0, 0, 0, 4653, 4654, + 5, 326, 0, 0, 4654, 4655, 5, 516, 0, 0, 4655, 4656, 5, 502, 0, 0, 4656, + 4657, 3, 520, 260, 0, 4657, 4658, 5, 503, 0, 0, 4658, 543, 1, 0, 0, 0, + 4659, 4660, 5, 466, 0, 0, 4660, 4661, 5, 426, 0, 0, 4661, 4664, 5, 518, + 0, 0, 4662, 4663, 5, 408, 0, 0, 4663, 4665, 5, 514, 0, 0, 4664, 4662, 1, + 0, 0, 0, 4664, 4665, 1, 0, 0, 0, 4665, 545, 1, 0, 0, 0, 4666, 4667, 5, + 471, 0, 0, 4667, 4668, 5, 429, 0, 0, 4668, 4670, 5, 465, 0, 0, 4669, 4671, + 5, 514, 0, 0, 4670, 4669, 1, 0, 0, 0, 4670, 4671, 1, 0, 0, 0, 4671, 4674, + 1, 0, 0, 0, 4672, 4673, 5, 408, 0, 0, 4673, 4675, 5, 514, 0, 0, 4674, 4672, + 1, 0, 0, 0, 4674, 4675, 1, 0, 0, 0, 4675, 547, 1, 0, 0, 0, 4676, 4677, + 5, 471, 0, 0, 4677, 4678, 5, 429, 0, 0, 4678, 4681, 5, 464, 0, 0, 4679, + 4680, 5, 408, 0, 0, 4680, 4682, 5, 514, 0, 0, 4681, 4679, 1, 0, 0, 0, 4681, + 4682, 1, 0, 0, 0, 4682, 4690, 1, 0, 0, 0, 4683, 4684, 5, 473, 0, 0, 4684, + 4686, 5, 441, 0, 0, 4685, 4687, 3, 526, 263, 0, 4686, 4685, 1, 0, 0, 0, + 4687, 4688, 1, 0, 0, 0, 4688, 4686, 1, 0, 0, 0, 4688, 4689, 1, 0, 0, 0, + 4689, 4691, 1, 0, 0, 0, 4690, 4683, 1, 0, 0, 0, 4690, 4691, 1, 0, 0, 0, + 4691, 549, 1, 0, 0, 0, 4692, 4693, 5, 472, 0, 0, 4693, 4694, 5, 514, 0, + 0, 4694, 551, 1, 0, 0, 0, 4695, 4696, 3, 554, 277, 0, 4696, 4701, 3, 556, + 278, 0, 4697, 4698, 5, 498, 0, 0, 4698, 4700, 3, 556, 278, 0, 4699, 4697, + 1, 0, 0, 0, 4700, 4703, 1, 0, 0, 0, 4701, 4699, 1, 0, 0, 0, 4701, 4702, + 1, 0, 0, 0, 4702, 4735, 1, 0, 0, 0, 4703, 4701, 1, 0, 0, 0, 4704, 4705, + 5, 37, 0, 0, 4705, 4709, 5, 514, 0, 0, 4706, 4707, 5, 420, 0, 0, 4707, + 4710, 3, 558, 279, 0, 4708, 4710, 5, 19, 0, 0, 4709, 4706, 1, 0, 0, 0, + 4709, 4708, 1, 0, 0, 0, 4710, 4714, 1, 0, 0, 0, 4711, 4712, 5, 292, 0, + 0, 4712, 4713, 5, 444, 0, 0, 4713, 4715, 5, 514, 0, 0, 4714, 4711, 1, 0, + 0, 0, 4714, 4715, 1, 0, 0, 0, 4715, 4735, 1, 0, 0, 0, 4716, 4717, 5, 19, + 0, 0, 4717, 4718, 5, 37, 0, 0, 4718, 4722, 5, 514, 0, 0, 4719, 4720, 5, + 292, 0, 0, 4720, 4721, 5, 444, 0, 0, 4721, 4723, 5, 514, 0, 0, 4722, 4719, + 1, 0, 0, 0, 4722, 4723, 1, 0, 0, 0, 4723, 4735, 1, 0, 0, 0, 4724, 4725, + 5, 444, 0, 0, 4725, 4726, 5, 514, 0, 0, 4726, 4731, 3, 556, 278, 0, 4727, + 4728, 5, 498, 0, 0, 4728, 4730, 3, 556, 278, 0, 4729, 4727, 1, 0, 0, 0, + 4730, 4733, 1, 0, 0, 0, 4731, 4729, 1, 0, 0, 0, 4731, 4732, 1, 0, 0, 0, + 4732, 4735, 1, 0, 0, 0, 4733, 4731, 1, 0, 0, 0, 4734, 4695, 1, 0, 0, 0, + 4734, 4704, 1, 0, 0, 0, 4734, 4716, 1, 0, 0, 0, 4734, 4724, 1, 0, 0, 0, + 4735, 553, 1, 0, 0, 0, 4736, 4737, 7, 32, 0, 0, 4737, 555, 1, 0, 0, 0, + 4738, 4739, 5, 518, 0, 0, 4739, 4740, 5, 487, 0, 0, 4740, 4741, 3, 558, + 279, 0, 4741, 557, 1, 0, 0, 0, 4742, 4747, 5, 514, 0, 0, 4743, 4747, 5, + 516, 0, 0, 4744, 4747, 3, 716, 358, 0, 4745, 4747, 3, 708, 354, 0, 4746, + 4742, 1, 0, 0, 0, 4746, 4743, 1, 0, 0, 0, 4746, 4744, 1, 0, 0, 0, 4746, + 4745, 1, 0, 0, 0, 4747, 559, 1, 0, 0, 0, 4748, 4753, 3, 562, 281, 0, 4749, + 4753, 3, 574, 287, 0, 4750, 4753, 3, 576, 288, 0, 4751, 4753, 3, 582, 291, + 0, 4752, 4748, 1, 0, 0, 0, 4752, 4749, 1, 0, 0, 0, 4752, 4750, 1, 0, 0, + 0, 4752, 4751, 1, 0, 0, 0, 4753, 561, 1, 0, 0, 0, 4754, 4755, 5, 65, 0, + 0, 4755, 5162, 5, 380, 0, 0, 4756, 4757, 5, 65, 0, 0, 4757, 4758, 5, 347, + 0, 0, 4758, 4759, 5, 381, 0, 0, 4759, 4760, 5, 71, 0, 0, 4760, 5162, 3, + 708, 354, 0, 4761, 4762, 5, 65, 0, 0, 4762, 4763, 5, 347, 0, 0, 4763, 4764, + 5, 117, 0, 0, 4764, 4765, 5, 71, 0, 0, 4765, 5162, 3, 708, 354, 0, 4766, + 4767, 5, 65, 0, 0, 4767, 4768, 5, 347, 0, 0, 4768, 4769, 5, 407, 0, 0, + 4769, 4770, 5, 71, 0, 0, 4770, 5162, 3, 708, 354, 0, 4771, 4772, 5, 65, + 0, 0, 4772, 4773, 5, 347, 0, 0, 4773, 4774, 5, 406, 0, 0, 4774, 4775, 5, + 71, 0, 0, 4775, 5162, 3, 708, 354, 0, 4776, 4777, 5, 65, 0, 0, 4777, 4783, + 5, 381, 0, 0, 4778, 4781, 5, 292, 0, 0, 4779, 4782, 3, 708, 354, 0, 4780, + 4782, 5, 518, 0, 0, 4781, 4779, 1, 0, 0, 0, 4781, 4780, 1, 0, 0, 0, 4782, + 4784, 1, 0, 0, 0, 4783, 4778, 1, 0, 0, 0, 4783, 4784, 1, 0, 0, 0, 4784, + 5162, 1, 0, 0, 0, 4785, 4786, 5, 65, 0, 0, 4786, 4792, 5, 382, 0, 0, 4787, + 4790, 5, 292, 0, 0, 4788, 4791, 3, 708, 354, 0, 4789, 4791, 5, 518, 0, + 0, 4790, 4788, 1, 0, 0, 0, 4790, 4789, 1, 0, 0, 0, 4791, 4793, 1, 0, 0, + 0, 4792, 4787, 1, 0, 0, 0, 4792, 4793, 1, 0, 0, 0, 4793, 5162, 1, 0, 0, + 0, 4794, 4795, 5, 65, 0, 0, 4795, 4801, 5, 383, 0, 0, 4796, 4799, 5, 292, + 0, 0, 4797, 4800, 3, 708, 354, 0, 4798, 4800, 5, 518, 0, 0, 4799, 4797, + 1, 0, 0, 0, 4799, 4798, 1, 0, 0, 0, 4800, 4802, 1, 0, 0, 0, 4801, 4796, + 1, 0, 0, 0, 4801, 4802, 1, 0, 0, 0, 4802, 5162, 1, 0, 0, 0, 4803, 4804, + 5, 65, 0, 0, 4804, 4810, 5, 384, 0, 0, 4805, 4808, 5, 292, 0, 0, 4806, + 4809, 3, 708, 354, 0, 4807, 4809, 5, 518, 0, 0, 4808, 4806, 1, 0, 0, 0, + 4808, 4807, 1, 0, 0, 0, 4809, 4811, 1, 0, 0, 0, 4810, 4805, 1, 0, 0, 0, + 4810, 4811, 1, 0, 0, 0, 4811, 5162, 1, 0, 0, 0, 4812, 4813, 5, 65, 0, 0, + 4813, 4819, 5, 385, 0, 0, 4814, 4817, 5, 292, 0, 0, 4815, 4818, 3, 708, + 354, 0, 4816, 4818, 5, 518, 0, 0, 4817, 4815, 1, 0, 0, 0, 4817, 4816, 1, + 0, 0, 0, 4818, 4820, 1, 0, 0, 0, 4819, 4814, 1, 0, 0, 0, 4819, 4820, 1, + 0, 0, 0, 4820, 5162, 1, 0, 0, 0, 4821, 4822, 5, 65, 0, 0, 4822, 4828, 5, + 143, 0, 0, 4823, 4826, 5, 292, 0, 0, 4824, 4827, 3, 708, 354, 0, 4825, + 4827, 5, 518, 0, 0, 4826, 4824, 1, 0, 0, 0, 4826, 4825, 1, 0, 0, 0, 4827, + 4829, 1, 0, 0, 0, 4828, 4823, 1, 0, 0, 0, 4828, 4829, 1, 0, 0, 0, 4829, + 5162, 1, 0, 0, 0, 4830, 4831, 5, 65, 0, 0, 4831, 4837, 5, 145, 0, 0, 4832, + 4835, 5, 292, 0, 0, 4833, 4836, 3, 708, 354, 0, 4834, 4836, 5, 518, 0, + 0, 4835, 4833, 1, 0, 0, 0, 4835, 4834, 1, 0, 0, 0, 4836, 4838, 1, 0, 0, + 0, 4837, 4832, 1, 0, 0, 0, 4837, 4838, 1, 0, 0, 0, 4838, 5162, 1, 0, 0, + 0, 4839, 4840, 5, 65, 0, 0, 4840, 4846, 5, 386, 0, 0, 4841, 4844, 5, 292, + 0, 0, 4842, 4845, 3, 708, 354, 0, 4843, 4845, 5, 518, 0, 0, 4844, 4842, + 1, 0, 0, 0, 4844, 4843, 1, 0, 0, 0, 4845, 4847, 1, 0, 0, 0, 4846, 4841, + 1, 0, 0, 0, 4846, 4847, 1, 0, 0, 0, 4847, 5162, 1, 0, 0, 0, 4848, 4849, + 5, 65, 0, 0, 4849, 4855, 5, 387, 0, 0, 4850, 4853, 5, 292, 0, 0, 4851, + 4854, 3, 708, 354, 0, 4852, 4854, 5, 518, 0, 0, 4853, 4851, 1, 0, 0, 0, + 4853, 4852, 1, 0, 0, 0, 4854, 4856, 1, 0, 0, 0, 4855, 4850, 1, 0, 0, 0, + 4855, 4856, 1, 0, 0, 0, 4856, 5162, 1, 0, 0, 0, 4857, 4858, 5, 65, 0, 0, + 4858, 4859, 5, 37, 0, 0, 4859, 4865, 5, 421, 0, 0, 4860, 4863, 5, 292, + 0, 0, 4861, 4864, 3, 708, 354, 0, 4862, 4864, 5, 518, 0, 0, 4863, 4861, + 1, 0, 0, 0, 4863, 4862, 1, 0, 0, 0, 4864, 4866, 1, 0, 0, 0, 4865, 4860, + 1, 0, 0, 0, 4865, 4866, 1, 0, 0, 0, 4866, 5162, 1, 0, 0, 0, 4867, 4868, + 5, 65, 0, 0, 4868, 4874, 5, 144, 0, 0, 4869, 4872, 5, 292, 0, 0, 4870, + 4873, 3, 708, 354, 0, 4871, 4873, 5, 518, 0, 0, 4872, 4870, 1, 0, 0, 0, + 4872, 4871, 1, 0, 0, 0, 4873, 4875, 1, 0, 0, 0, 4874, 4869, 1, 0, 0, 0, + 4874, 4875, 1, 0, 0, 0, 4875, 5162, 1, 0, 0, 0, 4876, 4877, 5, 65, 0, 0, + 4877, 4883, 5, 146, 0, 0, 4878, 4881, 5, 292, 0, 0, 4879, 4882, 3, 708, + 354, 0, 4880, 4882, 5, 518, 0, 0, 4881, 4879, 1, 0, 0, 0, 4881, 4880, 1, + 0, 0, 0, 4882, 4884, 1, 0, 0, 0, 4883, 4878, 1, 0, 0, 0, 4883, 4884, 1, + 0, 0, 0, 4884, 5162, 1, 0, 0, 0, 4885, 4886, 5, 65, 0, 0, 4886, 4887, 5, + 114, 0, 0, 4887, 4893, 5, 117, 0, 0, 4888, 4891, 5, 292, 0, 0, 4889, 4892, + 3, 708, 354, 0, 4890, 4892, 5, 518, 0, 0, 4891, 4889, 1, 0, 0, 0, 4891, + 4890, 1, 0, 0, 0, 4892, 4894, 1, 0, 0, 0, 4893, 4888, 1, 0, 0, 0, 4893, + 4894, 1, 0, 0, 0, 4894, 5162, 1, 0, 0, 0, 4895, 4896, 5, 65, 0, 0, 4896, + 4897, 5, 115, 0, 0, 4897, 4903, 5, 117, 0, 0, 4898, 4901, 5, 292, 0, 0, + 4899, 4902, 3, 708, 354, 0, 4900, 4902, 5, 518, 0, 0, 4901, 4899, 1, 0, + 0, 0, 4901, 4900, 1, 0, 0, 0, 4902, 4904, 1, 0, 0, 0, 4903, 4898, 1, 0, + 0, 0, 4903, 4904, 1, 0, 0, 0, 4904, 5162, 1, 0, 0, 0, 4905, 4906, 5, 65, + 0, 0, 4906, 4907, 5, 227, 0, 0, 4907, 4913, 5, 228, 0, 0, 4908, 4911, 5, + 292, 0, 0, 4909, 4912, 3, 708, 354, 0, 4910, 4912, 5, 518, 0, 0, 4911, + 4909, 1, 0, 0, 0, 4911, 4910, 1, 0, 0, 0, 4912, 4914, 1, 0, 0, 0, 4913, + 4908, 1, 0, 0, 0, 4913, 4914, 1, 0, 0, 0, 4914, 5162, 1, 0, 0, 0, 4915, + 4916, 5, 65, 0, 0, 4916, 4917, 5, 23, 0, 0, 4917, 5162, 3, 708, 354, 0, + 4918, 4919, 5, 65, 0, 0, 4919, 4920, 5, 27, 0, 0, 4920, 5162, 3, 708, 354, + 0, 4921, 4922, 5, 65, 0, 0, 4922, 4923, 5, 33, 0, 0, 4923, 5162, 3, 708, + 354, 0, 4924, 4925, 5, 65, 0, 0, 4925, 5162, 5, 388, 0, 0, 4926, 4927, + 5, 65, 0, 0, 4927, 5162, 5, 334, 0, 0, 4928, 4929, 5, 65, 0, 0, 4929, 5162, + 5, 336, 0, 0, 4930, 4931, 5, 65, 0, 0, 4931, 4932, 5, 409, 0, 0, 4932, + 5162, 5, 334, 0, 0, 4933, 4934, 5, 65, 0, 0, 4934, 4935, 5, 409, 0, 0, + 4935, 5162, 5, 368, 0, 0, 4936, 4937, 5, 65, 0, 0, 4937, 4938, 5, 412, + 0, 0, 4938, 4939, 5, 427, 0, 0, 4939, 4941, 3, 708, 354, 0, 4940, 4942, + 5, 415, 0, 0, 4941, 4940, 1, 0, 0, 0, 4941, 4942, 1, 0, 0, 0, 4942, 5162, + 1, 0, 0, 0, 4943, 4944, 5, 65, 0, 0, 4944, 4945, 5, 413, 0, 0, 4945, 4946, + 5, 427, 0, 0, 4946, 4948, 3, 708, 354, 0, 4947, 4949, 5, 415, 0, 0, 4948, + 4947, 1, 0, 0, 0, 4948, 4949, 1, 0, 0, 0, 4949, 5162, 1, 0, 0, 0, 4950, + 4951, 5, 65, 0, 0, 4951, 4952, 5, 414, 0, 0, 4952, 4953, 5, 426, 0, 0, + 4953, 5162, 3, 708, 354, 0, 4954, 4955, 5, 65, 0, 0, 4955, 4956, 5, 416, + 0, 0, 4956, 4957, 5, 427, 0, 0, 4957, 5162, 3, 708, 354, 0, 4958, 4959, + 5, 65, 0, 0, 4959, 4960, 5, 222, 0, 0, 4960, 4961, 5, 427, 0, 0, 4961, + 4964, 3, 708, 354, 0, 4962, 4963, 5, 417, 0, 0, 4963, 4965, 5, 516, 0, + 0, 4964, 4962, 1, 0, 0, 0, 4964, 4965, 1, 0, 0, 0, 4965, 5162, 1, 0, 0, + 0, 4966, 4967, 5, 65, 0, 0, 4967, 4969, 5, 188, 0, 0, 4968, 4970, 3, 564, + 282, 0, 4969, 4968, 1, 0, 0, 0, 4969, 4970, 1, 0, 0, 0, 4970, 5162, 1, + 0, 0, 0, 4971, 4972, 5, 65, 0, 0, 4972, 4973, 5, 59, 0, 0, 4973, 5162, + 5, 445, 0, 0, 4974, 4975, 5, 65, 0, 0, 4975, 4976, 5, 29, 0, 0, 4976, 4982, + 5, 447, 0, 0, 4977, 4980, 5, 292, 0, 0, 4978, 4981, 3, 708, 354, 0, 4979, + 4981, 5, 518, 0, 0, 4980, 4978, 1, 0, 0, 0, 4980, 4979, 1, 0, 0, 0, 4981, + 4983, 1, 0, 0, 0, 4982, 4977, 1, 0, 0, 0, 4982, 4983, 1, 0, 0, 0, 4983, + 5162, 1, 0, 0, 0, 4984, 4985, 5, 65, 0, 0, 4985, 4986, 5, 458, 0, 0, 4986, + 5162, 5, 447, 0, 0, 4987, 4988, 5, 65, 0, 0, 4988, 4989, 5, 453, 0, 0, + 4989, 5162, 5, 483, 0, 0, 4990, 4991, 5, 65, 0, 0, 4991, 4992, 5, 456, + 0, 0, 4992, 4993, 5, 93, 0, 0, 4993, 5162, 3, 708, 354, 0, 4994, 4995, + 5, 65, 0, 0, 4995, 4996, 5, 456, 0, 0, 4996, 4997, 5, 93, 0, 0, 4997, 4998, + 5, 30, 0, 0, 4998, 5162, 3, 708, 354, 0, 4999, 5000, 5, 65, 0, 0, 5000, + 5001, 5, 456, 0, 0, 5001, 5002, 5, 93, 0, 0, 5002, 5003, 5, 33, 0, 0, 5003, + 5162, 3, 708, 354, 0, 5004, 5005, 5, 65, 0, 0, 5005, 5006, 5, 456, 0, 0, + 5006, 5007, 5, 93, 0, 0, 5007, 5008, 5, 32, 0, 0, 5008, 5162, 3, 708, 354, + 0, 5009, 5010, 5, 65, 0, 0, 5010, 5011, 5, 445, 0, 0, 5011, 5017, 5, 454, + 0, 0, 5012, 5015, 5, 292, 0, 0, 5013, 5016, 3, 708, 354, 0, 5014, 5016, + 5, 518, 0, 0, 5015, 5013, 1, 0, 0, 0, 5015, 5014, 1, 0, 0, 0, 5016, 5018, + 1, 0, 0, 0, 5017, 5012, 1, 0, 0, 0, 5017, 5018, 1, 0, 0, 0, 5018, 5162, + 1, 0, 0, 0, 5019, 5020, 5, 65, 0, 0, 5020, 5021, 5, 317, 0, 0, 5021, 5027, + 5, 343, 0, 0, 5022, 5025, 5, 292, 0, 0, 5023, 5026, 3, 708, 354, 0, 5024, + 5026, 5, 518, 0, 0, 5025, 5023, 1, 0, 0, 0, 5025, 5024, 1, 0, 0, 0, 5026, + 5028, 1, 0, 0, 0, 5027, 5022, 1, 0, 0, 0, 5027, 5028, 1, 0, 0, 0, 5028, + 5162, 1, 0, 0, 0, 5029, 5030, 5, 65, 0, 0, 5030, 5031, 5, 317, 0, 0, 5031, + 5037, 5, 316, 0, 0, 5032, 5035, 5, 292, 0, 0, 5033, 5036, 3, 708, 354, + 0, 5034, 5036, 5, 518, 0, 0, 5035, 5033, 1, 0, 0, 0, 5035, 5034, 1, 0, + 0, 0, 5036, 5038, 1, 0, 0, 0, 5037, 5032, 1, 0, 0, 0, 5037, 5038, 1, 0, + 0, 0, 5038, 5162, 1, 0, 0, 0, 5039, 5040, 5, 65, 0, 0, 5040, 5041, 5, 26, + 0, 0, 5041, 5047, 5, 381, 0, 0, 5042, 5045, 5, 292, 0, 0, 5043, 5046, 3, + 708, 354, 0, 5044, 5046, 5, 518, 0, 0, 5045, 5043, 1, 0, 0, 0, 5045, 5044, + 1, 0, 0, 0, 5046, 5048, 1, 0, 0, 0, 5047, 5042, 1, 0, 0, 0, 5047, 5048, + 1, 0, 0, 0, 5048, 5162, 1, 0, 0, 0, 5049, 5050, 5, 65, 0, 0, 5050, 5051, + 5, 26, 0, 0, 5051, 5057, 5, 117, 0, 0, 5052, 5055, 5, 292, 0, 0, 5053, + 5056, 3, 708, 354, 0, 5054, 5056, 5, 518, 0, 0, 5055, 5053, 1, 0, 0, 0, + 5055, 5054, 1, 0, 0, 0, 5056, 5058, 1, 0, 0, 0, 5057, 5052, 1, 0, 0, 0, + 5057, 5058, 1, 0, 0, 0, 5058, 5162, 1, 0, 0, 0, 5059, 5060, 5, 65, 0, 0, + 5060, 5162, 5, 374, 0, 0, 5061, 5062, 5, 65, 0, 0, 5062, 5063, 5, 374, + 0, 0, 5063, 5066, 5, 375, 0, 0, 5064, 5067, 3, 708, 354, 0, 5065, 5067, + 5, 518, 0, 0, 5066, 5064, 1, 0, 0, 0, 5066, 5065, 1, 0, 0, 0, 5066, 5067, + 1, 0, 0, 0, 5067, 5162, 1, 0, 0, 0, 5068, 5069, 5, 65, 0, 0, 5069, 5070, + 5, 374, 0, 0, 5070, 5162, 5, 376, 0, 0, 5071, 5072, 5, 65, 0, 0, 5072, + 5073, 5, 211, 0, 0, 5073, 5076, 5, 212, 0, 0, 5074, 5075, 5, 429, 0, 0, + 5075, 5077, 3, 566, 283, 0, 5076, 5074, 1, 0, 0, 0, 5076, 5077, 1, 0, 0, + 0, 5077, 5162, 1, 0, 0, 0, 5078, 5079, 5, 65, 0, 0, 5079, 5082, 5, 418, + 0, 0, 5080, 5081, 5, 417, 0, 0, 5081, 5083, 5, 516, 0, 0, 5082, 5080, 1, + 0, 0, 0, 5082, 5083, 1, 0, 0, 0, 5083, 5089, 1, 0, 0, 0, 5084, 5087, 5, + 292, 0, 0, 5085, 5088, 3, 708, 354, 0, 5086, 5088, 5, 518, 0, 0, 5087, + 5085, 1, 0, 0, 0, 5087, 5086, 1, 0, 0, 0, 5088, 5090, 1, 0, 0, 0, 5089, + 5084, 1, 0, 0, 0, 5089, 5090, 1, 0, 0, 0, 5090, 5092, 1, 0, 0, 0, 5091, + 5093, 5, 85, 0, 0, 5092, 5091, 1, 0, 0, 0, 5092, 5093, 1, 0, 0, 0, 5093, + 5162, 1, 0, 0, 0, 5094, 5095, 5, 65, 0, 0, 5095, 5096, 5, 440, 0, 0, 5096, + 5097, 5, 441, 0, 0, 5097, 5103, 5, 316, 0, 0, 5098, 5101, 5, 292, 0, 0, + 5099, 5102, 3, 708, 354, 0, 5100, 5102, 5, 518, 0, 0, 5101, 5099, 1, 0, + 0, 0, 5101, 5100, 1, 0, 0, 0, 5102, 5104, 1, 0, 0, 0, 5103, 5098, 1, 0, + 0, 0, 5103, 5104, 1, 0, 0, 0, 5104, 5162, 1, 0, 0, 0, 5105, 5106, 5, 65, + 0, 0, 5106, 5107, 5, 440, 0, 0, 5107, 5108, 5, 441, 0, 0, 5108, 5114, 5, + 343, 0, 0, 5109, 5112, 5, 292, 0, 0, 5110, 5113, 3, 708, 354, 0, 5111, + 5113, 5, 518, 0, 0, 5112, 5110, 1, 0, 0, 0, 5112, 5111, 1, 0, 0, 0, 5113, + 5115, 1, 0, 0, 0, 5114, 5109, 1, 0, 0, 0, 5114, 5115, 1, 0, 0, 0, 5115, + 5162, 1, 0, 0, 0, 5116, 5117, 5, 65, 0, 0, 5117, 5118, 5, 440, 0, 0, 5118, + 5124, 5, 120, 0, 0, 5119, 5122, 5, 292, 0, 0, 5120, 5123, 3, 708, 354, + 0, 5121, 5123, 5, 518, 0, 0, 5122, 5120, 1, 0, 0, 0, 5122, 5121, 1, 0, + 0, 0, 5123, 5125, 1, 0, 0, 0, 5124, 5119, 1, 0, 0, 0, 5124, 5125, 1, 0, + 0, 0, 5125, 5162, 1, 0, 0, 0, 5126, 5127, 5, 65, 0, 0, 5127, 5162, 5, 443, + 0, 0, 5128, 5129, 5, 65, 0, 0, 5129, 5162, 5, 391, 0, 0, 5130, 5131, 5, + 65, 0, 0, 5131, 5132, 5, 356, 0, 0, 5132, 5138, 5, 388, 0, 0, 5133, 5136, + 5, 292, 0, 0, 5134, 5137, 3, 708, 354, 0, 5135, 5137, 5, 518, 0, 0, 5136, + 5134, 1, 0, 0, 0, 5136, 5135, 1, 0, 0, 0, 5137, 5139, 1, 0, 0, 0, 5138, + 5133, 1, 0, 0, 0, 5138, 5139, 1, 0, 0, 0, 5139, 5162, 1, 0, 0, 0, 5140, + 5141, 5, 65, 0, 0, 5141, 5142, 5, 314, 0, 0, 5142, 5148, 5, 343, 0, 0, + 5143, 5146, 5, 292, 0, 0, 5144, 5147, 3, 708, 354, 0, 5145, 5147, 5, 518, + 0, 0, 5146, 5144, 1, 0, 0, 0, 5146, 5145, 1, 0, 0, 0, 5147, 5149, 1, 0, + 0, 0, 5148, 5143, 1, 0, 0, 0, 5148, 5149, 1, 0, 0, 0, 5149, 5162, 1, 0, + 0, 0, 5150, 5151, 5, 65, 0, 0, 5151, 5152, 5, 345, 0, 0, 5152, 5153, 5, + 314, 0, 0, 5153, 5159, 5, 316, 0, 0, 5154, 5157, 5, 292, 0, 0, 5155, 5158, + 3, 708, 354, 0, 5156, 5158, 5, 518, 0, 0, 5157, 5155, 1, 0, 0, 0, 5157, + 5156, 1, 0, 0, 0, 5158, 5160, 1, 0, 0, 0, 5159, 5154, 1, 0, 0, 0, 5159, + 5160, 1, 0, 0, 0, 5160, 5162, 1, 0, 0, 0, 5161, 4754, 1, 0, 0, 0, 5161, + 4756, 1, 0, 0, 0, 5161, 4761, 1, 0, 0, 0, 5161, 4766, 1, 0, 0, 0, 5161, + 4771, 1, 0, 0, 0, 5161, 4776, 1, 0, 0, 0, 5161, 4785, 1, 0, 0, 0, 5161, + 4794, 1, 0, 0, 0, 5161, 4803, 1, 0, 0, 0, 5161, 4812, 1, 0, 0, 0, 5161, + 4821, 1, 0, 0, 0, 5161, 4830, 1, 0, 0, 0, 5161, 4839, 1, 0, 0, 0, 5161, + 4848, 1, 0, 0, 0, 5161, 4857, 1, 0, 0, 0, 5161, 4867, 1, 0, 0, 0, 5161, + 4876, 1, 0, 0, 0, 5161, 4885, 1, 0, 0, 0, 5161, 4895, 1, 0, 0, 0, 5161, + 4905, 1, 0, 0, 0, 5161, 4915, 1, 0, 0, 0, 5161, 4918, 1, 0, 0, 0, 5161, + 4921, 1, 0, 0, 0, 5161, 4924, 1, 0, 0, 0, 5161, 4926, 1, 0, 0, 0, 5161, + 4928, 1, 0, 0, 0, 5161, 4930, 1, 0, 0, 0, 5161, 4933, 1, 0, 0, 0, 5161, + 4936, 1, 0, 0, 0, 5161, 4943, 1, 0, 0, 0, 5161, 4950, 1, 0, 0, 0, 5161, + 4954, 1, 0, 0, 0, 5161, 4958, 1, 0, 0, 0, 5161, 4966, 1, 0, 0, 0, 5161, + 4971, 1, 0, 0, 0, 5161, 4974, 1, 0, 0, 0, 5161, 4984, 1, 0, 0, 0, 5161, + 4987, 1, 0, 0, 0, 5161, 4990, 1, 0, 0, 0, 5161, 4994, 1, 0, 0, 0, 5161, + 4999, 1, 0, 0, 0, 5161, 5004, 1, 0, 0, 0, 5161, 5009, 1, 0, 0, 0, 5161, + 5019, 1, 0, 0, 0, 5161, 5029, 1, 0, 0, 0, 5161, 5039, 1, 0, 0, 0, 5161, + 5049, 1, 0, 0, 0, 5161, 5059, 1, 0, 0, 0, 5161, 5061, 1, 0, 0, 0, 5161, + 5068, 1, 0, 0, 0, 5161, 5071, 1, 0, 0, 0, 5161, 5078, 1, 0, 0, 0, 5161, + 5094, 1, 0, 0, 0, 5161, 5105, 1, 0, 0, 0, 5161, 5116, 1, 0, 0, 0, 5161, + 5126, 1, 0, 0, 0, 5161, 5128, 1, 0, 0, 0, 5161, 5130, 1, 0, 0, 0, 5161, + 5140, 1, 0, 0, 0, 5161, 5150, 1, 0, 0, 0, 5162, 563, 1, 0, 0, 0, 5163, + 5164, 5, 72, 0, 0, 5164, 5169, 3, 568, 284, 0, 5165, 5166, 5, 288, 0, 0, + 5166, 5168, 3, 568, 284, 0, 5167, 5165, 1, 0, 0, 0, 5168, 5171, 1, 0, 0, + 0, 5169, 5167, 1, 0, 0, 0, 5169, 5170, 1, 0, 0, 0, 5170, 5177, 1, 0, 0, + 0, 5171, 5169, 1, 0, 0, 0, 5172, 5175, 5, 292, 0, 0, 5173, 5176, 3, 708, + 354, 0, 5174, 5176, 5, 518, 0, 0, 5175, 5173, 1, 0, 0, 0, 5175, 5174, 1, + 0, 0, 0, 5176, 5178, 1, 0, 0, 0, 5177, 5172, 1, 0, 0, 0, 5177, 5178, 1, + 0, 0, 0, 5178, 5185, 1, 0, 0, 0, 5179, 5182, 5, 292, 0, 0, 5180, 5183, + 3, 708, 354, 0, 5181, 5183, 5, 518, 0, 0, 5182, 5180, 1, 0, 0, 0, 5182, + 5181, 1, 0, 0, 0, 5183, 5185, 1, 0, 0, 0, 5184, 5163, 1, 0, 0, 0, 5184, + 5179, 1, 0, 0, 0, 5185, 565, 1, 0, 0, 0, 5186, 5187, 7, 33, 0, 0, 5187, + 567, 1, 0, 0, 0, 5188, 5189, 5, 438, 0, 0, 5189, 5190, 7, 34, 0, 0, 5190, + 5195, 5, 514, 0, 0, 5191, 5192, 5, 518, 0, 0, 5192, 5193, 7, 34, 0, 0, + 5193, 5195, 5, 514, 0, 0, 5194, 5188, 1, 0, 0, 0, 5194, 5191, 1, 0, 0, + 0, 5195, 569, 1, 0, 0, 0, 5196, 5197, 5, 514, 0, 0, 5197, 5198, 5, 487, + 0, 0, 5198, 5199, 3, 572, 286, 0, 5199, 571, 1, 0, 0, 0, 5200, 5205, 5, + 514, 0, 0, 5201, 5205, 5, 516, 0, 0, 5202, 5205, 3, 716, 358, 0, 5203, + 5205, 5, 291, 0, 0, 5204, 5200, 1, 0, 0, 0, 5204, 5201, 1, 0, 0, 0, 5204, + 5202, 1, 0, 0, 0, 5204, 5203, 1, 0, 0, 0, 5205, 573, 1, 0, 0, 0, 5206, + 5207, 5, 66, 0, 0, 5207, 5208, 5, 347, 0, 0, 5208, 5209, 5, 23, 0, 0, 5209, + 5212, 3, 708, 354, 0, 5210, 5211, 5, 433, 0, 0, 5211, 5213, 5, 518, 0, + 0, 5212, 5210, 1, 0, 0, 0, 5212, 5213, 1, 0, 0, 0, 5213, 5358, 1, 0, 0, + 0, 5214, 5215, 5, 66, 0, 0, 5215, 5216, 5, 347, 0, 0, 5216, 5217, 5, 116, + 0, 0, 5217, 5220, 3, 708, 354, 0, 5218, 5219, 5, 433, 0, 0, 5219, 5221, + 5, 518, 0, 0, 5220, 5218, 1, 0, 0, 0, 5220, 5221, 1, 0, 0, 0, 5221, 5358, + 1, 0, 0, 0, 5222, 5223, 5, 66, 0, 0, 5223, 5224, 5, 347, 0, 0, 5224, 5225, + 5, 405, 0, 0, 5225, 5358, 3, 708, 354, 0, 5226, 5227, 5, 66, 0, 0, 5227, + 5228, 5, 23, 0, 0, 5228, 5358, 3, 708, 354, 0, 5229, 5230, 5, 66, 0, 0, + 5230, 5231, 5, 27, 0, 0, 5231, 5358, 3, 708, 354, 0, 5232, 5233, 5, 66, + 0, 0, 5233, 5234, 5, 30, 0, 0, 5234, 5358, 3, 708, 354, 0, 5235, 5236, + 5, 66, 0, 0, 5236, 5237, 5, 31, 0, 0, 5237, 5358, 3, 708, 354, 0, 5238, + 5239, 5, 66, 0, 0, 5239, 5240, 5, 32, 0, 0, 5240, 5358, 3, 708, 354, 0, + 5241, 5242, 5, 66, 0, 0, 5242, 5243, 5, 33, 0, 0, 5243, 5358, 3, 708, 354, + 0, 5244, 5245, 5, 66, 0, 0, 5245, 5246, 5, 34, 0, 0, 5246, 5358, 3, 708, + 354, 0, 5247, 5248, 5, 66, 0, 0, 5248, 5249, 5, 35, 0, 0, 5249, 5358, 3, + 708, 354, 0, 5250, 5251, 5, 66, 0, 0, 5251, 5252, 5, 28, 0, 0, 5252, 5358, + 3, 708, 354, 0, 5253, 5254, 5, 66, 0, 0, 5254, 5255, 5, 37, 0, 0, 5255, + 5358, 3, 708, 354, 0, 5256, 5257, 5, 66, 0, 0, 5257, 5258, 5, 114, 0, 0, + 5258, 5259, 5, 116, 0, 0, 5259, 5358, 3, 708, 354, 0, 5260, 5261, 5, 66, + 0, 0, 5261, 5262, 5, 115, 0, 0, 5262, 5263, 5, 116, 0, 0, 5263, 5358, 3, + 708, 354, 0, 5264, 5265, 5, 66, 0, 0, 5265, 5266, 5, 29, 0, 0, 5266, 5269, + 5, 518, 0, 0, 5267, 5268, 5, 139, 0, 0, 5268, 5270, 5, 85, 0, 0, 5269, + 5267, 1, 0, 0, 0, 5269, 5270, 1, 0, 0, 0, 5270, 5358, 1, 0, 0, 0, 5271, + 5272, 5, 66, 0, 0, 5272, 5273, 5, 29, 0, 0, 5273, 5274, 5, 446, 0, 0, 5274, + 5358, 3, 708, 354, 0, 5275, 5276, 5, 66, 0, 0, 5276, 5277, 5, 458, 0, 0, + 5277, 5278, 5, 446, 0, 0, 5278, 5358, 5, 514, 0, 0, 5279, 5280, 5, 66, + 0, 0, 5280, 5281, 5, 453, 0, 0, 5281, 5282, 5, 458, 0, 0, 5282, 5358, 5, + 514, 0, 0, 5283, 5284, 5, 66, 0, 0, 5284, 5285, 5, 317, 0, 0, 5285, 5286, + 5, 342, 0, 0, 5286, 5358, 3, 708, 354, 0, 5287, 5288, 5, 66, 0, 0, 5288, + 5289, 5, 317, 0, 0, 5289, 5290, 5, 315, 0, 0, 5290, 5358, 3, 708, 354, + 0, 5291, 5292, 5, 66, 0, 0, 5292, 5293, 5, 26, 0, 0, 5293, 5294, 5, 23, + 0, 0, 5294, 5358, 3, 708, 354, 0, 5295, 5296, 5, 66, 0, 0, 5296, 5299, + 5, 374, 0, 0, 5297, 5300, 3, 708, 354, 0, 5298, 5300, 5, 518, 0, 0, 5299, + 5297, 1, 0, 0, 0, 5299, 5298, 1, 0, 0, 0, 5299, 5300, 1, 0, 0, 0, 5300, + 5358, 1, 0, 0, 0, 5301, 5302, 5, 66, 0, 0, 5302, 5303, 5, 214, 0, 0, 5303, + 5304, 5, 93, 0, 0, 5304, 5305, 7, 1, 0, 0, 5305, 5308, 3, 708, 354, 0, + 5306, 5307, 5, 187, 0, 0, 5307, 5309, 5, 518, 0, 0, 5308, 5306, 1, 0, 0, + 0, 5308, 5309, 1, 0, 0, 0, 5309, 5358, 1, 0, 0, 0, 5310, 5311, 5, 66, 0, + 0, 5311, 5312, 5, 409, 0, 0, 5312, 5313, 5, 499, 0, 0, 5313, 5358, 3, 580, + 290, 0, 5314, 5315, 5, 66, 0, 0, 5315, 5316, 5, 440, 0, 0, 5316, 5317, + 5, 441, 0, 0, 5317, 5318, 5, 315, 0, 0, 5318, 5358, 3, 708, 354, 0, 5319, + 5320, 5, 66, 0, 0, 5320, 5321, 5, 356, 0, 0, 5321, 5322, 5, 355, 0, 0, + 5322, 5358, 3, 708, 354, 0, 5323, 5324, 5, 66, 0, 0, 5324, 5358, 5, 443, + 0, 0, 5325, 5326, 5, 66, 0, 0, 5326, 5327, 5, 390, 0, 0, 5327, 5328, 5, + 71, 0, 0, 5328, 5329, 5, 33, 0, 0, 5329, 5330, 3, 708, 354, 0, 5330, 5331, + 5, 187, 0, 0, 5331, 5332, 3, 710, 355, 0, 5332, 5358, 1, 0, 0, 0, 5333, + 5334, 5, 66, 0, 0, 5334, 5335, 5, 390, 0, 0, 5335, 5336, 5, 71, 0, 0, 5336, + 5337, 5, 34, 0, 0, 5337, 5338, 3, 708, 354, 0, 5338, 5339, 5, 187, 0, 0, + 5339, 5340, 3, 710, 355, 0, 5340, 5358, 1, 0, 0, 0, 5341, 5342, 5, 66, + 0, 0, 5342, 5343, 5, 227, 0, 0, 5343, 5344, 5, 228, 0, 0, 5344, 5358, 3, + 708, 354, 0, 5345, 5346, 5, 66, 0, 0, 5346, 5347, 5, 314, 0, 0, 5347, 5348, + 5, 342, 0, 0, 5348, 5358, 3, 708, 354, 0, 5349, 5350, 5, 66, 0, 0, 5350, + 5351, 5, 345, 0, 0, 5351, 5352, 5, 314, 0, 0, 5352, 5353, 5, 315, 0, 0, + 5353, 5358, 3, 708, 354, 0, 5354, 5355, 5, 66, 0, 0, 5355, 5356, 5, 390, + 0, 0, 5356, 5358, 3, 710, 355, 0, 5357, 5206, 1, 0, 0, 0, 5357, 5214, 1, + 0, 0, 0, 5357, 5222, 1, 0, 0, 0, 5357, 5226, 1, 0, 0, 0, 5357, 5229, 1, + 0, 0, 0, 5357, 5232, 1, 0, 0, 0, 5357, 5235, 1, 0, 0, 0, 5357, 5238, 1, + 0, 0, 0, 5357, 5241, 1, 0, 0, 0, 5357, 5244, 1, 0, 0, 0, 5357, 5247, 1, + 0, 0, 0, 5357, 5250, 1, 0, 0, 0, 5357, 5253, 1, 0, 0, 0, 5357, 5256, 1, + 0, 0, 0, 5357, 5260, 1, 0, 0, 0, 5357, 5264, 1, 0, 0, 0, 5357, 5271, 1, + 0, 0, 0, 5357, 5275, 1, 0, 0, 0, 5357, 5279, 1, 0, 0, 0, 5357, 5283, 1, + 0, 0, 0, 5357, 5287, 1, 0, 0, 0, 5357, 5291, 1, 0, 0, 0, 5357, 5295, 1, + 0, 0, 0, 5357, 5301, 1, 0, 0, 0, 5357, 5310, 1, 0, 0, 0, 5357, 5314, 1, + 0, 0, 0, 5357, 5319, 1, 0, 0, 0, 5357, 5323, 1, 0, 0, 0, 5357, 5325, 1, + 0, 0, 0, 5357, 5333, 1, 0, 0, 0, 5357, 5341, 1, 0, 0, 0, 5357, 5345, 1, + 0, 0, 0, 5357, 5349, 1, 0, 0, 0, 5357, 5354, 1, 0, 0, 0, 5358, 575, 1, + 0, 0, 0, 5359, 5361, 5, 70, 0, 0, 5360, 5362, 7, 35, 0, 0, 5361, 5360, + 1, 0, 0, 0, 5361, 5362, 1, 0, 0, 0, 5362, 5363, 1, 0, 0, 0, 5363, 5364, + 3, 588, 294, 0, 5364, 5365, 5, 71, 0, 0, 5365, 5366, 5, 409, 0, 0, 5366, + 5367, 5, 499, 0, 0, 5367, 5372, 3, 580, 290, 0, 5368, 5370, 5, 76, 0, 0, + 5369, 5368, 1, 0, 0, 0, 5369, 5370, 1, 0, 0, 0, 5370, 5371, 1, 0, 0, 0, + 5371, 5373, 5, 518, 0, 0, 5372, 5369, 1, 0, 0, 0, 5372, 5373, 1, 0, 0, + 0, 5373, 5377, 1, 0, 0, 0, 5374, 5376, 3, 578, 289, 0, 5375, 5374, 1, 0, + 0, 0, 5376, 5379, 1, 0, 0, 0, 5377, 5375, 1, 0, 0, 0, 5377, 5378, 1, 0, + 0, 0, 5378, 5382, 1, 0, 0, 0, 5379, 5377, 1, 0, 0, 0, 5380, 5381, 5, 72, + 0, 0, 5381, 5383, 3, 668, 334, 0, 5382, 5380, 1, 0, 0, 0, 5382, 5383, 1, + 0, 0, 0, 5383, 5390, 1, 0, 0, 0, 5384, 5385, 5, 8, 0, 0, 5385, 5388, 3, + 616, 308, 0, 5386, 5387, 5, 73, 0, 0, 5387, 5389, 3, 668, 334, 0, 5388, + 5386, 1, 0, 0, 0, 5388, 5389, 1, 0, 0, 0, 5389, 5391, 1, 0, 0, 0, 5390, + 5384, 1, 0, 0, 0, 5390, 5391, 1, 0, 0, 0, 5391, 5394, 1, 0, 0, 0, 5392, + 5393, 5, 9, 0, 0, 5393, 5395, 3, 612, 306, 0, 5394, 5392, 1, 0, 0, 0, 5394, + 5395, 1, 0, 0, 0, 5395, 5398, 1, 0, 0, 0, 5396, 5397, 5, 75, 0, 0, 5397, + 5399, 5, 516, 0, 0, 5398, 5396, 1, 0, 0, 0, 5398, 5399, 1, 0, 0, 0, 5399, + 5402, 1, 0, 0, 0, 5400, 5401, 5, 74, 0, 0, 5401, 5403, 5, 516, 0, 0, 5402, + 5400, 1, 0, 0, 0, 5402, 5403, 1, 0, 0, 0, 5403, 577, 1, 0, 0, 0, 5404, + 5406, 3, 602, 301, 0, 5405, 5404, 1, 0, 0, 0, 5405, 5406, 1, 0, 0, 0, 5406, + 5407, 1, 0, 0, 0, 5407, 5408, 5, 86, 0, 0, 5408, 5409, 5, 409, 0, 0, 5409, + 5410, 5, 499, 0, 0, 5410, 5415, 3, 580, 290, 0, 5411, 5413, 5, 76, 0, 0, + 5412, 5411, 1, 0, 0, 0, 5412, 5413, 1, 0, 0, 0, 5413, 5414, 1, 0, 0, 0, + 5414, 5416, 5, 518, 0, 0, 5415, 5412, 1, 0, 0, 0, 5415, 5416, 1, 0, 0, + 0, 5416, 5419, 1, 0, 0, 0, 5417, 5418, 5, 93, 0, 0, 5418, 5420, 3, 668, + 334, 0, 5419, 5417, 1, 0, 0, 0, 5419, 5420, 1, 0, 0, 0, 5420, 579, 1, 0, + 0, 0, 5421, 5422, 7, 36, 0, 0, 5422, 581, 1, 0, 0, 0, 5423, 5431, 3, 584, + 292, 0, 5424, 5426, 5, 125, 0, 0, 5425, 5427, 5, 85, 0, 0, 5426, 5425, + 1, 0, 0, 0, 5426, 5427, 1, 0, 0, 0, 5427, 5428, 1, 0, 0, 0, 5428, 5430, + 3, 584, 292, 0, 5429, 5424, 1, 0, 0, 0, 5430, 5433, 1, 0, 0, 0, 5431, 5429, + 1, 0, 0, 0, 5431, 5432, 1, 0, 0, 0, 5432, 583, 1, 0, 0, 0, 5433, 5431, + 1, 0, 0, 0, 5434, 5436, 3, 586, 293, 0, 5435, 5437, 3, 594, 297, 0, 5436, + 5435, 1, 0, 0, 0, 5436, 5437, 1, 0, 0, 0, 5437, 5439, 1, 0, 0, 0, 5438, + 5440, 3, 604, 302, 0, 5439, 5438, 1, 0, 0, 0, 5439, 5440, 1, 0, 0, 0, 5440, + 5442, 1, 0, 0, 0, 5441, 5443, 3, 606, 303, 0, 5442, 5441, 1, 0, 0, 0, 5442, + 5443, 1, 0, 0, 0, 5443, 5445, 1, 0, 0, 0, 5444, 5446, 3, 608, 304, 0, 5445, + 5444, 1, 0, 0, 0, 5445, 5446, 1, 0, 0, 0, 5446, 5448, 1, 0, 0, 0, 5447, + 5449, 3, 610, 305, 0, 5448, 5447, 1, 0, 0, 0, 5448, 5449, 1, 0, 0, 0, 5449, + 5451, 1, 0, 0, 0, 5450, 5452, 3, 618, 309, 0, 5451, 5450, 1, 0, 0, 0, 5451, + 5452, 1, 0, 0, 0, 5452, 5471, 1, 0, 0, 0, 5453, 5455, 3, 594, 297, 0, 5454, + 5456, 3, 604, 302, 0, 5455, 5454, 1, 0, 0, 0, 5455, 5456, 1, 0, 0, 0, 5456, + 5458, 1, 0, 0, 0, 5457, 5459, 3, 606, 303, 0, 5458, 5457, 1, 0, 0, 0, 5458, + 5459, 1, 0, 0, 0, 5459, 5461, 1, 0, 0, 0, 5460, 5462, 3, 608, 304, 0, 5461, + 5460, 1, 0, 0, 0, 5461, 5462, 1, 0, 0, 0, 5462, 5463, 1, 0, 0, 0, 5463, + 5465, 3, 586, 293, 0, 5464, 5466, 3, 610, 305, 0, 5465, 5464, 1, 0, 0, + 0, 5465, 5466, 1, 0, 0, 0, 5466, 5468, 1, 0, 0, 0, 5467, 5469, 3, 618, + 309, 0, 5468, 5467, 1, 0, 0, 0, 5468, 5469, 1, 0, 0, 0, 5469, 5471, 1, + 0, 0, 0, 5470, 5434, 1, 0, 0, 0, 5470, 5453, 1, 0, 0, 0, 5471, 585, 1, + 0, 0, 0, 5472, 5474, 5, 70, 0, 0, 5473, 5475, 7, 35, 0, 0, 5474, 5473, + 1, 0, 0, 0, 5474, 5475, 1, 0, 0, 0, 5475, 5476, 1, 0, 0, 0, 5476, 5477, + 3, 588, 294, 0, 5477, 587, 1, 0, 0, 0, 5478, 5488, 5, 492, 0, 0, 5479, + 5484, 3, 590, 295, 0, 5480, 5481, 5, 498, 0, 0, 5481, 5483, 3, 590, 295, + 0, 5482, 5480, 1, 0, 0, 0, 5483, 5486, 1, 0, 0, 0, 5484, 5482, 1, 0, 0, + 0, 5484, 5485, 1, 0, 0, 0, 5485, 5488, 1, 0, 0, 0, 5486, 5484, 1, 0, 0, + 0, 5487, 5478, 1, 0, 0, 0, 5487, 5479, 1, 0, 0, 0, 5488, 589, 1, 0, 0, + 0, 5489, 5492, 3, 668, 334, 0, 5490, 5491, 5, 76, 0, 0, 5491, 5493, 3, + 592, 296, 0, 5492, 5490, 1, 0, 0, 0, 5492, 5493, 1, 0, 0, 0, 5493, 5500, + 1, 0, 0, 0, 5494, 5497, 3, 696, 348, 0, 5495, 5496, 5, 76, 0, 0, 5496, + 5498, 3, 592, 296, 0, 5497, 5495, 1, 0, 0, 0, 5497, 5498, 1, 0, 0, 0, 5498, + 5500, 1, 0, 0, 0, 5499, 5489, 1, 0, 0, 0, 5499, 5494, 1, 0, 0, 0, 5500, + 591, 1, 0, 0, 0, 5501, 5504, 5, 518, 0, 0, 5502, 5504, 3, 730, 365, 0, + 5503, 5501, 1, 0, 0, 0, 5503, 5502, 1, 0, 0, 0, 5504, 593, 1, 0, 0, 0, + 5505, 5506, 5, 71, 0, 0, 5506, 5510, 3, 596, 298, 0, 5507, 5509, 3, 598, + 299, 0, 5508, 5507, 1, 0, 0, 0, 5509, 5512, 1, 0, 0, 0, 5510, 5508, 1, + 0, 0, 0, 5510, 5511, 1, 0, 0, 0, 5511, 595, 1, 0, 0, 0, 5512, 5510, 1, + 0, 0, 0, 5513, 5518, 3, 708, 354, 0, 5514, 5516, 5, 76, 0, 0, 5515, 5514, + 1, 0, 0, 0, 5515, 5516, 1, 0, 0, 0, 5516, 5517, 1, 0, 0, 0, 5517, 5519, + 5, 518, 0, 0, 5518, 5515, 1, 0, 0, 0, 5518, 5519, 1, 0, 0, 0, 5519, 5530, + 1, 0, 0, 0, 5520, 5521, 5, 500, 0, 0, 5521, 5522, 3, 582, 291, 0, 5522, + 5527, 5, 501, 0, 0, 5523, 5525, 5, 76, 0, 0, 5524, 5523, 1, 0, 0, 0, 5524, + 5525, 1, 0, 0, 0, 5525, 5526, 1, 0, 0, 0, 5526, 5528, 5, 518, 0, 0, 5527, + 5524, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 5530, 1, 0, 0, 0, 5529, + 5513, 1, 0, 0, 0, 5529, 5520, 1, 0, 0, 0, 5530, 597, 1, 0, 0, 0, 5531, + 5533, 3, 602, 301, 0, 5532, 5531, 1, 0, 0, 0, 5532, 5533, 1, 0, 0, 0, 5533, + 5534, 1, 0, 0, 0, 5534, 5535, 5, 86, 0, 0, 5535, 5538, 3, 596, 298, 0, + 5536, 5537, 5, 93, 0, 0, 5537, 5539, 3, 668, 334, 0, 5538, 5536, 1, 0, + 0, 0, 5538, 5539, 1, 0, 0, 0, 5539, 5552, 1, 0, 0, 0, 5540, 5542, 3, 602, + 301, 0, 5541, 5540, 1, 0, 0, 0, 5541, 5542, 1, 0, 0, 0, 5542, 5543, 1, + 0, 0, 0, 5543, 5544, 5, 86, 0, 0, 5544, 5549, 3, 600, 300, 0, 5545, 5547, + 5, 76, 0, 0, 5546, 5545, 1, 0, 0, 0, 5546, 5547, 1, 0, 0, 0, 5547, 5548, + 1, 0, 0, 0, 5548, 5550, 5, 518, 0, 0, 5549, 5546, 1, 0, 0, 0, 5549, 5550, + 1, 0, 0, 0, 5550, 5552, 1, 0, 0, 0, 5551, 5532, 1, 0, 0, 0, 5551, 5541, + 1, 0, 0, 0, 5552, 599, 1, 0, 0, 0, 5553, 5554, 5, 518, 0, 0, 5554, 5555, + 5, 493, 0, 0, 5555, 5556, 3, 708, 354, 0, 5556, 5557, 5, 493, 0, 0, 5557, + 5558, 3, 708, 354, 0, 5558, 5564, 1, 0, 0, 0, 5559, 5560, 3, 708, 354, + 0, 5560, 5561, 5, 493, 0, 0, 5561, 5562, 3, 708, 354, 0, 5562, 5564, 1, + 0, 0, 0, 5563, 5553, 1, 0, 0, 0, 5563, 5559, 1, 0, 0, 0, 5564, 601, 1, + 0, 0, 0, 5565, 5567, 5, 87, 0, 0, 5566, 5568, 5, 90, 0, 0, 5567, 5566, + 1, 0, 0, 0, 5567, 5568, 1, 0, 0, 0, 5568, 5580, 1, 0, 0, 0, 5569, 5571, + 5, 88, 0, 0, 5570, 5572, 5, 90, 0, 0, 5571, 5570, 1, 0, 0, 0, 5571, 5572, + 1, 0, 0, 0, 5572, 5580, 1, 0, 0, 0, 5573, 5580, 5, 89, 0, 0, 5574, 5576, + 5, 91, 0, 0, 5575, 5577, 5, 90, 0, 0, 5576, 5575, 1, 0, 0, 0, 5576, 5577, + 1, 0, 0, 0, 5577, 5580, 1, 0, 0, 0, 5578, 5580, 5, 92, 0, 0, 5579, 5565, + 1, 0, 0, 0, 5579, 5569, 1, 0, 0, 0, 5579, 5573, 1, 0, 0, 0, 5579, 5574, + 1, 0, 0, 0, 5579, 5578, 1, 0, 0, 0, 5580, 603, 1, 0, 0, 0, 5581, 5582, + 5, 72, 0, 0, 5582, 5583, 3, 668, 334, 0, 5583, 605, 1, 0, 0, 0, 5584, 5585, + 5, 8, 0, 0, 5585, 5586, 3, 706, 353, 0, 5586, 607, 1, 0, 0, 0, 5587, 5588, + 5, 73, 0, 0, 5588, 5589, 3, 668, 334, 0, 5589, 609, 1, 0, 0, 0, 5590, 5591, + 5, 9, 0, 0, 5591, 5592, 3, 612, 306, 0, 5592, 611, 1, 0, 0, 0, 5593, 5598, + 3, 614, 307, 0, 5594, 5595, 5, 498, 0, 0, 5595, 5597, 3, 614, 307, 0, 5596, + 5594, 1, 0, 0, 0, 5597, 5600, 1, 0, 0, 0, 5598, 5596, 1, 0, 0, 0, 5598, + 5599, 1, 0, 0, 0, 5599, 613, 1, 0, 0, 0, 5600, 5598, 1, 0, 0, 0, 5601, + 5603, 3, 668, 334, 0, 5602, 5604, 7, 7, 0, 0, 5603, 5602, 1, 0, 0, 0, 5603, + 5604, 1, 0, 0, 0, 5604, 615, 1, 0, 0, 0, 5605, 5610, 3, 668, 334, 0, 5606, + 5607, 5, 498, 0, 0, 5607, 5609, 3, 668, 334, 0, 5608, 5606, 1, 0, 0, 0, + 5609, 5612, 1, 0, 0, 0, 5610, 5608, 1, 0, 0, 0, 5610, 5611, 1, 0, 0, 0, + 5611, 617, 1, 0, 0, 0, 5612, 5610, 1, 0, 0, 0, 5613, 5614, 5, 75, 0, 0, + 5614, 5617, 5, 516, 0, 0, 5615, 5616, 5, 74, 0, 0, 5616, 5618, 5, 516, + 0, 0, 5617, 5615, 1, 0, 0, 0, 5617, 5618, 1, 0, 0, 0, 5618, 5626, 1, 0, + 0, 0, 5619, 5620, 5, 74, 0, 0, 5620, 5623, 5, 516, 0, 0, 5621, 5622, 5, + 75, 0, 0, 5622, 5624, 5, 516, 0, 0, 5623, 5621, 1, 0, 0, 0, 5623, 5624, + 1, 0, 0, 0, 5624, 5626, 1, 0, 0, 0, 5625, 5613, 1, 0, 0, 0, 5625, 5619, + 1, 0, 0, 0, 5626, 619, 1, 0, 0, 0, 5627, 5644, 3, 624, 312, 0, 5628, 5644, + 3, 626, 313, 0, 5629, 5644, 3, 628, 314, 0, 5630, 5644, 3, 630, 315, 0, + 5631, 5644, 3, 632, 316, 0, 5632, 5644, 3, 634, 317, 0, 5633, 5644, 3, + 636, 318, 0, 5634, 5644, 3, 638, 319, 0, 5635, 5644, 3, 622, 311, 0, 5636, + 5644, 3, 644, 322, 0, 5637, 5644, 3, 650, 325, 0, 5638, 5644, 3, 652, 326, + 0, 5639, 5644, 3, 666, 333, 0, 5640, 5644, 3, 654, 327, 0, 5641, 5644, + 3, 658, 329, 0, 5642, 5644, 3, 664, 332, 0, 5643, 5627, 1, 0, 0, 0, 5643, + 5628, 1, 0, 0, 0, 5643, 5629, 1, 0, 0, 0, 5643, 5630, 1, 0, 0, 0, 5643, + 5631, 1, 0, 0, 0, 5643, 5632, 1, 0, 0, 0, 5643, 5633, 1, 0, 0, 0, 5643, + 5634, 1, 0, 0, 0, 5643, 5635, 1, 0, 0, 0, 5643, 5636, 1, 0, 0, 0, 5643, + 5637, 1, 0, 0, 0, 5643, 5638, 1, 0, 0, 0, 5643, 5639, 1, 0, 0, 0, 5643, + 5640, 1, 0, 0, 0, 5643, 5641, 1, 0, 0, 0, 5643, 5642, 1, 0, 0, 0, 5644, + 621, 1, 0, 0, 0, 5645, 5646, 5, 158, 0, 0, 5646, 5647, 5, 514, 0, 0, 5647, + 623, 1, 0, 0, 0, 5648, 5649, 5, 56, 0, 0, 5649, 5650, 5, 426, 0, 0, 5650, + 5651, 5, 59, 0, 0, 5651, 5654, 5, 514, 0, 0, 5652, 5653, 5, 61, 0, 0, 5653, + 5655, 5, 514, 0, 0, 5654, 5652, 1, 0, 0, 0, 5654, 5655, 1, 0, 0, 0, 5655, + 5656, 1, 0, 0, 0, 5656, 5657, 5, 62, 0, 0, 5657, 5672, 5, 514, 0, 0, 5658, + 5659, 5, 56, 0, 0, 5659, 5660, 5, 58, 0, 0, 5660, 5672, 5, 514, 0, 0, 5661, + 5662, 5, 56, 0, 0, 5662, 5663, 5, 60, 0, 0, 5663, 5664, 5, 63, 0, 0, 5664, + 5665, 5, 514, 0, 0, 5665, 5666, 5, 64, 0, 0, 5666, 5669, 5, 516, 0, 0, + 5667, 5668, 5, 62, 0, 0, 5668, 5670, 5, 514, 0, 0, 5669, 5667, 1, 0, 0, + 0, 5669, 5670, 1, 0, 0, 0, 5670, 5672, 1, 0, 0, 0, 5671, 5648, 1, 0, 0, + 0, 5671, 5658, 1, 0, 0, 0, 5671, 5661, 1, 0, 0, 0, 5672, 625, 1, 0, 0, + 0, 5673, 5674, 5, 57, 0, 0, 5674, 627, 1, 0, 0, 0, 5675, 5692, 5, 395, + 0, 0, 5676, 5677, 5, 396, 0, 0, 5677, 5679, 5, 409, 0, 0, 5678, 5680, 5, + 91, 0, 0, 5679, 5678, 1, 0, 0, 0, 5679, 5680, 1, 0, 0, 0, 5680, 5682, 1, + 0, 0, 0, 5681, 5683, 5, 193, 0, 0, 5682, 5681, 1, 0, 0, 0, 5682, 5683, + 1, 0, 0, 0, 5683, 5685, 1, 0, 0, 0, 5684, 5686, 5, 410, 0, 0, 5685, 5684, + 1, 0, 0, 0, 5685, 5686, 1, 0, 0, 0, 5686, 5688, 1, 0, 0, 0, 5687, 5689, + 5, 411, 0, 0, 5688, 5687, 1, 0, 0, 0, 5688, 5689, 1, 0, 0, 0, 5689, 5692, + 1, 0, 0, 0, 5690, 5692, 5, 396, 0, 0, 5691, 5675, 1, 0, 0, 0, 5691, 5676, + 1, 0, 0, 0, 5691, 5690, 1, 0, 0, 0, 5692, 629, 1, 0, 0, 0, 5693, 5694, + 5, 397, 0, 0, 5694, 631, 1, 0, 0, 0, 5695, 5696, 5, 398, 0, 0, 5696, 633, + 1, 0, 0, 0, 5697, 5698, 5, 399, 0, 0, 5698, 5699, 5, 400, 0, 0, 5699, 5700, + 5, 514, 0, 0, 5700, 635, 1, 0, 0, 0, 5701, 5702, 5, 399, 0, 0, 5702, 5703, + 5, 60, 0, 0, 5703, 5704, 5, 514, 0, 0, 5704, 637, 1, 0, 0, 0, 5705, 5707, + 5, 401, 0, 0, 5706, 5708, 3, 640, 320, 0, 5707, 5706, 1, 0, 0, 0, 5707, + 5708, 1, 0, 0, 0, 5708, 5711, 1, 0, 0, 0, 5709, 5710, 5, 433, 0, 0, 5710, + 5712, 3, 642, 321, 0, 5711, 5709, 1, 0, 0, 0, 5711, 5712, 1, 0, 0, 0, 5712, + 5717, 1, 0, 0, 0, 5713, 5714, 5, 65, 0, 0, 5714, 5715, 5, 401, 0, 0, 5715, + 5717, 5, 402, 0, 0, 5716, 5705, 1, 0, 0, 0, 5716, 5713, 1, 0, 0, 0, 5717, + 639, 1, 0, 0, 0, 5718, 5719, 3, 708, 354, 0, 5719, 5720, 5, 499, 0, 0, + 5720, 5721, 5, 492, 0, 0, 5721, 5725, 1, 0, 0, 0, 5722, 5725, 3, 708, 354, + 0, 5723, 5725, 5, 492, 0, 0, 5724, 5718, 1, 0, 0, 0, 5724, 5722, 1, 0, + 0, 0, 5724, 5723, 1, 0, 0, 0, 5725, 641, 1, 0, 0, 0, 5726, 5727, 7, 37, + 0, 0, 5727, 643, 1, 0, 0, 0, 5728, 5729, 5, 67, 0, 0, 5729, 5733, 3, 646, + 323, 0, 5730, 5731, 5, 67, 0, 0, 5731, 5733, 5, 85, 0, 0, 5732, 5728, 1, + 0, 0, 0, 5732, 5730, 1, 0, 0, 0, 5733, 645, 1, 0, 0, 0, 5734, 5739, 3, + 648, 324, 0, 5735, 5736, 5, 498, 0, 0, 5736, 5738, 3, 648, 324, 0, 5737, 5735, 1, 0, 0, 0, 5738, 5741, 1, 0, 0, 0, 5739, 5737, 1, 0, 0, 0, 5739, - 5740, 1, 0, 0, 0, 5740, 5742, 1, 0, 0, 0, 5741, 5739, 1, 0, 0, 0, 5742, - 5743, 5, 498, 0, 0, 5743, 5745, 1, 0, 0, 0, 5744, 5732, 1, 0, 0, 0, 5744, - 5745, 1, 0, 0, 0, 5745, 5747, 1, 0, 0, 0, 5746, 5748, 5, 364, 0, 0, 5747, - 5746, 1, 0, 0, 0, 5747, 5748, 1, 0, 0, 0, 5748, 5753, 1, 0, 0, 0, 5749, - 5750, 5, 431, 0, 0, 5750, 5751, 5, 515, 0, 0, 5751, 5753, 3, 656, 328, - 0, 5752, 5693, 1, 0, 0, 0, 5752, 5699, 1, 0, 0, 0, 5752, 5702, 1, 0, 0, - 0, 5752, 5704, 1, 0, 0, 0, 5752, 5708, 1, 0, 0, 0, 5752, 5712, 1, 0, 0, - 0, 5752, 5749, 1, 0, 0, 0, 5753, 655, 1, 0, 0, 0, 5754, 5756, 8, 38, 0, - 0, 5755, 5754, 1, 0, 0, 0, 5756, 5757, 1, 0, 0, 0, 5757, 5755, 1, 0, 0, - 0, 5757, 5758, 1, 0, 0, 0, 5758, 657, 1, 0, 0, 0, 5759, 5760, 5, 357, 0, - 0, 5760, 5761, 5, 71, 0, 0, 5761, 5762, 3, 710, 355, 0, 5762, 5763, 5, - 354, 0, 0, 5763, 5764, 7, 25, 0, 0, 5764, 5765, 5, 358, 0, 0, 5765, 5766, - 3, 708, 354, 0, 5766, 5767, 5, 355, 0, 0, 5767, 5768, 5, 497, 0, 0, 5768, - 5773, 3, 660, 330, 0, 5769, 5770, 5, 495, 0, 0, 5770, 5772, 3, 660, 330, - 0, 5771, 5769, 1, 0, 0, 0, 5772, 5775, 1, 0, 0, 0, 5773, 5771, 1, 0, 0, - 0, 5773, 5774, 1, 0, 0, 0, 5774, 5776, 1, 0, 0, 0, 5775, 5773, 1, 0, 0, - 0, 5776, 5789, 5, 498, 0, 0, 5777, 5778, 5, 360, 0, 0, 5778, 5779, 5, 497, - 0, 0, 5779, 5784, 3, 662, 331, 0, 5780, 5781, 5, 495, 0, 0, 5781, 5783, - 3, 662, 331, 0, 5782, 5780, 1, 0, 0, 0, 5783, 5786, 1, 0, 0, 0, 5784, 5782, - 1, 0, 0, 0, 5784, 5785, 1, 0, 0, 0, 5785, 5787, 1, 0, 0, 0, 5786, 5784, - 1, 0, 0, 0, 5787, 5788, 5, 498, 0, 0, 5788, 5790, 1, 0, 0, 0, 5789, 5777, - 1, 0, 0, 0, 5789, 5790, 1, 0, 0, 0, 5790, 5793, 1, 0, 0, 0, 5791, 5792, - 5, 359, 0, 0, 5792, 5794, 5, 513, 0, 0, 5793, 5791, 1, 0, 0, 0, 5793, 5794, - 1, 0, 0, 0, 5794, 5797, 1, 0, 0, 0, 5795, 5796, 5, 75, 0, 0, 5796, 5798, - 5, 513, 0, 0, 5797, 5795, 1, 0, 0, 0, 5797, 5798, 1, 0, 0, 0, 5798, 659, - 1, 0, 0, 0, 5799, 5800, 3, 710, 355, 0, 5800, 5801, 5, 76, 0, 0, 5801, - 5802, 3, 710, 355, 0, 5802, 661, 1, 0, 0, 0, 5803, 5804, 3, 710, 355, 0, - 5804, 5805, 5, 423, 0, 0, 5805, 5806, 3, 710, 355, 0, 5806, 5807, 5, 93, - 0, 0, 5807, 5808, 3, 710, 355, 0, 5808, 5814, 1, 0, 0, 0, 5809, 5810, 3, - 710, 355, 0, 5810, 5811, 5, 423, 0, 0, 5811, 5812, 3, 710, 355, 0, 5812, - 5814, 1, 0, 0, 0, 5813, 5803, 1, 0, 0, 0, 5813, 5809, 1, 0, 0, 0, 5814, - 663, 1, 0, 0, 0, 5815, 5816, 5, 515, 0, 0, 5816, 665, 1, 0, 0, 0, 5817, - 5818, 5, 386, 0, 0, 5818, 5819, 5, 387, 0, 0, 5819, 5820, 3, 710, 355, - 0, 5820, 5821, 5, 76, 0, 0, 5821, 5822, 5, 499, 0, 0, 5822, 5823, 3, 390, - 195, 0, 5823, 5824, 5, 500, 0, 0, 5824, 667, 1, 0, 0, 0, 5825, 5826, 3, - 670, 335, 0, 5826, 669, 1, 0, 0, 0, 5827, 5832, 3, 672, 336, 0, 5828, 5829, - 5, 286, 0, 0, 5829, 5831, 3, 672, 336, 0, 5830, 5828, 1, 0, 0, 0, 5831, - 5834, 1, 0, 0, 0, 5832, 5830, 1, 0, 0, 0, 5832, 5833, 1, 0, 0, 0, 5833, - 671, 1, 0, 0, 0, 5834, 5832, 1, 0, 0, 0, 5835, 5840, 3, 674, 337, 0, 5836, - 5837, 5, 285, 0, 0, 5837, 5839, 3, 674, 337, 0, 5838, 5836, 1, 0, 0, 0, - 5839, 5842, 1, 0, 0, 0, 5840, 5838, 1, 0, 0, 0, 5840, 5841, 1, 0, 0, 0, - 5841, 673, 1, 0, 0, 0, 5842, 5840, 1, 0, 0, 0, 5843, 5845, 5, 287, 0, 0, - 5844, 5843, 1, 0, 0, 0, 5844, 5845, 1, 0, 0, 0, 5845, 5846, 1, 0, 0, 0, - 5846, 5847, 3, 676, 338, 0, 5847, 675, 1, 0, 0, 0, 5848, 5877, 3, 680, - 340, 0, 5849, 5850, 3, 678, 339, 0, 5850, 5851, 3, 680, 340, 0, 5851, 5878, - 1, 0, 0, 0, 5852, 5878, 5, 6, 0, 0, 5853, 5878, 5, 5, 0, 0, 5854, 5855, - 5, 289, 0, 0, 5855, 5858, 5, 497, 0, 0, 5856, 5859, 3, 582, 291, 0, 5857, - 5859, 3, 706, 353, 0, 5858, 5856, 1, 0, 0, 0, 5858, 5857, 1, 0, 0, 0, 5859, - 5860, 1, 0, 0, 0, 5860, 5861, 5, 498, 0, 0, 5861, 5878, 1, 0, 0, 0, 5862, - 5864, 5, 287, 0, 0, 5863, 5862, 1, 0, 0, 0, 5863, 5864, 1, 0, 0, 0, 5864, - 5865, 1, 0, 0, 0, 5865, 5866, 5, 290, 0, 0, 5866, 5867, 3, 680, 340, 0, - 5867, 5868, 5, 285, 0, 0, 5868, 5869, 3, 680, 340, 0, 5869, 5878, 1, 0, - 0, 0, 5870, 5872, 5, 287, 0, 0, 5871, 5870, 1, 0, 0, 0, 5871, 5872, 1, - 0, 0, 0, 5872, 5873, 1, 0, 0, 0, 5873, 5874, 5, 291, 0, 0, 5874, 5878, - 3, 680, 340, 0, 5875, 5876, 5, 292, 0, 0, 5876, 5878, 3, 680, 340, 0, 5877, - 5849, 1, 0, 0, 0, 5877, 5852, 1, 0, 0, 0, 5877, 5853, 1, 0, 0, 0, 5877, - 5854, 1, 0, 0, 0, 5877, 5863, 1, 0, 0, 0, 5877, 5871, 1, 0, 0, 0, 5877, - 5875, 1, 0, 0, 0, 5877, 5878, 1, 0, 0, 0, 5878, 677, 1, 0, 0, 0, 5879, - 5880, 7, 39, 0, 0, 5880, 679, 1, 0, 0, 0, 5881, 5886, 3, 682, 341, 0, 5882, - 5883, 7, 40, 0, 0, 5883, 5885, 3, 682, 341, 0, 5884, 5882, 1, 0, 0, 0, - 5885, 5888, 1, 0, 0, 0, 5886, 5884, 1, 0, 0, 0, 5886, 5887, 1, 0, 0, 0, - 5887, 681, 1, 0, 0, 0, 5888, 5886, 1, 0, 0, 0, 5889, 5894, 3, 684, 342, - 0, 5890, 5891, 7, 41, 0, 0, 5891, 5893, 3, 684, 342, 0, 5892, 5890, 1, - 0, 0, 0, 5893, 5896, 1, 0, 0, 0, 5894, 5892, 1, 0, 0, 0, 5894, 5895, 1, - 0, 0, 0, 5895, 683, 1, 0, 0, 0, 5896, 5894, 1, 0, 0, 0, 5897, 5899, 7, - 40, 0, 0, 5898, 5897, 1, 0, 0, 0, 5898, 5899, 1, 0, 0, 0, 5899, 5900, 1, - 0, 0, 0, 5900, 5901, 3, 686, 343, 0, 5901, 685, 1, 0, 0, 0, 5902, 5903, - 5, 497, 0, 0, 5903, 5904, 3, 668, 334, 0, 5904, 5905, 5, 498, 0, 0, 5905, - 5924, 1, 0, 0, 0, 5906, 5907, 5, 497, 0, 0, 5907, 5908, 3, 582, 291, 0, - 5908, 5909, 5, 498, 0, 0, 5909, 5924, 1, 0, 0, 0, 5910, 5911, 5, 293, 0, - 0, 5911, 5912, 5, 497, 0, 0, 5912, 5913, 3, 582, 291, 0, 5913, 5914, 5, - 498, 0, 0, 5914, 5924, 1, 0, 0, 0, 5915, 5924, 3, 690, 345, 0, 5916, 5924, - 3, 688, 344, 0, 5917, 5924, 3, 692, 346, 0, 5918, 5924, 3, 314, 157, 0, - 5919, 5924, 3, 306, 153, 0, 5920, 5924, 3, 696, 348, 0, 5921, 5924, 3, - 698, 349, 0, 5922, 5924, 3, 704, 352, 0, 5923, 5902, 1, 0, 0, 0, 5923, - 5906, 1, 0, 0, 0, 5923, 5910, 1, 0, 0, 0, 5923, 5915, 1, 0, 0, 0, 5923, - 5916, 1, 0, 0, 0, 5923, 5917, 1, 0, 0, 0, 5923, 5918, 1, 0, 0, 0, 5923, - 5919, 1, 0, 0, 0, 5923, 5920, 1, 0, 0, 0, 5923, 5921, 1, 0, 0, 0, 5923, - 5922, 1, 0, 0, 0, 5924, 687, 1, 0, 0, 0, 5925, 5931, 5, 79, 0, 0, 5926, - 5927, 5, 80, 0, 0, 5927, 5928, 3, 668, 334, 0, 5928, 5929, 5, 81, 0, 0, - 5929, 5930, 3, 668, 334, 0, 5930, 5932, 1, 0, 0, 0, 5931, 5926, 1, 0, 0, - 0, 5932, 5933, 1, 0, 0, 0, 5933, 5931, 1, 0, 0, 0, 5933, 5934, 1, 0, 0, - 0, 5934, 5937, 1, 0, 0, 0, 5935, 5936, 5, 82, 0, 0, 5936, 5938, 3, 668, - 334, 0, 5937, 5935, 1, 0, 0, 0, 5937, 5938, 1, 0, 0, 0, 5938, 5939, 1, - 0, 0, 0, 5939, 5940, 5, 83, 0, 0, 5940, 689, 1, 0, 0, 0, 5941, 5942, 5, - 105, 0, 0, 5942, 5943, 3, 668, 334, 0, 5943, 5944, 5, 81, 0, 0, 5944, 5945, - 3, 668, 334, 0, 5945, 5946, 5, 82, 0, 0, 5946, 5947, 3, 668, 334, 0, 5947, - 691, 1, 0, 0, 0, 5948, 5949, 5, 284, 0, 0, 5949, 5950, 5, 497, 0, 0, 5950, - 5951, 3, 668, 334, 0, 5951, 5952, 5, 76, 0, 0, 5952, 5953, 3, 694, 347, - 0, 5953, 5954, 5, 498, 0, 0, 5954, 693, 1, 0, 0, 0, 5955, 5956, 7, 42, - 0, 0, 5956, 695, 1, 0, 0, 0, 5957, 5958, 7, 43, 0, 0, 5958, 5964, 5, 497, - 0, 0, 5959, 5961, 5, 84, 0, 0, 5960, 5959, 1, 0, 0, 0, 5960, 5961, 1, 0, - 0, 0, 5961, 5962, 1, 0, 0, 0, 5962, 5965, 3, 668, 334, 0, 5963, 5965, 5, - 489, 0, 0, 5964, 5960, 1, 0, 0, 0, 5964, 5963, 1, 0, 0, 0, 5965, 5966, - 1, 0, 0, 0, 5966, 5967, 5, 498, 0, 0, 5967, 697, 1, 0, 0, 0, 5968, 5969, - 3, 700, 350, 0, 5969, 5971, 5, 497, 0, 0, 5970, 5972, 3, 702, 351, 0, 5971, - 5970, 1, 0, 0, 0, 5971, 5972, 1, 0, 0, 0, 5972, 5973, 1, 0, 0, 0, 5973, - 5974, 5, 498, 0, 0, 5974, 699, 1, 0, 0, 0, 5975, 5976, 7, 44, 0, 0, 5976, - 701, 1, 0, 0, 0, 5977, 5982, 3, 668, 334, 0, 5978, 5979, 5, 495, 0, 0, - 5979, 5981, 3, 668, 334, 0, 5980, 5978, 1, 0, 0, 0, 5981, 5984, 1, 0, 0, - 0, 5982, 5980, 1, 0, 0, 0, 5982, 5983, 1, 0, 0, 0, 5983, 703, 1, 0, 0, - 0, 5984, 5982, 1, 0, 0, 0, 5985, 5998, 3, 712, 356, 0, 5986, 5991, 5, 514, - 0, 0, 5987, 5988, 5, 496, 0, 0, 5988, 5990, 3, 104, 52, 0, 5989, 5987, - 1, 0, 0, 0, 5990, 5993, 1, 0, 0, 0, 5991, 5989, 1, 0, 0, 0, 5991, 5992, - 1, 0, 0, 0, 5992, 5998, 1, 0, 0, 0, 5993, 5991, 1, 0, 0, 0, 5994, 5998, - 3, 708, 354, 0, 5995, 5998, 5, 515, 0, 0, 5996, 5998, 5, 510, 0, 0, 5997, - 5985, 1, 0, 0, 0, 5997, 5986, 1, 0, 0, 0, 5997, 5994, 1, 0, 0, 0, 5997, - 5995, 1, 0, 0, 0, 5997, 5996, 1, 0, 0, 0, 5998, 705, 1, 0, 0, 0, 5999, - 6004, 3, 668, 334, 0, 6000, 6001, 5, 495, 0, 0, 6001, 6003, 3, 668, 334, - 0, 6002, 6000, 1, 0, 0, 0, 6003, 6006, 1, 0, 0, 0, 6004, 6002, 1, 0, 0, - 0, 6004, 6005, 1, 0, 0, 0, 6005, 707, 1, 0, 0, 0, 6006, 6004, 1, 0, 0, - 0, 6007, 6012, 3, 710, 355, 0, 6008, 6009, 5, 496, 0, 0, 6009, 6011, 3, - 710, 355, 0, 6010, 6008, 1, 0, 0, 0, 6011, 6014, 1, 0, 0, 0, 6012, 6010, - 1, 0, 0, 0, 6012, 6013, 1, 0, 0, 0, 6013, 709, 1, 0, 0, 0, 6014, 6012, - 1, 0, 0, 0, 6015, 6019, 5, 515, 0, 0, 6016, 6019, 5, 517, 0, 0, 6017, 6019, - 3, 732, 366, 0, 6018, 6015, 1, 0, 0, 0, 6018, 6016, 1, 0, 0, 0, 6018, 6017, - 1, 0, 0, 0, 6019, 711, 1, 0, 0, 0, 6020, 6026, 5, 511, 0, 0, 6021, 6026, - 5, 513, 0, 0, 6022, 6026, 3, 716, 358, 0, 6023, 6026, 5, 288, 0, 0, 6024, - 6026, 5, 140, 0, 0, 6025, 6020, 1, 0, 0, 0, 6025, 6021, 1, 0, 0, 0, 6025, - 6022, 1, 0, 0, 0, 6025, 6023, 1, 0, 0, 0, 6025, 6024, 1, 0, 0, 0, 6026, - 713, 1, 0, 0, 0, 6027, 6036, 5, 501, 0, 0, 6028, 6033, 3, 712, 356, 0, - 6029, 6030, 5, 495, 0, 0, 6030, 6032, 3, 712, 356, 0, 6031, 6029, 1, 0, - 0, 0, 6032, 6035, 1, 0, 0, 0, 6033, 6031, 1, 0, 0, 0, 6033, 6034, 1, 0, - 0, 0, 6034, 6037, 1, 0, 0, 0, 6035, 6033, 1, 0, 0, 0, 6036, 6028, 1, 0, - 0, 0, 6036, 6037, 1, 0, 0, 0, 6037, 6038, 1, 0, 0, 0, 6038, 6039, 5, 502, - 0, 0, 6039, 715, 1, 0, 0, 0, 6040, 6041, 7, 45, 0, 0, 6041, 717, 1, 0, - 0, 0, 6042, 6043, 5, 2, 0, 0, 6043, 719, 1, 0, 0, 0, 6044, 6045, 5, 504, - 0, 0, 6045, 6051, 3, 722, 361, 0, 6046, 6047, 5, 497, 0, 0, 6047, 6048, - 3, 724, 362, 0, 6048, 6049, 5, 498, 0, 0, 6049, 6052, 1, 0, 0, 0, 6050, - 6052, 3, 728, 364, 0, 6051, 6046, 1, 0, 0, 0, 6051, 6050, 1, 0, 0, 0, 6051, - 6052, 1, 0, 0, 0, 6052, 721, 1, 0, 0, 0, 6053, 6054, 7, 46, 0, 0, 6054, - 723, 1, 0, 0, 0, 6055, 6060, 3, 726, 363, 0, 6056, 6057, 5, 495, 0, 0, - 6057, 6059, 3, 726, 363, 0, 6058, 6056, 1, 0, 0, 0, 6059, 6062, 1, 0, 0, - 0, 6060, 6058, 1, 0, 0, 0, 6060, 6061, 1, 0, 0, 0, 6061, 725, 1, 0, 0, - 0, 6062, 6060, 1, 0, 0, 0, 6063, 6064, 5, 515, 0, 0, 6064, 6065, 5, 503, - 0, 0, 6065, 6068, 3, 728, 364, 0, 6066, 6068, 3, 728, 364, 0, 6067, 6063, - 1, 0, 0, 0, 6067, 6066, 1, 0, 0, 0, 6068, 727, 1, 0, 0, 0, 6069, 6073, - 3, 712, 356, 0, 6070, 6073, 3, 668, 334, 0, 6071, 6073, 3, 708, 354, 0, - 6072, 6069, 1, 0, 0, 0, 6072, 6070, 1, 0, 0, 0, 6072, 6071, 1, 0, 0, 0, - 6073, 729, 1, 0, 0, 0, 6074, 6075, 7, 47, 0, 0, 6075, 731, 1, 0, 0, 0, - 6076, 6077, 7, 48, 0, 0, 6077, 733, 1, 0, 0, 0, 704, 737, 743, 748, 751, + 5740, 1, 0, 0, 0, 5740, 647, 1, 0, 0, 0, 5741, 5739, 1, 0, 0, 0, 5742, + 5743, 7, 38, 0, 0, 5743, 649, 1, 0, 0, 0, 5744, 5745, 5, 68, 0, 0, 5745, + 5746, 5, 341, 0, 0, 5746, 651, 1, 0, 0, 0, 5747, 5748, 5, 69, 0, 0, 5748, + 5749, 5, 514, 0, 0, 5749, 653, 1, 0, 0, 0, 5750, 5751, 5, 434, 0, 0, 5751, + 5752, 5, 56, 0, 0, 5752, 5753, 5, 518, 0, 0, 5753, 5754, 5, 514, 0, 0, + 5754, 5755, 5, 76, 0, 0, 5755, 5810, 5, 518, 0, 0, 5756, 5757, 5, 434, + 0, 0, 5757, 5758, 5, 57, 0, 0, 5758, 5810, 5, 518, 0, 0, 5759, 5760, 5, + 434, 0, 0, 5760, 5810, 5, 388, 0, 0, 5761, 5762, 5, 434, 0, 0, 5762, 5763, + 5, 518, 0, 0, 5763, 5764, 5, 65, 0, 0, 5764, 5810, 5, 518, 0, 0, 5765, + 5766, 5, 434, 0, 0, 5766, 5767, 5, 518, 0, 0, 5767, 5768, 5, 66, 0, 0, + 5768, 5810, 5, 518, 0, 0, 5769, 5770, 5, 434, 0, 0, 5770, 5771, 5, 518, + 0, 0, 5771, 5772, 5, 365, 0, 0, 5772, 5773, 5, 366, 0, 0, 5773, 5774, 5, + 361, 0, 0, 5774, 5787, 3, 710, 355, 0, 5775, 5776, 5, 368, 0, 0, 5776, + 5777, 5, 500, 0, 0, 5777, 5782, 3, 710, 355, 0, 5778, 5779, 5, 498, 0, + 0, 5779, 5781, 3, 710, 355, 0, 5780, 5778, 1, 0, 0, 0, 5781, 5784, 1, 0, + 0, 0, 5782, 5780, 1, 0, 0, 0, 5782, 5783, 1, 0, 0, 0, 5783, 5785, 1, 0, + 0, 0, 5784, 5782, 1, 0, 0, 0, 5785, 5786, 5, 501, 0, 0, 5786, 5788, 1, + 0, 0, 0, 5787, 5775, 1, 0, 0, 0, 5787, 5788, 1, 0, 0, 0, 5788, 5801, 1, + 0, 0, 0, 5789, 5790, 5, 369, 0, 0, 5790, 5791, 5, 500, 0, 0, 5791, 5796, + 3, 710, 355, 0, 5792, 5793, 5, 498, 0, 0, 5793, 5795, 3, 710, 355, 0, 5794, + 5792, 1, 0, 0, 0, 5795, 5798, 1, 0, 0, 0, 5796, 5794, 1, 0, 0, 0, 5796, + 5797, 1, 0, 0, 0, 5797, 5799, 1, 0, 0, 0, 5798, 5796, 1, 0, 0, 0, 5799, + 5800, 5, 501, 0, 0, 5800, 5802, 1, 0, 0, 0, 5801, 5789, 1, 0, 0, 0, 5801, + 5802, 1, 0, 0, 0, 5802, 5804, 1, 0, 0, 0, 5803, 5805, 5, 367, 0, 0, 5804, + 5803, 1, 0, 0, 0, 5804, 5805, 1, 0, 0, 0, 5805, 5810, 1, 0, 0, 0, 5806, + 5807, 5, 434, 0, 0, 5807, 5808, 5, 518, 0, 0, 5808, 5810, 3, 656, 328, + 0, 5809, 5750, 1, 0, 0, 0, 5809, 5756, 1, 0, 0, 0, 5809, 5759, 1, 0, 0, + 0, 5809, 5761, 1, 0, 0, 0, 5809, 5765, 1, 0, 0, 0, 5809, 5769, 1, 0, 0, + 0, 5809, 5806, 1, 0, 0, 0, 5810, 655, 1, 0, 0, 0, 5811, 5813, 8, 39, 0, + 0, 5812, 5811, 1, 0, 0, 0, 5813, 5814, 1, 0, 0, 0, 5814, 5812, 1, 0, 0, + 0, 5814, 5815, 1, 0, 0, 0, 5815, 657, 1, 0, 0, 0, 5816, 5817, 5, 360, 0, + 0, 5817, 5818, 5, 71, 0, 0, 5818, 5819, 3, 710, 355, 0, 5819, 5820, 5, + 357, 0, 0, 5820, 5821, 7, 26, 0, 0, 5821, 5822, 5, 361, 0, 0, 5822, 5823, + 3, 708, 354, 0, 5823, 5824, 5, 358, 0, 0, 5824, 5825, 5, 500, 0, 0, 5825, + 5830, 3, 660, 330, 0, 5826, 5827, 5, 498, 0, 0, 5827, 5829, 3, 660, 330, + 0, 5828, 5826, 1, 0, 0, 0, 5829, 5832, 1, 0, 0, 0, 5830, 5828, 1, 0, 0, + 0, 5830, 5831, 1, 0, 0, 0, 5831, 5833, 1, 0, 0, 0, 5832, 5830, 1, 0, 0, + 0, 5833, 5846, 5, 501, 0, 0, 5834, 5835, 5, 363, 0, 0, 5835, 5836, 5, 500, + 0, 0, 5836, 5841, 3, 662, 331, 0, 5837, 5838, 5, 498, 0, 0, 5838, 5840, + 3, 662, 331, 0, 5839, 5837, 1, 0, 0, 0, 5840, 5843, 1, 0, 0, 0, 5841, 5839, + 1, 0, 0, 0, 5841, 5842, 1, 0, 0, 0, 5842, 5844, 1, 0, 0, 0, 5843, 5841, + 1, 0, 0, 0, 5844, 5845, 5, 501, 0, 0, 5845, 5847, 1, 0, 0, 0, 5846, 5834, + 1, 0, 0, 0, 5846, 5847, 1, 0, 0, 0, 5847, 5850, 1, 0, 0, 0, 5848, 5849, + 5, 362, 0, 0, 5849, 5851, 5, 516, 0, 0, 5850, 5848, 1, 0, 0, 0, 5850, 5851, + 1, 0, 0, 0, 5851, 5854, 1, 0, 0, 0, 5852, 5853, 5, 75, 0, 0, 5853, 5855, + 5, 516, 0, 0, 5854, 5852, 1, 0, 0, 0, 5854, 5855, 1, 0, 0, 0, 5855, 659, + 1, 0, 0, 0, 5856, 5857, 3, 710, 355, 0, 5857, 5858, 5, 76, 0, 0, 5858, + 5859, 3, 710, 355, 0, 5859, 661, 1, 0, 0, 0, 5860, 5861, 3, 710, 355, 0, + 5861, 5862, 5, 426, 0, 0, 5862, 5863, 3, 710, 355, 0, 5863, 5864, 5, 93, + 0, 0, 5864, 5865, 3, 710, 355, 0, 5865, 5871, 1, 0, 0, 0, 5866, 5867, 3, + 710, 355, 0, 5867, 5868, 5, 426, 0, 0, 5868, 5869, 3, 710, 355, 0, 5869, + 5871, 1, 0, 0, 0, 5870, 5860, 1, 0, 0, 0, 5870, 5866, 1, 0, 0, 0, 5871, + 663, 1, 0, 0, 0, 5872, 5873, 5, 518, 0, 0, 5873, 665, 1, 0, 0, 0, 5874, + 5875, 5, 389, 0, 0, 5875, 5876, 5, 390, 0, 0, 5876, 5877, 3, 710, 355, + 0, 5877, 5878, 5, 76, 0, 0, 5878, 5879, 5, 502, 0, 0, 5879, 5880, 3, 390, + 195, 0, 5880, 5881, 5, 503, 0, 0, 5881, 667, 1, 0, 0, 0, 5882, 5883, 3, + 670, 335, 0, 5883, 669, 1, 0, 0, 0, 5884, 5889, 3, 672, 336, 0, 5885, 5886, + 5, 289, 0, 0, 5886, 5888, 3, 672, 336, 0, 5887, 5885, 1, 0, 0, 0, 5888, + 5891, 1, 0, 0, 0, 5889, 5887, 1, 0, 0, 0, 5889, 5890, 1, 0, 0, 0, 5890, + 671, 1, 0, 0, 0, 5891, 5889, 1, 0, 0, 0, 5892, 5897, 3, 674, 337, 0, 5893, + 5894, 5, 288, 0, 0, 5894, 5896, 3, 674, 337, 0, 5895, 5893, 1, 0, 0, 0, + 5896, 5899, 1, 0, 0, 0, 5897, 5895, 1, 0, 0, 0, 5897, 5898, 1, 0, 0, 0, + 5898, 673, 1, 0, 0, 0, 5899, 5897, 1, 0, 0, 0, 5900, 5902, 5, 290, 0, 0, + 5901, 5900, 1, 0, 0, 0, 5901, 5902, 1, 0, 0, 0, 5902, 5903, 1, 0, 0, 0, + 5903, 5904, 3, 676, 338, 0, 5904, 675, 1, 0, 0, 0, 5905, 5934, 3, 680, + 340, 0, 5906, 5907, 3, 678, 339, 0, 5907, 5908, 3, 680, 340, 0, 5908, 5935, + 1, 0, 0, 0, 5909, 5935, 5, 6, 0, 0, 5910, 5935, 5, 5, 0, 0, 5911, 5912, + 5, 292, 0, 0, 5912, 5915, 5, 500, 0, 0, 5913, 5916, 3, 582, 291, 0, 5914, + 5916, 3, 706, 353, 0, 5915, 5913, 1, 0, 0, 0, 5915, 5914, 1, 0, 0, 0, 5916, + 5917, 1, 0, 0, 0, 5917, 5918, 5, 501, 0, 0, 5918, 5935, 1, 0, 0, 0, 5919, + 5921, 5, 290, 0, 0, 5920, 5919, 1, 0, 0, 0, 5920, 5921, 1, 0, 0, 0, 5921, + 5922, 1, 0, 0, 0, 5922, 5923, 5, 293, 0, 0, 5923, 5924, 3, 680, 340, 0, + 5924, 5925, 5, 288, 0, 0, 5925, 5926, 3, 680, 340, 0, 5926, 5935, 1, 0, + 0, 0, 5927, 5929, 5, 290, 0, 0, 5928, 5927, 1, 0, 0, 0, 5928, 5929, 1, + 0, 0, 0, 5929, 5930, 1, 0, 0, 0, 5930, 5931, 5, 294, 0, 0, 5931, 5935, + 3, 680, 340, 0, 5932, 5933, 5, 295, 0, 0, 5933, 5935, 3, 680, 340, 0, 5934, + 5906, 1, 0, 0, 0, 5934, 5909, 1, 0, 0, 0, 5934, 5910, 1, 0, 0, 0, 5934, + 5911, 1, 0, 0, 0, 5934, 5920, 1, 0, 0, 0, 5934, 5928, 1, 0, 0, 0, 5934, + 5932, 1, 0, 0, 0, 5934, 5935, 1, 0, 0, 0, 5935, 677, 1, 0, 0, 0, 5936, + 5937, 7, 40, 0, 0, 5937, 679, 1, 0, 0, 0, 5938, 5943, 3, 682, 341, 0, 5939, + 5940, 7, 41, 0, 0, 5940, 5942, 3, 682, 341, 0, 5941, 5939, 1, 0, 0, 0, + 5942, 5945, 1, 0, 0, 0, 5943, 5941, 1, 0, 0, 0, 5943, 5944, 1, 0, 0, 0, + 5944, 681, 1, 0, 0, 0, 5945, 5943, 1, 0, 0, 0, 5946, 5951, 3, 684, 342, + 0, 5947, 5948, 7, 42, 0, 0, 5948, 5950, 3, 684, 342, 0, 5949, 5947, 1, + 0, 0, 0, 5950, 5953, 1, 0, 0, 0, 5951, 5949, 1, 0, 0, 0, 5951, 5952, 1, + 0, 0, 0, 5952, 683, 1, 0, 0, 0, 5953, 5951, 1, 0, 0, 0, 5954, 5956, 7, + 41, 0, 0, 5955, 5954, 1, 0, 0, 0, 5955, 5956, 1, 0, 0, 0, 5956, 5957, 1, + 0, 0, 0, 5957, 5958, 3, 686, 343, 0, 5958, 685, 1, 0, 0, 0, 5959, 5960, + 5, 500, 0, 0, 5960, 5961, 3, 668, 334, 0, 5961, 5962, 5, 501, 0, 0, 5962, + 5981, 1, 0, 0, 0, 5963, 5964, 5, 500, 0, 0, 5964, 5965, 3, 582, 291, 0, + 5965, 5966, 5, 501, 0, 0, 5966, 5981, 1, 0, 0, 0, 5967, 5968, 5, 296, 0, + 0, 5968, 5969, 5, 500, 0, 0, 5969, 5970, 3, 582, 291, 0, 5970, 5971, 5, + 501, 0, 0, 5971, 5981, 1, 0, 0, 0, 5972, 5981, 3, 690, 345, 0, 5973, 5981, + 3, 688, 344, 0, 5974, 5981, 3, 692, 346, 0, 5975, 5981, 3, 314, 157, 0, + 5976, 5981, 3, 306, 153, 0, 5977, 5981, 3, 696, 348, 0, 5978, 5981, 3, + 698, 349, 0, 5979, 5981, 3, 704, 352, 0, 5980, 5959, 1, 0, 0, 0, 5980, + 5963, 1, 0, 0, 0, 5980, 5967, 1, 0, 0, 0, 5980, 5972, 1, 0, 0, 0, 5980, + 5973, 1, 0, 0, 0, 5980, 5974, 1, 0, 0, 0, 5980, 5975, 1, 0, 0, 0, 5980, + 5976, 1, 0, 0, 0, 5980, 5977, 1, 0, 0, 0, 5980, 5978, 1, 0, 0, 0, 5980, + 5979, 1, 0, 0, 0, 5981, 687, 1, 0, 0, 0, 5982, 5988, 5, 79, 0, 0, 5983, + 5984, 5, 80, 0, 0, 5984, 5985, 3, 668, 334, 0, 5985, 5986, 5, 81, 0, 0, + 5986, 5987, 3, 668, 334, 0, 5987, 5989, 1, 0, 0, 0, 5988, 5983, 1, 0, 0, + 0, 5989, 5990, 1, 0, 0, 0, 5990, 5988, 1, 0, 0, 0, 5990, 5991, 1, 0, 0, + 0, 5991, 5994, 1, 0, 0, 0, 5992, 5993, 5, 82, 0, 0, 5993, 5995, 3, 668, + 334, 0, 5994, 5992, 1, 0, 0, 0, 5994, 5995, 1, 0, 0, 0, 5995, 5996, 1, + 0, 0, 0, 5996, 5997, 5, 83, 0, 0, 5997, 689, 1, 0, 0, 0, 5998, 5999, 5, + 105, 0, 0, 5999, 6000, 3, 668, 334, 0, 6000, 6001, 5, 81, 0, 0, 6001, 6002, + 3, 668, 334, 0, 6002, 6003, 5, 82, 0, 0, 6003, 6004, 3, 668, 334, 0, 6004, + 691, 1, 0, 0, 0, 6005, 6006, 5, 287, 0, 0, 6006, 6007, 5, 500, 0, 0, 6007, + 6008, 3, 668, 334, 0, 6008, 6009, 5, 76, 0, 0, 6009, 6010, 3, 694, 347, + 0, 6010, 6011, 5, 501, 0, 0, 6011, 693, 1, 0, 0, 0, 6012, 6013, 7, 43, + 0, 0, 6013, 695, 1, 0, 0, 0, 6014, 6015, 7, 44, 0, 0, 6015, 6021, 5, 500, + 0, 0, 6016, 6018, 5, 84, 0, 0, 6017, 6016, 1, 0, 0, 0, 6017, 6018, 1, 0, + 0, 0, 6018, 6019, 1, 0, 0, 0, 6019, 6022, 3, 668, 334, 0, 6020, 6022, 5, + 492, 0, 0, 6021, 6017, 1, 0, 0, 0, 6021, 6020, 1, 0, 0, 0, 6022, 6023, + 1, 0, 0, 0, 6023, 6024, 5, 501, 0, 0, 6024, 697, 1, 0, 0, 0, 6025, 6026, + 3, 700, 350, 0, 6026, 6028, 5, 500, 0, 0, 6027, 6029, 3, 702, 351, 0, 6028, + 6027, 1, 0, 0, 0, 6028, 6029, 1, 0, 0, 0, 6029, 6030, 1, 0, 0, 0, 6030, + 6031, 5, 501, 0, 0, 6031, 699, 1, 0, 0, 0, 6032, 6033, 7, 45, 0, 0, 6033, + 701, 1, 0, 0, 0, 6034, 6039, 3, 668, 334, 0, 6035, 6036, 5, 498, 0, 0, + 6036, 6038, 3, 668, 334, 0, 6037, 6035, 1, 0, 0, 0, 6038, 6041, 1, 0, 0, + 0, 6039, 6037, 1, 0, 0, 0, 6039, 6040, 1, 0, 0, 0, 6040, 703, 1, 0, 0, + 0, 6041, 6039, 1, 0, 0, 0, 6042, 6055, 3, 712, 356, 0, 6043, 6048, 5, 517, + 0, 0, 6044, 6045, 5, 499, 0, 0, 6045, 6047, 3, 104, 52, 0, 6046, 6044, + 1, 0, 0, 0, 6047, 6050, 1, 0, 0, 0, 6048, 6046, 1, 0, 0, 0, 6048, 6049, + 1, 0, 0, 0, 6049, 6055, 1, 0, 0, 0, 6050, 6048, 1, 0, 0, 0, 6051, 6055, + 3, 708, 354, 0, 6052, 6055, 5, 518, 0, 0, 6053, 6055, 5, 513, 0, 0, 6054, + 6042, 1, 0, 0, 0, 6054, 6043, 1, 0, 0, 0, 6054, 6051, 1, 0, 0, 0, 6054, + 6052, 1, 0, 0, 0, 6054, 6053, 1, 0, 0, 0, 6055, 705, 1, 0, 0, 0, 6056, + 6061, 3, 668, 334, 0, 6057, 6058, 5, 498, 0, 0, 6058, 6060, 3, 668, 334, + 0, 6059, 6057, 1, 0, 0, 0, 6060, 6063, 1, 0, 0, 0, 6061, 6059, 1, 0, 0, + 0, 6061, 6062, 1, 0, 0, 0, 6062, 707, 1, 0, 0, 0, 6063, 6061, 1, 0, 0, + 0, 6064, 6069, 3, 710, 355, 0, 6065, 6066, 5, 499, 0, 0, 6066, 6068, 3, + 710, 355, 0, 6067, 6065, 1, 0, 0, 0, 6068, 6071, 1, 0, 0, 0, 6069, 6067, + 1, 0, 0, 0, 6069, 6070, 1, 0, 0, 0, 6070, 709, 1, 0, 0, 0, 6071, 6069, + 1, 0, 0, 0, 6072, 6076, 5, 518, 0, 0, 6073, 6076, 5, 520, 0, 0, 6074, 6076, + 3, 732, 366, 0, 6075, 6072, 1, 0, 0, 0, 6075, 6073, 1, 0, 0, 0, 6075, 6074, + 1, 0, 0, 0, 6076, 711, 1, 0, 0, 0, 6077, 6083, 5, 514, 0, 0, 6078, 6083, + 5, 516, 0, 0, 6079, 6083, 3, 716, 358, 0, 6080, 6083, 5, 291, 0, 0, 6081, + 6083, 5, 140, 0, 0, 6082, 6077, 1, 0, 0, 0, 6082, 6078, 1, 0, 0, 0, 6082, + 6079, 1, 0, 0, 0, 6082, 6080, 1, 0, 0, 0, 6082, 6081, 1, 0, 0, 0, 6083, + 713, 1, 0, 0, 0, 6084, 6093, 5, 504, 0, 0, 6085, 6090, 3, 712, 356, 0, + 6086, 6087, 5, 498, 0, 0, 6087, 6089, 3, 712, 356, 0, 6088, 6086, 1, 0, + 0, 0, 6089, 6092, 1, 0, 0, 0, 6090, 6088, 1, 0, 0, 0, 6090, 6091, 1, 0, + 0, 0, 6091, 6094, 1, 0, 0, 0, 6092, 6090, 1, 0, 0, 0, 6093, 6085, 1, 0, + 0, 0, 6093, 6094, 1, 0, 0, 0, 6094, 6095, 1, 0, 0, 0, 6095, 6096, 5, 505, + 0, 0, 6096, 715, 1, 0, 0, 0, 6097, 6098, 7, 46, 0, 0, 6098, 717, 1, 0, + 0, 0, 6099, 6100, 5, 2, 0, 0, 6100, 719, 1, 0, 0, 0, 6101, 6102, 5, 507, + 0, 0, 6102, 6108, 3, 722, 361, 0, 6103, 6104, 5, 500, 0, 0, 6104, 6105, + 3, 724, 362, 0, 6105, 6106, 5, 501, 0, 0, 6106, 6109, 1, 0, 0, 0, 6107, + 6109, 3, 728, 364, 0, 6108, 6103, 1, 0, 0, 0, 6108, 6107, 1, 0, 0, 0, 6108, + 6109, 1, 0, 0, 0, 6109, 721, 1, 0, 0, 0, 6110, 6111, 7, 47, 0, 0, 6111, + 723, 1, 0, 0, 0, 6112, 6117, 3, 726, 363, 0, 6113, 6114, 5, 498, 0, 0, + 6114, 6116, 3, 726, 363, 0, 6115, 6113, 1, 0, 0, 0, 6116, 6119, 1, 0, 0, + 0, 6117, 6115, 1, 0, 0, 0, 6117, 6118, 1, 0, 0, 0, 6118, 725, 1, 0, 0, + 0, 6119, 6117, 1, 0, 0, 0, 6120, 6121, 5, 518, 0, 0, 6121, 6122, 5, 506, + 0, 0, 6122, 6125, 3, 728, 364, 0, 6123, 6125, 3, 728, 364, 0, 6124, 6120, + 1, 0, 0, 0, 6124, 6123, 1, 0, 0, 0, 6125, 727, 1, 0, 0, 0, 6126, 6130, + 3, 712, 356, 0, 6127, 6130, 3, 668, 334, 0, 6128, 6130, 3, 708, 354, 0, + 6129, 6126, 1, 0, 0, 0, 6129, 6127, 1, 0, 0, 0, 6129, 6128, 1, 0, 0, 0, + 6130, 729, 1, 0, 0, 0, 6131, 6132, 7, 48, 0, 0, 6132, 731, 1, 0, 0, 0, + 6133, 6134, 7, 49, 0, 0, 6134, 733, 1, 0, 0, 0, 714, 737, 743, 748, 751, 754, 763, 773, 782, 788, 790, 794, 797, 802, 808, 834, 842, 850, 858, 866, 878, 891, 904, 916, 927, 931, 939, 945, 962, 966, 970, 974, 978, 982, 986, - 988, 1001, 1006, 1020, 1029, 1042, 1058, 1067, 1090, 1104, 1108, 1117, - 1120, 1128, 1133, 1135, 1210, 1212, 1225, 1236, 1245, 1247, 1258, 1264, - 1272, 1283, 1285, 1293, 1295, 1314, 1322, 1338, 1362, 1378, 1462, 1471, - 1479, 1493, 1500, 1508, 1522, 1535, 1539, 1545, 1548, 1554, 1557, 1563, - 1567, 1571, 1577, 1582, 1585, 1587, 1593, 1597, 1601, 1604, 1608, 1613, - 1620, 1627, 1631, 1636, 1645, 1651, 1656, 1662, 1667, 1672, 1677, 1681, - 1684, 1686, 1692, 1724, 1732, 1753, 1756, 1767, 1772, 1777, 1786, 1791, - 1803, 1832, 1842, 1873, 1887, 1894, 1907, 1914, 1922, 1927, 1932, 1938, - 1946, 1953, 1957, 1961, 1964, 1981, 1986, 1995, 1998, 2003, 2010, 2018, - 2032, 2068, 2083, 2090, 2098, 2105, 2109, 2112, 2118, 2121, 2128, 2132, - 2135, 2140, 2147, 2154, 2170, 2175, 2183, 2189, 2194, 2200, 2205, 2211, - 2216, 2221, 2226, 2231, 2236, 2241, 2246, 2251, 2256, 2261, 2266, 2271, - 2276, 2281, 2286, 2291, 2296, 2301, 2306, 2311, 2316, 2321, 2326, 2331, - 2336, 2341, 2346, 2351, 2356, 2361, 2366, 2371, 2376, 2381, 2386, 2391, - 2396, 2401, 2406, 2411, 2416, 2421, 2426, 2431, 2436, 2441, 2446, 2451, - 2456, 2461, 2466, 2471, 2476, 2481, 2486, 2491, 2496, 2501, 2506, 2511, - 2516, 2521, 2526, 2531, 2536, 2538, 2545, 2550, 2557, 2563, 2566, 2569, - 2575, 2578, 2584, 2588, 2594, 2597, 2600, 2605, 2610, 2619, 2621, 2629, - 2632, 2636, 2640, 2643, 2655, 2677, 2690, 2695, 2705, 2715, 2720, 2728, - 2735, 2739, 2743, 2754, 2761, 2775, 2782, 2786, 2790, 2798, 2802, 2806, - 2816, 2818, 2822, 2825, 2830, 2833, 2836, 2840, 2848, 2852, 2859, 2864, - 2874, 2877, 2881, 2885, 2892, 2899, 2905, 2919, 2926, 2941, 2945, 2952, - 2957, 2961, 2964, 2967, 2971, 2977, 2995, 3000, 3008, 3027, 3031, 3038, - 3041, 3109, 3116, 3121, 3151, 3174, 3185, 3192, 3209, 3212, 3221, 3231, - 3243, 3255, 3266, 3269, 3282, 3290, 3296, 3302, 3310, 3317, 3325, 3332, - 3339, 3351, 3354, 3366, 3390, 3398, 3406, 3426, 3430, 3432, 3440, 3445, - 3448, 3458, 3553, 3563, 3571, 3581, 3585, 3587, 3595, 3598, 3603, 3608, - 3614, 3618, 3622, 3628, 3634, 3639, 3644, 3649, 3654, 3662, 3673, 3678, - 3684, 3688, 3697, 3699, 3701, 3709, 3745, 3748, 3751, 3759, 3766, 3777, - 3786, 3792, 3800, 3809, 3817, 3823, 3827, 3836, 3848, 3854, 3856, 3869, - 3873, 3885, 3890, 3892, 3907, 3912, 3921, 3930, 3933, 3944, 3967, 3972, - 3977, 3986, 4013, 4020, 4035, 4054, 4059, 4070, 4075, 4081, 4085, 4093, - 4096, 4112, 4120, 4123, 4130, 4138, 4143, 4146, 4149, 4159, 4162, 4169, - 4172, 4180, 4198, 4204, 4207, 4212, 4217, 4227, 4246, 4254, 4266, 4273, - 4277, 4291, 4295, 4299, 4304, 4309, 4314, 4321, 4324, 4329, 4359, 4367, - 4372, 4377, 4381, 4386, 4390, 4396, 4398, 4405, 4407, 4416, 4421, 4426, - 4430, 4435, 4439, 4445, 4447, 4454, 4456, 4458, 4463, 4469, 4475, 4481, - 4485, 4491, 4493, 4505, 4514, 4519, 4525, 4527, 4534, 4536, 4547, 4556, - 4561, 4565, 4569, 4575, 4577, 4589, 4594, 4607, 4613, 4617, 4624, 4631, - 4633, 4644, 4652, 4657, 4665, 4674, 4677, 4689, 4695, 4724, 4726, 4733, - 4735, 4742, 4744, 4751, 4753, 4760, 4762, 4769, 4771, 4778, 4780, 4787, - 4789, 4796, 4798, 4806, 4808, 4815, 4817, 4824, 4826, 4834, 4836, 4844, - 4846, 4854, 4856, 4884, 4891, 4907, 4912, 4923, 4925, 4958, 4960, 4968, - 4970, 4978, 4980, 4988, 4990, 4998, 5000, 5009, 5019, 5025, 5030, 5032, - 5035, 5044, 5046, 5055, 5057, 5065, 5067, 5079, 5081, 5089, 5091, 5100, - 5102, 5104, 5112, 5118, 5120, 5125, 5127, 5137, 5147, 5155, 5163, 5212, - 5242, 5251, 5300, 5304, 5312, 5315, 5320, 5325, 5331, 5333, 5337, 5341, - 5345, 5348, 5355, 5358, 5362, 5369, 5374, 5379, 5382, 5385, 5388, 5391, - 5394, 5398, 5401, 5404, 5408, 5411, 5413, 5417, 5427, 5430, 5435, 5440, - 5442, 5446, 5453, 5458, 5461, 5467, 5470, 5472, 5475, 5481, 5484, 5489, - 5492, 5494, 5506, 5510, 5514, 5519, 5522, 5541, 5546, 5553, 5560, 5566, - 5568, 5586, 5597, 5612, 5614, 5622, 5625, 5628, 5631, 5634, 5650, 5654, - 5659, 5667, 5675, 5682, 5725, 5730, 5739, 5744, 5747, 5752, 5757, 5773, - 5784, 5789, 5793, 5797, 5813, 5832, 5840, 5844, 5858, 5863, 5871, 5877, - 5886, 5894, 5898, 5923, 5933, 5937, 5960, 5964, 5971, 5982, 5991, 5997, - 6004, 6012, 6018, 6025, 6033, 6036, 6051, 6060, 6067, 6072, + 988, 1001, 1006, 1020, 1029, 1045, 1061, 1070, 1093, 1107, 1111, 1120, + 1123, 1131, 1136, 1138, 1213, 1215, 1228, 1239, 1248, 1250, 1261, 1267, + 1275, 1286, 1288, 1296, 1298, 1317, 1325, 1341, 1365, 1381, 1465, 1474, + 1482, 1496, 1503, 1511, 1525, 1538, 1542, 1548, 1551, 1557, 1560, 1566, + 1570, 1574, 1580, 1585, 1588, 1590, 1596, 1600, 1604, 1607, 1611, 1616, + 1623, 1630, 1634, 1639, 1648, 1655, 1660, 1666, 1671, 1676, 1681, 1685, + 1688, 1690, 1696, 1728, 1736, 1757, 1760, 1771, 1776, 1781, 1790, 1803, + 1808, 1813, 1817, 1822, 1827, 1834, 1863, 1873, 1904, 1918, 1925, 1938, + 1945, 1953, 1958, 1963, 1969, 1977, 1984, 1988, 1992, 1995, 2014, 2019, + 2028, 2031, 2036, 2043, 2051, 2065, 2101, 2116, 2123, 2131, 2138, 2142, + 2145, 2151, 2154, 2161, 2165, 2168, 2173, 2180, 2187, 2203, 2208, 2216, + 2222, 2227, 2233, 2238, 2244, 2249, 2254, 2259, 2264, 2269, 2274, 2279, + 2284, 2289, 2294, 2299, 2304, 2309, 2314, 2319, 2324, 2329, 2334, 2339, + 2344, 2349, 2354, 2359, 2364, 2369, 2374, 2379, 2384, 2389, 2394, 2399, + 2404, 2409, 2414, 2419, 2424, 2429, 2434, 2439, 2444, 2449, 2454, 2459, + 2464, 2469, 2474, 2479, 2484, 2489, 2494, 2499, 2504, 2509, 2514, 2519, + 2524, 2529, 2534, 2539, 2544, 2549, 2554, 2559, 2564, 2569, 2571, 2578, + 2583, 2590, 2596, 2599, 2602, 2608, 2611, 2617, 2621, 2627, 2630, 2633, + 2638, 2643, 2652, 2654, 2662, 2665, 2669, 2673, 2676, 2688, 2710, 2723, + 2728, 2738, 2748, 2753, 2761, 2768, 2772, 2776, 2787, 2794, 2808, 2815, + 2819, 2823, 2831, 2835, 2839, 2849, 2851, 2855, 2858, 2863, 2866, 2869, + 2873, 2881, 2885, 2892, 2897, 2907, 2910, 2914, 2918, 2925, 2932, 2938, + 2952, 2959, 2974, 2978, 2985, 2990, 2994, 2997, 3000, 3004, 3010, 3028, + 3033, 3041, 3060, 3064, 3071, 3074, 3142, 3149, 3154, 3184, 3207, 3218, + 3225, 3242, 3245, 3254, 3264, 3276, 3288, 3299, 3302, 3315, 3323, 3329, + 3335, 3343, 3350, 3358, 3365, 3372, 3384, 3387, 3399, 3423, 3431, 3439, + 3459, 3463, 3465, 3473, 3478, 3481, 3487, 3490, 3496, 3499, 3501, 3511, + 3610, 3620, 3628, 3638, 3642, 3644, 3652, 3655, 3660, 3665, 3671, 3675, + 3679, 3685, 3691, 3696, 3701, 3706, 3711, 3719, 3730, 3735, 3741, 3745, + 3754, 3756, 3758, 3766, 3802, 3805, 3808, 3816, 3823, 3834, 3843, 3849, + 3857, 3866, 3874, 3880, 3884, 3893, 3905, 3911, 3913, 3926, 3930, 3942, + 3947, 3949, 3964, 3969, 3978, 3987, 3990, 4001, 4024, 4029, 4034, 4043, + 4070, 4077, 4092, 4111, 4116, 4127, 4132, 4138, 4142, 4150, 4153, 4169, + 4177, 4180, 4187, 4195, 4200, 4203, 4206, 4216, 4219, 4226, 4229, 4237, + 4255, 4261, 4264, 4269, 4274, 4284, 4303, 4311, 4323, 4330, 4334, 4348, + 4352, 4356, 4361, 4366, 4371, 4378, 4381, 4386, 4416, 4424, 4429, 4434, + 4438, 4443, 4447, 4453, 4455, 4462, 4464, 4473, 4478, 4483, 4487, 4492, + 4496, 4502, 4504, 4511, 4513, 4515, 4520, 4526, 4532, 4538, 4542, 4548, + 4550, 4562, 4571, 4576, 4582, 4584, 4591, 4593, 4604, 4613, 4618, 4622, + 4626, 4632, 4634, 4646, 4651, 4664, 4670, 4674, 4681, 4688, 4690, 4701, + 4709, 4714, 4722, 4731, 4734, 4746, 4752, 4781, 4783, 4790, 4792, 4799, + 4801, 4808, 4810, 4817, 4819, 4826, 4828, 4835, 4837, 4844, 4846, 4853, + 4855, 4863, 4865, 4872, 4874, 4881, 4883, 4891, 4893, 4901, 4903, 4911, + 4913, 4941, 4948, 4964, 4969, 4980, 4982, 5015, 5017, 5025, 5027, 5035, + 5037, 5045, 5047, 5055, 5057, 5066, 5076, 5082, 5087, 5089, 5092, 5101, + 5103, 5112, 5114, 5122, 5124, 5136, 5138, 5146, 5148, 5157, 5159, 5161, + 5169, 5175, 5177, 5182, 5184, 5194, 5204, 5212, 5220, 5269, 5299, 5308, + 5357, 5361, 5369, 5372, 5377, 5382, 5388, 5390, 5394, 5398, 5402, 5405, + 5412, 5415, 5419, 5426, 5431, 5436, 5439, 5442, 5445, 5448, 5451, 5455, + 5458, 5461, 5465, 5468, 5470, 5474, 5484, 5487, 5492, 5497, 5499, 5503, + 5510, 5515, 5518, 5524, 5527, 5529, 5532, 5538, 5541, 5546, 5549, 5551, + 5563, 5567, 5571, 5576, 5579, 5598, 5603, 5610, 5617, 5623, 5625, 5643, + 5654, 5669, 5671, 5679, 5682, 5685, 5688, 5691, 5707, 5711, 5716, 5724, + 5732, 5739, 5782, 5787, 5796, 5801, 5804, 5809, 5814, 5830, 5841, 5846, + 5850, 5854, 5870, 5889, 5897, 5901, 5915, 5920, 5928, 5934, 5943, 5951, + 5955, 5980, 5990, 5994, 6017, 6021, 6028, 6039, 6048, 6054, 6061, 6069, + 6075, 6082, 6090, 6093, 6108, 6117, 6124, 6129, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -3653,343 +3688,346 @@ const ( MDLParserFILEINPUT = 178 MDLParserIMAGEINPUT = 179 MDLParserCUSTOMWIDGET = 180 - MDLParserTEXTFILTER = 181 - MDLParserNUMBERFILTER = 182 - MDLParserDROPDOWNFILTER = 183 - MDLParserDATEFILTER = 184 - MDLParserFILTER = 185 - MDLParserWIDGET = 186 - MDLParserWIDGETS = 187 - MDLParserCAPTION = 188 - MDLParserICON = 189 - MDLParserTOOLTIP = 190 - MDLParserDATASOURCE = 191 - MDLParserSOURCE_KW = 192 - MDLParserSELECTION = 193 - MDLParserFOOTER = 194 - MDLParserHEADER = 195 - MDLParserCONTENT = 196 - MDLParserRENDERMODE = 197 - MDLParserBINDS = 198 - MDLParserATTR = 199 - MDLParserCONTENTPARAMS = 200 - MDLParserCAPTIONPARAMS = 201 - MDLParserPARAMS = 202 - MDLParserVARIABLES_KW = 203 - MDLParserDESKTOPWIDTH = 204 - MDLParserTABLETWIDTH = 205 - MDLParserPHONEWIDTH = 206 - MDLParserCLASS = 207 - MDLParserSTYLE = 208 - MDLParserBUTTONSTYLE = 209 - MDLParserDESIGN = 210 - MDLParserPROPERTIES = 211 - MDLParserDESIGNPROPERTIES = 212 - MDLParserSTYLING = 213 - MDLParserCLEAR = 214 - MDLParserWIDTH = 215 - MDLParserHEIGHT = 216 - MDLParserAUTOFILL = 217 - MDLParserURL = 218 - MDLParserFOLDER = 219 - MDLParserPASSING = 220 - MDLParserCONTEXT = 221 - MDLParserEDITABLE = 222 - MDLParserREADONLY = 223 - MDLParserATTRIBUTES = 224 - MDLParserFILTERTYPE = 225 - MDLParserIMAGE = 226 - MDLParserCOLLECTION = 227 - MDLParserSTATICIMAGE = 228 - MDLParserDYNAMICIMAGE = 229 - MDLParserCUSTOMCONTAINER = 230 - MDLParserGROUPBOX = 231 - MDLParserVISIBLE = 232 - MDLParserSAVECHANGES = 233 - MDLParserSAVE_CHANGES = 234 - MDLParserCANCEL_CHANGES = 235 - MDLParserCLOSE_PAGE = 236 - MDLParserSHOW_PAGE = 237 - MDLParserDELETE_ACTION = 238 - MDLParserDELETE_OBJECT = 239 - MDLParserCREATE_OBJECT = 240 - MDLParserCALL_MICROFLOW = 241 - MDLParserCALL_NANOFLOW = 242 - MDLParserOPEN_LINK = 243 - MDLParserSIGN_OUT = 244 - MDLParserCANCEL = 245 - MDLParserPRIMARY = 246 - MDLParserSUCCESS = 247 - MDLParserDANGER = 248 - MDLParserWARNING_STYLE = 249 - MDLParserINFO_STYLE = 250 - MDLParserTEMPLATE = 251 - MDLParserONCLICK = 252 - MDLParserONCHANGE = 253 - MDLParserTABINDEX = 254 - MDLParserH1 = 255 - MDLParserH2 = 256 - MDLParserH3 = 257 - MDLParserH4 = 258 - MDLParserH5 = 259 - MDLParserH6 = 260 - MDLParserPARAGRAPH = 261 - MDLParserSTRING_TYPE = 262 - MDLParserINTEGER_TYPE = 263 - MDLParserLONG_TYPE = 264 - MDLParserDECIMAL_TYPE = 265 - MDLParserBOOLEAN_TYPE = 266 - MDLParserDATETIME_TYPE = 267 - MDLParserDATE_TYPE = 268 - MDLParserAUTONUMBER_TYPE = 269 - MDLParserBINARY_TYPE = 270 - MDLParserHASHEDSTRING_TYPE = 271 - MDLParserCURRENCY_TYPE = 272 - MDLParserFLOAT_TYPE = 273 - MDLParserSTRINGTEMPLATE_TYPE = 274 - MDLParserENUM_TYPE = 275 - MDLParserCOUNT = 276 - MDLParserSUM = 277 - MDLParserAVG = 278 - MDLParserMIN = 279 - MDLParserMAX = 280 - MDLParserLENGTH = 281 - MDLParserTRIM = 282 - MDLParserCOALESCE = 283 - MDLParserCAST = 284 - MDLParserAND = 285 - MDLParserOR = 286 - MDLParserNOT = 287 - MDLParserNULL = 288 - MDLParserIN = 289 - MDLParserBETWEEN = 290 - MDLParserLIKE = 291 - MDLParserMATCH = 292 - MDLParserEXISTS = 293 - MDLParserUNIQUE = 294 - MDLParserDEFAULT = 295 - MDLParserTRUE = 296 - MDLParserFALSE = 297 - MDLParserVALIDATION = 298 - MDLParserFEEDBACK = 299 - MDLParserRULE = 300 - MDLParserREQUIRED = 301 - MDLParserERROR = 302 - MDLParserRAISE = 303 - MDLParserRANGE = 304 - MDLParserREGEX = 305 - MDLParserPATTERN = 306 - MDLParserEXPRESSION = 307 - MDLParserXPATH = 308 - MDLParserCONSTRAINT = 309 - MDLParserCALCULATED = 310 - MDLParserREST = 311 - MDLParserSERVICE = 312 - MDLParserSERVICES = 313 - MDLParserODATA = 314 - MDLParserBASE = 315 - MDLParserAUTH = 316 - MDLParserAUTHENTICATION = 317 - MDLParserBASIC = 318 - MDLParserNOTHING = 319 - MDLParserOAUTH = 320 - MDLParserOPERATION = 321 - MDLParserMETHOD = 322 - MDLParserPATH = 323 - MDLParserTIMEOUT = 324 - MDLParserBODY = 325 - MDLParserRESPONSE = 326 - MDLParserREQUEST = 327 - MDLParserSEND = 328 - MDLParserJSON = 329 - MDLParserXML = 330 - MDLParserSTATUS = 331 - MDLParserFILE_KW = 332 - MDLParserVERSION = 333 - MDLParserGET = 334 - MDLParserPOST = 335 - MDLParserPUT = 336 - MDLParserPATCH = 337 - MDLParserAPI = 338 - MDLParserCLIENT = 339 - MDLParserCLIENTS = 340 - MDLParserPUBLISH = 341 - MDLParserPUBLISHED = 342 - MDLParserEXPOSE = 343 - MDLParserCONTRACT = 344 - MDLParserNAMESPACE_KW = 345 - MDLParserSESSION = 346 - MDLParserGUEST = 347 - MDLParserPAGING = 348 - MDLParserNOT_SUPPORTED = 349 - MDLParserUSERNAME = 350 - MDLParserPASSWORD = 351 - MDLParserCONNECTION = 352 - MDLParserDATABASE = 353 - MDLParserQUERY = 354 - MDLParserMAP = 355 - MDLParserMAPPING = 356 - MDLParserIMPORT = 357 - MDLParserINTO = 358 - MDLParserBATCH = 359 - MDLParserLINK = 360 - MDLParserEXPORT = 361 - MDLParserGENERATE = 362 - MDLParserCONNECTOR = 363 - MDLParserEXEC = 364 - MDLParserTABLES = 365 - MDLParserVIEWS = 366 - MDLParserEXPOSED = 367 - MDLParserPARAMETER = 368 - MDLParserPARAMETERS = 369 - MDLParserHEADERS = 370 - MDLParserNAVIGATION = 371 - MDLParserMENU_KW = 372 - MDLParserHOMES = 373 - MDLParserHOME = 374 - MDLParserLOGIN = 375 - MDLParserFOUND = 376 - MDLParserMODULES = 377 - MDLParserENTITIES = 378 - MDLParserASSOCIATIONS = 379 - MDLParserMICROFLOWS = 380 - MDLParserNANOFLOWS = 381 - MDLParserWORKFLOWS = 382 - MDLParserENUMERATIONS = 383 - MDLParserCONSTANTS = 384 - MDLParserCONNECTIONS = 385 - MDLParserDEFINE = 386 - MDLParserFRAGMENT = 387 - MDLParserFRAGMENTS = 388 - MDLParserINSERT = 389 - MDLParserBEFORE = 390 - MDLParserAFTER = 391 - MDLParserUPDATE = 392 - MDLParserREFRESH = 393 - MDLParserCHECK = 394 - MDLParserBUILD = 395 - MDLParserEXECUTE = 396 - MDLParserSCRIPT = 397 - MDLParserLINT = 398 - MDLParserRULES = 399 - MDLParserTEXT = 400 - MDLParserSARIF = 401 - MDLParserMESSAGE = 402 - MDLParserMESSAGES = 403 - MDLParserCHANNELS = 404 - MDLParserCOMMENT = 405 - MDLParserCATALOG = 406 - MDLParserFORCE = 407 - MDLParserBACKGROUND = 408 - MDLParserCALLERS = 409 - MDLParserCALLEES = 410 - MDLParserREFERENCES = 411 - MDLParserTRANSITIVE = 412 - MDLParserIMPACT = 413 - MDLParserDEPTH = 414 - MDLParserSTRUCTURE = 415 - MDLParserTYPE = 416 - MDLParserVALUE = 417 - MDLParserVALUES = 418 - MDLParserSINGLE = 419 - MDLParserMULTIPLE = 420 - MDLParserNONE = 421 - MDLParserBOTH = 422 - MDLParserTO = 423 - MDLParserOF = 424 - MDLParserOVER = 425 - MDLParserFOR = 426 - MDLParserREPLACE = 427 - MDLParserMEMBERS = 428 - MDLParserATTRIBUTE_NAME = 429 - MDLParserFORMAT = 430 - MDLParserSQL = 431 - MDLParserWITHOUT = 432 - MDLParserDRY = 433 - MDLParserRUN = 434 - MDLParserWIDGETTYPE = 435 - MDLParserV3 = 436 - MDLParserBUSINESS = 437 - MDLParserEVENT = 438 - MDLParserSUBSCRIBE = 439 - MDLParserSETTINGS = 440 - MDLParserCONFIGURATION = 441 - MDLParserSECURITY = 442 - MDLParserROLE = 443 - MDLParserROLES = 444 - MDLParserGRANT = 445 - MDLParserREVOKE = 446 - MDLParserPRODUCTION = 447 - MDLParserPROTOTYPE = 448 - MDLParserMANAGE = 449 - MDLParserDEMO = 450 - MDLParserMATRIX = 451 - MDLParserAPPLY = 452 - MDLParserACCESS = 453 - MDLParserLEVEL = 454 - MDLParserUSER = 455 - MDLParserTASK = 456 - MDLParserDECISION = 457 - MDLParserSPLIT = 458 - MDLParserOUTCOMES = 459 - MDLParserTARGETING = 460 - MDLParserNOTIFICATION = 461 - MDLParserTIMER = 462 - MDLParserJUMP = 463 - MDLParserDUE = 464 - MDLParserOVERVIEW = 465 - MDLParserDATE = 466 - MDLParserPARALLEL = 467 - MDLParserWAIT = 468 - MDLParserANNOTATION = 469 - MDLParserBOUNDARY = 470 - MDLParserINTERRUPTING = 471 - MDLParserNON = 472 - MDLParserMULTI = 473 - MDLParserBY = 474 - MDLParserREAD = 475 - MDLParserWRITE = 476 - MDLParserDESCRIPTION = 477 - MDLParserDISPLAY = 478 - MDLParserOFF = 479 - MDLParserUSERS = 480 - MDLParserNOT_EQUALS = 481 - MDLParserLESS_THAN_OR_EQUAL = 482 - MDLParserGREATER_THAN_OR_EQUAL = 483 - MDLParserEQUALS = 484 - MDLParserLESS_THAN = 485 - MDLParserGREATER_THAN = 486 - MDLParserPLUS = 487 - MDLParserMINUS = 488 - MDLParserSTAR = 489 - MDLParserSLASH = 490 - MDLParserPERCENT = 491 - MDLParserMOD = 492 - MDLParserDIV = 493 - MDLParserSEMICOLON = 494 - MDLParserCOMMA = 495 - MDLParserDOT = 496 - MDLParserLPAREN = 497 - MDLParserRPAREN = 498 - MDLParserLBRACE = 499 - MDLParserRBRACE = 500 - MDLParserLBRACKET = 501 - MDLParserRBRACKET = 502 - MDLParserCOLON = 503 - MDLParserAT = 504 - MDLParserPIPE = 505 - MDLParserDOUBLE_COLON = 506 - MDLParserARROW = 507 - MDLParserQUESTION = 508 - MDLParserHASH = 509 - MDLParserMENDIX_TOKEN = 510 - MDLParserSTRING_LITERAL = 511 - MDLParserDOLLAR_STRING = 512 - MDLParserNUMBER_LITERAL = 513 - MDLParserVARIABLE = 514 - MDLParserIDENTIFIER = 515 - MDLParserHYPHENATED_ID = 516 - MDLParserQUOTED_IDENTIFIER = 517 + MDLParserPLUGGABLEWIDGET = 181 + MDLParserTEXTFILTER = 182 + MDLParserNUMBERFILTER = 183 + MDLParserDROPDOWNFILTER = 184 + MDLParserDATEFILTER = 185 + MDLParserFILTER = 186 + MDLParserWIDGET = 187 + MDLParserWIDGETS = 188 + MDLParserCAPTION = 189 + MDLParserICON = 190 + MDLParserTOOLTIP = 191 + MDLParserDATASOURCE = 192 + MDLParserSOURCE_KW = 193 + MDLParserSELECTION = 194 + MDLParserFOOTER = 195 + MDLParserHEADER = 196 + MDLParserCONTENT = 197 + MDLParserRENDERMODE = 198 + MDLParserBINDS = 199 + MDLParserATTR = 200 + MDLParserCONTENTPARAMS = 201 + MDLParserCAPTIONPARAMS = 202 + MDLParserPARAMS = 203 + MDLParserVARIABLES_KW = 204 + MDLParserDESKTOPWIDTH = 205 + MDLParserTABLETWIDTH = 206 + MDLParserPHONEWIDTH = 207 + MDLParserCLASS = 208 + MDLParserSTYLE = 209 + MDLParserBUTTONSTYLE = 210 + MDLParserDESIGN = 211 + MDLParserPROPERTIES = 212 + MDLParserDESIGNPROPERTIES = 213 + MDLParserSTYLING = 214 + MDLParserCLEAR = 215 + MDLParserWIDTH = 216 + MDLParserHEIGHT = 217 + MDLParserAUTOFILL = 218 + MDLParserURL = 219 + MDLParserFOLDER = 220 + MDLParserPASSING = 221 + MDLParserCONTEXT = 222 + MDLParserEDITABLE = 223 + MDLParserREADONLY = 224 + MDLParserATTRIBUTES = 225 + MDLParserFILTERTYPE = 226 + MDLParserIMAGE = 227 + MDLParserCOLLECTION = 228 + MDLParserSTATICIMAGE = 229 + MDLParserDYNAMICIMAGE = 230 + MDLParserCUSTOMCONTAINER = 231 + MDLParserTABCONTAINER = 232 + MDLParserTABPAGE = 233 + MDLParserGROUPBOX = 234 + MDLParserVISIBLE = 235 + MDLParserSAVECHANGES = 236 + MDLParserSAVE_CHANGES = 237 + MDLParserCANCEL_CHANGES = 238 + MDLParserCLOSE_PAGE = 239 + MDLParserSHOW_PAGE = 240 + MDLParserDELETE_ACTION = 241 + MDLParserDELETE_OBJECT = 242 + MDLParserCREATE_OBJECT = 243 + MDLParserCALL_MICROFLOW = 244 + MDLParserCALL_NANOFLOW = 245 + MDLParserOPEN_LINK = 246 + MDLParserSIGN_OUT = 247 + MDLParserCANCEL = 248 + MDLParserPRIMARY = 249 + MDLParserSUCCESS = 250 + MDLParserDANGER = 251 + MDLParserWARNING_STYLE = 252 + MDLParserINFO_STYLE = 253 + MDLParserTEMPLATE = 254 + MDLParserONCLICK = 255 + MDLParserONCHANGE = 256 + MDLParserTABINDEX = 257 + MDLParserH1 = 258 + MDLParserH2 = 259 + MDLParserH3 = 260 + MDLParserH4 = 261 + MDLParserH5 = 262 + MDLParserH6 = 263 + MDLParserPARAGRAPH = 264 + MDLParserSTRING_TYPE = 265 + MDLParserINTEGER_TYPE = 266 + MDLParserLONG_TYPE = 267 + MDLParserDECIMAL_TYPE = 268 + MDLParserBOOLEAN_TYPE = 269 + MDLParserDATETIME_TYPE = 270 + MDLParserDATE_TYPE = 271 + MDLParserAUTONUMBER_TYPE = 272 + MDLParserBINARY_TYPE = 273 + MDLParserHASHEDSTRING_TYPE = 274 + MDLParserCURRENCY_TYPE = 275 + MDLParserFLOAT_TYPE = 276 + MDLParserSTRINGTEMPLATE_TYPE = 277 + MDLParserENUM_TYPE = 278 + MDLParserCOUNT = 279 + MDLParserSUM = 280 + MDLParserAVG = 281 + MDLParserMIN = 282 + MDLParserMAX = 283 + MDLParserLENGTH = 284 + MDLParserTRIM = 285 + MDLParserCOALESCE = 286 + MDLParserCAST = 287 + MDLParserAND = 288 + MDLParserOR = 289 + MDLParserNOT = 290 + MDLParserNULL = 291 + MDLParserIN = 292 + MDLParserBETWEEN = 293 + MDLParserLIKE = 294 + MDLParserMATCH = 295 + MDLParserEXISTS = 296 + MDLParserUNIQUE = 297 + MDLParserDEFAULT = 298 + MDLParserTRUE = 299 + MDLParserFALSE = 300 + MDLParserVALIDATION = 301 + MDLParserFEEDBACK = 302 + MDLParserRULE = 303 + MDLParserREQUIRED = 304 + MDLParserERROR = 305 + MDLParserRAISE = 306 + MDLParserRANGE = 307 + MDLParserREGEX = 308 + MDLParserPATTERN = 309 + MDLParserEXPRESSION = 310 + MDLParserXPATH = 311 + MDLParserCONSTRAINT = 312 + MDLParserCALCULATED = 313 + MDLParserREST = 314 + MDLParserSERVICE = 315 + MDLParserSERVICES = 316 + MDLParserODATA = 317 + MDLParserBASE = 318 + MDLParserAUTH = 319 + MDLParserAUTHENTICATION = 320 + MDLParserBASIC = 321 + MDLParserNOTHING = 322 + MDLParserOAUTH = 323 + MDLParserOPERATION = 324 + MDLParserMETHOD = 325 + MDLParserPATH = 326 + MDLParserTIMEOUT = 327 + MDLParserBODY = 328 + MDLParserRESPONSE = 329 + MDLParserREQUEST = 330 + MDLParserSEND = 331 + MDLParserJSON = 332 + MDLParserXML = 333 + MDLParserSTATUS = 334 + MDLParserFILE_KW = 335 + MDLParserVERSION = 336 + MDLParserGET = 337 + MDLParserPOST = 338 + MDLParserPUT = 339 + MDLParserPATCH = 340 + MDLParserAPI = 341 + MDLParserCLIENT = 342 + MDLParserCLIENTS = 343 + MDLParserPUBLISH = 344 + MDLParserPUBLISHED = 345 + MDLParserEXPOSE = 346 + MDLParserCONTRACT = 347 + MDLParserNAMESPACE_KW = 348 + MDLParserSESSION = 349 + MDLParserGUEST = 350 + MDLParserPAGING = 351 + MDLParserNOT_SUPPORTED = 352 + MDLParserUSERNAME = 353 + MDLParserPASSWORD = 354 + MDLParserCONNECTION = 355 + MDLParserDATABASE = 356 + MDLParserQUERY = 357 + MDLParserMAP = 358 + MDLParserMAPPING = 359 + MDLParserIMPORT = 360 + MDLParserINTO = 361 + MDLParserBATCH = 362 + MDLParserLINK = 363 + MDLParserEXPORT = 364 + MDLParserGENERATE = 365 + MDLParserCONNECTOR = 366 + MDLParserEXEC = 367 + MDLParserTABLES = 368 + MDLParserVIEWS = 369 + MDLParserEXPOSED = 370 + MDLParserPARAMETER = 371 + MDLParserPARAMETERS = 372 + MDLParserHEADERS = 373 + MDLParserNAVIGATION = 374 + MDLParserMENU_KW = 375 + MDLParserHOMES = 376 + MDLParserHOME = 377 + MDLParserLOGIN = 378 + MDLParserFOUND = 379 + MDLParserMODULES = 380 + MDLParserENTITIES = 381 + MDLParserASSOCIATIONS = 382 + MDLParserMICROFLOWS = 383 + MDLParserNANOFLOWS = 384 + MDLParserWORKFLOWS = 385 + MDLParserENUMERATIONS = 386 + MDLParserCONSTANTS = 387 + MDLParserCONNECTIONS = 388 + MDLParserDEFINE = 389 + MDLParserFRAGMENT = 390 + MDLParserFRAGMENTS = 391 + MDLParserINSERT = 392 + MDLParserBEFORE = 393 + MDLParserAFTER = 394 + MDLParserUPDATE = 395 + MDLParserREFRESH = 396 + MDLParserCHECK = 397 + MDLParserBUILD = 398 + MDLParserEXECUTE = 399 + MDLParserSCRIPT = 400 + MDLParserLINT = 401 + MDLParserRULES = 402 + MDLParserTEXT = 403 + MDLParserSARIF = 404 + MDLParserMESSAGE = 405 + MDLParserMESSAGES = 406 + MDLParserCHANNELS = 407 + MDLParserCOMMENT = 408 + MDLParserCATALOG = 409 + MDLParserFORCE = 410 + MDLParserBACKGROUND = 411 + MDLParserCALLERS = 412 + MDLParserCALLEES = 413 + MDLParserREFERENCES = 414 + MDLParserTRANSITIVE = 415 + MDLParserIMPACT = 416 + MDLParserDEPTH = 417 + MDLParserSTRUCTURE = 418 + MDLParserTYPE = 419 + MDLParserVALUE = 420 + MDLParserVALUES = 421 + MDLParserSINGLE = 422 + MDLParserMULTIPLE = 423 + MDLParserNONE = 424 + MDLParserBOTH = 425 + MDLParserTO = 426 + MDLParserOF = 427 + MDLParserOVER = 428 + MDLParserFOR = 429 + MDLParserREPLACE = 430 + MDLParserMEMBERS = 431 + MDLParserATTRIBUTE_NAME = 432 + MDLParserFORMAT = 433 + MDLParserSQL = 434 + MDLParserWITHOUT = 435 + MDLParserDRY = 436 + MDLParserRUN = 437 + MDLParserWIDGETTYPE = 438 + MDLParserV3 = 439 + MDLParserBUSINESS = 440 + MDLParserEVENT = 441 + MDLParserSUBSCRIBE = 442 + MDLParserSETTINGS = 443 + MDLParserCONFIGURATION = 444 + MDLParserSECURITY = 445 + MDLParserROLE = 446 + MDLParserROLES = 447 + MDLParserGRANT = 448 + MDLParserREVOKE = 449 + MDLParserPRODUCTION = 450 + MDLParserPROTOTYPE = 451 + MDLParserMANAGE = 452 + MDLParserDEMO = 453 + MDLParserMATRIX = 454 + MDLParserAPPLY = 455 + MDLParserACCESS = 456 + MDLParserLEVEL = 457 + MDLParserUSER = 458 + MDLParserTASK = 459 + MDLParserDECISION = 460 + MDLParserSPLIT = 461 + MDLParserOUTCOMES = 462 + MDLParserTARGETING = 463 + MDLParserNOTIFICATION = 464 + MDLParserTIMER = 465 + MDLParserJUMP = 466 + MDLParserDUE = 467 + MDLParserOVERVIEW = 468 + MDLParserDATE = 469 + MDLParserPARALLEL = 470 + MDLParserWAIT = 471 + MDLParserANNOTATION = 472 + MDLParserBOUNDARY = 473 + MDLParserINTERRUPTING = 474 + MDLParserNON = 475 + MDLParserMULTI = 476 + MDLParserBY = 477 + MDLParserREAD = 478 + MDLParserWRITE = 479 + MDLParserDESCRIPTION = 480 + MDLParserDISPLAY = 481 + MDLParserOFF = 482 + MDLParserUSERS = 483 + MDLParserNOT_EQUALS = 484 + MDLParserLESS_THAN_OR_EQUAL = 485 + MDLParserGREATER_THAN_OR_EQUAL = 486 + MDLParserEQUALS = 487 + MDLParserLESS_THAN = 488 + MDLParserGREATER_THAN = 489 + MDLParserPLUS = 490 + MDLParserMINUS = 491 + MDLParserSTAR = 492 + MDLParserSLASH = 493 + MDLParserPERCENT = 494 + MDLParserMOD = 495 + MDLParserDIV = 496 + MDLParserSEMICOLON = 497 + MDLParserCOMMA = 498 + MDLParserDOT = 499 + MDLParserLPAREN = 500 + MDLParserRPAREN = 501 + MDLParserLBRACE = 502 + MDLParserRBRACE = 503 + MDLParserLBRACKET = 504 + MDLParserRBRACKET = 505 + MDLParserCOLON = 506 + MDLParserAT = 507 + MDLParserPIPE = 508 + MDLParserDOUBLE_COLON = 509 + MDLParserARROW = 510 + MDLParserQUESTION = 511 + MDLParserHASH = 512 + MDLParserMENDIX_TOKEN = 513 + MDLParserSTRING_LITERAL = 514 + MDLParserDOLLAR_STRING = 515 + MDLParserNUMBER_LITERAL = 516 + MDLParserVARIABLE = 517 + MDLParserIDENTIFIER = 518 + MDLParserHYPHENATED_ID = 519 + MDLParserQUOTED_IDENTIFIER = 520 ) // MDLParser rules. @@ -4476,6 +4514,16 @@ func (s *ProgramContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ProgramContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitProgram(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) Program() (localctx IProgramContext) { localctx = NewProgramContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 0, MDLParserRULE_program) @@ -4489,7 +4537,7 @@ func (p *MDLParser) Program() (localctx IProgramContext) { } _la = p.GetTokenStream().LA(1) - for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&216172782117847044) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&127) != 0) || _la == MDLParserSEARCH || ((int64((_la-357)) & ^0x3f) == 0 && ((int64(1)<<(_la-357))&3264712015873) != 0) || ((int64((_la-431)) & ^0x3f) == 0 && ((int64(1)<<(_la-431))&49153) != 0) || _la == MDLParserAT || _la == MDLParserIDENTIFIER { + for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&216172782117847044) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&127) != 0) || _la == MDLParserSEARCH || ((int64((_la-360)) & ^0x3f) == 0 && ((int64(1)<<(_la-360))&3264712015873) != 0) || ((int64((_la-434)) & ^0x3f) == 0 && ((int64(1)<<(_la-434))&49153) != 0) || _la == MDLParserAT || _la == MDLParserIDENTIFIER { { p.SetState(734) p.Statement() @@ -4667,6 +4715,16 @@ func (s *StatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *StatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) Statement() (localctx IStatementContext) { localctx = NewStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 2, MDLParserRULE_statement) @@ -4947,6 +5005,16 @@ func (s *DdlStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DdlStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDdlStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DdlStatement() (localctx IDdlStatementContext) { localctx = NewDdlStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 4, MDLParserRULE_ddlStatement) @@ -5251,6 +5319,16 @@ func (s *UpdateWidgetsStatementContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *UpdateWidgetsStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitUpdateWidgetsStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) UpdateWidgetsStatement() (localctx IUpdateWidgetsStatementContext) { localctx = NewUpdateWidgetsStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 6, MDLParserRULE_updateWidgetsStatement) @@ -5990,6 +6068,16 @@ func (s *CreateStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CreateStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateStatement() (localctx ICreateStatementContext) { localctx = NewCreateStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 8, MDLParserRULE_createStatement) @@ -6735,6 +6823,16 @@ func (s *AlterStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AlterStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterStatement() (localctx IAlterStatementContext) { localctx = NewAlterStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 10, MDLParserRULE_alterStatement) @@ -7455,6 +7553,16 @@ func (s *AlterStylingActionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AlterStylingActionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterStylingAction(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterStylingAction() (localctx IAlterStylingActionContext) { localctx = NewAlterStylingActionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 12, MDLParserRULE_alterStylingAction) @@ -7655,6 +7763,16 @@ func (s *AlterStylingAssignmentContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *AlterStylingAssignmentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterStylingAssignment(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterStylingAssignment() (localctx IAlterStylingAssignmentContext) { localctx = NewAlterStylingAssignmentContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 14, MDLParserRULE_alterStylingAssignment) @@ -7989,6 +8107,16 @@ func (s *AlterPageOperationContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AlterPageOperationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterPageOperation(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterPageOperation() (localctx IAlterPageOperationContext) { localctx = NewAlterPageOperationContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 16, MDLParserRULE_alterPageOperation) @@ -8398,6 +8526,16 @@ func (s *AlterPageSetContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AlterPageSetContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterPageSet(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterPageSet() (localctx IAlterPageSetContext) { localctx = NewAlterPageSetContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 18, MDLParserRULE_alterPageSet) @@ -8750,6 +8888,16 @@ func (s *AlterLayoutMappingContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AlterLayoutMappingContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterLayoutMapping(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterLayoutMapping() (localctx IAlterLayoutMappingContext) { localctx = NewAlterLayoutMappingContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 20, MDLParserRULE_alterLayoutMapping) @@ -8792,8 +8940,10 @@ type IAlterPageAssignmentContext interface { GetParser() antlr.Parser // Getter signatures - IdentifierOrKeyword() IIdentifierOrKeywordContext + DATASOURCE() antlr.TerminalNode EQUALS() antlr.TerminalNode + DataSourceExprV3() IDataSourceExprV3Context + IdentifierOrKeyword() IIdentifierOrKeywordContext PropertyValueV3() IPropertyValueV3Context STRING_LITERAL() antlr.TerminalNode @@ -8833,6 +8983,30 @@ func NewAlterPageAssignmentContext(parser antlr.Parser, parent antlr.ParserRuleC func (s *AlterPageAssignmentContext) GetParser() antlr.Parser { return s.parser } +func (s *AlterPageAssignmentContext) DATASOURCE() antlr.TerminalNode { + return s.GetToken(MDLParserDATASOURCE, 0) +} + +func (s *AlterPageAssignmentContext) EQUALS() antlr.TerminalNode { + return s.GetToken(MDLParserEQUALS, 0) +} + +func (s *AlterPageAssignmentContext) DataSourceExprV3() IDataSourceExprV3Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDataSourceExprV3Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDataSourceExprV3Context) +} + func (s *AlterPageAssignmentContext) IdentifierOrKeyword() IIdentifierOrKeywordContext { var t antlr.RuleContext for _, ctx := range s.GetChildren() { @@ -8849,10 +9023,6 @@ func (s *AlterPageAssignmentContext) IdentifierOrKeyword() IIdentifierOrKeywordC return t.(IIdentifierOrKeywordContext) } -func (s *AlterPageAssignmentContext) EQUALS() antlr.TerminalNode { - return s.GetToken(MDLParserEQUALS, 0) -} - func (s *AlterPageAssignmentContext) PropertyValueV3() IPropertyValueV3Context { var t antlr.RuleContext for _, ctx := range s.GetChildren() { @@ -8893,21 +9063,35 @@ func (s *AlterPageAssignmentContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *AlterPageAssignmentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterPageAssignment(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterPageAssignment() (localctx IAlterPageAssignmentContext) { localctx = NewAlterPageAssignmentContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 22, MDLParserRULE_alterPageAssignment) - p.SetState(1042) + p.SetState(1045) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetTokenStream().LA(1) { - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 39, p.GetParserRuleContext()) { + case 1: p.EnterOuterAlt(localctx, 1) { p.SetState(1035) - p.IdentifierOrKeyword() + p.Match(MDLParserDATASOURCE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } { p.SetState(1036) @@ -8919,14 +9103,18 @@ func (p *MDLParser) AlterPageAssignment() (localctx IAlterPageAssignmentContext) } { p.SetState(1037) - p.PropertyValueV3() + p.DataSourceExprV3() } - case MDLParserSTRING_LITERAL: + case 2: p.EnterOuterAlt(localctx, 2) + { + p.SetState(1038) + p.IdentifierOrKeyword() + } { p.SetState(1039) - p.Match(MDLParserSTRING_LITERAL) + p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule goto errorExit @@ -8934,6 +9122,21 @@ func (p *MDLParser) AlterPageAssignment() (localctx IAlterPageAssignmentContext) } { p.SetState(1040) + p.PropertyValueV3() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1042) + p.Match(MDLParserSTRING_LITERAL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1043) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -8941,12 +9144,11 @@ func (p *MDLParser) AlterPageAssignment() (localctx IAlterPageAssignmentContext) } } { - p.SetState(1041) + p.SetState(1044) p.PropertyValueV3() } - default: - p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + case antlr.ATNInvalidAltNumber: goto errorExit } @@ -9087,10 +9289,20 @@ func (s *AlterPageInsertContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AlterPageInsertContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterPageInsert(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterPageInsert() (localctx IAlterPageInsertContext) { localctx = NewAlterPageInsertContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 24, MDLParserRULE_alterPageInsert) - p.SetState(1058) + p.SetState(1061) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9100,7 +9312,7 @@ func (p *MDLParser) AlterPageInsert() (localctx IAlterPageInsertContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1044) + p.SetState(1047) p.Match(MDLParserINSERT) if p.HasError() { // Recognition error - abort rule @@ -9108,7 +9320,7 @@ func (p *MDLParser) AlterPageInsert() (localctx IAlterPageInsertContext) { } } { - p.SetState(1045) + p.SetState(1048) p.Match(MDLParserAFTER) if p.HasError() { // Recognition error - abort rule @@ -9116,11 +9328,11 @@ func (p *MDLParser) AlterPageInsert() (localctx IAlterPageInsertContext) { } } { - p.SetState(1046) + p.SetState(1049) p.IdentifierOrKeyword() } { - p.SetState(1047) + p.SetState(1050) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -9128,11 +9340,11 @@ func (p *MDLParser) AlterPageInsert() (localctx IAlterPageInsertContext) { } } { - p.SetState(1048) + p.SetState(1051) p.PageBodyV3() } { - p.SetState(1049) + p.SetState(1052) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -9143,7 +9355,7 @@ func (p *MDLParser) AlterPageInsert() (localctx IAlterPageInsertContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1051) + p.SetState(1054) p.Match(MDLParserINSERT) if p.HasError() { // Recognition error - abort rule @@ -9151,7 +9363,7 @@ func (p *MDLParser) AlterPageInsert() (localctx IAlterPageInsertContext) { } } { - p.SetState(1052) + p.SetState(1055) p.Match(MDLParserBEFORE) if p.HasError() { // Recognition error - abort rule @@ -9159,11 +9371,11 @@ func (p *MDLParser) AlterPageInsert() (localctx IAlterPageInsertContext) { } } { - p.SetState(1053) + p.SetState(1056) p.IdentifierOrKeyword() } { - p.SetState(1054) + p.SetState(1057) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -9171,11 +9383,11 @@ func (p *MDLParser) AlterPageInsert() (localctx IAlterPageInsertContext) { } } { - p.SetState(1055) + p.SetState(1058) p.PageBodyV3() } { - p.SetState(1056) + p.SetState(1059) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -9328,6 +9540,16 @@ func (s *AlterPageDropContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AlterPageDropContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterPageDrop(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterPageDrop() (localctx IAlterPageDropContext) { localctx = NewAlterPageDropContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 26, MDLParserRULE_alterPageDrop) @@ -9335,7 +9557,7 @@ func (p *MDLParser) AlterPageDrop() (localctx IAlterPageDropContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1060) + p.SetState(1063) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -9343,7 +9565,7 @@ func (p *MDLParser) AlterPageDrop() (localctx IAlterPageDropContext) { } } { - p.SetState(1061) + p.SetState(1064) p.Match(MDLParserWIDGET) if p.HasError() { // Recognition error - abort rule @@ -9351,10 +9573,10 @@ func (p *MDLParser) AlterPageDrop() (localctx IAlterPageDropContext) { } } { - p.SetState(1062) + p.SetState(1065) p.IdentifierOrKeyword() } - p.SetState(1067) + p.SetState(1070) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9363,7 +9585,7 @@ func (p *MDLParser) AlterPageDrop() (localctx IAlterPageDropContext) { for _la == MDLParserCOMMA { { - p.SetState(1063) + p.SetState(1066) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -9371,11 +9593,11 @@ func (p *MDLParser) AlterPageDrop() (localctx IAlterPageDropContext) { } } { - p.SetState(1064) + p.SetState(1067) p.IdentifierOrKeyword() } - p.SetState(1069) + p.SetState(1072) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9515,12 +9737,22 @@ func (s *AlterPageReplaceContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AlterPageReplaceContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterPageReplace(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterPageReplace() (localctx IAlterPageReplaceContext) { localctx = NewAlterPageReplaceContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 28, MDLParserRULE_alterPageReplace) p.EnterOuterAlt(localctx, 1) { - p.SetState(1070) + p.SetState(1073) p.Match(MDLParserREPLACE) if p.HasError() { // Recognition error - abort rule @@ -9528,11 +9760,11 @@ func (p *MDLParser) AlterPageReplace() (localctx IAlterPageReplaceContext) { } } { - p.SetState(1071) + p.SetState(1074) p.IdentifierOrKeyword() } { - p.SetState(1072) + p.SetState(1075) p.Match(MDLParserWITH) if p.HasError() { // Recognition error - abort rule @@ -9540,7 +9772,7 @@ func (p *MDLParser) AlterPageReplace() (localctx IAlterPageReplaceContext) { } } { - p.SetState(1073) + p.SetState(1076) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -9548,11 +9780,11 @@ func (p *MDLParser) AlterPageReplace() (localctx IAlterPageReplaceContext) { } } { - p.SetState(1074) + p.SetState(1077) p.PageBodyV3() } { - p.SetState(1075) + p.SetState(1078) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -9665,12 +9897,22 @@ func (s *AlterPageAddVariableContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *AlterPageAddVariableContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterPageAddVariable(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterPageAddVariable() (localctx IAlterPageAddVariableContext) { localctx = NewAlterPageAddVariableContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 30, MDLParserRULE_alterPageAddVariable) p.EnterOuterAlt(localctx, 1) { - p.SetState(1077) + p.SetState(1080) p.Match(MDLParserADD) if p.HasError() { // Recognition error - abort rule @@ -9678,7 +9920,7 @@ func (p *MDLParser) AlterPageAddVariable() (localctx IAlterPageAddVariableContex } } { - p.SetState(1078) + p.SetState(1081) p.Match(MDLParserVARIABLES_KW) if p.HasError() { // Recognition error - abort rule @@ -9686,7 +9928,7 @@ func (p *MDLParser) AlterPageAddVariable() (localctx IAlterPageAddVariableContex } } { - p.SetState(1079) + p.SetState(1082) p.VariableDeclaration() } @@ -9783,12 +10025,22 @@ func (s *AlterPageDropVariableContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *AlterPageDropVariableContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterPageDropVariable(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterPageDropVariable() (localctx IAlterPageDropVariableContext) { localctx = NewAlterPageDropVariableContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 32, MDLParserRULE_alterPageDropVariable) p.EnterOuterAlt(localctx, 1) { - p.SetState(1081) + p.SetState(1084) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -9796,7 +10048,7 @@ func (p *MDLParser) AlterPageDropVariable() (localctx IAlterPageDropVariableCont } } { - p.SetState(1082) + p.SetState(1085) p.Match(MDLParserVARIABLES_KW) if p.HasError() { // Recognition error - abort rule @@ -9804,7 +10056,7 @@ func (p *MDLParser) AlterPageDropVariable() (localctx IAlterPageDropVariableCont } } { - p.SetState(1083) + p.SetState(1086) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -10026,12 +10278,22 @@ func (s *NavigationClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *NavigationClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitNavigationClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { localctx = NewNavigationClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 34, MDLParserRULE_navigationClause) var _la int - p.SetState(1108) + p.SetState(1111) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10041,7 +10303,7 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { case MDLParserHOME: p.EnterOuterAlt(localctx, 1) { - p.SetState(1085) + p.SetState(1088) p.Match(MDLParserHOME) if p.HasError() { // Recognition error - abort rule @@ -10049,7 +10311,7 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { } } { - p.SetState(1086) + p.SetState(1089) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserMICROFLOW || _la == MDLParserPAGE) { @@ -10060,10 +10322,10 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { } } { - p.SetState(1087) + p.SetState(1090) p.QualifiedName() } - p.SetState(1090) + p.SetState(1093) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10072,7 +10334,7 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { if _la == MDLParserFOR { { - p.SetState(1088) + p.SetState(1091) p.Match(MDLParserFOR) if p.HasError() { // Recognition error - abort rule @@ -10080,7 +10342,7 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { } } { - p.SetState(1089) + p.SetState(1092) p.QualifiedName() } @@ -10089,7 +10351,7 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { case MDLParserLOGIN: p.EnterOuterAlt(localctx, 2) { - p.SetState(1092) + p.SetState(1095) p.Match(MDLParserLOGIN) if p.HasError() { // Recognition error - abort rule @@ -10097,7 +10359,7 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { } } { - p.SetState(1093) + p.SetState(1096) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -10105,14 +10367,14 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { } } { - p.SetState(1094) + p.SetState(1097) p.QualifiedName() } case MDLParserNOT: p.EnterOuterAlt(localctx, 3) { - p.SetState(1095) + p.SetState(1098) p.Match(MDLParserNOT) if p.HasError() { // Recognition error - abort rule @@ -10120,7 +10382,7 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { } } { - p.SetState(1096) + p.SetState(1099) p.Match(MDLParserFOUND) if p.HasError() { // Recognition error - abort rule @@ -10128,7 +10390,7 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { } } { - p.SetState(1097) + p.SetState(1100) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -10136,14 +10398,14 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { } } { - p.SetState(1098) + p.SetState(1101) p.QualifiedName() } case MDLParserMENU_KW: p.EnterOuterAlt(localctx, 4) { - p.SetState(1099) + p.SetState(1102) p.Match(MDLParserMENU_KW) if p.HasError() { // Recognition error - abort rule @@ -10151,14 +10413,14 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { } } { - p.SetState(1100) + p.SetState(1103) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1104) + p.SetState(1107) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10167,11 +10429,11 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { for _la == MDLParserMENU_KW { { - p.SetState(1101) + p.SetState(1104) p.NavMenuItemDef() } - p.SetState(1106) + p.SetState(1109) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10179,7 +10441,7 @@ func (p *MDLParser) NavigationClause() (localctx INavigationClauseContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1107) + p.SetState(1110) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -10370,12 +10632,22 @@ func (s *NavMenuItemDefContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *NavMenuItemDefContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitNavMenuItemDef(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { localctx = NewNavMenuItemDefContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 36, MDLParserRULE_navMenuItemDef) var _la int - p.SetState(1135) + p.SetState(1138) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10385,7 +10657,7 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1110) + p.SetState(1113) p.Match(MDLParserMENU_KW) if p.HasError() { // Recognition error - abort rule @@ -10393,7 +10665,7 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { } } { - p.SetState(1111) + p.SetState(1114) p.Match(MDLParserITEM) if p.HasError() { // Recognition error - abort rule @@ -10401,14 +10673,14 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { } } { - p.SetState(1112) + p.SetState(1115) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1117) + p.SetState(1120) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10416,7 +10688,7 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { switch p.GetTokenStream().LA(1) { case MDLParserPAGE: { - p.SetState(1113) + p.SetState(1116) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -10424,13 +10696,13 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { } } { - p.SetState(1114) + p.SetState(1117) p.QualifiedName() } case MDLParserMICROFLOW: { - p.SetState(1115) + p.SetState(1118) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -10438,7 +10710,7 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { } } { - p.SetState(1116) + p.SetState(1119) p.QualifiedName() } @@ -10446,7 +10718,7 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { default: } - p.SetState(1120) + p.SetState(1123) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10455,7 +10727,7 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { if _la == MDLParserSEMICOLON { { - p.SetState(1119) + p.SetState(1122) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -10468,7 +10740,7 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1122) + p.SetState(1125) p.Match(MDLParserMENU_KW) if p.HasError() { // Recognition error - abort rule @@ -10476,7 +10748,7 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { } } { - p.SetState(1123) + p.SetState(1126) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -10484,14 +10756,14 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { } } { - p.SetState(1124) + p.SetState(1127) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1128) + p.SetState(1131) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10500,11 +10772,11 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { for _la == MDLParserMENU_KW { { - p.SetState(1125) + p.SetState(1128) p.NavMenuItemDef() } - p.SetState(1130) + p.SetState(1133) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10512,14 +10784,14 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1131) + p.SetState(1134) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1133) + p.SetState(1136) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10528,7 +10800,7 @@ func (p *MDLParser) NavMenuItemDef() (localctx INavMenuItemDefContext) { if _la == MDLParserSEMICOLON { { - p.SetState(1132) + p.SetState(1135) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -10808,10 +11080,20 @@ func (s *DropStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DropStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDropStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { localctx = NewDropStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 38, MDLParserRULE_dropStatement) - p.SetState(1212) + p.SetState(1215) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10821,7 +11103,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1137) + p.SetState(1140) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -10829,7 +11111,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1138) + p.SetState(1141) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -10837,14 +11119,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1139) + p.SetState(1142) p.QualifiedName() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1140) + p.SetState(1143) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -10852,7 +11134,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1141) + p.SetState(1144) p.Match(MDLParserASSOCIATION) if p.HasError() { // Recognition error - abort rule @@ -10860,14 +11142,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1142) + p.SetState(1145) p.QualifiedName() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(1143) + p.SetState(1146) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -10875,7 +11157,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1144) + p.SetState(1147) p.Match(MDLParserENUMERATION) if p.HasError() { // Recognition error - abort rule @@ -10883,14 +11165,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1145) + p.SetState(1148) p.QualifiedName() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(1146) + p.SetState(1149) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -10898,7 +11180,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1147) + p.SetState(1150) p.Match(MDLParserCONSTANT) if p.HasError() { // Recognition error - abort rule @@ -10906,14 +11188,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1148) + p.SetState(1151) p.QualifiedName() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(1149) + p.SetState(1152) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -10921,7 +11203,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1150) + p.SetState(1153) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -10929,14 +11211,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1151) + p.SetState(1154) p.QualifiedName() } case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(1152) + p.SetState(1155) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -10944,7 +11226,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1153) + p.SetState(1156) p.Match(MDLParserNANOFLOW) if p.HasError() { // Recognition error - abort rule @@ -10952,14 +11234,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1154) + p.SetState(1157) p.QualifiedName() } case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(1155) + p.SetState(1158) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -10967,7 +11249,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1156) + p.SetState(1159) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -10975,14 +11257,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1157) + p.SetState(1160) p.QualifiedName() } case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(1158) + p.SetState(1161) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -10990,7 +11272,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1159) + p.SetState(1162) p.Match(MDLParserSNIPPET) if p.HasError() { // Recognition error - abort rule @@ -10998,14 +11280,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1160) + p.SetState(1163) p.QualifiedName() } case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(1161) + p.SetState(1164) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11013,7 +11295,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1162) + p.SetState(1165) p.Match(MDLParserMODULE) if p.HasError() { // Recognition error - abort rule @@ -11021,14 +11303,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1163) + p.SetState(1166) p.QualifiedName() } case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(1164) + p.SetState(1167) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11036,7 +11318,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1165) + p.SetState(1168) p.Match(MDLParserNOTEBOOK) if p.HasError() { // Recognition error - abort rule @@ -11044,14 +11326,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1166) + p.SetState(1169) p.QualifiedName() } case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(1167) + p.SetState(1170) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11059,7 +11341,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1168) + p.SetState(1171) p.Match(MDLParserJAVA) if p.HasError() { // Recognition error - abort rule @@ -11067,7 +11349,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1169) + p.SetState(1172) p.Match(MDLParserACTION) if p.HasError() { // Recognition error - abort rule @@ -11075,14 +11357,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1170) + p.SetState(1173) p.QualifiedName() } case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(1171) + p.SetState(1174) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11090,7 +11372,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1172) + p.SetState(1175) p.Match(MDLParserINDEX) if p.HasError() { // Recognition error - abort rule @@ -11098,11 +11380,11 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1173) + p.SetState(1176) p.QualifiedName() } { - p.SetState(1174) + p.SetState(1177) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -11110,14 +11392,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1175) + p.SetState(1178) p.QualifiedName() } case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(1177) + p.SetState(1180) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11125,7 +11407,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1178) + p.SetState(1181) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -11133,7 +11415,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1179) + p.SetState(1182) p.Match(MDLParserCLIENT) if p.HasError() { // Recognition error - abort rule @@ -11141,14 +11423,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1180) + p.SetState(1183) p.QualifiedName() } case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(1181) + p.SetState(1184) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11156,7 +11438,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1182) + p.SetState(1185) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -11164,7 +11446,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1183) + p.SetState(1186) p.Match(MDLParserSERVICE) if p.HasError() { // Recognition error - abort rule @@ -11172,14 +11454,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1184) + p.SetState(1187) p.QualifiedName() } case 15: p.EnterOuterAlt(localctx, 15) { - p.SetState(1185) + p.SetState(1188) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11187,7 +11469,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1186) + p.SetState(1189) p.Match(MDLParserBUSINESS) if p.HasError() { // Recognition error - abort rule @@ -11195,7 +11477,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1187) + p.SetState(1190) p.Match(MDLParserEVENT) if p.HasError() { // Recognition error - abort rule @@ -11203,7 +11485,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1188) + p.SetState(1191) p.Match(MDLParserSERVICE) if p.HasError() { // Recognition error - abort rule @@ -11211,14 +11493,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1189) + p.SetState(1192) p.QualifiedName() } case 16: p.EnterOuterAlt(localctx, 16) { - p.SetState(1190) + p.SetState(1193) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11226,7 +11508,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1191) + p.SetState(1194) p.Match(MDLParserWORKFLOW) if p.HasError() { // Recognition error - abort rule @@ -11234,14 +11516,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1192) + p.SetState(1195) p.QualifiedName() } case 17: p.EnterOuterAlt(localctx, 17) { - p.SetState(1193) + p.SetState(1196) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11249,7 +11531,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1194) + p.SetState(1197) p.Match(MDLParserIMAGE) if p.HasError() { // Recognition error - abort rule @@ -11257,7 +11539,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1195) + p.SetState(1198) p.Match(MDLParserCOLLECTION) if p.HasError() { // Recognition error - abort rule @@ -11265,14 +11547,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1196) + p.SetState(1199) p.QualifiedName() } case 18: p.EnterOuterAlt(localctx, 18) { - p.SetState(1197) + p.SetState(1200) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11280,7 +11562,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1198) + p.SetState(1201) p.Match(MDLParserREST) if p.HasError() { // Recognition error - abort rule @@ -11288,7 +11570,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1199) + p.SetState(1202) p.Match(MDLParserCLIENT) if p.HasError() { // Recognition error - abort rule @@ -11296,14 +11578,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1200) + p.SetState(1203) p.QualifiedName() } case 19: p.EnterOuterAlt(localctx, 19) { - p.SetState(1201) + p.SetState(1204) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11311,7 +11593,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1202) + p.SetState(1205) p.Match(MDLParserCONFIGURATION) if p.HasError() { // Recognition error - abort rule @@ -11319,7 +11601,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1203) + p.SetState(1206) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -11330,7 +11612,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { case 20: p.EnterOuterAlt(localctx, 20) { - p.SetState(1204) + p.SetState(1207) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -11338,7 +11620,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1205) + p.SetState(1208) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -11346,7 +11628,7 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1206) + p.SetState(1209) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -11354,14 +11636,14 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { } } { - p.SetState(1207) + p.SetState(1210) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1210) + p.SetState(1213) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11370,13 +11652,13 @@ func (p *MDLParser) DropStatement() (localctx IDropStatementContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 50, p.GetParserRuleContext()) { case 1: { - p.SetState(1208) + p.SetState(1211) p.QualifiedName() } case 2: { - p.SetState(1209) + p.SetState(1212) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -11517,10 +11799,20 @@ func (s *RenameStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RenameStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRenameStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RenameStatement() (localctx IRenameStatementContext) { localctx = NewRenameStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 40, MDLParserRULE_renameStatement) - p.SetState(1225) + p.SetState(1228) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11530,7 +11822,7 @@ func (p *MDLParser) RenameStatement() (localctx IRenameStatementContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1214) + p.SetState(1217) p.Match(MDLParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -11538,7 +11830,7 @@ func (p *MDLParser) RenameStatement() (localctx IRenameStatementContext) { } } { - p.SetState(1215) + p.SetState(1218) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -11546,11 +11838,11 @@ func (p *MDLParser) RenameStatement() (localctx IRenameStatementContext) { } } { - p.SetState(1216) + p.SetState(1219) p.QualifiedName() } { - p.SetState(1217) + p.SetState(1220) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -11558,7 +11850,7 @@ func (p *MDLParser) RenameStatement() (localctx IRenameStatementContext) { } } { - p.SetState(1218) + p.SetState(1221) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -11569,7 +11861,7 @@ func (p *MDLParser) RenameStatement() (localctx IRenameStatementContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1220) + p.SetState(1223) p.Match(MDLParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -11577,7 +11869,7 @@ func (p *MDLParser) RenameStatement() (localctx IRenameStatementContext) { } } { - p.SetState(1221) + p.SetState(1224) p.Match(MDLParserMODULE) if p.HasError() { // Recognition error - abort rule @@ -11585,7 +11877,7 @@ func (p *MDLParser) RenameStatement() (localctx IRenameStatementContext) { } } { - p.SetState(1222) + p.SetState(1225) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -11593,7 +11885,7 @@ func (p *MDLParser) RenameStatement() (localctx IRenameStatementContext) { } } { - p.SetState(1223) + p.SetState(1226) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -11601,7 +11893,7 @@ func (p *MDLParser) RenameStatement() (localctx IRenameStatementContext) { } } { - p.SetState(1224) + p.SetState(1227) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -11814,12 +12106,22 @@ func (s *MoveStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *MoveStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMoveStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { localctx = NewMoveStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 42, MDLParserRULE_moveStatement) var _la int - p.SetState(1295) + p.SetState(1298) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11829,14 +12131,14 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1227) + p.SetState(1230) p.Match(MDLParserMOVE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1236) + p.SetState(1239) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11845,7 +12147,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { switch p.GetTokenStream().LA(1) { case MDLParserPAGE: { - p.SetState(1228) + p.SetState(1231) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -11855,7 +12157,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserMICROFLOW: { - p.SetState(1229) + p.SetState(1232) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -11865,7 +12167,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserSNIPPET: { - p.SetState(1230) + p.SetState(1233) p.Match(MDLParserSNIPPET) if p.HasError() { // Recognition error - abort rule @@ -11875,7 +12177,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserNANOFLOW: { - p.SetState(1231) + p.SetState(1234) p.Match(MDLParserNANOFLOW) if p.HasError() { // Recognition error - abort rule @@ -11885,7 +12187,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserENUMERATION: { - p.SetState(1232) + p.SetState(1235) p.Match(MDLParserENUMERATION) if p.HasError() { // Recognition error - abort rule @@ -11895,7 +12197,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserCONSTANT: { - p.SetState(1233) + p.SetState(1236) p.Match(MDLParserCONSTANT) if p.HasError() { // Recognition error - abort rule @@ -11905,7 +12207,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserDATABASE: { - p.SetState(1234) + p.SetState(1237) p.Match(MDLParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -11913,7 +12215,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1235) + p.SetState(1238) p.Match(MDLParserCONNECTION) if p.HasError() { // Recognition error - abort rule @@ -11926,11 +12228,11 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { goto errorExit } { - p.SetState(1238) + p.SetState(1241) p.QualifiedName() } { - p.SetState(1239) + p.SetState(1242) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -11938,7 +12240,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1240) + p.SetState(1243) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -11946,14 +12248,14 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1241) + p.SetState(1244) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1247) + p.SetState(1250) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11962,14 +12264,14 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { if _la == MDLParserIN { { - p.SetState(1242) + p.SetState(1245) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1245) + p.SetState(1248) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11978,13 +12280,13 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 54, p.GetParserRuleContext()) { case 1: { - p.SetState(1243) + p.SetState(1246) p.QualifiedName() } case 2: { - p.SetState(1244) + p.SetState(1247) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -12001,14 +12303,14 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1249) + p.SetState(1252) p.Match(MDLParserMOVE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1258) + p.SetState(1261) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12017,7 +12319,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { switch p.GetTokenStream().LA(1) { case MDLParserPAGE: { - p.SetState(1250) + p.SetState(1253) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -12027,7 +12329,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserMICROFLOW: { - p.SetState(1251) + p.SetState(1254) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -12037,7 +12339,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserSNIPPET: { - p.SetState(1252) + p.SetState(1255) p.Match(MDLParserSNIPPET) if p.HasError() { // Recognition error - abort rule @@ -12047,7 +12349,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserNANOFLOW: { - p.SetState(1253) + p.SetState(1256) p.Match(MDLParserNANOFLOW) if p.HasError() { // Recognition error - abort rule @@ -12057,7 +12359,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserENUMERATION: { - p.SetState(1254) + p.SetState(1257) p.Match(MDLParserENUMERATION) if p.HasError() { // Recognition error - abort rule @@ -12067,7 +12369,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserCONSTANT: { - p.SetState(1255) + p.SetState(1258) p.Match(MDLParserCONSTANT) if p.HasError() { // Recognition error - abort rule @@ -12077,7 +12379,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case MDLParserDATABASE: { - p.SetState(1256) + p.SetState(1259) p.Match(MDLParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -12085,7 +12387,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1257) + p.SetState(1260) p.Match(MDLParserCONNECTION) if p.HasError() { // Recognition error - abort rule @@ -12098,18 +12400,18 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { goto errorExit } { - p.SetState(1260) + p.SetState(1263) p.QualifiedName() } { - p.SetState(1261) + p.SetState(1264) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1264) + p.SetState(1267) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12118,13 +12420,13 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 57, p.GetParserRuleContext()) { case 1: { - p.SetState(1262) + p.SetState(1265) p.QualifiedName() } case 2: { - p.SetState(1263) + p.SetState(1266) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -12139,7 +12441,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(1266) + p.SetState(1269) p.Match(MDLParserMOVE) if p.HasError() { // Recognition error - abort rule @@ -12147,7 +12449,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1267) + p.SetState(1270) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -12155,18 +12457,18 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1268) + p.SetState(1271) p.QualifiedName() } { - p.SetState(1269) + p.SetState(1272) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1272) + p.SetState(1275) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12175,13 +12477,13 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 58, p.GetParserRuleContext()) { case 1: { - p.SetState(1270) + p.SetState(1273) p.QualifiedName() } case 2: { - p.SetState(1271) + p.SetState(1274) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -12196,7 +12498,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(1274) + p.SetState(1277) p.Match(MDLParserMOVE) if p.HasError() { // Recognition error - abort rule @@ -12204,7 +12506,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1275) + p.SetState(1278) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -12212,11 +12514,11 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1276) + p.SetState(1279) p.QualifiedName() } { - p.SetState(1277) + p.SetState(1280) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -12224,7 +12526,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1278) + p.SetState(1281) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -12232,14 +12534,14 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1279) + p.SetState(1282) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1285) + p.SetState(1288) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12248,14 +12550,14 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { if _la == MDLParserIN { { - p.SetState(1280) + p.SetState(1283) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1283) + p.SetState(1286) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12264,13 +12566,13 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 59, p.GetParserRuleContext()) { case 1: { - p.SetState(1281) + p.SetState(1284) p.QualifiedName() } case 2: { - p.SetState(1282) + p.SetState(1285) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -12287,7 +12589,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(1287) + p.SetState(1290) p.Match(MDLParserMOVE) if p.HasError() { // Recognition error - abort rule @@ -12295,7 +12597,7 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1288) + p.SetState(1291) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -12303,18 +12605,18 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { } } { - p.SetState(1289) + p.SetState(1292) p.QualifiedName() } { - p.SetState(1290) + p.SetState(1293) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1293) + p.SetState(1296) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12323,13 +12625,13 @@ func (p *MDLParser) MoveStatement() (localctx IMoveStatementContext) { switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 61, p.GetParserRuleContext()) { case 1: { - p.SetState(1291) + p.SetState(1294) p.QualifiedName() } case 2: { - p.SetState(1292) + p.SetState(1295) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -12712,10 +13014,20 @@ func (s *SecurityStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SecurityStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSecurityStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SecurityStatement() (localctx ISecurityStatementContext) { localctx = NewSecurityStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 44, MDLParserRULE_securityStatement) - p.SetState(1314) + p.SetState(1317) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12725,119 +13037,119 @@ func (p *MDLParser) SecurityStatement() (localctx ISecurityStatementContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1297) + p.SetState(1300) p.CreateModuleRoleStatement() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1298) + p.SetState(1301) p.DropModuleRoleStatement() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(1299) + p.SetState(1302) p.AlterUserRoleStatement() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(1300) + p.SetState(1303) p.DropUserRoleStatement() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(1301) + p.SetState(1304) p.GrantEntityAccessStatement() } case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(1302) + p.SetState(1305) p.RevokeEntityAccessStatement() } case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(1303) + p.SetState(1306) p.GrantMicroflowAccessStatement() } case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(1304) + p.SetState(1307) p.RevokeMicroflowAccessStatement() } case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(1305) + p.SetState(1308) p.GrantPageAccessStatement() } case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(1306) + p.SetState(1309) p.RevokePageAccessStatement() } case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(1307) + p.SetState(1310) p.GrantWorkflowAccessStatement() } case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(1308) + p.SetState(1311) p.RevokeWorkflowAccessStatement() } case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(1309) + p.SetState(1312) p.GrantODataServiceAccessStatement() } case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(1310) + p.SetState(1313) p.RevokeODataServiceAccessStatement() } case 15: p.EnterOuterAlt(localctx, 15) { - p.SetState(1311) + p.SetState(1314) p.AlterProjectSecurityStatement() } case 16: p.EnterOuterAlt(localctx, 16) { - p.SetState(1312) + p.SetState(1315) p.DropDemoUserStatement() } case 17: p.EnterOuterAlt(localctx, 17) { - p.SetState(1313) + p.SetState(1316) p.UpdateSecurityStatement() } @@ -12965,6 +13277,16 @@ func (s *CreateModuleRoleStatementContext) ExitRule(listener antlr.ParseTreeList } } +func (s *CreateModuleRoleStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateModuleRoleStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateModuleRoleStatement() (localctx ICreateModuleRoleStatementContext) { localctx = NewCreateModuleRoleStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 46, MDLParserRULE_createModuleRoleStatement) @@ -12972,7 +13294,7 @@ func (p *MDLParser) CreateModuleRoleStatement() (localctx ICreateModuleRoleState p.EnterOuterAlt(localctx, 1) { - p.SetState(1316) + p.SetState(1319) p.Match(MDLParserCREATE) if p.HasError() { // Recognition error - abort rule @@ -12980,7 +13302,7 @@ func (p *MDLParser) CreateModuleRoleStatement() (localctx ICreateModuleRoleState } } { - p.SetState(1317) + p.SetState(1320) p.Match(MDLParserMODULE) if p.HasError() { // Recognition error - abort rule @@ -12988,7 +13310,7 @@ func (p *MDLParser) CreateModuleRoleStatement() (localctx ICreateModuleRoleState } } { - p.SetState(1318) + p.SetState(1321) p.Match(MDLParserROLE) if p.HasError() { // Recognition error - abort rule @@ -12996,10 +13318,10 @@ func (p *MDLParser) CreateModuleRoleStatement() (localctx ICreateModuleRoleState } } { - p.SetState(1319) + p.SetState(1322) p.QualifiedName() } - p.SetState(1322) + p.SetState(1325) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13008,7 +13330,7 @@ func (p *MDLParser) CreateModuleRoleStatement() (localctx ICreateModuleRoleState if _la == MDLParserDESCRIPTION { { - p.SetState(1320) + p.SetState(1323) p.Match(MDLParserDESCRIPTION) if p.HasError() { // Recognition error - abort rule @@ -13016,7 +13338,7 @@ func (p *MDLParser) CreateModuleRoleStatement() (localctx ICreateModuleRoleState } } { - p.SetState(1321) + p.SetState(1324) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -13136,12 +13458,22 @@ func (s *DropModuleRoleStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *DropModuleRoleStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDropModuleRoleStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DropModuleRoleStatement() (localctx IDropModuleRoleStatementContext) { localctx = NewDropModuleRoleStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 48, MDLParserRULE_dropModuleRoleStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1324) + p.SetState(1327) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -13149,7 +13481,7 @@ func (p *MDLParser) DropModuleRoleStatement() (localctx IDropModuleRoleStatement } } { - p.SetState(1325) + p.SetState(1328) p.Match(MDLParserMODULE) if p.HasError() { // Recognition error - abort rule @@ -13157,7 +13489,7 @@ func (p *MDLParser) DropModuleRoleStatement() (localctx IDropModuleRoleStatement } } { - p.SetState(1326) + p.SetState(1329) p.Match(MDLParserROLE) if p.HasError() { // Recognition error - abort rule @@ -13165,7 +13497,7 @@ func (p *MDLParser) DropModuleRoleStatement() (localctx IDropModuleRoleStatement } } { - p.SetState(1327) + p.SetState(1330) p.QualifiedName() } @@ -13316,6 +13648,16 @@ func (s *CreateUserRoleStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *CreateUserRoleStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateUserRoleStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateUserRoleStatement() (localctx ICreateUserRoleStatementContext) { localctx = NewCreateUserRoleStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 50, MDLParserRULE_createUserRoleStatement) @@ -13323,7 +13665,7 @@ func (p *MDLParser) CreateUserRoleStatement() (localctx ICreateUserRoleStatement p.EnterOuterAlt(localctx, 1) { - p.SetState(1329) + p.SetState(1332) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -13331,7 +13673,7 @@ func (p *MDLParser) CreateUserRoleStatement() (localctx ICreateUserRoleStatement } } { - p.SetState(1330) + p.SetState(1333) p.Match(MDLParserROLE) if p.HasError() { // Recognition error - abort rule @@ -13339,11 +13681,11 @@ func (p *MDLParser) CreateUserRoleStatement() (localctx ICreateUserRoleStatement } } { - p.SetState(1331) + p.SetState(1334) p.IdentifierOrKeyword() } { - p.SetState(1332) + p.SetState(1335) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -13351,18 +13693,18 @@ func (p *MDLParser) CreateUserRoleStatement() (localctx ICreateUserRoleStatement } } { - p.SetState(1333) + p.SetState(1336) p.ModuleRoleList() } { - p.SetState(1334) + p.SetState(1337) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1338) + p.SetState(1341) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13371,7 +13713,7 @@ func (p *MDLParser) CreateUserRoleStatement() (localctx ICreateUserRoleStatement if _la == MDLParserMANAGE { { - p.SetState(1335) + p.SetState(1338) p.Match(MDLParserMANAGE) if p.HasError() { // Recognition error - abort rule @@ -13379,7 +13721,7 @@ func (p *MDLParser) CreateUserRoleStatement() (localctx ICreateUserRoleStatement } } { - p.SetState(1336) + p.SetState(1339) p.Match(MDLParserALL) if p.HasError() { // Recognition error - abort rule @@ -13387,7 +13729,7 @@ func (p *MDLParser) CreateUserRoleStatement() (localctx ICreateUserRoleStatement } } { - p.SetState(1337) + p.SetState(1340) p.Match(MDLParserROLES) if p.HasError() { // Recognition error - abort rule @@ -13554,10 +13896,20 @@ func (s *AlterUserRoleStatementContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *AlterUserRoleStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterUserRoleStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementContext) { localctx = NewAlterUserRoleStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 52, MDLParserRULE_alterUserRoleStatement) - p.SetState(1362) + p.SetState(1365) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -13567,7 +13919,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1340) + p.SetState(1343) p.Match(MDLParserALTER) if p.HasError() { // Recognition error - abort rule @@ -13575,7 +13927,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1341) + p.SetState(1344) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -13583,7 +13935,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1342) + p.SetState(1345) p.Match(MDLParserROLE) if p.HasError() { // Recognition error - abort rule @@ -13591,11 +13943,11 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1343) + p.SetState(1346) p.IdentifierOrKeyword() } { - p.SetState(1344) + p.SetState(1347) p.Match(MDLParserADD) if p.HasError() { // Recognition error - abort rule @@ -13603,7 +13955,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1345) + p.SetState(1348) p.Match(MDLParserMODULE) if p.HasError() { // Recognition error - abort rule @@ -13611,7 +13963,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1346) + p.SetState(1349) p.Match(MDLParserROLES) if p.HasError() { // Recognition error - abort rule @@ -13619,7 +13971,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1347) + p.SetState(1350) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -13627,11 +13979,11 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1348) + p.SetState(1351) p.ModuleRoleList() } { - p.SetState(1349) + p.SetState(1352) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -13642,7 +13994,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1351) + p.SetState(1354) p.Match(MDLParserALTER) if p.HasError() { // Recognition error - abort rule @@ -13650,7 +14002,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1352) + p.SetState(1355) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -13658,7 +14010,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1353) + p.SetState(1356) p.Match(MDLParserROLE) if p.HasError() { // Recognition error - abort rule @@ -13666,11 +14018,11 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1354) + p.SetState(1357) p.IdentifierOrKeyword() } { - p.SetState(1355) + p.SetState(1358) p.Match(MDLParserREMOVE) if p.HasError() { // Recognition error - abort rule @@ -13678,7 +14030,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1356) + p.SetState(1359) p.Match(MDLParserMODULE) if p.HasError() { // Recognition error - abort rule @@ -13686,7 +14038,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1357) + p.SetState(1360) p.Match(MDLParserROLES) if p.HasError() { // Recognition error - abort rule @@ -13694,7 +14046,7 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1358) + p.SetState(1361) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -13702,11 +14054,11 @@ func (p *MDLParser) AlterUserRoleStatement() (localctx IAlterUserRoleStatementCo } } { - p.SetState(1359) + p.SetState(1362) p.ModuleRoleList() } { - p.SetState(1360) + p.SetState(1363) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -13828,12 +14180,22 @@ func (s *DropUserRoleStatementContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *DropUserRoleStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDropUserRoleStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DropUserRoleStatement() (localctx IDropUserRoleStatementContext) { localctx = NewDropUserRoleStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 54, MDLParserRULE_dropUserRoleStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1364) + p.SetState(1367) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -13841,7 +14203,7 @@ func (p *MDLParser) DropUserRoleStatement() (localctx IDropUserRoleStatementCont } } { - p.SetState(1365) + p.SetState(1368) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -13849,7 +14211,7 @@ func (p *MDLParser) DropUserRoleStatement() (localctx IDropUserRoleStatementCont } } { - p.SetState(1366) + p.SetState(1369) p.Match(MDLParserROLE) if p.HasError() { // Recognition error - abort rule @@ -13857,7 +14219,7 @@ func (p *MDLParser) DropUserRoleStatement() (localctx IDropUserRoleStatementCont } } { - p.SetState(1367) + p.SetState(1370) p.IdentifierOrKeyword() } @@ -14020,6 +14382,16 @@ func (s *GrantEntityAccessStatementContext) ExitRule(listener antlr.ParseTreeLis } } +func (s *GrantEntityAccessStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitGrantEntityAccessStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) GrantEntityAccessStatement() (localctx IGrantEntityAccessStatementContext) { localctx = NewGrantEntityAccessStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 56, MDLParserRULE_grantEntityAccessStatement) @@ -14027,7 +14399,7 @@ func (p *MDLParser) GrantEntityAccessStatement() (localctx IGrantEntityAccessSta p.EnterOuterAlt(localctx, 1) { - p.SetState(1369) + p.SetState(1372) p.Match(MDLParserGRANT) if p.HasError() { // Recognition error - abort rule @@ -14035,11 +14407,11 @@ func (p *MDLParser) GrantEntityAccessStatement() (localctx IGrantEntityAccessSta } } { - p.SetState(1370) + p.SetState(1373) p.ModuleRoleList() } { - p.SetState(1371) + p.SetState(1374) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -14047,11 +14419,11 @@ func (p *MDLParser) GrantEntityAccessStatement() (localctx IGrantEntityAccessSta } } { - p.SetState(1372) + p.SetState(1375) p.QualifiedName() } { - p.SetState(1373) + p.SetState(1376) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -14059,18 +14431,18 @@ func (p *MDLParser) GrantEntityAccessStatement() (localctx IGrantEntityAccessSta } } { - p.SetState(1374) + p.SetState(1377) p.EntityAccessRightList() } { - p.SetState(1375) + p.SetState(1378) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1378) + p.SetState(1381) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -14079,7 +14451,7 @@ func (p *MDLParser) GrantEntityAccessStatement() (localctx IGrantEntityAccessSta if _la == MDLParserWHERE { { - p.SetState(1376) + p.SetState(1379) p.Match(MDLParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -14087,7 +14459,7 @@ func (p *MDLParser) GrantEntityAccessStatement() (localctx IGrantEntityAccessSta } } { - p.SetState(1377) + p.SetState(1380) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -14219,12 +14591,22 @@ func (s *RevokeEntityAccessStatementContext) ExitRule(listener antlr.ParseTreeLi } } +func (s *RevokeEntityAccessStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRevokeEntityAccessStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RevokeEntityAccessStatement() (localctx IRevokeEntityAccessStatementContext) { localctx = NewRevokeEntityAccessStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 58, MDLParserRULE_revokeEntityAccessStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1380) + p.SetState(1383) p.Match(MDLParserREVOKE) if p.HasError() { // Recognition error - abort rule @@ -14232,11 +14614,11 @@ func (p *MDLParser) RevokeEntityAccessStatement() (localctx IRevokeEntityAccessS } } { - p.SetState(1381) + p.SetState(1384) p.ModuleRoleList() } { - p.SetState(1382) + p.SetState(1385) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -14244,7 +14626,7 @@ func (p *MDLParser) RevokeEntityAccessStatement() (localctx IRevokeEntityAccessS } } { - p.SetState(1383) + p.SetState(1386) p.QualifiedName() } @@ -14385,12 +14767,22 @@ func (s *GrantMicroflowAccessStatementContext) ExitRule(listener antlr.ParseTree } } +func (s *GrantMicroflowAccessStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitGrantMicroflowAccessStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) GrantMicroflowAccessStatement() (localctx IGrantMicroflowAccessStatementContext) { localctx = NewGrantMicroflowAccessStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 60, MDLParserRULE_grantMicroflowAccessStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1385) + p.SetState(1388) p.Match(MDLParserGRANT) if p.HasError() { // Recognition error - abort rule @@ -14398,7 +14790,7 @@ func (p *MDLParser) GrantMicroflowAccessStatement() (localctx IGrantMicroflowAcc } } { - p.SetState(1386) + p.SetState(1389) p.Match(MDLParserEXECUTE) if p.HasError() { // Recognition error - abort rule @@ -14406,7 +14798,7 @@ func (p *MDLParser) GrantMicroflowAccessStatement() (localctx IGrantMicroflowAcc } } { - p.SetState(1387) + p.SetState(1390) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -14414,7 +14806,7 @@ func (p *MDLParser) GrantMicroflowAccessStatement() (localctx IGrantMicroflowAcc } } { - p.SetState(1388) + p.SetState(1391) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -14422,11 +14814,11 @@ func (p *MDLParser) GrantMicroflowAccessStatement() (localctx IGrantMicroflowAcc } } { - p.SetState(1389) + p.SetState(1392) p.QualifiedName() } { - p.SetState(1390) + p.SetState(1393) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -14434,7 +14826,7 @@ func (p *MDLParser) GrantMicroflowAccessStatement() (localctx IGrantMicroflowAcc } } { - p.SetState(1391) + p.SetState(1394) p.ModuleRoleList() } @@ -14575,12 +14967,22 @@ func (s *RevokeMicroflowAccessStatementContext) ExitRule(listener antlr.ParseTre } } +func (s *RevokeMicroflowAccessStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRevokeMicroflowAccessStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RevokeMicroflowAccessStatement() (localctx IRevokeMicroflowAccessStatementContext) { localctx = NewRevokeMicroflowAccessStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 62, MDLParserRULE_revokeMicroflowAccessStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1393) + p.SetState(1396) p.Match(MDLParserREVOKE) if p.HasError() { // Recognition error - abort rule @@ -14588,7 +14990,7 @@ func (p *MDLParser) RevokeMicroflowAccessStatement() (localctx IRevokeMicroflowA } } { - p.SetState(1394) + p.SetState(1397) p.Match(MDLParserEXECUTE) if p.HasError() { // Recognition error - abort rule @@ -14596,7 +14998,7 @@ func (p *MDLParser) RevokeMicroflowAccessStatement() (localctx IRevokeMicroflowA } } { - p.SetState(1395) + p.SetState(1398) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -14604,7 +15006,7 @@ func (p *MDLParser) RevokeMicroflowAccessStatement() (localctx IRevokeMicroflowA } } { - p.SetState(1396) + p.SetState(1399) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -14612,11 +15014,11 @@ func (p *MDLParser) RevokeMicroflowAccessStatement() (localctx IRevokeMicroflowA } } { - p.SetState(1397) + p.SetState(1400) p.QualifiedName() } { - p.SetState(1398) + p.SetState(1401) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -14624,7 +15026,7 @@ func (p *MDLParser) RevokeMicroflowAccessStatement() (localctx IRevokeMicroflowA } } { - p.SetState(1399) + p.SetState(1402) p.ModuleRoleList() } @@ -14765,12 +15167,22 @@ func (s *GrantPageAccessStatementContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *GrantPageAccessStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitGrantPageAccessStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) GrantPageAccessStatement() (localctx IGrantPageAccessStatementContext) { localctx = NewGrantPageAccessStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 64, MDLParserRULE_grantPageAccessStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1401) + p.SetState(1404) p.Match(MDLParserGRANT) if p.HasError() { // Recognition error - abort rule @@ -14778,7 +15190,7 @@ func (p *MDLParser) GrantPageAccessStatement() (localctx IGrantPageAccessStateme } } { - p.SetState(1402) + p.SetState(1405) p.Match(MDLParserVIEW) if p.HasError() { // Recognition error - abort rule @@ -14786,7 +15198,7 @@ func (p *MDLParser) GrantPageAccessStatement() (localctx IGrantPageAccessStateme } } { - p.SetState(1403) + p.SetState(1406) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -14794,7 +15206,7 @@ func (p *MDLParser) GrantPageAccessStatement() (localctx IGrantPageAccessStateme } } { - p.SetState(1404) + p.SetState(1407) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -14802,11 +15214,11 @@ func (p *MDLParser) GrantPageAccessStatement() (localctx IGrantPageAccessStateme } } { - p.SetState(1405) + p.SetState(1408) p.QualifiedName() } { - p.SetState(1406) + p.SetState(1409) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -14814,7 +15226,7 @@ func (p *MDLParser) GrantPageAccessStatement() (localctx IGrantPageAccessStateme } } { - p.SetState(1407) + p.SetState(1410) p.ModuleRoleList() } @@ -14955,12 +15367,22 @@ func (s *RevokePageAccessStatementContext) ExitRule(listener antlr.ParseTreeList } } +func (s *RevokePageAccessStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRevokePageAccessStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RevokePageAccessStatement() (localctx IRevokePageAccessStatementContext) { localctx = NewRevokePageAccessStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 66, MDLParserRULE_revokePageAccessStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1409) + p.SetState(1412) p.Match(MDLParserREVOKE) if p.HasError() { // Recognition error - abort rule @@ -14968,7 +15390,7 @@ func (p *MDLParser) RevokePageAccessStatement() (localctx IRevokePageAccessState } } { - p.SetState(1410) + p.SetState(1413) p.Match(MDLParserVIEW) if p.HasError() { // Recognition error - abort rule @@ -14976,7 +15398,7 @@ func (p *MDLParser) RevokePageAccessStatement() (localctx IRevokePageAccessState } } { - p.SetState(1411) + p.SetState(1414) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -14984,7 +15406,7 @@ func (p *MDLParser) RevokePageAccessStatement() (localctx IRevokePageAccessState } } { - p.SetState(1412) + p.SetState(1415) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -14992,11 +15414,11 @@ func (p *MDLParser) RevokePageAccessStatement() (localctx IRevokePageAccessState } } { - p.SetState(1413) + p.SetState(1416) p.QualifiedName() } { - p.SetState(1414) + p.SetState(1417) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -15004,7 +15426,7 @@ func (p *MDLParser) RevokePageAccessStatement() (localctx IRevokePageAccessState } } { - p.SetState(1415) + p.SetState(1418) p.ModuleRoleList() } @@ -15145,12 +15567,22 @@ func (s *GrantWorkflowAccessStatementContext) ExitRule(listener antlr.ParseTreeL } } +func (s *GrantWorkflowAccessStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitGrantWorkflowAccessStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) GrantWorkflowAccessStatement() (localctx IGrantWorkflowAccessStatementContext) { localctx = NewGrantWorkflowAccessStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 68, MDLParserRULE_grantWorkflowAccessStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1417) + p.SetState(1420) p.Match(MDLParserGRANT) if p.HasError() { // Recognition error - abort rule @@ -15158,7 +15590,7 @@ func (p *MDLParser) GrantWorkflowAccessStatement() (localctx IGrantWorkflowAcces } } { - p.SetState(1418) + p.SetState(1421) p.Match(MDLParserEXECUTE) if p.HasError() { // Recognition error - abort rule @@ -15166,7 +15598,7 @@ func (p *MDLParser) GrantWorkflowAccessStatement() (localctx IGrantWorkflowAcces } } { - p.SetState(1419) + p.SetState(1422) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -15174,7 +15606,7 @@ func (p *MDLParser) GrantWorkflowAccessStatement() (localctx IGrantWorkflowAcces } } { - p.SetState(1420) + p.SetState(1423) p.Match(MDLParserWORKFLOW) if p.HasError() { // Recognition error - abort rule @@ -15182,11 +15614,11 @@ func (p *MDLParser) GrantWorkflowAccessStatement() (localctx IGrantWorkflowAcces } } { - p.SetState(1421) + p.SetState(1424) p.QualifiedName() } { - p.SetState(1422) + p.SetState(1425) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -15194,7 +15626,7 @@ func (p *MDLParser) GrantWorkflowAccessStatement() (localctx IGrantWorkflowAcces } } { - p.SetState(1423) + p.SetState(1426) p.ModuleRoleList() } @@ -15335,12 +15767,22 @@ func (s *RevokeWorkflowAccessStatementContext) ExitRule(listener antlr.ParseTree } } +func (s *RevokeWorkflowAccessStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRevokeWorkflowAccessStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RevokeWorkflowAccessStatement() (localctx IRevokeWorkflowAccessStatementContext) { localctx = NewRevokeWorkflowAccessStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 70, MDLParserRULE_revokeWorkflowAccessStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1425) + p.SetState(1428) p.Match(MDLParserREVOKE) if p.HasError() { // Recognition error - abort rule @@ -15348,7 +15790,7 @@ func (p *MDLParser) RevokeWorkflowAccessStatement() (localctx IRevokeWorkflowAcc } } { - p.SetState(1426) + p.SetState(1429) p.Match(MDLParserEXECUTE) if p.HasError() { // Recognition error - abort rule @@ -15356,7 +15798,7 @@ func (p *MDLParser) RevokeWorkflowAccessStatement() (localctx IRevokeWorkflowAcc } } { - p.SetState(1427) + p.SetState(1430) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -15364,7 +15806,7 @@ func (p *MDLParser) RevokeWorkflowAccessStatement() (localctx IRevokeWorkflowAcc } } { - p.SetState(1428) + p.SetState(1431) p.Match(MDLParserWORKFLOW) if p.HasError() { // Recognition error - abort rule @@ -15372,11 +15814,11 @@ func (p *MDLParser) RevokeWorkflowAccessStatement() (localctx IRevokeWorkflowAcc } } { - p.SetState(1429) + p.SetState(1432) p.QualifiedName() } { - p.SetState(1430) + p.SetState(1433) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -15384,7 +15826,7 @@ func (p *MDLParser) RevokeWorkflowAccessStatement() (localctx IRevokeWorkflowAcc } } { - p.SetState(1431) + p.SetState(1434) p.ModuleRoleList() } @@ -15530,12 +15972,22 @@ func (s *GrantODataServiceAccessStatementContext) ExitRule(listener antlr.ParseT } } +func (s *GrantODataServiceAccessStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitGrantODataServiceAccessStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) GrantODataServiceAccessStatement() (localctx IGrantODataServiceAccessStatementContext) { localctx = NewGrantODataServiceAccessStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 72, MDLParserRULE_grantODataServiceAccessStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1433) + p.SetState(1436) p.Match(MDLParserGRANT) if p.HasError() { // Recognition error - abort rule @@ -15543,7 +15995,7 @@ func (p *MDLParser) GrantODataServiceAccessStatement() (localctx IGrantODataServ } } { - p.SetState(1434) + p.SetState(1437) p.Match(MDLParserACCESS) if p.HasError() { // Recognition error - abort rule @@ -15551,7 +16003,7 @@ func (p *MDLParser) GrantODataServiceAccessStatement() (localctx IGrantODataServ } } { - p.SetState(1435) + p.SetState(1438) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -15559,7 +16011,7 @@ func (p *MDLParser) GrantODataServiceAccessStatement() (localctx IGrantODataServ } } { - p.SetState(1436) + p.SetState(1439) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -15567,7 +16019,7 @@ func (p *MDLParser) GrantODataServiceAccessStatement() (localctx IGrantODataServ } } { - p.SetState(1437) + p.SetState(1440) p.Match(MDLParserSERVICE) if p.HasError() { // Recognition error - abort rule @@ -15575,11 +16027,11 @@ func (p *MDLParser) GrantODataServiceAccessStatement() (localctx IGrantODataServ } } { - p.SetState(1438) + p.SetState(1441) p.QualifiedName() } { - p.SetState(1439) + p.SetState(1442) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -15587,7 +16039,7 @@ func (p *MDLParser) GrantODataServiceAccessStatement() (localctx IGrantODataServ } } { - p.SetState(1440) + p.SetState(1443) p.ModuleRoleList() } @@ -15733,12 +16185,22 @@ func (s *RevokeODataServiceAccessStatementContext) ExitRule(listener antlr.Parse } } +func (s *RevokeODataServiceAccessStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRevokeODataServiceAccessStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RevokeODataServiceAccessStatement() (localctx IRevokeODataServiceAccessStatementContext) { localctx = NewRevokeODataServiceAccessStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 74, MDLParserRULE_revokeODataServiceAccessStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1442) + p.SetState(1445) p.Match(MDLParserREVOKE) if p.HasError() { // Recognition error - abort rule @@ -15746,7 +16208,7 @@ func (p *MDLParser) RevokeODataServiceAccessStatement() (localctx IRevokeODataSe } } { - p.SetState(1443) + p.SetState(1446) p.Match(MDLParserACCESS) if p.HasError() { // Recognition error - abort rule @@ -15754,7 +16216,7 @@ func (p *MDLParser) RevokeODataServiceAccessStatement() (localctx IRevokeODataSe } } { - p.SetState(1444) + p.SetState(1447) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -15762,7 +16224,7 @@ func (p *MDLParser) RevokeODataServiceAccessStatement() (localctx IRevokeODataSe } } { - p.SetState(1445) + p.SetState(1448) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -15770,7 +16232,7 @@ func (p *MDLParser) RevokeODataServiceAccessStatement() (localctx IRevokeODataSe } } { - p.SetState(1446) + p.SetState(1449) p.Match(MDLParserSERVICE) if p.HasError() { // Recognition error - abort rule @@ -15778,11 +16240,11 @@ func (p *MDLParser) RevokeODataServiceAccessStatement() (localctx IRevokeODataSe } } { - p.SetState(1447) + p.SetState(1450) p.QualifiedName() } { - p.SetState(1448) + p.SetState(1451) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -15790,7 +16252,7 @@ func (p *MDLParser) RevokeODataServiceAccessStatement() (localctx IRevokeODataSe } } { - p.SetState(1449) + p.SetState(1452) p.ModuleRoleList() } @@ -15922,12 +16384,22 @@ func (s *AlterProjectSecurityStatementContext) ExitRule(listener antlr.ParseTree } } +func (s *AlterProjectSecurityStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterProjectSecurityStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecurityStatementContext) { localctx = NewAlterProjectSecurityStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 76, MDLParserRULE_alterProjectSecurityStatement) var _la int - p.SetState(1462) + p.SetState(1465) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -15937,7 +16409,7 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1451) + p.SetState(1454) p.Match(MDLParserALTER) if p.HasError() { // Recognition error - abort rule @@ -15945,7 +16417,7 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur } } { - p.SetState(1452) + p.SetState(1455) p.Match(MDLParserPROJECT) if p.HasError() { // Recognition error - abort rule @@ -15953,7 +16425,7 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur } } { - p.SetState(1453) + p.SetState(1456) p.Match(MDLParserSECURITY) if p.HasError() { // Recognition error - abort rule @@ -15961,7 +16433,7 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur } } { - p.SetState(1454) + p.SetState(1457) p.Match(MDLParserLEVEL) if p.HasError() { // Recognition error - abort rule @@ -15969,10 +16441,10 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur } } { - p.SetState(1455) + p.SetState(1458) _la = p.GetTokenStream().LA(1) - if !((int64((_la-447)) & ^0x3f) == 0 && ((int64(1)<<(_la-447))&4294967299) != 0) { + if !((int64((_la-450)) & ^0x3f) == 0 && ((int64(1)<<(_la-450))&4294967299) != 0) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -15983,7 +16455,7 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1456) + p.SetState(1459) p.Match(MDLParserALTER) if p.HasError() { // Recognition error - abort rule @@ -15991,7 +16463,7 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur } } { - p.SetState(1457) + p.SetState(1460) p.Match(MDLParserPROJECT) if p.HasError() { // Recognition error - abort rule @@ -15999,7 +16471,7 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur } } { - p.SetState(1458) + p.SetState(1461) p.Match(MDLParserSECURITY) if p.HasError() { // Recognition error - abort rule @@ -16007,7 +16479,7 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur } } { - p.SetState(1459) + p.SetState(1462) p.Match(MDLParserDEMO) if p.HasError() { // Recognition error - abort rule @@ -16015,7 +16487,7 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur } } { - p.SetState(1460) + p.SetState(1463) p.Match(MDLParserUSERS) if p.HasError() { // Recognition error - abort rule @@ -16023,7 +16495,7 @@ func (p *MDLParser) AlterProjectSecurityStatement() (localctx IAlterProjectSecur } } { - p.SetState(1461) + p.SetState(1464) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserON || _la == MDLParserOFF) { @@ -16226,6 +16698,16 @@ func (s *CreateDemoUserStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *CreateDemoUserStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateDemoUserStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatementContext) { localctx = NewCreateDemoUserStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 78, MDLParserRULE_createDemoUserStatement) @@ -16233,7 +16715,7 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement p.EnterOuterAlt(localctx, 1) { - p.SetState(1464) + p.SetState(1467) p.Match(MDLParserDEMO) if p.HasError() { // Recognition error - abort rule @@ -16241,7 +16723,7 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement } } { - p.SetState(1465) + p.SetState(1468) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -16249,7 +16731,7 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement } } { - p.SetState(1466) + p.SetState(1469) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -16257,7 +16739,7 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement } } { - p.SetState(1467) + p.SetState(1470) p.Match(MDLParserPASSWORD) if p.HasError() { // Recognition error - abort rule @@ -16265,14 +16747,14 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement } } { - p.SetState(1468) + p.SetState(1471) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1471) + p.SetState(1474) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16281,7 +16763,7 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement if _la == MDLParserENTITY { { - p.SetState(1469) + p.SetState(1472) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -16289,13 +16771,13 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement } } { - p.SetState(1470) + p.SetState(1473) p.QualifiedName() } } { - p.SetState(1473) + p.SetState(1476) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -16303,10 +16785,10 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement } } { - p.SetState(1474) + p.SetState(1477) p.IdentifierOrKeyword() } - p.SetState(1479) + p.SetState(1482) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16315,7 +16797,7 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement for _la == MDLParserCOMMA { { - p.SetState(1475) + p.SetState(1478) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -16323,11 +16805,11 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement } } { - p.SetState(1476) + p.SetState(1479) p.IdentifierOrKeyword() } - p.SetState(1481) + p.SetState(1484) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16335,7 +16817,7 @@ func (p *MDLParser) CreateDemoUserStatement() (localctx ICreateDemoUserStatement _la = p.GetTokenStream().LA(1) } { - p.SetState(1482) + p.SetState(1485) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -16441,12 +16923,22 @@ func (s *DropDemoUserStatementContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *DropDemoUserStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDropDemoUserStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DropDemoUserStatement() (localctx IDropDemoUserStatementContext) { localctx = NewDropDemoUserStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 80, MDLParserRULE_dropDemoUserStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(1484) + p.SetState(1487) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -16454,7 +16946,7 @@ func (p *MDLParser) DropDemoUserStatement() (localctx IDropDemoUserStatementCont } } { - p.SetState(1485) + p.SetState(1488) p.Match(MDLParserDEMO) if p.HasError() { // Recognition error - abort rule @@ -16462,7 +16954,7 @@ func (p *MDLParser) DropDemoUserStatement() (localctx IDropDemoUserStatementCont } } { - p.SetState(1486) + p.SetState(1489) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -16470,7 +16962,7 @@ func (p *MDLParser) DropDemoUserStatement() (localctx IDropDemoUserStatementCont } } { - p.SetState(1487) + p.SetState(1490) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -16588,6 +17080,16 @@ func (s *UpdateSecurityStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *UpdateSecurityStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitUpdateSecurityStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) UpdateSecurityStatement() (localctx IUpdateSecurityStatementContext) { localctx = NewUpdateSecurityStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 82, MDLParserRULE_updateSecurityStatement) @@ -16595,7 +17097,7 @@ func (p *MDLParser) UpdateSecurityStatement() (localctx IUpdateSecurityStatement p.EnterOuterAlt(localctx, 1) { - p.SetState(1489) + p.SetState(1492) p.Match(MDLParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -16603,14 +17105,14 @@ func (p *MDLParser) UpdateSecurityStatement() (localctx IUpdateSecurityStatement } } { - p.SetState(1490) + p.SetState(1493) p.Match(MDLParserSECURITY) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1493) + p.SetState(1496) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16619,7 +17121,7 @@ func (p *MDLParser) UpdateSecurityStatement() (localctx IUpdateSecurityStatement if _la == MDLParserIN { { - p.SetState(1491) + p.SetState(1494) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule @@ -16627,7 +17129,7 @@ func (p *MDLParser) UpdateSecurityStatement() (localctx IUpdateSecurityStatement } } { - p.SetState(1492) + p.SetState(1495) p.QualifiedName() } @@ -16764,6 +17266,16 @@ func (s *ModuleRoleListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ModuleRoleListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitModuleRoleList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ModuleRoleList() (localctx IModuleRoleListContext) { localctx = NewModuleRoleListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 84, MDLParserRULE_moduleRoleList) @@ -16771,10 +17283,10 @@ func (p *MDLParser) ModuleRoleList() (localctx IModuleRoleListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1495) + p.SetState(1498) p.QualifiedName() } - p.SetState(1500) + p.SetState(1503) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16783,7 +17295,7 @@ func (p *MDLParser) ModuleRoleList() (localctx IModuleRoleListContext) { for _la == MDLParserCOMMA { { - p.SetState(1496) + p.SetState(1499) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -16791,11 +17303,11 @@ func (p *MDLParser) ModuleRoleList() (localctx IModuleRoleListContext) { } } { - p.SetState(1497) + p.SetState(1500) p.QualifiedName() } - p.SetState(1502) + p.SetState(1505) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16934,6 +17446,16 @@ func (s *EntityAccessRightListContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *EntityAccessRightListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitEntityAccessRightList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) EntityAccessRightList() (localctx IEntityAccessRightListContext) { localctx = NewEntityAccessRightListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 86, MDLParserRULE_entityAccessRightList) @@ -16941,10 +17463,10 @@ func (p *MDLParser) EntityAccessRightList() (localctx IEntityAccessRightListCont p.EnterOuterAlt(localctx, 1) { - p.SetState(1503) + p.SetState(1506) p.EntityAccessRight() } - p.SetState(1508) + p.SetState(1511) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -16953,7 +17475,7 @@ func (p *MDLParser) EntityAccessRightList() (localctx IEntityAccessRightListCont for _la == MDLParserCOMMA { { - p.SetState(1504) + p.SetState(1507) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -16961,11 +17483,11 @@ func (p *MDLParser) EntityAccessRightList() (localctx IEntityAccessRightListCont } } { - p.SetState(1505) + p.SetState(1508) p.EntityAccessRight() } - p.SetState(1510) + p.SetState(1513) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17106,12 +17628,22 @@ func (s *EntityAccessRightContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *EntityAccessRightContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitEntityAccessRight(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { localctx = NewEntityAccessRightContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 88, MDLParserRULE_entityAccessRight) var _la int - p.SetState(1539) + p.SetState(1542) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17121,7 +17653,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1511) + p.SetState(1514) p.Match(MDLParserCREATE) if p.HasError() { // Recognition error - abort rule @@ -17132,7 +17664,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1512) + p.SetState(1515) p.Match(MDLParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -17143,7 +17675,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(1513) + p.SetState(1516) p.Match(MDLParserREAD) if p.HasError() { // Recognition error - abort rule @@ -17151,7 +17683,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { } } { - p.SetState(1514) + p.SetState(1517) p.Match(MDLParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -17162,7 +17694,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(1515) + p.SetState(1518) p.Match(MDLParserREAD) if p.HasError() { // Recognition error - abort rule @@ -17170,7 +17702,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { } } { - p.SetState(1516) + p.SetState(1519) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17178,14 +17710,14 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { } } { - p.SetState(1517) + p.SetState(1520) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1522) + p.SetState(1525) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17194,7 +17726,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { for _la == MDLParserCOMMA { { - p.SetState(1518) + p.SetState(1521) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -17202,7 +17734,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { } } { - p.SetState(1519) + p.SetState(1522) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -17210,7 +17742,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { } } - p.SetState(1524) + p.SetState(1527) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17218,7 +17750,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1525) + p.SetState(1528) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -17229,7 +17761,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(1526) + p.SetState(1529) p.Match(MDLParserWRITE) if p.HasError() { // Recognition error - abort rule @@ -17237,7 +17769,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { } } { - p.SetState(1527) + p.SetState(1530) p.Match(MDLParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -17248,7 +17780,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(1528) + p.SetState(1531) p.Match(MDLParserWRITE) if p.HasError() { // Recognition error - abort rule @@ -17256,7 +17788,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { } } { - p.SetState(1529) + p.SetState(1532) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17264,14 +17796,14 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { } } { - p.SetState(1530) + p.SetState(1533) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1535) + p.SetState(1538) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17280,7 +17812,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { for _la == MDLParserCOMMA { { - p.SetState(1531) + p.SetState(1534) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -17288,7 +17820,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { } } { - p.SetState(1532) + p.SetState(1535) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -17296,7 +17828,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { } } - p.SetState(1537) + p.SetState(1540) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17304,7 +17836,7 @@ func (p *MDLParser) EntityAccessRight() (localctx IEntityAccessRightContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(1538) + p.SetState(1541) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -17502,12 +18034,22 @@ func (s *CreateEntityStatementContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *CreateEntityStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateEntityStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementContext) { localctx = NewCreateEntityStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 90, MDLParserRULE_createEntityStatement) var _la int - p.SetState(1587) + p.SetState(1590) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17517,7 +18059,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont case MDLParserPERSISTENT: p.EnterOuterAlt(localctx, 1) { - p.SetState(1541) + p.SetState(1544) p.Match(MDLParserPERSISTENT) if p.HasError() { // Recognition error - abort rule @@ -17525,7 +18067,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont } } { - p.SetState(1542) + p.SetState(1545) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -17533,10 +18075,10 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont } } { - p.SetState(1543) + p.SetState(1546) p.QualifiedName() } - p.SetState(1545) + p.SetState(1548) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17545,12 +18087,12 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont if _la == MDLParserGENERALIZATION || _la == MDLParserEXTENDS { { - p.SetState(1544) + p.SetState(1547) p.GeneralizationClause() } } - p.SetState(1548) + p.SetState(1551) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17559,7 +18101,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont if _la == MDLParserINDEX || _la == MDLParserCOMMENT || _la == MDLParserLPAREN { { - p.SetState(1547) + p.SetState(1550) p.EntityBody() } @@ -17568,7 +18110,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont case MDLParserNON_PERSISTENT: p.EnterOuterAlt(localctx, 2) { - p.SetState(1550) + p.SetState(1553) p.Match(MDLParserNON_PERSISTENT) if p.HasError() { // Recognition error - abort rule @@ -17576,7 +18118,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont } } { - p.SetState(1551) + p.SetState(1554) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -17584,10 +18126,10 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont } } { - p.SetState(1552) + p.SetState(1555) p.QualifiedName() } - p.SetState(1554) + p.SetState(1557) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17596,12 +18138,12 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont if _la == MDLParserGENERALIZATION || _la == MDLParserEXTENDS { { - p.SetState(1553) + p.SetState(1556) p.GeneralizationClause() } } - p.SetState(1557) + p.SetState(1560) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17610,7 +18152,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont if _la == MDLParserINDEX || _la == MDLParserCOMMENT || _la == MDLParserLPAREN { { - p.SetState(1556) + p.SetState(1559) p.EntityBody() } @@ -17619,7 +18161,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont case MDLParserVIEW: p.EnterOuterAlt(localctx, 3) { - p.SetState(1559) + p.SetState(1562) p.Match(MDLParserVIEW) if p.HasError() { // Recognition error - abort rule @@ -17627,7 +18169,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont } } { - p.SetState(1560) + p.SetState(1563) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -17635,10 +18177,10 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont } } { - p.SetState(1561) + p.SetState(1564) p.QualifiedName() } - p.SetState(1563) + p.SetState(1566) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17647,20 +18189,20 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont if _la == MDLParserINDEX || _la == MDLParserCOMMENT || _la == MDLParserLPAREN { { - p.SetState(1562) + p.SetState(1565) p.EntityBody() } } { - p.SetState(1565) + p.SetState(1568) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1567) + p.SetState(1570) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17669,7 +18211,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont if _la == MDLParserLPAREN { { - p.SetState(1566) + p.SetState(1569) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -17679,10 +18221,10 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont } { - p.SetState(1569) + p.SetState(1572) p.OqlQuery() } - p.SetState(1571) + p.SetState(1574) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17691,7 +18233,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont if _la == MDLParserRPAREN { { - p.SetState(1570) + p.SetState(1573) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -17704,7 +18246,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont case MDLParserEXTERNAL: p.EnterOuterAlt(localctx, 4) { - p.SetState(1573) + p.SetState(1576) p.Match(MDLParserEXTERNAL) if p.HasError() { // Recognition error - abort rule @@ -17712,7 +18254,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont } } { - p.SetState(1574) + p.SetState(1577) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -17720,10 +18262,10 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont } } { - p.SetState(1575) + p.SetState(1578) p.QualifiedName() } - p.SetState(1577) + p.SetState(1580) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17732,7 +18274,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont if _la == MDLParserINDEX || _la == MDLParserCOMMENT || _la == MDLParserLPAREN { { - p.SetState(1576) + p.SetState(1579) p.EntityBody() } @@ -17741,7 +18283,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont case MDLParserENTITY: p.EnterOuterAlt(localctx, 5) { - p.SetState(1579) + p.SetState(1582) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -17749,10 +18291,10 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont } } { - p.SetState(1580) + p.SetState(1583) p.QualifiedName() } - p.SetState(1582) + p.SetState(1585) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17761,12 +18303,12 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont if _la == MDLParserGENERALIZATION || _la == MDLParserEXTENDS { { - p.SetState(1581) + p.SetState(1584) p.GeneralizationClause() } } - p.SetState(1585) + p.SetState(1588) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17775,7 +18317,7 @@ func (p *MDLParser) CreateEntityStatement() (localctx ICreateEntityStatementCont if _la == MDLParserINDEX || _la == MDLParserCOMMENT || _la == MDLParserLPAREN { { - p.SetState(1584) + p.SetState(1587) p.EntityBody() } @@ -17891,10 +18433,20 @@ func (s *GeneralizationClauseContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *GeneralizationClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitGeneralizationClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) GeneralizationClause() (localctx IGeneralizationClauseContext) { localctx = NewGeneralizationClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 92, MDLParserRULE_generalizationClause) - p.SetState(1593) + p.SetState(1596) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -17904,7 +18456,7 @@ func (p *MDLParser) GeneralizationClause() (localctx IGeneralizationClauseContex case MDLParserEXTENDS: p.EnterOuterAlt(localctx, 1) { - p.SetState(1589) + p.SetState(1592) p.Match(MDLParserEXTENDS) if p.HasError() { // Recognition error - abort rule @@ -17912,14 +18464,14 @@ func (p *MDLParser) GeneralizationClause() (localctx IGeneralizationClauseContex } } { - p.SetState(1590) + p.SetState(1593) p.QualifiedName() } case MDLParserGENERALIZATION: p.EnterOuterAlt(localctx, 2) { - p.SetState(1591) + p.SetState(1594) p.Match(MDLParserGENERALIZATION) if p.HasError() { // Recognition error - abort rule @@ -17927,7 +18479,7 @@ func (p *MDLParser) GeneralizationClause() (localctx IGeneralizationClauseContex } } { - p.SetState(1592) + p.SetState(1595) p.QualifiedName() } @@ -18058,12 +18610,22 @@ func (s *EntityBodyContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *EntityBodyContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitEntityBody(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) EntityBody() (localctx IEntityBodyContext) { localctx = NewEntityBodyContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 94, MDLParserRULE_entityBody) var _la int - p.SetState(1604) + p.SetState(1607) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18073,36 +18635,36 @@ func (p *MDLParser) EntityBody() (localctx IEntityBodyContext) { case MDLParserLPAREN: p.EnterOuterAlt(localctx, 1) { - p.SetState(1595) + p.SetState(1598) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1597) + p.SetState(1600) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&25356937159770116) != 0) || ((int64((_la-69)) & ^0x3f) == 0 && ((int64(1)<<(_la-69))&36169534507319297) != 0) || ((int64((_la-135)) & ^0x3f) == 0 && ((int64(1)<<(_la-135))&2819253375860736011) != 0) || ((int64((_la-205)) & ^0x3f) == 0 && ((int64(1)<<(_la-205))&4398180887567) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&180143985430364191) != 0) || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&5647091739131907) != 0) || ((int64((_la-416)) & ^0x3f) == 0 && ((int64(1)<<(_la-416))&-6917528058991722373) != 0) || ((int64((_la-504)) & ^0x3f) == 0 && ((int64(1)<<(_la-504))&10241) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&25357212037677060) != 0) || ((int64((_la-69)) & ^0x3f) == 0 && ((int64(1)<<(_la-69))&36169534507319297) != 0) || ((int64((_la-135)) & ^0x3f) == 0 && ((int64(1)<<(_la-135))&5638506742594666507) != 0) || ((int64((_la-206)) & ^0x3f) == 0 && ((int64(1)<<(_la-206))&17592723074063) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&180143985430364191) != 0) || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&5647091739131907) != 0) || ((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&-6917528058991722373) != 0) || ((int64((_la-507)) & ^0x3f) == 0 && ((int64(1)<<(_la-507))&10241) != 0) { { - p.SetState(1596) + p.SetState(1599) p.AttributeDefinitionList() } } { - p.SetState(1599) + p.SetState(1602) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1601) + p.SetState(1604) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18111,7 +18673,7 @@ func (p *MDLParser) EntityBody() (localctx IEntityBodyContext) { if _la == MDLParserINDEX || _la == MDLParserCOMMENT { { - p.SetState(1600) + p.SetState(1603) p.EntityOptions() } @@ -18120,7 +18682,7 @@ func (p *MDLParser) EntityBody() (localctx IEntityBodyContext) { case MDLParserINDEX, MDLParserCOMMENT: p.EnterOuterAlt(localctx, 2) { - p.SetState(1603) + p.SetState(1606) p.EntityOptions() } @@ -18260,6 +18822,16 @@ func (s *EntityOptionsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *EntityOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitEntityOptions(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) EntityOptions() (localctx IEntityOptionsContext) { localctx = NewEntityOptionsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 96, MDLParserRULE_entityOptions) @@ -18267,10 +18839,10 @@ func (p *MDLParser) EntityOptions() (localctx IEntityOptionsContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1606) + p.SetState(1609) p.EntityOption() } - p.SetState(1613) + p.SetState(1616) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18278,7 +18850,7 @@ func (p *MDLParser) EntityOptions() (localctx IEntityOptionsContext) { _la = p.GetTokenStream().LA(1) for _la == MDLParserINDEX || _la == MDLParserCOMMENT || _la == MDLParserCOMMA { - p.SetState(1608) + p.SetState(1611) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18287,7 +18859,7 @@ func (p *MDLParser) EntityOptions() (localctx IEntityOptionsContext) { if _la == MDLParserCOMMA { { - p.SetState(1607) + p.SetState(1610) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -18297,11 +18869,11 @@ func (p *MDLParser) EntityOptions() (localctx IEntityOptionsContext) { } { - p.SetState(1610) + p.SetState(1613) p.EntityOption() } - p.SetState(1615) + p.SetState(1618) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18419,10 +18991,20 @@ func (s *EntityOptionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *EntityOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitEntityOption(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) EntityOption() (localctx IEntityOptionContext) { localctx = NewEntityOptionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 98, MDLParserRULE_entityOption) - p.SetState(1620) + p.SetState(1623) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18432,7 +19014,7 @@ func (p *MDLParser) EntityOption() (localctx IEntityOptionContext) { case MDLParserCOMMENT: p.EnterOuterAlt(localctx, 1) { - p.SetState(1616) + p.SetState(1619) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -18440,7 +19022,7 @@ func (p *MDLParser) EntityOption() (localctx IEntityOptionContext) { } } { - p.SetState(1617) + p.SetState(1620) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -18451,7 +19033,7 @@ func (p *MDLParser) EntityOption() (localctx IEntityOptionContext) { case MDLParserINDEX: p.EnterOuterAlt(localctx, 2) { - p.SetState(1618) + p.SetState(1621) p.Match(MDLParserINDEX) if p.HasError() { // Recognition error - abort rule @@ -18459,7 +19041,7 @@ func (p *MDLParser) EntityOption() (localctx IEntityOptionContext) { } } { - p.SetState(1619) + p.SetState(1622) p.IndexDefinition() } @@ -18599,6 +19181,16 @@ func (s *AttributeDefinitionListContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *AttributeDefinitionListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAttributeDefinitionList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AttributeDefinitionList() (localctx IAttributeDefinitionListContext) { localctx = NewAttributeDefinitionListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 100, MDLParserRULE_attributeDefinitionList) @@ -18606,10 +19198,10 @@ func (p *MDLParser) AttributeDefinitionList() (localctx IAttributeDefinitionList p.EnterOuterAlt(localctx, 1) { - p.SetState(1622) + p.SetState(1625) p.AttributeDefinition() } - p.SetState(1627) + p.SetState(1630) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18618,7 +19210,7 @@ func (p *MDLParser) AttributeDefinitionList() (localctx IAttributeDefinitionList for _la == MDLParserCOMMA { { - p.SetState(1623) + p.SetState(1626) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -18626,11 +19218,11 @@ func (p *MDLParser) AttributeDefinitionList() (localctx IAttributeDefinitionList } } { - p.SetState(1624) + p.SetState(1627) p.AttributeDefinition() } - p.SetState(1629) + p.SetState(1632) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18858,13 +19450,23 @@ func (s *AttributeDefinitionContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *AttributeDefinitionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAttributeDefinition(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AttributeDefinition() (localctx IAttributeDefinitionContext) { localctx = NewAttributeDefinitionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 102, MDLParserRULE_attributeDefinition) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1631) + p.SetState(1634) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18873,12 +19475,12 @@ func (p *MDLParser) AttributeDefinition() (localctx IAttributeDefinitionContext) if _la == MDLParserDOC_COMMENT { { - p.SetState(1630) + p.SetState(1633) p.DocComment() } } - p.SetState(1636) + p.SetState(1639) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18887,11 +19489,11 @@ func (p *MDLParser) AttributeDefinition() (localctx IAttributeDefinitionContext) for _la == MDLParserAT { { - p.SetState(1633) + p.SetState(1636) p.Annotation() } - p.SetState(1638) + p.SetState(1641) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18899,11 +19501,11 @@ func (p *MDLParser) AttributeDefinition() (localctx IAttributeDefinitionContext) _la = p.GetTokenStream().LA(1) } { - p.SetState(1639) + p.SetState(1642) p.AttributeName() } { - p.SetState(1640) + p.SetState(1643) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -18911,23 +19513,23 @@ func (p *MDLParser) AttributeDefinition() (localctx IAttributeDefinitionContext) } } { - p.SetState(1641) + p.SetState(1644) p.DataType() } - p.SetState(1645) + p.SetState(1648) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for _la == MDLParserNOT_NULL || ((int64((_la-287)) & ^0x3f) == 0 && ((int64(1)<<(_la-287))&8405377) != 0) { + for _la == MDLParserNOT_NULL || ((int64((_la-290)) & ^0x3f) == 0 && ((int64(1)<<(_la-290))&8405377) != 0) { { - p.SetState(1642) + p.SetState(1645) p.AttributeConstraint() } - p.SetState(1647) + p.SetState(1650) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -18959,6 +19561,7 @@ type IAttributeNameContext interface { IDENTIFIER() antlr.TerminalNode QUOTED_IDENTIFIER() antlr.TerminalNode CommonNameKeyword() ICommonNameKeywordContext + ATTRIBUTE() antlr.TerminalNode // IsAttributeNameContext differentiates from other interfaces. IsAttributeNameContext() @@ -19020,6 +19623,10 @@ func (s *AttributeNameContext) CommonNameKeyword() ICommonNameKeywordContext { return t.(ICommonNameKeywordContext) } +func (s *AttributeNameContext) ATTRIBUTE() antlr.TerminalNode { + return s.GetToken(MDLParserATTRIBUTE, 0) +} + func (s *AttributeNameContext) GetRuleContext() antlr.RuleContext { return s } @@ -19040,10 +19647,20 @@ func (s *AttributeNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AttributeNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAttributeName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AttributeName() (localctx IAttributeNameContext) { localctx = NewAttributeNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 104, MDLParserRULE_attributeName) - p.SetState(1651) + p.SetState(1655) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19053,7 +19670,7 @@ func (p *MDLParser) AttributeName() (localctx IAttributeNameContext) { case MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(1648) + p.SetState(1651) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -19064,7 +19681,7 @@ func (p *MDLParser) AttributeName() (localctx IAttributeNameContext) { case MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(1649) + p.SetState(1652) p.Match(MDLParserQUOTED_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -19075,10 +19692,21 @@ func (p *MDLParser) AttributeName() (localctx IAttributeNameContext) { case MDLParserINDEX, MDLParserOWNER, MDLParserREFERENCE, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserDEBUG, MDLParserACTION, MDLParserSORT, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserTITLE, MDLParserLABEL, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserCONTENT, MDLParserTABLETWIDTH, MDLParserPHONEWIDTH, MDLParserCLASS, MDLParserSTYLE, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserEDITABLE, MDLParserVISIBLE, MDLParserSUCCESS, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserERROR, MDLParserRANGE, MDLParserSTATUS, MDLParserVERSION, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserNAVIGATION, MDLParserHOME, MDLParserCHECK, MDLParserTEXT, MDLParserMESSAGE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserFORMAT, MDLParserROLE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserDESCRIPTION, MDLParserOFF: p.EnterOuterAlt(localctx, 3) { - p.SetState(1650) + p.SetState(1653) p.CommonNameKeyword() } + case MDLParserATTRIBUTE: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1654) + p.Match(MDLParserATTRIBUTE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + default: p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit @@ -19263,12 +19891,22 @@ func (s *AttributeConstraintContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *AttributeConstraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAttributeConstraint(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) { localctx = NewAttributeConstraintContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 106, MDLParserRULE_attributeConstraint) var _la int - p.SetState(1686) + p.SetState(1690) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19278,14 +19916,14 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) case MDLParserNOT_NULL: p.EnterOuterAlt(localctx, 1) { - p.SetState(1653) + p.SetState(1657) p.Match(MDLParserNOT_NULL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1656) + p.SetState(1660) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19294,7 +19932,7 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) if _la == MDLParserERROR { { - p.SetState(1654) + p.SetState(1658) p.Match(MDLParserERROR) if p.HasError() { // Recognition error - abort rule @@ -19302,7 +19940,7 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) } } { - p.SetState(1655) + p.SetState(1659) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -19315,7 +19953,7 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) case MDLParserNOT: p.EnterOuterAlt(localctx, 2) { - p.SetState(1658) + p.SetState(1662) p.Match(MDLParserNOT) if p.HasError() { // Recognition error - abort rule @@ -19323,14 +19961,14 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) } } { - p.SetState(1659) + p.SetState(1663) p.Match(MDLParserNULL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1662) + p.SetState(1666) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19339,7 +19977,7 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) if _la == MDLParserERROR { { - p.SetState(1660) + p.SetState(1664) p.Match(MDLParserERROR) if p.HasError() { // Recognition error - abort rule @@ -19347,7 +19985,7 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) } } { - p.SetState(1661) + p.SetState(1665) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -19360,14 +19998,14 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) case MDLParserUNIQUE: p.EnterOuterAlt(localctx, 3) { - p.SetState(1664) + p.SetState(1668) p.Match(MDLParserUNIQUE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1667) + p.SetState(1671) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19376,7 +20014,7 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) if _la == MDLParserERROR { { - p.SetState(1665) + p.SetState(1669) p.Match(MDLParserERROR) if p.HasError() { // Recognition error - abort rule @@ -19384,7 +20022,7 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) } } { - p.SetState(1666) + p.SetState(1670) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -19397,14 +20035,14 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) case MDLParserDEFAULT: p.EnterOuterAlt(localctx, 4) { - p.SetState(1669) + p.SetState(1673) p.Match(MDLParserDEFAULT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1672) + p.SetState(1676) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19413,13 +20051,13 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 103, p.GetParserRuleContext()) { case 1: { - p.SetState(1670) + p.SetState(1674) p.Literal() } case 2: { - p.SetState(1671) + p.SetState(1675) p.Expression() } @@ -19430,14 +20068,14 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) case MDLParserREQUIRED: p.EnterOuterAlt(localctx, 5) { - p.SetState(1674) + p.SetState(1678) p.Match(MDLParserREQUIRED) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1677) + p.SetState(1681) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19446,7 +20084,7 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) if _la == MDLParserERROR { { - p.SetState(1675) + p.SetState(1679) p.Match(MDLParserERROR) if p.HasError() { // Recognition error - abort rule @@ -19454,7 +20092,7 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) } } { - p.SetState(1676) + p.SetState(1680) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -19467,23 +20105,23 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) case MDLParserCALCULATED: p.EnterOuterAlt(localctx, 6) { - p.SetState(1679) + p.SetState(1683) p.Match(MDLParserCALCULATED) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1684) + p.SetState(1688) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 106, p.GetParserRuleContext()) == 1 { - p.SetState(1681) + p.SetState(1685) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 105, p.GetParserRuleContext()) == 1 { { - p.SetState(1680) + p.SetState(1684) p.Match(MDLParserBY) if p.HasError() { // Recognition error - abort rule @@ -19495,7 +20133,7 @@ func (p *MDLParser) AttributeConstraint() (localctx IAttributeConstraintContext) goto errorExit } { - p.SetState(1683) + p.SetState(1687) p.QualifiedName() } @@ -19531,8 +20169,9 @@ type IDataTypeContext interface { // Getter signatures STRING_TYPE() antlr.TerminalNode LPAREN() antlr.TerminalNode - NUMBER_LITERAL() antlr.TerminalNode RPAREN() antlr.TerminalNode + NUMBER_LITERAL() antlr.TerminalNode + IDENTIFIER() antlr.TerminalNode INTEGER_TYPE() antlr.TerminalNode LONG_TYPE() antlr.TerminalNode DECIMAL_TYPE() antlr.TerminalNode @@ -19548,7 +20187,6 @@ type IDataTypeContext interface { TemplateContext() ITemplateContextContext ENTITY() antlr.TerminalNode LESS_THAN() antlr.TerminalNode - IDENTIFIER() antlr.TerminalNode GREATER_THAN() antlr.TerminalNode ENUM_TYPE() antlr.TerminalNode QualifiedName() IQualifiedNameContext @@ -19599,12 +20237,16 @@ func (s *DataTypeContext) LPAREN() antlr.TerminalNode { return s.GetToken(MDLParserLPAREN, 0) } +func (s *DataTypeContext) RPAREN() antlr.TerminalNode { + return s.GetToken(MDLParserRPAREN, 0) +} + func (s *DataTypeContext) NUMBER_LITERAL() antlr.TerminalNode { return s.GetToken(MDLParserNUMBER_LITERAL, 0) } -func (s *DataTypeContext) RPAREN() antlr.TerminalNode { - return s.GetToken(MDLParserRPAREN, 0) +func (s *DataTypeContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(MDLParserIDENTIFIER, 0) } func (s *DataTypeContext) INTEGER_TYPE() antlr.TerminalNode { @@ -19679,10 +20321,6 @@ func (s *DataTypeContext) LESS_THAN() antlr.TerminalNode { return s.GetToken(MDLParserLESS_THAN, 0) } -func (s *DataTypeContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(MDLParserIDENTIFIER, 0) -} - func (s *DataTypeContext) GREATER_THAN() antlr.TerminalNode { return s.GetToken(MDLParserGREATER_THAN, 0) } @@ -19735,12 +20373,22 @@ func (s *DataTypeContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DataTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDataType(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DataType() (localctx IDataTypeContext) { localctx = NewDataTypeContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 108, MDLParserRULE_dataType) var _la int - p.SetState(1724) + p.SetState(1728) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19750,14 +20398,14 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1688) + p.SetState(1692) p.Match(MDLParserSTRING_TYPE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1692) + p.SetState(1696) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -19766,7 +20414,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { if _la == MDLParserLPAREN { { - p.SetState(1689) + p.SetState(1693) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -19774,15 +20422,18 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { } } { - p.SetState(1690) - p.Match(MDLParserNUMBER_LITERAL) - if p.HasError() { - // Recognition error - abort rule - goto errorExit + p.SetState(1694) + _la = p.GetTokenStream().LA(1) + + if !(_la == MDLParserNUMBER_LITERAL || _la == MDLParserIDENTIFIER) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() } } { - p.SetState(1691) + p.SetState(1695) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19795,7 +20446,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1694) + p.SetState(1698) p.Match(MDLParserINTEGER_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19806,7 +20457,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(1695) + p.SetState(1699) p.Match(MDLParserLONG_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19817,7 +20468,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(1696) + p.SetState(1700) p.Match(MDLParserDECIMAL_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19828,7 +20479,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(1697) + p.SetState(1701) p.Match(MDLParserBOOLEAN_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19839,7 +20490,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(1698) + p.SetState(1702) p.Match(MDLParserDATETIME_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19850,7 +20501,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(1699) + p.SetState(1703) p.Match(MDLParserDATE_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19861,7 +20512,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(1700) + p.SetState(1704) p.Match(MDLParserAUTONUMBER_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19872,7 +20523,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(1701) + p.SetState(1705) p.Match(MDLParserBINARY_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19883,7 +20534,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(1702) + p.SetState(1706) p.Match(MDLParserHASHEDSTRING_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19894,7 +20545,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(1703) + p.SetState(1707) p.Match(MDLParserCURRENCY_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19905,7 +20556,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(1704) + p.SetState(1708) p.Match(MDLParserFLOAT_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19916,7 +20567,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(1705) + p.SetState(1709) p.Match(MDLParserSTRINGTEMPLATE_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19924,7 +20575,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { } } { - p.SetState(1706) + p.SetState(1710) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -19932,11 +20583,11 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { } } { - p.SetState(1707) + p.SetState(1711) p.TemplateContext() } { - p.SetState(1708) + p.SetState(1712) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -19947,7 +20598,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(1710) + p.SetState(1714) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -19955,7 +20606,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { } } { - p.SetState(1711) + p.SetState(1715) p.Match(MDLParserLESS_THAN) if p.HasError() { // Recognition error - abort rule @@ -19963,7 +20614,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { } } { - p.SetState(1712) + p.SetState(1716) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -19971,7 +20622,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { } } { - p.SetState(1713) + p.SetState(1717) p.Match(MDLParserGREATER_THAN) if p.HasError() { // Recognition error - abort rule @@ -19982,7 +20633,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 15: p.EnterOuterAlt(localctx, 15) { - p.SetState(1714) + p.SetState(1718) p.Match(MDLParserENUM_TYPE) if p.HasError() { // Recognition error - abort rule @@ -19990,14 +20641,14 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { } } { - p.SetState(1715) + p.SetState(1719) p.QualifiedName() } case 16: p.EnterOuterAlt(localctx, 16) { - p.SetState(1716) + p.SetState(1720) p.Match(MDLParserENUMERATION) if p.HasError() { // Recognition error - abort rule @@ -20005,7 +20656,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { } } { - p.SetState(1717) + p.SetState(1721) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -20013,11 +20664,11 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { } } { - p.SetState(1718) + p.SetState(1722) p.QualifiedName() } { - p.SetState(1719) + p.SetState(1723) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20028,7 +20679,7 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { case 17: p.EnterOuterAlt(localctx, 17) { - p.SetState(1721) + p.SetState(1725) p.Match(MDLParserLIST_OF) if p.HasError() { // Recognition error - abort rule @@ -20036,14 +20687,14 @@ func (p *MDLParser) DataType() (localctx IDataTypeContext) { } } { - p.SetState(1722) + p.SetState(1726) p.QualifiedName() } case 18: p.EnterOuterAlt(localctx, 18) { - p.SetState(1723) + p.SetState(1727) p.QualifiedName() } @@ -20139,6 +20790,16 @@ func (s *TemplateContextContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *TemplateContextContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitTemplateContext(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) TemplateContext() (localctx ITemplateContextContext) { localctx = NewTemplateContextContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 110, MDLParserRULE_templateContext) @@ -20146,7 +20807,7 @@ func (p *MDLParser) TemplateContext() (localctx ITemplateContextContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1726) + p.SetState(1730) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserTEXT || _la == MDLParserSQL) { @@ -20180,8 +20841,9 @@ type INonListDataTypeContext interface { // Getter signatures STRING_TYPE() antlr.TerminalNode LPAREN() antlr.TerminalNode - NUMBER_LITERAL() antlr.TerminalNode RPAREN() antlr.TerminalNode + NUMBER_LITERAL() antlr.TerminalNode + IDENTIFIER() antlr.TerminalNode INTEGER_TYPE() antlr.TerminalNode LONG_TYPE() antlr.TerminalNode DECIMAL_TYPE() antlr.TerminalNode @@ -20241,12 +20903,16 @@ func (s *NonListDataTypeContext) LPAREN() antlr.TerminalNode { return s.GetToken(MDLParserLPAREN, 0) } +func (s *NonListDataTypeContext) RPAREN() antlr.TerminalNode { + return s.GetToken(MDLParserRPAREN, 0) +} + func (s *NonListDataTypeContext) NUMBER_LITERAL() antlr.TerminalNode { return s.GetToken(MDLParserNUMBER_LITERAL, 0) } -func (s *NonListDataTypeContext) RPAREN() antlr.TerminalNode { - return s.GetToken(MDLParserRPAREN, 0) +func (s *NonListDataTypeContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(MDLParserIDENTIFIER, 0) } func (s *NonListDataTypeContext) INTEGER_TYPE() antlr.TerminalNode { @@ -20337,10 +21003,22 @@ func (s *NonListDataTypeContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *NonListDataTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitNonListDataType(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { localctx = NewNonListDataTypeContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 112, MDLParserRULE_nonListDataType) - p.SetState(1753) + var _la int + + p.SetState(1757) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20350,19 +21028,19 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1728) + p.SetState(1732) p.Match(MDLParserSTRING_TYPE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1732) + p.SetState(1736) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 110, p.GetParserRuleContext()) == 1 { { - p.SetState(1729) + p.SetState(1733) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -20370,15 +21048,18 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { } } { - p.SetState(1730) - p.Match(MDLParserNUMBER_LITERAL) - if p.HasError() { - // Recognition error - abort rule - goto errorExit + p.SetState(1734) + _la = p.GetTokenStream().LA(1) + + if !(_la == MDLParserNUMBER_LITERAL || _la == MDLParserIDENTIFIER) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() } } { - p.SetState(1731) + p.SetState(1735) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20393,7 +21074,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1734) + p.SetState(1738) p.Match(MDLParserINTEGER_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20404,7 +21085,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(1735) + p.SetState(1739) p.Match(MDLParserLONG_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20415,7 +21096,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(1736) + p.SetState(1740) p.Match(MDLParserDECIMAL_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20426,7 +21107,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(1737) + p.SetState(1741) p.Match(MDLParserBOOLEAN_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20437,7 +21118,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(1738) + p.SetState(1742) p.Match(MDLParserDATETIME_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20448,7 +21129,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(1739) + p.SetState(1743) p.Match(MDLParserDATE_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20459,7 +21140,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(1740) + p.SetState(1744) p.Match(MDLParserAUTONUMBER_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20470,7 +21151,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(1741) + p.SetState(1745) p.Match(MDLParserBINARY_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20481,7 +21162,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(1742) + p.SetState(1746) p.Match(MDLParserHASHEDSTRING_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20492,7 +21173,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(1743) + p.SetState(1747) p.Match(MDLParserCURRENCY_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20503,7 +21184,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(1744) + p.SetState(1748) p.Match(MDLParserFLOAT_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20514,7 +21195,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(1745) + p.SetState(1749) p.Match(MDLParserENUM_TYPE) if p.HasError() { // Recognition error - abort rule @@ -20522,14 +21203,14 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { } } { - p.SetState(1746) + p.SetState(1750) p.QualifiedName() } case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(1747) + p.SetState(1751) p.Match(MDLParserENUMERATION) if p.HasError() { // Recognition error - abort rule @@ -20537,7 +21218,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { } } { - p.SetState(1748) + p.SetState(1752) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -20545,11 +21226,11 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { } } { - p.SetState(1749) + p.SetState(1753) p.QualifiedName() } { - p.SetState(1750) + p.SetState(1754) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20560,7 +21241,7 @@ func (p *MDLParser) NonListDataType() (localctx INonListDataTypeContext) { case 15: p.EnterOuterAlt(localctx, 15) { - p.SetState(1752) + p.SetState(1756) p.QualifiedName() } @@ -20678,13 +21359,23 @@ func (s *IndexDefinitionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *IndexDefinitionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitIndexDefinition(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) IndexDefinition() (localctx IIndexDefinitionContext) { localctx = NewIndexDefinitionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 114, MDLParserRULE_indexDefinition) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1756) + p.SetState(1760) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20693,7 +21384,7 @@ func (p *MDLParser) IndexDefinition() (localctx IIndexDefinitionContext) { if _la == MDLParserIDENTIFIER { { - p.SetState(1755) + p.SetState(1759) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -20703,7 +21394,7 @@ func (p *MDLParser) IndexDefinition() (localctx IIndexDefinitionContext) { } { - p.SetState(1758) + p.SetState(1762) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -20711,11 +21402,11 @@ func (p *MDLParser) IndexDefinition() (localctx IIndexDefinitionContext) { } } { - p.SetState(1759) + p.SetState(1763) p.IndexAttributeList() } { - p.SetState(1760) + p.SetState(1764) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -20854,6 +21545,16 @@ func (s *IndexAttributeListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *IndexAttributeListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitIndexAttributeList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) IndexAttributeList() (localctx IIndexAttributeListContext) { localctx = NewIndexAttributeListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 116, MDLParserRULE_indexAttributeList) @@ -20861,10 +21562,10 @@ func (p *MDLParser) IndexAttributeList() (localctx IIndexAttributeListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1762) + p.SetState(1766) p.IndexAttribute() } - p.SetState(1767) + p.SetState(1771) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20873,7 +21574,7 @@ func (p *MDLParser) IndexAttributeList() (localctx IIndexAttributeListContext) { for _la == MDLParserCOMMA { { - p.SetState(1763) + p.SetState(1767) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -20881,11 +21582,11 @@ func (p *MDLParser) IndexAttributeList() (localctx IIndexAttributeListContext) { } } { - p.SetState(1764) + p.SetState(1768) p.IndexAttribute() } - p.SetState(1769) + p.SetState(1773) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -20998,6 +21699,16 @@ func (s *IndexAttributeContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *IndexAttributeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitIndexAttribute(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) IndexAttribute() (localctx IIndexAttributeContext) { localctx = NewIndexAttributeContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 118, MDLParserRULE_indexAttribute) @@ -21005,10 +21716,10 @@ func (p *MDLParser) IndexAttribute() (localctx IIndexAttributeContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1770) + p.SetState(1774) p.IndexColumnName() } - p.SetState(1772) + p.SetState(1776) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21017,7 +21728,7 @@ func (p *MDLParser) IndexAttribute() (localctx IIndexAttributeContext) { if _la == MDLParserASC || _la == MDLParserDESC { { - p.SetState(1771) + p.SetState(1775) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserASC || _la == MDLParserDESC) { @@ -21135,10 +21846,20 @@ func (s *IndexColumnNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *IndexColumnNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitIndexColumnName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) IndexColumnName() (localctx IIndexColumnNameContext) { localctx = NewIndexColumnNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 120, MDLParserRULE_indexColumnName) - p.SetState(1777) + p.SetState(1781) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21148,7 +21869,7 @@ func (p *MDLParser) IndexColumnName() (localctx IIndexColumnNameContext) { case MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(1774) + p.SetState(1778) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -21159,7 +21880,7 @@ func (p *MDLParser) IndexColumnName() (localctx IIndexColumnNameContext) { case MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(1775) + p.SetState(1779) p.Match(MDLParserQUOTED_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -21170,7 +21891,7 @@ func (p *MDLParser) IndexColumnName() (localctx IIndexColumnNameContext) { case MDLParserINDEX, MDLParserOWNER, MDLParserREFERENCE, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserDEBUG, MDLParserACTION, MDLParserSORT, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserTITLE, MDLParserLABEL, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserCONTENT, MDLParserTABLETWIDTH, MDLParserPHONEWIDTH, MDLParserCLASS, MDLParserSTYLE, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserEDITABLE, MDLParserVISIBLE, MDLParserSUCCESS, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserERROR, MDLParserRANGE, MDLParserSTATUS, MDLParserVERSION, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserNAVIGATION, MDLParserHOME, MDLParserCHECK, MDLParserTEXT, MDLParserMESSAGE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserFORMAT, MDLParserROLE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserDESCRIPTION, MDLParserOFF: p.EnterOuterAlt(localctx, 3) { - p.SetState(1776) + p.SetState(1780) p.CommonNameKeyword() } @@ -21206,6 +21927,12 @@ type ICreateAssociationStatementContext interface { FROM() antlr.TerminalNode TO() antlr.TerminalNode AssociationOptions() IAssociationOptionsContext + LPAREN() antlr.TerminalNode + RPAREN() antlr.TerminalNode + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + AllAssociationOption() []IAssociationOptionContext + AssociationOption(i int) IAssociationOptionContext // IsCreateAssociationStatementContext differentiates from other interfaces. IsCreateAssociationStatementContext() @@ -21312,6 +22039,63 @@ func (s *CreateAssociationStatementContext) AssociationOptions() IAssociationOpt return t.(IAssociationOptionsContext) } +func (s *CreateAssociationStatementContext) LPAREN() antlr.TerminalNode { + return s.GetToken(MDLParserLPAREN, 0) +} + +func (s *CreateAssociationStatementContext) RPAREN() antlr.TerminalNode { + return s.GetToken(MDLParserRPAREN, 0) +} + +func (s *CreateAssociationStatementContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(MDLParserCOMMA) +} + +func (s *CreateAssociationStatementContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(MDLParserCOMMA, i) +} + +func (s *CreateAssociationStatementContext) AllAssociationOption() []IAssociationOptionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAssociationOptionContext); ok { + len++ + } + } + + tst := make([]IAssociationOptionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAssociationOptionContext); ok { + tst[i] = t.(IAssociationOptionContext) + i++ + } + } + + return tst +} + +func (s *CreateAssociationStatementContext) AssociationOption(i int) IAssociationOptionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAssociationOptionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAssociationOptionContext) +} + func (s *CreateAssociationStatementContext) GetRuleContext() antlr.RuleContext { return s } @@ -21332,61 +22116,166 @@ func (s *CreateAssociationStatementContext) ExitRule(listener antlr.ParseTreeLis } } +func (s *CreateAssociationStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateAssociationStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateAssociationStatement() (localctx ICreateAssociationStatementContext) { localctx = NewCreateAssociationStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 122, MDLParserRULE_createAssociationStatement) var _la int - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1779) - p.Match(MDLParserASSOCIATION) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - { - p.SetState(1780) - p.QualifiedName() + p.SetState(1808) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit } - { - p.SetState(1781) - p.Match(MDLParserFROM) + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1783) + p.Match(MDLParserASSOCIATION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1784) + p.QualifiedName() + } + { + p.SetState(1785) + p.Match(MDLParserFROM) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1786) + p.QualifiedName() + } + { + p.SetState(1787) + p.Match(MDLParserTO) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1788) + p.QualifiedName() + } + p.SetState(1790) + p.GetErrorHandler().Sync(p) if p.HasError() { - // Recognition error - abort rule goto errorExit } - } - { - p.SetState(1782) - p.QualifiedName() - } - { - p.SetState(1783) - p.Match(MDLParserTO) + _la = p.GetTokenStream().LA(1) + + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&11263397114937344) != 0) || _la == MDLParserCOMMENT || _la == MDLParserTYPE { + { + p.SetState(1789) + p.AssociationOptions() + } + + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1792) + p.Match(MDLParserASSOCIATION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1793) + p.QualifiedName() + } + { + p.SetState(1794) + p.Match(MDLParserLPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1795) + p.Match(MDLParserFROM) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1796) + p.QualifiedName() + } + { + p.SetState(1797) + p.Match(MDLParserTO) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1798) + p.QualifiedName() + } + p.SetState(1803) + p.GetErrorHandler().Sync(p) if p.HasError() { - // Recognition error - abort rule goto errorExit } - } - { - p.SetState(1784) - p.QualifiedName() - } - p.SetState(1786) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) + _la = p.GetTokenStream().LA(1) + + for _la == MDLParserCOMMA { + { + p.SetState(1799) + p.Match(MDLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1800) + p.AssociationOption() + } - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&11263397114937344) != 0) || _la == MDLParserCOMMENT || _la == MDLParserTYPE { + p.SetState(1805) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } { - p.SetState(1785) - p.AssociationOptions() + p.SetState(1806) + p.Match(MDLParserRPAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } + case antlr.ATNInvalidAltNumber: + goto errorExit } errorExit: @@ -21510,13 +22399,23 @@ func (s *AssociationOptionsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AssociationOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAssociationOptions(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AssociationOptions() (localctx IAssociationOptionsContext) { localctx = NewAssociationOptionsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 124, MDLParserRULE_associationOptions) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1789) + p.SetState(1811) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21525,11 +22424,11 @@ func (p *MDLParser) AssociationOptions() (localctx IAssociationOptionsContext) { for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&11263397114937344) != 0) || _la == MDLParserCOMMENT || _la == MDLParserTYPE { { - p.SetState(1788) + p.SetState(1810) p.AssociationOption() } - p.SetState(1791) + p.SetState(1813) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21561,6 +22460,7 @@ type IAssociationOptionContext interface { TYPE() antlr.TerminalNode REFERENCE() antlr.TerminalNode REFERENCE_SET() antlr.TerminalNode + COLON() antlr.TerminalNode OWNER() antlr.TerminalNode DEFAULT() antlr.TerminalNode BOTH() antlr.TerminalNode @@ -21620,6 +22520,10 @@ func (s *AssociationOptionContext) REFERENCE_SET() antlr.TerminalNode { return s.GetToken(MDLParserREFERENCE_SET, 0) } +func (s *AssociationOptionContext) COLON() antlr.TerminalNode { + return s.GetToken(MDLParserCOLON, 0) +} + func (s *AssociationOptionContext) OWNER() antlr.TerminalNode { return s.GetToken(MDLParserOWNER, 0) } @@ -21692,12 +22596,22 @@ func (s *AssociationOptionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AssociationOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAssociationOption(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AssociationOption() (localctx IAssociationOptionContext) { localctx = NewAssociationOptionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 126, MDLParserRULE_associationOption) var _la int - p.SetState(1803) + p.SetState(1834) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -21707,15 +22621,33 @@ func (p *MDLParser) AssociationOption() (localctx IAssociationOptionContext) { case MDLParserTYPE: p.EnterOuterAlt(localctx, 1) { - p.SetState(1793) + p.SetState(1815) p.Match(MDLParserTYPE) if p.HasError() { // Recognition error - abort rule goto errorExit } } + p.SetState(1817) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == MDLParserCOLON { + { + p.SetState(1816) + p.Match(MDLParserCOLON) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } { - p.SetState(1794) + p.SetState(1819) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserREFERENCE_SET || _la == MDLParserREFERENCE) { @@ -21729,15 +22661,33 @@ func (p *MDLParser) AssociationOption() (localctx IAssociationOptionContext) { case MDLParserOWNER: p.EnterOuterAlt(localctx, 2) { - p.SetState(1795) + p.SetState(1820) p.Match(MDLParserOWNER) if p.HasError() { // Recognition error - abort rule goto errorExit } } + p.SetState(1822) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == MDLParserCOLON { + { + p.SetState(1821) + p.Match(MDLParserCOLON) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } { - p.SetState(1796) + p.SetState(1824) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserDEFAULT || _la == MDLParserBOTH) { @@ -21751,15 +22701,33 @@ func (p *MDLParser) AssociationOption() (localctx IAssociationOptionContext) { case MDLParserSTORAGE: p.EnterOuterAlt(localctx, 3) { - p.SetState(1797) + p.SetState(1825) p.Match(MDLParserSTORAGE) if p.HasError() { // Recognition error - abort rule goto errorExit } } + p.SetState(1827) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == MDLParserCOLON { + { + p.SetState(1826) + p.Match(MDLParserCOLON) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } { - p.SetState(1798) + p.SetState(1829) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserCOLUMN || _la == MDLParserTABLE) { @@ -21773,7 +22741,7 @@ func (p *MDLParser) AssociationOption() (localctx IAssociationOptionContext) { case MDLParserDELETE_BEHAVIOR: p.EnterOuterAlt(localctx, 4) { - p.SetState(1799) + p.SetState(1830) p.Match(MDLParserDELETE_BEHAVIOR) if p.HasError() { // Recognition error - abort rule @@ -21781,14 +22749,14 @@ func (p *MDLParser) AssociationOption() (localctx IAssociationOptionContext) { } } { - p.SetState(1800) + p.SetState(1831) p.DeleteBehavior() } case MDLParserCOMMENT: p.EnterOuterAlt(localctx, 5) { - p.SetState(1801) + p.SetState(1832) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -21796,7 +22764,7 @@ func (p *MDLParser) AssociationOption() (localctx IAssociationOptionContext) { } } { - p.SetState(1802) + p.SetState(1833) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -21912,6 +22880,16 @@ func (s *DeleteBehaviorContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DeleteBehaviorContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDeleteBehavior(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DeleteBehavior() (localctx IDeleteBehaviorContext) { localctx = NewDeleteBehaviorContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 128, MDLParserRULE_deleteBehavior) @@ -21919,7 +22897,7 @@ func (p *MDLParser) DeleteBehavior() (localctx IDeleteBehaviorContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(1805) + p.SetState(1836) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&54043195528560640) != 0) { @@ -22250,22 +23228,32 @@ func (s *AlterEntityActionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AlterEntityActionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterEntityAction(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { localctx = NewAlterEntityActionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 130, MDLParserRULE_alterEntityAction) var _la int - p.SetState(1873) + p.SetState(1904) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 126, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1807) + p.SetState(1838) p.Match(MDLParserADD) if p.HasError() { // Recognition error - abort rule @@ -22273,7 +23261,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1808) + p.SetState(1839) p.Match(MDLParserATTRIBUTE) if p.HasError() { // Recognition error - abort rule @@ -22281,14 +23269,14 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1809) + p.SetState(1840) p.AttributeDefinition() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1810) + p.SetState(1841) p.Match(MDLParserADD) if p.HasError() { // Recognition error - abort rule @@ -22296,7 +23284,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1811) + p.SetState(1842) p.Match(MDLParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -22304,14 +23292,14 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1812) + p.SetState(1843) p.AttributeDefinition() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(1813) + p.SetState(1844) p.Match(MDLParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -22319,7 +23307,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1814) + p.SetState(1845) p.Match(MDLParserATTRIBUTE) if p.HasError() { // Recognition error - abort rule @@ -22327,11 +23315,11 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1815) + p.SetState(1846) p.AttributeName() } { - p.SetState(1816) + p.SetState(1847) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -22339,14 +23327,14 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1817) + p.SetState(1848) p.AttributeName() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(1819) + p.SetState(1850) p.Match(MDLParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -22354,7 +23342,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1820) + p.SetState(1851) p.Match(MDLParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -22362,11 +23350,11 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1821) + p.SetState(1852) p.AttributeName() } { - p.SetState(1822) + p.SetState(1853) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -22374,14 +23362,14 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1823) + p.SetState(1854) p.AttributeName() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(1825) + p.SetState(1856) p.Match(MDLParserMODIFY) if p.HasError() { // Recognition error - abort rule @@ -22389,7 +23377,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1826) + p.SetState(1857) p.Match(MDLParserATTRIBUTE) if p.HasError() { // Recognition error - abort rule @@ -22397,27 +23385,27 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1827) + p.SetState(1858) p.AttributeName() } { - p.SetState(1828) + p.SetState(1859) p.DataType() } - p.SetState(1832) + p.SetState(1863) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for _la == MDLParserNOT_NULL || ((int64((_la-287)) & ^0x3f) == 0 && ((int64(1)<<(_la-287))&8405377) != 0) { + for _la == MDLParserNOT_NULL || ((int64((_la-290)) & ^0x3f) == 0 && ((int64(1)<<(_la-290))&8405377) != 0) { { - p.SetState(1829) + p.SetState(1860) p.AttributeConstraint() } - p.SetState(1834) + p.SetState(1865) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22428,7 +23416,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(1835) + p.SetState(1866) p.Match(MDLParserMODIFY) if p.HasError() { // Recognition error - abort rule @@ -22436,7 +23424,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1836) + p.SetState(1867) p.Match(MDLParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -22444,27 +23432,27 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1837) + p.SetState(1868) p.AttributeName() } { - p.SetState(1838) + p.SetState(1869) p.DataType() } - p.SetState(1842) + p.SetState(1873) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for _la == MDLParserNOT_NULL || ((int64((_la-287)) & ^0x3f) == 0 && ((int64(1)<<(_la-287))&8405377) != 0) { + for _la == MDLParserNOT_NULL || ((int64((_la-290)) & ^0x3f) == 0 && ((int64(1)<<(_la-290))&8405377) != 0) { { - p.SetState(1839) + p.SetState(1870) p.AttributeConstraint() } - p.SetState(1844) + p.SetState(1875) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -22475,7 +23463,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(1845) + p.SetState(1876) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -22483,7 +23471,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1846) + p.SetState(1877) p.Match(MDLParserATTRIBUTE) if p.HasError() { // Recognition error - abort rule @@ -22491,14 +23479,14 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1847) + p.SetState(1878) p.AttributeName() } case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(1848) + p.SetState(1879) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -22506,7 +23494,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1849) + p.SetState(1880) p.Match(MDLParserCOLUMN) if p.HasError() { // Recognition error - abort rule @@ -22514,14 +23502,14 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1850) + p.SetState(1881) p.AttributeName() } case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(1851) + p.SetState(1882) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule @@ -22529,7 +23517,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1852) + p.SetState(1883) p.Match(MDLParserDOCUMENTATION) if p.HasError() { // Recognition error - abort rule @@ -22537,7 +23525,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1853) + p.SetState(1884) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -22548,7 +23536,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(1854) + p.SetState(1885) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule @@ -22556,7 +23544,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1855) + p.SetState(1886) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -22564,7 +23552,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1856) + p.SetState(1887) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -22575,7 +23563,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(1857) + p.SetState(1888) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule @@ -22583,7 +23571,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1858) + p.SetState(1889) p.Match(MDLParserSTORE) if p.HasError() { // Recognition error - abort rule @@ -22591,7 +23579,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1859) + p.SetState(1890) p.Match(MDLParserOWNER) if p.HasError() { // Recognition error - abort rule @@ -22602,7 +23590,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(1860) + p.SetState(1891) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule @@ -22610,7 +23598,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1861) + p.SetState(1892) p.Match(MDLParserPOSITION) if p.HasError() { // Recognition error - abort rule @@ -22618,7 +23606,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1862) + p.SetState(1893) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -22626,7 +23614,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1863) + p.SetState(1894) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -22634,7 +23622,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1864) + p.SetState(1895) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -22642,7 +23630,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1865) + p.SetState(1896) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -22650,7 +23638,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1866) + p.SetState(1897) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -22661,7 +23649,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(1867) + p.SetState(1898) p.Match(MDLParserADD) if p.HasError() { // Recognition error - abort rule @@ -22669,7 +23657,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1868) + p.SetState(1899) p.Match(MDLParserINDEX) if p.HasError() { // Recognition error - abort rule @@ -22677,14 +23665,14 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1869) + p.SetState(1900) p.IndexDefinition() } case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(1870) + p.SetState(1901) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -22692,7 +23680,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1871) + p.SetState(1902) p.Match(MDLParserINDEX) if p.HasError() { // Recognition error - abort rule @@ -22700,7 +23688,7 @@ func (p *MDLParser) AlterEntityAction() (localctx IAlterEntityActionContext) { } } { - p.SetState(1872) + p.SetState(1903) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -22857,22 +23845,32 @@ func (s *AlterAssociationActionContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *AlterAssociationActionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterAssociationAction(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionContext) { localctx = NewAlterAssociationActionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 132, MDLParserRULE_alterAssociationAction) var _la int - p.SetState(1887) + p.SetState(1918) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 122, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 127, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(1875) + p.SetState(1906) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule @@ -22880,7 +23878,7 @@ func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionCo } } { - p.SetState(1876) + p.SetState(1907) p.Match(MDLParserDELETE_BEHAVIOR) if p.HasError() { // Recognition error - abort rule @@ -22888,14 +23886,14 @@ func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionCo } } { - p.SetState(1877) + p.SetState(1908) p.DeleteBehavior() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(1878) + p.SetState(1909) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule @@ -22903,7 +23901,7 @@ func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionCo } } { - p.SetState(1879) + p.SetState(1910) p.Match(MDLParserOWNER) if p.HasError() { // Recognition error - abort rule @@ -22911,7 +23909,7 @@ func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionCo } } { - p.SetState(1880) + p.SetState(1911) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserDEFAULT || _la == MDLParserBOTH) { @@ -22925,7 +23923,7 @@ func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionCo case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(1881) + p.SetState(1912) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule @@ -22933,7 +23931,7 @@ func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionCo } } { - p.SetState(1882) + p.SetState(1913) p.Match(MDLParserSTORAGE) if p.HasError() { // Recognition error - abort rule @@ -22941,7 +23939,7 @@ func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionCo } } { - p.SetState(1883) + p.SetState(1914) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserCOLUMN || _la == MDLParserTABLE) { @@ -22955,7 +23953,7 @@ func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionCo case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(1884) + p.SetState(1915) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule @@ -22963,7 +23961,7 @@ func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionCo } } { - p.SetState(1885) + p.SetState(1916) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -22971,7 +23969,7 @@ func (p *MDLParser) AlterAssociationAction() (localctx IAlterAssociationActionCo } } { - p.SetState(1886) + p.SetState(1917) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -23116,12 +24114,22 @@ func (s *AlterEnumerationActionContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *AlterEnumerationActionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterEnumerationAction(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionContext) { localctx = NewAlterEnumerationActionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 134, MDLParserRULE_alterEnumerationAction) var _la int - p.SetState(1907) + p.SetState(1938) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23131,7 +24139,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo case MDLParserADD: p.EnterOuterAlt(localctx, 1) { - p.SetState(1889) + p.SetState(1920) p.Match(MDLParserADD) if p.HasError() { // Recognition error - abort rule @@ -23139,7 +24147,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1890) + p.SetState(1921) p.Match(MDLParserVALUE) if p.HasError() { // Recognition error - abort rule @@ -23147,14 +24155,14 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1891) + p.SetState(1922) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1894) + p.SetState(1925) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23163,7 +24171,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo if _la == MDLParserCAPTION { { - p.SetState(1892) + p.SetState(1923) p.Match(MDLParserCAPTION) if p.HasError() { // Recognition error - abort rule @@ -23171,7 +24179,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1893) + p.SetState(1924) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -23184,7 +24192,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo case MDLParserRENAME: p.EnterOuterAlt(localctx, 2) { - p.SetState(1896) + p.SetState(1927) p.Match(MDLParserRENAME) if p.HasError() { // Recognition error - abort rule @@ -23192,7 +24200,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1897) + p.SetState(1928) p.Match(MDLParserVALUE) if p.HasError() { // Recognition error - abort rule @@ -23200,7 +24208,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1898) + p.SetState(1929) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -23208,7 +24216,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1899) + p.SetState(1930) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -23216,7 +24224,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1900) + p.SetState(1931) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -23227,7 +24235,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo case MDLParserDROP: p.EnterOuterAlt(localctx, 3) { - p.SetState(1901) + p.SetState(1932) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -23235,7 +24243,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1902) + p.SetState(1933) p.Match(MDLParserVALUE) if p.HasError() { // Recognition error - abort rule @@ -23243,7 +24251,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1903) + p.SetState(1934) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -23254,7 +24262,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo case MDLParserSET: p.EnterOuterAlt(localctx, 4) { - p.SetState(1904) + p.SetState(1935) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule @@ -23262,7 +24270,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1905) + p.SetState(1936) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -23270,7 +24278,7 @@ func (p *MDLParser) AlterEnumerationAction() (localctx IAlterEnumerationActionCo } } { - p.SetState(1906) + p.SetState(1937) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -23418,12 +24426,22 @@ func (s *AlterNotebookActionContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *AlterNotebookActionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterNotebookAction(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) { localctx = NewAlterNotebookActionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 136, MDLParserRULE_alterNotebookAction) var _la int - p.SetState(1922) + p.SetState(1953) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23433,7 +24451,7 @@ func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) case MDLParserADD: p.EnterOuterAlt(localctx, 1) { - p.SetState(1909) + p.SetState(1940) p.Match(MDLParserADD) if p.HasError() { // Recognition error - abort rule @@ -23441,7 +24459,7 @@ func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) } } { - p.SetState(1910) + p.SetState(1941) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -23449,10 +24467,10 @@ func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) } } { - p.SetState(1911) + p.SetState(1942) p.QualifiedName() } - p.SetState(1914) + p.SetState(1945) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23461,7 +24479,7 @@ func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) if _la == MDLParserPOSITION { { - p.SetState(1912) + p.SetState(1943) p.Match(MDLParserPOSITION) if p.HasError() { // Recognition error - abort rule @@ -23469,7 +24487,7 @@ func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) } } { - p.SetState(1913) + p.SetState(1944) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -23482,7 +24500,7 @@ func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) case MDLParserDROP: p.EnterOuterAlt(localctx, 2) { - p.SetState(1916) + p.SetState(1947) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -23490,7 +24508,7 @@ func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) } } { - p.SetState(1917) + p.SetState(1948) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -23498,14 +24516,14 @@ func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) } } { - p.SetState(1918) + p.SetState(1949) p.QualifiedName() } case MDLParserSET: p.EnterOuterAlt(localctx, 3) { - p.SetState(1919) + p.SetState(1950) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule @@ -23513,7 +24531,7 @@ func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) } } { - p.SetState(1920) + p.SetState(1951) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -23521,7 +24539,7 @@ func (p *MDLParser) AlterNotebookAction() (localctx IAlterNotebookActionContext) } } { - p.SetState(1921) + p.SetState(1952) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -23639,6 +24657,16 @@ func (s *CreateModuleStatementContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *CreateModuleStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateModuleStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateModuleStatement() (localctx ICreateModuleStatementContext) { localctx = NewCreateModuleStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 138, MDLParserRULE_createModuleStatement) @@ -23646,7 +24674,7 @@ func (p *MDLParser) CreateModuleStatement() (localctx ICreateModuleStatementCont p.EnterOuterAlt(localctx, 1) { - p.SetState(1924) + p.SetState(1955) p.Match(MDLParserMODULE) if p.HasError() { // Recognition error - abort rule @@ -23654,14 +24682,14 @@ func (p *MDLParser) CreateModuleStatement() (localctx ICreateModuleStatementCont } } { - p.SetState(1925) + p.SetState(1956) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1927) + p.SetState(1958) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23670,7 +24698,7 @@ func (p *MDLParser) CreateModuleStatement() (localctx ICreateModuleStatementCont if _la == MDLParserFOLDER || _la == MDLParserCOMMENT { { - p.SetState(1926) + p.SetState(1957) p.ModuleOptions() } @@ -23797,13 +24825,23 @@ func (s *ModuleOptionsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ModuleOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitModuleOptions(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ModuleOptions() (localctx IModuleOptionsContext) { localctx = NewModuleOptionsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 140, MDLParserRULE_moduleOptions) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1930) + p.SetState(1961) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23812,11 +24850,11 @@ func (p *MDLParser) ModuleOptions() (localctx IModuleOptionsContext) { for ok := true; ok; ok = _la == MDLParserFOLDER || _la == MDLParserCOMMENT { { - p.SetState(1929) + p.SetState(1960) p.ModuleOption() } - p.SetState(1932) + p.SetState(1963) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23917,10 +24955,20 @@ func (s *ModuleOptionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ModuleOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitModuleOption(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ModuleOption() (localctx IModuleOptionContext) { localctx = NewModuleOptionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 142, MDLParserRULE_moduleOption) - p.SetState(1938) + p.SetState(1969) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -23930,7 +24978,7 @@ func (p *MDLParser) ModuleOption() (localctx IModuleOptionContext) { case MDLParserCOMMENT: p.EnterOuterAlt(localctx, 1) { - p.SetState(1934) + p.SetState(1965) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -23938,7 +24986,7 @@ func (p *MDLParser) ModuleOption() (localctx IModuleOptionContext) { } } { - p.SetState(1935) + p.SetState(1966) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -23949,7 +24997,7 @@ func (p *MDLParser) ModuleOption() (localctx IModuleOptionContext) { case MDLParserFOLDER: p.EnterOuterAlt(localctx, 2) { - p.SetState(1936) + p.SetState(1967) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -23957,7 +25005,7 @@ func (p *MDLParser) ModuleOption() (localctx IModuleOptionContext) { } } { - p.SetState(1937) + p.SetState(1968) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -24114,6 +25162,16 @@ func (s *CreateEnumerationStatementContext) ExitRule(listener antlr.ParseTreeLis } } +func (s *CreateEnumerationStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateEnumerationStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateEnumerationStatement() (localctx ICreateEnumerationStatementContext) { localctx = NewCreateEnumerationStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 144, MDLParserRULE_createEnumerationStatement) @@ -24121,7 +25179,7 @@ func (p *MDLParser) CreateEnumerationStatement() (localctx ICreateEnumerationSta p.EnterOuterAlt(localctx, 1) { - p.SetState(1940) + p.SetState(1971) p.Match(MDLParserENUMERATION) if p.HasError() { // Recognition error - abort rule @@ -24129,11 +25187,11 @@ func (p *MDLParser) CreateEnumerationStatement() (localctx ICreateEnumerationSta } } { - p.SetState(1941) + p.SetState(1972) p.QualifiedName() } { - p.SetState(1942) + p.SetState(1973) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -24141,18 +25199,18 @@ func (p *MDLParser) CreateEnumerationStatement() (localctx ICreateEnumerationSta } } { - p.SetState(1943) + p.SetState(1974) p.EnumerationValueList() } { - p.SetState(1944) + p.SetState(1975) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(1946) + p.SetState(1977) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24161,7 +25219,7 @@ func (p *MDLParser) CreateEnumerationStatement() (localctx ICreateEnumerationSta if _la == MDLParserCOMMENT { { - p.SetState(1945) + p.SetState(1976) p.EnumerationOptions() } @@ -24298,6 +25356,16 @@ func (s *EnumerationValueListContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *EnumerationValueListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitEnumerationValueList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) EnumerationValueList() (localctx IEnumerationValueListContext) { localctx = NewEnumerationValueListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 146, MDLParserRULE_enumerationValueList) @@ -24305,10 +25373,10 @@ func (p *MDLParser) EnumerationValueList() (localctx IEnumerationValueListContex p.EnterOuterAlt(localctx, 1) { - p.SetState(1948) + p.SetState(1979) p.EnumerationValue() } - p.SetState(1953) + p.SetState(1984) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24317,7 +25385,7 @@ func (p *MDLParser) EnumerationValueList() (localctx IEnumerationValueListContex for _la == MDLParserCOMMA { { - p.SetState(1949) + p.SetState(1980) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -24325,11 +25393,11 @@ func (p *MDLParser) EnumerationValueList() (localctx IEnumerationValueListContex } } { - p.SetState(1950) + p.SetState(1981) p.EnumerationValue() } - p.SetState(1955) + p.SetState(1986) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24459,13 +25527,23 @@ func (s *EnumerationValueContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *EnumerationValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitEnumerationValue(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) EnumerationValue() (localctx IEnumerationValueContext) { localctx = NewEnumerationValueContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 148, MDLParserRULE_enumerationValue) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1957) + p.SetState(1988) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24474,16 +25552,16 @@ func (p *MDLParser) EnumerationValue() (localctx IEnumerationValueContext) { if _la == MDLParserDOC_COMMENT { { - p.SetState(1956) + p.SetState(1987) p.DocComment() } } { - p.SetState(1959) + p.SetState(1990) p.EnumValueName() } - p.SetState(1964) + p.SetState(1995) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24491,7 +25569,7 @@ func (p *MDLParser) EnumerationValue() (localctx IEnumerationValueContext) { _la = p.GetTokenStream().LA(1) if _la == MDLParserCAPTION || _la == MDLParserSTRING_LITERAL { - p.SetState(1961) + p.SetState(1992) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24500,7 +25578,7 @@ func (p *MDLParser) EnumerationValue() (localctx IEnumerationValueContext) { if _la == MDLParserCAPTION { { - p.SetState(1960) + p.SetState(1991) p.Match(MDLParserCAPTION) if p.HasError() { // Recognition error - abort rule @@ -24510,7 +25588,7 @@ func (p *MDLParser) EnumerationValue() (localctx IEnumerationValueContext) { } { - p.SetState(1963) + p.SetState(1994) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -24556,6 +25634,8 @@ type IEnumValueNameContext interface { EXTERNAL() antlr.TerminalNode PAGING() antlr.TerminalNode HEADERS() antlr.TerminalNode + DISPLAY() antlr.TerminalNode + STRUCTURE() antlr.TerminalNode // IsEnumValueNameContext differentiates from other interfaces. IsEnumValueNameContext() @@ -24665,6 +25745,14 @@ func (s *EnumValueNameContext) HEADERS() antlr.TerminalNode { return s.GetToken(MDLParserHEADERS, 0) } +func (s *EnumValueNameContext) DISPLAY() antlr.TerminalNode { + return s.GetToken(MDLParserDISPLAY, 0) +} + +func (s *EnumValueNameContext) STRUCTURE() antlr.TerminalNode { + return s.GetToken(MDLParserSTRUCTURE, 0) +} + func (s *EnumValueNameContext) GetRuleContext() antlr.RuleContext { return s } @@ -24685,10 +25773,20 @@ func (s *EnumValueNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *EnumValueNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitEnumValueName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { localctx = NewEnumValueNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 150, MDLParserRULE_enumValueName) - p.SetState(1981) + p.SetState(2014) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24698,7 +25796,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(1966) + p.SetState(1997) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -24709,7 +25807,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(1967) + p.SetState(1998) p.Match(MDLParserQUOTED_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -24720,14 +25818,14 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserINDEX, MDLParserOWNER, MDLParserREFERENCE, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserDEBUG, MDLParserACTION, MDLParserSORT, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserTITLE, MDLParserLABEL, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserCONTENT, MDLParserTABLETWIDTH, MDLParserPHONEWIDTH, MDLParserCLASS, MDLParserSTYLE, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserEDITABLE, MDLParserVISIBLE, MDLParserSUCCESS, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserERROR, MDLParserRANGE, MDLParserSTATUS, MDLParserVERSION, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserNAVIGATION, MDLParserHOME, MDLParserCHECK, MDLParserTEXT, MDLParserMESSAGE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserFORMAT, MDLParserROLE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserDESCRIPTION, MDLParserOFF: p.EnterOuterAlt(localctx, 3) { - p.SetState(1968) + p.SetState(1999) p.CommonNameKeyword() } case MDLParserSERVICE: p.EnterOuterAlt(localctx, 4) { - p.SetState(1969) + p.SetState(2000) p.Match(MDLParserSERVICE) if p.HasError() { // Recognition error - abort rule @@ -24738,7 +25836,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserSERVICES: p.EnterOuterAlt(localctx, 5) { - p.SetState(1970) + p.SetState(2001) p.Match(MDLParserSERVICES) if p.HasError() { // Recognition error - abort rule @@ -24749,7 +25847,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserGUEST: p.EnterOuterAlt(localctx, 6) { - p.SetState(1971) + p.SetState(2002) p.Match(MDLParserGUEST) if p.HasError() { // Recognition error - abort rule @@ -24760,7 +25858,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserSESSION: p.EnterOuterAlt(localctx, 7) { - p.SetState(1972) + p.SetState(2003) p.Match(MDLParserSESSION) if p.HasError() { // Recognition error - abort rule @@ -24771,7 +25869,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserBASIC: p.EnterOuterAlt(localctx, 8) { - p.SetState(1973) + p.SetState(2004) p.Match(MDLParserBASIC) if p.HasError() { // Recognition error - abort rule @@ -24782,7 +25880,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserCLIENT: p.EnterOuterAlt(localctx, 9) { - p.SetState(1974) + p.SetState(2005) p.Match(MDLParserCLIENT) if p.HasError() { // Recognition error - abort rule @@ -24793,7 +25891,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserCLIENTS: p.EnterOuterAlt(localctx, 10) { - p.SetState(1975) + p.SetState(2006) p.Match(MDLParserCLIENTS) if p.HasError() { // Recognition error - abort rule @@ -24804,7 +25902,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserPUBLISH: p.EnterOuterAlt(localctx, 11) { - p.SetState(1976) + p.SetState(2007) p.Match(MDLParserPUBLISH) if p.HasError() { // Recognition error - abort rule @@ -24815,7 +25913,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserEXPOSE: p.EnterOuterAlt(localctx, 12) { - p.SetState(1977) + p.SetState(2008) p.Match(MDLParserEXPOSE) if p.HasError() { // Recognition error - abort rule @@ -24826,7 +25924,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserEXTERNAL: p.EnterOuterAlt(localctx, 13) { - p.SetState(1978) + p.SetState(2009) p.Match(MDLParserEXTERNAL) if p.HasError() { // Recognition error - abort rule @@ -24837,7 +25935,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserPAGING: p.EnterOuterAlt(localctx, 14) { - p.SetState(1979) + p.SetState(2010) p.Match(MDLParserPAGING) if p.HasError() { // Recognition error - abort rule @@ -24848,7 +25946,7 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { case MDLParserHEADERS: p.EnterOuterAlt(localctx, 15) { - p.SetState(1980) + p.SetState(2011) p.Match(MDLParserHEADERS) if p.HasError() { // Recognition error - abort rule @@ -24856,6 +25954,28 @@ func (p *MDLParser) EnumValueName() (localctx IEnumValueNameContext) { } } + case MDLParserDISPLAY: + p.EnterOuterAlt(localctx, 16) + { + p.SetState(2012) + p.Match(MDLParserDISPLAY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case MDLParserSTRUCTURE: + p.EnterOuterAlt(localctx, 17) + { + p.SetState(2013) + p.Match(MDLParserSTRUCTURE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + default: p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit @@ -24982,13 +26102,23 @@ func (s *EnumerationOptionsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *EnumerationOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitEnumerationOptions(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) EnumerationOptions() (localctx IEnumerationOptionsContext) { localctx = NewEnumerationOptionsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 152, MDLParserRULE_enumerationOptions) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(1984) + p.SetState(2017) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -24997,11 +26127,11 @@ func (p *MDLParser) EnumerationOptions() (localctx IEnumerationOptionsContext) { for ok := true; ok; ok = _la == MDLParserCOMMENT { { - p.SetState(1983) + p.SetState(2016) p.EnumerationOption() } - p.SetState(1986) + p.SetState(2019) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -25097,12 +26227,22 @@ func (s *EnumerationOptionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *EnumerationOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitEnumerationOption(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) EnumerationOption() (localctx IEnumerationOptionContext) { localctx = NewEnumerationOptionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 154, MDLParserRULE_enumerationOption) p.EnterOuterAlt(localctx, 1) { - p.SetState(1988) + p.SetState(2021) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -25110,7 +26250,7 @@ func (p *MDLParser) EnumerationOption() (localctx IEnumerationOptionContext) { } } { - p.SetState(1989) + p.SetState(2022) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -25257,6 +26397,16 @@ func (s *CreateImageCollectionStatementContext) ExitRule(listener antlr.ParseTre } } +func (s *CreateImageCollectionStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateImageCollectionStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateImageCollectionStatement() (localctx ICreateImageCollectionStatementContext) { localctx = NewCreateImageCollectionStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 156, MDLParserRULE_createImageCollectionStatement) @@ -25264,7 +26414,7 @@ func (p *MDLParser) CreateImageCollectionStatement() (localctx ICreateImageColle p.EnterOuterAlt(localctx, 1) { - p.SetState(1991) + p.SetState(2024) p.Match(MDLParserIMAGE) if p.HasError() { // Recognition error - abort rule @@ -25272,7 +26422,7 @@ func (p *MDLParser) CreateImageCollectionStatement() (localctx ICreateImageColle } } { - p.SetState(1992) + p.SetState(2025) p.Match(MDLParserCOLLECTION) if p.HasError() { // Recognition error - abort rule @@ -25280,10 +26430,10 @@ func (p *MDLParser) CreateImageCollectionStatement() (localctx ICreateImageColle } } { - p.SetState(1993) + p.SetState(2026) p.QualifiedName() } - p.SetState(1995) + p.SetState(2028) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -25292,12 +26442,12 @@ func (p *MDLParser) CreateImageCollectionStatement() (localctx ICreateImageColle if _la == MDLParserEXPORT || _la == MDLParserCOMMENT { { - p.SetState(1994) + p.SetState(2027) p.ImageCollectionOptions() } } - p.SetState(1998) + p.SetState(2031) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -25306,7 +26456,7 @@ func (p *MDLParser) CreateImageCollectionStatement() (localctx ICreateImageColle if _la == MDLParserLPAREN { { - p.SetState(1997) + p.SetState(2030) p.ImageCollectionBody() } @@ -25433,13 +26583,23 @@ func (s *ImageCollectionOptionsContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *ImageCollectionOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitImageCollectionOptions(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ImageCollectionOptions() (localctx IImageCollectionOptionsContext) { localctx = NewImageCollectionOptionsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 158, MDLParserRULE_imageCollectionOptions) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(2001) + p.SetState(2034) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -25448,11 +26608,11 @@ func (p *MDLParser) ImageCollectionOptions() (localctx IImageCollectionOptionsCo for ok := true; ok; ok = _la == MDLParserEXPORT || _la == MDLParserCOMMENT { { - p.SetState(2000) + p.SetState(2033) p.ImageCollectionOption() } - p.SetState(2003) + p.SetState(2036) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -25558,10 +26718,20 @@ func (s *ImageCollectionOptionContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *ImageCollectionOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitImageCollectionOption(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ImageCollectionOption() (localctx IImageCollectionOptionContext) { localctx = NewImageCollectionOptionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 160, MDLParserRULE_imageCollectionOption) - p.SetState(2010) + p.SetState(2043) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -25571,7 +26741,7 @@ func (p *MDLParser) ImageCollectionOption() (localctx IImageCollectionOptionCont case MDLParserEXPORT: p.EnterOuterAlt(localctx, 1) { - p.SetState(2005) + p.SetState(2038) p.Match(MDLParserEXPORT) if p.HasError() { // Recognition error - abort rule @@ -25579,7 +26749,7 @@ func (p *MDLParser) ImageCollectionOption() (localctx IImageCollectionOptionCont } } { - p.SetState(2006) + p.SetState(2039) p.Match(MDLParserLEVEL) if p.HasError() { // Recognition error - abort rule @@ -25587,7 +26757,7 @@ func (p *MDLParser) ImageCollectionOption() (localctx IImageCollectionOptionCont } } { - p.SetState(2007) + p.SetState(2040) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -25598,7 +26768,7 @@ func (p *MDLParser) ImageCollectionOption() (localctx IImageCollectionOptionCont case MDLParserCOMMENT: p.EnterOuterAlt(localctx, 2) { - p.SetState(2008) + p.SetState(2041) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -25606,7 +26776,7 @@ func (p *MDLParser) ImageCollectionOption() (localctx IImageCollectionOptionCont } } { - p.SetState(2009) + p.SetState(2042) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -25760,6 +26930,16 @@ func (s *ImageCollectionBodyContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *ImageCollectionBodyContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitImageCollectionBody(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ImageCollectionBody() (localctx IImageCollectionBodyContext) { localctx = NewImageCollectionBodyContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 162, MDLParserRULE_imageCollectionBody) @@ -25767,7 +26947,7 @@ func (p *MDLParser) ImageCollectionBody() (localctx IImageCollectionBodyContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(2012) + p.SetState(2045) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -25775,10 +26955,10 @@ func (p *MDLParser) ImageCollectionBody() (localctx IImageCollectionBodyContext) } } { - p.SetState(2013) + p.SetState(2046) p.ImageCollectionItem() } - p.SetState(2018) + p.SetState(2051) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -25787,7 +26967,7 @@ func (p *MDLParser) ImageCollectionBody() (localctx IImageCollectionBodyContext) for _la == MDLParserCOMMA { { - p.SetState(2014) + p.SetState(2047) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -25795,11 +26975,11 @@ func (p *MDLParser) ImageCollectionBody() (localctx IImageCollectionBodyContext) } } { - p.SetState(2015) + p.SetState(2048) p.ImageCollectionItem() } - p.SetState(2020) + p.SetState(2053) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -25807,7 +26987,7 @@ func (p *MDLParser) ImageCollectionBody() (localctx IImageCollectionBodyContext) _la = p.GetTokenStream().LA(1) } { - p.SetState(2021) + p.SetState(2054) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -25941,12 +27121,22 @@ func (s *ImageCollectionItemContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *ImageCollectionItemContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitImageCollectionItem(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ImageCollectionItem() (localctx IImageCollectionItemContext) { localctx = NewImageCollectionItemContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 164, MDLParserRULE_imageCollectionItem) p.EnterOuterAlt(localctx, 1) { - p.SetState(2023) + p.SetState(2056) p.Match(MDLParserIMAGE) if p.HasError() { // Recognition error - abort rule @@ -25954,11 +27144,11 @@ func (p *MDLParser) ImageCollectionItem() (localctx IImageCollectionItemContext) } } { - p.SetState(2024) + p.SetState(2057) p.ImageName() } { - p.SetState(2025) + p.SetState(2058) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -25966,7 +27156,7 @@ func (p *MDLParser) ImageCollectionItem() (localctx IImageCollectionItemContext) } } { - p.SetState(2026) + p.SetState(2059) p.Match(MDLParserFILE_KW) if p.HasError() { // Recognition error - abort rule @@ -25974,7 +27164,7 @@ func (p *MDLParser) ImageCollectionItem() (localctx IImageCollectionItemContext) } } { - p.SetState(2027) + p.SetState(2060) var _m = p.Match(MDLParserSTRING_LITERAL) @@ -26090,10 +27280,20 @@ func (s *ImageNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ImageNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitImageName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ImageName() (localctx IImageNameContext) { localctx = NewImageNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 166, MDLParserRULE_imageName) - p.SetState(2032) + p.SetState(2065) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -26103,7 +27303,7 @@ func (p *MDLParser) ImageName() (localctx IImageNameContext) { case MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(2029) + p.SetState(2062) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -26114,7 +27314,7 @@ func (p *MDLParser) ImageName() (localctx IImageNameContext) { case MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(2030) + p.SetState(2063) p.Match(MDLParserQUOTED_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -26125,7 +27325,7 @@ func (p *MDLParser) ImageName() (localctx IImageNameContext) { case MDLParserINDEX, MDLParserOWNER, MDLParserREFERENCE, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserDEBUG, MDLParserACTION, MDLParserSORT, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserTITLE, MDLParserLABEL, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserCONTENT, MDLParserTABLETWIDTH, MDLParserPHONEWIDTH, MDLParserCLASS, MDLParserSTYLE, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserEDITABLE, MDLParserVISIBLE, MDLParserSUCCESS, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserERROR, MDLParserRANGE, MDLParserSTATUS, MDLParserVERSION, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserNAVIGATION, MDLParserHOME, MDLParserCHECK, MDLParserTEXT, MDLParserMESSAGE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserFORMAT, MDLParserROLE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserDESCRIPTION, MDLParserOFF: p.EnterOuterAlt(localctx, 3) { - p.SetState(2031) + p.SetState(2064) p.CommonNameKeyword() } @@ -26287,12 +27487,22 @@ func (s *CreateValidationRuleStatementContext) ExitRule(listener antlr.ParseTree } } +func (s *CreateValidationRuleStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateValidationRuleStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateValidationRuleStatement() (localctx ICreateValidationRuleStatementContext) { localctx = NewCreateValidationRuleStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 168, MDLParserRULE_createValidationRuleStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(2034) + p.SetState(2067) p.Match(MDLParserVALIDATION) if p.HasError() { // Recognition error - abort rule @@ -26300,7 +27510,7 @@ func (p *MDLParser) CreateValidationRuleStatement() (localctx ICreateValidationR } } { - p.SetState(2035) + p.SetState(2068) p.Match(MDLParserRULE) if p.HasError() { // Recognition error - abort rule @@ -26308,11 +27518,11 @@ func (p *MDLParser) CreateValidationRuleStatement() (localctx ICreateValidationR } } { - p.SetState(2036) + p.SetState(2069) p.QualifiedName() } { - p.SetState(2037) + p.SetState(2070) p.Match(MDLParserFOR) if p.HasError() { // Recognition error - abort rule @@ -26320,11 +27530,11 @@ func (p *MDLParser) CreateValidationRuleStatement() (localctx ICreateValidationR } } { - p.SetState(2038) + p.SetState(2071) p.QualifiedName() } { - p.SetState(2039) + p.SetState(2072) p.ValidationRuleBody() } @@ -26514,10 +27724,20 @@ func (s *ValidationRuleBodyContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ValidationRuleBodyContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitValidationRuleBody(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { localctx = NewValidationRuleBodyContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 170, MDLParserRULE_validationRuleBody) - p.SetState(2068) + p.SetState(2101) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -26527,7 +27747,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { case MDLParserEXPRESSION: p.EnterOuterAlt(localctx, 1) { - p.SetState(2041) + p.SetState(2074) p.Match(MDLParserEXPRESSION) if p.HasError() { // Recognition error - abort rule @@ -26535,11 +27755,11 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2042) + p.SetState(2075) p.Expression() } { - p.SetState(2043) + p.SetState(2076) p.Match(MDLParserFEEDBACK) if p.HasError() { // Recognition error - abort rule @@ -26547,7 +27767,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2044) + p.SetState(2077) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -26558,7 +27778,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { case MDLParserREQUIRED: p.EnterOuterAlt(localctx, 2) { - p.SetState(2046) + p.SetState(2079) p.Match(MDLParserREQUIRED) if p.HasError() { // Recognition error - abort rule @@ -26566,11 +27786,11 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2047) + p.SetState(2080) p.AttributeReference() } { - p.SetState(2048) + p.SetState(2081) p.Match(MDLParserFEEDBACK) if p.HasError() { // Recognition error - abort rule @@ -26578,7 +27798,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2049) + p.SetState(2082) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -26589,7 +27809,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { case MDLParserUNIQUE: p.EnterOuterAlt(localctx, 3) { - p.SetState(2051) + p.SetState(2084) p.Match(MDLParserUNIQUE) if p.HasError() { // Recognition error - abort rule @@ -26597,11 +27817,11 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2052) + p.SetState(2085) p.AttributeReferenceList() } { - p.SetState(2053) + p.SetState(2086) p.Match(MDLParserFEEDBACK) if p.HasError() { // Recognition error - abort rule @@ -26609,7 +27829,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2054) + p.SetState(2087) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -26620,7 +27840,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { case MDLParserRANGE: p.EnterOuterAlt(localctx, 4) { - p.SetState(2056) + p.SetState(2089) p.Match(MDLParserRANGE) if p.HasError() { // Recognition error - abort rule @@ -26628,15 +27848,15 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2057) + p.SetState(2090) p.AttributeReference() } { - p.SetState(2058) + p.SetState(2091) p.RangeConstraint() } { - p.SetState(2059) + p.SetState(2092) p.Match(MDLParserFEEDBACK) if p.HasError() { // Recognition error - abort rule @@ -26644,7 +27864,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2060) + p.SetState(2093) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -26655,7 +27875,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { case MDLParserREGEX: p.EnterOuterAlt(localctx, 5) { - p.SetState(2062) + p.SetState(2095) p.Match(MDLParserREGEX) if p.HasError() { // Recognition error - abort rule @@ -26663,11 +27883,11 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2063) + p.SetState(2096) p.AttributeReference() } { - p.SetState(2064) + p.SetState(2097) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -26675,7 +27895,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2065) + p.SetState(2098) p.Match(MDLParserFEEDBACK) if p.HasError() { // Recognition error - abort rule @@ -26683,7 +27903,7 @@ func (p *MDLParser) ValidationRuleBody() (localctx IValidationRuleBodyContext) { } } { - p.SetState(2066) + p.SetState(2099) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -26847,10 +28067,20 @@ func (s *RangeConstraintContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RangeConstraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRangeConstraint(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RangeConstraint() (localctx IRangeConstraintContext) { localctx = NewRangeConstraintContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 172, MDLParserRULE_rangeConstraint) - p.SetState(2083) + p.SetState(2116) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -26860,7 +28090,7 @@ func (p *MDLParser) RangeConstraint() (localctx IRangeConstraintContext) { case MDLParserBETWEEN: p.EnterOuterAlt(localctx, 1) { - p.SetState(2070) + p.SetState(2103) p.Match(MDLParserBETWEEN) if p.HasError() { // Recognition error - abort rule @@ -26868,11 +28098,11 @@ func (p *MDLParser) RangeConstraint() (localctx IRangeConstraintContext) { } } { - p.SetState(2071) + p.SetState(2104) p.Literal() } { - p.SetState(2072) + p.SetState(2105) p.Match(MDLParserAND) if p.HasError() { // Recognition error - abort rule @@ -26880,14 +28110,14 @@ func (p *MDLParser) RangeConstraint() (localctx IRangeConstraintContext) { } } { - p.SetState(2073) + p.SetState(2106) p.Literal() } case MDLParserLESS_THAN: p.EnterOuterAlt(localctx, 2) { - p.SetState(2075) + p.SetState(2108) p.Match(MDLParserLESS_THAN) if p.HasError() { // Recognition error - abort rule @@ -26895,14 +28125,14 @@ func (p *MDLParser) RangeConstraint() (localctx IRangeConstraintContext) { } } { - p.SetState(2076) + p.SetState(2109) p.Literal() } case MDLParserLESS_THAN_OR_EQUAL: p.EnterOuterAlt(localctx, 3) { - p.SetState(2077) + p.SetState(2110) p.Match(MDLParserLESS_THAN_OR_EQUAL) if p.HasError() { // Recognition error - abort rule @@ -26910,14 +28140,14 @@ func (p *MDLParser) RangeConstraint() (localctx IRangeConstraintContext) { } } { - p.SetState(2078) + p.SetState(2111) p.Literal() } case MDLParserGREATER_THAN: p.EnterOuterAlt(localctx, 4) { - p.SetState(2079) + p.SetState(2112) p.Match(MDLParserGREATER_THAN) if p.HasError() { // Recognition error - abort rule @@ -26925,14 +28155,14 @@ func (p *MDLParser) RangeConstraint() (localctx IRangeConstraintContext) { } } { - p.SetState(2080) + p.SetState(2113) p.Literal() } case MDLParserGREATER_THAN_OR_EQUAL: p.EnterOuterAlt(localctx, 5) { - p.SetState(2081) + p.SetState(2114) p.Match(MDLParserGREATER_THAN_OR_EQUAL) if p.HasError() { // Recognition error - abort rule @@ -26940,7 +28170,7 @@ func (p *MDLParser) RangeConstraint() (localctx IRangeConstraintContext) { } } { - p.SetState(2082) + p.SetState(2115) p.Literal() } @@ -27047,6 +28277,16 @@ func (s *AttributeReferenceContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AttributeReferenceContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAttributeReference(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AttributeReference() (localctx IAttributeReferenceContext) { localctx = NewAttributeReferenceContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 174, MDLParserRULE_attributeReference) @@ -27054,14 +28294,14 @@ func (p *MDLParser) AttributeReference() (localctx IAttributeReferenceContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2085) + p.SetState(2118) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2090) + p.SetState(2123) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -27070,7 +28310,7 @@ func (p *MDLParser) AttributeReference() (localctx IAttributeReferenceContext) { for _la == MDLParserSLASH { { - p.SetState(2086) + p.SetState(2119) p.Match(MDLParserSLASH) if p.HasError() { // Recognition error - abort rule @@ -27078,7 +28318,7 @@ func (p *MDLParser) AttributeReference() (localctx IAttributeReferenceContext) { } } { - p.SetState(2087) + p.SetState(2120) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -27086,7 +28326,7 @@ func (p *MDLParser) AttributeReference() (localctx IAttributeReferenceContext) { } } - p.SetState(2092) + p.SetState(2125) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -27225,6 +28465,16 @@ func (s *AttributeReferenceListContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *AttributeReferenceListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAttributeReferenceList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AttributeReferenceList() (localctx IAttributeReferenceListContext) { localctx = NewAttributeReferenceListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 176, MDLParserRULE_attributeReferenceList) @@ -27232,10 +28482,10 @@ func (p *MDLParser) AttributeReferenceList() (localctx IAttributeReferenceListCo p.EnterOuterAlt(localctx, 1) { - p.SetState(2093) + p.SetState(2126) p.AttributeReference() } - p.SetState(2098) + p.SetState(2131) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -27244,7 +28494,7 @@ func (p *MDLParser) AttributeReferenceList() (localctx IAttributeReferenceListCo for _la == MDLParserCOMMA { { - p.SetState(2094) + p.SetState(2127) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -27252,11 +28502,11 @@ func (p *MDLParser) AttributeReferenceList() (localctx IAttributeReferenceListCo } } { - p.SetState(2095) + p.SetState(2128) p.AttributeReference() } - p.SetState(2100) + p.SetState(2133) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -27462,6 +28712,16 @@ func (s *CreateMicroflowStatementContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *CreateMicroflowStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateMicroflowStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateMicroflowStatement() (localctx ICreateMicroflowStatementContext) { localctx = NewCreateMicroflowStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 178, MDLParserRULE_createMicroflowStatement) @@ -27469,7 +28729,7 @@ func (p *MDLParser) CreateMicroflowStatement() (localctx ICreateMicroflowStateme p.EnterOuterAlt(localctx, 1) { - p.SetState(2101) + p.SetState(2134) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -27477,40 +28737,40 @@ func (p *MDLParser) CreateMicroflowStatement() (localctx ICreateMicroflowStateme } } { - p.SetState(2102) + p.SetState(2135) p.QualifiedName() } { - p.SetState(2103) + p.SetState(2136) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2105) + p.SetState(2138) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-188)) & ^0x3f) == 0 && ((int64(1)<<(_la-188))&576478365295182137) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&180143985430364191) != 0) || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&5647091739131907) != 0) || ((int64((_la-416)) & ^0x3f) == 0 && ((int64(1)<<(_la-416))&-6917528058991722373) != 0) || ((int64((_la-514)) & ^0x3f) == 0 && ((int64(1)<<(_la-514))&11) != 0) { + if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-189)) & ^0x3f) == 0 && ((int64(1)<<(_la-189))&2305913398763585849) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&180143985430364191) != 0) || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&5647091739131907) != 0) || ((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&-6917528058991722373) != 0) || ((int64((_la-517)) & ^0x3f) == 0 && ((int64(1)<<(_la-517))&11) != 0) { { - p.SetState(2104) + p.SetState(2137) p.MicroflowParameterList() } } { - p.SetState(2107) + p.SetState(2140) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2109) + p.SetState(2142) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -27519,12 +28779,12 @@ func (p *MDLParser) CreateMicroflowStatement() (localctx ICreateMicroflowStateme if _la == MDLParserRETURNS { { - p.SetState(2108) + p.SetState(2141) p.MicroflowReturnType() } } - p.SetState(2112) + p.SetState(2145) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -27533,13 +28793,13 @@ func (p *MDLParser) CreateMicroflowStatement() (localctx ICreateMicroflowStateme if _la == MDLParserFOLDER || _la == MDLParserCOMMENT { { - p.SetState(2111) + p.SetState(2144) p.MicroflowOptions() } } { - p.SetState(2114) + p.SetState(2147) p.Match(MDLParserBEGIN) if p.HasError() { // Recognition error - abort rule @@ -27547,23 +28807,23 @@ func (p *MDLParser) CreateMicroflowStatement() (localctx ICreateMicroflowStateme } } { - p.SetState(2115) + p.SetState(2148) p.MicroflowBody() } { - p.SetState(2116) + p.SetState(2149) p.Match(MDLParserEND) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2118) + p.SetState(2151) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 150, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) == 1 { { - p.SetState(2117) + p.SetState(2150) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -27574,12 +28834,12 @@ func (p *MDLParser) CreateMicroflowStatement() (localctx ICreateMicroflowStateme } else if p.HasError() { // JIM goto errorExit } - p.SetState(2121) + p.SetState(2154) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 151, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { { - p.SetState(2120) + p.SetState(2153) p.Match(MDLParserSLASH) if p.HasError() { // Recognition error - abort rule @@ -27772,6 +29032,16 @@ func (s *CreateJavaActionStatementContext) ExitRule(listener antlr.ParseTreeList } } +func (s *CreateJavaActionStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateJavaActionStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateJavaActionStatement() (localctx ICreateJavaActionStatementContext) { localctx = NewCreateJavaActionStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 180, MDLParserRULE_createJavaActionStatement) @@ -27779,7 +29049,7 @@ func (p *MDLParser) CreateJavaActionStatement() (localctx ICreateJavaActionState p.EnterOuterAlt(localctx, 1) { - p.SetState(2123) + p.SetState(2156) p.Match(MDLParserJAVA) if p.HasError() { // Recognition error - abort rule @@ -27787,7 +29057,7 @@ func (p *MDLParser) CreateJavaActionStatement() (localctx ICreateJavaActionState } } { - p.SetState(2124) + p.SetState(2157) p.Match(MDLParserACTION) if p.HasError() { // Recognition error - abort rule @@ -27795,40 +29065,40 @@ func (p *MDLParser) CreateJavaActionStatement() (localctx ICreateJavaActionState } } { - p.SetState(2125) + p.SetState(2158) p.QualifiedName() } { - p.SetState(2126) + p.SetState(2159) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2128) + p.SetState(2161) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-188)) & ^0x3f) == 0 && ((int64(1)<<(_la-188))&576478365295182137) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&180143985430364191) != 0) || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&5647091739131907) != 0) || ((int64((_la-416)) & ^0x3f) == 0 && ((int64(1)<<(_la-416))&-6917528058991722373) != 0) || _la == MDLParserIDENTIFIER || _la == MDLParserQUOTED_IDENTIFIER { + if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-189)) & ^0x3f) == 0 && ((int64(1)<<(_la-189))&2305913398763585849) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&180143985430364191) != 0) || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&5647091739131907) != 0) || ((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&-6917528058991722373) != 0) || _la == MDLParserIDENTIFIER || _la == MDLParserQUOTED_IDENTIFIER { { - p.SetState(2127) + p.SetState(2160) p.JavaActionParameterList() } } { - p.SetState(2130) + p.SetState(2163) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2132) + p.SetState(2165) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -27837,12 +29107,12 @@ func (p *MDLParser) CreateJavaActionStatement() (localctx ICreateJavaActionState if _la == MDLParserRETURNS { { - p.SetState(2131) + p.SetState(2164) p.JavaActionReturnType() } } - p.SetState(2135) + p.SetState(2168) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -27851,13 +29121,13 @@ func (p *MDLParser) CreateJavaActionStatement() (localctx ICreateJavaActionState if _la == MDLParserEXPOSED { { - p.SetState(2134) + p.SetState(2167) p.JavaActionExposedClause() } } { - p.SetState(2137) + p.SetState(2170) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -27865,19 +29135,19 @@ func (p *MDLParser) CreateJavaActionStatement() (localctx ICreateJavaActionState } } { - p.SetState(2138) + p.SetState(2171) p.Match(MDLParserDOLLAR_STRING) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2140) + p.SetState(2173) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { { - p.SetState(2139) + p.SetState(2172) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -28020,6 +29290,16 @@ func (s *JavaActionParameterListContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *JavaActionParameterListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitJavaActionParameterList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) JavaActionParameterList() (localctx IJavaActionParameterListContext) { localctx = NewJavaActionParameterListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 182, MDLParserRULE_javaActionParameterList) @@ -28027,10 +29307,10 @@ func (p *MDLParser) JavaActionParameterList() (localctx IJavaActionParameterList p.EnterOuterAlt(localctx, 1) { - p.SetState(2142) + p.SetState(2175) p.JavaActionParameter() } - p.SetState(2147) + p.SetState(2180) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -28039,7 +29319,7 @@ func (p *MDLParser) JavaActionParameterList() (localctx IJavaActionParameterList for _la == MDLParserCOMMA { { - p.SetState(2143) + p.SetState(2176) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -28047,11 +29327,11 @@ func (p *MDLParser) JavaActionParameterList() (localctx IJavaActionParameterList } } { - p.SetState(2144) + p.SetState(2177) p.JavaActionParameter() } - p.SetState(2149) + p.SetState(2182) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -28181,6 +29461,16 @@ func (s *JavaActionParameterContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *JavaActionParameterContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitJavaActionParameter(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) JavaActionParameter() (localctx IJavaActionParameterContext) { localctx = NewJavaActionParameterContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 184, MDLParserRULE_javaActionParameter) @@ -28188,11 +29478,11 @@ func (p *MDLParser) JavaActionParameter() (localctx IJavaActionParameterContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(2150) + p.SetState(2183) p.ParameterName() } { - p.SetState(2151) + p.SetState(2184) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -28200,10 +29490,10 @@ func (p *MDLParser) JavaActionParameter() (localctx IJavaActionParameterContext) } } { - p.SetState(2152) + p.SetState(2185) p.DataType() } - p.SetState(2154) + p.SetState(2187) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -28212,7 +29502,7 @@ func (p *MDLParser) JavaActionParameter() (localctx IJavaActionParameterContext) if _la == MDLParserNOT_NULL { { - p.SetState(2153) + p.SetState(2186) p.Match(MDLParserNOT_NULL) if p.HasError() { // Recognition error - abort rule @@ -28322,12 +29612,22 @@ func (s *JavaActionReturnTypeContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *JavaActionReturnTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitJavaActionReturnType(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) JavaActionReturnType() (localctx IJavaActionReturnTypeContext) { localctx = NewJavaActionReturnTypeContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 186, MDLParserRULE_javaActionReturnType) p.EnterOuterAlt(localctx, 1) { - p.SetState(2156) + p.SetState(2189) p.Match(MDLParserRETURNS) if p.HasError() { // Recognition error - abort rule @@ -28335,7 +29635,7 @@ func (p *MDLParser) JavaActionReturnType() (localctx IJavaActionReturnTypeContex } } { - p.SetState(2157) + p.SetState(2190) p.DataType() } @@ -28442,12 +29742,22 @@ func (s *JavaActionExposedClauseContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *JavaActionExposedClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitJavaActionExposedClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) JavaActionExposedClause() (localctx IJavaActionExposedClauseContext) { localctx = NewJavaActionExposedClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 188, MDLParserRULE_javaActionExposedClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(2159) + p.SetState(2192) p.Match(MDLParserEXPOSED) if p.HasError() { // Recognition error - abort rule @@ -28455,7 +29765,7 @@ func (p *MDLParser) JavaActionExposedClause() (localctx IJavaActionExposedClause } } { - p.SetState(2160) + p.SetState(2193) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -28463,7 +29773,7 @@ func (p *MDLParser) JavaActionExposedClause() (localctx IJavaActionExposedClause } } { - p.SetState(2161) + p.SetState(2194) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -28471,7 +29781,7 @@ func (p *MDLParser) JavaActionExposedClause() (localctx IJavaActionExposedClause } } { - p.SetState(2162) + p.SetState(2195) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule @@ -28479,7 +29789,7 @@ func (p *MDLParser) JavaActionExposedClause() (localctx IJavaActionExposedClause } } { - p.SetState(2163) + p.SetState(2196) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -28618,6 +29928,16 @@ func (s *MicroflowParameterListContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *MicroflowParameterListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMicroflowParameterList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MicroflowParameterList() (localctx IMicroflowParameterListContext) { localctx = NewMicroflowParameterListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 190, MDLParserRULE_microflowParameterList) @@ -28625,10 +29945,10 @@ func (p *MDLParser) MicroflowParameterList() (localctx IMicroflowParameterListCo p.EnterOuterAlt(localctx, 1) { - p.SetState(2165) + p.SetState(2198) p.MicroflowParameter() } - p.SetState(2170) + p.SetState(2203) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -28637,7 +29957,7 @@ func (p *MDLParser) MicroflowParameterList() (localctx IMicroflowParameterListCo for _la == MDLParserCOMMA { { - p.SetState(2166) + p.SetState(2199) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -28645,11 +29965,11 @@ func (p *MDLParser) MicroflowParameterList() (localctx IMicroflowParameterListCo } } { - p.SetState(2167) + p.SetState(2200) p.MicroflowParameter() } - p.SetState(2172) + p.SetState(2205) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -28779,11 +30099,21 @@ func (s *MicroflowParameterContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *MicroflowParameterContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMicroflowParameter(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MicroflowParameter() (localctx IMicroflowParameterContext) { localctx = NewMicroflowParameterContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 192, MDLParserRULE_microflowParameter) p.EnterOuterAlt(localctx, 1) - p.SetState(2175) + p.SetState(2208) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -28792,13 +30122,13 @@ func (p *MDLParser) MicroflowParameter() (localctx IMicroflowParameterContext) { switch p.GetTokenStream().LA(1) { case MDLParserINDEX, MDLParserOWNER, MDLParserREFERENCE, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserDEBUG, MDLParserACTION, MDLParserSORT, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserTITLE, MDLParserLABEL, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserCONTENT, MDLParserTABLETWIDTH, MDLParserPHONEWIDTH, MDLParserCLASS, MDLParserSTYLE, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserEDITABLE, MDLParserVISIBLE, MDLParserSUCCESS, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserERROR, MDLParserRANGE, MDLParserSTATUS, MDLParserVERSION, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserNAVIGATION, MDLParserHOME, MDLParserCHECK, MDLParserTEXT, MDLParserMESSAGE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserFORMAT, MDLParserROLE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserDESCRIPTION, MDLParserOFF, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: { - p.SetState(2173) + p.SetState(2206) p.ParameterName() } case MDLParserVARIABLE: { - p.SetState(2174) + p.SetState(2207) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -28811,7 +30141,7 @@ func (p *MDLParser) MicroflowParameter() (localctx IMicroflowParameterContext) { goto errorExit } { - p.SetState(2177) + p.SetState(2210) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -28819,7 +30149,7 @@ func (p *MDLParser) MicroflowParameter() (localctx IMicroflowParameterContext) { } } { - p.SetState(2178) + p.SetState(2211) p.DataType() } @@ -28928,10 +30258,20 @@ func (s *ParameterNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ParameterNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitParameterName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ParameterName() (localctx IParameterNameContext) { localctx = NewParameterNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 194, MDLParserRULE_parameterName) - p.SetState(2183) + p.SetState(2216) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -28941,7 +30281,7 @@ func (p *MDLParser) ParameterName() (localctx IParameterNameContext) { case MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(2180) + p.SetState(2213) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -28952,7 +30292,7 @@ func (p *MDLParser) ParameterName() (localctx IParameterNameContext) { case MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(2181) + p.SetState(2214) p.Match(MDLParserQUOTED_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -28963,7 +30303,7 @@ func (p *MDLParser) ParameterName() (localctx IParameterNameContext) { case MDLParserINDEX, MDLParserOWNER, MDLParserREFERENCE, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserDEBUG, MDLParserACTION, MDLParserSORT, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserTITLE, MDLParserLABEL, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserCONTENT, MDLParserTABLETWIDTH, MDLParserPHONEWIDTH, MDLParserCLASS, MDLParserSTYLE, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserEDITABLE, MDLParserVISIBLE, MDLParserSUCCESS, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserERROR, MDLParserRANGE, MDLParserSTATUS, MDLParserVERSION, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserNAVIGATION, MDLParserHOME, MDLParserCHECK, MDLParserTEXT, MDLParserMESSAGE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserFORMAT, MDLParserROLE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserDESCRIPTION, MDLParserOFF: p.EnterOuterAlt(localctx, 3) { - p.SetState(2182) + p.SetState(2215) p.CommonNameKeyword() } @@ -29082,6 +30422,16 @@ func (s *MicroflowReturnTypeContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *MicroflowReturnTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMicroflowReturnType(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MicroflowReturnType() (localctx IMicroflowReturnTypeContext) { localctx = NewMicroflowReturnTypeContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 196, MDLParserRULE_microflowReturnType) @@ -29089,7 +30439,7 @@ func (p *MDLParser) MicroflowReturnType() (localctx IMicroflowReturnTypeContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(2185) + p.SetState(2218) p.Match(MDLParserRETURNS) if p.HasError() { // Recognition error - abort rule @@ -29097,10 +30447,10 @@ func (p *MDLParser) MicroflowReturnType() (localctx IMicroflowReturnTypeContext) } } { - p.SetState(2186) + p.SetState(2219) p.DataType() } - p.SetState(2189) + p.SetState(2222) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -29109,7 +30459,7 @@ func (p *MDLParser) MicroflowReturnType() (localctx IMicroflowReturnTypeContext) if _la == MDLParserAS { { - p.SetState(2187) + p.SetState(2220) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -29117,7 +30467,7 @@ func (p *MDLParser) MicroflowReturnType() (localctx IMicroflowReturnTypeContext) } } { - p.SetState(2188) + p.SetState(2221) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -29248,13 +30598,23 @@ func (s *MicroflowOptionsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *MicroflowOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMicroflowOptions(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MicroflowOptions() (localctx IMicroflowOptionsContext) { localctx = NewMicroflowOptionsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 198, MDLParserRULE_microflowOptions) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(2192) + p.SetState(2225) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -29263,11 +30623,11 @@ func (p *MDLParser) MicroflowOptions() (localctx IMicroflowOptionsContext) { for ok := true; ok; ok = _la == MDLParserFOLDER || _la == MDLParserCOMMENT { { - p.SetState(2191) + p.SetState(2224) p.MicroflowOption() } - p.SetState(2194) + p.SetState(2227) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -29368,10 +30728,20 @@ func (s *MicroflowOptionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *MicroflowOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMicroflowOption(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MicroflowOption() (localctx IMicroflowOptionContext) { localctx = NewMicroflowOptionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 200, MDLParserRULE_microflowOption) - p.SetState(2200) + p.SetState(2233) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -29381,7 +30751,7 @@ func (p *MDLParser) MicroflowOption() (localctx IMicroflowOptionContext) { case MDLParserFOLDER: p.EnterOuterAlt(localctx, 1) { - p.SetState(2196) + p.SetState(2229) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -29389,7 +30759,7 @@ func (p *MDLParser) MicroflowOption() (localctx IMicroflowOptionContext) { } } { - p.SetState(2197) + p.SetState(2230) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -29400,7 +30770,7 @@ func (p *MDLParser) MicroflowOption() (localctx IMicroflowOptionContext) { case MDLParserCOMMENT: p.EnterOuterAlt(localctx, 2) { - p.SetState(2198) + p.SetState(2231) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -29408,7 +30778,7 @@ func (p *MDLParser) MicroflowOption() (localctx IMicroflowOptionContext) { } } { - p.SetState(2199) + p.SetState(2232) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -29542,26 +30912,36 @@ func (s *MicroflowBodyContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *MicroflowBodyContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMicroflowBody(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MicroflowBody() (localctx IMicroflowBodyContext) { localctx = NewMicroflowBodyContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 202, MDLParserRULE_microflowBody) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(2205) + p.SetState(2238) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ((int64((_la-17)) & ^0x3f) == 0 && ((int64(1)<<(_la-17))&281478197936129) != 0) || ((int64((_la-97)) & ^0x3f) == 0 && ((int64(1)<<(_la-97))&68721703423) != 0) || ((int64((_la-298)) & ^0x3f) == 0 && ((int64(1)<<(_la-298))&1073750049) != 0) || _la == MDLParserEXECUTE || _la == MDLParserAT || _la == MDLParserVARIABLE { + for ((int64((_la-17)) & ^0x3f) == 0 && ((int64(1)<<(_la-17))&281478197936129) != 0) || ((int64((_la-97)) & ^0x3f) == 0 && ((int64(1)<<(_la-97))&68721703423) != 0) || ((int64((_la-301)) & ^0x3f) == 0 && ((int64(1)<<(_la-301))&1073750049) != 0) || _la == MDLParserEXECUTE || _la == MDLParserAT || _la == MDLParserVARIABLE { { - p.SetState(2202) + p.SetState(2235) p.MicroflowStatement() } - p.SetState(2207) + p.SetState(2240) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30256,21 +31636,31 @@ func (s *MicroflowStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *MicroflowStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMicroflowStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { localctx = NewMicroflowStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 204, MDLParserRULE_microflowStatement) var _la int - p.SetState(2538) + p.SetState(2571) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 231, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 236, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) - p.SetState(2211) + p.SetState(2244) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30279,11 +31669,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2208) + p.SetState(2241) p.Annotation() } - p.SetState(2213) + p.SetState(2246) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30291,10 +31681,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2214) + p.SetState(2247) p.DeclareStatement() } - p.SetState(2216) + p.SetState(2249) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30303,7 +31693,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2215) + p.SetState(2248) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30315,7 +31705,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 2: p.EnterOuterAlt(localctx, 2) - p.SetState(2221) + p.SetState(2254) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30324,11 +31714,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2218) + p.SetState(2251) p.Annotation() } - p.SetState(2223) + p.SetState(2256) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30336,10 +31726,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2224) + p.SetState(2257) p.SetStatement() } - p.SetState(2226) + p.SetState(2259) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30348,7 +31738,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2225) + p.SetState(2258) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30360,7 +31750,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 3: p.EnterOuterAlt(localctx, 3) - p.SetState(2231) + p.SetState(2264) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30369,11 +31759,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2228) + p.SetState(2261) p.Annotation() } - p.SetState(2233) + p.SetState(2266) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30381,10 +31771,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2234) + p.SetState(2267) p.CreateListStatement() } - p.SetState(2236) + p.SetState(2269) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30393,7 +31783,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2235) + p.SetState(2268) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30405,7 +31795,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 4: p.EnterOuterAlt(localctx, 4) - p.SetState(2241) + p.SetState(2274) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30414,11 +31804,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2238) + p.SetState(2271) p.Annotation() } - p.SetState(2243) + p.SetState(2276) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30426,10 +31816,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2244) + p.SetState(2277) p.CreateObjectStatement() } - p.SetState(2246) + p.SetState(2279) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30438,7 +31828,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2245) + p.SetState(2278) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30450,7 +31840,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 5: p.EnterOuterAlt(localctx, 5) - p.SetState(2251) + p.SetState(2284) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30459,11 +31849,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2248) + p.SetState(2281) p.Annotation() } - p.SetState(2253) + p.SetState(2286) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30471,10 +31861,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2254) + p.SetState(2287) p.ChangeObjectStatement() } - p.SetState(2256) + p.SetState(2289) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30483,7 +31873,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2255) + p.SetState(2288) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30495,7 +31885,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 6: p.EnterOuterAlt(localctx, 6) - p.SetState(2261) + p.SetState(2294) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30504,11 +31894,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2258) + p.SetState(2291) p.Annotation() } - p.SetState(2263) + p.SetState(2296) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30516,10 +31906,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2264) + p.SetState(2297) p.CommitStatement() } - p.SetState(2266) + p.SetState(2299) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30528,7 +31918,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2265) + p.SetState(2298) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30540,7 +31930,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 7: p.EnterOuterAlt(localctx, 7) - p.SetState(2271) + p.SetState(2304) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30549,11 +31939,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2268) + p.SetState(2301) p.Annotation() } - p.SetState(2273) + p.SetState(2306) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30561,10 +31951,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2274) + p.SetState(2307) p.DeleteObjectStatement() } - p.SetState(2276) + p.SetState(2309) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30573,7 +31963,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2275) + p.SetState(2308) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30585,7 +31975,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 8: p.EnterOuterAlt(localctx, 8) - p.SetState(2281) + p.SetState(2314) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30594,11 +31984,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2278) + p.SetState(2311) p.Annotation() } - p.SetState(2283) + p.SetState(2316) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30606,10 +31996,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2284) + p.SetState(2317) p.RollbackStatement() } - p.SetState(2286) + p.SetState(2319) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30618,7 +32008,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2285) + p.SetState(2318) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30630,7 +32020,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 9: p.EnterOuterAlt(localctx, 9) - p.SetState(2291) + p.SetState(2324) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30639,11 +32029,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2288) + p.SetState(2321) p.Annotation() } - p.SetState(2293) + p.SetState(2326) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30651,10 +32041,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2294) + p.SetState(2327) p.RetrieveStatement() } - p.SetState(2296) + p.SetState(2329) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30663,7 +32053,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2295) + p.SetState(2328) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30675,7 +32065,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 10: p.EnterOuterAlt(localctx, 10) - p.SetState(2301) + p.SetState(2334) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30684,11 +32074,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2298) + p.SetState(2331) p.Annotation() } - p.SetState(2303) + p.SetState(2336) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30696,10 +32086,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2304) + p.SetState(2337) p.IfStatement() } - p.SetState(2306) + p.SetState(2339) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30708,7 +32098,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2305) + p.SetState(2338) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30720,7 +32110,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 11: p.EnterOuterAlt(localctx, 11) - p.SetState(2311) + p.SetState(2344) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30729,11 +32119,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2308) + p.SetState(2341) p.Annotation() } - p.SetState(2313) + p.SetState(2346) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30741,10 +32131,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2314) + p.SetState(2347) p.LoopStatement() } - p.SetState(2316) + p.SetState(2349) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30753,7 +32143,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2315) + p.SetState(2348) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30765,7 +32155,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 12: p.EnterOuterAlt(localctx, 12) - p.SetState(2321) + p.SetState(2354) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30774,11 +32164,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2318) + p.SetState(2351) p.Annotation() } - p.SetState(2323) + p.SetState(2356) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30786,10 +32176,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2324) + p.SetState(2357) p.WhileStatement() } - p.SetState(2326) + p.SetState(2359) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30798,7 +32188,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2325) + p.SetState(2358) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30810,7 +32200,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 13: p.EnterOuterAlt(localctx, 13) - p.SetState(2331) + p.SetState(2364) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30819,11 +32209,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2328) + p.SetState(2361) p.Annotation() } - p.SetState(2333) + p.SetState(2366) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30831,10 +32221,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2334) + p.SetState(2367) p.ContinueStatement() } - p.SetState(2336) + p.SetState(2369) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30843,7 +32233,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2335) + p.SetState(2368) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30855,7 +32245,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 14: p.EnterOuterAlt(localctx, 14) - p.SetState(2341) + p.SetState(2374) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30864,11 +32254,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2338) + p.SetState(2371) p.Annotation() } - p.SetState(2343) + p.SetState(2376) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30876,10 +32266,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2344) + p.SetState(2377) p.BreakStatement() } - p.SetState(2346) + p.SetState(2379) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30888,7 +32278,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2345) + p.SetState(2378) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30900,7 +32290,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 15: p.EnterOuterAlt(localctx, 15) - p.SetState(2351) + p.SetState(2384) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30909,11 +32299,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2348) + p.SetState(2381) p.Annotation() } - p.SetState(2353) + p.SetState(2386) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30921,10 +32311,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2354) + p.SetState(2387) p.ReturnStatement() } - p.SetState(2356) + p.SetState(2389) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30933,7 +32323,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2355) + p.SetState(2388) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30945,7 +32335,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 16: p.EnterOuterAlt(localctx, 16) - p.SetState(2361) + p.SetState(2394) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30954,11 +32344,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2358) + p.SetState(2391) p.Annotation() } - p.SetState(2363) + p.SetState(2396) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30966,10 +32356,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2364) + p.SetState(2397) p.RaiseErrorStatement() } - p.SetState(2366) + p.SetState(2399) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30978,7 +32368,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2365) + p.SetState(2398) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -30990,7 +32380,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 17: p.EnterOuterAlt(localctx, 17) - p.SetState(2371) + p.SetState(2404) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -30999,11 +32389,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2368) + p.SetState(2401) p.Annotation() } - p.SetState(2373) + p.SetState(2406) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31011,10 +32401,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2374) + p.SetState(2407) p.LogStatement() } - p.SetState(2376) + p.SetState(2409) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31023,7 +32413,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2375) + p.SetState(2408) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31035,7 +32425,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 18: p.EnterOuterAlt(localctx, 18) - p.SetState(2381) + p.SetState(2414) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31044,11 +32434,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2378) + p.SetState(2411) p.Annotation() } - p.SetState(2383) + p.SetState(2416) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31056,10 +32446,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2384) + p.SetState(2417) p.CallMicroflowStatement() } - p.SetState(2386) + p.SetState(2419) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31068,7 +32458,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2385) + p.SetState(2418) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31080,7 +32470,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 19: p.EnterOuterAlt(localctx, 19) - p.SetState(2391) + p.SetState(2424) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31089,11 +32479,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2388) + p.SetState(2421) p.Annotation() } - p.SetState(2393) + p.SetState(2426) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31101,10 +32491,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2394) + p.SetState(2427) p.CallJavaActionStatement() } - p.SetState(2396) + p.SetState(2429) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31113,7 +32503,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2395) + p.SetState(2428) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31125,7 +32515,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 20: p.EnterOuterAlt(localctx, 20) - p.SetState(2401) + p.SetState(2434) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31134,11 +32524,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2398) + p.SetState(2431) p.Annotation() } - p.SetState(2403) + p.SetState(2436) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31146,10 +32536,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2404) + p.SetState(2437) p.ExecuteDatabaseQueryStatement() } - p.SetState(2406) + p.SetState(2439) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31158,7 +32548,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2405) + p.SetState(2438) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31170,7 +32560,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 21: p.EnterOuterAlt(localctx, 21) - p.SetState(2411) + p.SetState(2444) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31179,11 +32569,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2408) + p.SetState(2441) p.Annotation() } - p.SetState(2413) + p.SetState(2446) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31191,10 +32581,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2414) + p.SetState(2447) p.CallExternalActionStatement() } - p.SetState(2416) + p.SetState(2449) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31203,7 +32593,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2415) + p.SetState(2448) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31215,7 +32605,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 22: p.EnterOuterAlt(localctx, 22) - p.SetState(2421) + p.SetState(2454) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31224,11 +32614,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2418) + p.SetState(2451) p.Annotation() } - p.SetState(2423) + p.SetState(2456) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31236,10 +32626,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2424) + p.SetState(2457) p.ShowPageStatement() } - p.SetState(2426) + p.SetState(2459) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31248,7 +32638,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2425) + p.SetState(2458) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31260,7 +32650,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 23: p.EnterOuterAlt(localctx, 23) - p.SetState(2431) + p.SetState(2464) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31269,11 +32659,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2428) + p.SetState(2461) p.Annotation() } - p.SetState(2433) + p.SetState(2466) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31281,10 +32671,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2434) + p.SetState(2467) p.ClosePageStatement() } - p.SetState(2436) + p.SetState(2469) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31293,7 +32683,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2435) + p.SetState(2468) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31305,7 +32695,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 24: p.EnterOuterAlt(localctx, 24) - p.SetState(2441) + p.SetState(2474) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31314,11 +32704,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2438) + p.SetState(2471) p.Annotation() } - p.SetState(2443) + p.SetState(2476) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31326,10 +32716,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2444) + p.SetState(2477) p.ShowHomePageStatement() } - p.SetState(2446) + p.SetState(2479) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31338,7 +32728,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2445) + p.SetState(2478) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31350,7 +32740,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 25: p.EnterOuterAlt(localctx, 25) - p.SetState(2451) + p.SetState(2484) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31359,11 +32749,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2448) + p.SetState(2481) p.Annotation() } - p.SetState(2453) + p.SetState(2486) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31371,10 +32761,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2454) + p.SetState(2487) p.ShowMessageStatement() } - p.SetState(2456) + p.SetState(2489) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31383,7 +32773,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2455) + p.SetState(2488) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31395,7 +32785,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 26: p.EnterOuterAlt(localctx, 26) - p.SetState(2461) + p.SetState(2494) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31404,11 +32794,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2458) + p.SetState(2491) p.Annotation() } - p.SetState(2463) + p.SetState(2496) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31416,10 +32806,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2464) + p.SetState(2497) p.ThrowStatement() } - p.SetState(2466) + p.SetState(2499) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31428,7 +32818,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2465) + p.SetState(2498) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31440,7 +32830,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 27: p.EnterOuterAlt(localctx, 27) - p.SetState(2471) + p.SetState(2504) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31449,11 +32839,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2468) + p.SetState(2501) p.Annotation() } - p.SetState(2473) + p.SetState(2506) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31461,10 +32851,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2474) + p.SetState(2507) p.ListOperationStatement() } - p.SetState(2476) + p.SetState(2509) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31473,7 +32863,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2475) + p.SetState(2508) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31485,7 +32875,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 28: p.EnterOuterAlt(localctx, 28) - p.SetState(2481) + p.SetState(2514) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31494,11 +32884,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2478) + p.SetState(2511) p.Annotation() } - p.SetState(2483) + p.SetState(2516) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31506,10 +32896,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2484) + p.SetState(2517) p.AggregateListStatement() } - p.SetState(2486) + p.SetState(2519) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31518,7 +32908,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2485) + p.SetState(2518) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31530,7 +32920,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 29: p.EnterOuterAlt(localctx, 29) - p.SetState(2491) + p.SetState(2524) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31539,11 +32929,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2488) + p.SetState(2521) p.Annotation() } - p.SetState(2493) + p.SetState(2526) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31551,10 +32941,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2494) + p.SetState(2527) p.AddToListStatement() } - p.SetState(2496) + p.SetState(2529) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31563,7 +32953,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2495) + p.SetState(2528) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31575,7 +32965,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 30: p.EnterOuterAlt(localctx, 30) - p.SetState(2501) + p.SetState(2534) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31584,11 +32974,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2498) + p.SetState(2531) p.Annotation() } - p.SetState(2503) + p.SetState(2536) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31596,10 +32986,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2504) + p.SetState(2537) p.RemoveFromListStatement() } - p.SetState(2506) + p.SetState(2539) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31608,7 +32998,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2505) + p.SetState(2538) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31620,7 +33010,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 31: p.EnterOuterAlt(localctx, 31) - p.SetState(2511) + p.SetState(2544) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31629,11 +33019,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2508) + p.SetState(2541) p.Annotation() } - p.SetState(2513) + p.SetState(2546) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31641,10 +33031,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2514) + p.SetState(2547) p.ValidationFeedbackStatement() } - p.SetState(2516) + p.SetState(2549) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31653,7 +33043,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2515) + p.SetState(2548) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31665,7 +33055,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 32: p.EnterOuterAlt(localctx, 32) - p.SetState(2521) + p.SetState(2554) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31674,11 +33064,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2518) + p.SetState(2551) p.Annotation() } - p.SetState(2523) + p.SetState(2556) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31686,10 +33076,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2524) + p.SetState(2557) p.RestCallStatement() } - p.SetState(2526) + p.SetState(2559) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31698,7 +33088,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2525) + p.SetState(2558) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31710,7 +33100,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { case 33: p.EnterOuterAlt(localctx, 33) - p.SetState(2531) + p.SetState(2564) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31719,11 +33109,11 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { for _la == MDLParserAT { { - p.SetState(2528) + p.SetState(2561) p.Annotation() } - p.SetState(2533) + p.SetState(2566) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31731,10 +33121,10 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2534) + p.SetState(2567) p.SendRestRequestStatement() } - p.SetState(2536) + p.SetState(2569) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31743,7 +33133,7 @@ func (p *MDLParser) MicroflowStatement() (localctx IMicroflowStatementContext) { if _la == MDLParserSEMICOLON { { - p.SetState(2535) + p.SetState(2568) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -31884,6 +33274,16 @@ func (s *DeclareStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DeclareStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDeclareStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DeclareStatement() (localctx IDeclareStatementContext) { localctx = NewDeclareStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 206, MDLParserRULE_declareStatement) @@ -31891,7 +33291,7 @@ func (p *MDLParser) DeclareStatement() (localctx IDeclareStatementContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2540) + p.SetState(2573) p.Match(MDLParserDECLARE) if p.HasError() { // Recognition error - abort rule @@ -31899,7 +33299,7 @@ func (p *MDLParser) DeclareStatement() (localctx IDeclareStatementContext) { } } { - p.SetState(2541) + p.SetState(2574) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -31907,10 +33307,10 @@ func (p *MDLParser) DeclareStatement() (localctx IDeclareStatementContext) { } } { - p.SetState(2542) + p.SetState(2575) p.DataType() } - p.SetState(2545) + p.SetState(2578) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -31919,7 +33319,7 @@ func (p *MDLParser) DeclareStatement() (localctx IDeclareStatementContext) { if _la == MDLParserEQUALS { { - p.SetState(2543) + p.SetState(2576) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -31927,7 +33327,7 @@ func (p *MDLParser) DeclareStatement() (localctx IDeclareStatementContext) { } } { - p.SetState(2544) + p.SetState(2577) p.Expression() } @@ -32060,28 +33460,38 @@ func (s *SetStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SetStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSetStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SetStatement() (localctx ISetStatementContext) { localctx = NewSetStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 208, MDLParserRULE_setStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(2547) + p.SetState(2580) p.Match(MDLParserSET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2550) + p.SetState(2583) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 233, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 238, p.GetParserRuleContext()) { case 1: { - p.SetState(2548) + p.SetState(2581) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -32091,7 +33501,7 @@ func (p *MDLParser) SetStatement() (localctx ISetStatementContext) { case 2: { - p.SetState(2549) + p.SetState(2582) p.AttributePath() } @@ -32099,7 +33509,7 @@ func (p *MDLParser) SetStatement() (localctx ISetStatementContext) { goto errorExit } { - p.SetState(2552) + p.SetState(2585) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -32107,7 +33517,7 @@ func (p *MDLParser) SetStatement() (localctx ISetStatementContext) { } } { - p.SetState(2553) + p.SetState(2586) p.Expression() } @@ -32265,13 +33675,23 @@ func (s *CreateObjectStatementContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *CreateObjectStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateObjectStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateObjectStatement() (localctx ICreateObjectStatementContext) { localctx = NewCreateObjectStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 210, MDLParserRULE_createObjectStatement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(2557) + p.SetState(2590) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -32280,7 +33700,7 @@ func (p *MDLParser) CreateObjectStatement() (localctx ICreateObjectStatementCont if _la == MDLParserVARIABLE { { - p.SetState(2555) + p.SetState(2588) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -32288,7 +33708,7 @@ func (p *MDLParser) CreateObjectStatement() (localctx ICreateObjectStatementCont } } { - p.SetState(2556) + p.SetState(2589) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -32298,7 +33718,7 @@ func (p *MDLParser) CreateObjectStatement() (localctx ICreateObjectStatementCont } { - p.SetState(2559) + p.SetState(2592) p.Match(MDLParserCREATE) if p.HasError() { // Recognition error - abort rule @@ -32306,10 +33726,10 @@ func (p *MDLParser) CreateObjectStatement() (localctx ICreateObjectStatementCont } } { - p.SetState(2560) + p.SetState(2593) p.NonListDataType() } - p.SetState(2566) + p.SetState(2599) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -32318,29 +33738,29 @@ func (p *MDLParser) CreateObjectStatement() (localctx ICreateObjectStatementCont if _la == MDLParserLPAREN { { - p.SetState(2561) + p.SetState(2594) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2563) + p.SetState(2596) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&629276753604317175) != 0) || ((int64((_la-132)) & ^0x3f) == 0 && ((int64(1)<<(_la-132))&-468218264967741735) != 0) || ((int64((_la-196)) & ^0x3f) == 0 && ((int64(1)<<(_la-196))&44473182800838145) != 0) || ((int64((_la-262)) & ^0x3f) == 0 && ((int64(1)<<(_la-262))&-494783461604865) != 0) || ((int64((_la-326)) & ^0x3f) == 0 && ((int64(1)<<(_la-326))&-576462951326682881) != 0) || ((int64((_la-390)) & ^0x3f) == 0 && ((int64(1)<<(_la-390))&-99506071046657) != 0) || ((int64((_la-454)) & ^0x3f) == 0 && ((int64(1)<<(_la-454))&-6917528202890936321) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&629276753604317175) != 0) || ((int64((_la-132)) & ^0x3f) == 0 && ((int64(1)<<(_la-132))&-936592626214273319) != 0) || ((int64((_la-196)) & ^0x3f) == 0 && ((int64(1)<<(_la-196))&355785468157099011) != 0) || ((int64((_la-265)) & ^0x3f) == 0 && ((int64(1)<<(_la-265))&-494783461604865) != 0) || ((int64((_la-329)) & ^0x3f) == 0 && ((int64(1)<<(_la-329))&-576462951326682881) != 0) || ((int64((_la-393)) & ^0x3f) == 0 && ((int64(1)<<(_la-393))&-99506071046657) != 0) || ((int64((_la-457)) & ^0x3f) == 0 && ((int64(1)<<(_la-457))&-6917528202890936321) != 0) { { - p.SetState(2562) + p.SetState(2595) p.MemberAssignmentList() } } { - p.SetState(2565) + p.SetState(2598) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -32349,7 +33769,7 @@ func (p *MDLParser) CreateObjectStatement() (localctx ICreateObjectStatementCont } } - p.SetState(2569) + p.SetState(2602) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -32358,7 +33778,7 @@ func (p *MDLParser) CreateObjectStatement() (localctx ICreateObjectStatementCont if _la == MDLParserON { { - p.SetState(2568) + p.SetState(2601) p.OnErrorClause() } @@ -32479,6 +33899,16 @@ func (s *ChangeObjectStatementContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *ChangeObjectStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitChangeObjectStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ChangeObjectStatement() (localctx IChangeObjectStatementContext) { localctx = NewChangeObjectStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 212, MDLParserRULE_changeObjectStatement) @@ -32486,7 +33916,7 @@ func (p *MDLParser) ChangeObjectStatement() (localctx IChangeObjectStatementCont p.EnterOuterAlt(localctx, 1) { - p.SetState(2571) + p.SetState(2604) p.Match(MDLParserCHANGE) if p.HasError() { // Recognition error - abort rule @@ -32494,14 +33924,14 @@ func (p *MDLParser) ChangeObjectStatement() (localctx IChangeObjectStatementCont } } { - p.SetState(2572) + p.SetState(2605) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2578) + p.SetState(2611) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -32510,29 +33940,29 @@ func (p *MDLParser) ChangeObjectStatement() (localctx IChangeObjectStatementCont if _la == MDLParserLPAREN { { - p.SetState(2573) + p.SetState(2606) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2575) + p.SetState(2608) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&629276753604317175) != 0) || ((int64((_la-132)) & ^0x3f) == 0 && ((int64(1)<<(_la-132))&-468218264967741735) != 0) || ((int64((_la-196)) & ^0x3f) == 0 && ((int64(1)<<(_la-196))&44473182800838145) != 0) || ((int64((_la-262)) & ^0x3f) == 0 && ((int64(1)<<(_la-262))&-494783461604865) != 0) || ((int64((_la-326)) & ^0x3f) == 0 && ((int64(1)<<(_la-326))&-576462951326682881) != 0) || ((int64((_la-390)) & ^0x3f) == 0 && ((int64(1)<<(_la-390))&-99506071046657) != 0) || ((int64((_la-454)) & ^0x3f) == 0 && ((int64(1)<<(_la-454))&-6917528202890936321) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&629276753604317175) != 0) || ((int64((_la-132)) & ^0x3f) == 0 && ((int64(1)<<(_la-132))&-936592626214273319) != 0) || ((int64((_la-196)) & ^0x3f) == 0 && ((int64(1)<<(_la-196))&355785468157099011) != 0) || ((int64((_la-265)) & ^0x3f) == 0 && ((int64(1)<<(_la-265))&-494783461604865) != 0) || ((int64((_la-329)) & ^0x3f) == 0 && ((int64(1)<<(_la-329))&-576462951326682881) != 0) || ((int64((_la-393)) & ^0x3f) == 0 && ((int64(1)<<(_la-393))&-99506071046657) != 0) || ((int64((_la-457)) & ^0x3f) == 0 && ((int64(1)<<(_la-457))&-6917528202890936321) != 0) { { - p.SetState(2574) + p.SetState(2607) p.MemberAssignmentList() } } { - p.SetState(2577) + p.SetState(2610) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -32698,6 +34128,16 @@ func (s *AttributePathContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AttributePathContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAttributePath(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AttributePath() (localctx IAttributePathContext) { localctx = NewAttributePathContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 214, MDLParserRULE_attributePath) @@ -32705,14 +34145,14 @@ func (p *MDLParser) AttributePath() (localctx IAttributePathContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2580) + p.SetState(2613) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2586) + p.SetState(2619) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -32721,7 +34161,7 @@ func (p *MDLParser) AttributePath() (localctx IAttributePathContext) { for ok := true; ok; ok = _la == MDLParserSLASH || _la == MDLParserDOT { { - p.SetState(2581) + p.SetState(2614) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserSLASH || _la == MDLParserDOT) { @@ -32731,16 +34171,16 @@ func (p *MDLParser) AttributePath() (localctx IAttributePathContext) { p.Consume() } } - p.SetState(2584) + p.SetState(2617) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 240, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 245, p.GetParserRuleContext()) { case 1: { - p.SetState(2582) + p.SetState(2615) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -32750,7 +34190,7 @@ func (p *MDLParser) AttributePath() (localctx IAttributePathContext) { case 2: { - p.SetState(2583) + p.SetState(2616) p.QualifiedName() } @@ -32758,7 +34198,7 @@ func (p *MDLParser) AttributePath() (localctx IAttributePathContext) { goto errorExit } - p.SetState(2588) + p.SetState(2621) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -32886,6 +34326,16 @@ func (s *CommitStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CommitStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCommitStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CommitStatement() (localctx ICommitStatementContext) { localctx = NewCommitStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 216, MDLParserRULE_commitStatement) @@ -32893,7 +34343,7 @@ func (p *MDLParser) CommitStatement() (localctx ICommitStatementContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2590) + p.SetState(2623) p.Match(MDLParserCOMMIT) if p.HasError() { // Recognition error - abort rule @@ -32901,14 +34351,14 @@ func (p *MDLParser) CommitStatement() (localctx ICommitStatementContext) { } } { - p.SetState(2591) + p.SetState(2624) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2594) + p.SetState(2627) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -32917,7 +34367,7 @@ func (p *MDLParser) CommitStatement() (localctx ICommitStatementContext) { if _la == MDLParserWITH { { - p.SetState(2592) + p.SetState(2625) p.Match(MDLParserWITH) if p.HasError() { // Recognition error - abort rule @@ -32925,7 +34375,7 @@ func (p *MDLParser) CommitStatement() (localctx ICommitStatementContext) { } } { - p.SetState(2593) + p.SetState(2626) p.Match(MDLParserEVENTS) if p.HasError() { // Recognition error - abort rule @@ -32934,7 +34384,7 @@ func (p *MDLParser) CommitStatement() (localctx ICommitStatementContext) { } } - p.SetState(2597) + p.SetState(2630) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -32943,7 +34393,7 @@ func (p *MDLParser) CommitStatement() (localctx ICommitStatementContext) { if _la == MDLParserREFRESH { { - p.SetState(2596) + p.SetState(2629) p.Match(MDLParserREFRESH) if p.HasError() { // Recognition error - abort rule @@ -32952,7 +34402,7 @@ func (p *MDLParser) CommitStatement() (localctx ICommitStatementContext) { } } - p.SetState(2600) + p.SetState(2633) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -32961,7 +34411,7 @@ func (p *MDLParser) CommitStatement() (localctx ICommitStatementContext) { if _la == MDLParserON { { - p.SetState(2599) + p.SetState(2632) p.OnErrorClause() } @@ -33072,6 +34522,16 @@ func (s *DeleteObjectStatementContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *DeleteObjectStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDeleteObjectStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DeleteObjectStatement() (localctx IDeleteObjectStatementContext) { localctx = NewDeleteObjectStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 218, MDLParserRULE_deleteObjectStatement) @@ -33079,7 +34539,7 @@ func (p *MDLParser) DeleteObjectStatement() (localctx IDeleteObjectStatementCont p.EnterOuterAlt(localctx, 1) { - p.SetState(2602) + p.SetState(2635) p.Match(MDLParserDELETE) if p.HasError() { // Recognition error - abort rule @@ -33087,14 +34547,14 @@ func (p *MDLParser) DeleteObjectStatement() (localctx IDeleteObjectStatementCont } } { - p.SetState(2603) + p.SetState(2636) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2605) + p.SetState(2638) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -33103,7 +34563,7 @@ func (p *MDLParser) DeleteObjectStatement() (localctx IDeleteObjectStatementCont if _la == MDLParserON { { - p.SetState(2604) + p.SetState(2637) p.OnErrorClause() } @@ -33202,6 +34662,16 @@ func (s *RollbackStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RollbackStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRollbackStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RollbackStatement() (localctx IRollbackStatementContext) { localctx = NewRollbackStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 220, MDLParserRULE_rollbackStatement) @@ -33209,7 +34679,7 @@ func (p *MDLParser) RollbackStatement() (localctx IRollbackStatementContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2607) + p.SetState(2640) p.Match(MDLParserROLLBACK) if p.HasError() { // Recognition error - abort rule @@ -33217,14 +34687,14 @@ func (p *MDLParser) RollbackStatement() (localctx IRollbackStatementContext) { } } { - p.SetState(2608) + p.SetState(2641) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2610) + p.SetState(2643) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -33233,7 +34703,7 @@ func (p *MDLParser) RollbackStatement() (localctx IRollbackStatementContext) { if _la == MDLParserREFRESH { { - p.SetState(2609) + p.SetState(2642) p.Match(MDLParserREFRESH) if p.HasError() { // Recognition error - abort rule @@ -33525,6 +34995,16 @@ func (s *RetrieveStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RetrieveStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRetrieveStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { localctx = NewRetrieveStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 222, MDLParserRULE_retrieveStatement) @@ -33532,7 +35012,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2612) + p.SetState(2645) p.Match(MDLParserRETRIEVE) if p.HasError() { // Recognition error - abort rule @@ -33540,7 +35020,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } { - p.SetState(2613) + p.SetState(2646) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -33548,7 +35028,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } { - p.SetState(2614) + p.SetState(2647) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -33556,10 +35036,10 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } { - p.SetState(2615) + p.SetState(2648) p.RetrieveSource() } - p.SetState(2621) + p.SetState(2654) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -33568,14 +35048,14 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { if _la == MDLParserWHERE { { - p.SetState(2616) + p.SetState(2649) p.Match(MDLParserWHERE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2619) + p.SetState(2652) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -33584,13 +35064,13 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { switch p.GetTokenStream().LA(1) { case MDLParserLBRACKET: { - p.SetState(2617) + p.SetState(2650) p.XpathConstraint() } - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserCASE, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserHEAD, MDLParserTAIL, MDLParserFIND, MDLParserSORT, MDLParserUNION, MDLParserINTERSECT, MDLParserSUBTRACT, MDLParserCONTAINS, MDLParserAVERAGE, MDLParserMINIMUM, MDLParserMAXIMUM, MDLParserLIST, MDLParserEQUALS_OP, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserEMPTY, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserFILTER, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserLENGTH, MDLParserTRIM, MDLParserCAST, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserEXISTS, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserPLUS, MDLParserMINUS, MDLParserMOD, MDLParserDIV, MDLParserLPAREN, MDLParserMENDIX_TOKEN, MDLParserSTRING_LITERAL, MDLParserNUMBER_LITERAL, MDLParserVARIABLE, MDLParserIDENTIFIER, MDLParserHYPHENATED_ID, MDLParserQUOTED_IDENTIFIER: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserCASE, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserHEAD, MDLParserTAIL, MDLParserFIND, MDLParserSORT, MDLParserUNION, MDLParserINTERSECT, MDLParserSUBTRACT, MDLParserCONTAINS, MDLParserAVERAGE, MDLParserMINIMUM, MDLParserMAXIMUM, MDLParserLIST, MDLParserEQUALS_OP, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserEMPTY, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserFILTER, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserLENGTH, MDLParserTRIM, MDLParserCAST, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserEXISTS, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserPLUS, MDLParserMINUS, MDLParserMOD, MDLParserDIV, MDLParserLPAREN, MDLParserMENDIX_TOKEN, MDLParserSTRING_LITERAL, MDLParserNUMBER_LITERAL, MDLParserVARIABLE, MDLParserIDENTIFIER, MDLParserHYPHENATED_ID, MDLParserQUOTED_IDENTIFIER: { - p.SetState(2618) + p.SetState(2651) p.Expression() } @@ -33600,7 +35080,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } - p.SetState(2632) + p.SetState(2665) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -33609,7 +35089,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { if _la == MDLParserSORT_BY { { - p.SetState(2623) + p.SetState(2656) p.Match(MDLParserSORT_BY) if p.HasError() { // Recognition error - abort rule @@ -33617,10 +35097,10 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } { - p.SetState(2624) + p.SetState(2657) p.SortColumn() } - p.SetState(2629) + p.SetState(2662) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -33629,7 +35109,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { for _la == MDLParserCOMMA { { - p.SetState(2625) + p.SetState(2658) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -33637,11 +35117,11 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } { - p.SetState(2626) + p.SetState(2659) p.SortColumn() } - p.SetState(2631) + p.SetState(2664) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -33650,7 +35130,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } - p.SetState(2636) + p.SetState(2669) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -33659,7 +35139,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { if _la == MDLParserLIMIT { { - p.SetState(2634) + p.SetState(2667) p.Match(MDLParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -33667,7 +35147,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } { - p.SetState(2635) + p.SetState(2668) var _x = p.Expression() @@ -33675,7 +35155,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } - p.SetState(2640) + p.SetState(2673) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -33684,7 +35164,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { if _la == MDLParserOFFSET { { - p.SetState(2638) + p.SetState(2671) p.Match(MDLParserOFFSET) if p.HasError() { // Recognition error - abort rule @@ -33692,7 +35172,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } { - p.SetState(2639) + p.SetState(2672) var _x = p.Expression() @@ -33700,7 +35180,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { } } - p.SetState(2643) + p.SetState(2676) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -33709,7 +35189,7 @@ func (p *MDLParser) RetrieveStatement() (localctx IRetrieveStatementContext) { if _la == MDLParserON { { - p.SetState(2642) + p.SetState(2675) p.OnErrorClause() } @@ -33857,27 +35337,37 @@ func (s *RetrieveSourceContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RetrieveSourceContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRetrieveSource(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RetrieveSource() (localctx IRetrieveSourceContext) { localctx = NewRetrieveSourceContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 224, MDLParserRULE_retrieveSource) - p.SetState(2655) + p.SetState(2688) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 254, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 259, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(2645) + p.SetState(2678) p.QualifiedName() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(2646) + p.SetState(2679) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -33885,7 +35375,7 @@ func (p *MDLParser) RetrieveSource() (localctx IRetrieveSourceContext) { } } { - p.SetState(2647) + p.SetState(2680) p.Match(MDLParserSLASH) if p.HasError() { // Recognition error - abort rule @@ -33893,14 +35383,14 @@ func (p *MDLParser) RetrieveSource() (localctx IRetrieveSourceContext) { } } { - p.SetState(2648) + p.SetState(2681) p.QualifiedName() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(2649) + p.SetState(2682) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -33908,11 +35398,11 @@ func (p *MDLParser) RetrieveSource() (localctx IRetrieveSourceContext) { } } { - p.SetState(2650) + p.SetState(2683) p.OqlQuery() } { - p.SetState(2651) + p.SetState(2684) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -33923,7 +35413,7 @@ func (p *MDLParser) RetrieveSource() (localctx IRetrieveSourceContext) { case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(2653) + p.SetState(2686) p.Match(MDLParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -33931,7 +35421,7 @@ func (p *MDLParser) RetrieveSource() (localctx IRetrieveSourceContext) { } } { - p.SetState(2654) + p.SetState(2687) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -34073,20 +35563,30 @@ func (s *OnErrorClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OnErrorClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOnErrorClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { localctx = NewOnErrorClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 226, MDLParserRULE_onErrorClause) - p.SetState(2677) + p.SetState(2710) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 255, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 260, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(2657) + p.SetState(2690) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -34094,7 +35594,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2658) + p.SetState(2691) p.Match(MDLParserERROR) if p.HasError() { // Recognition error - abort rule @@ -34102,7 +35602,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2659) + p.SetState(2692) p.Match(MDLParserCONTINUE) if p.HasError() { // Recognition error - abort rule @@ -34113,7 +35613,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(2660) + p.SetState(2693) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -34121,7 +35621,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2661) + p.SetState(2694) p.Match(MDLParserERROR) if p.HasError() { // Recognition error - abort rule @@ -34129,7 +35629,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2662) + p.SetState(2695) p.Match(MDLParserROLLBACK) if p.HasError() { // Recognition error - abort rule @@ -34140,7 +35640,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(2663) + p.SetState(2696) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -34148,7 +35648,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2664) + p.SetState(2697) p.Match(MDLParserERROR) if p.HasError() { // Recognition error - abort rule @@ -34156,7 +35656,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2665) + p.SetState(2698) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -34164,11 +35664,11 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2666) + p.SetState(2699) p.MicroflowBody() } { - p.SetState(2667) + p.SetState(2700) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -34179,7 +35679,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(2669) + p.SetState(2702) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -34187,7 +35687,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2670) + p.SetState(2703) p.Match(MDLParserERROR) if p.HasError() { // Recognition error - abort rule @@ -34195,7 +35695,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2671) + p.SetState(2704) p.Match(MDLParserWITHOUT) if p.HasError() { // Recognition error - abort rule @@ -34203,7 +35703,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2672) + p.SetState(2705) p.Match(MDLParserROLLBACK) if p.HasError() { // Recognition error - abort rule @@ -34211,7 +35711,7 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2673) + p.SetState(2706) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -34219,11 +35719,11 @@ func (p *MDLParser) OnErrorClause() (localctx IOnErrorClauseContext) { } } { - p.SetState(2674) + p.SetState(2707) p.MicroflowBody() } { - p.SetState(2675) + p.SetState(2708) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -34439,6 +35939,16 @@ func (s *IfStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *IfStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitIfStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) IfStatement() (localctx IIfStatementContext) { localctx = NewIfStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 228, MDLParserRULE_ifStatement) @@ -34446,7 +35956,7 @@ func (p *MDLParser) IfStatement() (localctx IIfStatementContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2679) + p.SetState(2712) p.Match(MDLParserIF) if p.HasError() { // Recognition error - abort rule @@ -34454,11 +35964,11 @@ func (p *MDLParser) IfStatement() (localctx IIfStatementContext) { } } { - p.SetState(2680) + p.SetState(2713) p.Expression() } { - p.SetState(2681) + p.SetState(2714) p.Match(MDLParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -34466,10 +35976,10 @@ func (p *MDLParser) IfStatement() (localctx IIfStatementContext) { } } { - p.SetState(2682) + p.SetState(2715) p.MicroflowBody() } - p.SetState(2690) + p.SetState(2723) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -34478,7 +35988,7 @@ func (p *MDLParser) IfStatement() (localctx IIfStatementContext) { for _la == MDLParserELSIF { { - p.SetState(2683) + p.SetState(2716) p.Match(MDLParserELSIF) if p.HasError() { // Recognition error - abort rule @@ -34486,11 +35996,11 @@ func (p *MDLParser) IfStatement() (localctx IIfStatementContext) { } } { - p.SetState(2684) + p.SetState(2717) p.Expression() } { - p.SetState(2685) + p.SetState(2718) p.Match(MDLParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -34498,18 +36008,18 @@ func (p *MDLParser) IfStatement() (localctx IIfStatementContext) { } } { - p.SetState(2686) + p.SetState(2719) p.MicroflowBody() } - p.SetState(2692) + p.SetState(2725) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(2695) + p.SetState(2728) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -34518,7 +36028,7 @@ func (p *MDLParser) IfStatement() (localctx IIfStatementContext) { if _la == MDLParserELSE { { - p.SetState(2693) + p.SetState(2726) p.Match(MDLParserELSE) if p.HasError() { // Recognition error - abort rule @@ -34526,13 +36036,13 @@ func (p *MDLParser) IfStatement() (localctx IIfStatementContext) { } } { - p.SetState(2694) + p.SetState(2727) p.MicroflowBody() } } { - p.SetState(2697) + p.SetState(2730) p.Match(MDLParserEND) if p.HasError() { // Recognition error - abort rule @@ -34540,7 +36050,7 @@ func (p *MDLParser) IfStatement() (localctx IIfStatementContext) { } } { - p.SetState(2698) + p.SetState(2731) p.Match(MDLParserIF) if p.HasError() { // Recognition error - abort rule @@ -34695,12 +36205,22 @@ func (s *LoopStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LoopStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLoopStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) LoopStatement() (localctx ILoopStatementContext) { localctx = NewLoopStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 230, MDLParserRULE_loopStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(2700) + p.SetState(2733) p.Match(MDLParserLOOP) if p.HasError() { // Recognition error - abort rule @@ -34708,7 +36228,7 @@ func (p *MDLParser) LoopStatement() (localctx ILoopStatementContext) { } } { - p.SetState(2701) + p.SetState(2734) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -34716,23 +36236,23 @@ func (p *MDLParser) LoopStatement() (localctx ILoopStatementContext) { } } { - p.SetState(2702) + p.SetState(2735) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2705) + p.SetState(2738) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 258, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 263, p.GetParserRuleContext()) { case 1: { - p.SetState(2703) + p.SetState(2736) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -34742,7 +36262,7 @@ func (p *MDLParser) LoopStatement() (localctx ILoopStatementContext) { case 2: { - p.SetState(2704) + p.SetState(2737) p.AttributePath() } @@ -34750,7 +36270,7 @@ func (p *MDLParser) LoopStatement() (localctx ILoopStatementContext) { goto errorExit } { - p.SetState(2707) + p.SetState(2740) p.Match(MDLParserBEGIN) if p.HasError() { // Recognition error - abort rule @@ -34758,11 +36278,11 @@ func (p *MDLParser) LoopStatement() (localctx ILoopStatementContext) { } } { - p.SetState(2708) + p.SetState(2741) p.MicroflowBody() } { - p.SetState(2709) + p.SetState(2742) p.Match(MDLParserEND) if p.HasError() { // Recognition error - abort rule @@ -34770,7 +36290,7 @@ func (p *MDLParser) LoopStatement() (localctx ILoopStatementContext) { } } { - p.SetState(2710) + p.SetState(2743) p.Match(MDLParserLOOP) if p.HasError() { // Recognition error - abort rule @@ -34910,6 +36430,16 @@ func (s *WhileStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WhileStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWhileStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WhileStatement() (localctx IWhileStatementContext) { localctx = NewWhileStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 232, MDLParserRULE_whileStatement) @@ -34917,7 +36447,7 @@ func (p *MDLParser) WhileStatement() (localctx IWhileStatementContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2712) + p.SetState(2745) p.Match(MDLParserWHILE) if p.HasError() { // Recognition error - abort rule @@ -34925,10 +36455,10 @@ func (p *MDLParser) WhileStatement() (localctx IWhileStatementContext) { } } { - p.SetState(2713) + p.SetState(2746) p.Expression() } - p.SetState(2715) + p.SetState(2748) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -34937,7 +36467,7 @@ func (p *MDLParser) WhileStatement() (localctx IWhileStatementContext) { if _la == MDLParserBEGIN { { - p.SetState(2714) + p.SetState(2747) p.Match(MDLParserBEGIN) if p.HasError() { // Recognition error - abort rule @@ -34947,23 +36477,23 @@ func (p *MDLParser) WhileStatement() (localctx IWhileStatementContext) { } { - p.SetState(2717) + p.SetState(2750) p.MicroflowBody() } { - p.SetState(2718) + p.SetState(2751) p.Match(MDLParserEND) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2720) + p.SetState(2753) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 260, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 265, p.GetParserRuleContext()) == 1 { { - p.SetState(2719) + p.SetState(2752) p.Match(MDLParserWHILE) if p.HasError() { // Recognition error - abort rule @@ -35058,12 +36588,22 @@ func (s *ContinueStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ContinueStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitContinueStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ContinueStatement() (localctx IContinueStatementContext) { localctx = NewContinueStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 234, MDLParserRULE_continueStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(2722) + p.SetState(2755) p.Match(MDLParserCONTINUE) if p.HasError() { // Recognition error - abort rule @@ -35154,12 +36694,22 @@ func (s *BreakStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *BreakStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitBreakStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) BreakStatement() (localctx IBreakStatementContext) { localctx = NewBreakStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 236, MDLParserRULE_breakStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(2724) + p.SetState(2757) p.Match(MDLParserBREAK) if p.HasError() { // Recognition error - abort rule @@ -35267,24 +36817,34 @@ func (s *ReturnStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ReturnStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitReturnStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ReturnStatement() (localctx IReturnStatementContext) { localctx = NewReturnStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 238, MDLParserRULE_returnStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(2726) + p.SetState(2759) p.Match(MDLParserRETURN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2728) + p.SetState(2761) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 261, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 266, p.GetParserRuleContext()) == 1 { { - p.SetState(2727) + p.SetState(2760) p.Expression() } @@ -35380,12 +36940,22 @@ func (s *RaiseErrorStatementContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *RaiseErrorStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRaiseErrorStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RaiseErrorStatement() (localctx IRaiseErrorStatementContext) { localctx = NewRaiseErrorStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 240, MDLParserRULE_raiseErrorStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(2730) + p.SetState(2763) p.Match(MDLParserRAISE) if p.HasError() { // Recognition error - abort rule @@ -35393,7 +36963,7 @@ func (p *MDLParser) RaiseErrorStatement() (localctx IRaiseErrorStatementContext) } } { - p.SetState(2731) + p.SetState(2764) p.Match(MDLParserERROR) if p.HasError() { // Recognition error - abort rule @@ -35545,6 +37115,16 @@ func (s *LogStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LogStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLogStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) LogStatement() (localctx ILogStatementContext) { localctx = NewLogStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 242, MDLParserRULE_logStatement) @@ -35552,26 +37132,26 @@ func (p *MDLParser) LogStatement() (localctx ILogStatementContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2733) + p.SetState(2766) p.Match(MDLParserLOG) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2735) + p.SetState(2768) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 262, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 267, p.GetParserRuleContext()) == 1 { { - p.SetState(2734) + p.SetState(2767) p.LogLevel() } } else if p.HasError() { // JIM goto errorExit } - p.SetState(2739) + p.SetState(2772) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -35580,7 +37160,7 @@ func (p *MDLParser) LogStatement() (localctx ILogStatementContext) { if _la == MDLParserNODE { { - p.SetState(2737) + p.SetState(2770) p.Match(MDLParserNODE) if p.HasError() { // Recognition error - abort rule @@ -35588,7 +37168,7 @@ func (p *MDLParser) LogStatement() (localctx ILogStatementContext) { } } { - p.SetState(2738) + p.SetState(2771) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -35598,10 +37178,10 @@ func (p *MDLParser) LogStatement() (localctx ILogStatementContext) { } { - p.SetState(2741) + p.SetState(2774) p.Expression() } - p.SetState(2743) + p.SetState(2776) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -35610,7 +37190,7 @@ func (p *MDLParser) LogStatement() (localctx ILogStatementContext) { if _la == MDLParserWITH || _la == MDLParserPARAMETERS { { - p.SetState(2742) + p.SetState(2775) p.LogTemplateParams() } @@ -35724,6 +37304,16 @@ func (s *LogLevelContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LogLevelContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLogLevel(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) LogLevel() (localctx ILogLevelContext) { localctx = NewLogLevelContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 244, MDLParserRULE_logLevel) @@ -35731,7 +37321,7 @@ func (p *MDLParser) LogLevel() (localctx ILogLevelContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2745) + p.SetState(2778) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserDEBUG || ((int64((_la-135)) & ^0x3f) == 0 && ((int64(1)<<(_la-135))&15) != 0) || _la == MDLParserERROR) { @@ -35910,12 +37500,22 @@ func (s *TemplateParamsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *TemplateParamsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitTemplateParams(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) TemplateParams() (localctx ITemplateParamsContext) { localctx = NewTemplateParamsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 246, MDLParserRULE_templateParams) var _la int - p.SetState(2761) + p.SetState(2794) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -35925,7 +37525,7 @@ func (p *MDLParser) TemplateParams() (localctx ITemplateParamsContext) { case MDLParserWITH: p.EnterOuterAlt(localctx, 1) { - p.SetState(2747) + p.SetState(2780) p.Match(MDLParserWITH) if p.HasError() { // Recognition error - abort rule @@ -35933,7 +37533,7 @@ func (p *MDLParser) TemplateParams() (localctx ITemplateParamsContext) { } } { - p.SetState(2748) + p.SetState(2781) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -35941,10 +37541,10 @@ func (p *MDLParser) TemplateParams() (localctx ITemplateParamsContext) { } } { - p.SetState(2749) + p.SetState(2782) p.TemplateParam() } - p.SetState(2754) + p.SetState(2787) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -35953,7 +37553,7 @@ func (p *MDLParser) TemplateParams() (localctx ITemplateParamsContext) { for _la == MDLParserCOMMA { { - p.SetState(2750) + p.SetState(2783) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -35961,11 +37561,11 @@ func (p *MDLParser) TemplateParams() (localctx ITemplateParamsContext) { } } { - p.SetState(2751) + p.SetState(2784) p.TemplateParam() } - p.SetState(2756) + p.SetState(2789) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -35973,7 +37573,7 @@ func (p *MDLParser) TemplateParams() (localctx ITemplateParamsContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(2757) + p.SetState(2790) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -35984,7 +37584,7 @@ func (p *MDLParser) TemplateParams() (localctx ITemplateParamsContext) { case MDLParserPARAMETERS: p.EnterOuterAlt(localctx, 2) { - p.SetState(2759) + p.SetState(2792) p.Match(MDLParserPARAMETERS) if p.HasError() { // Recognition error - abort rule @@ -35992,7 +37592,7 @@ func (p *MDLParser) TemplateParams() (localctx ITemplateParamsContext) { } } { - p.SetState(2760) + p.SetState(2793) p.ArrayLiteral() } @@ -36116,12 +37716,22 @@ func (s *TemplateParamContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *TemplateParamContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitTemplateParam(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) TemplateParam() (localctx ITemplateParamContext) { localctx = NewTemplateParamContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 248, MDLParserRULE_templateParam) p.EnterOuterAlt(localctx, 1) { - p.SetState(2763) + p.SetState(2796) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -36129,7 +37739,7 @@ func (p *MDLParser) TemplateParam() (localctx ITemplateParamContext) { } } { - p.SetState(2764) + p.SetState(2797) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -36137,7 +37747,7 @@ func (p *MDLParser) TemplateParam() (localctx ITemplateParamContext) { } } { - p.SetState(2765) + p.SetState(2798) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -36145,7 +37755,7 @@ func (p *MDLParser) TemplateParam() (localctx ITemplateParamContext) { } } { - p.SetState(2766) + p.SetState(2799) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -36153,7 +37763,7 @@ func (p *MDLParser) TemplateParam() (localctx ITemplateParamContext) { } } { - p.SetState(2767) + p.SetState(2800) p.Expression() } @@ -36252,12 +37862,22 @@ func (s *LogTemplateParamsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LogTemplateParamsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLogTemplateParams(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) LogTemplateParams() (localctx ILogTemplateParamsContext) { localctx = NewLogTemplateParamsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 250, MDLParserRULE_logTemplateParams) p.EnterOuterAlt(localctx, 1) { - p.SetState(2769) + p.SetState(2802) p.TemplateParams() } @@ -36356,12 +37976,22 @@ func (s *LogTemplateParamContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LogTemplateParamContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLogTemplateParam(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) LogTemplateParam() (localctx ILogTemplateParamContext) { localctx = NewLogTemplateParamContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 252, MDLParserRULE_logTemplateParam) p.EnterOuterAlt(localctx, 1) { - p.SetState(2771) + p.SetState(2804) p.TemplateParam() } @@ -36524,13 +38154,23 @@ func (s *CallMicroflowStatementContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *CallMicroflowStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCallMicroflowStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CallMicroflowStatement() (localctx ICallMicroflowStatementContext) { localctx = NewCallMicroflowStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 254, MDLParserRULE_callMicroflowStatement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(2775) + p.SetState(2808) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -36539,7 +38179,7 @@ func (p *MDLParser) CallMicroflowStatement() (localctx ICallMicroflowStatementCo if _la == MDLParserVARIABLE { { - p.SetState(2773) + p.SetState(2806) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -36547,7 +38187,7 @@ func (p *MDLParser) CallMicroflowStatement() (localctx ICallMicroflowStatementCo } } { - p.SetState(2774) + p.SetState(2807) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -36557,7 +38197,7 @@ func (p *MDLParser) CallMicroflowStatement() (localctx ICallMicroflowStatementCo } { - p.SetState(2777) + p.SetState(2810) p.Match(MDLParserCALL) if p.HasError() { // Recognition error - abort rule @@ -36565,7 +38205,7 @@ func (p *MDLParser) CallMicroflowStatement() (localctx ICallMicroflowStatementCo } } { - p.SetState(2778) + p.SetState(2811) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -36573,40 +38213,40 @@ func (p *MDLParser) CallMicroflowStatement() (localctx ICallMicroflowStatementCo } } { - p.SetState(2779) + p.SetState(2812) p.QualifiedName() } { - p.SetState(2780) + p.SetState(2813) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2782) + p.SetState(2815) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-188)) & ^0x3f) == 0 && ((int64(1)<<(_la-188))&576478365295182137) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&180143985430364191) != 0) || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&5647091739131907) != 0) || ((int64((_la-416)) & ^0x3f) == 0 && ((int64(1)<<(_la-416))&-6917528058991722373) != 0) || ((int64((_la-514)) & ^0x3f) == 0 && ((int64(1)<<(_la-514))&11) != 0) { + if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-189)) & ^0x3f) == 0 && ((int64(1)<<(_la-189))&2305913398763585849) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&180143985430364191) != 0) || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&5647091739131907) != 0) || ((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&-6917528058991722373) != 0) || ((int64((_la-517)) & ^0x3f) == 0 && ((int64(1)<<(_la-517))&11) != 0) { { - p.SetState(2781) + p.SetState(2814) p.CallArgumentList() } } { - p.SetState(2784) + p.SetState(2817) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2786) + p.SetState(2819) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -36615,7 +38255,7 @@ func (p *MDLParser) CallMicroflowStatement() (localctx ICallMicroflowStatementCo if _la == MDLParserON { { - p.SetState(2785) + p.SetState(2818) p.OnErrorClause() } @@ -36785,13 +38425,23 @@ func (s *CallJavaActionStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *CallJavaActionStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCallJavaActionStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CallJavaActionStatement() (localctx ICallJavaActionStatementContext) { localctx = NewCallJavaActionStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 256, MDLParserRULE_callJavaActionStatement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(2790) + p.SetState(2823) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -36800,7 +38450,7 @@ func (p *MDLParser) CallJavaActionStatement() (localctx ICallJavaActionStatement if _la == MDLParserVARIABLE { { - p.SetState(2788) + p.SetState(2821) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -36808,7 +38458,7 @@ func (p *MDLParser) CallJavaActionStatement() (localctx ICallJavaActionStatement } } { - p.SetState(2789) + p.SetState(2822) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -36818,7 +38468,7 @@ func (p *MDLParser) CallJavaActionStatement() (localctx ICallJavaActionStatement } { - p.SetState(2792) + p.SetState(2825) p.Match(MDLParserCALL) if p.HasError() { // Recognition error - abort rule @@ -36826,7 +38476,7 @@ func (p *MDLParser) CallJavaActionStatement() (localctx ICallJavaActionStatement } } { - p.SetState(2793) + p.SetState(2826) p.Match(MDLParserJAVA) if p.HasError() { // Recognition error - abort rule @@ -36834,7 +38484,7 @@ func (p *MDLParser) CallJavaActionStatement() (localctx ICallJavaActionStatement } } { - p.SetState(2794) + p.SetState(2827) p.Match(MDLParserACTION) if p.HasError() { // Recognition error - abort rule @@ -36842,40 +38492,40 @@ func (p *MDLParser) CallJavaActionStatement() (localctx ICallJavaActionStatement } } { - p.SetState(2795) + p.SetState(2828) p.QualifiedName() } { - p.SetState(2796) + p.SetState(2829) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2798) + p.SetState(2831) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-188)) & ^0x3f) == 0 && ((int64(1)<<(_la-188))&576478365295182137) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&180143985430364191) != 0) || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&5647091739131907) != 0) || ((int64((_la-416)) & ^0x3f) == 0 && ((int64(1)<<(_la-416))&-6917528058991722373) != 0) || ((int64((_la-514)) & ^0x3f) == 0 && ((int64(1)<<(_la-514))&11) != 0) { + if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-189)) & ^0x3f) == 0 && ((int64(1)<<(_la-189))&2305913398763585849) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&180143985430364191) != 0) || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&5647091739131907) != 0) || ((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&-6917528058991722373) != 0) || ((int64((_la-517)) & ^0x3f) == 0 && ((int64(1)<<(_la-517))&11) != 0) { { - p.SetState(2797) + p.SetState(2830) p.CallArgumentList() } } { - p.SetState(2800) + p.SetState(2833) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2802) + p.SetState(2835) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -36884,7 +38534,7 @@ func (p *MDLParser) CallJavaActionStatement() (localctx ICallJavaActionStatement if _la == MDLParserON { { - p.SetState(2801) + p.SetState(2834) p.OnErrorClause() } @@ -37127,13 +38777,23 @@ func (s *ExecuteDatabaseQueryStatementContext) ExitRule(listener antlr.ParseTree } } +func (s *ExecuteDatabaseQueryStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitExecuteDatabaseQueryStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQueryStatementContext) { localctx = NewExecuteDatabaseQueryStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 258, MDLParserRULE_executeDatabaseQueryStatement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(2806) + p.SetState(2839) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -37142,7 +38802,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu if _la == MDLParserVARIABLE { { - p.SetState(2804) + p.SetState(2837) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -37150,7 +38810,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu } } { - p.SetState(2805) + p.SetState(2838) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -37160,7 +38820,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu } { - p.SetState(2808) + p.SetState(2841) p.Match(MDLParserEXECUTE) if p.HasError() { // Recognition error - abort rule @@ -37168,7 +38828,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu } } { - p.SetState(2809) + p.SetState(2842) p.Match(MDLParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -37176,7 +38836,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu } } { - p.SetState(2810) + p.SetState(2843) p.Match(MDLParserQUERY) if p.HasError() { // Recognition error - abort rule @@ -37184,10 +38844,10 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu } } { - p.SetState(2811) + p.SetState(2844) p.QualifiedName() } - p.SetState(2818) + p.SetState(2851) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -37196,23 +38856,23 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu if _la == MDLParserDYNAMIC { { - p.SetState(2812) + p.SetState(2845) p.Match(MDLParserDYNAMIC) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2816) + p.SetState(2849) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 274, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 279, p.GetParserRuleContext()) { case 1: { - p.SetState(2813) + p.SetState(2846) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -37222,7 +38882,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu case 2: { - p.SetState(2814) + p.SetState(2847) p.Match(MDLParserDOLLAR_STRING) if p.HasError() { // Recognition error - abort rule @@ -37232,7 +38892,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu case 3: { - p.SetState(2815) + p.SetState(2848) p.Expression() } @@ -37241,7 +38901,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu } } - p.SetState(2825) + p.SetState(2858) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -37250,29 +38910,29 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu if _la == MDLParserLPAREN { { - p.SetState(2820) + p.SetState(2853) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2822) + p.SetState(2855) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-188)) & ^0x3f) == 0 && ((int64(1)<<(_la-188))&576478365295182137) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&180143985430364191) != 0) || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&5647091739131907) != 0) || ((int64((_la-416)) & ^0x3f) == 0 && ((int64(1)<<(_la-416))&-6917528058991722373) != 0) || ((int64((_la-514)) & ^0x3f) == 0 && ((int64(1)<<(_la-514))&11) != 0) { + if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-189)) & ^0x3f) == 0 && ((int64(1)<<(_la-189))&2305913398763585849) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&180143985430364191) != 0) || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&5647091739131907) != 0) || ((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&-6917528058991722373) != 0) || ((int64((_la-517)) & ^0x3f) == 0 && ((int64(1)<<(_la-517))&11) != 0) { { - p.SetState(2821) + p.SetState(2854) p.CallArgumentList() } } { - p.SetState(2824) + p.SetState(2857) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -37281,7 +38941,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu } } - p.SetState(2833) + p.SetState(2866) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -37290,7 +38950,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu if _la == MDLParserCONNECTION { { - p.SetState(2827) + p.SetState(2860) p.Match(MDLParserCONNECTION) if p.HasError() { // Recognition error - abort rule @@ -37298,29 +38958,29 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu } } { - p.SetState(2828) + p.SetState(2861) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2830) + p.SetState(2863) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-188)) & ^0x3f) == 0 && ((int64(1)<<(_la-188))&576478365295182137) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&180143985430364191) != 0) || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&5647091739131907) != 0) || ((int64((_la-416)) & ^0x3f) == 0 && ((int64(1)<<(_la-416))&-6917528058991722373) != 0) || ((int64((_la-514)) & ^0x3f) == 0 && ((int64(1)<<(_la-514))&11) != 0) { + if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-189)) & ^0x3f) == 0 && ((int64(1)<<(_la-189))&2305913398763585849) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&180143985430364191) != 0) || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&5647091739131907) != 0) || ((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&-6917528058991722373) != 0) || ((int64((_la-517)) & ^0x3f) == 0 && ((int64(1)<<(_la-517))&11) != 0) { { - p.SetState(2829) + p.SetState(2862) p.CallArgumentList() } } { - p.SetState(2832) + p.SetState(2865) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -37329,7 +38989,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu } } - p.SetState(2836) + p.SetState(2869) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -37338,7 +38998,7 @@ func (p *MDLParser) ExecuteDatabaseQueryStatement() (localctx IExecuteDatabaseQu if _la == MDLParserON { { - p.SetState(2835) + p.SetState(2868) p.OnErrorClause() } @@ -37508,13 +39168,23 @@ func (s *CallExternalActionStatementContext) ExitRule(listener antlr.ParseTreeLi } } +func (s *CallExternalActionStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCallExternalActionStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CallExternalActionStatement() (localctx ICallExternalActionStatementContext) { localctx = NewCallExternalActionStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 260, MDLParserRULE_callExternalActionStatement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(2840) + p.SetState(2873) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -37523,7 +39193,7 @@ func (p *MDLParser) CallExternalActionStatement() (localctx ICallExternalActionS if _la == MDLParserVARIABLE { { - p.SetState(2838) + p.SetState(2871) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -37531,7 +39201,7 @@ func (p *MDLParser) CallExternalActionStatement() (localctx ICallExternalActionS } } { - p.SetState(2839) + p.SetState(2872) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -37541,7 +39211,7 @@ func (p *MDLParser) CallExternalActionStatement() (localctx ICallExternalActionS } { - p.SetState(2842) + p.SetState(2875) p.Match(MDLParserCALL) if p.HasError() { // Recognition error - abort rule @@ -37549,7 +39219,7 @@ func (p *MDLParser) CallExternalActionStatement() (localctx ICallExternalActionS } } { - p.SetState(2843) + p.SetState(2876) p.Match(MDLParserEXTERNAL) if p.HasError() { // Recognition error - abort rule @@ -37557,7 +39227,7 @@ func (p *MDLParser) CallExternalActionStatement() (localctx ICallExternalActionS } } { - p.SetState(2844) + p.SetState(2877) p.Match(MDLParserACTION) if p.HasError() { // Recognition error - abort rule @@ -37565,40 +39235,40 @@ func (p *MDLParser) CallExternalActionStatement() (localctx ICallExternalActionS } } { - p.SetState(2845) + p.SetState(2878) p.QualifiedName() } { - p.SetState(2846) + p.SetState(2879) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2848) + p.SetState(2881) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-188)) & ^0x3f) == 0 && ((int64(1)<<(_la-188))&576478365295182137) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&180143985430364191) != 0) || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&5647091739131907) != 0) || ((int64((_la-416)) & ^0x3f) == 0 && ((int64(1)<<(_la-416))&-6917528058991722373) != 0) || ((int64((_la-514)) & ^0x3f) == 0 && ((int64(1)<<(_la-514))&11) != 0) { + if ((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-189)) & ^0x3f) == 0 && ((int64(1)<<(_la-189))&2305913398763585849) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&180143985430364191) != 0) || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&5647091739131907) != 0) || ((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&-6917528058991722373) != 0) || ((int64((_la-517)) & ^0x3f) == 0 && ((int64(1)<<(_la-517))&11) != 0) { { - p.SetState(2847) + p.SetState(2880) p.CallArgumentList() } } { - p.SetState(2850) + p.SetState(2883) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2852) + p.SetState(2885) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -37607,7 +39277,7 @@ func (p *MDLParser) CallExternalActionStatement() (localctx ICallExternalActionS if _la == MDLParserON { { - p.SetState(2851) + p.SetState(2884) p.OnErrorClause() } @@ -37744,6 +39414,16 @@ func (s *CallArgumentListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CallArgumentListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCallArgumentList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CallArgumentList() (localctx ICallArgumentListContext) { localctx = NewCallArgumentListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 262, MDLParserRULE_callArgumentList) @@ -37751,10 +39431,10 @@ func (p *MDLParser) CallArgumentList() (localctx ICallArgumentListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2854) + p.SetState(2887) p.CallArgument() } - p.SetState(2859) + p.SetState(2892) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -37763,7 +39443,7 @@ func (p *MDLParser) CallArgumentList() (localctx ICallArgumentListContext) { for _la == MDLParserCOMMA { { - p.SetState(2855) + p.SetState(2888) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -37771,11 +39451,11 @@ func (p *MDLParser) CallArgumentList() (localctx ICallArgumentListContext) { } } { - p.SetState(2856) + p.SetState(2889) p.CallArgument() } - p.SetState(2861) + p.SetState(2894) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -37905,11 +39585,21 @@ func (s *CallArgumentContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CallArgumentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCallArgument(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CallArgument() (localctx ICallArgumentContext) { localctx = NewCallArgumentContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 264, MDLParserRULE_callArgument) p.EnterOuterAlt(localctx, 1) - p.SetState(2864) + p.SetState(2897) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -37918,7 +39608,7 @@ func (p *MDLParser) CallArgument() (localctx ICallArgumentContext) { switch p.GetTokenStream().LA(1) { case MDLParserVARIABLE: { - p.SetState(2862) + p.SetState(2895) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -37928,7 +39618,7 @@ func (p *MDLParser) CallArgument() (localctx ICallArgumentContext) { case MDLParserINDEX, MDLParserOWNER, MDLParserREFERENCE, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserDEBUG, MDLParserACTION, MDLParserSORT, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserTITLE, MDLParserLABEL, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserCONTENT, MDLParserTABLETWIDTH, MDLParserPHONEWIDTH, MDLParserCLASS, MDLParserSTYLE, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserEDITABLE, MDLParserVISIBLE, MDLParserSUCCESS, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserERROR, MDLParserRANGE, MDLParserSTATUS, MDLParserVERSION, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserNAVIGATION, MDLParserHOME, MDLParserCHECK, MDLParserTEXT, MDLParserMESSAGE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserFORMAT, MDLParserROLE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserDESCRIPTION, MDLParserOFF, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: { - p.SetState(2863) + p.SetState(2896) p.ParameterName() } @@ -37937,7 +39627,7 @@ func (p *MDLParser) CallArgument() (localctx ICallArgumentContext) { goto errorExit } { - p.SetState(2866) + p.SetState(2899) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -37945,7 +39635,7 @@ func (p *MDLParser) CallArgument() (localctx ICallArgumentContext) { } } { - p.SetState(2867) + p.SetState(2900) p.Expression() } @@ -38113,6 +39803,16 @@ func (s *ShowPageStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ShowPageStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitShowPageStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { localctx = NewShowPageStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 266, MDLParserRULE_showPageStatement) @@ -38120,7 +39820,7 @@ func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2869) + p.SetState(2902) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -38128,7 +39828,7 @@ func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { } } { - p.SetState(2870) + p.SetState(2903) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -38136,10 +39836,10 @@ func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { } } { - p.SetState(2871) + p.SetState(2904) p.QualifiedName() } - p.SetState(2877) + p.SetState(2910) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -38148,29 +39848,29 @@ func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { if _la == MDLParserLPAREN { { - p.SetState(2872) + p.SetState(2905) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2874) + p.SetState(2907) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&629276753604317175) != 0) || ((int64((_la-132)) & ^0x3f) == 0 && ((int64(1)<<(_la-132))&-468218264967741735) != 0) || ((int64((_la-196)) & ^0x3f) == 0 && ((int64(1)<<(_la-196))&44473182800836609) != 0) || ((int64((_la-262)) & ^0x3f) == 0 && ((int64(1)<<(_la-262))&-494783461604865) != 0) || ((int64((_la-326)) & ^0x3f) == 0 && ((int64(1)<<(_la-326))&-576462951326682881) != 0) || ((int64((_la-390)) & ^0x3f) == 0 && ((int64(1)<<(_la-390))&-99506071046657) != 0) || ((int64((_la-454)) & ^0x3f) == 0 && ((int64(1)<<(_la-454))&-5764606698284089345) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&629276753604317175) != 0) || ((int64((_la-132)) & ^0x3f) == 0 && ((int64(1)<<(_la-132))&-936592626214273319) != 0) || ((int64((_la-196)) & ^0x3f) == 0 && ((int64(1)<<(_la-196))&355785468157095939) != 0) || ((int64((_la-265)) & ^0x3f) == 0 && ((int64(1)<<(_la-265))&-494783461604865) != 0) || ((int64((_la-329)) & ^0x3f) == 0 && ((int64(1)<<(_la-329))&-576462951326682881) != 0) || ((int64((_la-393)) & ^0x3f) == 0 && ((int64(1)<<(_la-393))&-99506071046657) != 0) || ((int64((_la-457)) & ^0x3f) == 0 && ((int64(1)<<(_la-457))&-5764606698284089345) != 0) { { - p.SetState(2873) + p.SetState(2906) p.ShowPageArgList() } } { - p.SetState(2876) + p.SetState(2909) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -38179,7 +39879,7 @@ func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { } } - p.SetState(2881) + p.SetState(2914) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -38188,7 +39888,7 @@ func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { if _la == MDLParserFOR { { - p.SetState(2879) + p.SetState(2912) p.Match(MDLParserFOR) if p.HasError() { // Recognition error - abort rule @@ -38196,7 +39896,7 @@ func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { } } { - p.SetState(2880) + p.SetState(2913) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -38205,7 +39905,7 @@ func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { } } - p.SetState(2885) + p.SetState(2918) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -38214,7 +39914,7 @@ func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { if _la == MDLParserWITH { { - p.SetState(2883) + p.SetState(2916) p.Match(MDLParserWITH) if p.HasError() { // Recognition error - abort rule @@ -38222,7 +39922,7 @@ func (p *MDLParser) ShowPageStatement() (localctx IShowPageStatementContext) { } } { - p.SetState(2884) + p.SetState(2917) p.MemberAssignmentList() } @@ -38359,6 +40059,16 @@ func (s *ShowPageArgListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ShowPageArgListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitShowPageArgList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ShowPageArgList() (localctx IShowPageArgListContext) { localctx = NewShowPageArgListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 268, MDLParserRULE_showPageArgList) @@ -38366,10 +40076,10 @@ func (p *MDLParser) ShowPageArgList() (localctx IShowPageArgListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2887) + p.SetState(2920) p.ShowPageArg() } - p.SetState(2892) + p.SetState(2925) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -38378,7 +40088,7 @@ func (p *MDLParser) ShowPageArgList() (localctx IShowPageArgListContext) { for _la == MDLParserCOMMA { { - p.SetState(2888) + p.SetState(2921) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -38386,11 +40096,11 @@ func (p *MDLParser) ShowPageArgList() (localctx IShowPageArgListContext) { } } { - p.SetState(2889) + p.SetState(2922) p.ShowPageArg() } - p.SetState(2894) + p.SetState(2927) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -38530,10 +40240,20 @@ func (s *ShowPageArgContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ShowPageArgContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitShowPageArg(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ShowPageArg() (localctx IShowPageArgContext) { localctx = NewShowPageArgContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 270, MDLParserRULE_showPageArg) - p.SetState(2905) + p.SetState(2938) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -38543,7 +40263,7 @@ func (p *MDLParser) ShowPageArg() (localctx IShowPageArgContext) { case MDLParserVARIABLE: p.EnterOuterAlt(localctx, 1) { - p.SetState(2895) + p.SetState(2928) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -38551,23 +40271,23 @@ func (p *MDLParser) ShowPageArg() (localctx IShowPageArgContext) { } } { - p.SetState(2896) + p.SetState(2929) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2899) + p.SetState(2932) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 291, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 296, p.GetParserRuleContext()) { case 1: { - p.SetState(2897) + p.SetState(2930) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -38577,7 +40297,7 @@ func (p *MDLParser) ShowPageArg() (localctx IShowPageArgContext) { case 2: { - p.SetState(2898) + p.SetState(2931) p.Expression() } @@ -38585,14 +40305,14 @@ func (p *MDLParser) ShowPageArg() (localctx IShowPageArgContext) { goto errorExit } - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(2901) + p.SetState(2934) p.IdentifierOrKeyword() } { - p.SetState(2902) + p.SetState(2935) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -38600,7 +40320,7 @@ func (p *MDLParser) ShowPageArg() (localctx IShowPageArgContext) { } } { - p.SetState(2903) + p.SetState(2936) p.Expression() } @@ -38697,12 +40417,22 @@ func (s *ClosePageStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ClosePageStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitClosePageStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ClosePageStatement() (localctx IClosePageStatementContext) { localctx = NewClosePageStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 272, MDLParserRULE_closePageStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(2907) + p.SetState(2940) p.Match(MDLParserCLOSE) if p.HasError() { // Recognition error - abort rule @@ -38710,7 +40440,7 @@ func (p *MDLParser) ClosePageStatement() (localctx IClosePageStatementContext) { } } { - p.SetState(2908) + p.SetState(2941) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -38811,12 +40541,22 @@ func (s *ShowHomePageStatementContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *ShowHomePageStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitShowHomePageStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ShowHomePageStatement() (localctx IShowHomePageStatementContext) { localctx = NewShowHomePageStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 274, MDLParserRULE_showHomePageStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(2910) + p.SetState(2943) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -38824,7 +40564,7 @@ func (p *MDLParser) ShowHomePageStatement() (localctx IShowHomePageStatementCont } } { - p.SetState(2911) + p.SetState(2944) p.Match(MDLParserHOME) if p.HasError() { // Recognition error - abort rule @@ -38832,7 +40572,7 @@ func (p *MDLParser) ShowHomePageStatement() (localctx IShowHomePageStatementCont } } { - p.SetState(2912) + p.SetState(2945) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -38999,6 +40739,16 @@ func (s *ShowMessageStatementContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *ShowMessageStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitShowMessageStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ShowMessageStatement() (localctx IShowMessageStatementContext) { localctx = NewShowMessageStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 276, MDLParserRULE_showMessageStatement) @@ -39006,7 +40756,7 @@ func (p *MDLParser) ShowMessageStatement() (localctx IShowMessageStatementContex p.EnterOuterAlt(localctx, 1) { - p.SetState(2914) + p.SetState(2947) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -39014,7 +40764,7 @@ func (p *MDLParser) ShowMessageStatement() (localctx IShowMessageStatementContex } } { - p.SetState(2915) + p.SetState(2948) p.Match(MDLParserMESSAGE) if p.HasError() { // Recognition error - abort rule @@ -39022,10 +40772,10 @@ func (p *MDLParser) ShowMessageStatement() (localctx IShowMessageStatementContex } } { - p.SetState(2916) + p.SetState(2949) p.Expression() } - p.SetState(2919) + p.SetState(2952) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -39034,7 +40784,7 @@ func (p *MDLParser) ShowMessageStatement() (localctx IShowMessageStatementContex if _la == MDLParserTYPE { { - p.SetState(2917) + p.SetState(2950) p.Match(MDLParserTYPE) if p.HasError() { // Recognition error - abort rule @@ -39042,12 +40792,12 @@ func (p *MDLParser) ShowMessageStatement() (localctx IShowMessageStatementContex } } { - p.SetState(2918) + p.SetState(2951) p.IdentifierOrKeyword() } } - p.SetState(2926) + p.SetState(2959) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -39056,7 +40806,7 @@ func (p *MDLParser) ShowMessageStatement() (localctx IShowMessageStatementContex if _la == MDLParserOBJECTS { { - p.SetState(2921) + p.SetState(2954) p.Match(MDLParserOBJECTS) if p.HasError() { // Recognition error - abort rule @@ -39064,7 +40814,7 @@ func (p *MDLParser) ShowMessageStatement() (localctx IShowMessageStatementContex } } { - p.SetState(2922) + p.SetState(2955) p.Match(MDLParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -39072,11 +40822,11 @@ func (p *MDLParser) ShowMessageStatement() (localctx IShowMessageStatementContex } } { - p.SetState(2923) + p.SetState(2956) p.ExpressionList() } { - p.SetState(2924) + p.SetState(2957) p.Match(MDLParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -39186,12 +40936,22 @@ func (s *ThrowStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ThrowStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitThrowStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ThrowStatement() (localctx IThrowStatementContext) { localctx = NewThrowStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 278, MDLParserRULE_throwStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(2928) + p.SetState(2961) p.Match(MDLParserTHROW) if p.HasError() { // Recognition error - abort rule @@ -39199,7 +40959,7 @@ func (p *MDLParser) ThrowStatement() (localctx IThrowStatementContext) { } } { - p.SetState(2929) + p.SetState(2962) p.Expression() } @@ -39362,6 +41122,16 @@ func (s *ValidationFeedbackStatementContext) ExitRule(listener antlr.ParseTreeLi } } +func (s *ValidationFeedbackStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitValidationFeedbackStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ValidationFeedbackStatement() (localctx IValidationFeedbackStatementContext) { localctx = NewValidationFeedbackStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 280, MDLParserRULE_validationFeedbackStatement) @@ -39369,7 +41139,7 @@ func (p *MDLParser) ValidationFeedbackStatement() (localctx IValidationFeedbackS p.EnterOuterAlt(localctx, 1) { - p.SetState(2931) + p.SetState(2964) p.Match(MDLParserVALIDATION) if p.HasError() { // Recognition error - abort rule @@ -39377,7 +41147,7 @@ func (p *MDLParser) ValidationFeedbackStatement() (localctx IValidationFeedbackS } } { - p.SetState(2932) + p.SetState(2965) p.Match(MDLParserFEEDBACK) if p.HasError() { // Recognition error - abort rule @@ -39385,11 +41155,11 @@ func (p *MDLParser) ValidationFeedbackStatement() (localctx IValidationFeedbackS } } { - p.SetState(2933) + p.SetState(2966) p.AttributePath() } { - p.SetState(2934) + p.SetState(2967) p.Match(MDLParserMESSAGE) if p.HasError() { // Recognition error - abort rule @@ -39397,10 +41167,10 @@ func (p *MDLParser) ValidationFeedbackStatement() (localctx IValidationFeedbackS } } { - p.SetState(2935) + p.SetState(2968) p.Expression() } - p.SetState(2941) + p.SetState(2974) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -39409,7 +41179,7 @@ func (p *MDLParser) ValidationFeedbackStatement() (localctx IValidationFeedbackS if _la == MDLParserOBJECTS { { - p.SetState(2936) + p.SetState(2969) p.Match(MDLParserOBJECTS) if p.HasError() { // Recognition error - abort rule @@ -39417,7 +41187,7 @@ func (p *MDLParser) ValidationFeedbackStatement() (localctx IValidationFeedbackS } } { - p.SetState(2937) + p.SetState(2970) p.Match(MDLParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -39425,11 +41195,11 @@ func (p *MDLParser) ValidationFeedbackStatement() (localctx IValidationFeedbackS } } { - p.SetState(2938) + p.SetState(2971) p.ExpressionList() } { - p.SetState(2939) + p.SetState(2972) p.Match(MDLParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -39716,13 +41486,23 @@ func (s *RestCallStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestCallStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestCallStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { localctx = NewRestCallStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 282, MDLParserRULE_restCallStatement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(2945) + p.SetState(2978) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -39731,7 +41511,7 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { if _la == MDLParserVARIABLE { { - p.SetState(2943) + p.SetState(2976) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -39739,7 +41519,7 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { } } { - p.SetState(2944) + p.SetState(2977) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -39749,7 +41529,7 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { } { - p.SetState(2947) + p.SetState(2980) p.Match(MDLParserREST) if p.HasError() { // Recognition error - abort rule @@ -39757,7 +41537,7 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { } } { - p.SetState(2948) + p.SetState(2981) p.Match(MDLParserCALL) if p.HasError() { // Recognition error - abort rule @@ -39765,14 +41545,14 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { } } { - p.SetState(2949) + p.SetState(2982) p.HttpMethod() } { - p.SetState(2950) + p.SetState(2983) p.RestCallUrl() } - p.SetState(2952) + p.SetState(2985) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -39781,12 +41561,12 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { if _la == MDLParserWITH || _la == MDLParserPARAMETERS { { - p.SetState(2951) + p.SetState(2984) p.RestCallUrlParams() } } - p.SetState(2957) + p.SetState(2990) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -39795,18 +41575,18 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { for _la == MDLParserHEADER { { - p.SetState(2954) + p.SetState(2987) p.RestCallHeaderClause() } - p.SetState(2959) + p.SetState(2992) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(2961) + p.SetState(2994) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -39815,12 +41595,12 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { if _la == MDLParserAUTH { { - p.SetState(2960) + p.SetState(2993) p.RestCallAuthClause() } } - p.SetState(2964) + p.SetState(2997) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -39829,12 +41609,12 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { if _la == MDLParserBODY { { - p.SetState(2963) + p.SetState(2996) p.RestCallBodyClause() } } - p.SetState(2967) + p.SetState(3000) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -39843,16 +41623,16 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { if _la == MDLParserTIMEOUT { { - p.SetState(2966) + p.SetState(2999) p.RestCallTimeoutClause() } } { - p.SetState(2969) + p.SetState(3002) p.RestCallReturnsClause() } - p.SetState(2971) + p.SetState(3004) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -39861,7 +41641,7 @@ func (p *MDLParser) RestCallStatement() (localctx IRestCallStatementContext) { if _la == MDLParserON { { - p.SetState(2970) + p.SetState(3003) p.OnErrorClause() } @@ -39970,6 +41750,16 @@ func (s *HttpMethodContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *HttpMethodContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitHttpMethod(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) HttpMethod() (localctx IHttpMethodContext) { localctx = NewHttpMethodContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 284, MDLParserRULE_httpMethod) @@ -39977,10 +41767,10 @@ func (p *MDLParser) HttpMethod() (localctx IHttpMethodContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(2973) + p.SetState(3006) _la = p.GetTokenStream().LA(1) - if !(_la == MDLParserDELETE || ((int64((_la-334)) & ^0x3f) == 0 && ((int64(1)<<(_la-334))&15) != 0)) { + if !(_la == MDLParserDELETE || ((int64((_la-337)) & ^0x3f) == 0 && ((int64(1)<<(_la-337))&15) != 0)) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -40088,20 +41878,30 @@ func (s *RestCallUrlContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestCallUrlContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestCallUrl(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestCallUrl() (localctx IRestCallUrlContext) { localctx = NewRestCallUrlContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 286, MDLParserRULE_restCallUrl) - p.SetState(2977) + p.SetState(3010) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 303, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 308, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(2975) + p.SetState(3008) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -40112,7 +41912,7 @@ func (p *MDLParser) RestCallUrl() (localctx IRestCallUrlContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(2976) + p.SetState(3009) p.Expression() } @@ -40215,12 +42015,22 @@ func (s *RestCallUrlParamsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestCallUrlParamsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestCallUrlParams(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestCallUrlParams() (localctx IRestCallUrlParamsContext) { localctx = NewRestCallUrlParamsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 288, MDLParserRULE_restCallUrlParams) p.EnterOuterAlt(localctx, 1) { - p.SetState(2979) + p.SetState(3012) p.TemplateParams() } @@ -40339,6 +42149,16 @@ func (s *RestCallHeaderClauseContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *RestCallHeaderClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestCallHeaderClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestCallHeaderClause() (localctx IRestCallHeaderClauseContext) { localctx = NewRestCallHeaderClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 290, MDLParserRULE_restCallHeaderClause) @@ -40346,7 +42166,7 @@ func (p *MDLParser) RestCallHeaderClause() (localctx IRestCallHeaderClauseContex p.EnterOuterAlt(localctx, 1) { - p.SetState(2981) + p.SetState(3014) p.Match(MDLParserHEADER) if p.HasError() { // Recognition error - abort rule @@ -40354,7 +42174,7 @@ func (p *MDLParser) RestCallHeaderClause() (localctx IRestCallHeaderClauseContex } } { - p.SetState(2982) + p.SetState(3015) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserSTRING_LITERAL || _la == MDLParserIDENTIFIER) { @@ -40365,7 +42185,7 @@ func (p *MDLParser) RestCallHeaderClause() (localctx IRestCallHeaderClauseContex } } { - p.SetState(2983) + p.SetState(3016) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -40373,7 +42193,7 @@ func (p *MDLParser) RestCallHeaderClause() (localctx IRestCallHeaderClauseContex } } { - p.SetState(2984) + p.SetState(3017) p.Expression() } @@ -40513,12 +42333,22 @@ func (s *RestCallAuthClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestCallAuthClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestCallAuthClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestCallAuthClause() (localctx IRestCallAuthClauseContext) { localctx = NewRestCallAuthClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 292, MDLParserRULE_restCallAuthClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(2986) + p.SetState(3019) p.Match(MDLParserAUTH) if p.HasError() { // Recognition error - abort rule @@ -40526,7 +42356,7 @@ func (p *MDLParser) RestCallAuthClause() (localctx IRestCallAuthClauseContext) { } } { - p.SetState(2987) + p.SetState(3020) p.Match(MDLParserBASIC) if p.HasError() { // Recognition error - abort rule @@ -40534,11 +42364,11 @@ func (p *MDLParser) RestCallAuthClause() (localctx IRestCallAuthClauseContext) { } } { - p.SetState(2988) + p.SetState(3021) p.Expression() } { - p.SetState(2989) + p.SetState(3022) p.Match(MDLParserPASSWORD) if p.HasError() { // Recognition error - abort rule @@ -40546,7 +42376,7 @@ func (p *MDLParser) RestCallAuthClause() (localctx IRestCallAuthClauseContext) { } } { - p.SetState(2990) + p.SetState(3023) p.Expression() } @@ -40704,22 +42534,32 @@ func (s *RestCallBodyClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestCallBodyClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestCallBodyClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestCallBodyClause() (localctx IRestCallBodyClauseContext) { localctx = NewRestCallBodyClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 294, MDLParserRULE_restCallBodyClause) var _la int - p.SetState(3008) + p.SetState(3041) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 306, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 311, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(2992) + p.SetState(3025) p.Match(MDLParserBODY) if p.HasError() { // Recognition error - abort rule @@ -40727,14 +42567,14 @@ func (p *MDLParser) RestCallBodyClause() (localctx IRestCallBodyClauseContext) { } } { - p.SetState(2993) + p.SetState(3026) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(2995) + p.SetState(3028) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -40743,7 +42583,7 @@ func (p *MDLParser) RestCallBodyClause() (localctx IRestCallBodyClauseContext) { if _la == MDLParserWITH || _la == MDLParserPARAMETERS { { - p.SetState(2994) + p.SetState(3027) p.TemplateParams() } @@ -40752,7 +42592,7 @@ func (p *MDLParser) RestCallBodyClause() (localctx IRestCallBodyClauseContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(2997) + p.SetState(3030) p.Match(MDLParserBODY) if p.HasError() { // Recognition error - abort rule @@ -40760,10 +42600,10 @@ func (p *MDLParser) RestCallBodyClause() (localctx IRestCallBodyClauseContext) { } } { - p.SetState(2998) + p.SetState(3031) p.Expression() } - p.SetState(3000) + p.SetState(3033) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -40772,7 +42612,7 @@ func (p *MDLParser) RestCallBodyClause() (localctx IRestCallBodyClauseContext) { if _la == MDLParserWITH || _la == MDLParserPARAMETERS { { - p.SetState(2999) + p.SetState(3032) p.TemplateParams() } @@ -40781,7 +42621,7 @@ func (p *MDLParser) RestCallBodyClause() (localctx IRestCallBodyClauseContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(3002) + p.SetState(3035) p.Match(MDLParserBODY) if p.HasError() { // Recognition error - abort rule @@ -40789,7 +42629,7 @@ func (p *MDLParser) RestCallBodyClause() (localctx IRestCallBodyClauseContext) { } } { - p.SetState(3003) + p.SetState(3036) p.Match(MDLParserMAPPING) if p.HasError() { // Recognition error - abort rule @@ -40797,11 +42637,11 @@ func (p *MDLParser) RestCallBodyClause() (localctx IRestCallBodyClauseContext) { } } { - p.SetState(3004) + p.SetState(3037) p.QualifiedName() } { - p.SetState(3005) + p.SetState(3038) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -40809,7 +42649,7 @@ func (p *MDLParser) RestCallBodyClause() (localctx IRestCallBodyClauseContext) { } } { - p.SetState(3006) + p.SetState(3039) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -40921,12 +42761,22 @@ func (s *RestCallTimeoutClauseContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *RestCallTimeoutClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestCallTimeoutClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestCallTimeoutClause() (localctx IRestCallTimeoutClauseContext) { localctx = NewRestCallTimeoutClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 296, MDLParserRULE_restCallTimeoutClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(3010) + p.SetState(3043) p.Match(MDLParserTIMEOUT) if p.HasError() { // Recognition error - abort rule @@ -40934,7 +42784,7 @@ func (p *MDLParser) RestCallTimeoutClause() (localctx IRestCallTimeoutClauseCont } } { - p.SetState(3011) + p.SetState(3044) p.Expression() } @@ -41094,20 +42944,30 @@ func (s *RestCallReturnsClauseContext) ExitRule(listener antlr.ParseTreeListener } } +func (s *RestCallReturnsClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestCallReturnsClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseContext) { localctx = NewRestCallReturnsClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 298, MDLParserRULE_restCallReturnsClause) - p.SetState(3027) + p.SetState(3060) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 307, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 312, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(3013) + p.SetState(3046) p.Match(MDLParserRETURNS) if p.HasError() { // Recognition error - abort rule @@ -41115,7 +42975,7 @@ func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseCont } } { - p.SetState(3014) + p.SetState(3047) p.Match(MDLParserSTRING_TYPE) if p.HasError() { // Recognition error - abort rule @@ -41126,7 +42986,7 @@ func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseCont case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(3015) + p.SetState(3048) p.Match(MDLParserRETURNS) if p.HasError() { // Recognition error - abort rule @@ -41134,7 +42994,7 @@ func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseCont } } { - p.SetState(3016) + p.SetState(3049) p.Match(MDLParserRESPONSE) if p.HasError() { // Recognition error - abort rule @@ -41145,7 +43005,7 @@ func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseCont case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(3017) + p.SetState(3050) p.Match(MDLParserRETURNS) if p.HasError() { // Recognition error - abort rule @@ -41153,7 +43013,7 @@ func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseCont } } { - p.SetState(3018) + p.SetState(3051) p.Match(MDLParserMAPPING) if p.HasError() { // Recognition error - abort rule @@ -41161,11 +43021,11 @@ func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseCont } } { - p.SetState(3019) + p.SetState(3052) p.QualifiedName() } { - p.SetState(3020) + p.SetState(3053) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -41173,14 +43033,14 @@ func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseCont } } { - p.SetState(3021) + p.SetState(3054) p.QualifiedName() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(3023) + p.SetState(3056) p.Match(MDLParserRETURNS) if p.HasError() { // Recognition error - abort rule @@ -41188,7 +43048,7 @@ func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseCont } } { - p.SetState(3024) + p.SetState(3057) p.Match(MDLParserNONE) if p.HasError() { // Recognition error - abort rule @@ -41199,7 +43059,7 @@ func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseCont case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(3025) + p.SetState(3058) p.Match(MDLParserRETURNS) if p.HasError() { // Recognition error - abort rule @@ -41207,7 +43067,7 @@ func (p *MDLParser) RestCallReturnsClause() (localctx IRestCallReturnsClauseCont } } { - p.SetState(3026) + p.SetState(3059) p.Match(MDLParserNOTHING) if p.HasError() { // Recognition error - abort rule @@ -41373,13 +43233,23 @@ func (s *SendRestRequestStatementContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *SendRestRequestStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSendRestRequestStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SendRestRequestStatement() (localctx ISendRestRequestStatementContext) { localctx = NewSendRestRequestStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 300, MDLParserRULE_sendRestRequestStatement) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(3031) + p.SetState(3064) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -41388,7 +43258,7 @@ func (p *MDLParser) SendRestRequestStatement() (localctx ISendRestRequestStateme if _la == MDLParserVARIABLE { { - p.SetState(3029) + p.SetState(3062) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -41396,7 +43266,7 @@ func (p *MDLParser) SendRestRequestStatement() (localctx ISendRestRequestStateme } } { - p.SetState(3030) + p.SetState(3063) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -41406,7 +43276,7 @@ func (p *MDLParser) SendRestRequestStatement() (localctx ISendRestRequestStateme } { - p.SetState(3033) + p.SetState(3066) p.Match(MDLParserSEND) if p.HasError() { // Recognition error - abort rule @@ -41414,7 +43284,7 @@ func (p *MDLParser) SendRestRequestStatement() (localctx ISendRestRequestStateme } } { - p.SetState(3034) + p.SetState(3067) p.Match(MDLParserREST) if p.HasError() { // Recognition error - abort rule @@ -41422,7 +43292,7 @@ func (p *MDLParser) SendRestRequestStatement() (localctx ISendRestRequestStateme } } { - p.SetState(3035) + p.SetState(3068) p.Match(MDLParserREQUEST) if p.HasError() { // Recognition error - abort rule @@ -41430,10 +43300,10 @@ func (p *MDLParser) SendRestRequestStatement() (localctx ISendRestRequestStateme } } { - p.SetState(3036) + p.SetState(3069) p.QualifiedName() } - p.SetState(3038) + p.SetState(3071) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -41442,12 +43312,12 @@ func (p *MDLParser) SendRestRequestStatement() (localctx ISendRestRequestStateme if _la == MDLParserBODY { { - p.SetState(3037) + p.SetState(3070) p.SendRestRequestBodyClause() } } - p.SetState(3041) + p.SetState(3074) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -41456,7 +43326,7 @@ func (p *MDLParser) SendRestRequestStatement() (localctx ISendRestRequestStateme if _la == MDLParserON { { - p.SetState(3040) + p.SetState(3073) p.OnErrorClause() } @@ -41550,12 +43420,22 @@ func (s *SendRestRequestBodyClauseContext) ExitRule(listener antlr.ParseTreeList } } +func (s *SendRestRequestBodyClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSendRestRequestBodyClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SendRestRequestBodyClause() (localctx ISendRestRequestBodyClauseContext) { localctx = NewSendRestRequestBodyClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 302, MDLParserRULE_sendRestRequestBodyClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(3043) + p.SetState(3076) p.Match(MDLParserBODY) if p.HasError() { // Recognition error - abort rule @@ -41563,7 +43443,7 @@ func (p *MDLParser) SendRestRequestBodyClause() (localctx ISendRestRequestBodyCl } } { - p.SetState(3044) + p.SetState(3077) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -41676,12 +43556,22 @@ func (s *ListOperationStatementContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *ListOperationStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitListOperationStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ListOperationStatement() (localctx IListOperationStatementContext) { localctx = NewListOperationStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 304, MDLParserRULE_listOperationStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(3046) + p.SetState(3079) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -41689,7 +43579,7 @@ func (p *MDLParser) ListOperationStatement() (localctx IListOperationStatementCo } } { - p.SetState(3047) + p.SetState(3080) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -41697,7 +43587,7 @@ func (p *MDLParser) ListOperationStatement() (localctx IListOperationStatementCo } } { - p.SetState(3048) + p.SetState(3081) p.ListOperation() } @@ -41888,10 +43778,20 @@ func (s *ListOperationContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ListOperationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitListOperation(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ListOperation() (localctx IListOperationContext) { localctx = NewListOperationContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 306, MDLParserRULE_listOperation) - p.SetState(3109) + p.SetState(3142) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -41901,7 +43801,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { case MDLParserHEAD: p.EnterOuterAlt(localctx, 1) { - p.SetState(3050) + p.SetState(3083) p.Match(MDLParserHEAD) if p.HasError() { // Recognition error - abort rule @@ -41909,7 +43809,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3051) + p.SetState(3084) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -41917,7 +43817,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3052) + p.SetState(3085) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -41925,7 +43825,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3053) + p.SetState(3086) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -41936,7 +43836,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { case MDLParserTAIL: p.EnterOuterAlt(localctx, 2) { - p.SetState(3054) + p.SetState(3087) p.Match(MDLParserTAIL) if p.HasError() { // Recognition error - abort rule @@ -41944,7 +43844,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3055) + p.SetState(3088) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -41952,7 +43852,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3056) + p.SetState(3089) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -41960,7 +43860,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3057) + p.SetState(3090) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -41971,7 +43871,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { case MDLParserFIND: p.EnterOuterAlt(localctx, 3) { - p.SetState(3058) + p.SetState(3091) p.Match(MDLParserFIND) if p.HasError() { // Recognition error - abort rule @@ -41979,7 +43879,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3059) + p.SetState(3092) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -41987,7 +43887,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3060) + p.SetState(3093) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -41995,7 +43895,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3061) + p.SetState(3094) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -42003,11 +43903,11 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3062) + p.SetState(3095) p.Expression() } { - p.SetState(3063) + p.SetState(3096) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -42018,7 +43918,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { case MDLParserFILTER: p.EnterOuterAlt(localctx, 4) { - p.SetState(3065) + p.SetState(3098) p.Match(MDLParserFILTER) if p.HasError() { // Recognition error - abort rule @@ -42026,7 +43926,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3066) + p.SetState(3099) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -42034,7 +43934,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3067) + p.SetState(3100) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42042,7 +43942,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3068) + p.SetState(3101) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -42050,11 +43950,11 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3069) + p.SetState(3102) p.Expression() } { - p.SetState(3070) + p.SetState(3103) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -42065,7 +43965,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { case MDLParserSORT: p.EnterOuterAlt(localctx, 5) { - p.SetState(3072) + p.SetState(3105) p.Match(MDLParserSORT) if p.HasError() { // Recognition error - abort rule @@ -42073,7 +43973,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3073) + p.SetState(3106) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -42081,7 +43981,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3074) + p.SetState(3107) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42089,7 +43989,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3075) + p.SetState(3108) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -42097,11 +43997,11 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3076) + p.SetState(3109) p.SortSpecList() } { - p.SetState(3077) + p.SetState(3110) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -42112,7 +44012,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { case MDLParserUNION: p.EnterOuterAlt(localctx, 6) { - p.SetState(3079) + p.SetState(3112) p.Match(MDLParserUNION) if p.HasError() { // Recognition error - abort rule @@ -42120,7 +44020,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3080) + p.SetState(3113) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -42128,7 +44028,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3081) + p.SetState(3114) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42136,7 +44036,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3082) + p.SetState(3115) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -42144,7 +44044,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3083) + p.SetState(3116) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42152,7 +44052,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3084) + p.SetState(3117) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -42163,7 +44063,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { case MDLParserINTERSECT: p.EnterOuterAlt(localctx, 7) { - p.SetState(3085) + p.SetState(3118) p.Match(MDLParserINTERSECT) if p.HasError() { // Recognition error - abort rule @@ -42171,7 +44071,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3086) + p.SetState(3119) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -42179,7 +44079,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3087) + p.SetState(3120) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42187,7 +44087,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3088) + p.SetState(3121) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -42195,7 +44095,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3089) + p.SetState(3122) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42203,7 +44103,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3090) + p.SetState(3123) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -42214,7 +44114,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { case MDLParserSUBTRACT: p.EnterOuterAlt(localctx, 8) { - p.SetState(3091) + p.SetState(3124) p.Match(MDLParserSUBTRACT) if p.HasError() { // Recognition error - abort rule @@ -42222,7 +44122,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3092) + p.SetState(3125) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -42230,7 +44130,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3093) + p.SetState(3126) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42238,7 +44138,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3094) + p.SetState(3127) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -42246,7 +44146,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3095) + p.SetState(3128) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42254,7 +44154,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3096) + p.SetState(3129) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -42265,7 +44165,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { case MDLParserCONTAINS: p.EnterOuterAlt(localctx, 9) { - p.SetState(3097) + p.SetState(3130) p.Match(MDLParserCONTAINS) if p.HasError() { // Recognition error - abort rule @@ -42273,7 +44173,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3098) + p.SetState(3131) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -42281,7 +44181,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3099) + p.SetState(3132) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42289,7 +44189,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3100) + p.SetState(3133) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -42297,7 +44197,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3101) + p.SetState(3134) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42305,7 +44205,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3102) + p.SetState(3135) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -42316,7 +44216,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { case MDLParserEQUALS_OP: p.EnterOuterAlt(localctx, 10) { - p.SetState(3103) + p.SetState(3136) p.Match(MDLParserEQUALS_OP) if p.HasError() { // Recognition error - abort rule @@ -42324,7 +44224,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3104) + p.SetState(3137) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -42332,7 +44232,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3105) + p.SetState(3138) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42340,7 +44240,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3106) + p.SetState(3139) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -42348,7 +44248,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3107) + p.SetState(3140) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42356,7 +44256,7 @@ func (p *MDLParser) ListOperation() (localctx IListOperationContext) { } } { - p.SetState(3108) + p.SetState(3141) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -42500,6 +44400,16 @@ func (s *SortSpecListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SortSpecListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSortSpecList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SortSpecList() (localctx ISortSpecListContext) { localctx = NewSortSpecListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 308, MDLParserRULE_sortSpecList) @@ -42507,10 +44417,10 @@ func (p *MDLParser) SortSpecList() (localctx ISortSpecListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3111) + p.SetState(3144) p.SortSpec() } - p.SetState(3116) + p.SetState(3149) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -42519,7 +44429,7 @@ func (p *MDLParser) SortSpecList() (localctx ISortSpecListContext) { for _la == MDLParserCOMMA { { - p.SetState(3112) + p.SetState(3145) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -42527,11 +44437,11 @@ func (p *MDLParser) SortSpecList() (localctx ISortSpecListContext) { } } { - p.SetState(3113) + p.SetState(3146) p.SortSpec() } - p.SetState(3118) + p.SetState(3151) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -42632,6 +44542,16 @@ func (s *SortSpecContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SortSpecContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSortSpec(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SortSpec() (localctx ISortSpecContext) { localctx = NewSortSpecContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 310, MDLParserRULE_sortSpec) @@ -42639,14 +44559,14 @@ func (p *MDLParser) SortSpec() (localctx ISortSpecContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3119) + p.SetState(3152) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3121) + p.SetState(3154) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -42655,7 +44575,7 @@ func (p *MDLParser) SortSpec() (localctx ISortSpecContext) { if _la == MDLParserASC || _la == MDLParserDESC { { - p.SetState(3120) + p.SetState(3153) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserASC || _la == MDLParserDESC) { @@ -42773,12 +44693,22 @@ func (s *AggregateListStatementContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *AggregateListStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAggregateListStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AggregateListStatement() (localctx IAggregateListStatementContext) { localctx = NewAggregateListStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 312, MDLParserRULE_aggregateListStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(3123) + p.SetState(3156) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42786,7 +44716,7 @@ func (p *MDLParser) AggregateListStatement() (localctx IAggregateListStatementCo } } { - p.SetState(3124) + p.SetState(3157) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -42794,7 +44724,7 @@ func (p *MDLParser) AggregateListStatement() (localctx IAggregateListStatementCo } } { - p.SetState(3125) + p.SetState(3158) p.ListAggregateOperation() } @@ -42933,10 +44863,20 @@ func (s *ListAggregateOperationContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *ListAggregateOperationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitListAggregateOperation(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationContext) { localctx = NewListAggregateOperationContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 314, MDLParserRULE_listAggregateOperation) - p.SetState(3151) + p.SetState(3184) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -42946,7 +44886,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo case MDLParserCOUNT: p.EnterOuterAlt(localctx, 1) { - p.SetState(3127) + p.SetState(3160) p.Match(MDLParserCOUNT) if p.HasError() { // Recognition error - abort rule @@ -42954,7 +44894,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3128) + p.SetState(3161) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -42962,7 +44902,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3129) + p.SetState(3162) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -42970,7 +44910,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3130) + p.SetState(3163) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -42981,7 +44921,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo case MDLParserSUM: p.EnterOuterAlt(localctx, 2) { - p.SetState(3131) + p.SetState(3164) p.Match(MDLParserSUM) if p.HasError() { // Recognition error - abort rule @@ -42989,7 +44929,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3132) + p.SetState(3165) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -42997,11 +44937,11 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3133) + p.SetState(3166) p.AttributePath() } { - p.SetState(3134) + p.SetState(3167) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -43012,7 +44952,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo case MDLParserAVERAGE: p.EnterOuterAlt(localctx, 3) { - p.SetState(3136) + p.SetState(3169) p.Match(MDLParserAVERAGE) if p.HasError() { // Recognition error - abort rule @@ -43020,7 +44960,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3137) + p.SetState(3170) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -43028,11 +44968,11 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3138) + p.SetState(3171) p.AttributePath() } { - p.SetState(3139) + p.SetState(3172) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -43043,7 +44983,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo case MDLParserMINIMUM: p.EnterOuterAlt(localctx, 4) { - p.SetState(3141) + p.SetState(3174) p.Match(MDLParserMINIMUM) if p.HasError() { // Recognition error - abort rule @@ -43051,7 +44991,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3142) + p.SetState(3175) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -43059,11 +44999,11 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3143) + p.SetState(3176) p.AttributePath() } { - p.SetState(3144) + p.SetState(3177) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -43074,7 +45014,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo case MDLParserMAXIMUM: p.EnterOuterAlt(localctx, 5) { - p.SetState(3146) + p.SetState(3179) p.Match(MDLParserMAXIMUM) if p.HasError() { // Recognition error - abort rule @@ -43082,7 +45022,7 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3147) + p.SetState(3180) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -43090,11 +45030,11 @@ func (p *MDLParser) ListAggregateOperation() (localctx IListAggregateOperationCo } } { - p.SetState(3148) + p.SetState(3181) p.AttributePath() } { - p.SetState(3149) + p.SetState(3182) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -43222,12 +45162,22 @@ func (s *CreateListStatementContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *CreateListStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateListStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateListStatement() (localctx ICreateListStatementContext) { localctx = NewCreateListStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 316, MDLParserRULE_createListStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(3153) + p.SetState(3186) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -43235,7 +45185,7 @@ func (p *MDLParser) CreateListStatement() (localctx ICreateListStatementContext) } } { - p.SetState(3154) + p.SetState(3187) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -43243,7 +45193,7 @@ func (p *MDLParser) CreateListStatement() (localctx ICreateListStatementContext) } } { - p.SetState(3155) + p.SetState(3188) p.Match(MDLParserCREATE) if p.HasError() { // Recognition error - abort rule @@ -43251,7 +45201,7 @@ func (p *MDLParser) CreateListStatement() (localctx ICreateListStatementContext) } } { - p.SetState(3156) + p.SetState(3189) p.Match(MDLParserLIST_OF) if p.HasError() { // Recognition error - abort rule @@ -43259,7 +45209,7 @@ func (p *MDLParser) CreateListStatement() (localctx ICreateListStatementContext) } } { - p.SetState(3157) + p.SetState(3190) p.QualifiedName() } @@ -43361,12 +45311,22 @@ func (s *AddToListStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AddToListStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAddToListStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AddToListStatement() (localctx IAddToListStatementContext) { localctx = NewAddToListStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 318, MDLParserRULE_addToListStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(3159) + p.SetState(3192) p.Match(MDLParserADD) if p.HasError() { // Recognition error - abort rule @@ -43374,7 +45334,7 @@ func (p *MDLParser) AddToListStatement() (localctx IAddToListStatementContext) { } } { - p.SetState(3160) + p.SetState(3193) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -43382,7 +45342,7 @@ func (p *MDLParser) AddToListStatement() (localctx IAddToListStatementContext) { } } { - p.SetState(3161) + p.SetState(3194) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -43390,7 +45350,7 @@ func (p *MDLParser) AddToListStatement() (localctx IAddToListStatementContext) { } } { - p.SetState(3162) + p.SetState(3195) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -43496,12 +45456,22 @@ func (s *RemoveFromListStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *RemoveFromListStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRemoveFromListStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RemoveFromListStatement() (localctx IRemoveFromListStatementContext) { localctx = NewRemoveFromListStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 320, MDLParserRULE_removeFromListStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(3164) + p.SetState(3197) p.Match(MDLParserREMOVE) if p.HasError() { // Recognition error - abort rule @@ -43509,7 +45479,7 @@ func (p *MDLParser) RemoveFromListStatement() (localctx IRemoveFromListStatement } } { - p.SetState(3165) + p.SetState(3198) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -43517,7 +45487,7 @@ func (p *MDLParser) RemoveFromListStatement() (localctx IRemoveFromListStatement } } { - p.SetState(3166) + p.SetState(3199) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -43525,7 +45495,7 @@ func (p *MDLParser) RemoveFromListStatement() (localctx IRemoveFromListStatement } } { - p.SetState(3167) + p.SetState(3200) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -43664,6 +45634,16 @@ func (s *MemberAssignmentListContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *MemberAssignmentListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMemberAssignmentList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MemberAssignmentList() (localctx IMemberAssignmentListContext) { localctx = NewMemberAssignmentListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 322, MDLParserRULE_memberAssignmentList) @@ -43671,10 +45651,10 @@ func (p *MDLParser) MemberAssignmentList() (localctx IMemberAssignmentListContex p.EnterOuterAlt(localctx, 1) { - p.SetState(3169) + p.SetState(3202) p.MemberAssignment() } - p.SetState(3174) + p.SetState(3207) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -43683,7 +45663,7 @@ func (p *MDLParser) MemberAssignmentList() (localctx IMemberAssignmentListContex for _la == MDLParserCOMMA { { - p.SetState(3170) + p.SetState(3203) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -43691,11 +45671,11 @@ func (p *MDLParser) MemberAssignmentList() (localctx IMemberAssignmentListContex } } { - p.SetState(3171) + p.SetState(3204) p.MemberAssignment() } - p.SetState(3176) + p.SetState(3209) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -43820,16 +45800,26 @@ func (s *MemberAssignmentContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *MemberAssignmentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMemberAssignment(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MemberAssignment() (localctx IMemberAssignmentContext) { localctx = NewMemberAssignmentContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 324, MDLParserRULE_memberAssignment) p.EnterOuterAlt(localctx, 1) { - p.SetState(3177) + p.SetState(3210) p.MemberAttributeName() } { - p.SetState(3178) + p.SetState(3211) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -43837,7 +45827,7 @@ func (p *MDLParser) MemberAssignment() (localctx IMemberAssignmentContext) { } } { - p.SetState(3179) + p.SetState(3212) p.Expression() } @@ -43963,27 +45953,37 @@ func (s *MemberAttributeNameContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *MemberAttributeNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMemberAttributeName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MemberAttributeName() (localctx IMemberAttributeNameContext) { localctx = NewMemberAttributeNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 326, MDLParserRULE_memberAttributeName) - p.SetState(3185) + p.SetState(3218) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 316, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 321, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(3181) + p.SetState(3214) p.QualifiedName() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(3182) + p.SetState(3215) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -43994,7 +45994,7 @@ func (p *MDLParser) MemberAttributeName() (localctx IMemberAttributeNameContext) case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(3183) + p.SetState(3216) p.Match(MDLParserQUOTED_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -44005,7 +46005,7 @@ func (p *MDLParser) MemberAttributeName() (localctx IMemberAttributeNameContext) case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(3184) + p.SetState(3217) p.CommonNameKeyword() } @@ -44144,6 +46144,16 @@ func (s *ChangeListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ChangeListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitChangeList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ChangeList() (localctx IChangeListContext) { localctx = NewChangeListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 328, MDLParserRULE_changeList) @@ -44151,10 +46161,10 @@ func (p *MDLParser) ChangeList() (localctx IChangeListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3187) + p.SetState(3220) p.ChangeItem() } - p.SetState(3192) + p.SetState(3225) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -44163,7 +46173,7 @@ func (p *MDLParser) ChangeList() (localctx IChangeListContext) { for _la == MDLParserCOMMA { { - p.SetState(3188) + p.SetState(3221) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -44171,11 +46181,11 @@ func (p *MDLParser) ChangeList() (localctx IChangeListContext) { } } { - p.SetState(3189) + p.SetState(3222) p.ChangeItem() } - p.SetState(3194) + p.SetState(3227) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -44288,12 +46298,22 @@ func (s *ChangeItemContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ChangeItemContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitChangeItem(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ChangeItem() (localctx IChangeItemContext) { localctx = NewChangeItemContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 330, MDLParserRULE_changeItem) p.EnterOuterAlt(localctx, 1) { - p.SetState(3195) + p.SetState(3228) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -44301,7 +46321,7 @@ func (p *MDLParser) ChangeItem() (localctx IChangeItemContext) { } } { - p.SetState(3196) + p.SetState(3229) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -44309,7 +46329,7 @@ func (p *MDLParser) ChangeItem() (localctx IChangeItemContext) { } } { - p.SetState(3197) + p.SetState(3230) p.Expression() } @@ -44457,12 +46477,22 @@ func (s *CreatePageStatementContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *CreatePageStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreatePageStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreatePageStatement() (localctx ICreatePageStatementContext) { localctx = NewCreatePageStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 332, MDLParserRULE_createPageStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(3199) + p.SetState(3232) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -44470,15 +46500,15 @@ func (p *MDLParser) CreatePageStatement() (localctx ICreatePageStatementContext) } } { - p.SetState(3200) + p.SetState(3233) p.QualifiedName() } { - p.SetState(3201) + p.SetState(3234) p.PageHeaderV3() } { - p.SetState(3202) + p.SetState(3235) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -44486,11 +46516,11 @@ func (p *MDLParser) CreatePageStatement() (localctx ICreatePageStatementContext) } } { - p.SetState(3203) + p.SetState(3236) p.PageBodyV3() } { - p.SetState(3204) + p.SetState(3237) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -44659,6 +46689,16 @@ func (s *CreateSnippetStatementContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *CreateSnippetStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateSnippetStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateSnippetStatement() (localctx ICreateSnippetStatementContext) { localctx = NewCreateSnippetStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 334, MDLParserRULE_createSnippetStatement) @@ -44666,7 +46706,7 @@ func (p *MDLParser) CreateSnippetStatement() (localctx ICreateSnippetStatementCo p.EnterOuterAlt(localctx, 1) { - p.SetState(3206) + p.SetState(3239) p.Match(MDLParserSNIPPET) if p.HasError() { // Recognition error - abort rule @@ -44674,10 +46714,10 @@ func (p *MDLParser) CreateSnippetStatement() (localctx ICreateSnippetStatementCo } } { - p.SetState(3207) + p.SetState(3240) p.QualifiedName() } - p.SetState(3209) + p.SetState(3242) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -44686,12 +46726,12 @@ func (p *MDLParser) CreateSnippetStatement() (localctx ICreateSnippetStatementCo if _la == MDLParserLPAREN { { - p.SetState(3208) + p.SetState(3241) p.SnippetHeaderV3() } } - p.SetState(3212) + p.SetState(3245) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -44700,13 +46740,13 @@ func (p *MDLParser) CreateSnippetStatement() (localctx ICreateSnippetStatementCo if _la == MDLParserFOLDER { { - p.SetState(3211) + p.SetState(3244) p.SnippetOptions() } } { - p.SetState(3214) + p.SetState(3247) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -44714,11 +46754,11 @@ func (p *MDLParser) CreateSnippetStatement() (localctx ICreateSnippetStatementCo } } { - p.SetState(3215) + p.SetState(3248) p.PageBodyV3() } { - p.SetState(3216) + p.SetState(3249) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -44847,13 +46887,23 @@ func (s *SnippetOptionsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SnippetOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSnippetOptions(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SnippetOptions() (localctx ISnippetOptionsContext) { localctx = NewSnippetOptionsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 336, MDLParserRULE_snippetOptions) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(3219) + p.SetState(3252) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -44862,11 +46912,11 @@ func (p *MDLParser) SnippetOptions() (localctx ISnippetOptionsContext) { for ok := true; ok; ok = _la == MDLParserFOLDER { { - p.SetState(3218) + p.SetState(3251) p.SnippetOption() } - p.SetState(3221) + p.SetState(3254) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -44962,12 +47012,22 @@ func (s *SnippetOptionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SnippetOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSnippetOption(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SnippetOption() (localctx ISnippetOptionContext) { localctx = NewSnippetOptionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 338, MDLParserRULE_snippetOption) p.EnterOuterAlt(localctx, 1) { - p.SetState(3223) + p.SetState(3256) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -44975,7 +47035,7 @@ func (p *MDLParser) SnippetOption() (localctx ISnippetOptionContext) { } } { - p.SetState(3224) + p.SetState(3257) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -45114,6 +47174,16 @@ func (s *PageParameterListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *PageParameterListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitPageParameterList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) PageParameterList() (localctx IPageParameterListContext) { localctx = NewPageParameterListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 340, MDLParserRULE_pageParameterList) @@ -45121,10 +47191,10 @@ func (p *MDLParser) PageParameterList() (localctx IPageParameterListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3226) + p.SetState(3259) p.PageParameter() } - p.SetState(3231) + p.SetState(3264) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -45133,7 +47203,7 @@ func (p *MDLParser) PageParameterList() (localctx IPageParameterListContext) { for _la == MDLParserCOMMA { { - p.SetState(3227) + p.SetState(3260) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -45141,11 +47211,11 @@ func (p *MDLParser) PageParameterList() (localctx IPageParameterListContext) { } } { - p.SetState(3228) + p.SetState(3261) p.PageParameter() } - p.SetState(3233) + p.SetState(3266) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -45263,6 +47333,16 @@ func (s *PageParameterContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *PageParameterContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitPageParameter(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) PageParameter() (localctx IPageParameterContext) { localctx = NewPageParameterContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 342, MDLParserRULE_pageParameter) @@ -45270,7 +47350,7 @@ func (p *MDLParser) PageParameter() (localctx IPageParameterContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3234) + p.SetState(3267) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserVARIABLE || _la == MDLParserIDENTIFIER) { @@ -45281,7 +47361,7 @@ func (p *MDLParser) PageParameter() (localctx IPageParameterContext) { } } { - p.SetState(3235) + p.SetState(3268) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -45289,7 +47369,7 @@ func (p *MDLParser) PageParameter() (localctx IPageParameterContext) { } } { - p.SetState(3236) + p.SetState(3269) p.DataType() } @@ -45424,6 +47504,16 @@ func (s *SnippetParameterListContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *SnippetParameterListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSnippetParameterList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SnippetParameterList() (localctx ISnippetParameterListContext) { localctx = NewSnippetParameterListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 344, MDLParserRULE_snippetParameterList) @@ -45431,10 +47521,10 @@ func (p *MDLParser) SnippetParameterList() (localctx ISnippetParameterListContex p.EnterOuterAlt(localctx, 1) { - p.SetState(3238) + p.SetState(3271) p.SnippetParameter() } - p.SetState(3243) + p.SetState(3276) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -45443,7 +47533,7 @@ func (p *MDLParser) SnippetParameterList() (localctx ISnippetParameterListContex for _la == MDLParserCOMMA { { - p.SetState(3239) + p.SetState(3272) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -45451,11 +47541,11 @@ func (p *MDLParser) SnippetParameterList() (localctx ISnippetParameterListContex } } { - p.SetState(3240) + p.SetState(3273) p.SnippetParameter() } - p.SetState(3245) + p.SetState(3278) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -45573,6 +47663,16 @@ func (s *SnippetParameterContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SnippetParameterContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSnippetParameter(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SnippetParameter() (localctx ISnippetParameterContext) { localctx = NewSnippetParameterContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 346, MDLParserRULE_snippetParameter) @@ -45580,7 +47680,7 @@ func (p *MDLParser) SnippetParameter() (localctx ISnippetParameterContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3246) + p.SetState(3279) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserVARIABLE || _la == MDLParserIDENTIFIER) { @@ -45591,7 +47691,7 @@ func (p *MDLParser) SnippetParameter() (localctx ISnippetParameterContext) { } } { - p.SetState(3247) + p.SetState(3280) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -45599,7 +47699,7 @@ func (p *MDLParser) SnippetParameter() (localctx ISnippetParameterContext) { } } { - p.SetState(3248) + p.SetState(3281) p.DataType() } @@ -45734,6 +47834,16 @@ func (s *VariableDeclarationListContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *VariableDeclarationListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitVariableDeclarationList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) VariableDeclarationList() (localctx IVariableDeclarationListContext) { localctx = NewVariableDeclarationListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 348, MDLParserRULE_variableDeclarationList) @@ -45741,10 +47851,10 @@ func (p *MDLParser) VariableDeclarationList() (localctx IVariableDeclarationList p.EnterOuterAlt(localctx, 1) { - p.SetState(3250) + p.SetState(3283) p.VariableDeclaration() } - p.SetState(3255) + p.SetState(3288) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -45753,7 +47863,7 @@ func (p *MDLParser) VariableDeclarationList() (localctx IVariableDeclarationList for _la == MDLParserCOMMA { { - p.SetState(3251) + p.SetState(3284) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -45761,11 +47871,11 @@ func (p *MDLParser) VariableDeclarationList() (localctx IVariableDeclarationList } } { - p.SetState(3252) + p.SetState(3285) p.VariableDeclaration() } - p.SetState(3257) + p.SetState(3290) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -45888,12 +47998,22 @@ func (s *VariableDeclarationContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *VariableDeclarationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitVariableDeclaration(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) VariableDeclaration() (localctx IVariableDeclarationContext) { localctx = NewVariableDeclarationContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 350, MDLParserRULE_variableDeclaration) p.EnterOuterAlt(localctx, 1) { - p.SetState(3258) + p.SetState(3291) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -45901,7 +48021,7 @@ func (p *MDLParser) VariableDeclaration() (localctx IVariableDeclarationContext) } } { - p.SetState(3259) + p.SetState(3292) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -45909,11 +48029,11 @@ func (p *MDLParser) VariableDeclaration() (localctx IVariableDeclarationContext) } } { - p.SetState(3260) + p.SetState(3293) p.DataType() } { - p.SetState(3261) + p.SetState(3294) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -45921,7 +48041,7 @@ func (p *MDLParser) VariableDeclaration() (localctx IVariableDeclarationContext) } } { - p.SetState(3262) + p.SetState(3295) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -46039,28 +48159,38 @@ func (s *SortColumnContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SortColumnContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSortColumn(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SortColumn() (localctx ISortColumnContext) { localctx = NewSortColumnContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 352, MDLParserRULE_sortColumn) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(3266) + p.SetState(3299) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 324, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 329, p.GetParserRuleContext()) { case 1: { - p.SetState(3264) + p.SetState(3297) p.QualifiedName() } case 2: { - p.SetState(3265) + p.SetState(3298) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -46071,7 +48201,7 @@ func (p *MDLParser) SortColumn() (localctx ISortColumnContext) { case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(3269) + p.SetState(3302) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -46080,7 +48210,7 @@ func (p *MDLParser) SortColumn() (localctx ISortColumnContext) { if _la == MDLParserASC || _la == MDLParserDESC { { - p.SetState(3268) + p.SetState(3301) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserASC || _la == MDLParserDESC) { @@ -46198,12 +48328,22 @@ func (s *XpathConstraintContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathConstraintContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathConstraint(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathConstraint() (localctx IXpathConstraintContext) { localctx = NewXpathConstraintContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 354, MDLParserRULE_xpathConstraint) p.EnterOuterAlt(localctx, 1) { - p.SetState(3271) + p.SetState(3304) p.Match(MDLParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -46211,11 +48351,11 @@ func (p *MDLParser) XpathConstraint() (localctx IXpathConstraintContext) { } } { - p.SetState(3272) + p.SetState(3305) p.XpathExpr() } { - p.SetState(3273) + p.SetState(3306) p.Match(MDLParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -46311,6 +48451,16 @@ func (s *AndOrXpathContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AndOrXpathContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAndOrXpath(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AndOrXpath() (localctx IAndOrXpathContext) { localctx = NewAndOrXpathContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 356, MDLParserRULE_andOrXpath) @@ -46318,7 +48468,7 @@ func (p *MDLParser) AndOrXpath() (localctx IAndOrXpathContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3275) + p.SetState(3308) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserAND || _la == MDLParserOR) { @@ -46460,6 +48610,16 @@ func (s *XpathExprContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathExprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathExpr(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathExpr() (localctx IXpathExprContext) { localctx = NewXpathExprContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 358, MDLParserRULE_xpathExpr) @@ -46467,10 +48627,10 @@ func (p *MDLParser) XpathExpr() (localctx IXpathExprContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3277) + p.SetState(3310) p.XpathAndExpr() } - p.SetState(3282) + p.SetState(3315) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -46479,7 +48639,7 @@ func (p *MDLParser) XpathExpr() (localctx IXpathExprContext) { for _la == MDLParserOR { { - p.SetState(3278) + p.SetState(3311) p.Match(MDLParserOR) if p.HasError() { // Recognition error - abort rule @@ -46487,11 +48647,11 @@ func (p *MDLParser) XpathExpr() (localctx IXpathExprContext) { } } { - p.SetState(3279) + p.SetState(3312) p.XpathAndExpr() } - p.SetState(3284) + p.SetState(3317) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -46630,6 +48790,16 @@ func (s *XpathAndExprContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathAndExprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathAndExpr(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathAndExpr() (localctx IXpathAndExprContext) { localctx = NewXpathAndExprContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 360, MDLParserRULE_xpathAndExpr) @@ -46637,10 +48807,10 @@ func (p *MDLParser) XpathAndExpr() (localctx IXpathAndExprContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3285) + p.SetState(3318) p.XpathNotExpr() } - p.SetState(3290) + p.SetState(3323) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -46649,7 +48819,7 @@ func (p *MDLParser) XpathAndExpr() (localctx IXpathAndExprContext) { for _la == MDLParserAND { { - p.SetState(3286) + p.SetState(3319) p.Match(MDLParserAND) if p.HasError() { // Recognition error - abort rule @@ -46657,11 +48827,11 @@ func (p *MDLParser) XpathAndExpr() (localctx IXpathAndExprContext) { } } { - p.SetState(3287) + p.SetState(3320) p.XpathNotExpr() } - p.SetState(3292) + p.SetState(3325) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -46786,20 +48956,30 @@ func (s *XpathNotExprContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathNotExprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathNotExpr(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathNotExpr() (localctx IXpathNotExprContext) { localctx = NewXpathNotExprContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 362, MDLParserRULE_xpathNotExpr) - p.SetState(3296) + p.SetState(3329) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 328, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 333, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(3293) + p.SetState(3326) p.Match(MDLParserNOT) if p.HasError() { // Recognition error - abort rule @@ -46807,14 +48987,14 @@ func (p *MDLParser) XpathNotExpr() (localctx IXpathNotExprContext) { } } { - p.SetState(3294) + p.SetState(3327) p.XpathNotExpr() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(3295) + p.SetState(3328) p.XpathComparisonExpr() } @@ -46960,6 +49140,16 @@ func (s *XpathComparisonExprContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *XpathComparisonExprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathComparisonExpr(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathComparisonExpr() (localctx IXpathComparisonExprContext) { localctx = NewXpathComparisonExprContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 364, MDLParserRULE_xpathComparisonExpr) @@ -46967,23 +49157,23 @@ func (p *MDLParser) XpathComparisonExpr() (localctx IXpathComparisonExprContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(3298) + p.SetState(3331) p.XpathValueExpr() } - p.SetState(3302) + p.SetState(3335) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if (int64((_la-481)) & ^0x3f) == 0 && ((int64(1)<<(_la-481))&63) != 0 { + if (int64((_la-484)) & ^0x3f) == 0 && ((int64(1)<<(_la-484))&63) != 0 { { - p.SetState(3299) + p.SetState(3332) p.ComparisonOperator() } { - p.SetState(3300) + p.SetState(3333) p.XpathValueExpr() } @@ -47128,34 +49318,44 @@ func (s *XpathValueExprContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathValueExprContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathValueExpr(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathValueExpr() (localctx IXpathValueExprContext) { localctx = NewXpathValueExprContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 366, MDLParserRULE_xpathValueExpr) - p.SetState(3310) + p.SetState(3343) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 330, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 335, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(3304) + p.SetState(3337) p.XpathFunctionCall() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(3305) + p.SetState(3338) p.XpathPath() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(3306) + p.SetState(3339) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -47163,11 +49363,11 @@ func (p *MDLParser) XpathValueExpr() (localctx IXpathValueExprContext) { } } { - p.SetState(3307) + p.SetState(3340) p.XpathExpr() } { - p.SetState(3308) + p.SetState(3341) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -47310,6 +49510,16 @@ func (s *XpathPathContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathPathContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathPath(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathPath() (localctx IXpathPathContext) { localctx = NewXpathPathContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 368, MDLParserRULE_xpathPath) @@ -47317,10 +49527,10 @@ func (p *MDLParser) XpathPath() (localctx IXpathPathContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3312) + p.SetState(3345) p.XpathStep() } - p.SetState(3317) + p.SetState(3350) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -47329,7 +49539,7 @@ func (p *MDLParser) XpathPath() (localctx IXpathPathContext) { for _la == MDLParserSLASH { { - p.SetState(3313) + p.SetState(3346) p.Match(MDLParserSLASH) if p.HasError() { // Recognition error - abort rule @@ -47337,11 +49547,11 @@ func (p *MDLParser) XpathPath() (localctx IXpathPathContext) { } } { - p.SetState(3314) + p.SetState(3347) p.XpathStep() } - p.SetState(3319) + p.SetState(3352) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -47471,6 +49681,16 @@ func (s *XpathStepContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathStepContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathStep(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathStep() (localctx IXpathStepContext) { localctx = NewXpathStepContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 370, MDLParserRULE_xpathStep) @@ -47478,10 +49698,10 @@ func (p *MDLParser) XpathStep() (localctx IXpathStepContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3320) + p.SetState(3353) p.XpathStepValue() } - p.SetState(3325) + p.SetState(3358) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -47490,7 +49710,7 @@ func (p *MDLParser) XpathStep() (localctx IXpathStepContext) { if _la == MDLParserLBRACKET { { - p.SetState(3321) + p.SetState(3354) p.Match(MDLParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -47498,11 +49718,11 @@ func (p *MDLParser) XpathStep() (localctx IXpathStepContext) { } } { - p.SetState(3322) + p.SetState(3355) p.XpathExpr() } { - p.SetState(3323) + p.SetState(3356) p.Match(MDLParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -47627,27 +49847,37 @@ func (s *XpathStepValueContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathStepValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathStepValue(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathStepValue() (localctx IXpathStepValueContext) { localctx = NewXpathStepValueContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 372, MDLParserRULE_xpathStepValue) - p.SetState(3332) + p.SetState(3365) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { - case MDLParserWS, MDLParserDOC_COMMENT, MDLParserBLOCK_COMMENT, MDLParserLINE_COMMENT, MDLParserIS_NOT_NULL, MDLParserIS_NULL, MDLParserNOT_NULL, MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserSORT_BY, MDLParserNON_PERSISTENT, MDLParserREFERENCE_SET, MDLParserLIST_OF, MDLParserDELETE_AND_REFERENCES, MDLParserDELETE_BUT_KEEP_REFERENCES, MDLParserDELETE_IF_NO_REFERENCES, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserMODIFY, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserNANOFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserNOTEBOOK, MDLParserCONSTANT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserGENERALIZATION, MDLParserEXTENDS, MDLParserADD, MDLParserSET, MDLParserPOSITION, MDLParserDOCUMENTATION, MDLParserSTORAGE, MDLParserTABLE, MDLParserDELETE_BEHAVIOR, MDLParserCASCADE, MDLParserPREVENT, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserRUNTIME, MDLParserBRANCH, MDLParserTOKEN, MDLParserHOST, MDLParserPORT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserINTROSPECT, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserRETURNS, MDLParserRETURNING, MDLParserCASE, MDLParserWHEN, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserFULL, MDLParserCROSS, MDLParserON, MDLParserASC, MDLParserDESC, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserROLLBACK, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserELSEIF, MDLParserCONTINUE, MDLParserBREAK, MDLParserRETURN, MDLParserTHROW, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserJAVASCRIPT, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserNODE, MDLParserEVENTS, MDLParserHEAD, MDLParserTAIL, MDLParserFIND, MDLParserSORT, MDLParserUNION, MDLParserINTERSECT, MDLParserSUBTRACT, MDLParserCONTAINS, MDLParserAVERAGE, MDLParserMINIMUM, MDLParserMAXIMUM, MDLParserLIST, MDLParserREMOVE, MDLParserEQUALS_OP, MDLParserINFO, MDLParserWARNING, MDLParserTRACE, MDLParserCRITICAL, MDLParserWITH, MDLParserEMPTY, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserPLACEHOLDER, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserCONTAINER, MDLParserROW, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserSTATICTEXT, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserDROPDOWN, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserREFERENCESELECTOR, MDLParserINPUTREFERENCESETSELECTOR, MDLParserFILEINPUT, MDLParserIMAGEINPUT, MDLParserCUSTOMWIDGET, MDLParserTEXTFILTER, MDLParserNUMBERFILTER, MDLParserDROPDOWNFILTER, MDLParserDATEFILTER, MDLParserFILTER, MDLParserWIDGET, MDLParserWIDGETS, MDLParserCAPTION, MDLParserICON, MDLParserTOOLTIP, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserRENDERMODE, MDLParserBINDS, MDLParserATTR, MDLParserCONTENTPARAMS, MDLParserCAPTIONPARAMS, MDLParserPARAMS, MDLParserVARIABLES_KW, MDLParserDESKTOPWIDTH, MDLParserTABLETWIDTH, MDLParserPHONEWIDTH, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserAUTOFILL, MDLParserURL, MDLParserFOLDER, MDLParserPASSING, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserREADONLY, MDLParserATTRIBUTES, MDLParserFILTERTYPE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserSAVECHANGES, MDLParserSAVE_CHANGES, MDLParserCANCEL_CHANGES, MDLParserCLOSE_PAGE, MDLParserSHOW_PAGE, MDLParserDELETE_ACTION, MDLParserDELETE_OBJECT, MDLParserCREATE_OBJECT, MDLParserCALL_MICROFLOW, MDLParserCALL_NANOFLOW, MDLParserOPEN_LINK, MDLParserSIGN_OUT, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserWARNING_STYLE, MDLParserINFO_STYLE, MDLParserTEMPLATE, MDLParserONCLICK, MDLParserONCHANGE, MDLParserTABINDEX, MDLParserH1, MDLParserH2, MDLParserH3, MDLParserH4, MDLParserH5, MDLParserH6, MDLParserPARAGRAPH, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserHASHEDSTRING_TYPE, MDLParserCURRENCY_TYPE, MDLParserFLOAT_TYPE, MDLParserSTRINGTEMPLATE_TYPE, MDLParserENUM_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserLENGTH, MDLParserTRIM, MDLParserCOALESCE, MDLParserCAST, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserMATCH, MDLParserEXISTS, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRAISE, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserXPATH, MDLParserCONSTRAINT, MDLParserCALCULATED, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserGET, MDLParserPOST, MDLParserPUT, MDLParserPATCH, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserEXPOSED, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserCONNECTIONS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserRULES, MDLParserTEXT, MDLParserSARIF, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCOMMENT, MDLParserCATALOG, MDLParserFORCE, MDLParserBACKGROUND, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserVALUES, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserATTRIBUTE_NAME, MDLParserFORMAT, MDLParserSQL, MDLParserWITHOUT, MDLParserDRY, MDLParserRUN, MDLParserWIDGETTYPE, MDLParserV3, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserANNOTATION, MDLParserBOUNDARY, MDLParserINTERRUPTING, MDLParserNON, MDLParserMULTI, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserDISPLAY, MDLParserOFF, MDLParserUSERS, MDLParserPLUS, MDLParserMINUS, MDLParserSTAR, MDLParserPERCENT, MDLParserMOD, MDLParserDIV, MDLParserLBRACE, MDLParserRBRACE, MDLParserCOLON, MDLParserAT, MDLParserPIPE, MDLParserDOUBLE_COLON, MDLParserARROW, MDLParserQUESTION, MDLParserHASH, MDLParserIDENTIFIER, MDLParserHYPHENATED_ID, MDLParserQUOTED_IDENTIFIER: + case MDLParserWS, MDLParserDOC_COMMENT, MDLParserBLOCK_COMMENT, MDLParserLINE_COMMENT, MDLParserIS_NOT_NULL, MDLParserIS_NULL, MDLParserNOT_NULL, MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserSORT_BY, MDLParserNON_PERSISTENT, MDLParserREFERENCE_SET, MDLParserLIST_OF, MDLParserDELETE_AND_REFERENCES, MDLParserDELETE_BUT_KEEP_REFERENCES, MDLParserDELETE_IF_NO_REFERENCES, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserMODIFY, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserNANOFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserNOTEBOOK, MDLParserCONSTANT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserGENERALIZATION, MDLParserEXTENDS, MDLParserADD, MDLParserSET, MDLParserPOSITION, MDLParserDOCUMENTATION, MDLParserSTORAGE, MDLParserTABLE, MDLParserDELETE_BEHAVIOR, MDLParserCASCADE, MDLParserPREVENT, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserRUNTIME, MDLParserBRANCH, MDLParserTOKEN, MDLParserHOST, MDLParserPORT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserINTROSPECT, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserRETURNS, MDLParserRETURNING, MDLParserCASE, MDLParserWHEN, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserFULL, MDLParserCROSS, MDLParserON, MDLParserASC, MDLParserDESC, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserROLLBACK, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserELSEIF, MDLParserCONTINUE, MDLParserBREAK, MDLParserRETURN, MDLParserTHROW, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserJAVASCRIPT, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserNODE, MDLParserEVENTS, MDLParserHEAD, MDLParserTAIL, MDLParserFIND, MDLParserSORT, MDLParserUNION, MDLParserINTERSECT, MDLParserSUBTRACT, MDLParserCONTAINS, MDLParserAVERAGE, MDLParserMINIMUM, MDLParserMAXIMUM, MDLParserLIST, MDLParserREMOVE, MDLParserEQUALS_OP, MDLParserINFO, MDLParserWARNING, MDLParserTRACE, MDLParserCRITICAL, MDLParserWITH, MDLParserEMPTY, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserPLACEHOLDER, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserCONTAINER, MDLParserROW, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserSTATICTEXT, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserDROPDOWN, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserREFERENCESELECTOR, MDLParserINPUTREFERENCESETSELECTOR, MDLParserFILEINPUT, MDLParserIMAGEINPUT, MDLParserCUSTOMWIDGET, MDLParserPLUGGABLEWIDGET, MDLParserTEXTFILTER, MDLParserNUMBERFILTER, MDLParserDROPDOWNFILTER, MDLParserDATEFILTER, MDLParserFILTER, MDLParserWIDGET, MDLParserWIDGETS, MDLParserCAPTION, MDLParserICON, MDLParserTOOLTIP, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserRENDERMODE, MDLParserBINDS, MDLParserATTR, MDLParserCONTENTPARAMS, MDLParserCAPTIONPARAMS, MDLParserPARAMS, MDLParserVARIABLES_KW, MDLParserDESKTOPWIDTH, MDLParserTABLETWIDTH, MDLParserPHONEWIDTH, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserAUTOFILL, MDLParserURL, MDLParserFOLDER, MDLParserPASSING, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserREADONLY, MDLParserATTRIBUTES, MDLParserFILTERTYPE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserSAVECHANGES, MDLParserSAVE_CHANGES, MDLParserCANCEL_CHANGES, MDLParserCLOSE_PAGE, MDLParserSHOW_PAGE, MDLParserDELETE_ACTION, MDLParserDELETE_OBJECT, MDLParserCREATE_OBJECT, MDLParserCALL_MICROFLOW, MDLParserCALL_NANOFLOW, MDLParserOPEN_LINK, MDLParserSIGN_OUT, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserWARNING_STYLE, MDLParserINFO_STYLE, MDLParserTEMPLATE, MDLParserONCLICK, MDLParserONCHANGE, MDLParserTABINDEX, MDLParserH1, MDLParserH2, MDLParserH3, MDLParserH4, MDLParserH5, MDLParserH6, MDLParserPARAGRAPH, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserHASHEDSTRING_TYPE, MDLParserCURRENCY_TYPE, MDLParserFLOAT_TYPE, MDLParserSTRINGTEMPLATE_TYPE, MDLParserENUM_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserLENGTH, MDLParserTRIM, MDLParserCOALESCE, MDLParserCAST, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserMATCH, MDLParserEXISTS, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRAISE, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserXPATH, MDLParserCONSTRAINT, MDLParserCALCULATED, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserGET, MDLParserPOST, MDLParserPUT, MDLParserPATCH, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserEXPOSED, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserCONNECTIONS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserRULES, MDLParserTEXT, MDLParserSARIF, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCOMMENT, MDLParserCATALOG, MDLParserFORCE, MDLParserBACKGROUND, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserVALUES, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserATTRIBUTE_NAME, MDLParserFORMAT, MDLParserSQL, MDLParserWITHOUT, MDLParserDRY, MDLParserRUN, MDLParserWIDGETTYPE, MDLParserV3, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserANNOTATION, MDLParserBOUNDARY, MDLParserINTERRUPTING, MDLParserNON, MDLParserMULTI, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserDISPLAY, MDLParserOFF, MDLParserUSERS, MDLParserPLUS, MDLParserMINUS, MDLParserSTAR, MDLParserPERCENT, MDLParserMOD, MDLParserDIV, MDLParserLBRACE, MDLParserRBRACE, MDLParserCOLON, MDLParserAT, MDLParserPIPE, MDLParserDOUBLE_COLON, MDLParserARROW, MDLParserQUESTION, MDLParserHASH, MDLParserIDENTIFIER, MDLParserHYPHENATED_ID, MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(3327) + p.SetState(3360) p.XpathQualifiedName() } case MDLParserVARIABLE: p.EnterOuterAlt(localctx, 2) { - p.SetState(3328) + p.SetState(3361) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -47658,7 +49888,7 @@ func (p *MDLParser) XpathStepValue() (localctx IXpathStepValueContext) { case MDLParserSTRING_LITERAL: p.EnterOuterAlt(localctx, 3) { - p.SetState(3329) + p.SetState(3362) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -47669,7 +49899,7 @@ func (p *MDLParser) XpathStepValue() (localctx IXpathStepValueContext) { case MDLParserNUMBER_LITERAL: p.EnterOuterAlt(localctx, 4) { - p.SetState(3330) + p.SetState(3363) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -47680,7 +49910,7 @@ func (p *MDLParser) XpathStepValue() (localctx IXpathStepValueContext) { case MDLParserMENDIX_TOKEN: p.EnterOuterAlt(localctx, 5) { - p.SetState(3331) + p.SetState(3364) p.Match(MDLParserMENDIX_TOKEN) if p.HasError() { // Recognition error - abort rule @@ -47824,6 +50054,16 @@ func (s *XpathQualifiedNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathQualifiedNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathQualifiedName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathQualifiedName() (localctx IXpathQualifiedNameContext) { localctx = NewXpathQualifiedNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 374, MDLParserRULE_xpathQualifiedName) @@ -47831,10 +50071,10 @@ func (p *MDLParser) XpathQualifiedName() (localctx IXpathQualifiedNameContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3334) + p.SetState(3367) p.XpathWord() } - p.SetState(3339) + p.SetState(3372) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -47843,7 +50083,7 @@ func (p *MDLParser) XpathQualifiedName() (localctx IXpathQualifiedNameContext) { for _la == MDLParserDOT { { - p.SetState(3335) + p.SetState(3368) p.Match(MDLParserDOT) if p.HasError() { // Recognition error - abort rule @@ -47851,11 +50091,11 @@ func (p *MDLParser) XpathQualifiedName() (localctx IXpathQualifiedNameContext) { } } { - p.SetState(3336) + p.SetState(3369) p.XpathWord() } - p.SetState(3341) + p.SetState(3374) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -48051,6 +50291,16 @@ func (s *XpathWordContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathWordContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathWord(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathWord() (localctx IXpathWordContext) { localctx = NewXpathWordContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 376, MDLParserRULE_xpathWord) @@ -48058,10 +50308,10 @@ func (p *MDLParser) XpathWord() (localctx IXpathWordContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3342) + p.SetState(3375) _la = p.GetTokenStream().LA(1) - if _la <= 0 || ((int64((_la-285)) & ^0x3f) == 0 && ((int64(1)<<(_la-285))&7) != 0) || ((int64((_la-481)) & ^0x3f) == 0 && ((int64(1)<<(_la-481))&16646398527) != 0) { + if _la <= 0 || ((int64((_la-288)) & ^0x3f) == 0 && ((int64(1)<<(_la-288))&7) != 0) || ((int64((_la-484)) & ^0x3f) == 0 && ((int64(1)<<(_la-484))&16646398527) != 0) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -48227,6 +50477,16 @@ func (s *XpathFunctionCallContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathFunctionCallContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathFunctionCall(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathFunctionCall() (localctx IXpathFunctionCallContext) { localctx = NewXpathFunctionCallContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 378, MDLParserRULE_xpathFunctionCall) @@ -48234,30 +50494,30 @@ func (p *MDLParser) XpathFunctionCall() (localctx IXpathFunctionCallContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3344) + p.SetState(3377) p.XpathFunctionName() } { - p.SetState(3345) + p.SetState(3378) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3354) + p.SetState(3387) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&-1) != 0) || ((int64((_la-256)) & ^0x3f) == 0 && ((int64(1)<<(_la-256))&-1610612737) != 0) || ((int64((_la-320)) & ^0x3f) == 0 && ((int64(1)<<(_la-320))&-1) != 0) || ((int64((_la-384)) & ^0x3f) == 0 && ((int64(1)<<(_la-384))&-1) != 0) || ((int64((_la-448)) & ^0x3f) == 0 && ((int64(1)<<(_la-448))&-28645018092699649) != 0) || ((int64((_la-513)) & ^0x3f) == 0 && ((int64(1)<<(_la-513))&31) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-2) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&-1) != 0) || ((int64((_la-192)) & ^0x3f) == 0 && ((int64(1)<<(_la-192))&-1) != 0) || ((int64((_la-256)) & ^0x3f) == 0 && ((int64(1)<<(_la-256))&-12884901889) != 0) || ((int64((_la-320)) & ^0x3f) == 0 && ((int64(1)<<(_la-320))&-1) != 0) || ((int64((_la-384)) & ^0x3f) == 0 && ((int64(1)<<(_la-384))&-1) != 0) || ((int64((_la-448)) & ^0x3f) == 0 && ((int64(1)<<(_la-448))&-229160144741597185) != 0) || ((int64((_la-512)) & ^0x3f) == 0 && ((int64(1)<<(_la-512))&503) != 0) { { - p.SetState(3346) + p.SetState(3379) p.XpathExpr() } - p.SetState(3351) + p.SetState(3384) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -48266,7 +50526,7 @@ func (p *MDLParser) XpathFunctionCall() (localctx IXpathFunctionCallContext) { for _la == MDLParserCOMMA { { - p.SetState(3347) + p.SetState(3380) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -48274,11 +50534,11 @@ func (p *MDLParser) XpathFunctionCall() (localctx IXpathFunctionCallContext) { } } { - p.SetState(3348) + p.SetState(3381) p.XpathExpr() } - p.SetState(3353) + p.SetState(3386) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -48288,7 +50548,7 @@ func (p *MDLParser) XpathFunctionCall() (localctx IXpathFunctionCallContext) { } { - p.SetState(3356) + p.SetState(3389) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -48404,6 +50664,16 @@ func (s *XpathFunctionNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *XpathFunctionNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitXpathFunctionName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) XpathFunctionName() (localctx IXpathFunctionNameContext) { localctx = NewXpathFunctionNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 380, MDLParserRULE_xpathFunctionName) @@ -48411,10 +50681,10 @@ func (p *MDLParser) XpathFunctionName() (localctx IXpathFunctionNameContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3358) + p.SetState(3391) _la = p.GetTokenStream().LA(1) - if !(_la == MDLParserCONTAINS || ((int64((_la-287)) & ^0x3f) == 0 && ((int64(1)<<(_la-287))&1537) != 0) || _la == MDLParserIDENTIFIER || _la == MDLParserHYPHENATED_ID) { + if !(_la == MDLParserCONTAINS || ((int64((_la-290)) & ^0x3f) == 0 && ((int64(1)<<(_la-290))&1537) != 0) || _la == MDLParserIDENTIFIER || _la == MDLParserHYPHENATED_ID) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -48563,6 +50833,16 @@ func (s *PageHeaderV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *PageHeaderV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitPageHeaderV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) PageHeaderV3() (localctx IPageHeaderV3Context) { localctx = NewPageHeaderV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 382, MDLParserRULE_pageHeaderV3) @@ -48570,7 +50850,7 @@ func (p *MDLParser) PageHeaderV3() (localctx IPageHeaderV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3360) + p.SetState(3393) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -48578,10 +50858,10 @@ func (p *MDLParser) PageHeaderV3() (localctx IPageHeaderV3Context) { } } { - p.SetState(3361) + p.SetState(3394) p.PageHeaderPropertyV3() } - p.SetState(3366) + p.SetState(3399) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -48590,7 +50870,7 @@ func (p *MDLParser) PageHeaderV3() (localctx IPageHeaderV3Context) { for _la == MDLParserCOMMA { { - p.SetState(3362) + p.SetState(3395) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -48598,11 +50878,11 @@ func (p *MDLParser) PageHeaderV3() (localctx IPageHeaderV3Context) { } } { - p.SetState(3363) + p.SetState(3396) p.PageHeaderPropertyV3() } - p.SetState(3368) + p.SetState(3401) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -48610,7 +50890,7 @@ func (p *MDLParser) PageHeaderV3() (localctx IPageHeaderV3Context) { _la = p.GetTokenStream().LA(1) } { - p.SetState(3369) + p.SetState(3402) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -48797,10 +51077,20 @@ func (s *PageHeaderPropertyV3Context) ExitRule(listener antlr.ParseTreeListener) } } +func (s *PageHeaderPropertyV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitPageHeaderPropertyV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Context) { localctx = NewPageHeaderPropertyV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 384, MDLParserRULE_pageHeaderPropertyV3) - p.SetState(3398) + p.SetState(3431) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -48810,7 +51100,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex case MDLParserPARAMS: p.EnterOuterAlt(localctx, 1) { - p.SetState(3371) + p.SetState(3404) p.Match(MDLParserPARAMS) if p.HasError() { // Recognition error - abort rule @@ -48818,7 +51108,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3372) + p.SetState(3405) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -48826,7 +51116,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3373) + p.SetState(3406) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -48834,11 +51124,11 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3374) + p.SetState(3407) p.PageParameterList() } { - p.SetState(3375) + p.SetState(3408) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -48849,7 +51139,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex case MDLParserVARIABLES_KW: p.EnterOuterAlt(localctx, 2) { - p.SetState(3377) + p.SetState(3410) p.Match(MDLParserVARIABLES_KW) if p.HasError() { // Recognition error - abort rule @@ -48857,7 +51147,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3378) + p.SetState(3411) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -48865,7 +51155,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3379) + p.SetState(3412) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -48873,11 +51163,11 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3380) + p.SetState(3413) p.VariableDeclarationList() } { - p.SetState(3381) + p.SetState(3414) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -48888,7 +51178,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex case MDLParserTITLE: p.EnterOuterAlt(localctx, 3) { - p.SetState(3383) + p.SetState(3416) p.Match(MDLParserTITLE) if p.HasError() { // Recognition error - abort rule @@ -48896,7 +51186,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3384) + p.SetState(3417) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -48904,7 +51194,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3385) + p.SetState(3418) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -48915,7 +51205,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex case MDLParserLAYOUT: p.EnterOuterAlt(localctx, 4) { - p.SetState(3386) + p.SetState(3419) p.Match(MDLParserLAYOUT) if p.HasError() { // Recognition error - abort rule @@ -48923,29 +51213,29 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3387) + p.SetState(3420) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3390) + p.SetState(3423) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: { - p.SetState(3388) + p.SetState(3421) p.QualifiedName() } case MDLParserSTRING_LITERAL: { - p.SetState(3389) + p.SetState(3422) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -48961,7 +51251,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex case MDLParserURL: p.EnterOuterAlt(localctx, 5) { - p.SetState(3392) + p.SetState(3425) p.Match(MDLParserURL) if p.HasError() { // Recognition error - abort rule @@ -48969,7 +51259,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3393) + p.SetState(3426) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -48977,7 +51267,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3394) + p.SetState(3427) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -48988,7 +51278,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex case MDLParserFOLDER: p.EnterOuterAlt(localctx, 6) { - p.SetState(3395) + p.SetState(3428) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -48996,7 +51286,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3396) + p.SetState(3429) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -49004,7 +51294,7 @@ func (p *MDLParser) PageHeaderPropertyV3() (localctx IPageHeaderPropertyV3Contex } } { - p.SetState(3397) + p.SetState(3430) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -49158,6 +51448,16 @@ func (s *SnippetHeaderV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SnippetHeaderV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSnippetHeaderV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SnippetHeaderV3() (localctx ISnippetHeaderV3Context) { localctx = NewSnippetHeaderV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 386, MDLParserRULE_snippetHeaderV3) @@ -49165,7 +51465,7 @@ func (p *MDLParser) SnippetHeaderV3() (localctx ISnippetHeaderV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3400) + p.SetState(3433) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -49173,10 +51473,10 @@ func (p *MDLParser) SnippetHeaderV3() (localctx ISnippetHeaderV3Context) { } } { - p.SetState(3401) + p.SetState(3434) p.SnippetHeaderPropertyV3() } - p.SetState(3406) + p.SetState(3439) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -49185,7 +51485,7 @@ func (p *MDLParser) SnippetHeaderV3() (localctx ISnippetHeaderV3Context) { for _la == MDLParserCOMMA { { - p.SetState(3402) + p.SetState(3435) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -49193,11 +51493,11 @@ func (p *MDLParser) SnippetHeaderV3() (localctx ISnippetHeaderV3Context) { } } { - p.SetState(3403) + p.SetState(3436) p.SnippetHeaderPropertyV3() } - p.SetState(3408) + p.SetState(3441) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -49205,7 +51505,7 @@ func (p *MDLParser) SnippetHeaderV3() (localctx ISnippetHeaderV3Context) { _la = p.GetTokenStream().LA(1) } { - p.SetState(3409) + p.SetState(3442) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -49360,10 +51660,20 @@ func (s *SnippetHeaderPropertyV3Context) ExitRule(listener antlr.ParseTreeListen } } +func (s *SnippetHeaderPropertyV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSnippetHeaderPropertyV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3Context) { localctx = NewSnippetHeaderPropertyV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 388, MDLParserRULE_snippetHeaderPropertyV3) - p.SetState(3426) + p.SetState(3459) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -49373,7 +51683,7 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 case MDLParserPARAMS: p.EnterOuterAlt(localctx, 1) { - p.SetState(3411) + p.SetState(3444) p.Match(MDLParserPARAMS) if p.HasError() { // Recognition error - abort rule @@ -49381,7 +51691,7 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 } } { - p.SetState(3412) + p.SetState(3445) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -49389,7 +51699,7 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 } } { - p.SetState(3413) + p.SetState(3446) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -49397,11 +51707,11 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 } } { - p.SetState(3414) + p.SetState(3447) p.SnippetParameterList() } { - p.SetState(3415) + p.SetState(3448) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -49412,7 +51722,7 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 case MDLParserVARIABLES_KW: p.EnterOuterAlt(localctx, 2) { - p.SetState(3417) + p.SetState(3450) p.Match(MDLParserVARIABLES_KW) if p.HasError() { // Recognition error - abort rule @@ -49420,7 +51730,7 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 } } { - p.SetState(3418) + p.SetState(3451) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -49428,7 +51738,7 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 } } { - p.SetState(3419) + p.SetState(3452) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -49436,11 +51746,11 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 } } { - p.SetState(3420) + p.SetState(3453) p.VariableDeclarationList() } { - p.SetState(3421) + p.SetState(3454) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -49451,7 +51761,7 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 case MDLParserFOLDER: p.EnterOuterAlt(localctx, 3) { - p.SetState(3423) + p.SetState(3456) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -49459,7 +51769,7 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 } } { - p.SetState(3424) + p.SetState(3457) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -49467,7 +51777,7 @@ func (p *MDLParser) SnippetHeaderPropertyV3() (localctx ISnippetHeaderPropertyV3 } } { - p.SetState(3425) + p.SetState(3458) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -49644,36 +51954,46 @@ func (s *PageBodyV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *PageBodyV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitPageBodyV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) PageBodyV3() (localctx IPageBodyV3Context) { localctx = NewPageBodyV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 390, MDLParserRULE_pageBodyV3) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(3432) + p.SetState(3465) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for _la == MDLParserCOLUMN || _la == MDLParserUSE || ((int64((_la-148)) & ^0x3f) == 0 && ((int64(1)<<(_la-148))&211377350996991) != 0) || ((int64((_la-226)) & ^0x3f) == 0 && ((int64(1)<<(_la-226))&33554493) != 0) { - p.SetState(3430) + for _la == MDLParserCOLUMN || _la == MDLParserUSE || ((int64((_la-148)) & ^0x3f) == 0 && ((int64(1)<<(_la-148))&422758461436927) != 0) || ((int64((_la-227)) & ^0x3f) == 0 && ((int64(1)<<(_la-227))&134217981) != 0) { + p.SetState(3463) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { - case MDLParserCOLUMN, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserCONTAINER, MDLParserROW, MDLParserITEM, MDLParserCONTROLBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserSTATICTEXT, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserDROPDOWN, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserREFERENCESELECTOR, MDLParserCUSTOMWIDGET, MDLParserTEXTFILTER, MDLParserNUMBERFILTER, MDLParserDROPDOWNFILTER, MDLParserDATEFILTER, MDLParserFILTER, MDLParserFOOTER, MDLParserHEADER, MDLParserIMAGE, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserTEMPLATE: + case MDLParserCOLUMN, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserCONTAINER, MDLParserROW, MDLParserITEM, MDLParserCONTROLBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserSTATICTEXT, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserDROPDOWN, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserREFERENCESELECTOR, MDLParserCUSTOMWIDGET, MDLParserPLUGGABLEWIDGET, MDLParserTEXTFILTER, MDLParserNUMBERFILTER, MDLParserDROPDOWNFILTER, MDLParserDATEFILTER, MDLParserFILTER, MDLParserFOOTER, MDLParserHEADER, MDLParserIMAGE, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserTEMPLATE: { - p.SetState(3428) + p.SetState(3461) p.WidgetV3() } case MDLParserUSE: { - p.SetState(3429) + p.SetState(3462) p.UseFragmentRef() } @@ -49682,7 +52002,7 @@ func (p *MDLParser) PageBodyV3() (localctx IPageBodyV3Context) { goto errorExit } - p.SetState(3434) + p.SetState(3467) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -49826,6 +52146,16 @@ func (s *UseFragmentRefContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *UseFragmentRefContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitUseFragmentRef(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) UseFragmentRef() (localctx IUseFragmentRefContext) { localctx = NewUseFragmentRefContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 392, MDLParserRULE_useFragmentRef) @@ -49833,7 +52163,7 @@ func (p *MDLParser) UseFragmentRef() (localctx IUseFragmentRefContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3435) + p.SetState(3468) p.Match(MDLParserUSE) if p.HasError() { // Recognition error - abort rule @@ -49841,7 +52171,7 @@ func (p *MDLParser) UseFragmentRef() (localctx IUseFragmentRefContext) { } } { - p.SetState(3436) + p.SetState(3469) p.Match(MDLParserFRAGMENT) if p.HasError() { // Recognition error - abort rule @@ -49849,10 +52179,10 @@ func (p *MDLParser) UseFragmentRef() (localctx IUseFragmentRefContext) { } } { - p.SetState(3437) + p.SetState(3470) p.IdentifierOrKeyword() } - p.SetState(3440) + p.SetState(3473) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -49861,7 +52191,7 @@ func (p *MDLParser) UseFragmentRef() (localctx IUseFragmentRefContext) { if _la == MDLParserAS { { - p.SetState(3438) + p.SetState(3471) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -49869,7 +52199,7 @@ func (p *MDLParser) UseFragmentRef() (localctx IUseFragmentRefContext) { } } { - p.SetState(3439) + p.SetState(3472) p.IdentifierOrKeyword() } @@ -49900,6 +52230,9 @@ type IWidgetV3Context interface { IDENTIFIER() antlr.TerminalNode WidgetPropertiesV3() IWidgetPropertiesV3Context WidgetBodyV3() IWidgetBodyV3Context + PLUGGABLEWIDGET() antlr.TerminalNode + STRING_LITERAL() antlr.TerminalNode + CUSTOMWIDGET() antlr.TerminalNode // IsWidgetV3Context differentiates from other interfaces. IsWidgetV3Context() @@ -49989,6 +52322,18 @@ func (s *WidgetV3Context) WidgetBodyV3() IWidgetBodyV3Context { return t.(IWidgetBodyV3Context) } +func (s *WidgetV3Context) PLUGGABLEWIDGET() antlr.TerminalNode { + return s.GetToken(MDLParserPLUGGABLEWIDGET, 0) +} + +func (s *WidgetV3Context) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(MDLParserSTRING_LITERAL, 0) +} + +func (s *WidgetV3Context) CUSTOMWIDGET() antlr.TerminalNode { + return s.GetToken(MDLParserCUSTOMWIDGET, 0) +} + func (s *WidgetV3Context) GetRuleContext() antlr.RuleContext { return s } @@ -50009,51 +52354,183 @@ func (s *WidgetV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WidgetV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWidgetV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WidgetV3() (localctx IWidgetV3Context) { localctx = NewWidgetV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 394, MDLParserRULE_widgetV3) var _la int - p.EnterOuterAlt(localctx, 1) - { - p.SetState(3442) - p.WidgetTypeV3() - } - { - p.SetState(3443) - p.Match(MDLParserIDENTIFIER) - if p.HasError() { - // Recognition error - abort rule - goto errorExit - } - } - p.SetState(3445) + p.SetState(3501) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _la = p.GetTokenStream().LA(1) - if _la == MDLParserLPAREN { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 356, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) { - p.SetState(3444) - p.WidgetPropertiesV3() + p.SetState(3475) + p.WidgetTypeV3() + } + { + p.SetState(3476) + p.Match(MDLParserIDENTIFIER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3478) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit } + _la = p.GetTokenStream().LA(1) - } - p.SetState(3448) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - _la = p.GetTokenStream().LA(1) + if _la == MDLParserLPAREN { + { + p.SetState(3477) + p.WidgetPropertiesV3() + } - if _la == MDLParserLBRACE { + } + p.SetState(3481) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == MDLParserLBRACE { + { + p.SetState(3480) + p.WidgetBodyV3() + } + + } + + case 2: + p.EnterOuterAlt(localctx, 2) { - p.SetState(3447) - p.WidgetBodyV3() + p.SetState(3483) + p.Match(MDLParserPLUGGABLEWIDGET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3484) + p.Match(MDLParserSTRING_LITERAL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } + { + p.SetState(3485) + p.Match(MDLParserIDENTIFIER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3487) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == MDLParserLPAREN { + { + p.SetState(3486) + p.WidgetPropertiesV3() + } + } + p.SetState(3490) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == MDLParserLBRACE { + { + p.SetState(3489) + p.WidgetBodyV3() + } + + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3492) + p.Match(MDLParserCUSTOMWIDGET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3493) + p.Match(MDLParserSTRING_LITERAL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3494) + p.Match(MDLParserIDENTIFIER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3496) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == MDLParserLPAREN { + { + p.SetState(3495) + p.WidgetPropertiesV3() + } + + } + p.SetState(3499) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == MDLParserLBRACE { + { + p.SetState(3498) + p.WidgetBodyV3() + } + + } + + case antlr.ATNInvalidAltNumber: + goto errorExit } errorExit: @@ -50115,6 +52592,8 @@ type IWidgetTypeV3Context interface { STATICIMAGE() antlr.TerminalNode DYNAMICIMAGE() antlr.TerminalNode CUSTOMCONTAINER() antlr.TerminalNode + TABCONTAINER() antlr.TerminalNode + TABPAGE() antlr.TerminalNode GROUPBOX() antlr.TerminalNode // IsWidgetTypeV3Context differentiates from other interfaces. @@ -50305,6 +52784,14 @@ func (s *WidgetTypeV3Context) CUSTOMCONTAINER() antlr.TerminalNode { return s.GetToken(MDLParserCUSTOMCONTAINER, 0) } +func (s *WidgetTypeV3Context) TABCONTAINER() antlr.TerminalNode { + return s.GetToken(MDLParserTABCONTAINER, 0) +} + +func (s *WidgetTypeV3Context) TABPAGE() antlr.TerminalNode { + return s.GetToken(MDLParserTABPAGE, 0) +} + func (s *WidgetTypeV3Context) GROUPBOX() antlr.TerminalNode { return s.GetToken(MDLParserGROUPBOX, 0) } @@ -50329,6 +52816,16 @@ func (s *WidgetTypeV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WidgetTypeV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWidgetTypeV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WidgetTypeV3() (localctx IWidgetTypeV3Context) { localctx = NewWidgetTypeV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 396, MDLParserRULE_widgetTypeV3) @@ -50336,10 +52833,10 @@ func (p *MDLParser) WidgetTypeV3() (localctx IWidgetTypeV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3450) + p.SetState(3503) _la = p.GetTokenStream().LA(1) - if !(_la == MDLParserCOLUMN || ((int64((_la-148)) & ^0x3f) == 0 && ((int64(1)<<(_la-148))&211377350996991) != 0) || ((int64((_la-226)) & ^0x3f) == 0 && ((int64(1)<<(_la-226))&33554493) != 0)) { + if !(_la == MDLParserCOLUMN || ((int64((_la-148)) & ^0x3f) == 0 && ((int64(1)<<(_la-148))&422749871502335) != 0) || ((int64((_la-227)) & ^0x3f) == 0 && ((int64(1)<<(_la-227))&134217981) != 0)) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -50488,6 +52985,16 @@ func (s *WidgetPropertiesV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WidgetPropertiesV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWidgetPropertiesV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WidgetPropertiesV3() (localctx IWidgetPropertiesV3Context) { localctx = NewWidgetPropertiesV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 398, MDLParserRULE_widgetPropertiesV3) @@ -50495,7 +53002,7 @@ func (p *MDLParser) WidgetPropertiesV3() (localctx IWidgetPropertiesV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3452) + p.SetState(3505) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -50503,10 +53010,10 @@ func (p *MDLParser) WidgetPropertiesV3() (localctx IWidgetPropertiesV3Context) { } } { - p.SetState(3453) + p.SetState(3506) p.WidgetPropertyV3() } - p.SetState(3458) + p.SetState(3511) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -50515,7 +53022,7 @@ func (p *MDLParser) WidgetPropertiesV3() (localctx IWidgetPropertiesV3Context) { for _la == MDLParserCOMMA { { - p.SetState(3454) + p.SetState(3507) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -50523,11 +53030,11 @@ func (p *MDLParser) WidgetPropertiesV3() (localctx IWidgetPropertiesV3Context) { } } { - p.SetState(3455) + p.SetState(3508) p.WidgetPropertyV3() } - p.SetState(3460) + p.SetState(3513) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -50535,7 +53042,7 @@ func (p *MDLParser) WidgetPropertiesV3() (localctx IWidgetPropertiesV3Context) { _la = p.GetTokenStream().LA(1) } { - p.SetState(3461) + p.SetState(3514) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -50610,6 +53117,7 @@ type IWidgetPropertyV3Context interface { EDITABLE() antlr.TerminalNode TOOLTIP() antlr.TerminalNode IDENTIFIER() antlr.TerminalNode + Keyword() IKeywordContext // IsWidgetPropertyV3Context differentiates from other interfaces. IsWidgetPropertyV3Context() @@ -51011,6 +53519,22 @@ func (s *WidgetPropertyV3Context) IDENTIFIER() antlr.TerminalNode { return s.GetToken(MDLParserIDENTIFIER, 0) } +func (s *WidgetPropertyV3Context) Keyword() IKeywordContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IKeywordContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IKeywordContext) +} + func (s *WidgetPropertyV3Context) GetRuleContext() antlr.RuleContext { return s } @@ -51031,20 +53555,30 @@ func (s *WidgetPropertyV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WidgetPropertyV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWidgetPropertyV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { localctx = NewWidgetPropertyV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 400, MDLParserRULE_widgetPropertyV3) - p.SetState(3553) + p.SetState(3610) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 348, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 358, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(3463) + p.SetState(3516) p.Match(MDLParserDATASOURCE) if p.HasError() { // Recognition error - abort rule @@ -51052,7 +53586,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3464) + p.SetState(3517) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51060,14 +53594,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3465) + p.SetState(3518) p.DataSourceExprV3() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(3466) + p.SetState(3519) p.Match(MDLParserATTRIBUTE) if p.HasError() { // Recognition error - abort rule @@ -51075,7 +53609,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3467) + p.SetState(3520) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51083,14 +53617,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3468) + p.SetState(3521) p.AttributePathV3() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(3469) + p.SetState(3522) p.Match(MDLParserBINDS) if p.HasError() { // Recognition error - abort rule @@ -51098,7 +53632,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3470) + p.SetState(3523) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51106,14 +53640,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3471) + p.SetState(3524) p.AttributePathV3() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(3472) + p.SetState(3525) p.Match(MDLParserACTION) if p.HasError() { // Recognition error - abort rule @@ -51121,7 +53655,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3473) + p.SetState(3526) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51129,14 +53663,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3474) + p.SetState(3527) p.ActionExprV3() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(3475) + p.SetState(3528) p.Match(MDLParserCAPTION) if p.HasError() { // Recognition error - abort rule @@ -51144,7 +53678,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3476) + p.SetState(3529) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51152,14 +53686,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3477) + p.SetState(3530) p.StringExprV3() } case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(3478) + p.SetState(3531) p.Match(MDLParserLABEL) if p.HasError() { // Recognition error - abort rule @@ -51167,7 +53701,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3479) + p.SetState(3532) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51175,7 +53709,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3480) + p.SetState(3533) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -51186,7 +53720,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(3481) + p.SetState(3534) p.Match(MDLParserATTR) if p.HasError() { // Recognition error - abort rule @@ -51194,7 +53728,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3482) + p.SetState(3535) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51202,14 +53736,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3483) + p.SetState(3536) p.AttributePathV3() } case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(3484) + p.SetState(3537) p.Match(MDLParserCONTENT) if p.HasError() { // Recognition error - abort rule @@ -51217,7 +53751,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3485) + p.SetState(3538) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51225,14 +53759,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3486) + p.SetState(3539) p.StringExprV3() } case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(3487) + p.SetState(3540) p.Match(MDLParserRENDERMODE) if p.HasError() { // Recognition error - abort rule @@ -51240,7 +53774,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3488) + p.SetState(3541) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51248,14 +53782,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3489) + p.SetState(3542) p.RenderModeV3() } case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(3490) + p.SetState(3543) p.Match(MDLParserCONTENTPARAMS) if p.HasError() { // Recognition error - abort rule @@ -51263,7 +53797,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3491) + p.SetState(3544) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51271,14 +53805,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3492) + p.SetState(3545) p.ParamListV3() } case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(3493) + p.SetState(3546) p.Match(MDLParserCAPTIONPARAMS) if p.HasError() { // Recognition error - abort rule @@ -51286,7 +53820,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3494) + p.SetState(3547) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51294,14 +53828,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3495) + p.SetState(3548) p.ParamListV3() } case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(3496) + p.SetState(3549) p.Match(MDLParserBUTTONSTYLE) if p.HasError() { // Recognition error - abort rule @@ -51309,7 +53843,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3497) + p.SetState(3550) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51317,14 +53851,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3498) + p.SetState(3551) p.ButtonStyleV3() } case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(3499) + p.SetState(3552) p.Match(MDLParserCLASS) if p.HasError() { // Recognition error - abort rule @@ -51332,7 +53866,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3500) + p.SetState(3553) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51340,7 +53874,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3501) + p.SetState(3554) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -51351,7 +53885,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(3502) + p.SetState(3555) p.Match(MDLParserSTYLE) if p.HasError() { // Recognition error - abort rule @@ -51359,7 +53893,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3503) + p.SetState(3556) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51367,7 +53901,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3504) + p.SetState(3557) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -51378,7 +53912,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { case 15: p.EnterOuterAlt(localctx, 15) { - p.SetState(3505) + p.SetState(3558) p.Match(MDLParserDESKTOPWIDTH) if p.HasError() { // Recognition error - abort rule @@ -51386,7 +53920,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3506) + p.SetState(3559) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51394,14 +53928,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3507) + p.SetState(3560) p.DesktopWidthV3() } case 16: p.EnterOuterAlt(localctx, 16) { - p.SetState(3508) + p.SetState(3561) p.Match(MDLParserTABLETWIDTH) if p.HasError() { // Recognition error - abort rule @@ -51409,7 +53943,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3509) + p.SetState(3562) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51417,14 +53951,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3510) + p.SetState(3563) p.DesktopWidthV3() } case 17: p.EnterOuterAlt(localctx, 17) { - p.SetState(3511) + p.SetState(3564) p.Match(MDLParserPHONEWIDTH) if p.HasError() { // Recognition error - abort rule @@ -51432,7 +53966,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3512) + p.SetState(3565) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51440,14 +53974,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3513) + p.SetState(3566) p.DesktopWidthV3() } case 18: p.EnterOuterAlt(localctx, 18) { - p.SetState(3514) + p.SetState(3567) p.Match(MDLParserSELECTION) if p.HasError() { // Recognition error - abort rule @@ -51455,7 +53989,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3515) + p.SetState(3568) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51463,14 +53997,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3516) + p.SetState(3569) p.SelectionModeV3() } case 19: p.EnterOuterAlt(localctx, 19) { - p.SetState(3517) + p.SetState(3570) p.Match(MDLParserSNIPPET) if p.HasError() { // Recognition error - abort rule @@ -51478,7 +54012,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3518) + p.SetState(3571) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51486,14 +54020,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3519) + p.SetState(3572) p.QualifiedName() } case 20: p.EnterOuterAlt(localctx, 20) { - p.SetState(3520) + p.SetState(3573) p.Match(MDLParserATTRIBUTES) if p.HasError() { // Recognition error - abort rule @@ -51501,7 +54035,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3521) + p.SetState(3574) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51509,14 +54043,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3522) + p.SetState(3575) p.AttributeListV3() } case 21: p.EnterOuterAlt(localctx, 21) { - p.SetState(3523) + p.SetState(3576) p.Match(MDLParserFILTERTYPE) if p.HasError() { // Recognition error - abort rule @@ -51524,7 +54058,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3524) + p.SetState(3577) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51532,14 +54066,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3525) + p.SetState(3578) p.FilterTypeValue() } case 22: p.EnterOuterAlt(localctx, 22) { - p.SetState(3526) + p.SetState(3579) p.Match(MDLParserDESIGNPROPERTIES) if p.HasError() { // Recognition error - abort rule @@ -51547,7 +54081,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3527) + p.SetState(3580) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51555,14 +54089,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3528) + p.SetState(3581) p.DesignPropertyListV3() } case 23: p.EnterOuterAlt(localctx, 23) { - p.SetState(3529) + p.SetState(3582) p.Match(MDLParserWIDTH) if p.HasError() { // Recognition error - abort rule @@ -51570,7 +54104,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3530) + p.SetState(3583) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51578,7 +54112,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3531) + p.SetState(3584) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -51589,7 +54123,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { case 24: p.EnterOuterAlt(localctx, 24) { - p.SetState(3532) + p.SetState(3585) p.Match(MDLParserHEIGHT) if p.HasError() { // Recognition error - abort rule @@ -51597,7 +54131,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3533) + p.SetState(3586) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51605,7 +54139,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3534) + p.SetState(3587) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -51616,7 +54150,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { case 25: p.EnterOuterAlt(localctx, 25) { - p.SetState(3535) + p.SetState(3588) p.Match(MDLParserVISIBLE) if p.HasError() { // Recognition error - abort rule @@ -51624,7 +54158,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3536) + p.SetState(3589) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51632,14 +54166,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3537) + p.SetState(3590) p.XpathConstraint() } case 26: p.EnterOuterAlt(localctx, 26) { - p.SetState(3538) + p.SetState(3591) p.Match(MDLParserVISIBLE) if p.HasError() { // Recognition error - abort rule @@ -51647,7 +54181,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3539) + p.SetState(3592) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51655,14 +54189,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3540) + p.SetState(3593) p.PropertyValueV3() } case 27: p.EnterOuterAlt(localctx, 27) { - p.SetState(3541) + p.SetState(3594) p.Match(MDLParserEDITABLE) if p.HasError() { // Recognition error - abort rule @@ -51670,7 +54204,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3542) + p.SetState(3595) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51678,14 +54212,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3543) + p.SetState(3596) p.XpathConstraint() } case 28: p.EnterOuterAlt(localctx, 28) { - p.SetState(3544) + p.SetState(3597) p.Match(MDLParserEDITABLE) if p.HasError() { // Recognition error - abort rule @@ -51693,7 +54227,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3545) + p.SetState(3598) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51701,14 +54235,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3546) + p.SetState(3599) p.PropertyValueV3() } case 29: p.EnterOuterAlt(localctx, 29) { - p.SetState(3547) + p.SetState(3600) p.Match(MDLParserTOOLTIP) if p.HasError() { // Recognition error - abort rule @@ -51716,7 +54250,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3548) + p.SetState(3601) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51724,14 +54258,14 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3549) + p.SetState(3602) p.PropertyValueV3() } case 30: p.EnterOuterAlt(localctx, 30) { - p.SetState(3550) + p.SetState(3603) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -51739,7 +54273,7 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3551) + p.SetState(3604) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -51747,7 +54281,26 @@ func (p *MDLParser) WidgetPropertyV3() (localctx IWidgetPropertyV3Context) { } } { - p.SetState(3552) + p.SetState(3605) + p.PropertyValueV3() + } + + case 31: + p.EnterOuterAlt(localctx, 31) + { + p.SetState(3606) + p.Keyword() + } + { + p.SetState(3607) + p.Match(MDLParserCOLON) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3608) p.PropertyValueV3() } @@ -51848,6 +54401,16 @@ func (s *FilterTypeValueContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *FilterTypeValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitFilterTypeValue(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) FilterTypeValue() (localctx IFilterTypeValueContext) { localctx = NewFilterTypeValueContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 402, MDLParserRULE_filterTypeValue) @@ -51855,7 +54418,7 @@ func (p *MDLParser) FilterTypeValue() (localctx IFilterTypeValueContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3555) + p.SetState(3612) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserCONTAINS || _la == MDLParserEMPTY || _la == MDLParserIDENTIFIER) { @@ -52007,6 +54570,16 @@ func (s *AttributeListV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AttributeListV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAttributeListV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AttributeListV3() (localctx IAttributeListV3Context) { localctx = NewAttributeListV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 404, MDLParserRULE_attributeListV3) @@ -52014,7 +54587,7 @@ func (p *MDLParser) AttributeListV3() (localctx IAttributeListV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3557) + p.SetState(3614) p.Match(MDLParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -52022,10 +54595,10 @@ func (p *MDLParser) AttributeListV3() (localctx IAttributeListV3Context) { } } { - p.SetState(3558) + p.SetState(3615) p.QualifiedName() } - p.SetState(3563) + p.SetState(3620) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52034,7 +54607,7 @@ func (p *MDLParser) AttributeListV3() (localctx IAttributeListV3Context) { for _la == MDLParserCOMMA { { - p.SetState(3559) + p.SetState(3616) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -52042,11 +54615,11 @@ func (p *MDLParser) AttributeListV3() (localctx IAttributeListV3Context) { } } { - p.SetState(3560) + p.SetState(3617) p.QualifiedName() } - p.SetState(3565) + p.SetState(3622) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52054,7 +54627,7 @@ func (p *MDLParser) AttributeListV3() (localctx IAttributeListV3Context) { _la = p.GetTokenStream().LA(1) } { - p.SetState(3566) + p.SetState(3623) p.Match(MDLParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -52397,6 +54970,16 @@ func (s *DataSourceExprV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DataSourceExprV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDataSourceExprV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { localctx = NewDataSourceExprV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 406, MDLParserRULE_dataSourceExprV3) @@ -52404,7 +54987,7 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { var _alt int - p.SetState(3614) + p.SetState(3671) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52414,7 +54997,7 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { case MDLParserVARIABLE: p.EnterOuterAlt(localctx, 1) { - p.SetState(3568) + p.SetState(3625) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -52425,19 +55008,19 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { case MDLParserDATABASE: p.EnterOuterAlt(localctx, 2) { - p.SetState(3569) + p.SetState(3626) p.Match(MDLParserDATABASE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3571) + p.SetState(3628) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 350, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 360, p.GetParserRuleContext()) == 1 { { - p.SetState(3570) + p.SetState(3627) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -52449,10 +55032,10 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { goto errorExit } { - p.SetState(3573) + p.SetState(3630) p.QualifiedName() } - p.SetState(3587) + p.SetState(3644) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52461,14 +55044,14 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { if _la == MDLParserWHERE { { - p.SetState(3574) + p.SetState(3631) p.Match(MDLParserWHERE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3585) + p.SetState(3642) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52477,10 +55060,10 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { switch p.GetTokenStream().LA(1) { case MDLParserLBRACKET: { - p.SetState(3575) + p.SetState(3632) p.XpathConstraint() } - p.SetState(3581) + p.SetState(3638) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52489,15 +55072,15 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { for _la == MDLParserAND || _la == MDLParserOR { { - p.SetState(3576) + p.SetState(3633) p.AndOrXpath() } { - p.SetState(3577) + p.SetState(3634) p.XpathConstraint() } - p.SetState(3583) + p.SetState(3640) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52505,9 +55088,9 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { _la = p.GetTokenStream().LA(1) } - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserCASE, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserHEAD, MDLParserTAIL, MDLParserFIND, MDLParserSORT, MDLParserUNION, MDLParserINTERSECT, MDLParserSUBTRACT, MDLParserCONTAINS, MDLParserAVERAGE, MDLParserMINIMUM, MDLParserMAXIMUM, MDLParserLIST, MDLParserEQUALS_OP, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserEMPTY, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserFILTER, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserLENGTH, MDLParserTRIM, MDLParserCAST, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserEXISTS, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserPLUS, MDLParserMINUS, MDLParserMOD, MDLParserDIV, MDLParserLPAREN, MDLParserMENDIX_TOKEN, MDLParserSTRING_LITERAL, MDLParserNUMBER_LITERAL, MDLParserVARIABLE, MDLParserIDENTIFIER, MDLParserHYPHENATED_ID, MDLParserQUOTED_IDENTIFIER: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserCASE, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserHEAD, MDLParserTAIL, MDLParserFIND, MDLParserSORT, MDLParserUNION, MDLParserINTERSECT, MDLParserSUBTRACT, MDLParserCONTAINS, MDLParserAVERAGE, MDLParserMINIMUM, MDLParserMAXIMUM, MDLParserLIST, MDLParserEQUALS_OP, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserEMPTY, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserFILTER, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserLENGTH, MDLParserTRIM, MDLParserCAST, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserEXISTS, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserPLUS, MDLParserMINUS, MDLParserMOD, MDLParserDIV, MDLParserLPAREN, MDLParserMENDIX_TOKEN, MDLParserSTRING_LITERAL, MDLParserNUMBER_LITERAL, MDLParserVARIABLE, MDLParserIDENTIFIER, MDLParserHYPHENATED_ID, MDLParserQUOTED_IDENTIFIER: { - p.SetState(3584) + p.SetState(3641) p.Expression() } @@ -52517,7 +55100,7 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { } } - p.SetState(3598) + p.SetState(3655) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52526,7 +55109,7 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { if _la == MDLParserSORT_BY { { - p.SetState(3589) + p.SetState(3646) p.Match(MDLParserSORT_BY) if p.HasError() { // Recognition error - abort rule @@ -52534,22 +55117,22 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { } } { - p.SetState(3590) + p.SetState(3647) p.SortColumn() } - p.SetState(3595) + p.SetState(3652) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 354, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 364, p.GetParserRuleContext()) if p.HasError() { goto errorExit } for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(3591) + p.SetState(3648) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -52557,17 +55140,17 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { } } { - p.SetState(3592) + p.SetState(3649) p.SortColumn() } } - p.SetState(3597) + p.SetState(3654) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 354, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 364, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -52578,7 +55161,7 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { case MDLParserMICROFLOW: p.EnterOuterAlt(localctx, 3) { - p.SetState(3600) + p.SetState(3657) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -52586,10 +55169,10 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { } } { - p.SetState(3601) + p.SetState(3658) p.QualifiedName() } - p.SetState(3603) + p.SetState(3660) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52598,7 +55181,7 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { if _la == MDLParserLPAREN { { - p.SetState(3602) + p.SetState(3659) p.MicroflowArgsV3() } @@ -52607,7 +55190,7 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { case MDLParserNANOFLOW: p.EnterOuterAlt(localctx, 4) { - p.SetState(3605) + p.SetState(3662) p.Match(MDLParserNANOFLOW) if p.HasError() { // Recognition error - abort rule @@ -52615,10 +55198,10 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { } } { - p.SetState(3606) + p.SetState(3663) p.QualifiedName() } - p.SetState(3608) + p.SetState(3665) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52627,7 +55210,7 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { if _la == MDLParserLPAREN { { - p.SetState(3607) + p.SetState(3664) p.MicroflowArgsV3() } @@ -52636,7 +55219,7 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { case MDLParserASSOCIATION: p.EnterOuterAlt(localctx, 5) { - p.SetState(3610) + p.SetState(3667) p.Match(MDLParserASSOCIATION) if p.HasError() { // Recognition error - abort rule @@ -52644,14 +55227,14 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { } } { - p.SetState(3611) + p.SetState(3668) p.AttributePathV3() } case MDLParserSELECTION: p.EnterOuterAlt(localctx, 6) { - p.SetState(3612) + p.SetState(3669) p.Match(MDLParserSELECTION) if p.HasError() { // Recognition error - abort rule @@ -52659,7 +55242,7 @@ func (p *MDLParser) DataSourceExprV3() (localctx IDataSourceExprV3Context) { } } { - p.SetState(3613) + p.SetState(3670) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -52866,12 +55449,22 @@ func (s *ActionExprV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ActionExprV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitActionExprV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { localctx = NewActionExprV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 408, MDLParserRULE_actionExprV3) var _la int - p.SetState(3654) + p.SetState(3711) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52881,14 +55474,14 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserSAVE_CHANGES: p.EnterOuterAlt(localctx, 1) { - p.SetState(3616) + p.SetState(3673) p.Match(MDLParserSAVE_CHANGES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3618) + p.SetState(3675) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52897,7 +55490,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { if _la == MDLParserCLOSE_PAGE { { - p.SetState(3617) + p.SetState(3674) p.Match(MDLParserCLOSE_PAGE) if p.HasError() { // Recognition error - abort rule @@ -52910,14 +55503,14 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserCANCEL_CHANGES: p.EnterOuterAlt(localctx, 2) { - p.SetState(3620) + p.SetState(3677) p.Match(MDLParserCANCEL_CHANGES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3622) + p.SetState(3679) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52926,7 +55519,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { if _la == MDLParserCLOSE_PAGE { { - p.SetState(3621) + p.SetState(3678) p.Match(MDLParserCLOSE_PAGE) if p.HasError() { // Recognition error - abort rule @@ -52939,7 +55532,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserCLOSE_PAGE: p.EnterOuterAlt(localctx, 3) { - p.SetState(3624) + p.SetState(3681) p.Match(MDLParserCLOSE_PAGE) if p.HasError() { // Recognition error - abort rule @@ -52950,7 +55543,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserDELETE_OBJECT: p.EnterOuterAlt(localctx, 4) { - p.SetState(3625) + p.SetState(3682) p.Match(MDLParserDELETE_OBJECT) if p.HasError() { // Recognition error - abort rule @@ -52961,14 +55554,14 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserDELETE: p.EnterOuterAlt(localctx, 5) { - p.SetState(3626) + p.SetState(3683) p.Match(MDLParserDELETE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3628) + p.SetState(3685) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -52977,7 +55570,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { if _la == MDLParserCLOSE_PAGE { { - p.SetState(3627) + p.SetState(3684) p.Match(MDLParserCLOSE_PAGE) if p.HasError() { // Recognition error - abort rule @@ -52990,7 +55583,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserCREATE_OBJECT: p.EnterOuterAlt(localctx, 6) { - p.SetState(3630) + p.SetState(3687) p.Match(MDLParserCREATE_OBJECT) if p.HasError() { // Recognition error - abort rule @@ -52998,10 +55591,10 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { } } { - p.SetState(3631) + p.SetState(3688) p.QualifiedName() } - p.SetState(3634) + p.SetState(3691) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53010,7 +55603,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { if _la == MDLParserTHEN { { - p.SetState(3632) + p.SetState(3689) p.Match(MDLParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -53018,7 +55611,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { } } { - p.SetState(3633) + p.SetState(3690) p.ActionExprV3() } @@ -53027,7 +55620,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserSHOW_PAGE: p.EnterOuterAlt(localctx, 7) { - p.SetState(3636) + p.SetState(3693) p.Match(MDLParserSHOW_PAGE) if p.HasError() { // Recognition error - abort rule @@ -53035,10 +55628,10 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { } } { - p.SetState(3637) + p.SetState(3694) p.QualifiedName() } - p.SetState(3639) + p.SetState(3696) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53047,7 +55640,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { if _la == MDLParserLPAREN { { - p.SetState(3638) + p.SetState(3695) p.MicroflowArgsV3() } @@ -53056,7 +55649,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserMICROFLOW: p.EnterOuterAlt(localctx, 8) { - p.SetState(3641) + p.SetState(3698) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -53064,10 +55657,10 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { } } { - p.SetState(3642) + p.SetState(3699) p.QualifiedName() } - p.SetState(3644) + p.SetState(3701) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53076,7 +55669,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { if _la == MDLParserLPAREN { { - p.SetState(3643) + p.SetState(3700) p.MicroflowArgsV3() } @@ -53085,7 +55678,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserNANOFLOW: p.EnterOuterAlt(localctx, 9) { - p.SetState(3646) + p.SetState(3703) p.Match(MDLParserNANOFLOW) if p.HasError() { // Recognition error - abort rule @@ -53093,10 +55686,10 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { } } { - p.SetState(3647) + p.SetState(3704) p.QualifiedName() } - p.SetState(3649) + p.SetState(3706) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53105,7 +55698,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { if _la == MDLParserLPAREN { { - p.SetState(3648) + p.SetState(3705) p.MicroflowArgsV3() } @@ -53114,7 +55707,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserOPEN_LINK: p.EnterOuterAlt(localctx, 10) { - p.SetState(3651) + p.SetState(3708) p.Match(MDLParserOPEN_LINK) if p.HasError() { // Recognition error - abort rule @@ -53122,7 +55715,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { } } { - p.SetState(3652) + p.SetState(3709) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -53133,7 +55726,7 @@ func (p *MDLParser) ActionExprV3() (localctx IActionExprV3Context) { case MDLParserSIGN_OUT: p.EnterOuterAlt(localctx, 11) { - p.SetState(3653) + p.SetState(3710) p.Match(MDLParserSIGN_OUT) if p.HasError() { // Recognition error - abort rule @@ -53287,6 +55880,16 @@ func (s *MicroflowArgsV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *MicroflowArgsV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMicroflowArgsV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MicroflowArgsV3() (localctx IMicroflowArgsV3Context) { localctx = NewMicroflowArgsV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 410, MDLParserRULE_microflowArgsV3) @@ -53294,7 +55897,7 @@ func (p *MDLParser) MicroflowArgsV3() (localctx IMicroflowArgsV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3656) + p.SetState(3713) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -53302,10 +55905,10 @@ func (p *MDLParser) MicroflowArgsV3() (localctx IMicroflowArgsV3Context) { } } { - p.SetState(3657) + p.SetState(3714) p.MicroflowArgV3() } - p.SetState(3662) + p.SetState(3719) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53314,7 +55917,7 @@ func (p *MDLParser) MicroflowArgsV3() (localctx IMicroflowArgsV3Context) { for _la == MDLParserCOMMA { { - p.SetState(3658) + p.SetState(3715) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -53322,11 +55925,11 @@ func (p *MDLParser) MicroflowArgsV3() (localctx IMicroflowArgsV3Context) { } } { - p.SetState(3659) + p.SetState(3716) p.MicroflowArgV3() } - p.SetState(3664) + p.SetState(3721) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53334,7 +55937,7 @@ func (p *MDLParser) MicroflowArgsV3() (localctx IMicroflowArgsV3Context) { _la = p.GetTokenStream().LA(1) } { - p.SetState(3665) + p.SetState(3722) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -53457,10 +56060,20 @@ func (s *MicroflowArgV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *MicroflowArgV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMicroflowArgV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MicroflowArgV3() (localctx IMicroflowArgV3Context) { localctx = NewMicroflowArgV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 412, MDLParserRULE_microflowArgV3) - p.SetState(3673) + p.SetState(3730) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53470,7 +56083,7 @@ func (p *MDLParser) MicroflowArgV3() (localctx IMicroflowArgV3Context) { case MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(3667) + p.SetState(3724) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -53478,7 +56091,7 @@ func (p *MDLParser) MicroflowArgV3() (localctx IMicroflowArgV3Context) { } } { - p.SetState(3668) + p.SetState(3725) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -53486,14 +56099,14 @@ func (p *MDLParser) MicroflowArgV3() (localctx IMicroflowArgV3Context) { } } { - p.SetState(3669) + p.SetState(3726) p.Expression() } case MDLParserVARIABLE: p.EnterOuterAlt(localctx, 2) { - p.SetState(3670) + p.SetState(3727) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -53501,7 +56114,7 @@ func (p *MDLParser) MicroflowArgV3() (localctx IMicroflowArgV3Context) { } } { - p.SetState(3671) + p.SetState(3728) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -53509,7 +56122,7 @@ func (p *MDLParser) MicroflowArgV3() (localctx IMicroflowArgV3Context) { } } { - p.SetState(3672) + p.SetState(3729) p.Expression() } @@ -53669,13 +56282,23 @@ func (s *AttributePathV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AttributePathV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAttributePathV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AttributePathV3() (localctx IAttributePathV3Context) { localctx = NewAttributePathV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 414, MDLParserRULE_attributePathV3) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(3678) + p.SetState(3735) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53684,7 +56307,7 @@ func (p *MDLParser) AttributePathV3() (localctx IAttributePathV3Context) { switch p.GetTokenStream().LA(1) { case MDLParserIDENTIFIER: { - p.SetState(3675) + p.SetState(3732) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -53694,7 +56317,7 @@ func (p *MDLParser) AttributePathV3() (localctx IAttributePathV3Context) { case MDLParserQUOTED_IDENTIFIER: { - p.SetState(3676) + p.SetState(3733) p.Match(MDLParserQUOTED_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -53702,9 +56325,9 @@ func (p *MDLParser) AttributePathV3() (localctx IAttributePathV3Context) { } } - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV: { - p.SetState(3677) + p.SetState(3734) p.Keyword() } @@ -53712,7 +56335,7 @@ func (p *MDLParser) AttributePathV3() (localctx IAttributePathV3Context) { p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(3688) + p.SetState(3745) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53721,14 +56344,14 @@ func (p *MDLParser) AttributePathV3() (localctx IAttributePathV3Context) { for _la == MDLParserSLASH { { - p.SetState(3680) + p.SetState(3737) p.Match(MDLParserSLASH) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3684) + p.SetState(3741) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53737,7 +56360,7 @@ func (p *MDLParser) AttributePathV3() (localctx IAttributePathV3Context) { switch p.GetTokenStream().LA(1) { case MDLParserIDENTIFIER: { - p.SetState(3681) + p.SetState(3738) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -53747,7 +56370,7 @@ func (p *MDLParser) AttributePathV3() (localctx IAttributePathV3Context) { case MDLParserQUOTED_IDENTIFIER: { - p.SetState(3682) + p.SetState(3739) p.Match(MDLParserQUOTED_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -53755,9 +56378,9 @@ func (p *MDLParser) AttributePathV3() (localctx IAttributePathV3Context) { } } - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV: { - p.SetState(3683) + p.SetState(3740) p.Keyword() } @@ -53766,7 +56389,7 @@ func (p *MDLParser) AttributePathV3() (localctx IAttributePathV3Context) { goto errorExit } - p.SetState(3690) + p.SetState(3747) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53906,12 +56529,22 @@ func (s *StringExprV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *StringExprV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitStringExprV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) StringExprV3() (localctx IStringExprV3Context) { localctx = NewStringExprV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 416, MDLParserRULE_stringExprV3) var _la int - p.SetState(3701) + p.SetState(3758) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53921,7 +56554,7 @@ func (p *MDLParser) StringExprV3() (localctx IStringExprV3Context) { case MDLParserSTRING_LITERAL: p.EnterOuterAlt(localctx, 1) { - p.SetState(3691) + p.SetState(3748) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -53929,24 +56562,24 @@ func (p *MDLParser) StringExprV3() (localctx IStringExprV3Context) { } } - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(3692) + p.SetState(3749) p.AttributePathV3() } case MDLParserVARIABLE: p.EnterOuterAlt(localctx, 3) { - p.SetState(3693) + p.SetState(3750) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3699) + p.SetState(3756) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53955,14 +56588,14 @@ func (p *MDLParser) StringExprV3() (localctx IStringExprV3Context) { if _la == MDLParserDOT { { - p.SetState(3694) + p.SetState(3751) p.Match(MDLParserDOT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3697) + p.SetState(3754) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -53971,7 +56604,7 @@ func (p *MDLParser) StringExprV3() (localctx IStringExprV3Context) { switch p.GetTokenStream().LA(1) { case MDLParserIDENTIFIER: { - p.SetState(3695) + p.SetState(3752) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -53979,9 +56612,9 @@ func (p *MDLParser) StringExprV3() (localctx IStringExprV3Context) { } } - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV: { - p.SetState(3696) + p.SetState(3753) p.Keyword() } @@ -54138,6 +56771,16 @@ func (s *ParamListV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ParamListV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitParamListV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ParamListV3() (localctx IParamListV3Context) { localctx = NewParamListV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 418, MDLParserRULE_paramListV3) @@ -54145,7 +56788,7 @@ func (p *MDLParser) ParamListV3() (localctx IParamListV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3703) + p.SetState(3760) p.Match(MDLParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -54153,10 +56796,10 @@ func (p *MDLParser) ParamListV3() (localctx IParamListV3Context) { } } { - p.SetState(3704) + p.SetState(3761) p.ParamAssignmentV3() } - p.SetState(3709) + p.SetState(3766) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -54165,7 +56808,7 @@ func (p *MDLParser) ParamListV3() (localctx IParamListV3Context) { for _la == MDLParserCOMMA { { - p.SetState(3705) + p.SetState(3762) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -54173,11 +56816,11 @@ func (p *MDLParser) ParamListV3() (localctx IParamListV3Context) { } } { - p.SetState(3706) + p.SetState(3763) p.ParamAssignmentV3() } - p.SetState(3711) + p.SetState(3768) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -54185,7 +56828,7 @@ func (p *MDLParser) ParamListV3() (localctx IParamListV3Context) { _la = p.GetTokenStream().LA(1) } { - p.SetState(3712) + p.SetState(3769) p.Match(MDLParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -54308,12 +56951,22 @@ func (s *ParamAssignmentV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ParamAssignmentV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitParamAssignmentV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ParamAssignmentV3() (localctx IParamAssignmentV3Context) { localctx = NewParamAssignmentV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 420, MDLParserRULE_paramAssignmentV3) p.EnterOuterAlt(localctx, 1) { - p.SetState(3714) + p.SetState(3771) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -54321,7 +56974,7 @@ func (p *MDLParser) ParamAssignmentV3() (localctx IParamAssignmentV3Context) { } } { - p.SetState(3715) + p.SetState(3772) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -54329,7 +56982,7 @@ func (p *MDLParser) ParamAssignmentV3() (localctx IParamAssignmentV3Context) { } } { - p.SetState(3716) + p.SetState(3773) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -54337,7 +56990,7 @@ func (p *MDLParser) ParamAssignmentV3() (localctx IParamAssignmentV3Context) { } } { - p.SetState(3717) + p.SetState(3774) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -54345,7 +56998,7 @@ func (p *MDLParser) ParamAssignmentV3() (localctx IParamAssignmentV3Context) { } } { - p.SetState(3718) + p.SetState(3775) p.Expression() } @@ -54472,6 +57125,16 @@ func (s *RenderModeV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RenderModeV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRenderModeV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RenderModeV3() (localctx IRenderModeV3Context) { localctx = NewRenderModeV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 422, MDLParserRULE_renderModeV3) @@ -54479,10 +57142,10 @@ func (p *MDLParser) RenderModeV3() (localctx IRenderModeV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3720) + p.SetState(3777) _la = p.GetTokenStream().LA(1) - if !(((int64((_la-255)) & ^0x3f) == 0 && ((int64(1)<<(_la-255))&127) != 0) || _la == MDLParserTEXT || _la == MDLParserIDENTIFIER) { + if !(((int64((_la-258)) & ^0x3f) == 0 && ((int64(1)<<(_la-258))&127) != 0) || _la == MDLParserTEXT || _la == MDLParserIDENTIFIER) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -54613,6 +57276,16 @@ func (s *ButtonStyleV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ButtonStyleV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitButtonStyleV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ButtonStyleV3() (localctx IButtonStyleV3Context) { localctx = NewButtonStyleV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 424, MDLParserRULE_buttonStyleV3) @@ -54620,10 +57293,10 @@ func (p *MDLParser) ButtonStyleV3() (localctx IButtonStyleV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3722) + p.SetState(3779) _la = p.GetTokenStream().LA(1) - if !(_la == MDLParserINFO || _la == MDLParserWARNING || ((int64((_la-246)) & ^0x3f) == 0 && ((int64(1)<<(_la-246))&562949953421343) != 0) || _la == MDLParserIDENTIFIER) { + if !(_la == MDLParserINFO || _la == MDLParserWARNING || ((int64((_la-249)) & ^0x3f) == 0 && ((int64(1)<<(_la-249))&562949953421343) != 0) || _la == MDLParserIDENTIFIER) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -54719,6 +57392,16 @@ func (s *DesktopWidthV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DesktopWidthV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDesktopWidthV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DesktopWidthV3() (localctx IDesktopWidthV3Context) { localctx = NewDesktopWidthV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 426, MDLParserRULE_desktopWidthV3) @@ -54726,7 +57409,7 @@ func (p *MDLParser) DesktopWidthV3() (localctx IDesktopWidthV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3724) + p.SetState(3781) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserAUTOFILL || _la == MDLParserNUMBER_LITERAL) { @@ -54830,6 +57513,16 @@ func (s *SelectionModeV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SelectionModeV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSelectionModeV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SelectionModeV3() (localctx ISelectionModeV3Context) { localctx = NewSelectionModeV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 428, MDLParserRULE_selectionModeV3) @@ -54837,10 +57530,10 @@ func (p *MDLParser) SelectionModeV3() (localctx ISelectionModeV3Context) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3726) + p.SetState(3783) _la = p.GetTokenStream().LA(1) - if !((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&7) != 0) { + if !((int64((_la-422)) & ^0x3f) == 0 && ((int64(1)<<(_la-422))&7) != 0) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -55068,22 +57761,32 @@ func (s *PropertyValueV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *PropertyValueV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitPropertyValueV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { localctx = NewPropertyValueV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 430, MDLParserRULE_propertyValueV3) var _la int - p.SetState(3751) + p.SetState(3808) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 378, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 388, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(3728) + p.SetState(3785) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -55094,7 +57797,7 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(3729) + p.SetState(3786) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -55105,21 +57808,21 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(3730) + p.SetState(3787) p.BooleanLiteral() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(3731) + p.SetState(3788) p.QualifiedName() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(3732) + p.SetState(3789) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -55130,7 +57833,7 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(3733) + p.SetState(3790) p.Match(MDLParserH1) if p.HasError() { // Recognition error - abort rule @@ -55141,7 +57844,7 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(3734) + p.SetState(3791) p.Match(MDLParserH2) if p.HasError() { // Recognition error - abort rule @@ -55152,7 +57855,7 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(3735) + p.SetState(3792) p.Match(MDLParserH3) if p.HasError() { // Recognition error - abort rule @@ -55163,7 +57866,7 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(3736) + p.SetState(3793) p.Match(MDLParserH4) if p.HasError() { // Recognition error - abort rule @@ -55174,7 +57877,7 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(3737) + p.SetState(3794) p.Match(MDLParserH5) if p.HasError() { // Recognition error - abort rule @@ -55185,7 +57888,7 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(3738) + p.SetState(3795) p.Match(MDLParserH6) if p.HasError() { // Recognition error - abort rule @@ -55196,26 +57899,26 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(3739) + p.SetState(3796) p.Match(MDLParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3748) + p.SetState(3805) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&-19241592737017865) != 0) || ((int64((_la-129)) & ^0x3f) == 0 && ((int64(1)<<(_la-129))&-3673688525704003857) != 0) || ((int64((_la-193)) & ^0x3f) == 0 && ((int64(1)<<(_la-193))&355785462406692879) != 0) || ((int64((_la-262)) & ^0x3f) == 0 && ((int64(1)<<(_la-262))&-494781308354049) != 0) || ((int64((_la-326)) & ^0x3f) == 0 && ((int64(1)<<(_la-326))&-576462951326682881) != 0) || ((int64((_la-390)) & ^0x3f) == 0 && ((int64(1)<<(_la-390))&-99506071046657) != 0) || ((int64((_la-454)) & ^0x3f) == 0 && ((int64(1)<<(_la-454))&-360278323576668161) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&-19241592737017865) != 0) || ((int64((_la-129)) & ^0x3f) == 0 && ((int64(1)<<(_la-129))&-7348625821638328593) != 0) || ((int64((_la-193)) & ^0x3f) == 0 && ((int64(1)<<(_la-193))&2846283745256767519) != 0) || ((int64((_la-265)) & ^0x3f) == 0 && ((int64(1)<<(_la-265))&-494781308354049) != 0) || ((int64((_la-329)) & ^0x3f) == 0 && ((int64(1)<<(_la-329))&-576462951326682881) != 0) || ((int64((_la-393)) & ^0x3f) == 0 && ((int64(1)<<(_la-393))&-99506071046657) != 0) || ((int64((_la-457)) & ^0x3f) == 0 && ((int64(1)<<(_la-457))&-360278323576668161) != 0) { { - p.SetState(3740) + p.SetState(3797) p.Expression() } - p.SetState(3745) + p.SetState(3802) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -55224,7 +57927,7 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { for _la == MDLParserCOMMA { { - p.SetState(3741) + p.SetState(3798) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -55232,11 +57935,11 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { } } { - p.SetState(3742) + p.SetState(3799) p.Expression() } - p.SetState(3747) + p.SetState(3804) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -55246,7 +57949,7 @@ func (p *MDLParser) PropertyValueV3() (localctx IPropertyValueV3Context) { } { - p.SetState(3750) + p.SetState(3807) p.Match(MDLParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -55399,22 +58102,32 @@ func (s *DesignPropertyListV3Context) ExitRule(listener antlr.ParseTreeListener) } } +func (s *DesignPropertyListV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDesignPropertyListV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DesignPropertyListV3() (localctx IDesignPropertyListV3Context) { localctx = NewDesignPropertyListV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 432, MDLParserRULE_designPropertyListV3) var _la int - p.SetState(3766) + p.SetState(3823) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 380, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 390, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(3753) + p.SetState(3810) p.Match(MDLParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -55422,10 +58135,10 @@ func (p *MDLParser) DesignPropertyListV3() (localctx IDesignPropertyListV3Contex } } { - p.SetState(3754) + p.SetState(3811) p.DesignPropertyEntryV3() } - p.SetState(3759) + p.SetState(3816) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -55434,7 +58147,7 @@ func (p *MDLParser) DesignPropertyListV3() (localctx IDesignPropertyListV3Contex for _la == MDLParserCOMMA { { - p.SetState(3755) + p.SetState(3812) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -55442,11 +58155,11 @@ func (p *MDLParser) DesignPropertyListV3() (localctx IDesignPropertyListV3Contex } } { - p.SetState(3756) + p.SetState(3813) p.DesignPropertyEntryV3() } - p.SetState(3761) + p.SetState(3818) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -55454,7 +58167,7 @@ func (p *MDLParser) DesignPropertyListV3() (localctx IDesignPropertyListV3Contex _la = p.GetTokenStream().LA(1) } { - p.SetState(3762) + p.SetState(3819) p.Match(MDLParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -55465,7 +58178,7 @@ func (p *MDLParser) DesignPropertyListV3() (localctx IDesignPropertyListV3Contex case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(3764) + p.SetState(3821) p.Match(MDLParserLBRACKET) if p.HasError() { // Recognition error - abort rule @@ -55473,7 +58186,7 @@ func (p *MDLParser) DesignPropertyListV3() (localctx IDesignPropertyListV3Contex } } { - p.SetState(3765) + p.SetState(3822) p.Match(MDLParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -55588,20 +58301,30 @@ func (s *DesignPropertyEntryV3Context) ExitRule(listener antlr.ParseTreeListener } } +func (s *DesignPropertyEntryV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDesignPropertyEntryV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DesignPropertyEntryV3() (localctx IDesignPropertyEntryV3Context) { localctx = NewDesignPropertyEntryV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 434, MDLParserRULE_designPropertyEntryV3) - p.SetState(3777) + p.SetState(3834) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 381, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 391, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(3768) + p.SetState(3825) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -55609,7 +58332,7 @@ func (p *MDLParser) DesignPropertyEntryV3() (localctx IDesignPropertyEntryV3Cont } } { - p.SetState(3769) + p.SetState(3826) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -55617,7 +58340,7 @@ func (p *MDLParser) DesignPropertyEntryV3() (localctx IDesignPropertyEntryV3Cont } } { - p.SetState(3770) + p.SetState(3827) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -55628,7 +58351,7 @@ func (p *MDLParser) DesignPropertyEntryV3() (localctx IDesignPropertyEntryV3Cont case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(3771) + p.SetState(3828) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -55636,7 +58359,7 @@ func (p *MDLParser) DesignPropertyEntryV3() (localctx IDesignPropertyEntryV3Cont } } { - p.SetState(3772) + p.SetState(3829) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -55644,7 +58367,7 @@ func (p *MDLParser) DesignPropertyEntryV3() (localctx IDesignPropertyEntryV3Cont } } { - p.SetState(3773) + p.SetState(3830) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -55655,7 +58378,7 @@ func (p *MDLParser) DesignPropertyEntryV3() (localctx IDesignPropertyEntryV3Cont case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(3774) + p.SetState(3831) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -55663,7 +58386,7 @@ func (p *MDLParser) DesignPropertyEntryV3() (localctx IDesignPropertyEntryV3Cont } } { - p.SetState(3775) + p.SetState(3832) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -55671,7 +58394,7 @@ func (p *MDLParser) DesignPropertyEntryV3() (localctx IDesignPropertyEntryV3Cont } } { - p.SetState(3776) + p.SetState(3833) p.Match(MDLParserOFF) if p.HasError() { // Recognition error - abort rule @@ -55788,12 +58511,22 @@ func (s *WidgetBodyV3Context) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WidgetBodyV3Context) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWidgetBodyV3(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WidgetBodyV3() (localctx IWidgetBodyV3Context) { localctx = NewWidgetBodyV3Context(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 436, MDLParserRULE_widgetBodyV3) p.EnterOuterAlt(localctx, 1) { - p.SetState(3779) + p.SetState(3836) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -55801,11 +58534,11 @@ func (p *MDLParser) WidgetBodyV3() (localctx IWidgetBodyV3Context) { } } { - p.SetState(3780) + p.SetState(3837) p.PageBodyV3() } { - p.SetState(3781) + p.SetState(3838) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -55983,6 +58716,16 @@ func (s *CreateNotebookStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *CreateNotebookStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateNotebookStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateNotebookStatement() (localctx ICreateNotebookStatementContext) { localctx = NewCreateNotebookStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 438, MDLParserRULE_createNotebookStatement) @@ -55990,7 +58733,7 @@ func (p *MDLParser) CreateNotebookStatement() (localctx ICreateNotebookStatement p.EnterOuterAlt(localctx, 1) { - p.SetState(3783) + p.SetState(3840) p.Match(MDLParserNOTEBOOK) if p.HasError() { // Recognition error - abort rule @@ -55998,10 +58741,10 @@ func (p *MDLParser) CreateNotebookStatement() (localctx ICreateNotebookStatement } } { - p.SetState(3784) + p.SetState(3841) p.QualifiedName() } - p.SetState(3786) + p.SetState(3843) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56010,20 +58753,20 @@ func (p *MDLParser) CreateNotebookStatement() (localctx ICreateNotebookStatement if _la == MDLParserCOMMENT { { - p.SetState(3785) + p.SetState(3842) p.NotebookOptions() } } { - p.SetState(3788) + p.SetState(3845) p.Match(MDLParserBEGIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3792) + p.SetState(3849) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56032,11 +58775,11 @@ func (p *MDLParser) CreateNotebookStatement() (localctx ICreateNotebookStatement for _la == MDLParserPAGE { { - p.SetState(3789) + p.SetState(3846) p.NotebookPage() } - p.SetState(3794) + p.SetState(3851) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56044,7 +58787,7 @@ func (p *MDLParser) CreateNotebookStatement() (localctx ICreateNotebookStatement _la = p.GetTokenStream().LA(1) } { - p.SetState(3795) + p.SetState(3852) p.Match(MDLParserEND) if p.HasError() { // Recognition error - abort rule @@ -56173,13 +58916,23 @@ func (s *NotebookOptionsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *NotebookOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitNotebookOptions(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) NotebookOptions() (localctx INotebookOptionsContext) { localctx = NewNotebookOptionsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 440, MDLParserRULE_notebookOptions) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(3798) + p.SetState(3855) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56188,11 +58941,11 @@ func (p *MDLParser) NotebookOptions() (localctx INotebookOptionsContext) { for ok := true; ok; ok = _la == MDLParserCOMMENT { { - p.SetState(3797) + p.SetState(3854) p.NotebookOption() } - p.SetState(3800) + p.SetState(3857) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56288,12 +59041,22 @@ func (s *NotebookOptionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *NotebookOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitNotebookOption(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) NotebookOption() (localctx INotebookOptionContext) { localctx = NewNotebookOptionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 442, MDLParserRULE_notebookOption) p.EnterOuterAlt(localctx, 1) { - p.SetState(3802) + p.SetState(3859) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -56301,7 +59064,7 @@ func (p *MDLParser) NotebookOption() (localctx INotebookOptionContext) { } } { - p.SetState(3803) + p.SetState(3860) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -56419,6 +59182,16 @@ func (s *NotebookPageContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *NotebookPageContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitNotebookPage(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) NotebookPage() (localctx INotebookPageContext) { localctx = NewNotebookPageContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 444, MDLParserRULE_notebookPage) @@ -56426,7 +59199,7 @@ func (p *MDLParser) NotebookPage() (localctx INotebookPageContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3805) + p.SetState(3862) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -56434,10 +59207,10 @@ func (p *MDLParser) NotebookPage() (localctx INotebookPageContext) { } } { - p.SetState(3806) + p.SetState(3863) p.QualifiedName() } - p.SetState(3809) + p.SetState(3866) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56446,7 +59219,7 @@ func (p *MDLParser) NotebookPage() (localctx INotebookPageContext) { if _la == MDLParserCAPTION { { - p.SetState(3807) + p.SetState(3864) p.Match(MDLParserCAPTION) if p.HasError() { // Recognition error - abort rule @@ -56454,7 +59227,7 @@ func (p *MDLParser) NotebookPage() (localctx INotebookPageContext) { } } { - p.SetState(3808) + p.SetState(3865) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -56665,6 +59438,16 @@ func (s *CreateDatabaseConnectionStatementContext) ExitRule(listener antlr.Parse } } +func (s *CreateDatabaseConnectionStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateDatabaseConnectionStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateDatabaseConnectionStatement() (localctx ICreateDatabaseConnectionStatementContext) { localctx = NewCreateDatabaseConnectionStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 446, MDLParserRULE_createDatabaseConnectionStatement) @@ -56672,7 +59455,7 @@ func (p *MDLParser) CreateDatabaseConnectionStatement() (localctx ICreateDatabas p.EnterOuterAlt(localctx, 1) { - p.SetState(3811) + p.SetState(3868) p.Match(MDLParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -56680,7 +59463,7 @@ func (p *MDLParser) CreateDatabaseConnectionStatement() (localctx ICreateDatabas } } { - p.SetState(3812) + p.SetState(3869) p.Match(MDLParserCONNECTION) if p.HasError() { // Recognition error - abort rule @@ -56688,30 +59471,30 @@ func (p *MDLParser) CreateDatabaseConnectionStatement() (localctx ICreateDatabas } } { - p.SetState(3813) + p.SetState(3870) p.QualifiedName() } - p.SetState(3815) + p.SetState(3872) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = _la == MDLParserHOST || _la == MDLParserPORT || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&15) != 0) || _la == MDLParserTYPE { + for ok := true; ok; ok = _la == MDLParserHOST || _la == MDLParserPORT || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&15) != 0) || _la == MDLParserTYPE { { - p.SetState(3814) + p.SetState(3871) p.DatabaseConnectionOption() } - p.SetState(3817) + p.SetState(3874) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(3827) + p.SetState(3884) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56720,14 +59503,14 @@ func (p *MDLParser) CreateDatabaseConnectionStatement() (localctx ICreateDatabas if _la == MDLParserBEGIN { { - p.SetState(3819) + p.SetState(3876) p.Match(MDLParserBEGIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3823) + p.SetState(3880) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56736,11 +59519,11 @@ func (p *MDLParser) CreateDatabaseConnectionStatement() (localctx ICreateDatabas for _la == MDLParserQUERY { { - p.SetState(3820) + p.SetState(3877) p.DatabaseQuery() } - p.SetState(3825) + p.SetState(3882) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56748,7 +59531,7 @@ func (p *MDLParser) CreateDatabaseConnectionStatement() (localctx ICreateDatabas _la = p.GetTokenStream().LA(1) } { - p.SetState(3826) + p.SetState(3883) p.Match(MDLParserEND) if p.HasError() { // Recognition error - abort rule @@ -56908,10 +59691,20 @@ func (s *DatabaseConnectionOptionContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *DatabaseConnectionOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDatabaseConnectionOption(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOptionContext) { localctx = NewDatabaseConnectionOptionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 448, MDLParserRULE_databaseConnectionOption) - p.SetState(3856) + p.SetState(3913) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56921,7 +59714,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti case MDLParserTYPE: p.EnterOuterAlt(localctx, 1) { - p.SetState(3829) + p.SetState(3886) p.Match(MDLParserTYPE) if p.HasError() { // Recognition error - abort rule @@ -56929,7 +59722,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti } } { - p.SetState(3830) + p.SetState(3887) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -56940,7 +59733,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti case MDLParserCONNECTION: p.EnterOuterAlt(localctx, 2) { - p.SetState(3831) + p.SetState(3888) p.Match(MDLParserCONNECTION) if p.HasError() { // Recognition error - abort rule @@ -56948,14 +59741,14 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti } } { - p.SetState(3832) + p.SetState(3889) p.Match(MDLParserSTRING_TYPE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3836) + p.SetState(3893) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -56964,7 +59757,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti switch p.GetTokenStream().LA(1) { case MDLParserSTRING_LITERAL: { - p.SetState(3833) + p.SetState(3890) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -56974,7 +59767,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti case MDLParserAT: { - p.SetState(3834) + p.SetState(3891) p.Match(MDLParserAT) if p.HasError() { // Recognition error - abort rule @@ -56982,7 +59775,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti } } { - p.SetState(3835) + p.SetState(3892) p.QualifiedName() } @@ -56994,7 +59787,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti case MDLParserHOST: p.EnterOuterAlt(localctx, 3) { - p.SetState(3838) + p.SetState(3895) p.Match(MDLParserHOST) if p.HasError() { // Recognition error - abort rule @@ -57002,7 +59795,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti } } { - p.SetState(3839) + p.SetState(3896) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -57013,7 +59806,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti case MDLParserPORT: p.EnterOuterAlt(localctx, 4) { - p.SetState(3840) + p.SetState(3897) p.Match(MDLParserPORT) if p.HasError() { // Recognition error - abort rule @@ -57021,7 +59814,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti } } { - p.SetState(3841) + p.SetState(3898) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -57032,7 +59825,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti case MDLParserDATABASE: p.EnterOuterAlt(localctx, 5) { - p.SetState(3842) + p.SetState(3899) p.Match(MDLParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -57040,7 +59833,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti } } { - p.SetState(3843) + p.SetState(3900) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -57051,14 +59844,14 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti case MDLParserUSERNAME: p.EnterOuterAlt(localctx, 6) { - p.SetState(3844) + p.SetState(3901) p.Match(MDLParserUSERNAME) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3848) + p.SetState(3905) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -57067,7 +59860,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti switch p.GetTokenStream().LA(1) { case MDLParserSTRING_LITERAL: { - p.SetState(3845) + p.SetState(3902) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -57077,7 +59870,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti case MDLParserAT: { - p.SetState(3846) + p.SetState(3903) p.Match(MDLParserAT) if p.HasError() { // Recognition error - abort rule @@ -57085,7 +59878,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti } } { - p.SetState(3847) + p.SetState(3904) p.QualifiedName() } @@ -57097,14 +59890,14 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti case MDLParserPASSWORD: p.EnterOuterAlt(localctx, 7) { - p.SetState(3850) + p.SetState(3907) p.Match(MDLParserPASSWORD) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3854) + p.SetState(3911) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -57113,7 +59906,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti switch p.GetTokenStream().LA(1) { case MDLParserSTRING_LITERAL: { - p.SetState(3851) + p.SetState(3908) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -57123,7 +59916,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti case MDLParserAT: { - p.SetState(3852) + p.SetState(3909) p.Match(MDLParserAT) if p.HasError() { // Recognition error - abort rule @@ -57131,7 +59924,7 @@ func (p *MDLParser) DatabaseConnectionOption() (localctx IDatabaseConnectionOpti } } { - p.SetState(3853) + p.SetState(3910) p.QualifiedName() } @@ -57469,6 +60262,16 @@ func (s *DatabaseQueryContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DatabaseQueryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDatabaseQuery(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { localctx = NewDatabaseQueryContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 450, MDLParserRULE_databaseQuery) @@ -57476,7 +60279,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3858) + p.SetState(3915) p.Match(MDLParserQUERY) if p.HasError() { // Recognition error - abort rule @@ -57484,11 +60287,11 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { } } { - p.SetState(3859) + p.SetState(3916) p.IdentifierOrKeyword() } { - p.SetState(3860) + p.SetState(3917) p.Match(MDLParserSQL) if p.HasError() { // Recognition error - abort rule @@ -57496,7 +60299,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { } } { - p.SetState(3861) + p.SetState(3918) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserSTRING_LITERAL || _la == MDLParserDOLLAR_STRING) { @@ -57506,7 +60309,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { p.Consume() } } - p.SetState(3873) + p.SetState(3930) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -57515,7 +60318,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { for _la == MDLParserPARAMETER { { - p.SetState(3862) + p.SetState(3919) p.Match(MDLParserPARAMETER) if p.HasError() { // Recognition error - abort rule @@ -57523,11 +60326,11 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { } } { - p.SetState(3863) + p.SetState(3920) p.IdentifierOrKeyword() } { - p.SetState(3864) + p.SetState(3921) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -57535,10 +60338,10 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { } } { - p.SetState(3865) + p.SetState(3922) p.DataType() } - p.SetState(3869) + p.SetState(3926) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -57546,7 +60349,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { switch p.GetTokenStream().LA(1) { case MDLParserDEFAULT: { - p.SetState(3866) + p.SetState(3923) p.Match(MDLParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -57554,7 +60357,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { } } { - p.SetState(3867) + p.SetState(3924) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -57564,7 +60367,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { case MDLParserNULL: { - p.SetState(3868) + p.SetState(3925) p.Match(MDLParserNULL) if p.HasError() { // Recognition error - abort rule @@ -57577,14 +60380,14 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { default: } - p.SetState(3875) + p.SetState(3932) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(3892) + p.SetState(3949) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -57593,7 +60396,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { if _la == MDLParserRETURNS { { - p.SetState(3876) + p.SetState(3933) p.Match(MDLParserRETURNS) if p.HasError() { // Recognition error - abort rule @@ -57601,10 +60404,10 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { } } { - p.SetState(3877) + p.SetState(3934) p.QualifiedName() } - p.SetState(3890) + p.SetState(3947) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -57613,7 +60416,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { if _la == MDLParserMAP { { - p.SetState(3878) + p.SetState(3935) p.Match(MDLParserMAP) if p.HasError() { // Recognition error - abort rule @@ -57621,7 +60424,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { } } { - p.SetState(3879) + p.SetState(3936) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -57629,10 +60432,10 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { } } { - p.SetState(3880) + p.SetState(3937) p.DatabaseQueryMapping() } - p.SetState(3885) + p.SetState(3942) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -57641,7 +60444,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { for _la == MDLParserCOMMA { { - p.SetState(3881) + p.SetState(3938) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -57649,11 +60452,11 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { } } { - p.SetState(3882) + p.SetState(3939) p.DatabaseQueryMapping() } - p.SetState(3887) + p.SetState(3944) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -57661,7 +60464,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(3888) + p.SetState(3945) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -57673,7 +60476,7 @@ func (p *MDLParser) DatabaseQuery() (localctx IDatabaseQueryContext) { } { - p.SetState(3894) + p.SetState(3951) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -57807,16 +60610,26 @@ func (s *DatabaseQueryMappingContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *DatabaseQueryMappingContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDatabaseQueryMapping(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DatabaseQueryMapping() (localctx IDatabaseQueryMappingContext) { localctx = NewDatabaseQueryMappingContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 452, MDLParserRULE_databaseQueryMapping) p.EnterOuterAlt(localctx, 1) { - p.SetState(3896) + p.SetState(3953) p.IdentifierOrKeyword() } { - p.SetState(3897) + p.SetState(3954) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -57824,7 +60637,7 @@ func (p *MDLParser) DatabaseQueryMapping() (localctx IDatabaseQueryMappingContex } } { - p.SetState(3898) + p.SetState(3955) p.IdentifierOrKeyword() } @@ -57989,6 +60802,16 @@ func (s *CreateConstantStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *CreateConstantStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateConstantStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateConstantStatement() (localctx ICreateConstantStatementContext) { localctx = NewCreateConstantStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 454, MDLParserRULE_createConstantStatement) @@ -57996,7 +60819,7 @@ func (p *MDLParser) CreateConstantStatement() (localctx ICreateConstantStatement p.EnterOuterAlt(localctx, 1) { - p.SetState(3900) + p.SetState(3957) p.Match(MDLParserCONSTANT) if p.HasError() { // Recognition error - abort rule @@ -58004,11 +60827,11 @@ func (p *MDLParser) CreateConstantStatement() (localctx ICreateConstantStatement } } { - p.SetState(3901) + p.SetState(3958) p.QualifiedName() } { - p.SetState(3902) + p.SetState(3959) p.Match(MDLParserTYPE) if p.HasError() { // Recognition error - abort rule @@ -58016,11 +60839,11 @@ func (p *MDLParser) CreateConstantStatement() (localctx ICreateConstantStatement } } { - p.SetState(3903) + p.SetState(3960) p.DataType() } { - p.SetState(3904) + p.SetState(3961) p.Match(MDLParserDEFAULT) if p.HasError() { // Recognition error - abort rule @@ -58028,10 +60851,10 @@ func (p *MDLParser) CreateConstantStatement() (localctx ICreateConstantStatement } } { - p.SetState(3905) + p.SetState(3962) p.Literal() } - p.SetState(3907) + p.SetState(3964) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -58040,7 +60863,7 @@ func (p *MDLParser) CreateConstantStatement() (localctx ICreateConstantStatement if _la == MDLParserFOLDER || _la == MDLParserEXPOSED || _la == MDLParserCOMMENT { { - p.SetState(3906) + p.SetState(3963) p.ConstantOptions() } @@ -58167,13 +60990,23 @@ func (s *ConstantOptionsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ConstantOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitConstantOptions(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ConstantOptions() (localctx IConstantOptionsContext) { localctx = NewConstantOptionsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 456, MDLParserRULE_constantOptions) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(3910) + p.SetState(3967) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -58182,11 +61015,11 @@ func (p *MDLParser) ConstantOptions() (localctx IConstantOptionsContext) { for ok := true; ok; ok = _la == MDLParserFOLDER || _la == MDLParserEXPOSED || _la == MDLParserCOMMENT { { - p.SetState(3909) + p.SetState(3966) p.ConstantOption() } - p.SetState(3912) + p.SetState(3969) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -58302,10 +61135,20 @@ func (s *ConstantOptionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ConstantOptionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitConstantOption(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ConstantOption() (localctx IConstantOptionContext) { localctx = NewConstantOptionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 458, MDLParserRULE_constantOption) - p.SetState(3921) + p.SetState(3978) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -58315,7 +61158,7 @@ func (p *MDLParser) ConstantOption() (localctx IConstantOptionContext) { case MDLParserCOMMENT: p.EnterOuterAlt(localctx, 1) { - p.SetState(3914) + p.SetState(3971) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -58323,7 +61166,7 @@ func (p *MDLParser) ConstantOption() (localctx IConstantOptionContext) { } } { - p.SetState(3915) + p.SetState(3972) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -58334,7 +61177,7 @@ func (p *MDLParser) ConstantOption() (localctx IConstantOptionContext) { case MDLParserFOLDER: p.EnterOuterAlt(localctx, 2) { - p.SetState(3916) + p.SetState(3973) p.Match(MDLParserFOLDER) if p.HasError() { // Recognition error - abort rule @@ -58342,7 +61185,7 @@ func (p *MDLParser) ConstantOption() (localctx IConstantOptionContext) { } } { - p.SetState(3917) + p.SetState(3974) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -58353,7 +61196,7 @@ func (p *MDLParser) ConstantOption() (localctx IConstantOptionContext) { case MDLParserEXPOSED: p.EnterOuterAlt(localctx, 3) { - p.SetState(3918) + p.SetState(3975) p.Match(MDLParserEXPOSED) if p.HasError() { // Recognition error - abort rule @@ -58361,7 +61204,7 @@ func (p *MDLParser) ConstantOption() (localctx IConstantOptionContext) { } } { - p.SetState(3919) + p.SetState(3976) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -58369,7 +61212,7 @@ func (p *MDLParser) ConstantOption() (localctx IConstantOptionContext) { } } { - p.SetState(3920) + p.SetState(3977) p.Match(MDLParserCLIENT) if p.HasError() { // Recognition error - abort rule @@ -58523,6 +61366,16 @@ func (s *CreateConfigurationStatementContext) ExitRule(listener antlr.ParseTreeL } } +func (s *CreateConfigurationStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateConfigurationStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateConfigurationStatement() (localctx ICreateConfigurationStatementContext) { localctx = NewCreateConfigurationStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 460, MDLParserRULE_createConfigurationStatement) @@ -58530,7 +61383,7 @@ func (p *MDLParser) CreateConfigurationStatement() (localctx ICreateConfiguratio p.EnterOuterAlt(localctx, 1) { - p.SetState(3923) + p.SetState(3980) p.Match(MDLParserCONFIGURATION) if p.HasError() { // Recognition error - abort rule @@ -58538,22 +61391,22 @@ func (p *MDLParser) CreateConfigurationStatement() (localctx ICreateConfiguratio } } { - p.SetState(3924) + p.SetState(3981) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3933) + p.SetState(3990) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 402, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 412, p.GetParserRuleContext()) == 1 { { - p.SetState(3925) + p.SetState(3982) p.SettingsAssignment() } - p.SetState(3930) + p.SetState(3987) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -58562,7 +61415,7 @@ func (p *MDLParser) CreateConfigurationStatement() (localctx ICreateConfiguratio for _la == MDLParserCOMMA { { - p.SetState(3926) + p.SetState(3983) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -58570,11 +61423,11 @@ func (p *MDLParser) CreateConfigurationStatement() (localctx ICreateConfiguratio } } { - p.SetState(3927) + p.SetState(3984) p.SettingsAssignment() } - p.SetState(3932) + p.SetState(3989) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -58778,6 +61631,16 @@ func (s *CreateRestClientStatementContext) ExitRule(listener antlr.ParseTreeList } } +func (s *CreateRestClientStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateRestClientStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateRestClientStatement() (localctx ICreateRestClientStatementContext) { localctx = NewCreateRestClientStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 462, MDLParserRULE_createRestClientStatement) @@ -58785,7 +61648,7 @@ func (p *MDLParser) CreateRestClientStatement() (localctx ICreateRestClientState p.EnterOuterAlt(localctx, 1) { - p.SetState(3935) + p.SetState(3992) p.Match(MDLParserREST) if p.HasError() { // Recognition error - abort rule @@ -58793,7 +61656,7 @@ func (p *MDLParser) CreateRestClientStatement() (localctx ICreateRestClientState } } { - p.SetState(3936) + p.SetState(3993) p.Match(MDLParserCLIENT) if p.HasError() { // Recognition error - abort rule @@ -58801,26 +61664,26 @@ func (p *MDLParser) CreateRestClientStatement() (localctx ICreateRestClientState } } { - p.SetState(3937) + p.SetState(3994) p.QualifiedName() } { - p.SetState(3938) + p.SetState(3995) p.RestClientBaseUrl() } { - p.SetState(3939) + p.SetState(3996) p.RestClientAuthentication() } { - p.SetState(3940) + p.SetState(3997) p.Match(MDLParserBEGIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3944) + p.SetState(4001) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -58829,11 +61692,11 @@ func (p *MDLParser) CreateRestClientStatement() (localctx ICreateRestClientState for _la == MDLParserDOC_COMMENT || _la == MDLParserOPERATION { { - p.SetState(3941) + p.SetState(3998) p.RestOperationDef() } - p.SetState(3946) + p.SetState(4003) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -58841,7 +61704,7 @@ func (p *MDLParser) CreateRestClientStatement() (localctx ICreateRestClientState _la = p.GetTokenStream().LA(1) } { - p.SetState(3947) + p.SetState(4004) p.Match(MDLParserEND) if p.HasError() { // Recognition error - abort rule @@ -58942,12 +61805,22 @@ func (s *RestClientBaseUrlContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestClientBaseUrlContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestClientBaseUrl(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestClientBaseUrl() (localctx IRestClientBaseUrlContext) { localctx = NewRestClientBaseUrlContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 464, MDLParserRULE_restClientBaseUrl) p.EnterOuterAlt(localctx, 1) { - p.SetState(3949) + p.SetState(4006) p.Match(MDLParserBASE) if p.HasError() { // Recognition error - abort rule @@ -58955,7 +61828,7 @@ func (p *MDLParser) RestClientBaseUrl() (localctx IRestClientBaseUrlContext) { } } { - p.SetState(3950) + p.SetState(4007) p.Match(MDLParserURL) if p.HasError() { // Recognition error - abort rule @@ -58963,7 +61836,7 @@ func (p *MDLParser) RestClientBaseUrl() (localctx IRestClientBaseUrlContext) { } } { - p.SetState(3951) + p.SetState(4008) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -59142,20 +62015,30 @@ func (s *RestClientAuthenticationContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *RestClientAuthenticationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestClientAuthentication(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticationContext) { localctx = NewRestClientAuthenticationContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 466, MDLParserRULE_restClientAuthentication) - p.SetState(3967) + p.SetState(4024) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 404, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 414, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(3953) + p.SetState(4010) p.Match(MDLParserAUTHENTICATION) if p.HasError() { // Recognition error - abort rule @@ -59163,7 +62046,7 @@ func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticati } } { - p.SetState(3954) + p.SetState(4011) p.Match(MDLParserNONE) if p.HasError() { // Recognition error - abort rule @@ -59174,7 +62057,7 @@ func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticati case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(3955) + p.SetState(4012) p.Match(MDLParserAUTHENTICATION) if p.HasError() { // Recognition error - abort rule @@ -59182,7 +62065,7 @@ func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticati } } { - p.SetState(3956) + p.SetState(4013) p.Match(MDLParserBASIC) if p.HasError() { // Recognition error - abort rule @@ -59190,7 +62073,7 @@ func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticati } } { - p.SetState(3957) + p.SetState(4014) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -59198,7 +62081,7 @@ func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticati } } { - p.SetState(3958) + p.SetState(4015) p.Match(MDLParserUSERNAME) if p.HasError() { // Recognition error - abort rule @@ -59206,7 +62089,7 @@ func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticati } } { - p.SetState(3959) + p.SetState(4016) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -59214,11 +62097,11 @@ func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticati } } { - p.SetState(3960) + p.SetState(4017) p.RestAuthValue() } { - p.SetState(3961) + p.SetState(4018) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -59226,7 +62109,7 @@ func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticati } } { - p.SetState(3962) + p.SetState(4019) p.Match(MDLParserPASSWORD) if p.HasError() { // Recognition error - abort rule @@ -59234,7 +62117,7 @@ func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticati } } { - p.SetState(3963) + p.SetState(4020) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -59242,11 +62125,11 @@ func (p *MDLParser) RestClientAuthentication() (localctx IRestClientAuthenticati } } { - p.SetState(3964) + p.SetState(4021) p.RestAuthValue() } { - p.SetState(3965) + p.SetState(4022) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -59346,6 +62229,16 @@ func (s *RestAuthValueContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestAuthValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestAuthValue(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestAuthValue() (localctx IRestAuthValueContext) { localctx = NewRestAuthValueContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 468, MDLParserRULE_restAuthValue) @@ -59353,7 +62246,7 @@ func (p *MDLParser) RestAuthValue() (localctx IRestAuthValueContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3969) + p.SetState(4026) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserSTRING_LITERAL || _la == MDLParserVARIABLE) { @@ -59588,13 +62481,23 @@ func (s *RestOperationDefContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestOperationDefContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestOperationDef(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestOperationDef() (localctx IRestOperationDefContext) { localctx = NewRestOperationDefContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 470, MDLParserRULE_restOperationDef) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(3972) + p.SetState(4029) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -59603,35 +62506,35 @@ func (p *MDLParser) RestOperationDef() (localctx IRestOperationDefContext) { if _la == MDLParserDOC_COMMENT { { - p.SetState(3971) + p.SetState(4028) p.DocComment() } } { - p.SetState(3974) + p.SetState(4031) p.Match(MDLParserOPERATION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3977) + p.SetState(4034) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: { - p.SetState(3975) + p.SetState(4032) p.IdentifierOrKeyword() } case MDLParserSTRING_LITERAL: { - p.SetState(3976) + p.SetState(4033) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -59644,7 +62547,7 @@ func (p *MDLParser) RestOperationDef() (localctx IRestOperationDefContext) { goto errorExit } { - p.SetState(3979) + p.SetState(4036) p.Match(MDLParserMETHOD) if p.HasError() { // Recognition error - abort rule @@ -59652,11 +62555,11 @@ func (p *MDLParser) RestOperationDef() (localctx IRestOperationDefContext) { } } { - p.SetState(3980) + p.SetState(4037) p.RestHttpMethod() } { - p.SetState(3981) + p.SetState(4038) p.Match(MDLParserPATH) if p.HasError() { // Recognition error - abort rule @@ -59664,27 +62567,27 @@ func (p *MDLParser) RestOperationDef() (localctx IRestOperationDefContext) { } } { - p.SetState(3982) + p.SetState(4039) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(3986) + p.SetState(4043) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for _la == MDLParserHEADER || ((int64((_la-324)) & ^0x3f) == 0 && ((int64(1)<<(_la-324))&17593259786243) != 0) { + for _la == MDLParserHEADER || ((int64((_la-327)) & ^0x3f) == 0 && ((int64(1)<<(_la-327))&17593259786243) != 0) { { - p.SetState(3983) + p.SetState(4040) p.RestOperationClause() } - p.SetState(3988) + p.SetState(4045) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -59692,7 +62595,7 @@ func (p *MDLParser) RestOperationDef() (localctx IRestOperationDefContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(3989) + p.SetState(4046) p.Match(MDLParserRESPONSE) if p.HasError() { // Recognition error - abort rule @@ -59700,11 +62603,11 @@ func (p *MDLParser) RestOperationDef() (localctx IRestOperationDefContext) { } } { - p.SetState(3990) + p.SetState(4047) p.RestResponseSpec() } { - p.SetState(3991) + p.SetState(4048) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -59815,6 +62718,16 @@ func (s *RestHttpMethodContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestHttpMethodContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestHttpMethod(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestHttpMethod() (localctx IRestHttpMethodContext) { localctx = NewRestHttpMethodContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 472, MDLParserRULE_restHttpMethod) @@ -59822,10 +62735,10 @@ func (p *MDLParser) RestHttpMethod() (localctx IRestHttpMethodContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(3993) + p.SetState(4050) _la = p.GetTokenStream().LA(1) - if !(_la == MDLParserDELETE || ((int64((_la-334)) & ^0x3f) == 0 && ((int64(1)<<(_la-334))&15) != 0)) { + if !(_la == MDLParserDELETE || ((int64((_la-337)) & ^0x3f) == 0 && ((int64(1)<<(_la-337))&15) != 0)) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -60010,12 +62923,22 @@ func (s *RestOperationClauseContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *RestOperationClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestOperationClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) { localctx = NewRestOperationClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 474, MDLParserRULE_restOperationClause) var _la int - p.SetState(4013) + p.SetState(4070) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -60025,7 +62948,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) case MDLParserPARAMETER: p.EnterOuterAlt(localctx, 1) { - p.SetState(3995) + p.SetState(4052) p.Match(MDLParserPARAMETER) if p.HasError() { // Recognition error - abort rule @@ -60033,7 +62956,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(3996) + p.SetState(4053) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -60041,7 +62964,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(3997) + p.SetState(4054) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -60049,14 +62972,14 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(3998) + p.SetState(4055) p.DataType() } case MDLParserQUERY: p.EnterOuterAlt(localctx, 2) { - p.SetState(3999) + p.SetState(4056) p.Match(MDLParserQUERY) if p.HasError() { // Recognition error - abort rule @@ -60064,7 +62987,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(4000) + p.SetState(4057) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -60072,7 +62995,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(4001) + p.SetState(4058) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -60080,14 +63003,14 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(4002) + p.SetState(4059) p.DataType() } case MDLParserHEADER: p.EnterOuterAlt(localctx, 3) { - p.SetState(4003) + p.SetState(4060) p.Match(MDLParserHEADER) if p.HasError() { // Recognition error - abort rule @@ -60095,7 +63018,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(4004) + p.SetState(4061) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -60103,7 +63026,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(4005) + p.SetState(4062) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -60111,14 +63034,14 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(4006) + p.SetState(4063) p.RestHeaderValue() } case MDLParserBODY: p.EnterOuterAlt(localctx, 4) { - p.SetState(4007) + p.SetState(4064) p.Match(MDLParserBODY) if p.HasError() { // Recognition error - abort rule @@ -60126,7 +63049,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(4008) + p.SetState(4065) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserJSON || _la == MDLParserFILE_KW) { @@ -60137,7 +63060,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(4009) + p.SetState(4066) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -60145,7 +63068,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(4010) + p.SetState(4067) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -60156,7 +63079,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) case MDLParserTIMEOUT: p.EnterOuterAlt(localctx, 5) { - p.SetState(4011) + p.SetState(4068) p.Match(MDLParserTIMEOUT) if p.HasError() { // Recognition error - abort rule @@ -60164,7 +63087,7 @@ func (p *MDLParser) RestOperationClause() (localctx IRestOperationClauseContext) } } { - p.SetState(4012) + p.SetState(4069) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -60270,20 +63193,30 @@ func (s *RestHeaderValueContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestHeaderValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestHeaderValue(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestHeaderValue() (localctx IRestHeaderValueContext) { localctx = NewRestHeaderValueContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 476, MDLParserRULE_restHeaderValue) - p.SetState(4020) + p.SetState(4077) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 409, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 419, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(4015) + p.SetState(4072) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -60294,7 +63227,7 @@ func (p *MDLParser) RestHeaderValue() (localctx IRestHeaderValueContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(4016) + p.SetState(4073) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -60305,7 +63238,7 @@ func (p *MDLParser) RestHeaderValue() (localctx IRestHeaderValueContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(4017) + p.SetState(4074) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -60313,7 +63246,7 @@ func (p *MDLParser) RestHeaderValue() (localctx IRestHeaderValueContext) { } } { - p.SetState(4018) + p.SetState(4075) p.Match(MDLParserPLUS) if p.HasError() { // Recognition error - abort rule @@ -60321,7 +63254,7 @@ func (p *MDLParser) RestHeaderValue() (localctx IRestHeaderValueContext) { } } { - p.SetState(4019) + p.SetState(4076) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -60446,10 +63379,20 @@ func (s *RestResponseSpecContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *RestResponseSpecContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitRestResponseSpec(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { localctx = NewRestResponseSpecContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 478, MDLParserRULE_restResponseSpec) - p.SetState(4035) + p.SetState(4092) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -60459,7 +63402,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { case MDLParserJSON: p.EnterOuterAlt(localctx, 1) { - p.SetState(4022) + p.SetState(4079) p.Match(MDLParserJSON) if p.HasError() { // Recognition error - abort rule @@ -60467,7 +63410,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { } } { - p.SetState(4023) + p.SetState(4080) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -60475,7 +63418,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { } } { - p.SetState(4024) + p.SetState(4081) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -60486,7 +63429,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { case MDLParserSTRING_TYPE: p.EnterOuterAlt(localctx, 2) { - p.SetState(4025) + p.SetState(4082) p.Match(MDLParserSTRING_TYPE) if p.HasError() { // Recognition error - abort rule @@ -60494,7 +63437,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { } } { - p.SetState(4026) + p.SetState(4083) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -60502,7 +63445,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { } } { - p.SetState(4027) + p.SetState(4084) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -60513,7 +63456,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { case MDLParserFILE_KW: p.EnterOuterAlt(localctx, 3) { - p.SetState(4028) + p.SetState(4085) p.Match(MDLParserFILE_KW) if p.HasError() { // Recognition error - abort rule @@ -60521,7 +63464,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { } } { - p.SetState(4029) + p.SetState(4086) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -60529,7 +63472,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { } } { - p.SetState(4030) + p.SetState(4087) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -60540,7 +63483,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { case MDLParserSTATUS: p.EnterOuterAlt(localctx, 4) { - p.SetState(4031) + p.SetState(4088) p.Match(MDLParserSTATUS) if p.HasError() { // Recognition error - abort rule @@ -60548,7 +63491,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { } } { - p.SetState(4032) + p.SetState(4089) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -60556,7 +63499,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { } } { - p.SetState(4033) + p.SetState(4090) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -60567,7 +63510,7 @@ func (p *MDLParser) RestResponseSpec() (localctx IRestResponseSpecContext) { case MDLParserNONE: p.EnterOuterAlt(localctx, 5) { - p.SetState(4034) + p.SetState(4091) p.Match(MDLParserNONE) if p.HasError() { // Recognition error - abort rule @@ -60717,12 +63660,22 @@ func (s *CreateIndexStatementContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *CreateIndexStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateIndexStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateIndexStatement() (localctx ICreateIndexStatementContext) { localctx = NewCreateIndexStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 480, MDLParserRULE_createIndexStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(4037) + p.SetState(4094) p.Match(MDLParserINDEX) if p.HasError() { // Recognition error - abort rule @@ -60730,7 +63683,7 @@ func (p *MDLParser) CreateIndexStatement() (localctx ICreateIndexStatementContex } } { - p.SetState(4038) + p.SetState(4095) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -60738,7 +63691,7 @@ func (p *MDLParser) CreateIndexStatement() (localctx ICreateIndexStatementContex } } { - p.SetState(4039) + p.SetState(4096) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -60746,11 +63699,11 @@ func (p *MDLParser) CreateIndexStatement() (localctx ICreateIndexStatementContex } } { - p.SetState(4040) + p.SetState(4097) p.QualifiedName() } { - p.SetState(4041) + p.SetState(4098) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -60758,11 +63711,11 @@ func (p *MDLParser) CreateIndexStatement() (localctx ICreateIndexStatementContex } } { - p.SetState(4042) + p.SetState(4099) p.IndexAttributeList() } { - p.SetState(4043) + p.SetState(4100) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -60955,6 +63908,16 @@ func (s *CreateODataClientStatementContext) ExitRule(listener antlr.ParseTreeLis } } +func (s *CreateODataClientStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateODataClientStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateODataClientStatement() (localctx ICreateODataClientStatementContext) { localctx = NewCreateODataClientStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 482, MDLParserRULE_createODataClientStatement) @@ -60962,7 +63925,7 @@ func (p *MDLParser) CreateODataClientStatement() (localctx ICreateODataClientSta p.EnterOuterAlt(localctx, 1) { - p.SetState(4045) + p.SetState(4102) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -60970,7 +63933,7 @@ func (p *MDLParser) CreateODataClientStatement() (localctx ICreateODataClientSta } } { - p.SetState(4046) + p.SetState(4103) p.Match(MDLParserCLIENT) if p.HasError() { // Recognition error - abort rule @@ -60978,11 +63941,11 @@ func (p *MDLParser) CreateODataClientStatement() (localctx ICreateODataClientSta } } { - p.SetState(4047) + p.SetState(4104) p.QualifiedName() } { - p.SetState(4048) + p.SetState(4105) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -60990,10 +63953,10 @@ func (p *MDLParser) CreateODataClientStatement() (localctx ICreateODataClientSta } } { - p.SetState(4049) + p.SetState(4106) p.OdataPropertyAssignment() } - p.SetState(4054) + p.SetState(4111) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -61002,7 +63965,7 @@ func (p *MDLParser) CreateODataClientStatement() (localctx ICreateODataClientSta for _la == MDLParserCOMMA { { - p.SetState(4050) + p.SetState(4107) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -61010,11 +63973,11 @@ func (p *MDLParser) CreateODataClientStatement() (localctx ICreateODataClientSta } } { - p.SetState(4051) + p.SetState(4108) p.OdataPropertyAssignment() } - p.SetState(4056) + p.SetState(4113) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -61022,14 +63985,14 @@ func (p *MDLParser) CreateODataClientStatement() (localctx ICreateODataClientSta _la = p.GetTokenStream().LA(1) } { - p.SetState(4057) + p.SetState(4114) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4059) + p.SetState(4116) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -61038,7 +64001,7 @@ func (p *MDLParser) CreateODataClientStatement() (localctx ICreateODataClientSta if _la == MDLParserHEADERS { { - p.SetState(4058) + p.SetState(4115) p.OdataHeadersClause() } @@ -61282,6 +64245,16 @@ func (s *CreateODataServiceStatementContext) ExitRule(listener antlr.ParseTreeLi } } +func (s *CreateODataServiceStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateODataServiceStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceStatementContext) { localctx = NewCreateODataServiceStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 484, MDLParserRULE_createODataServiceStatement) @@ -61289,7 +64262,7 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS p.EnterOuterAlt(localctx, 1) { - p.SetState(4061) + p.SetState(4118) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -61297,7 +64270,7 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS } } { - p.SetState(4062) + p.SetState(4119) p.Match(MDLParserSERVICE) if p.HasError() { // Recognition error - abort rule @@ -61305,11 +64278,11 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS } } { - p.SetState(4063) + p.SetState(4120) p.QualifiedName() } { - p.SetState(4064) + p.SetState(4121) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -61317,10 +64290,10 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS } } { - p.SetState(4065) + p.SetState(4122) p.OdataPropertyAssignment() } - p.SetState(4070) + p.SetState(4127) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -61329,7 +64302,7 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS for _la == MDLParserCOMMA { { - p.SetState(4066) + p.SetState(4123) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -61337,11 +64310,11 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS } } { - p.SetState(4067) + p.SetState(4124) p.OdataPropertyAssignment() } - p.SetState(4072) + p.SetState(4129) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -61349,14 +64322,14 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS _la = p.GetTokenStream().LA(1) } { - p.SetState(4073) + p.SetState(4130) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4075) + p.SetState(4132) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -61365,12 +64338,12 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS if _la == MDLParserAUTHENTICATION { { - p.SetState(4074) + p.SetState(4131) p.OdataAuthenticationClause() } } - p.SetState(4085) + p.SetState(4142) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -61379,14 +64352,14 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS if _la == MDLParserLBRACE { { - p.SetState(4077) + p.SetState(4134) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4081) + p.SetState(4138) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -61395,11 +64368,11 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS for _la == MDLParserPUBLISH { { - p.SetState(4078) + p.SetState(4135) p.PublishEntityBlock() } - p.SetState(4083) + p.SetState(4140) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -61407,7 +64380,7 @@ func (p *MDLParser) CreateODataServiceStatement() (localctx ICreateODataServiceS _la = p.GetTokenStream().LA(1) } { - p.SetState(4084) + p.SetState(4141) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -61537,20 +64510,30 @@ func (s *OdataPropertyValueContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OdataPropertyValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOdataPropertyValue(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OdataPropertyValue() (localctx IOdataPropertyValueContext) { localctx = NewOdataPropertyValueContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 486, MDLParserRULE_odataPropertyValue) - p.SetState(4096) + p.SetState(4153) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 418, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 428, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(4087) + p.SetState(4144) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -61561,7 +64544,7 @@ func (p *MDLParser) OdataPropertyValue() (localctx IOdataPropertyValueContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(4088) + p.SetState(4145) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -61572,7 +64555,7 @@ func (p *MDLParser) OdataPropertyValue() (localctx IOdataPropertyValueContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(4089) + p.SetState(4146) p.Match(MDLParserTRUE) if p.HasError() { // Recognition error - abort rule @@ -61583,7 +64566,7 @@ func (p *MDLParser) OdataPropertyValue() (localctx IOdataPropertyValueContext) { case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(4090) + p.SetState(4147) p.Match(MDLParserFALSE) if p.HasError() { // Recognition error - abort rule @@ -61594,19 +64577,19 @@ func (p *MDLParser) OdataPropertyValue() (localctx IOdataPropertyValueContext) { case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(4091) + p.SetState(4148) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4093) + p.SetState(4150) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 417, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 427, p.GetParserRuleContext()) == 1 { { - p.SetState(4092) + p.SetState(4149) p.QualifiedName() } @@ -61617,7 +64600,7 @@ func (p *MDLParser) OdataPropertyValue() (localctx IOdataPropertyValueContext) { case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(4095) + p.SetState(4152) p.QualifiedName() } @@ -61742,16 +64725,26 @@ func (s *OdataPropertyAssignmentContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *OdataPropertyAssignmentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOdataPropertyAssignment(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OdataPropertyAssignment() (localctx IOdataPropertyAssignmentContext) { localctx = NewOdataPropertyAssignmentContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 488, MDLParserRULE_odataPropertyAssignment) p.EnterOuterAlt(localctx, 1) { - p.SetState(4098) + p.SetState(4155) p.IdentifierOrKeyword() } { - p.SetState(4099) + p.SetState(4156) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -61759,7 +64752,7 @@ func (p *MDLParser) OdataPropertyAssignment() (localctx IOdataPropertyAssignment } } { - p.SetState(4100) + p.SetState(4157) p.OdataPropertyValue() } @@ -61880,16 +64873,26 @@ func (s *OdataAlterAssignmentContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *OdataAlterAssignmentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOdataAlterAssignment(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OdataAlterAssignment() (localctx IOdataAlterAssignmentContext) { localctx = NewOdataAlterAssignmentContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 490, MDLParserRULE_odataAlterAssignment) p.EnterOuterAlt(localctx, 1) { - p.SetState(4102) + p.SetState(4159) p.IdentifierOrKeyword() } { - p.SetState(4103) + p.SetState(4160) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -61897,7 +64900,7 @@ func (p *MDLParser) OdataAlterAssignment() (localctx IOdataAlterAssignmentContex } } { - p.SetState(4104) + p.SetState(4161) p.OdataPropertyValue() } @@ -62037,6 +65040,16 @@ func (s *OdataAuthenticationClauseContext) ExitRule(listener antlr.ParseTreeList } } +func (s *OdataAuthenticationClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOdataAuthenticationClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OdataAuthenticationClause() (localctx IOdataAuthenticationClauseContext) { localctx = NewOdataAuthenticationClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 492, MDLParserRULE_odataAuthenticationClause) @@ -62044,7 +65057,7 @@ func (p *MDLParser) OdataAuthenticationClause() (localctx IOdataAuthenticationCl p.EnterOuterAlt(localctx, 1) { - p.SetState(4106) + p.SetState(4163) p.Match(MDLParserAUTHENTICATION) if p.HasError() { // Recognition error - abort rule @@ -62052,10 +65065,10 @@ func (p *MDLParser) OdataAuthenticationClause() (localctx IOdataAuthenticationCl } } { - p.SetState(4107) + p.SetState(4164) p.OdataAuthType() } - p.SetState(4112) + p.SetState(4169) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62064,7 +65077,7 @@ func (p *MDLParser) OdataAuthenticationClause() (localctx IOdataAuthenticationCl for _la == MDLParserCOMMA { { - p.SetState(4108) + p.SetState(4165) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -62072,11 +65085,11 @@ func (p *MDLParser) OdataAuthenticationClause() (localctx IOdataAuthenticationCl } } { - p.SetState(4109) + p.SetState(4166) p.OdataAuthType() } - p.SetState(4114) + p.SetState(4171) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62204,10 +65217,20 @@ func (s *OdataAuthTypeContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OdataAuthTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOdataAuthType(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OdataAuthType() (localctx IOdataAuthTypeContext) { localctx = NewOdataAuthTypeContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 494, MDLParserRULE_odataAuthType) - p.SetState(4123) + p.SetState(4180) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62217,7 +65240,7 @@ func (p *MDLParser) OdataAuthType() (localctx IOdataAuthTypeContext) { case MDLParserBASIC: p.EnterOuterAlt(localctx, 1) { - p.SetState(4115) + p.SetState(4172) p.Match(MDLParserBASIC) if p.HasError() { // Recognition error - abort rule @@ -62228,7 +65251,7 @@ func (p *MDLParser) OdataAuthType() (localctx IOdataAuthTypeContext) { case MDLParserSESSION: p.EnterOuterAlt(localctx, 2) { - p.SetState(4116) + p.SetState(4173) p.Match(MDLParserSESSION) if p.HasError() { // Recognition error - abort rule @@ -62239,7 +65262,7 @@ func (p *MDLParser) OdataAuthType() (localctx IOdataAuthTypeContext) { case MDLParserGUEST: p.EnterOuterAlt(localctx, 3) { - p.SetState(4117) + p.SetState(4174) p.Match(MDLParserGUEST) if p.HasError() { // Recognition error - abort rule @@ -62250,19 +65273,19 @@ func (p *MDLParser) OdataAuthType() (localctx IOdataAuthTypeContext) { case MDLParserMICROFLOW: p.EnterOuterAlt(localctx, 4) { - p.SetState(4118) + p.SetState(4175) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4120) + p.SetState(4177) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 420, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 430, p.GetParserRuleContext()) == 1 { { - p.SetState(4119) + p.SetState(4176) p.QualifiedName() } @@ -62273,7 +65296,7 @@ func (p *MDLParser) OdataAuthType() (localctx IOdataAuthTypeContext) { case MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 5) { - p.SetState(4122) + p.SetState(4179) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -62486,6 +65509,16 @@ func (s *PublishEntityBlockContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *PublishEntityBlockContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitPublishEntityBlock(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { localctx = NewPublishEntityBlockContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 496, MDLParserRULE_publishEntityBlock) @@ -62493,7 +65526,7 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(4125) + p.SetState(4182) p.Match(MDLParserPUBLISH) if p.HasError() { // Recognition error - abort rule @@ -62501,7 +65534,7 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { } } { - p.SetState(4126) + p.SetState(4183) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -62509,10 +65542,10 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { } } { - p.SetState(4127) + p.SetState(4184) p.QualifiedName() } - p.SetState(4130) + p.SetState(4187) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62521,7 +65554,7 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { if _la == MDLParserAS { { - p.SetState(4128) + p.SetState(4185) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -62529,7 +65562,7 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { } } { - p.SetState(4129) + p.SetState(4186) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -62538,7 +65571,7 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { } } - p.SetState(4143) + p.SetState(4200) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62547,7 +65580,7 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { if _la == MDLParserLPAREN { { - p.SetState(4132) + p.SetState(4189) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -62555,10 +65588,10 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { } } { - p.SetState(4133) + p.SetState(4190) p.OdataPropertyAssignment() } - p.SetState(4138) + p.SetState(4195) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62567,7 +65600,7 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { for _la == MDLParserCOMMA { { - p.SetState(4134) + p.SetState(4191) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -62575,11 +65608,11 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { } } { - p.SetState(4135) + p.SetState(4192) p.OdataPropertyAssignment() } - p.SetState(4140) + p.SetState(4197) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62587,7 +65620,7 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(4141) + p.SetState(4198) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -62596,7 +65629,7 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { } } - p.SetState(4146) + p.SetState(4203) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62605,12 +65638,12 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { if _la == MDLParserEXPOSE { { - p.SetState(4145) + p.SetState(4202) p.ExposeClause() } } - p.SetState(4149) + p.SetState(4206) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62619,7 +65652,7 @@ func (p *MDLParser) PublishEntityBlock() (localctx IPublishEntityBlockContext) { if _la == MDLParserSEMICOLON { { - p.SetState(4148) + p.SetState(4205) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -62780,6 +65813,16 @@ func (s *ExposeClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ExposeClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitExposeClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ExposeClause() (localctx IExposeClauseContext) { localctx = NewExposeClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 498, MDLParserRULE_exposeClause) @@ -62787,7 +65830,7 @@ func (p *MDLParser) ExposeClause() (localctx IExposeClauseContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(4151) + p.SetState(4208) p.Match(MDLParserEXPOSE) if p.HasError() { // Recognition error - abort rule @@ -62795,14 +65838,14 @@ func (p *MDLParser) ExposeClause() (localctx IExposeClauseContext) { } } { - p.SetState(4152) + p.SetState(4209) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4162) + p.SetState(4219) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62811,7 +65854,7 @@ func (p *MDLParser) ExposeClause() (localctx IExposeClauseContext) { switch p.GetTokenStream().LA(1) { case MDLParserSTAR: { - p.SetState(4153) + p.SetState(4210) p.Match(MDLParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -62821,10 +65864,10 @@ func (p *MDLParser) ExposeClause() (localctx IExposeClauseContext) { case MDLParserIDENTIFIER: { - p.SetState(4154) + p.SetState(4211) p.ExposeMember() } - p.SetState(4159) + p.SetState(4216) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62833,7 +65876,7 @@ func (p *MDLParser) ExposeClause() (localctx IExposeClauseContext) { for _la == MDLParserCOMMA { { - p.SetState(4155) + p.SetState(4212) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -62841,11 +65884,11 @@ func (p *MDLParser) ExposeClause() (localctx IExposeClauseContext) { } } { - p.SetState(4156) + p.SetState(4213) p.ExposeMember() } - p.SetState(4161) + p.SetState(4218) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62858,7 +65901,7 @@ func (p *MDLParser) ExposeClause() (localctx IExposeClauseContext) { goto errorExit } { - p.SetState(4164) + p.SetState(4221) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -62976,6 +66019,16 @@ func (s *ExposeMemberContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ExposeMemberContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitExposeMember(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ExposeMember() (localctx IExposeMemberContext) { localctx = NewExposeMemberContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 500, MDLParserRULE_exposeMember) @@ -62983,14 +66036,14 @@ func (p *MDLParser) ExposeMember() (localctx IExposeMemberContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(4166) + p.SetState(4223) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4169) + p.SetState(4226) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -62999,7 +66052,7 @@ func (p *MDLParser) ExposeMember() (localctx IExposeMemberContext) { if _la == MDLParserAS { { - p.SetState(4167) + p.SetState(4224) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -63007,7 +66060,7 @@ func (p *MDLParser) ExposeMember() (localctx IExposeMemberContext) { } } { - p.SetState(4168) + p.SetState(4225) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -63016,7 +66069,7 @@ func (p *MDLParser) ExposeMember() (localctx IExposeMemberContext) { } } - p.SetState(4172) + p.SetState(4229) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -63025,7 +66078,7 @@ func (p *MDLParser) ExposeMember() (localctx IExposeMemberContext) { if _la == MDLParserLPAREN { { - p.SetState(4171) + p.SetState(4228) p.ExposeMemberOptions() } @@ -63139,6 +66192,16 @@ func (s *ExposeMemberOptionsContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *ExposeMemberOptionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitExposeMemberOptions(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ExposeMemberOptions() (localctx IExposeMemberOptionsContext) { localctx = NewExposeMemberOptionsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 502, MDLParserRULE_exposeMemberOptions) @@ -63146,7 +66209,7 @@ func (p *MDLParser) ExposeMemberOptions() (localctx IExposeMemberOptionsContext) p.EnterOuterAlt(localctx, 1) { - p.SetState(4174) + p.SetState(4231) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -63154,14 +66217,14 @@ func (p *MDLParser) ExposeMemberOptions() (localctx IExposeMemberOptionsContext) } } { - p.SetState(4175) + p.SetState(4232) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4180) + p.SetState(4237) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -63170,7 +66233,7 @@ func (p *MDLParser) ExposeMemberOptions() (localctx IExposeMemberOptionsContext) for _la == MDLParserCOMMA { { - p.SetState(4176) + p.SetState(4233) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -63178,7 +66241,7 @@ func (p *MDLParser) ExposeMemberOptions() (localctx IExposeMemberOptionsContext) } } { - p.SetState(4177) + p.SetState(4234) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -63186,7 +66249,7 @@ func (p *MDLParser) ExposeMemberOptions() (localctx IExposeMemberOptionsContext) } } - p.SetState(4182) + p.SetState(4239) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -63194,7 +66257,7 @@ func (p *MDLParser) ExposeMemberOptions() (localctx IExposeMemberOptionsContext) _la = p.GetTokenStream().LA(1) } { - p.SetState(4183) + p.SetState(4240) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -63438,6 +66501,16 @@ func (s *CreateExternalEntityStatementContext) ExitRule(listener antlr.ParseTree } } +func (s *CreateExternalEntityStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateExternalEntityStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEntityStatementContext) { localctx = NewCreateExternalEntityStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 504, MDLParserRULE_createExternalEntityStatement) @@ -63445,7 +66518,7 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt p.EnterOuterAlt(localctx, 1) { - p.SetState(4185) + p.SetState(4242) p.Match(MDLParserEXTERNAL) if p.HasError() { // Recognition error - abort rule @@ -63453,7 +66526,7 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt } } { - p.SetState(4186) + p.SetState(4243) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -63461,11 +66534,11 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt } } { - p.SetState(4187) + p.SetState(4244) p.QualifiedName() } { - p.SetState(4188) + p.SetState(4245) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -63473,7 +66546,7 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt } } { - p.SetState(4189) + p.SetState(4246) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -63481,7 +66554,7 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt } } { - p.SetState(4190) + p.SetState(4247) p.Match(MDLParserCLIENT) if p.HasError() { // Recognition error - abort rule @@ -63489,11 +66562,11 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt } } { - p.SetState(4191) + p.SetState(4248) p.QualifiedName() } { - p.SetState(4192) + p.SetState(4249) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -63501,10 +66574,10 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt } } { - p.SetState(4193) + p.SetState(4250) p.OdataPropertyAssignment() } - p.SetState(4198) + p.SetState(4255) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -63513,7 +66586,7 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt for _la == MDLParserCOMMA { { - p.SetState(4194) + p.SetState(4251) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -63521,11 +66594,11 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt } } { - p.SetState(4195) + p.SetState(4252) p.OdataPropertyAssignment() } - p.SetState(4200) + p.SetState(4257) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -63533,14 +66606,14 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt _la = p.GetTokenStream().LA(1) } { - p.SetState(4201) + p.SetState(4258) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4207) + p.SetState(4264) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -63549,29 +66622,29 @@ func (p *MDLParser) CreateExternalEntityStatement() (localctx ICreateExternalEnt if _la == MDLParserLPAREN { { - p.SetState(4202) + p.SetState(4259) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4204) + p.SetState(4261) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&25356937159770116) != 0) || ((int64((_la-69)) & ^0x3f) == 0 && ((int64(1)<<(_la-69))&36169534507319297) != 0) || ((int64((_la-135)) & ^0x3f) == 0 && ((int64(1)<<(_la-135))&2819253375860736011) != 0) || ((int64((_la-205)) & ^0x3f) == 0 && ((int64(1)<<(_la-205))&4398180887567) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&180143985430364191) != 0) || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&5647091739131907) != 0) || ((int64((_la-416)) & ^0x3f) == 0 && ((int64(1)<<(_la-416))&-6917528058991722373) != 0) || ((int64((_la-504)) & ^0x3f) == 0 && ((int64(1)<<(_la-504))&10241) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&25357212037677060) != 0) || ((int64((_la-69)) & ^0x3f) == 0 && ((int64(1)<<(_la-69))&36169534507319297) != 0) || ((int64((_la-135)) & ^0x3f) == 0 && ((int64(1)<<(_la-135))&5638506742594666507) != 0) || ((int64((_la-206)) & ^0x3f) == 0 && ((int64(1)<<(_la-206))&17592723074063) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&180143985430364191) != 0) || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&5647091739131907) != 0) || ((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&-6917528058991722373) != 0) || ((int64((_la-507)) & ^0x3f) == 0 && ((int64(1)<<(_la-507))&10241) != 0) { { - p.SetState(4203) + p.SetState(4260) p.AttributeDefinitionList() } } { - p.SetState(4206) + p.SetState(4263) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -63729,6 +66802,16 @@ func (s *CreateNavigationStatementContext) ExitRule(listener antlr.ParseTreeList } } +func (s *CreateNavigationStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateNavigationStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateNavigationStatement() (localctx ICreateNavigationStatementContext) { localctx = NewCreateNavigationStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 506, MDLParserRULE_createNavigationStatement) @@ -63736,29 +66819,29 @@ func (p *MDLParser) CreateNavigationStatement() (localctx ICreateNavigationState p.EnterOuterAlt(localctx, 1) { - p.SetState(4209) + p.SetState(4266) p.Match(MDLParserNAVIGATION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4212) + p.SetState(4269) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 435, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 445, p.GetParserRuleContext()) { case 1: { - p.SetState(4210) + p.SetState(4267) p.QualifiedName() } case 2: { - p.SetState(4211) + p.SetState(4268) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -63769,20 +66852,20 @@ func (p *MDLParser) CreateNavigationStatement() (localctx ICreateNavigationState case antlr.ATNInvalidAltNumber: goto errorExit } - p.SetState(4217) + p.SetState(4274) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for _la == MDLParserNOT || ((int64((_la-372)) & ^0x3f) == 0 && ((int64(1)<<(_la-372))&13) != 0) { + for _la == MDLParserNOT || ((int64((_la-375)) & ^0x3f) == 0 && ((int64(1)<<(_la-375))&13) != 0) { { - p.SetState(4214) + p.SetState(4271) p.NavigationClause() } - p.SetState(4219) + p.SetState(4276) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -63936,6 +67019,16 @@ func (s *OdataHeadersClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OdataHeadersClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOdataHeadersClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OdataHeadersClause() (localctx IOdataHeadersClauseContext) { localctx = NewOdataHeadersClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 508, MDLParserRULE_odataHeadersClause) @@ -63943,7 +67036,7 @@ func (p *MDLParser) OdataHeadersClause() (localctx IOdataHeadersClauseContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(4220) + p.SetState(4277) p.Match(MDLParserHEADERS) if p.HasError() { // Recognition error - abort rule @@ -63951,7 +67044,7 @@ func (p *MDLParser) OdataHeadersClause() (localctx IOdataHeadersClauseContext) { } } { - p.SetState(4221) + p.SetState(4278) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -63959,10 +67052,10 @@ func (p *MDLParser) OdataHeadersClause() (localctx IOdataHeadersClauseContext) { } } { - p.SetState(4222) + p.SetState(4279) p.OdataHeaderEntry() } - p.SetState(4227) + p.SetState(4284) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -63971,7 +67064,7 @@ func (p *MDLParser) OdataHeadersClause() (localctx IOdataHeadersClauseContext) { for _la == MDLParserCOMMA { { - p.SetState(4223) + p.SetState(4280) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -63979,11 +67072,11 @@ func (p *MDLParser) OdataHeadersClause() (localctx IOdataHeadersClauseContext) { } } { - p.SetState(4224) + p.SetState(4281) p.OdataHeaderEntry() } - p.SetState(4229) + p.SetState(4286) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -63991,7 +67084,7 @@ func (p *MDLParser) OdataHeadersClause() (localctx IOdataHeadersClauseContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(4230) + p.SetState(4287) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -64104,12 +67197,22 @@ func (s *OdataHeaderEntryContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OdataHeaderEntryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOdataHeaderEntry(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OdataHeaderEntry() (localctx IOdataHeaderEntryContext) { localctx = NewOdataHeaderEntryContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 510, MDLParserRULE_odataHeaderEntry) p.EnterOuterAlt(localctx, 1) { - p.SetState(4232) + p.SetState(4289) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -64117,7 +67220,7 @@ func (p *MDLParser) OdataHeaderEntry() (localctx IOdataHeaderEntryContext) { } } { - p.SetState(4233) + p.SetState(4290) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -64125,7 +67228,7 @@ func (p *MDLParser) OdataHeaderEntry() (localctx IOdataHeaderEntryContext) { } } { - p.SetState(4234) + p.SetState(4291) p.OdataPropertyValue() } @@ -64355,6 +67458,16 @@ func (s *CreateBusinessEventServiceStatementContext) ExitRule(listener antlr.Par } } +func (s *CreateBusinessEventServiceStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateBusinessEventServiceStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusinessEventServiceStatementContext) { localctx = NewCreateBusinessEventServiceStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 512, MDLParserRULE_createBusinessEventServiceStatement) @@ -64362,7 +67475,7 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin p.EnterOuterAlt(localctx, 1) { - p.SetState(4236) + p.SetState(4293) p.Match(MDLParserBUSINESS) if p.HasError() { // Recognition error - abort rule @@ -64370,7 +67483,7 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin } } { - p.SetState(4237) + p.SetState(4294) p.Match(MDLParserEVENT) if p.HasError() { // Recognition error - abort rule @@ -64378,7 +67491,7 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin } } { - p.SetState(4238) + p.SetState(4295) p.Match(MDLParserSERVICE) if p.HasError() { // Recognition error - abort rule @@ -64386,11 +67499,11 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin } } { - p.SetState(4239) + p.SetState(4296) p.QualifiedName() } { - p.SetState(4240) + p.SetState(4297) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -64398,10 +67511,10 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin } } { - p.SetState(4241) + p.SetState(4298) p.OdataPropertyAssignment() } - p.SetState(4246) + p.SetState(4303) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -64410,7 +67523,7 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin for _la == MDLParserCOMMA { { - p.SetState(4242) + p.SetState(4299) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -64418,11 +67531,11 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin } } { - p.SetState(4243) + p.SetState(4300) p.OdataPropertyAssignment() } - p.SetState(4248) + p.SetState(4305) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -64430,7 +67543,7 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin _la = p.GetTokenStream().LA(1) } { - p.SetState(4249) + p.SetState(4306) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -64438,14 +67551,14 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin } } { - p.SetState(4250) + p.SetState(4307) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4252) + p.SetState(4309) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -64454,11 +67567,11 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin for ok := true; ok; ok = _la == MDLParserMESSAGE { { - p.SetState(4251) + p.SetState(4308) p.BusinessEventMessageDef() } - p.SetState(4254) + p.SetState(4311) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -64466,7 +67579,7 @@ func (p *MDLParser) CreateBusinessEventServiceStatement() (localctx ICreateBusin _la = p.GetTokenStream().LA(1) } { - p.SetState(4256) + p.SetState(4313) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -64693,6 +67806,16 @@ func (s *BusinessEventMessageDefContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *BusinessEventMessageDefContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitBusinessEventMessageDef(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDefContext) { localctx = NewBusinessEventMessageDefContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 514, MDLParserRULE_businessEventMessageDef) @@ -64700,7 +67823,7 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef p.EnterOuterAlt(localctx, 1) { - p.SetState(4258) + p.SetState(4315) p.Match(MDLParserMESSAGE) if p.HasError() { // Recognition error - abort rule @@ -64708,7 +67831,7 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef } } { - p.SetState(4259) + p.SetState(4316) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -64716,7 +67839,7 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef } } { - p.SetState(4260) + p.SetState(4317) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -64724,10 +67847,10 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef } } { - p.SetState(4261) + p.SetState(4318) p.BusinessEventAttrDef() } - p.SetState(4266) + p.SetState(4323) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -64736,7 +67859,7 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef for _la == MDLParserCOMMA { { - p.SetState(4262) + p.SetState(4319) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -64744,11 +67867,11 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef } } { - p.SetState(4263) + p.SetState(4320) p.BusinessEventAttrDef() } - p.SetState(4268) + p.SetState(4325) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -64756,7 +67879,7 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef _la = p.GetTokenStream().LA(1) } { - p.SetState(4269) + p.SetState(4326) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -64764,7 +67887,7 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef } } { - p.SetState(4270) + p.SetState(4327) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserPUBLISH || _la == MDLParserSUBSCRIBE) { @@ -64774,7 +67897,7 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef p.Consume() } } - p.SetState(4273) + p.SetState(4330) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -64783,7 +67906,7 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef if _la == MDLParserENTITY { { - p.SetState(4271) + p.SetState(4328) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -64791,12 +67914,12 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef } } { - p.SetState(4272) + p.SetState(4329) p.QualifiedName() } } - p.SetState(4277) + p.SetState(4334) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -64805,7 +67928,7 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef if _la == MDLParserMICROFLOW { { - p.SetState(4275) + p.SetState(4332) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -64813,13 +67936,13 @@ func (p *MDLParser) BusinessEventMessageDef() (localctx IBusinessEventMessageDef } } { - p.SetState(4276) + p.SetState(4333) p.QualifiedName() } } { - p.SetState(4279) + p.SetState(4336) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -64932,12 +68055,22 @@ func (s *BusinessEventAttrDefContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *BusinessEventAttrDefContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitBusinessEventAttrDef(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) BusinessEventAttrDef() (localctx IBusinessEventAttrDefContext) { localctx = NewBusinessEventAttrDefContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 516, MDLParserRULE_businessEventAttrDef) p.EnterOuterAlt(localctx, 1) { - p.SetState(4281) + p.SetState(4338) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -64945,7 +68078,7 @@ func (p *MDLParser) BusinessEventAttrDef() (localctx IBusinessEventAttrDefContex } } { - p.SetState(4282) + p.SetState(4339) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -64953,7 +68086,7 @@ func (p *MDLParser) BusinessEventAttrDef() (localctx IBusinessEventAttrDefContex } } { - p.SetState(4283) + p.SetState(4340) p.DataType() } @@ -65200,6 +68333,16 @@ func (s *CreateWorkflowStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *CreateWorkflowStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCreateWorkflowStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatementContext) { localctx = NewCreateWorkflowStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 518, MDLParserRULE_createWorkflowStatement) @@ -65207,7 +68350,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement p.EnterOuterAlt(localctx, 1) { - p.SetState(4285) + p.SetState(4342) p.Match(MDLParserWORKFLOW) if p.HasError() { // Recognition error - abort rule @@ -65215,10 +68358,10 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4286) + p.SetState(4343) p.QualifiedName() } - p.SetState(4291) + p.SetState(4348) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -65227,7 +68370,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement if _la == MDLParserPARAMETER { { - p.SetState(4287) + p.SetState(4344) p.Match(MDLParserPARAMETER) if p.HasError() { // Recognition error - abort rule @@ -65235,7 +68378,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4288) + p.SetState(4345) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule @@ -65243,7 +68386,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4289) + p.SetState(4346) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -65251,12 +68394,12 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4290) + p.SetState(4347) p.QualifiedName() } } - p.SetState(4295) + p.SetState(4352) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -65265,7 +68408,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement if _la == MDLParserDISPLAY { { - p.SetState(4293) + p.SetState(4350) p.Match(MDLParserDISPLAY) if p.HasError() { // Recognition error - abort rule @@ -65273,7 +68416,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4294) + p.SetState(4351) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -65282,7 +68425,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } - p.SetState(4299) + p.SetState(4356) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -65291,7 +68434,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement if _la == MDLParserDESCRIPTION { { - p.SetState(4297) + p.SetState(4354) p.Match(MDLParserDESCRIPTION) if p.HasError() { // Recognition error - abort rule @@ -65299,7 +68442,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4298) + p.SetState(4355) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -65308,7 +68451,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } - p.SetState(4304) + p.SetState(4361) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -65317,7 +68460,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement if _la == MDLParserEXPORT { { - p.SetState(4301) + p.SetState(4358) p.Match(MDLParserEXPORT) if p.HasError() { // Recognition error - abort rule @@ -65325,7 +68468,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4302) + p.SetState(4359) p.Match(MDLParserLEVEL) if p.HasError() { // Recognition error - abort rule @@ -65333,7 +68476,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4303) + p.SetState(4360) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserAPI || _la == MDLParserIDENTIFIER) { @@ -65345,7 +68488,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } - p.SetState(4309) + p.SetState(4366) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -65354,7 +68497,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement if _la == MDLParserOVERVIEW { { - p.SetState(4306) + p.SetState(4363) p.Match(MDLParserOVERVIEW) if p.HasError() { // Recognition error - abort rule @@ -65362,7 +68505,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4307) + p.SetState(4364) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -65370,12 +68513,12 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4308) + p.SetState(4365) p.QualifiedName() } } - p.SetState(4314) + p.SetState(4371) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -65384,7 +68527,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement if _la == MDLParserDUE { { - p.SetState(4311) + p.SetState(4368) p.Match(MDLParserDUE) if p.HasError() { // Recognition error - abort rule @@ -65392,7 +68535,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4312) + p.SetState(4369) p.Match(MDLParserDATE_TYPE) if p.HasError() { // Recognition error - abort rule @@ -65400,7 +68543,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4313) + p.SetState(4370) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -65410,7 +68553,7 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } { - p.SetState(4316) + p.SetState(4373) p.Match(MDLParserBEGIN) if p.HasError() { // Recognition error - abort rule @@ -65418,11 +68561,11 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4317) + p.SetState(4374) p.WorkflowBody() } { - p.SetState(4318) + p.SetState(4375) p.Match(MDLParserEND) if p.HasError() { // Recognition error - abort rule @@ -65430,19 +68573,19 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } } { - p.SetState(4319) + p.SetState(4376) p.Match(MDLParserWORKFLOW) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4321) + p.SetState(4378) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 449, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 459, p.GetParserRuleContext()) == 1 { { - p.SetState(4320) + p.SetState(4377) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -65453,12 +68596,12 @@ func (p *MDLParser) CreateWorkflowStatement() (localctx ICreateWorkflowStatement } else if p.HasError() { // JIM goto errorExit } - p.SetState(4324) + p.SetState(4381) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 450, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 460, p.GetParserRuleContext()) == 1 { { - p.SetState(4323) + p.SetState(4380) p.Match(MDLParserSLASH) if p.HasError() { // Recognition error - abort rule @@ -65591,26 +68734,36 @@ func (s *WorkflowBodyContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WorkflowBodyContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowBody(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowBody() (localctx IWorkflowBodyContext) { localctx = NewWorkflowBodyContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 520, MDLParserRULE_workflowBody) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(4329) + p.SetState(4386) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for _la == MDLParserCALL || ((int64((_la-455)) & ^0x3f) == 0 && ((int64(1)<<(_la-455))&291077) != 0) { + for _la == MDLParserCALL || ((int64((_la-458)) & ^0x3f) == 0 && ((int64(1)<<(_la-458))&291077) != 0) { { - p.SetState(4326) + p.SetState(4383) p.WorkflowActivityStmt() } - p.SetState(4331) + p.SetState(4388) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -65854,24 +69007,34 @@ func (s *WorkflowActivityStmtContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *WorkflowActivityStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowActivityStmt(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowActivityStmt() (localctx IWorkflowActivityStmtContext) { localctx = NewWorkflowActivityStmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 522, MDLParserRULE_workflowActivityStmt) - p.SetState(4359) + p.SetState(4416) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 452, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 462, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(4332) + p.SetState(4389) p.WorkflowUserTaskStmt() } { - p.SetState(4333) + p.SetState(4390) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -65882,11 +69045,11 @@ func (p *MDLParser) WorkflowActivityStmt() (localctx IWorkflowActivityStmtContex case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(4335) + p.SetState(4392) p.WorkflowCallMicroflowStmt() } { - p.SetState(4336) + p.SetState(4393) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -65897,11 +69060,11 @@ func (p *MDLParser) WorkflowActivityStmt() (localctx IWorkflowActivityStmtContex case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(4338) + p.SetState(4395) p.WorkflowCallWorkflowStmt() } { - p.SetState(4339) + p.SetState(4396) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -65912,11 +69075,11 @@ func (p *MDLParser) WorkflowActivityStmt() (localctx IWorkflowActivityStmtContex case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(4341) + p.SetState(4398) p.WorkflowDecisionStmt() } { - p.SetState(4342) + p.SetState(4399) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -65927,11 +69090,11 @@ func (p *MDLParser) WorkflowActivityStmt() (localctx IWorkflowActivityStmtContex case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(4344) + p.SetState(4401) p.WorkflowParallelSplitStmt() } { - p.SetState(4345) + p.SetState(4402) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -65942,11 +69105,11 @@ func (p *MDLParser) WorkflowActivityStmt() (localctx IWorkflowActivityStmtContex case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(4347) + p.SetState(4404) p.WorkflowJumpToStmt() } { - p.SetState(4348) + p.SetState(4405) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -65957,11 +69120,11 @@ func (p *MDLParser) WorkflowActivityStmt() (localctx IWorkflowActivityStmtContex case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(4350) + p.SetState(4407) p.WorkflowWaitForTimerStmt() } { - p.SetState(4351) + p.SetState(4408) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -65972,11 +69135,11 @@ func (p *MDLParser) WorkflowActivityStmt() (localctx IWorkflowActivityStmtContex case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(4353) + p.SetState(4410) p.WorkflowWaitForNotificationStmt() } { - p.SetState(4354) + p.SetState(4411) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -65987,11 +69150,11 @@ func (p *MDLParser) WorkflowActivityStmt() (localctx IWorkflowActivityStmtContex case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(4356) + p.SetState(4413) p.WorkflowAnnotationStmt() } { - p.SetState(4357) + p.SetState(4414) p.Match(MDLParserSEMICOLON) if p.HasError() { // Recognition error - abort rule @@ -66300,12 +69463,22 @@ func (s *WorkflowUserTaskStmtContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *WorkflowUserTaskStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowUserTaskStmt(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContext) { localctx = NewWorkflowUserTaskStmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 524, MDLParserRULE_workflowUserTaskStmt) var _la int - p.SetState(4458) + p.SetState(4515) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66315,7 +69488,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex case MDLParserUSER: p.EnterOuterAlt(localctx, 1) { - p.SetState(4361) + p.SetState(4418) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -66323,7 +69496,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4362) + p.SetState(4419) p.Match(MDLParserTASK) if p.HasError() { // Recognition error - abort rule @@ -66331,7 +69504,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4363) + p.SetState(4420) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -66339,14 +69512,14 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4364) + p.SetState(4421) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4367) + p.SetState(4424) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66355,7 +69528,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserPAGE { { - p.SetState(4365) + p.SetState(4422) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -66363,17 +69536,17 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4366) + p.SetState(4423) p.QualifiedName() } } - p.SetState(4372) + p.SetState(4429) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 454, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 464, p.GetParserRuleContext()) == 1 { { - p.SetState(4369) + p.SetState(4426) p.Match(MDLParserTARGETING) if p.HasError() { // Recognition error - abort rule @@ -66381,7 +69554,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4370) + p.SetState(4427) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -66389,14 +69562,14 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4371) + p.SetState(4428) p.QualifiedName() } } else if p.HasError() { // JIM goto errorExit } - p.SetState(4377) + p.SetState(4434) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66405,7 +69578,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserTARGETING { { - p.SetState(4374) + p.SetState(4431) p.Match(MDLParserTARGETING) if p.HasError() { // Recognition error - abort rule @@ -66413,7 +69586,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4375) + p.SetState(4432) p.Match(MDLParserXPATH) if p.HasError() { // Recognition error - abort rule @@ -66421,7 +69594,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4376) + p.SetState(4433) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -66430,7 +69603,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } - p.SetState(4381) + p.SetState(4438) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66439,7 +69612,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserENTITY { { - p.SetState(4379) + p.SetState(4436) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -66447,12 +69620,12 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4380) + p.SetState(4437) p.QualifiedName() } } - p.SetState(4386) + p.SetState(4443) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66461,7 +69634,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserDUE { { - p.SetState(4383) + p.SetState(4440) p.Match(MDLParserDUE) if p.HasError() { // Recognition error - abort rule @@ -66469,7 +69642,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4384) + p.SetState(4441) p.Match(MDLParserDATE_TYPE) if p.HasError() { // Recognition error - abort rule @@ -66477,7 +69650,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4385) + p.SetState(4442) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -66486,7 +69659,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } - p.SetState(4390) + p.SetState(4447) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66495,7 +69668,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserDESCRIPTION { { - p.SetState(4388) + p.SetState(4445) p.Match(MDLParserDESCRIPTION) if p.HasError() { // Recognition error - abort rule @@ -66503,7 +69676,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4389) + p.SetState(4446) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -66512,7 +69685,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } - p.SetState(4398) + p.SetState(4455) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66521,14 +69694,14 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserOUTCOMES { { - p.SetState(4392) + p.SetState(4449) p.Match(MDLParserOUTCOMES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4394) + p.SetState(4451) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66537,11 +69710,11 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex for ok := true; ok; ok = _la == MDLParserSTRING_LITERAL { { - p.SetState(4393) + p.SetState(4450) p.WorkflowUserTaskOutcome() } - p.SetState(4396) + p.SetState(4453) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66550,7 +69723,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } - p.SetState(4407) + p.SetState(4464) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66559,7 +69732,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserBOUNDARY { { - p.SetState(4400) + p.SetState(4457) p.Match(MDLParserBOUNDARY) if p.HasError() { // Recognition error - abort rule @@ -66567,27 +69740,27 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4401) + p.SetState(4458) p.Match(MDLParserEVENT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4403) + p.SetState(4460) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = ((int64((_la-462)) & ^0x3f) == 0 && ((int64(1)<<(_la-462))&1537) != 0) { + for ok := true; ok; ok = ((int64((_la-465)) & ^0x3f) == 0 && ((int64(1)<<(_la-465))&1537) != 0) { { - p.SetState(4402) + p.SetState(4459) p.WorkflowBoundaryEventClause() } - p.SetState(4405) + p.SetState(4462) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66600,7 +69773,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex case MDLParserMULTI: p.EnterOuterAlt(localctx, 2) { - p.SetState(4409) + p.SetState(4466) p.Match(MDLParserMULTI) if p.HasError() { // Recognition error - abort rule @@ -66608,7 +69781,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4410) + p.SetState(4467) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -66616,7 +69789,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4411) + p.SetState(4468) p.Match(MDLParserTASK) if p.HasError() { // Recognition error - abort rule @@ -66624,7 +69797,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4412) + p.SetState(4469) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -66632,14 +69805,14 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4413) + p.SetState(4470) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4416) + p.SetState(4473) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66648,7 +69821,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserPAGE { { - p.SetState(4414) + p.SetState(4471) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -66656,17 +69829,17 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4415) + p.SetState(4472) p.QualifiedName() } } - p.SetState(4421) + p.SetState(4478) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 464, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 474, p.GetParserRuleContext()) == 1 { { - p.SetState(4418) + p.SetState(4475) p.Match(MDLParserTARGETING) if p.HasError() { // Recognition error - abort rule @@ -66674,7 +69847,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4419) + p.SetState(4476) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -66682,14 +69855,14 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4420) + p.SetState(4477) p.QualifiedName() } } else if p.HasError() { // JIM goto errorExit } - p.SetState(4426) + p.SetState(4483) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66698,7 +69871,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserTARGETING { { - p.SetState(4423) + p.SetState(4480) p.Match(MDLParserTARGETING) if p.HasError() { // Recognition error - abort rule @@ -66706,7 +69879,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4424) + p.SetState(4481) p.Match(MDLParserXPATH) if p.HasError() { // Recognition error - abort rule @@ -66714,7 +69887,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4425) + p.SetState(4482) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -66723,7 +69896,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } - p.SetState(4430) + p.SetState(4487) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66732,7 +69905,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserENTITY { { - p.SetState(4428) + p.SetState(4485) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -66740,12 +69913,12 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4429) + p.SetState(4486) p.QualifiedName() } } - p.SetState(4435) + p.SetState(4492) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66754,7 +69927,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserDUE { { - p.SetState(4432) + p.SetState(4489) p.Match(MDLParserDUE) if p.HasError() { // Recognition error - abort rule @@ -66762,7 +69935,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4433) + p.SetState(4490) p.Match(MDLParserDATE_TYPE) if p.HasError() { // Recognition error - abort rule @@ -66770,7 +69943,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4434) + p.SetState(4491) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -66779,7 +69952,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } - p.SetState(4439) + p.SetState(4496) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66788,7 +69961,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserDESCRIPTION { { - p.SetState(4437) + p.SetState(4494) p.Match(MDLParserDESCRIPTION) if p.HasError() { // Recognition error - abort rule @@ -66796,7 +69969,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4438) + p.SetState(4495) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -66805,7 +69978,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } - p.SetState(4447) + p.SetState(4504) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66814,14 +69987,14 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserOUTCOMES { { - p.SetState(4441) + p.SetState(4498) p.Match(MDLParserOUTCOMES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4443) + p.SetState(4500) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66830,11 +70003,11 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex for ok := true; ok; ok = _la == MDLParserSTRING_LITERAL { { - p.SetState(4442) + p.SetState(4499) p.WorkflowUserTaskOutcome() } - p.SetState(4445) + p.SetState(4502) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66843,7 +70016,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } - p.SetState(4456) + p.SetState(4513) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -66852,7 +70025,7 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex if _la == MDLParserBOUNDARY { { - p.SetState(4449) + p.SetState(4506) p.Match(MDLParserBOUNDARY) if p.HasError() { // Recognition error - abort rule @@ -66860,27 +70033,27 @@ func (p *MDLParser) WorkflowUserTaskStmt() (localctx IWorkflowUserTaskStmtContex } } { - p.SetState(4450) + p.SetState(4507) p.Match(MDLParserEVENT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4452) + p.SetState(4509) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = ((int64((_la-462)) & ^0x3f) == 0 && ((int64(1)<<(_la-462))&1537) != 0) { + for ok := true; ok; ok = ((int64((_la-465)) & ^0x3f) == 0 && ((int64(1)<<(_la-465))&1537) != 0) { { - p.SetState(4451) + p.SetState(4508) p.WorkflowBoundaryEventClause() } - p.SetState(4454) + p.SetState(4511) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67020,12 +70193,22 @@ func (s *WorkflowBoundaryEventClauseContext) ExitRule(listener antlr.ParseTreeLi } } +func (s *WorkflowBoundaryEventClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowBoundaryEventClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEventClauseContext) { localctx = NewWorkflowBoundaryEventClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 526, MDLParserRULE_workflowBoundaryEventClause) var _la int - p.SetState(4493) + p.SetState(4550) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67035,7 +70218,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve case MDLParserINTERRUPTING: p.EnterOuterAlt(localctx, 1) { - p.SetState(4460) + p.SetState(4517) p.Match(MDLParserINTERRUPTING) if p.HasError() { // Recognition error - abort rule @@ -67043,14 +70226,14 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve } } { - p.SetState(4461) + p.SetState(4518) p.Match(MDLParserTIMER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4463) + p.SetState(4520) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67059,7 +70242,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve if _la == MDLParserSTRING_LITERAL { { - p.SetState(4462) + p.SetState(4519) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -67068,7 +70251,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve } } - p.SetState(4469) + p.SetState(4526) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67077,7 +70260,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve if _la == MDLParserLBRACE { { - p.SetState(4465) + p.SetState(4522) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -67085,11 +70268,11 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve } } { - p.SetState(4466) + p.SetState(4523) p.WorkflowBody() } { - p.SetState(4467) + p.SetState(4524) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -67102,7 +70285,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve case MDLParserNON: p.EnterOuterAlt(localctx, 2) { - p.SetState(4471) + p.SetState(4528) p.Match(MDLParserNON) if p.HasError() { // Recognition error - abort rule @@ -67110,7 +70293,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve } } { - p.SetState(4472) + p.SetState(4529) p.Match(MDLParserINTERRUPTING) if p.HasError() { // Recognition error - abort rule @@ -67118,14 +70301,14 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve } } { - p.SetState(4473) + p.SetState(4530) p.Match(MDLParserTIMER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4475) + p.SetState(4532) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67134,7 +70317,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve if _la == MDLParserSTRING_LITERAL { { - p.SetState(4474) + p.SetState(4531) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -67143,7 +70326,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve } } - p.SetState(4481) + p.SetState(4538) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67152,7 +70335,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve if _la == MDLParserLBRACE { { - p.SetState(4477) + p.SetState(4534) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -67160,11 +70343,11 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve } } { - p.SetState(4478) + p.SetState(4535) p.WorkflowBody() } { - p.SetState(4479) + p.SetState(4536) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -67177,14 +70360,14 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve case MDLParserTIMER: p.EnterOuterAlt(localctx, 3) { - p.SetState(4483) + p.SetState(4540) p.Match(MDLParserTIMER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4485) + p.SetState(4542) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67193,7 +70376,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve if _la == MDLParserSTRING_LITERAL { { - p.SetState(4484) + p.SetState(4541) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -67202,7 +70385,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve } } - p.SetState(4491) + p.SetState(4548) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67211,7 +70394,7 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve if _la == MDLParserLBRACE { { - p.SetState(4487) + p.SetState(4544) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -67219,11 +70402,11 @@ func (p *MDLParser) WorkflowBoundaryEventClause() (localctx IWorkflowBoundaryEve } } { - p.SetState(4488) + p.SetState(4545) p.WorkflowBody() } { - p.SetState(4489) + p.SetState(4546) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -67348,12 +70531,22 @@ func (s *WorkflowUserTaskOutcomeContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *WorkflowUserTaskOutcomeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowUserTaskOutcome(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowUserTaskOutcome() (localctx IWorkflowUserTaskOutcomeContext) { localctx = NewWorkflowUserTaskOutcomeContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 528, MDLParserRULE_workflowUserTaskOutcome) p.EnterOuterAlt(localctx, 1) { - p.SetState(4495) + p.SetState(4552) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -67361,7 +70554,7 @@ func (p *MDLParser) WorkflowUserTaskOutcome() (localctx IWorkflowUserTaskOutcome } } { - p.SetState(4496) + p.SetState(4553) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -67369,11 +70562,11 @@ func (p *MDLParser) WorkflowUserTaskOutcome() (localctx IWorkflowUserTaskOutcome } } { - p.SetState(4497) + p.SetState(4554) p.WorkflowBody() } { - p.SetState(4498) + p.SetState(4555) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -67665,6 +70858,16 @@ func (s *WorkflowCallMicroflowStmtContext) ExitRule(listener antlr.ParseTreeList } } +func (s *WorkflowCallMicroflowStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowCallMicroflowStmt(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflowStmtContext) { localctx = NewWorkflowCallMicroflowStmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 530, MDLParserRULE_workflowCallMicroflowStmt) @@ -67672,7 +70875,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow p.EnterOuterAlt(localctx, 1) { - p.SetState(4500) + p.SetState(4557) p.Match(MDLParserCALL) if p.HasError() { // Recognition error - abort rule @@ -67680,7 +70883,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow } } { - p.SetState(4501) + p.SetState(4558) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -67688,10 +70891,10 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow } } { - p.SetState(4502) + p.SetState(4559) p.QualifiedName() } - p.SetState(4505) + p.SetState(4562) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67700,7 +70903,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow if _la == MDLParserCOMMENT { { - p.SetState(4503) + p.SetState(4560) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -67708,7 +70911,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow } } { - p.SetState(4504) + p.SetState(4561) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -67717,7 +70920,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow } } - p.SetState(4519) + p.SetState(4576) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67726,7 +70929,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow if _la == MDLParserWITH { { - p.SetState(4507) + p.SetState(4564) p.Match(MDLParserWITH) if p.HasError() { // Recognition error - abort rule @@ -67734,7 +70937,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow } } { - p.SetState(4508) + p.SetState(4565) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -67742,10 +70945,10 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow } } { - p.SetState(4509) + p.SetState(4566) p.WorkflowParameterMapping() } - p.SetState(4514) + p.SetState(4571) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67754,7 +70957,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow for _la == MDLParserCOMMA { { - p.SetState(4510) + p.SetState(4567) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -67762,11 +70965,11 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow } } { - p.SetState(4511) + p.SetState(4568) p.WorkflowParameterMapping() } - p.SetState(4516) + p.SetState(4573) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67774,7 +70977,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow _la = p.GetTokenStream().LA(1) } { - p.SetState(4517) + p.SetState(4574) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -67783,7 +70986,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow } } - p.SetState(4527) + p.SetState(4584) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67792,27 +70995,27 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow if _la == MDLParserOUTCOMES { { - p.SetState(4521) + p.SetState(4578) p.Match(MDLParserOUTCOMES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4523) + p.SetState(4580) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = ((int64((_la-295)) & ^0x3f) == 0 && ((int64(1)<<(_la-295))&7) != 0) || _la == MDLParserSTRING_LITERAL { + for ok := true; ok; ok = ((int64((_la-298)) & ^0x3f) == 0 && ((int64(1)<<(_la-298))&7) != 0) || _la == MDLParserSTRING_LITERAL { { - p.SetState(4522) + p.SetState(4579) p.WorkflowConditionOutcome() } - p.SetState(4525) + p.SetState(4582) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67821,7 +71024,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow } } - p.SetState(4536) + p.SetState(4593) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67830,7 +71033,7 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow if _la == MDLParserBOUNDARY { { - p.SetState(4529) + p.SetState(4586) p.Match(MDLParserBOUNDARY) if p.HasError() { // Recognition error - abort rule @@ -67838,27 +71041,27 @@ func (p *MDLParser) WorkflowCallMicroflowStmt() (localctx IWorkflowCallMicroflow } } { - p.SetState(4530) + p.SetState(4587) p.Match(MDLParserEVENT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4532) + p.SetState(4589) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = ((int64((_la-462)) & ^0x3f) == 0 && ((int64(1)<<(_la-462))&1537) != 0) { + for ok := true; ok; ok = ((int64((_la-465)) & ^0x3f) == 0 && ((int64(1)<<(_la-465))&1537) != 0) { { - p.SetState(4531) + p.SetState(4588) p.WorkflowBoundaryEventClause() } - p.SetState(4534) + p.SetState(4591) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -67973,16 +71176,26 @@ func (s *WorkflowParameterMappingContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *WorkflowParameterMappingContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowParameterMapping(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowParameterMapping() (localctx IWorkflowParameterMappingContext) { localctx = NewWorkflowParameterMappingContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 532, MDLParserRULE_workflowParameterMapping) p.EnterOuterAlt(localctx, 1) { - p.SetState(4538) + p.SetState(4595) p.QualifiedName() } { - p.SetState(4539) + p.SetState(4596) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -67990,7 +71203,7 @@ func (p *MDLParser) WorkflowParameterMapping() (localctx IWorkflowParameterMappi } } { - p.SetState(4540) + p.SetState(4597) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -68181,6 +71394,16 @@ func (s *WorkflowCallWorkflowStmtContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *WorkflowCallWorkflowStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowCallWorkflowStmt(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowStmtContext) { localctx = NewWorkflowCallWorkflowStmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 534, MDLParserRULE_workflowCallWorkflowStmt) @@ -68188,7 +71411,7 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt p.EnterOuterAlt(localctx, 1) { - p.SetState(4542) + p.SetState(4599) p.Match(MDLParserCALL) if p.HasError() { // Recognition error - abort rule @@ -68196,7 +71419,7 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt } } { - p.SetState(4543) + p.SetState(4600) p.Match(MDLParserWORKFLOW) if p.HasError() { // Recognition error - abort rule @@ -68204,10 +71427,10 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt } } { - p.SetState(4544) + p.SetState(4601) p.QualifiedName() } - p.SetState(4547) + p.SetState(4604) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -68216,7 +71439,7 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt if _la == MDLParserCOMMENT { { - p.SetState(4545) + p.SetState(4602) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -68224,7 +71447,7 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt } } { - p.SetState(4546) + p.SetState(4603) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -68233,7 +71456,7 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt } } - p.SetState(4561) + p.SetState(4618) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -68242,7 +71465,7 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt if _la == MDLParserWITH { { - p.SetState(4549) + p.SetState(4606) p.Match(MDLParserWITH) if p.HasError() { // Recognition error - abort rule @@ -68250,7 +71473,7 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt } } { - p.SetState(4550) + p.SetState(4607) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -68258,10 +71481,10 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt } } { - p.SetState(4551) + p.SetState(4608) p.WorkflowParameterMapping() } - p.SetState(4556) + p.SetState(4613) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -68270,7 +71493,7 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt for _la == MDLParserCOMMA { { - p.SetState(4552) + p.SetState(4609) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -68278,11 +71501,11 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt } } { - p.SetState(4553) + p.SetState(4610) p.WorkflowParameterMapping() } - p.SetState(4558) + p.SetState(4615) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -68290,7 +71513,7 @@ func (p *MDLParser) WorkflowCallWorkflowStmt() (localctx IWorkflowCallWorkflowSt _la = p.GetTokenStream().LA(1) } { - p.SetState(4559) + p.SetState(4616) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -68446,6 +71669,16 @@ func (s *WorkflowDecisionStmtContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *WorkflowDecisionStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowDecisionStmt(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowDecisionStmt() (localctx IWorkflowDecisionStmtContext) { localctx = NewWorkflowDecisionStmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 536, MDLParserRULE_workflowDecisionStmt) @@ -68453,14 +71686,14 @@ func (p *MDLParser) WorkflowDecisionStmt() (localctx IWorkflowDecisionStmtContex p.EnterOuterAlt(localctx, 1) { - p.SetState(4563) + p.SetState(4620) p.Match(MDLParserDECISION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4565) + p.SetState(4622) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -68469,7 +71702,7 @@ func (p *MDLParser) WorkflowDecisionStmt() (localctx IWorkflowDecisionStmtContex if _la == MDLParserSTRING_LITERAL { { - p.SetState(4564) + p.SetState(4621) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -68478,7 +71711,7 @@ func (p *MDLParser) WorkflowDecisionStmt() (localctx IWorkflowDecisionStmtContex } } - p.SetState(4569) + p.SetState(4626) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -68487,7 +71720,7 @@ func (p *MDLParser) WorkflowDecisionStmt() (localctx IWorkflowDecisionStmtContex if _la == MDLParserCOMMENT { { - p.SetState(4567) + p.SetState(4624) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -68495,7 +71728,7 @@ func (p *MDLParser) WorkflowDecisionStmt() (localctx IWorkflowDecisionStmtContex } } { - p.SetState(4568) + p.SetState(4625) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -68504,7 +71737,7 @@ func (p *MDLParser) WorkflowDecisionStmt() (localctx IWorkflowDecisionStmtContex } } - p.SetState(4577) + p.SetState(4634) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -68513,27 +71746,27 @@ func (p *MDLParser) WorkflowDecisionStmt() (localctx IWorkflowDecisionStmtContex if _la == MDLParserOUTCOMES { { - p.SetState(4571) + p.SetState(4628) p.Match(MDLParserOUTCOMES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4573) + p.SetState(4630) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = ((int64((_la-295)) & ^0x3f) == 0 && ((int64(1)<<(_la-295))&7) != 0) || _la == MDLParserSTRING_LITERAL { + for ok := true; ok; ok = ((int64((_la-298)) & ^0x3f) == 0 && ((int64(1)<<(_la-298))&7) != 0) || _la == MDLParserSTRING_LITERAL { { - p.SetState(4572) + p.SetState(4629) p.WorkflowConditionOutcome() } - p.SetState(4575) + p.SetState(4632) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -68673,6 +71906,16 @@ func (s *WorkflowConditionOutcomeContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *WorkflowConditionOutcomeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowConditionOutcome(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowConditionOutcome() (localctx IWorkflowConditionOutcomeContext) { localctx = NewWorkflowConditionOutcomeContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 538, MDLParserRULE_workflowConditionOutcome) @@ -68680,10 +71923,10 @@ func (p *MDLParser) WorkflowConditionOutcome() (localctx IWorkflowConditionOutco p.EnterOuterAlt(localctx, 1) { - p.SetState(4579) + p.SetState(4636) _la = p.GetTokenStream().LA(1) - if !(((int64((_la-295)) & ^0x3f) == 0 && ((int64(1)<<(_la-295))&7) != 0) || _la == MDLParserSTRING_LITERAL) { + if !(((int64((_la-298)) & ^0x3f) == 0 && ((int64(1)<<(_la-298))&7) != 0) || _la == MDLParserSTRING_LITERAL) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -68691,7 +71934,7 @@ func (p *MDLParser) WorkflowConditionOutcome() (localctx IWorkflowConditionOutco } } { - p.SetState(4580) + p.SetState(4637) p.Match(MDLParserARROW) if p.HasError() { // Recognition error - abort rule @@ -68699,7 +71942,7 @@ func (p *MDLParser) WorkflowConditionOutcome() (localctx IWorkflowConditionOutco } } { - p.SetState(4581) + p.SetState(4638) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -68707,11 +71950,11 @@ func (p *MDLParser) WorkflowConditionOutcome() (localctx IWorkflowConditionOutco } } { - p.SetState(4582) + p.SetState(4639) p.WorkflowBody() } { - p.SetState(4583) + p.SetState(4640) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -68860,6 +72103,16 @@ func (s *WorkflowParallelSplitStmtContext) ExitRule(listener antlr.ParseTreeList } } +func (s *WorkflowParallelSplitStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowParallelSplitStmt(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowParallelSplitStmt() (localctx IWorkflowParallelSplitStmtContext) { localctx = NewWorkflowParallelSplitStmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 540, MDLParserRULE_workflowParallelSplitStmt) @@ -68867,7 +72120,7 @@ func (p *MDLParser) WorkflowParallelSplitStmt() (localctx IWorkflowParallelSplit p.EnterOuterAlt(localctx, 1) { - p.SetState(4585) + p.SetState(4642) p.Match(MDLParserPARALLEL) if p.HasError() { // Recognition error - abort rule @@ -68875,14 +72128,14 @@ func (p *MDLParser) WorkflowParallelSplitStmt() (localctx IWorkflowParallelSplit } } { - p.SetState(4586) + p.SetState(4643) p.Match(MDLParserSPLIT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4589) + p.SetState(4646) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -68891,7 +72144,7 @@ func (p *MDLParser) WorkflowParallelSplitStmt() (localctx IWorkflowParallelSplit if _la == MDLParserCOMMENT { { - p.SetState(4587) + p.SetState(4644) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -68899,7 +72152,7 @@ func (p *MDLParser) WorkflowParallelSplitStmt() (localctx IWorkflowParallelSplit } } { - p.SetState(4588) + p.SetState(4645) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -68908,7 +72161,7 @@ func (p *MDLParser) WorkflowParallelSplitStmt() (localctx IWorkflowParallelSplit } } - p.SetState(4592) + p.SetState(4649) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -68917,11 +72170,11 @@ func (p *MDLParser) WorkflowParallelSplitStmt() (localctx IWorkflowParallelSplit for ok := true; ok; ok = _la == MDLParserPATH { { - p.SetState(4591) + p.SetState(4648) p.WorkflowParallelPath() } - p.SetState(4594) + p.SetState(4651) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -69044,12 +72297,22 @@ func (s *WorkflowParallelPathContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *WorkflowParallelPathContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowParallelPath(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowParallelPath() (localctx IWorkflowParallelPathContext) { localctx = NewWorkflowParallelPathContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 542, MDLParserRULE_workflowParallelPath) p.EnterOuterAlt(localctx, 1) { - p.SetState(4596) + p.SetState(4653) p.Match(MDLParserPATH) if p.HasError() { // Recognition error - abort rule @@ -69057,7 +72320,7 @@ func (p *MDLParser) WorkflowParallelPath() (localctx IWorkflowParallelPathContex } } { - p.SetState(4597) + p.SetState(4654) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -69065,7 +72328,7 @@ func (p *MDLParser) WorkflowParallelPath() (localctx IWorkflowParallelPathContex } } { - p.SetState(4598) + p.SetState(4655) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -69073,11 +72336,11 @@ func (p *MDLParser) WorkflowParallelPath() (localctx IWorkflowParallelPathContex } } { - p.SetState(4599) + p.SetState(4656) p.WorkflowBody() } { - p.SetState(4600) + p.SetState(4657) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -69188,6 +72451,16 @@ func (s *WorkflowJumpToStmtContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WorkflowJumpToStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowJumpToStmt(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowJumpToStmt() (localctx IWorkflowJumpToStmtContext) { localctx = NewWorkflowJumpToStmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 544, MDLParserRULE_workflowJumpToStmt) @@ -69195,7 +72468,7 @@ func (p *MDLParser) WorkflowJumpToStmt() (localctx IWorkflowJumpToStmtContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(4602) + p.SetState(4659) p.Match(MDLParserJUMP) if p.HasError() { // Recognition error - abort rule @@ -69203,7 +72476,7 @@ func (p *MDLParser) WorkflowJumpToStmt() (localctx IWorkflowJumpToStmtContext) { } } { - p.SetState(4603) + p.SetState(4660) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -69211,14 +72484,14 @@ func (p *MDLParser) WorkflowJumpToStmt() (localctx IWorkflowJumpToStmtContext) { } } { - p.SetState(4604) + p.SetState(4661) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4607) + p.SetState(4664) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -69227,7 +72500,7 @@ func (p *MDLParser) WorkflowJumpToStmt() (localctx IWorkflowJumpToStmtContext) { if _la == MDLParserCOMMENT { { - p.SetState(4605) + p.SetState(4662) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -69235,7 +72508,7 @@ func (p *MDLParser) WorkflowJumpToStmt() (localctx IWorkflowJumpToStmtContext) { } } { - p.SetState(4606) + p.SetState(4663) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -69353,6 +72626,16 @@ func (s *WorkflowWaitForTimerStmtContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *WorkflowWaitForTimerStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowWaitForTimerStmt(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowWaitForTimerStmt() (localctx IWorkflowWaitForTimerStmtContext) { localctx = NewWorkflowWaitForTimerStmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 546, MDLParserRULE_workflowWaitForTimerStmt) @@ -69360,7 +72643,7 @@ func (p *MDLParser) WorkflowWaitForTimerStmt() (localctx IWorkflowWaitForTimerSt p.EnterOuterAlt(localctx, 1) { - p.SetState(4609) + p.SetState(4666) p.Match(MDLParserWAIT) if p.HasError() { // Recognition error - abort rule @@ -69368,7 +72651,7 @@ func (p *MDLParser) WorkflowWaitForTimerStmt() (localctx IWorkflowWaitForTimerSt } } { - p.SetState(4610) + p.SetState(4667) p.Match(MDLParserFOR) if p.HasError() { // Recognition error - abort rule @@ -69376,14 +72659,14 @@ func (p *MDLParser) WorkflowWaitForTimerStmt() (localctx IWorkflowWaitForTimerSt } } { - p.SetState(4611) + p.SetState(4668) p.Match(MDLParserTIMER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4613) + p.SetState(4670) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -69392,7 +72675,7 @@ func (p *MDLParser) WorkflowWaitForTimerStmt() (localctx IWorkflowWaitForTimerSt if _la == MDLParserSTRING_LITERAL { { - p.SetState(4612) + p.SetState(4669) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -69401,7 +72684,7 @@ func (p *MDLParser) WorkflowWaitForTimerStmt() (localctx IWorkflowWaitForTimerSt } } - p.SetState(4617) + p.SetState(4674) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -69410,7 +72693,7 @@ func (p *MDLParser) WorkflowWaitForTimerStmt() (localctx IWorkflowWaitForTimerSt if _la == MDLParserCOMMENT { { - p.SetState(4615) + p.SetState(4672) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -69418,7 +72701,7 @@ func (p *MDLParser) WorkflowWaitForTimerStmt() (localctx IWorkflowWaitForTimerSt } } { - p.SetState(4616) + p.SetState(4673) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -69584,6 +72867,16 @@ func (s *WorkflowWaitForNotificationStmtContext) ExitRule(listener antlr.ParseTr } } +func (s *WorkflowWaitForNotificationStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowWaitForNotificationStmt(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowWaitForNotificationStmt() (localctx IWorkflowWaitForNotificationStmtContext) { localctx = NewWorkflowWaitForNotificationStmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 548, MDLParserRULE_workflowWaitForNotificationStmt) @@ -69591,7 +72884,7 @@ func (p *MDLParser) WorkflowWaitForNotificationStmt() (localctx IWorkflowWaitFor p.EnterOuterAlt(localctx, 1) { - p.SetState(4619) + p.SetState(4676) p.Match(MDLParserWAIT) if p.HasError() { // Recognition error - abort rule @@ -69599,7 +72892,7 @@ func (p *MDLParser) WorkflowWaitForNotificationStmt() (localctx IWorkflowWaitFor } } { - p.SetState(4620) + p.SetState(4677) p.Match(MDLParserFOR) if p.HasError() { // Recognition error - abort rule @@ -69607,14 +72900,14 @@ func (p *MDLParser) WorkflowWaitForNotificationStmt() (localctx IWorkflowWaitFor } } { - p.SetState(4621) + p.SetState(4678) p.Match(MDLParserNOTIFICATION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4624) + p.SetState(4681) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -69623,7 +72916,7 @@ func (p *MDLParser) WorkflowWaitForNotificationStmt() (localctx IWorkflowWaitFor if _la == MDLParserCOMMENT { { - p.SetState(4622) + p.SetState(4679) p.Match(MDLParserCOMMENT) if p.HasError() { // Recognition error - abort rule @@ -69631,7 +72924,7 @@ func (p *MDLParser) WorkflowWaitForNotificationStmt() (localctx IWorkflowWaitFor } } { - p.SetState(4623) + p.SetState(4680) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -69640,7 +72933,7 @@ func (p *MDLParser) WorkflowWaitForNotificationStmt() (localctx IWorkflowWaitFor } } - p.SetState(4633) + p.SetState(4690) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -69649,7 +72942,7 @@ func (p *MDLParser) WorkflowWaitForNotificationStmt() (localctx IWorkflowWaitFor if _la == MDLParserBOUNDARY { { - p.SetState(4626) + p.SetState(4683) p.Match(MDLParserBOUNDARY) if p.HasError() { // Recognition error - abort rule @@ -69657,27 +72950,27 @@ func (p *MDLParser) WorkflowWaitForNotificationStmt() (localctx IWorkflowWaitFor } } { - p.SetState(4627) + p.SetState(4684) p.Match(MDLParserEVENT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4629) + p.SetState(4686) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = ((int64((_la-462)) & ^0x3f) == 0 && ((int64(1)<<(_la-462))&1537) != 0) { + for ok := true; ok; ok = ((int64((_la-465)) & ^0x3f) == 0 && ((int64(1)<<(_la-465))&1537) != 0) { { - p.SetState(4628) + p.SetState(4685) p.WorkflowBoundaryEventClause() } - p.SetState(4631) + p.SetState(4688) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -69775,12 +73068,22 @@ func (s *WorkflowAnnotationStmtContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *WorkflowAnnotationStmtContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWorkflowAnnotationStmt(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WorkflowAnnotationStmt() (localctx IWorkflowAnnotationStmtContext) { localctx = NewWorkflowAnnotationStmtContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 550, MDLParserRULE_workflowAnnotationStmt) p.EnterOuterAlt(localctx, 1) { - p.SetState(4635) + p.SetState(4692) p.Match(MDLParserANNOTATION) if p.HasError() { // Recognition error - abort rule @@ -69788,7 +73091,7 @@ func (p *MDLParser) WorkflowAnnotationStmt() (localctx IWorkflowAnnotationStmtCo } } { - p.SetState(4636) + p.SetState(4693) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -69996,12 +73299,22 @@ func (s *AlterSettingsClauseContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *AlterSettingsClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAlterSettingsClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) { localctx = NewAlterSettingsClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 552, MDLParserRULE_alterSettingsClause) var _la int - p.SetState(4677) + p.SetState(4734) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -70011,14 +73324,14 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) case MDLParserWORKFLOWS, MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(4638) + p.SetState(4695) p.SettingsSection() } { - p.SetState(4639) + p.SetState(4696) p.SettingsAssignment() } - p.SetState(4644) + p.SetState(4701) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -70027,7 +73340,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) for _la == MDLParserCOMMA { { - p.SetState(4640) + p.SetState(4697) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -70035,11 +73348,11 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4641) + p.SetState(4698) p.SettingsAssignment() } - p.SetState(4646) + p.SetState(4703) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -70050,7 +73363,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) case MDLParserCONSTANT: p.EnterOuterAlt(localctx, 2) { - p.SetState(4647) + p.SetState(4704) p.Match(MDLParserCONSTANT) if p.HasError() { // Recognition error - abort rule @@ -70058,14 +73371,14 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4648) + p.SetState(4705) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4652) + p.SetState(4709) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -70074,7 +73387,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) switch p.GetTokenStream().LA(1) { case MDLParserVALUE: { - p.SetState(4649) + p.SetState(4706) p.Match(MDLParserVALUE) if p.HasError() { // Recognition error - abort rule @@ -70082,13 +73395,13 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4650) + p.SetState(4707) p.SettingsValue() } case MDLParserDROP: { - p.SetState(4651) + p.SetState(4708) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -70100,7 +73413,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) goto errorExit } - p.SetState(4657) + p.SetState(4714) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -70109,7 +73422,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) if _la == MDLParserIN { { - p.SetState(4654) + p.SetState(4711) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule @@ -70117,7 +73430,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4655) + p.SetState(4712) p.Match(MDLParserCONFIGURATION) if p.HasError() { // Recognition error - abort rule @@ -70125,7 +73438,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4656) + p.SetState(4713) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -70138,7 +73451,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) case MDLParserDROP: p.EnterOuterAlt(localctx, 3) { - p.SetState(4659) + p.SetState(4716) p.Match(MDLParserDROP) if p.HasError() { // Recognition error - abort rule @@ -70146,7 +73459,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4660) + p.SetState(4717) p.Match(MDLParserCONSTANT) if p.HasError() { // Recognition error - abort rule @@ -70154,14 +73467,14 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4661) + p.SetState(4718) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4665) + p.SetState(4722) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -70170,7 +73483,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) if _la == MDLParserIN { { - p.SetState(4662) + p.SetState(4719) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule @@ -70178,7 +73491,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4663) + p.SetState(4720) p.Match(MDLParserCONFIGURATION) if p.HasError() { // Recognition error - abort rule @@ -70186,7 +73499,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4664) + p.SetState(4721) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -70199,7 +73512,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) case MDLParserCONFIGURATION: p.EnterOuterAlt(localctx, 4) { - p.SetState(4667) + p.SetState(4724) p.Match(MDLParserCONFIGURATION) if p.HasError() { // Recognition error - abort rule @@ -70207,7 +73520,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4668) + p.SetState(4725) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -70215,10 +73528,10 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4669) + p.SetState(4726) p.SettingsAssignment() } - p.SetState(4674) + p.SetState(4731) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -70227,7 +73540,7 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) for _la == MDLParserCOMMA { { - p.SetState(4670) + p.SetState(4727) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -70235,11 +73548,11 @@ func (p *MDLParser) AlterSettingsClause() (localctx IAlterSettingsClauseContext) } } { - p.SetState(4671) + p.SetState(4728) p.SettingsAssignment() } - p.SetState(4676) + p.SetState(4733) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -70340,6 +73653,16 @@ func (s *SettingsSectionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SettingsSectionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSettingsSection(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SettingsSection() (localctx ISettingsSectionContext) { localctx = NewSettingsSectionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 554, MDLParserRULE_settingsSection) @@ -70347,7 +73670,7 @@ func (p *MDLParser) SettingsSection() (localctx ISettingsSectionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(4679) + p.SetState(4736) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserWORKFLOWS || _la == MDLParserIDENTIFIER) { @@ -70463,12 +73786,22 @@ func (s *SettingsAssignmentContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SettingsAssignmentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSettingsAssignment(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SettingsAssignment() (localctx ISettingsAssignmentContext) { localctx = NewSettingsAssignmentContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 556, MDLParserRULE_settingsAssignment) p.EnterOuterAlt(localctx, 1) { - p.SetState(4681) + p.SetState(4738) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -70476,7 +73809,7 @@ func (p *MDLParser) SettingsAssignment() (localctx ISettingsAssignmentContext) { } } { - p.SetState(4682) + p.SetState(4739) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -70484,7 +73817,7 @@ func (p *MDLParser) SettingsAssignment() (localctx ISettingsAssignmentContext) { } } { - p.SetState(4683) + p.SetState(4740) p.SettingsValue() } @@ -70610,20 +73943,30 @@ func (s *SettingsValueContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SettingsValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSettingsValue(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SettingsValue() (localctx ISettingsValueContext) { localctx = NewSettingsValueContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 558, MDLParserRULE_settingsValue) - p.SetState(4689) + p.SetState(4746) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 509, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 519, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(4685) + p.SetState(4742) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -70634,7 +73977,7 @@ func (p *MDLParser) SettingsValue() (localctx ISettingsValueContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(4686) + p.SetState(4743) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -70645,14 +73988,14 @@ func (p *MDLParser) SettingsValue() (localctx ISettingsValueContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(4687) + p.SetState(4744) p.BooleanLiteral() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(4688) + p.SetState(4745) p.QualifiedName() } @@ -70806,41 +74149,51 @@ func (s *DqlStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DqlStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDqlStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DqlStatement() (localctx IDqlStatementContext) { localctx = NewDqlStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 560, MDLParserRULE_dqlStatement) - p.SetState(4695) + p.SetState(4752) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 510, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 520, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(4691) + p.SetState(4748) p.ShowStatement() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(4692) + p.SetState(4749) p.DescribeStatement() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(4693) + p.SetState(4750) p.CatalogSelectQuery() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(4694) + p.SetState(4751) p.OqlQuery() } @@ -71362,22 +74715,32 @@ func (s *ShowStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ShowStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitShowStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { localctx = NewShowStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 562, MDLParserRULE_showStatement) var _la int - p.SetState(5104) + p.SetState(5161) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 575, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 585, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(4697) + p.SetState(4754) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71385,7 +74748,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4698) + p.SetState(4755) p.Match(MDLParserMODULES) if p.HasError() { // Recognition error - abort rule @@ -71396,7 +74759,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(4699) + p.SetState(4756) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71404,7 +74767,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4700) + p.SetState(4757) p.Match(MDLParserCONTRACT) if p.HasError() { // Recognition error - abort rule @@ -71412,7 +74775,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4701) + p.SetState(4758) p.Match(MDLParserENTITIES) if p.HasError() { // Recognition error - abort rule @@ -71420,7 +74783,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4702) + p.SetState(4759) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -71428,14 +74791,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4703) + p.SetState(4760) p.QualifiedName() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(4704) + p.SetState(4761) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71443,7 +74806,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4705) + p.SetState(4762) p.Match(MDLParserCONTRACT) if p.HasError() { // Recognition error - abort rule @@ -71451,7 +74814,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4706) + p.SetState(4763) p.Match(MDLParserACTIONS) if p.HasError() { // Recognition error - abort rule @@ -71459,7 +74822,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4707) + p.SetState(4764) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -71467,14 +74830,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4708) + p.SetState(4765) p.QualifiedName() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(4709) + p.SetState(4766) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71482,7 +74845,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4710) + p.SetState(4767) p.Match(MDLParserCONTRACT) if p.HasError() { // Recognition error - abort rule @@ -71490,7 +74853,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4711) + p.SetState(4768) p.Match(MDLParserCHANNELS) if p.HasError() { // Recognition error - abort rule @@ -71498,7 +74861,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4712) + p.SetState(4769) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -71506,14 +74869,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4713) + p.SetState(4770) p.QualifiedName() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(4714) + p.SetState(4771) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71521,7 +74884,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4715) + p.SetState(4772) p.Match(MDLParserCONTRACT) if p.HasError() { // Recognition error - abort rule @@ -71529,7 +74892,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4716) + p.SetState(4773) p.Match(MDLParserMESSAGES) if p.HasError() { // Recognition error - abort rule @@ -71537,7 +74900,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4717) + p.SetState(4774) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -71545,14 +74908,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4718) + p.SetState(4775) p.QualifiedName() } case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(4719) + p.SetState(4776) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71560,14 +74923,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4720) + p.SetState(4777) p.Match(MDLParserENTITIES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4726) + p.SetState(4783) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -71576,29 +74939,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4721) + p.SetState(4778) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4724) + p.SetState(4781) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 511, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 521, p.GetParserRuleContext()) { case 1: { - p.SetState(4722) + p.SetState(4779) p.QualifiedName() } case 2: { - p.SetState(4723) + p.SetState(4780) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -71615,7 +74978,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(4728) + p.SetState(4785) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71623,14 +74986,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4729) + p.SetState(4786) p.Match(MDLParserASSOCIATIONS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4735) + p.SetState(4792) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -71639,29 +75002,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4730) + p.SetState(4787) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4733) + p.SetState(4790) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 513, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 523, p.GetParserRuleContext()) { case 1: { - p.SetState(4731) + p.SetState(4788) p.QualifiedName() } case 2: { - p.SetState(4732) + p.SetState(4789) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -71678,7 +75041,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(4737) + p.SetState(4794) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71686,14 +75049,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4738) + p.SetState(4795) p.Match(MDLParserMICROFLOWS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4744) + p.SetState(4801) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -71702,29 +75065,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4739) + p.SetState(4796) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4742) + p.SetState(4799) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 515, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 525, p.GetParserRuleContext()) { case 1: { - p.SetState(4740) + p.SetState(4797) p.QualifiedName() } case 2: { - p.SetState(4741) + p.SetState(4798) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -71741,7 +75104,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(4746) + p.SetState(4803) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71749,14 +75112,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4747) + p.SetState(4804) p.Match(MDLParserNANOFLOWS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4753) + p.SetState(4810) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -71765,29 +75128,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4748) + p.SetState(4805) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4751) + p.SetState(4808) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 517, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 527, p.GetParserRuleContext()) { case 1: { - p.SetState(4749) + p.SetState(4806) p.QualifiedName() } case 2: { - p.SetState(4750) + p.SetState(4807) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -71804,7 +75167,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(4755) + p.SetState(4812) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71812,14 +75175,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4756) + p.SetState(4813) p.Match(MDLParserWORKFLOWS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4762) + p.SetState(4819) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -71828,29 +75191,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4757) + p.SetState(4814) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4760) + p.SetState(4817) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 519, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 529, p.GetParserRuleContext()) { case 1: { - p.SetState(4758) + p.SetState(4815) p.QualifiedName() } case 2: { - p.SetState(4759) + p.SetState(4816) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -71867,7 +75230,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(4764) + p.SetState(4821) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71875,14 +75238,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4765) + p.SetState(4822) p.Match(MDLParserPAGES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4771) + p.SetState(4828) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -71891,29 +75254,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4766) + p.SetState(4823) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4769) + p.SetState(4826) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 521, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 531, p.GetParserRuleContext()) { case 1: { - p.SetState(4767) + p.SetState(4824) p.QualifiedName() } case 2: { - p.SetState(4768) + p.SetState(4825) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -71930,7 +75293,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(4773) + p.SetState(4830) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -71938,14 +75301,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4774) + p.SetState(4831) p.Match(MDLParserSNIPPETS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4780) + p.SetState(4837) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -71954,29 +75317,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4775) + p.SetState(4832) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4778) + p.SetState(4835) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 523, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 533, p.GetParserRuleContext()) { case 1: { - p.SetState(4776) + p.SetState(4833) p.QualifiedName() } case 2: { - p.SetState(4777) + p.SetState(4834) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -71993,7 +75356,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(4782) + p.SetState(4839) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72001,14 +75364,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4783) + p.SetState(4840) p.Match(MDLParserENUMERATIONS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4789) + p.SetState(4846) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72017,29 +75380,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4784) + p.SetState(4841) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4787) + p.SetState(4844) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 525, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 535, p.GetParserRuleContext()) { case 1: { - p.SetState(4785) + p.SetState(4842) p.QualifiedName() } case 2: { - p.SetState(4786) + p.SetState(4843) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -72056,7 +75419,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(4791) + p.SetState(4848) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72064,14 +75427,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4792) + p.SetState(4849) p.Match(MDLParserCONSTANTS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4798) + p.SetState(4855) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72080,29 +75443,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4793) + p.SetState(4850) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4796) + p.SetState(4853) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 527, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 537, p.GetParserRuleContext()) { case 1: { - p.SetState(4794) + p.SetState(4851) p.QualifiedName() } case 2: { - p.SetState(4795) + p.SetState(4852) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -72119,7 +75482,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 15: p.EnterOuterAlt(localctx, 15) { - p.SetState(4800) + p.SetState(4857) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72127,7 +75490,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4801) + p.SetState(4858) p.Match(MDLParserCONSTANT) if p.HasError() { // Recognition error - abort rule @@ -72135,14 +75498,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4802) + p.SetState(4859) p.Match(MDLParserVALUES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4808) + p.SetState(4865) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72151,29 +75514,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4803) + p.SetState(4860) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4806) + p.SetState(4863) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 529, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 539, p.GetParserRuleContext()) { case 1: { - p.SetState(4804) + p.SetState(4861) p.QualifiedName() } case 2: { - p.SetState(4805) + p.SetState(4862) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -72190,7 +75553,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 16: p.EnterOuterAlt(localctx, 16) { - p.SetState(4810) + p.SetState(4867) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72198,14 +75561,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4811) + p.SetState(4868) p.Match(MDLParserLAYOUTS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4817) + p.SetState(4874) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72214,29 +75577,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4812) + p.SetState(4869) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4815) + p.SetState(4872) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 531, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 541, p.GetParserRuleContext()) { case 1: { - p.SetState(4813) + p.SetState(4870) p.QualifiedName() } case 2: { - p.SetState(4814) + p.SetState(4871) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -72253,7 +75616,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 17: p.EnterOuterAlt(localctx, 17) { - p.SetState(4819) + p.SetState(4876) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72261,14 +75624,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4820) + p.SetState(4877) p.Match(MDLParserNOTEBOOKS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4826) + p.SetState(4883) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72277,29 +75640,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4821) + p.SetState(4878) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4824) + p.SetState(4881) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 533, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 543, p.GetParserRuleContext()) { case 1: { - p.SetState(4822) + p.SetState(4879) p.QualifiedName() } case 2: { - p.SetState(4823) + p.SetState(4880) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -72316,7 +75679,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 18: p.EnterOuterAlt(localctx, 18) { - p.SetState(4828) + p.SetState(4885) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72324,7 +75687,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4829) + p.SetState(4886) p.Match(MDLParserJAVA) if p.HasError() { // Recognition error - abort rule @@ -72332,14 +75695,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4830) + p.SetState(4887) p.Match(MDLParserACTIONS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4836) + p.SetState(4893) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72348,29 +75711,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4831) + p.SetState(4888) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4834) + p.SetState(4891) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 535, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 545, p.GetParserRuleContext()) { case 1: { - p.SetState(4832) + p.SetState(4889) p.QualifiedName() } case 2: { - p.SetState(4833) + p.SetState(4890) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -72387,7 +75750,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 19: p.EnterOuterAlt(localctx, 19) { - p.SetState(4838) + p.SetState(4895) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72395,7 +75758,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4839) + p.SetState(4896) p.Match(MDLParserJAVASCRIPT) if p.HasError() { // Recognition error - abort rule @@ -72403,14 +75766,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4840) + p.SetState(4897) p.Match(MDLParserACTIONS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4846) + p.SetState(4903) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72419,29 +75782,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4841) + p.SetState(4898) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4844) + p.SetState(4901) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 537, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 547, p.GetParserRuleContext()) { case 1: { - p.SetState(4842) + p.SetState(4899) p.QualifiedName() } case 2: { - p.SetState(4843) + p.SetState(4900) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -72458,7 +75821,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 20: p.EnterOuterAlt(localctx, 20) { - p.SetState(4848) + p.SetState(4905) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72466,7 +75829,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4849) + p.SetState(4906) p.Match(MDLParserIMAGE) if p.HasError() { // Recognition error - abort rule @@ -72474,14 +75837,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4850) + p.SetState(4907) p.Match(MDLParserCOLLECTION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4856) + p.SetState(4913) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72490,29 +75853,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4851) + p.SetState(4908) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4854) + p.SetState(4911) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 539, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 549, p.GetParserRuleContext()) { case 1: { - p.SetState(4852) + p.SetState(4909) p.QualifiedName() } case 2: { - p.SetState(4853) + p.SetState(4910) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -72529,7 +75892,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 21: p.EnterOuterAlt(localctx, 21) { - p.SetState(4858) + p.SetState(4915) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72537,7 +75900,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4859) + p.SetState(4916) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -72545,14 +75908,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4860) + p.SetState(4917) p.QualifiedName() } case 22: p.EnterOuterAlt(localctx, 22) { - p.SetState(4861) + p.SetState(4918) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72560,7 +75923,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4862) + p.SetState(4919) p.Match(MDLParserASSOCIATION) if p.HasError() { // Recognition error - abort rule @@ -72568,14 +75931,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4863) + p.SetState(4920) p.QualifiedName() } case 23: p.EnterOuterAlt(localctx, 23) { - p.SetState(4864) + p.SetState(4921) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72583,7 +75946,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4865) + p.SetState(4922) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -72591,14 +75954,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4866) + p.SetState(4923) p.QualifiedName() } case 24: p.EnterOuterAlt(localctx, 24) { - p.SetState(4867) + p.SetState(4924) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72606,7 +75969,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4868) + p.SetState(4925) p.Match(MDLParserCONNECTIONS) if p.HasError() { // Recognition error - abort rule @@ -72617,7 +75980,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 25: p.EnterOuterAlt(localctx, 25) { - p.SetState(4869) + p.SetState(4926) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72625,7 +75988,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4870) + p.SetState(4927) p.Match(MDLParserSTATUS) if p.HasError() { // Recognition error - abort rule @@ -72636,7 +75999,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 26: p.EnterOuterAlt(localctx, 26) { - p.SetState(4871) + p.SetState(4928) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72644,7 +76007,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4872) + p.SetState(4929) p.Match(MDLParserVERSION) if p.HasError() { // Recognition error - abort rule @@ -72655,7 +76018,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 27: p.EnterOuterAlt(localctx, 27) { - p.SetState(4873) + p.SetState(4930) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72663,7 +76026,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4874) + p.SetState(4931) p.Match(MDLParserCATALOG) if p.HasError() { // Recognition error - abort rule @@ -72671,7 +76034,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4875) + p.SetState(4932) p.Match(MDLParserSTATUS) if p.HasError() { // Recognition error - abort rule @@ -72682,7 +76045,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 28: p.EnterOuterAlt(localctx, 28) { - p.SetState(4876) + p.SetState(4933) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72690,7 +76053,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4877) + p.SetState(4934) p.Match(MDLParserCATALOG) if p.HasError() { // Recognition error - abort rule @@ -72698,7 +76061,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4878) + p.SetState(4935) p.Match(MDLParserTABLES) if p.HasError() { // Recognition error - abort rule @@ -72709,7 +76072,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 29: p.EnterOuterAlt(localctx, 29) { - p.SetState(4879) + p.SetState(4936) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72717,7 +76080,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4880) + p.SetState(4937) p.Match(MDLParserCALLERS) if p.HasError() { // Recognition error - abort rule @@ -72725,7 +76088,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4881) + p.SetState(4938) p.Match(MDLParserOF) if p.HasError() { // Recognition error - abort rule @@ -72733,10 +76096,10 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4882) + p.SetState(4939) p.QualifiedName() } - p.SetState(4884) + p.SetState(4941) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72745,7 +76108,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserTRANSITIVE { { - p.SetState(4883) + p.SetState(4940) p.Match(MDLParserTRANSITIVE) if p.HasError() { // Recognition error - abort rule @@ -72758,7 +76121,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 30: p.EnterOuterAlt(localctx, 30) { - p.SetState(4886) + p.SetState(4943) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72766,7 +76129,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4887) + p.SetState(4944) p.Match(MDLParserCALLEES) if p.HasError() { // Recognition error - abort rule @@ -72774,7 +76137,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4888) + p.SetState(4945) p.Match(MDLParserOF) if p.HasError() { // Recognition error - abort rule @@ -72782,10 +76145,10 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4889) + p.SetState(4946) p.QualifiedName() } - p.SetState(4891) + p.SetState(4948) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72794,7 +76157,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserTRANSITIVE { { - p.SetState(4890) + p.SetState(4947) p.Match(MDLParserTRANSITIVE) if p.HasError() { // Recognition error - abort rule @@ -72807,7 +76170,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 31: p.EnterOuterAlt(localctx, 31) { - p.SetState(4893) + p.SetState(4950) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72815,7 +76178,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4894) + p.SetState(4951) p.Match(MDLParserREFERENCES) if p.HasError() { // Recognition error - abort rule @@ -72823,7 +76186,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4895) + p.SetState(4952) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -72831,14 +76194,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4896) + p.SetState(4953) p.QualifiedName() } case 32: p.EnterOuterAlt(localctx, 32) { - p.SetState(4897) + p.SetState(4954) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72846,7 +76209,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4898) + p.SetState(4955) p.Match(MDLParserIMPACT) if p.HasError() { // Recognition error - abort rule @@ -72854,7 +76217,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4899) + p.SetState(4956) p.Match(MDLParserOF) if p.HasError() { // Recognition error - abort rule @@ -72862,14 +76225,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4900) + p.SetState(4957) p.QualifiedName() } case 33: p.EnterOuterAlt(localctx, 33) { - p.SetState(4901) + p.SetState(4958) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72877,7 +76240,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4902) + p.SetState(4959) p.Match(MDLParserCONTEXT) if p.HasError() { // Recognition error - abort rule @@ -72885,7 +76248,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4903) + p.SetState(4960) p.Match(MDLParserOF) if p.HasError() { // Recognition error - abort rule @@ -72893,10 +76256,10 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4904) + p.SetState(4961) p.QualifiedName() } - p.SetState(4907) + p.SetState(4964) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72905,7 +76268,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserDEPTH { { - p.SetState(4905) + p.SetState(4962) p.Match(MDLParserDEPTH) if p.HasError() { // Recognition error - abort rule @@ -72913,7 +76276,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4906) + p.SetState(4963) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -72926,7 +76289,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 34: p.EnterOuterAlt(localctx, 34) { - p.SetState(4909) + p.SetState(4966) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72934,14 +76297,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4910) + p.SetState(4967) p.Match(MDLParserWIDGETS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4912) + p.SetState(4969) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -72950,7 +76313,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserWHERE || _la == MDLParserIN { { - p.SetState(4911) + p.SetState(4968) p.ShowWidgetsFilter() } @@ -72959,7 +76322,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 35: p.EnterOuterAlt(localctx, 35) { - p.SetState(4914) + p.SetState(4971) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72967,7 +76330,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4915) + p.SetState(4972) p.Match(MDLParserPROJECT) if p.HasError() { // Recognition error - abort rule @@ -72975,7 +76338,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4916) + p.SetState(4973) p.Match(MDLParserSECURITY) if p.HasError() { // Recognition error - abort rule @@ -72986,7 +76349,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 36: p.EnterOuterAlt(localctx, 36) { - p.SetState(4917) + p.SetState(4974) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -72994,7 +76357,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4918) + p.SetState(4975) p.Match(MDLParserMODULE) if p.HasError() { // Recognition error - abort rule @@ -73002,14 +76365,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4919) + p.SetState(4976) p.Match(MDLParserROLES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4925) + p.SetState(4982) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73018,29 +76381,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4920) + p.SetState(4977) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4923) + p.SetState(4980) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 545, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 555, p.GetParserRuleContext()) { case 1: { - p.SetState(4921) + p.SetState(4978) p.QualifiedName() } case 2: { - p.SetState(4922) + p.SetState(4979) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -73057,7 +76420,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 37: p.EnterOuterAlt(localctx, 37) { - p.SetState(4927) + p.SetState(4984) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73065,7 +76428,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4928) + p.SetState(4985) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -73073,7 +76436,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4929) + p.SetState(4986) p.Match(MDLParserROLES) if p.HasError() { // Recognition error - abort rule @@ -73084,7 +76447,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 38: p.EnterOuterAlt(localctx, 38) { - p.SetState(4930) + p.SetState(4987) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73092,7 +76455,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4931) + p.SetState(4988) p.Match(MDLParserDEMO) if p.HasError() { // Recognition error - abort rule @@ -73100,7 +76463,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4932) + p.SetState(4989) p.Match(MDLParserUSERS) if p.HasError() { // Recognition error - abort rule @@ -73111,7 +76474,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 39: p.EnterOuterAlt(localctx, 39) { - p.SetState(4933) + p.SetState(4990) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73119,7 +76482,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4934) + p.SetState(4991) p.Match(MDLParserACCESS) if p.HasError() { // Recognition error - abort rule @@ -73127,7 +76490,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4935) + p.SetState(4992) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -73135,14 +76498,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4936) + p.SetState(4993) p.QualifiedName() } case 40: p.EnterOuterAlt(localctx, 40) { - p.SetState(4937) + p.SetState(4994) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73150,7 +76513,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4938) + p.SetState(4995) p.Match(MDLParserACCESS) if p.HasError() { // Recognition error - abort rule @@ -73158,7 +76521,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4939) + p.SetState(4996) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -73166,7 +76529,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4940) + p.SetState(4997) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -73174,14 +76537,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4941) + p.SetState(4998) p.QualifiedName() } case 41: p.EnterOuterAlt(localctx, 41) { - p.SetState(4942) + p.SetState(4999) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73189,7 +76552,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4943) + p.SetState(5000) p.Match(MDLParserACCESS) if p.HasError() { // Recognition error - abort rule @@ -73197,7 +76560,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4944) + p.SetState(5001) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -73205,7 +76568,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4945) + p.SetState(5002) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -73213,14 +76576,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4946) + p.SetState(5003) p.QualifiedName() } case 42: p.EnterOuterAlt(localctx, 42) { - p.SetState(4947) + p.SetState(5004) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73228,7 +76591,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4948) + p.SetState(5005) p.Match(MDLParserACCESS) if p.HasError() { // Recognition error - abort rule @@ -73236,7 +76599,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4949) + p.SetState(5006) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -73244,7 +76607,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4950) + p.SetState(5007) p.Match(MDLParserWORKFLOW) if p.HasError() { // Recognition error - abort rule @@ -73252,14 +76615,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4951) + p.SetState(5008) p.QualifiedName() } case 43: p.EnterOuterAlt(localctx, 43) { - p.SetState(4952) + p.SetState(5009) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73267,7 +76630,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4953) + p.SetState(5010) p.Match(MDLParserSECURITY) if p.HasError() { // Recognition error - abort rule @@ -73275,14 +76638,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4954) + p.SetState(5011) p.Match(MDLParserMATRIX) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4960) + p.SetState(5017) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73291,29 +76654,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4955) + p.SetState(5012) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4958) + p.SetState(5015) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 547, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 557, p.GetParserRuleContext()) { case 1: { - p.SetState(4956) + p.SetState(5013) p.QualifiedName() } case 2: { - p.SetState(4957) + p.SetState(5014) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -73330,7 +76693,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 44: p.EnterOuterAlt(localctx, 44) { - p.SetState(4962) + p.SetState(5019) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73338,7 +76701,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4963) + p.SetState(5020) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -73346,14 +76709,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4964) + p.SetState(5021) p.Match(MDLParserCLIENTS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4970) + p.SetState(5027) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73362,29 +76725,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4965) + p.SetState(5022) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4968) + p.SetState(5025) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 549, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 559, p.GetParserRuleContext()) { case 1: { - p.SetState(4966) + p.SetState(5023) p.QualifiedName() } case 2: { - p.SetState(4967) + p.SetState(5024) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -73401,7 +76764,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 45: p.EnterOuterAlt(localctx, 45) { - p.SetState(4972) + p.SetState(5029) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73409,7 +76772,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4973) + p.SetState(5030) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -73417,14 +76780,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4974) + p.SetState(5031) p.Match(MDLParserSERVICES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4980) + p.SetState(5037) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73433,29 +76796,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4975) + p.SetState(5032) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4978) + p.SetState(5035) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 551, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 561, p.GetParserRuleContext()) { case 1: { - p.SetState(4976) + p.SetState(5033) p.QualifiedName() } case 2: { - p.SetState(4977) + p.SetState(5034) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -73472,7 +76835,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 46: p.EnterOuterAlt(localctx, 46) { - p.SetState(4982) + p.SetState(5039) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73480,7 +76843,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4983) + p.SetState(5040) p.Match(MDLParserEXTERNAL) if p.HasError() { // Recognition error - abort rule @@ -73488,14 +76851,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4984) + p.SetState(5041) p.Match(MDLParserENTITIES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4990) + p.SetState(5047) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73504,29 +76867,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4985) + p.SetState(5042) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4988) + p.SetState(5045) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 553, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 563, p.GetParserRuleContext()) { case 1: { - p.SetState(4986) + p.SetState(5043) p.QualifiedName() } case 2: { - p.SetState(4987) + p.SetState(5044) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -73543,7 +76906,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 47: p.EnterOuterAlt(localctx, 47) { - p.SetState(4992) + p.SetState(5049) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73551,7 +76914,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4993) + p.SetState(5050) p.Match(MDLParserEXTERNAL) if p.HasError() { // Recognition error - abort rule @@ -73559,14 +76922,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(4994) + p.SetState(5051) p.Match(MDLParserACTIONS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5000) + p.SetState(5057) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73575,29 +76938,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(4995) + p.SetState(5052) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(4998) + p.SetState(5055) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 555, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 565, p.GetParserRuleContext()) { case 1: { - p.SetState(4996) + p.SetState(5053) p.QualifiedName() } case 2: { - p.SetState(4997) + p.SetState(5054) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -73614,7 +76977,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 48: p.EnterOuterAlt(localctx, 48) { - p.SetState(5002) + p.SetState(5059) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73622,7 +76985,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5003) + p.SetState(5060) p.Match(MDLParserNAVIGATION) if p.HasError() { // Recognition error - abort rule @@ -73633,7 +76996,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 49: p.EnterOuterAlt(localctx, 49) { - p.SetState(5004) + p.SetState(5061) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73641,7 +77004,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5005) + p.SetState(5062) p.Match(MDLParserNAVIGATION) if p.HasError() { // Recognition error - abort rule @@ -73649,27 +77012,27 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5006) + p.SetState(5063) p.Match(MDLParserMENU_KW) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5009) + p.SetState(5066) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 557, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 567, p.GetParserRuleContext()) == 1 { { - p.SetState(5007) + p.SetState(5064) p.QualifiedName() } } else if p.HasError() { // JIM goto errorExit - } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 557, p.GetParserRuleContext()) == 2 { + } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 567, p.GetParserRuleContext()) == 2 { { - p.SetState(5008) + p.SetState(5065) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -73684,7 +77047,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 50: p.EnterOuterAlt(localctx, 50) { - p.SetState(5011) + p.SetState(5068) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73692,7 +77055,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5012) + p.SetState(5069) p.Match(MDLParserNAVIGATION) if p.HasError() { // Recognition error - abort rule @@ -73700,7 +77063,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5013) + p.SetState(5070) p.Match(MDLParserHOMES) if p.HasError() { // Recognition error - abort rule @@ -73711,7 +77074,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 51: p.EnterOuterAlt(localctx, 51) { - p.SetState(5014) + p.SetState(5071) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73719,7 +77082,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5015) + p.SetState(5072) p.Match(MDLParserDESIGN) if p.HasError() { // Recognition error - abort rule @@ -73727,14 +77090,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5016) + p.SetState(5073) p.Match(MDLParserPROPERTIES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5019) + p.SetState(5076) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73743,7 +77106,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserFOR { { - p.SetState(5017) + p.SetState(5074) p.Match(MDLParserFOR) if p.HasError() { // Recognition error - abort rule @@ -73751,7 +77114,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5018) + p.SetState(5075) p.WidgetTypeKeyword() } @@ -73760,7 +77123,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 52: p.EnterOuterAlt(localctx, 52) { - p.SetState(5021) + p.SetState(5078) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73768,14 +77131,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5022) + p.SetState(5079) p.Match(MDLParserSTRUCTURE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5025) + p.SetState(5082) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73784,7 +77147,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserDEPTH { { - p.SetState(5023) + p.SetState(5080) p.Match(MDLParserDEPTH) if p.HasError() { // Recognition error - abort rule @@ -73792,7 +77155,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5024) + p.SetState(5081) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -73801,7 +77164,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } - p.SetState(5032) + p.SetState(5089) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73810,29 +77173,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(5027) + p.SetState(5084) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5030) + p.SetState(5087) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 560, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 570, p.GetParserRuleContext()) { case 1: { - p.SetState(5028) + p.SetState(5085) p.QualifiedName() } case 2: { - p.SetState(5029) + p.SetState(5086) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -73845,7 +77208,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } - p.SetState(5035) + p.SetState(5092) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73854,7 +77217,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserALL { { - p.SetState(5034) + p.SetState(5091) p.Match(MDLParserALL) if p.HasError() { // Recognition error - abort rule @@ -73867,7 +77230,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 53: p.EnterOuterAlt(localctx, 53) { - p.SetState(5037) + p.SetState(5094) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73875,7 +77238,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5038) + p.SetState(5095) p.Match(MDLParserBUSINESS) if p.HasError() { // Recognition error - abort rule @@ -73883,7 +77246,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5039) + p.SetState(5096) p.Match(MDLParserEVENT) if p.HasError() { // Recognition error - abort rule @@ -73891,14 +77254,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5040) + p.SetState(5097) p.Match(MDLParserSERVICES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5046) + p.SetState(5103) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73907,29 +77270,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(5041) + p.SetState(5098) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5044) + p.SetState(5101) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 563, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 573, p.GetParserRuleContext()) { case 1: { - p.SetState(5042) + p.SetState(5099) p.QualifiedName() } case 2: { - p.SetState(5043) + p.SetState(5100) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -73946,7 +77309,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 54: p.EnterOuterAlt(localctx, 54) { - p.SetState(5048) + p.SetState(5105) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -73954,7 +77317,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5049) + p.SetState(5106) p.Match(MDLParserBUSINESS) if p.HasError() { // Recognition error - abort rule @@ -73962,7 +77325,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5050) + p.SetState(5107) p.Match(MDLParserEVENT) if p.HasError() { // Recognition error - abort rule @@ -73970,14 +77333,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5051) + p.SetState(5108) p.Match(MDLParserCLIENTS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5057) + p.SetState(5114) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -73986,29 +77349,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(5052) + p.SetState(5109) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5055) + p.SetState(5112) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 565, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 575, p.GetParserRuleContext()) { case 1: { - p.SetState(5053) + p.SetState(5110) p.QualifiedName() } case 2: { - p.SetState(5054) + p.SetState(5111) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -74025,7 +77388,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 55: p.EnterOuterAlt(localctx, 55) { - p.SetState(5059) + p.SetState(5116) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -74033,7 +77396,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5060) + p.SetState(5117) p.Match(MDLParserBUSINESS) if p.HasError() { // Recognition error - abort rule @@ -74041,14 +77404,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5061) + p.SetState(5118) p.Match(MDLParserEVENTS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5067) + p.SetState(5124) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -74057,29 +77420,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(5062) + p.SetState(5119) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5065) + p.SetState(5122) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 567, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 577, p.GetParserRuleContext()) { case 1: { - p.SetState(5063) + p.SetState(5120) p.QualifiedName() } case 2: { - p.SetState(5064) + p.SetState(5121) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -74096,7 +77459,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 56: p.EnterOuterAlt(localctx, 56) { - p.SetState(5069) + p.SetState(5126) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -74104,7 +77467,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5070) + p.SetState(5127) p.Match(MDLParserSETTINGS) if p.HasError() { // Recognition error - abort rule @@ -74115,7 +77478,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 57: p.EnterOuterAlt(localctx, 57) { - p.SetState(5071) + p.SetState(5128) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -74123,7 +77486,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5072) + p.SetState(5129) p.Match(MDLParserFRAGMENTS) if p.HasError() { // Recognition error - abort rule @@ -74134,7 +77497,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 58: p.EnterOuterAlt(localctx, 58) { - p.SetState(5073) + p.SetState(5130) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -74142,7 +77505,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5074) + p.SetState(5131) p.Match(MDLParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -74150,14 +77513,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5075) + p.SetState(5132) p.Match(MDLParserCONNECTIONS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5081) + p.SetState(5138) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -74166,29 +77529,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(5076) + p.SetState(5133) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5079) + p.SetState(5136) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 569, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 579, p.GetParserRuleContext()) { case 1: { - p.SetState(5077) + p.SetState(5134) p.QualifiedName() } case 2: { - p.SetState(5078) + p.SetState(5135) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -74205,7 +77568,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 59: p.EnterOuterAlt(localctx, 59) { - p.SetState(5083) + p.SetState(5140) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -74213,7 +77576,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5084) + p.SetState(5141) p.Match(MDLParserREST) if p.HasError() { // Recognition error - abort rule @@ -74221,14 +77584,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5085) + p.SetState(5142) p.Match(MDLParserCLIENTS) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5091) + p.SetState(5148) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -74237,29 +77600,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(5086) + p.SetState(5143) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5089) + p.SetState(5146) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 571, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 581, p.GetParserRuleContext()) { case 1: { - p.SetState(5087) + p.SetState(5144) p.QualifiedName() } case 2: { - p.SetState(5088) + p.SetState(5145) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -74276,7 +77639,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { case 60: p.EnterOuterAlt(localctx, 60) { - p.SetState(5093) + p.SetState(5150) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -74284,7 +77647,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5094) + p.SetState(5151) p.Match(MDLParserPUBLISHED) if p.HasError() { // Recognition error - abort rule @@ -74292,7 +77655,7 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5095) + p.SetState(5152) p.Match(MDLParserREST) if p.HasError() { // Recognition error - abort rule @@ -74300,14 +77663,14 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { } } { - p.SetState(5096) + p.SetState(5153) p.Match(MDLParserSERVICES) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5102) + p.SetState(5159) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -74316,29 +77679,29 @@ func (p *MDLParser) ShowStatement() (localctx IShowStatementContext) { if _la == MDLParserIN { { - p.SetState(5097) + p.SetState(5154) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5100) + p.SetState(5157) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 573, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 583, p.GetParserRuleContext()) { case 1: { - p.SetState(5098) + p.SetState(5155) p.QualifiedName() } case 2: { - p.SetState(5099) + p.SetState(5156) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -74519,12 +77882,22 @@ func (s *ShowWidgetsFilterContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ShowWidgetsFilterContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitShowWidgetsFilter(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ShowWidgetsFilter() (localctx IShowWidgetsFilterContext) { localctx = NewShowWidgetsFilterContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 564, MDLParserRULE_showWidgetsFilter) var _la int - p.SetState(5127) + p.SetState(5184) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -74534,7 +77907,7 @@ func (p *MDLParser) ShowWidgetsFilter() (localctx IShowWidgetsFilterContext) { case MDLParserWHERE: p.EnterOuterAlt(localctx, 1) { - p.SetState(5106) + p.SetState(5163) p.Match(MDLParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -74542,10 +77915,10 @@ func (p *MDLParser) ShowWidgetsFilter() (localctx IShowWidgetsFilterContext) { } } { - p.SetState(5107) + p.SetState(5164) p.WidgetCondition() } - p.SetState(5112) + p.SetState(5169) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -74554,7 +77927,7 @@ func (p *MDLParser) ShowWidgetsFilter() (localctx IShowWidgetsFilterContext) { for _la == MDLParserAND { { - p.SetState(5108) + p.SetState(5165) p.Match(MDLParserAND) if p.HasError() { // Recognition error - abort rule @@ -74562,18 +77935,18 @@ func (p *MDLParser) ShowWidgetsFilter() (localctx IShowWidgetsFilterContext) { } } { - p.SetState(5109) + p.SetState(5166) p.WidgetCondition() } - p.SetState(5114) + p.SetState(5171) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(5120) + p.SetState(5177) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -74582,29 +77955,29 @@ func (p *MDLParser) ShowWidgetsFilter() (localctx IShowWidgetsFilterContext) { if _la == MDLParserIN { { - p.SetState(5115) + p.SetState(5172) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5118) + p.SetState(5175) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 577, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 587, p.GetParserRuleContext()) { case 1: { - p.SetState(5116) + p.SetState(5173) p.QualifiedName() } case 2: { - p.SetState(5117) + p.SetState(5174) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -74621,29 +77994,29 @@ func (p *MDLParser) ShowWidgetsFilter() (localctx IShowWidgetsFilterContext) { case MDLParserIN: p.EnterOuterAlt(localctx, 2) { - p.SetState(5122) + p.SetState(5179) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5125) + p.SetState(5182) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 579, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 589, p.GetParserRuleContext()) { case 1: { - p.SetState(5123) + p.SetState(5180) p.QualifiedName() } case 2: { - p.SetState(5124) + p.SetState(5181) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -74704,6 +78077,8 @@ type IWidgetTypeKeywordContext interface { SNIPPETCALL() antlr.TerminalNode NAVIGATIONLIST() antlr.TerminalNode CUSTOMCONTAINER() antlr.TerminalNode + TABCONTAINER() antlr.TerminalNode + TABPAGE() antlr.TerminalNode DROPDOWN() antlr.TerminalNode REFERENCESELECTOR() antlr.TerminalNode GROUPBOX() antlr.TerminalNode @@ -74837,6 +78212,14 @@ func (s *WidgetTypeKeywordContext) CUSTOMCONTAINER() antlr.TerminalNode { return s.GetToken(MDLParserCUSTOMCONTAINER, 0) } +func (s *WidgetTypeKeywordContext) TABCONTAINER() antlr.TerminalNode { + return s.GetToken(MDLParserTABCONTAINER, 0) +} + +func (s *WidgetTypeKeywordContext) TABPAGE() antlr.TerminalNode { + return s.GetToken(MDLParserTABPAGE, 0) +} + func (s *WidgetTypeKeywordContext) DROPDOWN() antlr.TerminalNode { return s.GetToken(MDLParserDROPDOWN, 0) } @@ -74873,6 +78256,16 @@ func (s *WidgetTypeKeywordContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WidgetTypeKeywordContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWidgetTypeKeyword(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WidgetTypeKeyword() (localctx IWidgetTypeKeywordContext) { localctx = NewWidgetTypeKeywordContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 566, MDLParserRULE_widgetTypeKeyword) @@ -74880,10 +78273,10 @@ func (p *MDLParser) WidgetTypeKeyword() (localctx IWidgetTypeKeywordContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5129) + p.SetState(5186) _la = p.GetTokenStream().LA(1) - if !(((int64((_la-148)) & ^0x3f) == 0 && ((int64(1)<<(_la-148))&211106767466623) != 0) || ((int64((_la-226)) & ^0x3f) == 0 && ((int64(1)<<(_la-226))&61) != 0) || _la == MDLParserIDENTIFIER) { + if !(((int64((_la-148)) & ^0x3f) == 0 && ((int64(1)<<(_la-148))&422212999999615) != 0) || ((int64((_la-227)) & ^0x3f) == 0 && ((int64(1)<<(_la-227))&253) != 0) || _la == MDLParserIDENTIFIER) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -74994,12 +78387,22 @@ func (s *WidgetConditionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WidgetConditionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWidgetCondition(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WidgetCondition() (localctx IWidgetConditionContext) { localctx = NewWidgetConditionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 568, MDLParserRULE_widgetCondition) var _la int - p.SetState(5137) + p.SetState(5194) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -75009,7 +78412,7 @@ func (p *MDLParser) WidgetCondition() (localctx IWidgetConditionContext) { case MDLParserWIDGETTYPE: p.EnterOuterAlt(localctx, 1) { - p.SetState(5131) + p.SetState(5188) p.Match(MDLParserWIDGETTYPE) if p.HasError() { // Recognition error - abort rule @@ -75017,7 +78420,7 @@ func (p *MDLParser) WidgetCondition() (localctx IWidgetConditionContext) { } } { - p.SetState(5132) + p.SetState(5189) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserLIKE || _la == MDLParserEQUALS) { @@ -75028,7 +78431,7 @@ func (p *MDLParser) WidgetCondition() (localctx IWidgetConditionContext) { } } { - p.SetState(5133) + p.SetState(5190) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -75039,7 +78442,7 @@ func (p *MDLParser) WidgetCondition() (localctx IWidgetConditionContext) { case MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(5134) + p.SetState(5191) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -75047,7 +78450,7 @@ func (p *MDLParser) WidgetCondition() (localctx IWidgetConditionContext) { } } { - p.SetState(5135) + p.SetState(5192) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserLIKE || _la == MDLParserEQUALS) { @@ -75058,7 +78461,7 @@ func (p *MDLParser) WidgetCondition() (localctx IWidgetConditionContext) { } } { - p.SetState(5136) + p.SetState(5193) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -75176,12 +78579,22 @@ func (s *WidgetPropertyAssignmentContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *WidgetPropertyAssignmentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWidgetPropertyAssignment(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WidgetPropertyAssignment() (localctx IWidgetPropertyAssignmentContext) { localctx = NewWidgetPropertyAssignmentContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 570, MDLParserRULE_widgetPropertyAssignment) p.EnterOuterAlt(localctx, 1) { - p.SetState(5139) + p.SetState(5196) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -75189,7 +78602,7 @@ func (p *MDLParser) WidgetPropertyAssignment() (localctx IWidgetPropertyAssignme } } { - p.SetState(5140) + p.SetState(5197) p.Match(MDLParserEQUALS) if p.HasError() { // Recognition error - abort rule @@ -75197,7 +78610,7 @@ func (p *MDLParser) WidgetPropertyAssignment() (localctx IWidgetPropertyAssignme } } { - p.SetState(5141) + p.SetState(5198) p.WidgetPropertyValue() } @@ -75311,10 +78724,20 @@ func (s *WidgetPropertyValueContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *WidgetPropertyValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWidgetPropertyValue(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WidgetPropertyValue() (localctx IWidgetPropertyValueContext) { localctx = NewWidgetPropertyValueContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 572, MDLParserRULE_widgetPropertyValue) - p.SetState(5147) + p.SetState(5204) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -75324,7 +78747,7 @@ func (p *MDLParser) WidgetPropertyValue() (localctx IWidgetPropertyValueContext) case MDLParserSTRING_LITERAL: p.EnterOuterAlt(localctx, 1) { - p.SetState(5143) + p.SetState(5200) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -75335,7 +78758,7 @@ func (p *MDLParser) WidgetPropertyValue() (localctx IWidgetPropertyValueContext) case MDLParserNUMBER_LITERAL: p.EnterOuterAlt(localctx, 2) { - p.SetState(5144) + p.SetState(5201) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -75346,14 +78769,14 @@ func (p *MDLParser) WidgetPropertyValue() (localctx IWidgetPropertyValueContext) case MDLParserTRUE, MDLParserFALSE: p.EnterOuterAlt(localctx, 3) { - p.SetState(5145) + p.SetState(5202) p.BooleanLiteral() } case MDLParserNULL: p.EnterOuterAlt(localctx, 4) { - p.SetState(5146) + p.SetState(5203) p.Match(MDLParserNULL) if p.HasError() { // Recognition error - abort rule @@ -75725,22 +79148,32 @@ func (s *DescribeStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DescribeStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDescribeStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { localctx = NewDescribeStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 574, MDLParserRULE_describeStatement) var _la int - p.SetState(5300) + p.SetState(5357) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 588, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 598, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(5149) + p.SetState(5206) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -75748,7 +79181,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5150) + p.SetState(5207) p.Match(MDLParserCONTRACT) if p.HasError() { // Recognition error - abort rule @@ -75756,7 +79189,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5151) + p.SetState(5208) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -75764,10 +79197,10 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5152) + p.SetState(5209) p.QualifiedName() } - p.SetState(5155) + p.SetState(5212) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -75776,7 +79209,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { if _la == MDLParserFORMAT { { - p.SetState(5153) + p.SetState(5210) p.Match(MDLParserFORMAT) if p.HasError() { // Recognition error - abort rule @@ -75784,7 +79217,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5154) + p.SetState(5211) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -75797,7 +79230,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(5157) + p.SetState(5214) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -75805,7 +79238,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5158) + p.SetState(5215) p.Match(MDLParserCONTRACT) if p.HasError() { // Recognition error - abort rule @@ -75813,7 +79246,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5159) + p.SetState(5216) p.Match(MDLParserACTION) if p.HasError() { // Recognition error - abort rule @@ -75821,10 +79254,10 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5160) + p.SetState(5217) p.QualifiedName() } - p.SetState(5163) + p.SetState(5220) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -75833,7 +79266,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { if _la == MDLParserFORMAT { { - p.SetState(5161) + p.SetState(5218) p.Match(MDLParserFORMAT) if p.HasError() { // Recognition error - abort rule @@ -75841,7 +79274,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5162) + p.SetState(5219) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -75854,7 +79287,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(5165) + p.SetState(5222) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -75862,7 +79295,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5166) + p.SetState(5223) p.Match(MDLParserCONTRACT) if p.HasError() { // Recognition error - abort rule @@ -75870,7 +79303,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5167) + p.SetState(5224) p.Match(MDLParserMESSAGE) if p.HasError() { // Recognition error - abort rule @@ -75878,14 +79311,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5168) + p.SetState(5225) p.QualifiedName() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(5169) + p.SetState(5226) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -75893,7 +79326,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5170) + p.SetState(5227) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -75901,14 +79334,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5171) + p.SetState(5228) p.QualifiedName() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(5172) + p.SetState(5229) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -75916,7 +79349,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5173) + p.SetState(5230) p.Match(MDLParserASSOCIATION) if p.HasError() { // Recognition error - abort rule @@ -75924,14 +79357,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5174) + p.SetState(5231) p.QualifiedName() } case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(5175) + p.SetState(5232) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -75939,7 +79372,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5176) + p.SetState(5233) p.Match(MDLParserMICROFLOW) if p.HasError() { // Recognition error - abort rule @@ -75947,14 +79380,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5177) + p.SetState(5234) p.QualifiedName() } case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(5178) + p.SetState(5235) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -75962,7 +79395,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5179) + p.SetState(5236) p.Match(MDLParserNANOFLOW) if p.HasError() { // Recognition error - abort rule @@ -75970,14 +79403,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5180) + p.SetState(5237) p.QualifiedName() } case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(5181) + p.SetState(5238) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -75985,7 +79418,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5182) + p.SetState(5239) p.Match(MDLParserWORKFLOW) if p.HasError() { // Recognition error - abort rule @@ -75993,14 +79426,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5183) + p.SetState(5240) p.QualifiedName() } case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(5184) + p.SetState(5241) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76008,7 +79441,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5185) + p.SetState(5242) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -76016,14 +79449,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5186) + p.SetState(5243) p.QualifiedName() } case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(5187) + p.SetState(5244) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76031,7 +79464,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5188) + p.SetState(5245) p.Match(MDLParserSNIPPET) if p.HasError() { // Recognition error - abort rule @@ -76039,14 +79472,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5189) + p.SetState(5246) p.QualifiedName() } case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(5190) + p.SetState(5247) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76054,7 +79487,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5191) + p.SetState(5248) p.Match(MDLParserLAYOUT) if p.HasError() { // Recognition error - abort rule @@ -76062,14 +79495,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5192) + p.SetState(5249) p.QualifiedName() } case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(5193) + p.SetState(5250) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76077,7 +79510,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5194) + p.SetState(5251) p.Match(MDLParserENUMERATION) if p.HasError() { // Recognition error - abort rule @@ -76085,14 +79518,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5195) + p.SetState(5252) p.QualifiedName() } case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(5196) + p.SetState(5253) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76100,7 +79533,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5197) + p.SetState(5254) p.Match(MDLParserCONSTANT) if p.HasError() { // Recognition error - abort rule @@ -76108,14 +79541,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5198) + p.SetState(5255) p.QualifiedName() } case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(5199) + p.SetState(5256) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76123,7 +79556,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5200) + p.SetState(5257) p.Match(MDLParserJAVA) if p.HasError() { // Recognition error - abort rule @@ -76131,7 +79564,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5201) + p.SetState(5258) p.Match(MDLParserACTION) if p.HasError() { // Recognition error - abort rule @@ -76139,14 +79572,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5202) + p.SetState(5259) p.QualifiedName() } case 15: p.EnterOuterAlt(localctx, 15) { - p.SetState(5203) + p.SetState(5260) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76154,7 +79587,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5204) + p.SetState(5261) p.Match(MDLParserJAVASCRIPT) if p.HasError() { // Recognition error - abort rule @@ -76162,7 +79595,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5205) + p.SetState(5262) p.Match(MDLParserACTION) if p.HasError() { // Recognition error - abort rule @@ -76170,14 +79603,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5206) + p.SetState(5263) p.QualifiedName() } case 16: p.EnterOuterAlt(localctx, 16) { - p.SetState(5207) + p.SetState(5264) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76185,7 +79618,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5208) + p.SetState(5265) p.Match(MDLParserMODULE) if p.HasError() { // Recognition error - abort rule @@ -76193,14 +79626,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5209) + p.SetState(5266) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5212) + p.SetState(5269) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -76209,7 +79642,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { if _la == MDLParserWITH { { - p.SetState(5210) + p.SetState(5267) p.Match(MDLParserWITH) if p.HasError() { // Recognition error - abort rule @@ -76217,7 +79650,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5211) + p.SetState(5268) p.Match(MDLParserALL) if p.HasError() { // Recognition error - abort rule @@ -76230,7 +79663,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { case 17: p.EnterOuterAlt(localctx, 17) { - p.SetState(5214) + p.SetState(5271) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76238,7 +79671,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5215) + p.SetState(5272) p.Match(MDLParserMODULE) if p.HasError() { // Recognition error - abort rule @@ -76246,7 +79679,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5216) + p.SetState(5273) p.Match(MDLParserROLE) if p.HasError() { // Recognition error - abort rule @@ -76254,14 +79687,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5217) + p.SetState(5274) p.QualifiedName() } case 18: p.EnterOuterAlt(localctx, 18) { - p.SetState(5218) + p.SetState(5275) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76269,7 +79702,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5219) + p.SetState(5276) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -76277,7 +79710,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5220) + p.SetState(5277) p.Match(MDLParserROLE) if p.HasError() { // Recognition error - abort rule @@ -76285,7 +79718,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5221) + p.SetState(5278) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -76296,7 +79729,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { case 19: p.EnterOuterAlt(localctx, 19) { - p.SetState(5222) + p.SetState(5279) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76304,7 +79737,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5223) + p.SetState(5280) p.Match(MDLParserDEMO) if p.HasError() { // Recognition error - abort rule @@ -76312,7 +79745,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5224) + p.SetState(5281) p.Match(MDLParserUSER) if p.HasError() { // Recognition error - abort rule @@ -76320,7 +79753,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5225) + p.SetState(5282) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -76331,7 +79764,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { case 20: p.EnterOuterAlt(localctx, 20) { - p.SetState(5226) + p.SetState(5283) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76339,7 +79772,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5227) + p.SetState(5284) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -76347,7 +79780,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5228) + p.SetState(5285) p.Match(MDLParserCLIENT) if p.HasError() { // Recognition error - abort rule @@ -76355,14 +79788,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5229) + p.SetState(5286) p.QualifiedName() } case 21: p.EnterOuterAlt(localctx, 21) { - p.SetState(5230) + p.SetState(5287) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76370,7 +79803,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5231) + p.SetState(5288) p.Match(MDLParserODATA) if p.HasError() { // Recognition error - abort rule @@ -76378,7 +79811,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5232) + p.SetState(5289) p.Match(MDLParserSERVICE) if p.HasError() { // Recognition error - abort rule @@ -76386,14 +79819,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5233) + p.SetState(5290) p.QualifiedName() } case 22: p.EnterOuterAlt(localctx, 22) { - p.SetState(5234) + p.SetState(5291) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76401,7 +79834,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5235) + p.SetState(5292) p.Match(MDLParserEXTERNAL) if p.HasError() { // Recognition error - abort rule @@ -76409,7 +79842,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5236) + p.SetState(5293) p.Match(MDLParserENTITY) if p.HasError() { // Recognition error - abort rule @@ -76417,14 +79850,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5237) + p.SetState(5294) p.QualifiedName() } case 23: p.EnterOuterAlt(localctx, 23) { - p.SetState(5238) + p.SetState(5295) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76432,27 +79865,27 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5239) + p.SetState(5296) p.Match(MDLParserNAVIGATION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5242) + p.SetState(5299) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 586, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 596, p.GetParserRuleContext()) == 1 { { - p.SetState(5240) + p.SetState(5297) p.QualifiedName() } } else if p.HasError() { // JIM goto errorExit - } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 586, p.GetParserRuleContext()) == 2 { + } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 596, p.GetParserRuleContext()) == 2 { { - p.SetState(5241) + p.SetState(5298) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -76467,7 +79900,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { case 24: p.EnterOuterAlt(localctx, 24) { - p.SetState(5244) + p.SetState(5301) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76475,7 +79908,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5245) + p.SetState(5302) p.Match(MDLParserSTYLING) if p.HasError() { // Recognition error - abort rule @@ -76483,7 +79916,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5246) + p.SetState(5303) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -76491,7 +79924,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5247) + p.SetState(5304) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserPAGE || _la == MDLParserSNIPPET) { @@ -76502,10 +79935,10 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5248) + p.SetState(5305) p.QualifiedName() } - p.SetState(5251) + p.SetState(5308) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -76514,7 +79947,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { if _la == MDLParserWIDGET { { - p.SetState(5249) + p.SetState(5306) p.Match(MDLParserWIDGET) if p.HasError() { // Recognition error - abort rule @@ -76522,7 +79955,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5250) + p.SetState(5307) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -76535,7 +79968,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { case 25: p.EnterOuterAlt(localctx, 25) { - p.SetState(5253) + p.SetState(5310) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76543,7 +79976,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5254) + p.SetState(5311) p.Match(MDLParserCATALOG) if p.HasError() { // Recognition error - abort rule @@ -76551,7 +79984,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5255) + p.SetState(5312) p.Match(MDLParserDOT) if p.HasError() { // Recognition error - abort rule @@ -76560,14 +79993,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } { - p.SetState(5256) + p.SetState(5313) p.CatalogTableName() } case 26: p.EnterOuterAlt(localctx, 26) { - p.SetState(5257) + p.SetState(5314) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76575,7 +80008,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5258) + p.SetState(5315) p.Match(MDLParserBUSINESS) if p.HasError() { // Recognition error - abort rule @@ -76583,7 +80016,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5259) + p.SetState(5316) p.Match(MDLParserEVENT) if p.HasError() { // Recognition error - abort rule @@ -76591,7 +80024,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5260) + p.SetState(5317) p.Match(MDLParserSERVICE) if p.HasError() { // Recognition error - abort rule @@ -76599,14 +80032,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5261) + p.SetState(5318) p.QualifiedName() } case 27: p.EnterOuterAlt(localctx, 27) { - p.SetState(5262) + p.SetState(5319) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76614,7 +80047,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5263) + p.SetState(5320) p.Match(MDLParserDATABASE) if p.HasError() { // Recognition error - abort rule @@ -76622,7 +80055,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5264) + p.SetState(5321) p.Match(MDLParserCONNECTION) if p.HasError() { // Recognition error - abort rule @@ -76630,14 +80063,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5265) + p.SetState(5322) p.QualifiedName() } case 28: p.EnterOuterAlt(localctx, 28) { - p.SetState(5266) + p.SetState(5323) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76645,7 +80078,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5267) + p.SetState(5324) p.Match(MDLParserSETTINGS) if p.HasError() { // Recognition error - abort rule @@ -76656,7 +80089,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { case 29: p.EnterOuterAlt(localctx, 29) { - p.SetState(5268) + p.SetState(5325) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76664,7 +80097,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5269) + p.SetState(5326) p.Match(MDLParserFRAGMENT) if p.HasError() { // Recognition error - abort rule @@ -76672,7 +80105,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5270) + p.SetState(5327) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -76680,7 +80113,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5271) + p.SetState(5328) p.Match(MDLParserPAGE) if p.HasError() { // Recognition error - abort rule @@ -76688,11 +80121,11 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5272) + p.SetState(5329) p.QualifiedName() } { - p.SetState(5273) + p.SetState(5330) p.Match(MDLParserWIDGET) if p.HasError() { // Recognition error - abort rule @@ -76700,14 +80133,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5274) + p.SetState(5331) p.IdentifierOrKeyword() } case 30: p.EnterOuterAlt(localctx, 30) { - p.SetState(5276) + p.SetState(5333) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76715,7 +80148,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5277) + p.SetState(5334) p.Match(MDLParserFRAGMENT) if p.HasError() { // Recognition error - abort rule @@ -76723,7 +80156,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5278) + p.SetState(5335) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -76731,7 +80164,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5279) + p.SetState(5336) p.Match(MDLParserSNIPPET) if p.HasError() { // Recognition error - abort rule @@ -76739,11 +80172,11 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5280) + p.SetState(5337) p.QualifiedName() } { - p.SetState(5281) + p.SetState(5338) p.Match(MDLParserWIDGET) if p.HasError() { // Recognition error - abort rule @@ -76751,14 +80184,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5282) + p.SetState(5339) p.IdentifierOrKeyword() } case 31: p.EnterOuterAlt(localctx, 31) { - p.SetState(5284) + p.SetState(5341) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76766,7 +80199,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5285) + p.SetState(5342) p.Match(MDLParserIMAGE) if p.HasError() { // Recognition error - abort rule @@ -76774,7 +80207,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5286) + p.SetState(5343) p.Match(MDLParserCOLLECTION) if p.HasError() { // Recognition error - abort rule @@ -76782,14 +80215,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5287) + p.SetState(5344) p.QualifiedName() } case 32: p.EnterOuterAlt(localctx, 32) { - p.SetState(5288) + p.SetState(5345) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76797,7 +80230,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5289) + p.SetState(5346) p.Match(MDLParserREST) if p.HasError() { // Recognition error - abort rule @@ -76805,7 +80238,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5290) + p.SetState(5347) p.Match(MDLParserCLIENT) if p.HasError() { // Recognition error - abort rule @@ -76813,14 +80246,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5291) + p.SetState(5348) p.QualifiedName() } case 33: p.EnterOuterAlt(localctx, 33) { - p.SetState(5292) + p.SetState(5349) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76828,7 +80261,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5293) + p.SetState(5350) p.Match(MDLParserPUBLISHED) if p.HasError() { // Recognition error - abort rule @@ -76836,7 +80269,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5294) + p.SetState(5351) p.Match(MDLParserREST) if p.HasError() { // Recognition error - abort rule @@ -76844,7 +80277,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5295) + p.SetState(5352) p.Match(MDLParserSERVICE) if p.HasError() { // Recognition error - abort rule @@ -76852,14 +80285,14 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5296) + p.SetState(5353) p.QualifiedName() } case 34: p.EnterOuterAlt(localctx, 34) { - p.SetState(5297) + p.SetState(5354) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -76867,7 +80300,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5298) + p.SetState(5355) p.Match(MDLParserFRAGMENT) if p.HasError() { // Recognition error - abort rule @@ -76875,7 +80308,7 @@ func (p *MDLParser) DescribeStatement() (localctx IDescribeStatementContext) { } } { - p.SetState(5299) + p.SetState(5356) p.IdentifierOrKeyword() } @@ -77217,6 +80650,16 @@ func (s *CatalogSelectQueryContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CatalogSelectQueryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCatalogSelectQuery(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { localctx = NewCatalogSelectQueryContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 576, MDLParserRULE_catalogSelectQuery) @@ -77224,19 +80667,19 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5302) + p.SetState(5359) p.Match(MDLParserSELECT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5304) + p.SetState(5361) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 589, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 599, p.GetParserRuleContext()) == 1 { { - p.SetState(5303) + p.SetState(5360) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserDISTINCT || _la == MDLParserALL) { @@ -77251,11 +80694,11 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { goto errorExit } { - p.SetState(5306) + p.SetState(5363) p.SelectList() } { - p.SetState(5307) + p.SetState(5364) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -77263,7 +80706,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } { - p.SetState(5308) + p.SetState(5365) p.Match(MDLParserCATALOG) if p.HasError() { // Recognition error - abort rule @@ -77271,7 +80714,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } { - p.SetState(5309) + p.SetState(5366) p.Match(MDLParserDOT) if p.HasError() { // Recognition error - abort rule @@ -77279,14 +80722,14 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } { - p.SetState(5310) + p.SetState(5367) p.CatalogTableName() } - p.SetState(5315) + p.SetState(5372) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 591, p.GetParserRuleContext()) == 1 { - p.SetState(5312) + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 601, p.GetParserRuleContext()) == 1 { + p.SetState(5369) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77295,7 +80738,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { if _la == MDLParserAS { { - p.SetState(5311) + p.SetState(5368) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -77305,7 +80748,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } { - p.SetState(5314) + p.SetState(5371) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -77316,7 +80759,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } else if p.HasError() { // JIM goto errorExit } - p.SetState(5320) + p.SetState(5377) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77325,18 +80768,18 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { for (int64((_la-86)) & ^0x3f) == 0 && ((int64(1)<<(_la-86))&111) != 0 { { - p.SetState(5317) + p.SetState(5374) p.CatalogJoinClause() } - p.SetState(5322) + p.SetState(5379) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(5325) + p.SetState(5382) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77345,7 +80788,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { if _la == MDLParserWHERE { { - p.SetState(5323) + p.SetState(5380) p.Match(MDLParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -77353,7 +80796,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } { - p.SetState(5324) + p.SetState(5381) var _x = p.Expression() @@ -77361,7 +80804,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } - p.SetState(5333) + p.SetState(5390) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77370,7 +80813,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { if _la == MDLParserGROUP_BY { { - p.SetState(5327) + p.SetState(5384) p.Match(MDLParserGROUP_BY) if p.HasError() { // Recognition error - abort rule @@ -77378,10 +80821,10 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } { - p.SetState(5328) + p.SetState(5385) p.GroupByList() } - p.SetState(5331) + p.SetState(5388) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77390,7 +80833,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { if _la == MDLParserHAVING { { - p.SetState(5329) + p.SetState(5386) p.Match(MDLParserHAVING) if p.HasError() { // Recognition error - abort rule @@ -77398,7 +80841,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } { - p.SetState(5330) + p.SetState(5387) var _x = p.Expression() @@ -77408,7 +80851,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } - p.SetState(5337) + p.SetState(5394) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77417,7 +80860,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { if _la == MDLParserORDER_BY { { - p.SetState(5335) + p.SetState(5392) p.Match(MDLParserORDER_BY) if p.HasError() { // Recognition error - abort rule @@ -77425,12 +80868,12 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } { - p.SetState(5336) + p.SetState(5393) p.OrderByList() } } - p.SetState(5341) + p.SetState(5398) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77439,7 +80882,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { if _la == MDLParserLIMIT { { - p.SetState(5339) + p.SetState(5396) p.Match(MDLParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -77447,7 +80890,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } { - p.SetState(5340) + p.SetState(5397) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -77456,7 +80899,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } - p.SetState(5345) + p.SetState(5402) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77465,7 +80908,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { if _la == MDLParserOFFSET { { - p.SetState(5343) + p.SetState(5400) p.Match(MDLParserOFFSET) if p.HasError() { // Recognition error - abort rule @@ -77473,7 +80916,7 @@ func (p *MDLParser) CatalogSelectQuery() (localctx ICatalogSelectQueryContext) { } } { - p.SetState(5344) + p.SetState(5401) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -77642,13 +81085,23 @@ func (s *CatalogJoinClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CatalogJoinClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCatalogJoinClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CatalogJoinClause() (localctx ICatalogJoinClauseContext) { localctx = NewCatalogJoinClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 578, MDLParserRULE_catalogJoinClause) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(5348) + p.SetState(5405) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77657,13 +81110,13 @@ func (p *MDLParser) CatalogJoinClause() (localctx ICatalogJoinClauseContext) { if (int64((_la-87)) & ^0x3f) == 0 && ((int64(1)<<(_la-87))&55) != 0 { { - p.SetState(5347) + p.SetState(5404) p.JoinType() } } { - p.SetState(5350) + p.SetState(5407) p.Match(MDLParserJOIN) if p.HasError() { // Recognition error - abort rule @@ -77671,7 +81124,7 @@ func (p *MDLParser) CatalogJoinClause() (localctx ICatalogJoinClauseContext) { } } { - p.SetState(5351) + p.SetState(5408) p.Match(MDLParserCATALOG) if p.HasError() { // Recognition error - abort rule @@ -77679,7 +81132,7 @@ func (p *MDLParser) CatalogJoinClause() (localctx ICatalogJoinClauseContext) { } } { - p.SetState(5352) + p.SetState(5409) p.Match(MDLParserDOT) if p.HasError() { // Recognition error - abort rule @@ -77687,14 +81140,14 @@ func (p *MDLParser) CatalogJoinClause() (localctx ICatalogJoinClauseContext) { } } { - p.SetState(5353) + p.SetState(5410) p.CatalogTableName() } - p.SetState(5358) + p.SetState(5415) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 601, p.GetParserRuleContext()) == 1 { - p.SetState(5355) + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 611, p.GetParserRuleContext()) == 1 { + p.SetState(5412) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77703,7 +81156,7 @@ func (p *MDLParser) CatalogJoinClause() (localctx ICatalogJoinClauseContext) { if _la == MDLParserAS { { - p.SetState(5354) + p.SetState(5411) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -77713,7 +81166,7 @@ func (p *MDLParser) CatalogJoinClause() (localctx ICatalogJoinClauseContext) { } { - p.SetState(5357) + p.SetState(5414) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -77724,7 +81177,7 @@ func (p *MDLParser) CatalogJoinClause() (localctx ICatalogJoinClauseContext) { } else if p.HasError() { // JIM goto errorExit } - p.SetState(5362) + p.SetState(5419) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -77733,7 +81186,7 @@ func (p *MDLParser) CatalogJoinClause() (localctx ICatalogJoinClauseContext) { if _la == MDLParserON { { - p.SetState(5360) + p.SetState(5417) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -77741,7 +81194,7 @@ func (p *MDLParser) CatalogJoinClause() (localctx ICatalogJoinClauseContext) { } } { - p.SetState(5361) + p.SetState(5418) p.Expression() } @@ -77895,6 +81348,16 @@ func (s *CatalogTableNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CatalogTableNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCatalogTableName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CatalogTableName() (localctx ICatalogTableNameContext) { localctx = NewCatalogTableNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 580, MDLParserRULE_catalogTableName) @@ -77902,10 +81365,10 @@ func (p *MDLParser) CatalogTableName() (localctx ICatalogTableNameContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5364) + p.SetState(5421) _la = p.GetTokenStream().LA(1) - if !(((int64((_la-143)) & ^0x3f) == 0 && ((int64(1)<<(_la-143))&580542139465735) != 0) || _la == MDLParserATTRIBUTES || _la == MDLParserODATA || _la == MDLParserMODULES || ((int64((_la-378)) & ^0x3f) == 0 && ((int64(1)<<(_la-378))&61) != 0) || _la == MDLParserIDENTIFIER) { + if !(((int64((_la-143)) & ^0x3f) == 0 && ((int64(1)<<(_la-143))&1161084278931463) != 0) || _la == MDLParserATTRIBUTES || _la == MDLParserODATA || _la == MDLParserMODULES || ((int64((_la-381)) & ^0x3f) == 0 && ((int64(1)<<(_la-381))&61) != 0) || _la == MDLParserIDENTIFIER) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -78054,6 +81517,16 @@ func (s *OqlQueryContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OqlQueryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOqlQuery(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OqlQuery() (localctx IOqlQueryContext) { localctx = NewOqlQueryContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 582, MDLParserRULE_oqlQuery) @@ -78061,10 +81534,10 @@ func (p *MDLParser) OqlQuery() (localctx IOqlQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5366) + p.SetState(5423) p.OqlQueryTerm() } - p.SetState(5374) + p.SetState(5431) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78073,14 +81546,14 @@ func (p *MDLParser) OqlQuery() (localctx IOqlQueryContext) { for _la == MDLParserUNION { { - p.SetState(5367) + p.SetState(5424) p.Match(MDLParserUNION) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5369) + p.SetState(5426) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78089,7 +81562,7 @@ func (p *MDLParser) OqlQuery() (localctx IOqlQueryContext) { if _la == MDLParserALL { { - p.SetState(5368) + p.SetState(5425) p.Match(MDLParserALL) if p.HasError() { // Recognition error - abort rule @@ -78099,11 +81572,11 @@ func (p *MDLParser) OqlQuery() (localctx IOqlQueryContext) { } { - p.SetState(5371) + p.SetState(5428) p.OqlQueryTerm() } - p.SetState(5376) + p.SetState(5433) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78308,12 +81781,22 @@ func (s *OqlQueryTermContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OqlQueryTermContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOqlQueryTerm(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { localctx = NewOqlQueryTermContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 584, MDLParserRULE_oqlQueryTerm) var _la int - p.SetState(5413) + p.SetState(5470) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78323,22 +81806,22 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { case MDLParserSELECT: p.EnterOuterAlt(localctx, 1) { - p.SetState(5377) + p.SetState(5434) p.SelectClause() } - p.SetState(5379) + p.SetState(5436) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 605, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 615, p.GetParserRuleContext()) == 1 { { - p.SetState(5378) + p.SetState(5435) p.FromClause() } } else if p.HasError() { // JIM goto errorExit } - p.SetState(5382) + p.SetState(5439) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78347,12 +81830,12 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { if _la == MDLParserWHERE { { - p.SetState(5381) + p.SetState(5438) p.WhereClause() } } - p.SetState(5385) + p.SetState(5442) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78361,12 +81844,12 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { if _la == MDLParserGROUP_BY { { - p.SetState(5384) + p.SetState(5441) p.GroupByClause() } } - p.SetState(5388) + p.SetState(5445) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78375,12 +81858,12 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { if _la == MDLParserHAVING { { - p.SetState(5387) + p.SetState(5444) p.HavingClause() } } - p.SetState(5391) + p.SetState(5448) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78389,12 +81872,12 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { if _la == MDLParserORDER_BY { { - p.SetState(5390) + p.SetState(5447) p.OrderByClause() } } - p.SetState(5394) + p.SetState(5451) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78403,7 +81886,7 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { if _la == MDLParserOFFSET || _la == MDLParserLIMIT { { - p.SetState(5393) + p.SetState(5450) p.LimitOffsetClause() } @@ -78412,10 +81895,10 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { case MDLParserFROM: p.EnterOuterAlt(localctx, 2) { - p.SetState(5396) + p.SetState(5453) p.FromClause() } - p.SetState(5398) + p.SetState(5455) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78424,12 +81907,12 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { if _la == MDLParserWHERE { { - p.SetState(5397) + p.SetState(5454) p.WhereClause() } } - p.SetState(5401) + p.SetState(5458) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78438,12 +81921,12 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { if _la == MDLParserGROUP_BY { { - p.SetState(5400) + p.SetState(5457) p.GroupByClause() } } - p.SetState(5404) + p.SetState(5461) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78452,16 +81935,16 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { if _la == MDLParserHAVING { { - p.SetState(5403) + p.SetState(5460) p.HavingClause() } } { - p.SetState(5406) + p.SetState(5463) p.SelectClause() } - p.SetState(5408) + p.SetState(5465) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78470,12 +81953,12 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { if _la == MDLParserORDER_BY { { - p.SetState(5407) + p.SetState(5464) p.OrderByClause() } } - p.SetState(5411) + p.SetState(5468) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78484,7 +81967,7 @@ func (p *MDLParser) OqlQueryTerm() (localctx IOqlQueryTermContext) { if _la == MDLParserOFFSET || _la == MDLParserLIMIT { { - p.SetState(5410) + p.SetState(5467) p.LimitOffsetClause() } @@ -78605,6 +82088,16 @@ func (s *SelectClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SelectClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSelectClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SelectClause() (localctx ISelectClauseContext) { localctx = NewSelectClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 586, MDLParserRULE_selectClause) @@ -78612,19 +82105,19 @@ func (p *MDLParser) SelectClause() (localctx ISelectClauseContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5415) + p.SetState(5472) p.Match(MDLParserSELECT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5417) + p.SetState(5474) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 617, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 627, p.GetParserRuleContext()) == 1 { { - p.SetState(5416) + p.SetState(5473) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserDISTINCT || _la == MDLParserALL) { @@ -78639,7 +82132,7 @@ func (p *MDLParser) SelectClause() (localctx ISelectClauseContext) { goto errorExit } { - p.SetState(5419) + p.SetState(5476) p.SelectList() } @@ -78779,12 +82272,22 @@ func (s *SelectListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SelectListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSelectList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SelectList() (localctx ISelectListContext) { localctx = NewSelectListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 588, MDLParserRULE_selectList) var _la int - p.SetState(5430) + p.SetState(5487) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78794,7 +82297,7 @@ func (p *MDLParser) SelectList() (localctx ISelectListContext) { case MDLParserSTAR: p.EnterOuterAlt(localctx, 1) { - p.SetState(5421) + p.SetState(5478) p.Match(MDLParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -78802,13 +82305,13 @@ func (p *MDLParser) SelectList() (localctx ISelectListContext) { } } - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserCASE, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserHEAD, MDLParserTAIL, MDLParserFIND, MDLParserSORT, MDLParserUNION, MDLParserINTERSECT, MDLParserSUBTRACT, MDLParserCONTAINS, MDLParserAVERAGE, MDLParserMINIMUM, MDLParserMAXIMUM, MDLParserLIST, MDLParserEQUALS_OP, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserEMPTY, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserFILTER, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserLENGTH, MDLParserTRIM, MDLParserCAST, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserEXISTS, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserPLUS, MDLParserMINUS, MDLParserMOD, MDLParserDIV, MDLParserLPAREN, MDLParserMENDIX_TOKEN, MDLParserSTRING_LITERAL, MDLParserNUMBER_LITERAL, MDLParserVARIABLE, MDLParserIDENTIFIER, MDLParserHYPHENATED_ID, MDLParserQUOTED_IDENTIFIER: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserCASE, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserHEAD, MDLParserTAIL, MDLParserFIND, MDLParserSORT, MDLParserUNION, MDLParserINTERSECT, MDLParserSUBTRACT, MDLParserCONTAINS, MDLParserAVERAGE, MDLParserMINIMUM, MDLParserMAXIMUM, MDLParserLIST, MDLParserEQUALS_OP, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserEMPTY, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserFILTER, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserLENGTH, MDLParserTRIM, MDLParserCAST, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserEXISTS, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserPLUS, MDLParserMINUS, MDLParserMOD, MDLParserDIV, MDLParserLPAREN, MDLParserMENDIX_TOKEN, MDLParserSTRING_LITERAL, MDLParserNUMBER_LITERAL, MDLParserVARIABLE, MDLParserIDENTIFIER, MDLParserHYPHENATED_ID, MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(5422) + p.SetState(5479) p.SelectItem() } - p.SetState(5427) + p.SetState(5484) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78817,7 +82320,7 @@ func (p *MDLParser) SelectList() (localctx ISelectListContext) { for _la == MDLParserCOMMA { { - p.SetState(5423) + p.SetState(5480) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -78825,11 +82328,11 @@ func (p *MDLParser) SelectList() (localctx ISelectListContext) { } } { - p.SetState(5424) + p.SetState(5481) p.SelectItem() } - p.SetState(5429) + p.SetState(5486) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -78976,25 +82479,35 @@ func (s *SelectItemContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SelectItemContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSelectItem(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SelectItem() (localctx ISelectItemContext) { localctx = NewSelectItemContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 590, MDLParserRULE_selectItem) var _la int - p.SetState(5442) + p.SetState(5499) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 622, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 632, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(5432) + p.SetState(5489) p.Expression() } - p.SetState(5435) + p.SetState(5492) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79003,7 +82516,7 @@ func (p *MDLParser) SelectItem() (localctx ISelectItemContext) { if _la == MDLParserAS { { - p.SetState(5433) + p.SetState(5490) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -79011,7 +82524,7 @@ func (p *MDLParser) SelectItem() (localctx ISelectItemContext) { } } { - p.SetState(5434) + p.SetState(5491) p.SelectAlias() } @@ -79020,10 +82533,10 @@ func (p *MDLParser) SelectItem() (localctx ISelectItemContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(5437) + p.SetState(5494) p.AggregateFunction() } - p.SetState(5440) + p.SetState(5497) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79032,7 +82545,7 @@ func (p *MDLParser) SelectItem() (localctx ISelectItemContext) { if _la == MDLParserAS { { - p.SetState(5438) + p.SetState(5495) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -79040,7 +82553,7 @@ func (p *MDLParser) SelectItem() (localctx ISelectItemContext) { } } { - p.SetState(5439) + p.SetState(5496) p.SelectAlias() } @@ -79150,10 +82663,20 @@ func (s *SelectAliasContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SelectAliasContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSelectAlias(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SelectAlias() (localctx ISelectAliasContext) { localctx = NewSelectAliasContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 592, MDLParserRULE_selectAlias) - p.SetState(5446) + p.SetState(5503) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79163,7 +82686,7 @@ func (p *MDLParser) SelectAlias() (localctx ISelectAliasContext) { case MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(5444) + p.SetState(5501) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -79174,7 +82697,7 @@ func (p *MDLParser) SelectAlias() (localctx ISelectAliasContext) { case MDLParserINDEX, MDLParserOWNER, MDLParserREFERENCE, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserDEBUG, MDLParserACTION, MDLParserSORT, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserTITLE, MDLParserLABEL, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserCONTENT, MDLParserTABLETWIDTH, MDLParserPHONEWIDTH, MDLParserCLASS, MDLParserSTYLE, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserEDITABLE, MDLParserVISIBLE, MDLParserSUCCESS, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserERROR, MDLParserRANGE, MDLParserSTATUS, MDLParserVERSION, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserNAVIGATION, MDLParserHOME, MDLParserCHECK, MDLParserTEXT, MDLParserMESSAGE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserFORMAT, MDLParserROLE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserDESCRIPTION, MDLParserOFF: p.EnterOuterAlt(localctx, 2) { - p.SetState(5445) + p.SetState(5502) p.CommonNameKeyword() } @@ -79326,6 +82849,16 @@ func (s *FromClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *FromClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitFromClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) FromClause() (localctx IFromClauseContext) { localctx = NewFromClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 594, MDLParserRULE_fromClause) @@ -79333,7 +82866,7 @@ func (p *MDLParser) FromClause() (localctx IFromClauseContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5448) + p.SetState(5505) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -79341,10 +82874,10 @@ func (p *MDLParser) FromClause() (localctx IFromClauseContext) { } } { - p.SetState(5449) + p.SetState(5506) p.TableReference() } - p.SetState(5453) + p.SetState(5510) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79353,11 +82886,11 @@ func (p *MDLParser) FromClause() (localctx IFromClauseContext) { for (int64((_la-86)) & ^0x3f) == 0 && ((int64(1)<<(_la-86))&111) != 0 { { - p.SetState(5450) + p.SetState(5507) p.JoinClause() } - p.SetState(5455) + p.SetState(5512) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79497,29 +83030,39 @@ func (s *TableReferenceContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *TableReferenceContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitTableReference(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) TableReference() (localctx ITableReferenceContext) { localctx = NewTableReferenceContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 596, MDLParserRULE_tableReference) var _la int - p.SetState(5472) + p.SetState(5529) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV, MDLParserIDENTIFIER, MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(5456) + p.SetState(5513) p.QualifiedName() } - p.SetState(5461) + p.SetState(5518) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 626, p.GetParserRuleContext()) == 1 { - p.SetState(5458) + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 636, p.GetParserRuleContext()) == 1 { + p.SetState(5515) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79528,7 +83071,7 @@ func (p *MDLParser) TableReference() (localctx ITableReferenceContext) { if _la == MDLParserAS { { - p.SetState(5457) + p.SetState(5514) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -79538,7 +83081,7 @@ func (p *MDLParser) TableReference() (localctx ITableReferenceContext) { } { - p.SetState(5460) + p.SetState(5517) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -79553,7 +83096,7 @@ func (p *MDLParser) TableReference() (localctx ITableReferenceContext) { case MDLParserLPAREN: p.EnterOuterAlt(localctx, 2) { - p.SetState(5463) + p.SetState(5520) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -79561,22 +83104,22 @@ func (p *MDLParser) TableReference() (localctx ITableReferenceContext) { } } { - p.SetState(5464) + p.SetState(5521) p.OqlQuery() } { - p.SetState(5465) + p.SetState(5522) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5470) + p.SetState(5527) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 628, p.GetParserRuleContext()) == 1 { - p.SetState(5467) + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 638, p.GetParserRuleContext()) == 1 { + p.SetState(5524) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79585,7 +83128,7 @@ func (p *MDLParser) TableReference() (localctx ITableReferenceContext) { if _la == MDLParserAS { { - p.SetState(5466) + p.SetState(5523) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -79595,7 +83138,7 @@ func (p *MDLParser) TableReference() (localctx ITableReferenceContext) { } { - p.SetState(5469) + p.SetState(5526) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -79778,21 +83321,31 @@ func (s *JoinClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *JoinClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitJoinClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) JoinClause() (localctx IJoinClauseContext) { localctx = NewJoinClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 598, MDLParserRULE_joinClause) var _la int - p.SetState(5494) + p.SetState(5551) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 635, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 645, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) - p.SetState(5475) + p.SetState(5532) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79801,13 +83354,13 @@ func (p *MDLParser) JoinClause() (localctx IJoinClauseContext) { if (int64((_la-87)) & ^0x3f) == 0 && ((int64(1)<<(_la-87))&55) != 0 { { - p.SetState(5474) + p.SetState(5531) p.JoinType() } } { - p.SetState(5477) + p.SetState(5534) p.Match(MDLParserJOIN) if p.HasError() { // Recognition error - abort rule @@ -79815,10 +83368,10 @@ func (p *MDLParser) JoinClause() (localctx IJoinClauseContext) { } } { - p.SetState(5478) + p.SetState(5535) p.TableReference() } - p.SetState(5481) + p.SetState(5538) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79827,7 +83380,7 @@ func (p *MDLParser) JoinClause() (localctx IJoinClauseContext) { if _la == MDLParserON { { - p.SetState(5479) + p.SetState(5536) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -79835,7 +83388,7 @@ func (p *MDLParser) JoinClause() (localctx IJoinClauseContext) { } } { - p.SetState(5480) + p.SetState(5537) p.Expression() } @@ -79843,7 +83396,7 @@ func (p *MDLParser) JoinClause() (localctx IJoinClauseContext) { case 2: p.EnterOuterAlt(localctx, 2) - p.SetState(5484) + p.SetState(5541) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79852,13 +83405,13 @@ func (p *MDLParser) JoinClause() (localctx IJoinClauseContext) { if (int64((_la-87)) & ^0x3f) == 0 && ((int64(1)<<(_la-87))&55) != 0 { { - p.SetState(5483) + p.SetState(5540) p.JoinType() } } { - p.SetState(5486) + p.SetState(5543) p.Match(MDLParserJOIN) if p.HasError() { // Recognition error - abort rule @@ -79866,14 +83419,14 @@ func (p *MDLParser) JoinClause() (localctx IJoinClauseContext) { } } { - p.SetState(5487) + p.SetState(5544) p.AssociationPath() } - p.SetState(5492) + p.SetState(5549) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 634, p.GetParserRuleContext()) == 1 { - p.SetState(5489) + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 644, p.GetParserRuleContext()) == 1 { + p.SetState(5546) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -79882,7 +83435,7 @@ func (p *MDLParser) JoinClause() (localctx IJoinClauseContext) { if _la == MDLParserAS { { - p.SetState(5488) + p.SetState(5545) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -79892,7 +83445,7 @@ func (p *MDLParser) JoinClause() (localctx IJoinClauseContext) { } { - p.SetState(5491) + p.SetState(5548) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -80044,20 +83597,30 @@ func (s *AssociationPathContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AssociationPathContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAssociationPath(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AssociationPath() (localctx IAssociationPathContext) { localctx = NewAssociationPathContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 600, MDLParserRULE_associationPath) - p.SetState(5506) + p.SetState(5563) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 636, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 646, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(5496) + p.SetState(5553) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -80065,7 +83628,7 @@ func (p *MDLParser) AssociationPath() (localctx IAssociationPathContext) { } } { - p.SetState(5497) + p.SetState(5554) p.Match(MDLParserSLASH) if p.HasError() { // Recognition error - abort rule @@ -80073,11 +83636,11 @@ func (p *MDLParser) AssociationPath() (localctx IAssociationPathContext) { } } { - p.SetState(5498) + p.SetState(5555) p.QualifiedName() } { - p.SetState(5499) + p.SetState(5556) p.Match(MDLParserSLASH) if p.HasError() { // Recognition error - abort rule @@ -80085,18 +83648,18 @@ func (p *MDLParser) AssociationPath() (localctx IAssociationPathContext) { } } { - p.SetState(5500) + p.SetState(5557) p.QualifiedName() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(5502) + p.SetState(5559) p.QualifiedName() } { - p.SetState(5503) + p.SetState(5560) p.Match(MDLParserSLASH) if p.HasError() { // Recognition error - abort rule @@ -80104,7 +83667,7 @@ func (p *MDLParser) AssociationPath() (localctx IAssociationPathContext) { } } { - p.SetState(5504) + p.SetState(5561) p.QualifiedName() } @@ -80220,12 +83783,22 @@ func (s *JoinTypeContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *JoinTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitJoinType(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) JoinType() (localctx IJoinTypeContext) { localctx = NewJoinTypeContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 602, MDLParserRULE_joinType) var _la int - p.SetState(5522) + p.SetState(5579) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -80235,14 +83808,14 @@ func (p *MDLParser) JoinType() (localctx IJoinTypeContext) { case MDLParserLEFT: p.EnterOuterAlt(localctx, 1) { - p.SetState(5508) + p.SetState(5565) p.Match(MDLParserLEFT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5510) + p.SetState(5567) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -80251,7 +83824,7 @@ func (p *MDLParser) JoinType() (localctx IJoinTypeContext) { if _la == MDLParserOUTER { { - p.SetState(5509) + p.SetState(5566) p.Match(MDLParserOUTER) if p.HasError() { // Recognition error - abort rule @@ -80264,14 +83837,14 @@ func (p *MDLParser) JoinType() (localctx IJoinTypeContext) { case MDLParserRIGHT: p.EnterOuterAlt(localctx, 2) { - p.SetState(5512) + p.SetState(5569) p.Match(MDLParserRIGHT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5514) + p.SetState(5571) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -80280,7 +83853,7 @@ func (p *MDLParser) JoinType() (localctx IJoinTypeContext) { if _la == MDLParserOUTER { { - p.SetState(5513) + p.SetState(5570) p.Match(MDLParserOUTER) if p.HasError() { // Recognition error - abort rule @@ -80293,7 +83866,7 @@ func (p *MDLParser) JoinType() (localctx IJoinTypeContext) { case MDLParserINNER: p.EnterOuterAlt(localctx, 3) { - p.SetState(5516) + p.SetState(5573) p.Match(MDLParserINNER) if p.HasError() { // Recognition error - abort rule @@ -80304,14 +83877,14 @@ func (p *MDLParser) JoinType() (localctx IJoinTypeContext) { case MDLParserFULL: p.EnterOuterAlt(localctx, 4) { - p.SetState(5517) + p.SetState(5574) p.Match(MDLParserFULL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5519) + p.SetState(5576) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -80320,7 +83893,7 @@ func (p *MDLParser) JoinType() (localctx IJoinTypeContext) { if _la == MDLParserOUTER { { - p.SetState(5518) + p.SetState(5575) p.Match(MDLParserOUTER) if p.HasError() { // Recognition error - abort rule @@ -80333,7 +83906,7 @@ func (p *MDLParser) JoinType() (localctx IJoinTypeContext) { case MDLParserCROSS: p.EnterOuterAlt(localctx, 5) { - p.SetState(5521) + p.SetState(5578) p.Match(MDLParserCROSS) if p.HasError() { // Recognition error - abort rule @@ -80446,12 +84019,22 @@ func (s *WhereClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *WhereClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitWhereClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) WhereClause() (localctx IWhereClauseContext) { localctx = NewWhereClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 604, MDLParserRULE_whereClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(5524) + p.SetState(5581) p.Match(MDLParserWHERE) if p.HasError() { // Recognition error - abort rule @@ -80459,7 +84042,7 @@ func (p *MDLParser) WhereClause() (localctx IWhereClauseContext) { } } { - p.SetState(5525) + p.SetState(5582) p.Expression() } @@ -80563,12 +84146,22 @@ func (s *GroupByClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *GroupByClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitGroupByClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) GroupByClause() (localctx IGroupByClauseContext) { localctx = NewGroupByClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 606, MDLParserRULE_groupByClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(5527) + p.SetState(5584) p.Match(MDLParserGROUP_BY) if p.HasError() { // Recognition error - abort rule @@ -80576,7 +84169,7 @@ func (p *MDLParser) GroupByClause() (localctx IGroupByClauseContext) { } } { - p.SetState(5528) + p.SetState(5585) p.ExpressionList() } @@ -80680,12 +84273,22 @@ func (s *HavingClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *HavingClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitHavingClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) HavingClause() (localctx IHavingClauseContext) { localctx = NewHavingClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 608, MDLParserRULE_havingClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(5530) + p.SetState(5587) p.Match(MDLParserHAVING) if p.HasError() { // Recognition error - abort rule @@ -80693,7 +84296,7 @@ func (p *MDLParser) HavingClause() (localctx IHavingClauseContext) { } } { - p.SetState(5531) + p.SetState(5588) p.Expression() } @@ -80797,12 +84400,22 @@ func (s *OrderByClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OrderByClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOrderByClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OrderByClause() (localctx IOrderByClauseContext) { localctx = NewOrderByClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 610, MDLParserRULE_orderByClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(5533) + p.SetState(5590) p.Match(MDLParserORDER_BY) if p.HasError() { // Recognition error - abort rule @@ -80810,7 +84423,7 @@ func (p *MDLParser) OrderByClause() (localctx IOrderByClauseContext) { } } { - p.SetState(5534) + p.SetState(5591) p.OrderByList() } @@ -80945,6 +84558,16 @@ func (s *OrderByListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OrderByListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOrderByList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OrderByList() (localctx IOrderByListContext) { localctx = NewOrderByListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 612, MDLParserRULE_orderByList) @@ -80952,10 +84575,10 @@ func (p *MDLParser) OrderByList() (localctx IOrderByListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5536) + p.SetState(5593) p.OrderByItem() } - p.SetState(5541) + p.SetState(5598) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -80964,7 +84587,7 @@ func (p *MDLParser) OrderByList() (localctx IOrderByListContext) { for _la == MDLParserCOMMA { { - p.SetState(5537) + p.SetState(5594) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -80972,11 +84595,11 @@ func (p *MDLParser) OrderByList() (localctx IOrderByListContext) { } } { - p.SetState(5538) + p.SetState(5595) p.OrderByItem() } - p.SetState(5543) + p.SetState(5600) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -81089,6 +84712,16 @@ func (s *OrderByItemContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OrderByItemContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOrderByItem(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OrderByItem() (localctx IOrderByItemContext) { localctx = NewOrderByItemContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 614, MDLParserRULE_orderByItem) @@ -81096,10 +84729,10 @@ func (p *MDLParser) OrderByItem() (localctx IOrderByItemContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5544) + p.SetState(5601) p.Expression() } - p.SetState(5546) + p.SetState(5603) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -81108,7 +84741,7 @@ func (p *MDLParser) OrderByItem() (localctx IOrderByItemContext) { if _la == MDLParserASC || _la == MDLParserDESC { { - p.SetState(5545) + p.SetState(5602) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserASC || _la == MDLParserDESC) { @@ -81252,6 +84885,16 @@ func (s *GroupByListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *GroupByListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitGroupByList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) GroupByList() (localctx IGroupByListContext) { localctx = NewGroupByListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 616, MDLParserRULE_groupByList) @@ -81259,10 +84902,10 @@ func (p *MDLParser) GroupByList() (localctx IGroupByListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5548) + p.SetState(5605) p.Expression() } - p.SetState(5553) + p.SetState(5610) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -81271,7 +84914,7 @@ func (p *MDLParser) GroupByList() (localctx IGroupByListContext) { for _la == MDLParserCOMMA { { - p.SetState(5549) + p.SetState(5606) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -81279,11 +84922,11 @@ func (p *MDLParser) GroupByList() (localctx IGroupByListContext) { } } { - p.SetState(5550) + p.SetState(5607) p.Expression() } - p.SetState(5555) + p.SetState(5612) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -81389,12 +85032,22 @@ func (s *LimitOffsetClauseContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LimitOffsetClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLimitOffsetClause(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) LimitOffsetClause() (localctx ILimitOffsetClauseContext) { localctx = NewLimitOffsetClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 618, MDLParserRULE_limitOffsetClause) var _la int - p.SetState(5568) + p.SetState(5625) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -81404,7 +85057,7 @@ func (p *MDLParser) LimitOffsetClause() (localctx ILimitOffsetClauseContext) { case MDLParserLIMIT: p.EnterOuterAlt(localctx, 1) { - p.SetState(5556) + p.SetState(5613) p.Match(MDLParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -81412,14 +85065,14 @@ func (p *MDLParser) LimitOffsetClause() (localctx ILimitOffsetClauseContext) { } } { - p.SetState(5557) + p.SetState(5614) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5560) + p.SetState(5617) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -81428,7 +85081,7 @@ func (p *MDLParser) LimitOffsetClause() (localctx ILimitOffsetClauseContext) { if _la == MDLParserOFFSET { { - p.SetState(5558) + p.SetState(5615) p.Match(MDLParserOFFSET) if p.HasError() { // Recognition error - abort rule @@ -81436,7 +85089,7 @@ func (p *MDLParser) LimitOffsetClause() (localctx ILimitOffsetClauseContext) { } } { - p.SetState(5559) + p.SetState(5616) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -81449,7 +85102,7 @@ func (p *MDLParser) LimitOffsetClause() (localctx ILimitOffsetClauseContext) { case MDLParserOFFSET: p.EnterOuterAlt(localctx, 2) { - p.SetState(5562) + p.SetState(5619) p.Match(MDLParserOFFSET) if p.HasError() { // Recognition error - abort rule @@ -81457,14 +85110,14 @@ func (p *MDLParser) LimitOffsetClause() (localctx ILimitOffsetClauseContext) { } } { - p.SetState(5563) + p.SetState(5620) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5566) + p.SetState(5623) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -81473,7 +85126,7 @@ func (p *MDLParser) LimitOffsetClause() (localctx ILimitOffsetClauseContext) { if _la == MDLParserLIMIT { { - p.SetState(5564) + p.SetState(5621) p.Match(MDLParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -81481,7 +85134,7 @@ func (p *MDLParser) LimitOffsetClause() (localctx ILimitOffsetClauseContext) { } } { - p.SetState(5565) + p.SetState(5622) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -81846,125 +85499,135 @@ func (s *UtilityStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *UtilityStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitUtilityStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) UtilityStatement() (localctx IUtilityStatementContext) { localctx = NewUtilityStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 620, MDLParserRULE_utilityStatement) - p.SetState(5586) + p.SetState(5643) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 647, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 657, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(5570) + p.SetState(5627) p.ConnectStatement() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(5571) + p.SetState(5628) p.DisconnectStatement() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(5572) + p.SetState(5629) p.UpdateStatement() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(5573) + p.SetState(5630) p.CheckStatement() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(5574) + p.SetState(5631) p.BuildStatement() } case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(5575) + p.SetState(5632) p.ExecuteScriptStatement() } case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(5576) + p.SetState(5633) p.ExecuteRuntimeStatement() } case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(5577) + p.SetState(5634) p.LintStatement() } case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(5578) + p.SetState(5635) p.SearchStatement() } case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(5579) + p.SetState(5636) p.UseSessionStatement() } case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(5580) + p.SetState(5637) p.IntrospectApiStatement() } case 12: p.EnterOuterAlt(localctx, 12) { - p.SetState(5581) + p.SetState(5638) p.DebugStatement() } case 13: p.EnterOuterAlt(localctx, 13) { - p.SetState(5582) + p.SetState(5639) p.DefineFragmentStatement() } case 14: p.EnterOuterAlt(localctx, 14) { - p.SetState(5583) + p.SetState(5640) p.SqlStatement() } case 15: p.EnterOuterAlt(localctx, 15) { - p.SetState(5584) + p.SetState(5641) p.ImportStatement() } case 16: p.EnterOuterAlt(localctx, 16) { - p.SetState(5585) + p.SetState(5642) p.HelpStatement() } @@ -82060,12 +85723,22 @@ func (s *SearchStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SearchStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSearchStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SearchStatement() (localctx ISearchStatementContext) { localctx = NewSearchStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 622, MDLParserRULE_searchStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(5588) + p.SetState(5645) p.Match(MDLParserSEARCH) if p.HasError() { // Recognition error - abort rule @@ -82073,7 +85746,7 @@ func (p *MDLParser) SearchStatement() (localctx ISearchStatementContext) { } } { - p.SetState(5589) + p.SetState(5646) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -82219,22 +85892,32 @@ func (s *ConnectStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ConnectStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitConnectStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { localctx = NewConnectStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 624, MDLParserRULE_connectStatement) var _la int - p.SetState(5614) + p.SetState(5671) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 650, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 660, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(5591) + p.SetState(5648) p.Match(MDLParserCONNECT) if p.HasError() { // Recognition error - abort rule @@ -82242,7 +85925,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5592) + p.SetState(5649) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -82250,7 +85933,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5593) + p.SetState(5650) p.Match(MDLParserPROJECT) if p.HasError() { // Recognition error - abort rule @@ -82258,14 +85941,14 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5594) + p.SetState(5651) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5597) + p.SetState(5654) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -82274,7 +85957,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { if _la == MDLParserBRANCH { { - p.SetState(5595) + p.SetState(5652) p.Match(MDLParserBRANCH) if p.HasError() { // Recognition error - abort rule @@ -82282,7 +85965,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5596) + p.SetState(5653) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -82292,7 +85975,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } { - p.SetState(5599) + p.SetState(5656) p.Match(MDLParserTOKEN) if p.HasError() { // Recognition error - abort rule @@ -82300,7 +85983,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5600) + p.SetState(5657) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -82311,7 +85994,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(5601) + p.SetState(5658) p.Match(MDLParserCONNECT) if p.HasError() { // Recognition error - abort rule @@ -82319,7 +86002,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5602) + p.SetState(5659) p.Match(MDLParserLOCAL) if p.HasError() { // Recognition error - abort rule @@ -82327,7 +86010,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5603) + p.SetState(5660) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -82338,7 +86021,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(5604) + p.SetState(5661) p.Match(MDLParserCONNECT) if p.HasError() { // Recognition error - abort rule @@ -82346,7 +86029,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5605) + p.SetState(5662) p.Match(MDLParserRUNTIME) if p.HasError() { // Recognition error - abort rule @@ -82354,7 +86037,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5606) + p.SetState(5663) p.Match(MDLParserHOST) if p.HasError() { // Recognition error - abort rule @@ -82362,7 +86045,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5607) + p.SetState(5664) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -82370,7 +86053,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5608) + p.SetState(5665) p.Match(MDLParserPORT) if p.HasError() { // Recognition error - abort rule @@ -82378,14 +86061,14 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5609) + p.SetState(5666) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5612) + p.SetState(5669) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -82394,7 +86077,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { if _la == MDLParserTOKEN { { - p.SetState(5610) + p.SetState(5667) p.Match(MDLParserTOKEN) if p.HasError() { // Recognition error - abort rule @@ -82402,7 +86085,7 @@ func (p *MDLParser) ConnectStatement() (localctx IConnectStatementContext) { } } { - p.SetState(5611) + p.SetState(5668) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -82499,12 +86182,22 @@ func (s *DisconnectStatementContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *DisconnectStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDisconnectStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DisconnectStatement() (localctx IDisconnectStatementContext) { localctx = NewDisconnectStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 626, MDLParserRULE_disconnectStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(5616) + p.SetState(5673) p.Match(MDLParserDISCONNECT) if p.HasError() { // Recognition error - abort rule @@ -82625,22 +86318,32 @@ func (s *UpdateStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *UpdateStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitUpdateStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { localctx = NewUpdateStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 628, MDLParserRULE_updateStatement) var _la int - p.SetState(5634) + p.SetState(5691) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 655, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 665, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(5618) + p.SetState(5675) p.Match(MDLParserUPDATE) if p.HasError() { // Recognition error - abort rule @@ -82651,7 +86354,7 @@ func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(5619) + p.SetState(5676) p.Match(MDLParserREFRESH) if p.HasError() { // Recognition error - abort rule @@ -82659,14 +86362,14 @@ func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { } } { - p.SetState(5620) + p.SetState(5677) p.Match(MDLParserCATALOG) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5622) + p.SetState(5679) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -82675,7 +86378,7 @@ func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { if _la == MDLParserFULL { { - p.SetState(5621) + p.SetState(5678) p.Match(MDLParserFULL) if p.HasError() { // Recognition error - abort rule @@ -82684,7 +86387,7 @@ func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { } } - p.SetState(5625) + p.SetState(5682) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -82693,7 +86396,7 @@ func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { if _la == MDLParserSOURCE_KW { { - p.SetState(5624) + p.SetState(5681) p.Match(MDLParserSOURCE_KW) if p.HasError() { // Recognition error - abort rule @@ -82702,7 +86405,7 @@ func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { } } - p.SetState(5628) + p.SetState(5685) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -82711,7 +86414,7 @@ func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { if _la == MDLParserFORCE { { - p.SetState(5627) + p.SetState(5684) p.Match(MDLParserFORCE) if p.HasError() { // Recognition error - abort rule @@ -82720,7 +86423,7 @@ func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { } } - p.SetState(5631) + p.SetState(5688) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -82729,7 +86432,7 @@ func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { if _la == MDLParserBACKGROUND { { - p.SetState(5630) + p.SetState(5687) p.Match(MDLParserBACKGROUND) if p.HasError() { // Recognition error - abort rule @@ -82742,7 +86445,7 @@ func (p *MDLParser) UpdateStatement() (localctx IUpdateStatementContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(5633) + p.SetState(5690) p.Match(MDLParserREFRESH) if p.HasError() { // Recognition error - abort rule @@ -82837,12 +86540,22 @@ func (s *CheckStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CheckStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCheckStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CheckStatement() (localctx ICheckStatementContext) { localctx = NewCheckStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 630, MDLParserRULE_checkStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(5636) + p.SetState(5693) p.Match(MDLParserCHECK) if p.HasError() { // Recognition error - abort rule @@ -82933,12 +86646,22 @@ func (s *BuildStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *BuildStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitBuildStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) BuildStatement() (localctx IBuildStatementContext) { localctx = NewBuildStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 632, MDLParserRULE_buildStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(5638) + p.SetState(5695) p.Match(MDLParserBUILD) if p.HasError() { // Recognition error - abort rule @@ -83039,12 +86762,22 @@ func (s *ExecuteScriptStatementContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *ExecuteScriptStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitExecuteScriptStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ExecuteScriptStatement() (localctx IExecuteScriptStatementContext) { localctx = NewExecuteScriptStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 634, MDLParserRULE_executeScriptStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(5640) + p.SetState(5697) p.Match(MDLParserEXECUTE) if p.HasError() { // Recognition error - abort rule @@ -83052,7 +86785,7 @@ func (p *MDLParser) ExecuteScriptStatement() (localctx IExecuteScriptStatementCo } } { - p.SetState(5641) + p.SetState(5698) p.Match(MDLParserSCRIPT) if p.HasError() { // Recognition error - abort rule @@ -83060,7 +86793,7 @@ func (p *MDLParser) ExecuteScriptStatement() (localctx IExecuteScriptStatementCo } } { - p.SetState(5642) + p.SetState(5699) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -83161,12 +86894,22 @@ func (s *ExecuteRuntimeStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *ExecuteRuntimeStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitExecuteRuntimeStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ExecuteRuntimeStatement() (localctx IExecuteRuntimeStatementContext) { localctx = NewExecuteRuntimeStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 636, MDLParserRULE_executeRuntimeStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(5644) + p.SetState(5701) p.Match(MDLParserEXECUTE) if p.HasError() { // Recognition error - abort rule @@ -83174,7 +86917,7 @@ func (p *MDLParser) ExecuteRuntimeStatement() (localctx IExecuteRuntimeStatement } } { - p.SetState(5645) + p.SetState(5702) p.Match(MDLParserRUNTIME) if p.HasError() { // Recognition error - abort rule @@ -83182,7 +86925,7 @@ func (p *MDLParser) ExecuteRuntimeStatement() (localctx IExecuteRuntimeStatement } } { - p.SetState(5646) + p.SetState(5703) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -83322,12 +87065,22 @@ func (s *LintStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LintStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLintStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) LintStatement() (localctx ILintStatementContext) { localctx = NewLintStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 638, MDLParserRULE_lintStatement) var _la int - p.SetState(5659) + p.SetState(5716) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -83337,26 +87090,26 @@ func (p *MDLParser) LintStatement() (localctx ILintStatementContext) { case MDLParserLINT: p.EnterOuterAlt(localctx, 1) { - p.SetState(5648) + p.SetState(5705) p.Match(MDLParserLINT) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5650) + p.SetState(5707) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 656, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 666, p.GetParserRuleContext()) == 1 { { - p.SetState(5649) + p.SetState(5706) p.LintTarget() } } else if p.HasError() { // JIM goto errorExit } - p.SetState(5654) + p.SetState(5711) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -83365,7 +87118,7 @@ func (p *MDLParser) LintStatement() (localctx ILintStatementContext) { if _la == MDLParserFORMAT { { - p.SetState(5652) + p.SetState(5709) p.Match(MDLParserFORMAT) if p.HasError() { // Recognition error - abort rule @@ -83373,7 +87126,7 @@ func (p *MDLParser) LintStatement() (localctx ILintStatementContext) { } } { - p.SetState(5653) + p.SetState(5710) p.LintFormat() } @@ -83382,7 +87135,7 @@ func (p *MDLParser) LintStatement() (localctx ILintStatementContext) { case MDLParserSHOW: p.EnterOuterAlt(localctx, 2) { - p.SetState(5656) + p.SetState(5713) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -83390,7 +87143,7 @@ func (p *MDLParser) LintStatement() (localctx ILintStatementContext) { } } { - p.SetState(5657) + p.SetState(5714) p.Match(MDLParserLINT) if p.HasError() { // Recognition error - abort rule @@ -83398,7 +87151,7 @@ func (p *MDLParser) LintStatement() (localctx ILintStatementContext) { } } { - p.SetState(5658) + p.SetState(5715) p.Match(MDLParserRULES) if p.HasError() { // Recognition error - abort rule @@ -83516,24 +87269,34 @@ func (s *LintTargetContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LintTargetContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLintTarget(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) LintTarget() (localctx ILintTargetContext) { localctx = NewLintTargetContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 640, MDLParserRULE_lintTarget) - p.SetState(5667) + p.SetState(5724) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 659, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 669, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(5661) + p.SetState(5718) p.QualifiedName() } { - p.SetState(5662) + p.SetState(5719) p.Match(MDLParserDOT) if p.HasError() { // Recognition error - abort rule @@ -83541,7 +87304,7 @@ func (p *MDLParser) LintTarget() (localctx ILintTargetContext) { } } { - p.SetState(5663) + p.SetState(5720) p.Match(MDLParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -83552,14 +87315,14 @@ func (p *MDLParser) LintTarget() (localctx ILintTargetContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(5665) + p.SetState(5722) p.QualifiedName() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(5666) + p.SetState(5723) p.Match(MDLParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -83664,6 +87427,16 @@ func (s *LintFormatContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LintFormatContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLintFormat(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) LintFormat() (localctx ILintFormatContext) { localctx = NewLintFormatContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 642, MDLParserRULE_lintFormat) @@ -83671,7 +87444,7 @@ func (p *MDLParser) LintFormat() (localctx ILintFormatContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5669) + p.SetState(5726) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserJSON || _la == MDLParserTEXT || _la == MDLParserSARIF) { @@ -83787,20 +87560,30 @@ func (s *UseSessionStatementContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *UseSessionStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitUseSessionStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) UseSessionStatement() (localctx IUseSessionStatementContext) { localctx = NewUseSessionStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 644, MDLParserRULE_useSessionStatement) - p.SetState(5675) + p.SetState(5732) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 660, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 670, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(5671) + p.SetState(5728) p.Match(MDLParserUSE) if p.HasError() { // Recognition error - abort rule @@ -83808,14 +87591,14 @@ func (p *MDLParser) UseSessionStatement() (localctx IUseSessionStatementContext) } } { - p.SetState(5672) + p.SetState(5729) p.SessionIdList() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(5673) + p.SetState(5730) p.Match(MDLParserUSE) if p.HasError() { // Recognition error - abort rule @@ -83823,7 +87606,7 @@ func (p *MDLParser) UseSessionStatement() (localctx IUseSessionStatementContext) } } { - p.SetState(5674) + p.SetState(5731) p.Match(MDLParserALL) if p.HasError() { // Recognition error - abort rule @@ -83966,6 +87749,16 @@ func (s *SessionIdListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SessionIdListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSessionIdList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SessionIdList() (localctx ISessionIdListContext) { localctx = NewSessionIdListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 646, MDLParserRULE_sessionIdList) @@ -83973,10 +87766,10 @@ func (p *MDLParser) SessionIdList() (localctx ISessionIdListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5677) + p.SetState(5734) p.SessionId() } - p.SetState(5682) + p.SetState(5739) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -83985,7 +87778,7 @@ func (p *MDLParser) SessionIdList() (localctx ISessionIdListContext) { for _la == MDLParserCOMMA { { - p.SetState(5678) + p.SetState(5735) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -83993,11 +87786,11 @@ func (p *MDLParser) SessionIdList() (localctx ISessionIdListContext) { } } { - p.SetState(5679) + p.SetState(5736) p.SessionId() } - p.SetState(5684) + p.SetState(5741) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -84093,6 +87886,16 @@ func (s *SessionIdContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SessionIdContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSessionId(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SessionId() (localctx ISessionIdContext) { localctx = NewSessionIdContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 648, MDLParserRULE_sessionId) @@ -84100,7 +87903,7 @@ func (p *MDLParser) SessionId() (localctx ISessionIdContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5685) + p.SetState(5742) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserIDENTIFIER || _la == MDLParserHYPHENATED_ID) { @@ -84199,12 +88002,22 @@ func (s *IntrospectApiStatementContext) ExitRule(listener antlr.ParseTreeListene } } +func (s *IntrospectApiStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitIntrospectApiStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) IntrospectApiStatement() (localctx IIntrospectApiStatementContext) { localctx = NewIntrospectApiStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 650, MDLParserRULE_introspectApiStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(5687) + p.SetState(5744) p.Match(MDLParserINTROSPECT) if p.HasError() { // Recognition error - abort rule @@ -84212,7 +88025,7 @@ func (p *MDLParser) IntrospectApiStatement() (localctx IIntrospectApiStatementCo } } { - p.SetState(5688) + p.SetState(5745) p.Match(MDLParserAPI) if p.HasError() { // Recognition error - abort rule @@ -84308,12 +88121,22 @@ func (s *DebugStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DebugStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDebugStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DebugStatement() (localctx IDebugStatementContext) { localctx = NewDebugStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 652, MDLParserRULE_debugStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(5690) + p.SetState(5747) p.Match(MDLParserDEBUG) if p.HasError() { // Recognition error - abort rule @@ -84321,7 +88144,7 @@ func (p *MDLParser) DebugStatement() (localctx IDebugStatementContext) { } } { - p.SetState(5691) + p.SetState(5748) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -84450,6 +88273,16 @@ func (s *SqlConnectContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SqlConnectContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSqlConnect(s) + + default: + return t.VisitChildren(s) + } +} + type SqlShowTablesContext struct { SqlStatementContext } @@ -84496,6 +88329,16 @@ func (s *SqlShowTablesContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SqlShowTablesContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSqlShowTables(s) + + default: + return t.VisitChildren(s) + } +} + type SqlDescribeTableContext struct { SqlStatementContext } @@ -84542,6 +88385,16 @@ func (s *SqlDescribeTableContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SqlDescribeTableContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSqlDescribeTable(s) + + default: + return t.VisitChildren(s) + } +} + type SqlQueryContext struct { SqlStatementContext } @@ -84596,6 +88449,16 @@ func (s *SqlQueryContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SqlQueryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSqlQuery(s) + + default: + return t.VisitChildren(s) + } +} + type SqlConnectionsContext struct { SqlStatementContext } @@ -84634,6 +88497,16 @@ func (s *SqlConnectionsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SqlConnectionsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSqlConnections(s) + + default: + return t.VisitChildren(s) + } +} + type SqlDisconnectContext struct { SqlStatementContext } @@ -84676,6 +88549,16 @@ func (s *SqlDisconnectContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SqlDisconnectContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSqlDisconnect(s) + + default: + return t.VisitChildren(s) + } +} + type SqlGenerateConnectorContext struct { SqlStatementContext } @@ -84803,23 +88686,33 @@ func (s *SqlGenerateConnectorContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *SqlGenerateConnectorContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSqlGenerateConnector(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { localctx = NewSqlStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 654, MDLParserRULE_sqlStatement) var _la int - p.SetState(5752) + p.SetState(5809) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 667, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 677, p.GetParserRuleContext()) { case 1: localctx = NewSqlConnectContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(5693) + p.SetState(5750) p.Match(MDLParserSQL) if p.HasError() { // Recognition error - abort rule @@ -84827,7 +88720,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5694) + p.SetState(5751) p.Match(MDLParserCONNECT) if p.HasError() { // Recognition error - abort rule @@ -84835,7 +88728,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5695) + p.SetState(5752) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -84843,7 +88736,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5696) + p.SetState(5753) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -84851,7 +88744,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5697) + p.SetState(5754) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -84859,7 +88752,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5698) + p.SetState(5755) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -84871,7 +88764,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { localctx = NewSqlDisconnectContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(5699) + p.SetState(5756) p.Match(MDLParserSQL) if p.HasError() { // Recognition error - abort rule @@ -84879,7 +88772,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5700) + p.SetState(5757) p.Match(MDLParserDISCONNECT) if p.HasError() { // Recognition error - abort rule @@ -84887,7 +88780,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5701) + p.SetState(5758) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -84899,7 +88792,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { localctx = NewSqlConnectionsContext(p, localctx) p.EnterOuterAlt(localctx, 3) { - p.SetState(5702) + p.SetState(5759) p.Match(MDLParserSQL) if p.HasError() { // Recognition error - abort rule @@ -84907,7 +88800,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5703) + p.SetState(5760) p.Match(MDLParserCONNECTIONS) if p.HasError() { // Recognition error - abort rule @@ -84919,7 +88812,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { localctx = NewSqlShowTablesContext(p, localctx) p.EnterOuterAlt(localctx, 4) { - p.SetState(5704) + p.SetState(5761) p.Match(MDLParserSQL) if p.HasError() { // Recognition error - abort rule @@ -84927,7 +88820,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5705) + p.SetState(5762) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -84935,7 +88828,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5706) + p.SetState(5763) p.Match(MDLParserSHOW) if p.HasError() { // Recognition error - abort rule @@ -84943,7 +88836,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5707) + p.SetState(5764) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -84955,7 +88848,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { localctx = NewSqlDescribeTableContext(p, localctx) p.EnterOuterAlt(localctx, 5) { - p.SetState(5708) + p.SetState(5765) p.Match(MDLParserSQL) if p.HasError() { // Recognition error - abort rule @@ -84963,7 +88856,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5709) + p.SetState(5766) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -84971,7 +88864,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5710) + p.SetState(5767) p.Match(MDLParserDESCRIBE) if p.HasError() { // Recognition error - abort rule @@ -84979,7 +88872,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5711) + p.SetState(5768) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -84991,7 +88884,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { localctx = NewSqlGenerateConnectorContext(p, localctx) p.EnterOuterAlt(localctx, 6) { - p.SetState(5712) + p.SetState(5769) p.Match(MDLParserSQL) if p.HasError() { // Recognition error - abort rule @@ -84999,7 +88892,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5713) + p.SetState(5770) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -85007,7 +88900,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5714) + p.SetState(5771) p.Match(MDLParserGENERATE) if p.HasError() { // Recognition error - abort rule @@ -85015,7 +88908,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5715) + p.SetState(5772) p.Match(MDLParserCONNECTOR) if p.HasError() { // Recognition error - abort rule @@ -85023,7 +88916,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5716) + p.SetState(5773) p.Match(MDLParserINTO) if p.HasError() { // Recognition error - abort rule @@ -85031,10 +88924,10 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5717) + p.SetState(5774) p.IdentifierOrKeyword() } - p.SetState(5730) + p.SetState(5787) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85043,7 +88936,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { if _la == MDLParserTABLES { { - p.SetState(5718) + p.SetState(5775) p.Match(MDLParserTABLES) if p.HasError() { // Recognition error - abort rule @@ -85051,7 +88944,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5719) + p.SetState(5776) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -85059,10 +88952,10 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5720) + p.SetState(5777) p.IdentifierOrKeyword() } - p.SetState(5725) + p.SetState(5782) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85071,7 +88964,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { for _la == MDLParserCOMMA { { - p.SetState(5721) + p.SetState(5778) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -85079,11 +88972,11 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5722) + p.SetState(5779) p.IdentifierOrKeyword() } - p.SetState(5727) + p.SetState(5784) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85091,7 +88984,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(5728) + p.SetState(5785) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -85100,7 +88993,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } - p.SetState(5744) + p.SetState(5801) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85109,7 +89002,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { if _la == MDLParserVIEWS { { - p.SetState(5732) + p.SetState(5789) p.Match(MDLParserVIEWS) if p.HasError() { // Recognition error - abort rule @@ -85117,7 +89010,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5733) + p.SetState(5790) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -85125,10 +89018,10 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5734) + p.SetState(5791) p.IdentifierOrKeyword() } - p.SetState(5739) + p.SetState(5796) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85137,7 +89030,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { for _la == MDLParserCOMMA { { - p.SetState(5735) + p.SetState(5792) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -85145,11 +89038,11 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5736) + p.SetState(5793) p.IdentifierOrKeyword() } - p.SetState(5741) + p.SetState(5798) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85157,7 +89050,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(5742) + p.SetState(5799) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -85166,7 +89059,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } - p.SetState(5747) + p.SetState(5804) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85175,7 +89068,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { if _la == MDLParserEXEC { { - p.SetState(5746) + p.SetState(5803) p.Match(MDLParserEXEC) if p.HasError() { // Recognition error - abort rule @@ -85189,7 +89082,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { localctx = NewSqlQueryContext(p, localctx) p.EnterOuterAlt(localctx, 7) { - p.SetState(5749) + p.SetState(5806) p.Match(MDLParserSQL) if p.HasError() { // Recognition error - abort rule @@ -85197,7 +89090,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5750) + p.SetState(5807) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -85205,7 +89098,7 @@ func (p *MDLParser) SqlStatement() (localctx ISqlStatementContext) { } } { - p.SetState(5751) + p.SetState(5808) p.SqlPassthrough() } @@ -85321,6 +89214,16 @@ func (s *SqlPassthroughContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *SqlPassthroughContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitSqlPassthrough(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) SqlPassthrough() (localctx ISqlPassthroughContext) { localctx = NewSqlPassthroughContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 656, MDLParserRULE_sqlPassthrough) @@ -85329,7 +89232,7 @@ func (p *MDLParser) SqlPassthrough() (localctx ISqlPassthroughContext) { var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(5755) + p.SetState(5812) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85339,7 +89242,7 @@ func (p *MDLParser) SqlPassthrough() (localctx ISqlPassthroughContext) { switch _alt { case 1: { - p.SetState(5754) + p.SetState(5811) _la = p.GetTokenStream().LA(1) if _la <= 0 || _la == MDLParserEOF || _la == MDLParserSLASH || _la == MDLParserSEMICOLON { @@ -85355,9 +89258,9 @@ func (p *MDLParser) SqlPassthrough() (localctx ISqlPassthroughContext) { goto errorExit } - p.SetState(5757) + p.SetState(5814) p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 668, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 678, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -85646,6 +89549,16 @@ func (s *ImportFromQueryContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ImportFromQueryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitImportFromQuery(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { localctx = NewImportStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 658, MDLParserRULE_importStatement) @@ -85654,7 +89567,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { localctx = NewImportFromQueryContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(5759) + p.SetState(5816) p.Match(MDLParserIMPORT) if p.HasError() { // Recognition error - abort rule @@ -85662,7 +89575,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5760) + p.SetState(5817) p.Match(MDLParserFROM) if p.HasError() { // Recognition error - abort rule @@ -85670,11 +89583,11 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5761) + p.SetState(5818) p.IdentifierOrKeyword() } { - p.SetState(5762) + p.SetState(5819) p.Match(MDLParserQUERY) if p.HasError() { // Recognition error - abort rule @@ -85682,7 +89595,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5763) + p.SetState(5820) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserSTRING_LITERAL || _la == MDLParserDOLLAR_STRING) { @@ -85693,7 +89606,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5764) + p.SetState(5821) p.Match(MDLParserINTO) if p.HasError() { // Recognition error - abort rule @@ -85701,11 +89614,11 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5765) + p.SetState(5822) p.QualifiedName() } { - p.SetState(5766) + p.SetState(5823) p.Match(MDLParserMAP) if p.HasError() { // Recognition error - abort rule @@ -85713,7 +89626,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5767) + p.SetState(5824) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -85721,10 +89634,10 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5768) + p.SetState(5825) p.ImportMapping() } - p.SetState(5773) + p.SetState(5830) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85733,7 +89646,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { for _la == MDLParserCOMMA { { - p.SetState(5769) + p.SetState(5826) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -85741,11 +89654,11 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5770) + p.SetState(5827) p.ImportMapping() } - p.SetState(5775) + p.SetState(5832) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85753,14 +89666,14 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(5776) + p.SetState(5833) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5789) + p.SetState(5846) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85769,7 +89682,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { if _la == MDLParserLINK { { - p.SetState(5777) + p.SetState(5834) p.Match(MDLParserLINK) if p.HasError() { // Recognition error - abort rule @@ -85777,7 +89690,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5778) + p.SetState(5835) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -85785,10 +89698,10 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5779) + p.SetState(5836) p.LinkMapping() } - p.SetState(5784) + p.SetState(5841) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85797,7 +89710,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { for _la == MDLParserCOMMA { { - p.SetState(5780) + p.SetState(5837) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -85805,11 +89718,11 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5781) + p.SetState(5838) p.LinkMapping() } - p.SetState(5786) + p.SetState(5843) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85817,7 +89730,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { _la = p.GetTokenStream().LA(1) } { - p.SetState(5787) + p.SetState(5844) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -85826,7 +89739,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } - p.SetState(5793) + p.SetState(5850) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85835,7 +89748,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { if _la == MDLParserBATCH { { - p.SetState(5791) + p.SetState(5848) p.Match(MDLParserBATCH) if p.HasError() { // Recognition error - abort rule @@ -85843,7 +89756,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5792) + p.SetState(5849) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -85852,7 +89765,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } - p.SetState(5797) + p.SetState(5854) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -85861,7 +89774,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { if _la == MDLParserLIMIT { { - p.SetState(5795) + p.SetState(5852) p.Match(MDLParserLIMIT) if p.HasError() { // Recognition error - abort rule @@ -85869,7 +89782,7 @@ func (p *MDLParser) ImportStatement() (localctx IImportStatementContext) { } } { - p.SetState(5796) + p.SetState(5853) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -86005,16 +89918,26 @@ func (s *ImportMappingContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ImportMappingContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitImportMapping(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ImportMapping() (localctx IImportMappingContext) { localctx = NewImportMappingContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 660, MDLParserRULE_importMapping) p.EnterOuterAlt(localctx, 1) { - p.SetState(5799) + p.SetState(5856) p.IdentifierOrKeyword() } { - p.SetState(5800) + p.SetState(5857) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -86022,7 +89945,7 @@ func (p *MDLParser) ImportMapping() (localctx IImportMappingContext) { } } { - p.SetState(5801) + p.SetState(5858) p.IdentifierOrKeyword() } @@ -86168,6 +90091,16 @@ func (s *LinkDirectContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LinkDirectContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLinkDirect(s) + + default: + return t.VisitChildren(s) + } +} + type LinkLookupContext struct { LinkMappingContext } @@ -86247,25 +90180,35 @@ func (s *LinkLookupContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LinkLookupContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLinkLookup(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) LinkMapping() (localctx ILinkMappingContext) { localctx = NewLinkMappingContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 662, MDLParserRULE_linkMapping) - p.SetState(5813) + p.SetState(5870) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 674, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 684, p.GetParserRuleContext()) { case 1: localctx = NewLinkLookupContext(p, localctx) p.EnterOuterAlt(localctx, 1) { - p.SetState(5803) + p.SetState(5860) p.IdentifierOrKeyword() } { - p.SetState(5804) + p.SetState(5861) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -86273,11 +90216,11 @@ func (p *MDLParser) LinkMapping() (localctx ILinkMappingContext) { } } { - p.SetState(5805) + p.SetState(5862) p.IdentifierOrKeyword() } { - p.SetState(5806) + p.SetState(5863) p.Match(MDLParserON) if p.HasError() { // Recognition error - abort rule @@ -86285,7 +90228,7 @@ func (p *MDLParser) LinkMapping() (localctx ILinkMappingContext) { } } { - p.SetState(5807) + p.SetState(5864) p.IdentifierOrKeyword() } @@ -86293,11 +90236,11 @@ func (p *MDLParser) LinkMapping() (localctx ILinkMappingContext) { localctx = NewLinkDirectContext(p, localctx) p.EnterOuterAlt(localctx, 2) { - p.SetState(5809) + p.SetState(5866) p.IdentifierOrKeyword() } { - p.SetState(5810) + p.SetState(5867) p.Match(MDLParserTO) if p.HasError() { // Recognition error - abort rule @@ -86305,7 +90248,7 @@ func (p *MDLParser) LinkMapping() (localctx ILinkMappingContext) { } } { - p.SetState(5811) + p.SetState(5868) p.IdentifierOrKeyword() } @@ -86396,12 +90339,22 @@ func (s *HelpStatementContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *HelpStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitHelpStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) HelpStatement() (localctx IHelpStatementContext) { localctx = NewHelpStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 664, MDLParserRULE_helpStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(5815) + p.SetState(5872) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -86546,12 +90499,22 @@ func (s *DefineFragmentStatementContext) ExitRule(listener antlr.ParseTreeListen } } +func (s *DefineFragmentStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDefineFragmentStatement(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DefineFragmentStatement() (localctx IDefineFragmentStatementContext) { localctx = NewDefineFragmentStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 666, MDLParserRULE_defineFragmentStatement) p.EnterOuterAlt(localctx, 1) { - p.SetState(5817) + p.SetState(5874) p.Match(MDLParserDEFINE) if p.HasError() { // Recognition error - abort rule @@ -86559,7 +90522,7 @@ func (p *MDLParser) DefineFragmentStatement() (localctx IDefineFragmentStatement } } { - p.SetState(5818) + p.SetState(5875) p.Match(MDLParserFRAGMENT) if p.HasError() { // Recognition error - abort rule @@ -86567,11 +90530,11 @@ func (p *MDLParser) DefineFragmentStatement() (localctx IDefineFragmentStatement } } { - p.SetState(5819) + p.SetState(5876) p.IdentifierOrKeyword() } { - p.SetState(5820) + p.SetState(5877) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -86579,7 +90542,7 @@ func (p *MDLParser) DefineFragmentStatement() (localctx IDefineFragmentStatement } } { - p.SetState(5821) + p.SetState(5878) p.Match(MDLParserLBRACE) if p.HasError() { // Recognition error - abort rule @@ -86587,11 +90550,11 @@ func (p *MDLParser) DefineFragmentStatement() (localctx IDefineFragmentStatement } } { - p.SetState(5822) + p.SetState(5879) p.PageBodyV3() } { - p.SetState(5823) + p.SetState(5880) p.Match(MDLParserRBRACE) if p.HasError() { // Recognition error - abort rule @@ -86694,12 +90657,22 @@ func (s *ExpressionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) Expression() (localctx IExpressionContext) { localctx = NewExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 668, MDLParserRULE_expression) p.EnterOuterAlt(localctx, 1) { - p.SetState(5825) + p.SetState(5882) p.OrExpression() } @@ -86834,6 +90807,16 @@ func (s *OrExpressionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *OrExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitOrExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) OrExpression() (localctx IOrExpressionContext) { localctx = NewOrExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 670, MDLParserRULE_orExpression) @@ -86841,22 +90824,22 @@ func (p *MDLParser) OrExpression() (localctx IOrExpressionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5827) + p.SetState(5884) p.AndExpression() } - p.SetState(5832) + p.SetState(5889) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 675, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 685, p.GetParserRuleContext()) if p.HasError() { goto errorExit } for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(5828) + p.SetState(5885) p.Match(MDLParserOR) if p.HasError() { // Recognition error - abort rule @@ -86864,17 +90847,17 @@ func (p *MDLParser) OrExpression() (localctx IOrExpressionContext) { } } { - p.SetState(5829) + p.SetState(5886) p.AndExpression() } } - p.SetState(5834) + p.SetState(5891) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 675, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 685, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -87011,6 +90994,16 @@ func (s *AndExpressionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AndExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAndExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AndExpression() (localctx IAndExpressionContext) { localctx = NewAndExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 672, MDLParserRULE_andExpression) @@ -87018,22 +91011,22 @@ func (p *MDLParser) AndExpression() (localctx IAndExpressionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5835) + p.SetState(5892) p.NotExpression() } - p.SetState(5840) + p.SetState(5897) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 676, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 686, p.GetParserRuleContext()) if p.HasError() { goto errorExit } for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(5836) + p.SetState(5893) p.Match(MDLParserAND) if p.HasError() { // Recognition error - abort rule @@ -87041,17 +91034,17 @@ func (p *MDLParser) AndExpression() (localctx IAndExpressionContext) { } } { - p.SetState(5837) + p.SetState(5894) p.NotExpression() } } - p.SetState(5842) + p.SetState(5899) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 676, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 686, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -87157,16 +91150,26 @@ func (s *NotExpressionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *NotExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitNotExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) NotExpression() (localctx INotExpressionContext) { localctx = NewNotExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 674, MDLParserRULE_notExpression) p.EnterOuterAlt(localctx, 1) - p.SetState(5844) + p.SetState(5901) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 677, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 687, p.GetParserRuleContext()) == 1 { { - p.SetState(5843) + p.SetState(5900) p.Match(MDLParserNOT) if p.HasError() { // Recognition error - abort rule @@ -87178,7 +91181,7 @@ func (p *MDLParser) NotExpression() (localctx INotExpressionContext) { goto errorExit } { - p.SetState(5846) + p.SetState(5903) p.ComparisonExpression() } @@ -87404,6 +91407,16 @@ func (s *ComparisonExpressionContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *ComparisonExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitComparisonExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContext) { localctx = NewComparisonExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 676, MDLParserRULE_comparisonExpression) @@ -87411,27 +91424,27 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex p.EnterOuterAlt(localctx, 1) { - p.SetState(5848) + p.SetState(5905) p.AdditiveExpression() } - p.SetState(5877) + p.SetState(5934) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 681, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 691, p.GetParserRuleContext()) == 1 { { - p.SetState(5849) + p.SetState(5906) p.ComparisonOperator() } { - p.SetState(5850) + p.SetState(5907) p.AdditiveExpression() } } else if p.HasError() { // JIM goto errorExit - } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 681, p.GetParserRuleContext()) == 2 { + } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 691, p.GetParserRuleContext()) == 2 { { - p.SetState(5852) + p.SetState(5909) p.Match(MDLParserIS_NULL) if p.HasError() { // Recognition error - abort rule @@ -87441,9 +91454,9 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex } else if p.HasError() { // JIM goto errorExit - } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 681, p.GetParserRuleContext()) == 3 { + } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 691, p.GetParserRuleContext()) == 3 { { - p.SetState(5853) + p.SetState(5910) p.Match(MDLParserIS_NOT_NULL) if p.HasError() { // Recognition error - abort rule @@ -87453,9 +91466,9 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex } else if p.HasError() { // JIM goto errorExit - } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 681, p.GetParserRuleContext()) == 4 { + } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 691, p.GetParserRuleContext()) == 4 { { - p.SetState(5854) + p.SetState(5911) p.Match(MDLParserIN) if p.HasError() { // Recognition error - abort rule @@ -87463,29 +91476,29 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex } } { - p.SetState(5855) + p.SetState(5912) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5858) + p.SetState(5915) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 678, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 688, p.GetParserRuleContext()) { case 1: { - p.SetState(5856) + p.SetState(5913) p.OqlQuery() } case 2: { - p.SetState(5857) + p.SetState(5914) p.ExpressionList() } @@ -87493,7 +91506,7 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex goto errorExit } { - p.SetState(5860) + p.SetState(5917) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -87503,8 +91516,8 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex } else if p.HasError() { // JIM goto errorExit - } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 681, p.GetParserRuleContext()) == 5 { - p.SetState(5863) + } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 691, p.GetParserRuleContext()) == 5 { + p.SetState(5920) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -87513,7 +91526,7 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex if _la == MDLParserNOT { { - p.SetState(5862) + p.SetState(5919) p.Match(MDLParserNOT) if p.HasError() { // Recognition error - abort rule @@ -87523,7 +91536,7 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex } { - p.SetState(5865) + p.SetState(5922) p.Match(MDLParserBETWEEN) if p.HasError() { // Recognition error - abort rule @@ -87531,11 +91544,11 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex } } { - p.SetState(5866) + p.SetState(5923) p.AdditiveExpression() } { - p.SetState(5867) + p.SetState(5924) p.Match(MDLParserAND) if p.HasError() { // Recognition error - abort rule @@ -87543,14 +91556,14 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex } } { - p.SetState(5868) + p.SetState(5925) p.AdditiveExpression() } } else if p.HasError() { // JIM goto errorExit - } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 681, p.GetParserRuleContext()) == 6 { - p.SetState(5871) + } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 691, p.GetParserRuleContext()) == 6 { + p.SetState(5928) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -87559,7 +91572,7 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex if _la == MDLParserNOT { { - p.SetState(5870) + p.SetState(5927) p.Match(MDLParserNOT) if p.HasError() { // Recognition error - abort rule @@ -87569,7 +91582,7 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex } { - p.SetState(5873) + p.SetState(5930) p.Match(MDLParserLIKE) if p.HasError() { // Recognition error - abort rule @@ -87577,15 +91590,15 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex } } { - p.SetState(5874) + p.SetState(5931) p.AdditiveExpression() } } else if p.HasError() { // JIM goto errorExit - } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 681, p.GetParserRuleContext()) == 7 { + } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 691, p.GetParserRuleContext()) == 7 { { - p.SetState(5875) + p.SetState(5932) p.Match(MDLParserMATCH) if p.HasError() { // Recognition error - abort rule @@ -87593,7 +91606,7 @@ func (p *MDLParser) ComparisonExpression() (localctx IComparisonExpressionContex } } { - p.SetState(5876) + p.SetState(5933) p.AdditiveExpression() } @@ -87709,6 +91722,16 @@ func (s *ComparisonOperatorContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ComparisonOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitComparisonOperator(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ComparisonOperator() (localctx IComparisonOperatorContext) { localctx = NewComparisonOperatorContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 678, MDLParserRULE_comparisonOperator) @@ -87716,10 +91739,10 @@ func (p *MDLParser) ComparisonOperator() (localctx IComparisonOperatorContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5879) + p.SetState(5936) _la = p.GetTokenStream().LA(1) - if !((int64((_la-481)) & ^0x3f) == 0 && ((int64(1)<<(_la-481))&63) != 0) { + if !((int64((_la-484)) & ^0x3f) == 0 && ((int64(1)<<(_la-484))&63) != 0) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -87868,6 +91891,16 @@ func (s *AdditiveExpressionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AdditiveExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAdditiveExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AdditiveExpression() (localctx IAdditiveExpressionContext) { localctx = NewAdditiveExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 680, MDLParserRULE_additiveExpression) @@ -87877,22 +91910,22 @@ func (p *MDLParser) AdditiveExpression() (localctx IAdditiveExpressionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5881) + p.SetState(5938) p.MultiplicativeExpression() } - p.SetState(5886) + p.SetState(5943) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 682, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 692, p.GetParserRuleContext()) if p.HasError() { goto errorExit } for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(5882) + p.SetState(5939) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserPLUS || _la == MDLParserMINUS) { @@ -87903,17 +91936,17 @@ func (p *MDLParser) AdditiveExpression() (localctx IAdditiveExpressionContext) { } } { - p.SetState(5883) + p.SetState(5940) p.MultiplicativeExpression() } } - p.SetState(5888) + p.SetState(5945) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 682, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 692, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -88100,6 +92133,16 @@ func (s *MultiplicativeExpressionContext) ExitRule(listener antlr.ParseTreeListe } } +func (s *MultiplicativeExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitMultiplicativeExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) MultiplicativeExpression() (localctx IMultiplicativeExpressionContext) { localctx = NewMultiplicativeExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 682, MDLParserRULE_multiplicativeExpression) @@ -88109,25 +92152,25 @@ func (p *MDLParser) MultiplicativeExpression() (localctx IMultiplicativeExpressi p.EnterOuterAlt(localctx, 1) { - p.SetState(5889) + p.SetState(5946) p.UnaryExpression() } - p.SetState(5894) + p.SetState(5951) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 683, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 693, p.GetParserRuleContext()) if p.HasError() { goto errorExit } for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(5890) + p.SetState(5947) _la = p.GetTokenStream().LA(1) - if !((int64((_la-489)) & ^0x3f) == 0 && ((int64(1)<<(_la-489))&16415) != 0) { + if !((int64((_la-492)) & ^0x3f) == 0 && ((int64(1)<<(_la-492))&16415) != 0) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -88135,17 +92178,17 @@ func (p *MDLParser) MultiplicativeExpression() (localctx IMultiplicativeExpressi } } { - p.SetState(5891) + p.SetState(5948) p.UnaryExpression() } } - p.SetState(5896) + p.SetState(5953) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 683, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 693, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -88256,13 +92299,23 @@ func (s *UnaryExpressionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *UnaryExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitUnaryExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) UnaryExpression() (localctx IUnaryExpressionContext) { localctx = NewUnaryExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 684, MDLParserRULE_unaryExpression) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(5898) + p.SetState(5955) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -88271,7 +92324,7 @@ func (p *MDLParser) UnaryExpression() (localctx IUnaryExpressionContext) { if _la == MDLParserPLUS || _la == MDLParserMINUS { { - p.SetState(5897) + p.SetState(5954) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserPLUS || _la == MDLParserMINUS) { @@ -88284,7 +92337,7 @@ func (p *MDLParser) UnaryExpression() (localctx IUnaryExpressionContext) { } { - p.SetState(5900) + p.SetState(5957) p.PrimaryExpression() } @@ -88551,20 +92604,30 @@ func (s *PrimaryExpressionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *PrimaryExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitPrimaryExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) PrimaryExpression() (localctx IPrimaryExpressionContext) { localctx = NewPrimaryExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 686, MDLParserRULE_primaryExpression) - p.SetState(5923) + p.SetState(5980) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 685, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 695, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(5902) + p.SetState(5959) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -88572,11 +92635,11 @@ func (p *MDLParser) PrimaryExpression() (localctx IPrimaryExpressionContext) { } } { - p.SetState(5903) + p.SetState(5960) p.Expression() } { - p.SetState(5904) + p.SetState(5961) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -88587,7 +92650,7 @@ func (p *MDLParser) PrimaryExpression() (localctx IPrimaryExpressionContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(5906) + p.SetState(5963) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -88595,11 +92658,11 @@ func (p *MDLParser) PrimaryExpression() (localctx IPrimaryExpressionContext) { } } { - p.SetState(5907) + p.SetState(5964) p.OqlQuery() } { - p.SetState(5908) + p.SetState(5965) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -88610,7 +92673,7 @@ func (p *MDLParser) PrimaryExpression() (localctx IPrimaryExpressionContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(5910) + p.SetState(5967) p.Match(MDLParserEXISTS) if p.HasError() { // Recognition error - abort rule @@ -88618,7 +92681,7 @@ func (p *MDLParser) PrimaryExpression() (localctx IPrimaryExpressionContext) { } } { - p.SetState(5911) + p.SetState(5968) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -88626,11 +92689,11 @@ func (p *MDLParser) PrimaryExpression() (localctx IPrimaryExpressionContext) { } } { - p.SetState(5912) + p.SetState(5969) p.OqlQuery() } { - p.SetState(5913) + p.SetState(5970) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -88641,56 +92704,56 @@ func (p *MDLParser) PrimaryExpression() (localctx IPrimaryExpressionContext) { case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(5915) + p.SetState(5972) p.IfThenElseExpression() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(5916) + p.SetState(5973) p.CaseExpression() } case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(5917) + p.SetState(5974) p.CastExpression() } case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(5918) + p.SetState(5975) p.ListAggregateOperation() } case 8: p.EnterOuterAlt(localctx, 8) { - p.SetState(5919) + p.SetState(5976) p.ListOperation() } case 9: p.EnterOuterAlt(localctx, 9) { - p.SetState(5920) + p.SetState(5977) p.AggregateFunction() } case 10: p.EnterOuterAlt(localctx, 10) { - p.SetState(5921) + p.SetState(5978) p.FunctionCall() } case 11: p.EnterOuterAlt(localctx, 11) { - p.SetState(5922) + p.SetState(5979) p.AtomicExpression() } @@ -88854,6 +92917,16 @@ func (s *CaseExpressionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CaseExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCaseExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CaseExpression() (localctx ICaseExpressionContext) { localctx = NewCaseExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 688, MDLParserRULE_caseExpression) @@ -88861,14 +92934,14 @@ func (p *MDLParser) CaseExpression() (localctx ICaseExpressionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5925) + p.SetState(5982) p.Match(MDLParserCASE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5931) + p.SetState(5988) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -88877,7 +92950,7 @@ func (p *MDLParser) CaseExpression() (localctx ICaseExpressionContext) { for ok := true; ok; ok = _la == MDLParserWHEN { { - p.SetState(5926) + p.SetState(5983) p.Match(MDLParserWHEN) if p.HasError() { // Recognition error - abort rule @@ -88885,11 +92958,11 @@ func (p *MDLParser) CaseExpression() (localctx ICaseExpressionContext) { } } { - p.SetState(5927) + p.SetState(5984) p.Expression() } { - p.SetState(5928) + p.SetState(5985) p.Match(MDLParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -88897,18 +92970,18 @@ func (p *MDLParser) CaseExpression() (localctx ICaseExpressionContext) { } } { - p.SetState(5929) + p.SetState(5986) p.Expression() } - p.SetState(5933) + p.SetState(5990) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) } - p.SetState(5937) + p.SetState(5994) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -88917,7 +92990,7 @@ func (p *MDLParser) CaseExpression() (localctx ICaseExpressionContext) { if _la == MDLParserELSE { { - p.SetState(5935) + p.SetState(5992) p.Match(MDLParserELSE) if p.HasError() { // Recognition error - abort rule @@ -88925,13 +92998,13 @@ func (p *MDLParser) CaseExpression() (localctx ICaseExpressionContext) { } } { - p.SetState(5936) + p.SetState(5993) p.Expression() } } { - p.SetState(5939) + p.SetState(5996) p.Match(MDLParserEND) if p.HasError() { // Recognition error - abort rule @@ -89108,12 +93181,22 @@ func (s *IfThenElseExpressionContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *IfThenElseExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitIfThenElseExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) IfThenElseExpression() (localctx IIfThenElseExpressionContext) { localctx = NewIfThenElseExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 690, MDLParserRULE_ifThenElseExpression) p.EnterOuterAlt(localctx, 1) { - p.SetState(5941) + p.SetState(5998) p.Match(MDLParserIF) if p.HasError() { // Recognition error - abort rule @@ -89121,14 +93204,14 @@ func (p *MDLParser) IfThenElseExpression() (localctx IIfThenElseExpressionContex } } { - p.SetState(5942) + p.SetState(5999) var _x = p.Expression() localctx.(*IfThenElseExpressionContext).condition = _x } { - p.SetState(5943) + p.SetState(6000) p.Match(MDLParserTHEN) if p.HasError() { // Recognition error - abort rule @@ -89136,14 +93219,14 @@ func (p *MDLParser) IfThenElseExpression() (localctx IIfThenElseExpressionContex } } { - p.SetState(5944) + p.SetState(6001) var _x = p.Expression() localctx.(*IfThenElseExpressionContext).thenExpr = _x } { - p.SetState(5945) + p.SetState(6002) p.Match(MDLParserELSE) if p.HasError() { // Recognition error - abort rule @@ -89151,7 +93234,7 @@ func (p *MDLParser) IfThenElseExpression() (localctx IIfThenElseExpressionContex } } { - p.SetState(5946) + p.SetState(6003) var _x = p.Expression() @@ -89290,12 +93373,22 @@ func (s *CastExpressionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CastExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCastExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CastExpression() (localctx ICastExpressionContext) { localctx = NewCastExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 692, MDLParserRULE_castExpression) p.EnterOuterAlt(localctx, 1) { - p.SetState(5948) + p.SetState(6005) p.Match(MDLParserCAST) if p.HasError() { // Recognition error - abort rule @@ -89303,7 +93396,7 @@ func (p *MDLParser) CastExpression() (localctx ICastExpressionContext) { } } { - p.SetState(5949) + p.SetState(6006) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -89311,11 +93404,11 @@ func (p *MDLParser) CastExpression() (localctx ICastExpressionContext) { } } { - p.SetState(5950) + p.SetState(6007) p.Expression() } { - p.SetState(5951) + p.SetState(6008) p.Match(MDLParserAS) if p.HasError() { // Recognition error - abort rule @@ -89323,11 +93416,11 @@ func (p *MDLParser) CastExpression() (localctx ICastExpressionContext) { } } { - p.SetState(5952) + p.SetState(6009) p.CastDataType() } { - p.SetState(5953) + p.SetState(6010) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -89443,6 +93536,16 @@ func (s *CastDataTypeContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CastDataTypeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCastDataType(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CastDataType() (localctx ICastDataTypeContext) { localctx = NewCastDataTypeContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 694, MDLParserRULE_castDataType) @@ -89450,10 +93553,10 @@ func (p *MDLParser) CastDataType() (localctx ICastDataTypeContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5955) + p.SetState(6012) _la = p.GetTokenStream().LA(1) - if !((int64((_la-262)) & ^0x3f) == 0 && ((int64(1)<<(_la-262))&63) != 0) { + if !((int64((_la-265)) & ^0x3f) == 0 && ((int64(1)<<(_la-265))&63) != 0) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -89601,6 +93704,16 @@ func (s *AggregateFunctionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AggregateFunctionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAggregateFunction(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AggregateFunction() (localctx IAggregateFunctionContext) { localctx = NewAggregateFunctionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 696, MDLParserRULE_aggregateFunction) @@ -89608,10 +93721,10 @@ func (p *MDLParser) AggregateFunction() (localctx IAggregateFunctionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5957) + p.SetState(6014) _la = p.GetTokenStream().LA(1) - if !((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&31) != 0) { + if !((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&31) != 0) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -89619,27 +93732,27 @@ func (p *MDLParser) AggregateFunction() (localctx IAggregateFunctionContext) { } } { - p.SetState(5958) + p.SetState(6015) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5964) + p.SetState(6021) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } switch p.GetTokenStream().LA(1) { - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserCASE, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserHEAD, MDLParserTAIL, MDLParserFIND, MDLParserSORT, MDLParserUNION, MDLParserINTERSECT, MDLParserSUBTRACT, MDLParserCONTAINS, MDLParserAVERAGE, MDLParserMINIMUM, MDLParserMAXIMUM, MDLParserLIST, MDLParserEQUALS_OP, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserEMPTY, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserFILTER, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserLENGTH, MDLParserTRIM, MDLParserCAST, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserEXISTS, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserPLUS, MDLParserMINUS, MDLParserMOD, MDLParserDIV, MDLParserLPAREN, MDLParserMENDIX_TOKEN, MDLParserSTRING_LITERAL, MDLParserNUMBER_LITERAL, MDLParserVARIABLE, MDLParserIDENTIFIER, MDLParserHYPHENATED_ID, MDLParserQUOTED_IDENTIFIER: - p.SetState(5960) + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserCASE, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserHEAD, MDLParserTAIL, MDLParserFIND, MDLParserSORT, MDLParserUNION, MDLParserINTERSECT, MDLParserSUBTRACT, MDLParserCONTAINS, MDLParserAVERAGE, MDLParserMINIMUM, MDLParserMAXIMUM, MDLParserLIST, MDLParserEQUALS_OP, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserEMPTY, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserFILTER, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserLENGTH, MDLParserTRIM, MDLParserCAST, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserEXISTS, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserPLUS, MDLParserMINUS, MDLParserMOD, MDLParserDIV, MDLParserLPAREN, MDLParserMENDIX_TOKEN, MDLParserSTRING_LITERAL, MDLParserNUMBER_LITERAL, MDLParserVARIABLE, MDLParserIDENTIFIER, MDLParserHYPHENATED_ID, MDLParserQUOTED_IDENTIFIER: + p.SetState(6017) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 688, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 698, p.GetParserRuleContext()) == 1 { { - p.SetState(5959) + p.SetState(6016) p.Match(MDLParserDISTINCT) if p.HasError() { // Recognition error - abort rule @@ -89651,13 +93764,13 @@ func (p *MDLParser) AggregateFunction() (localctx IAggregateFunctionContext) { goto errorExit } { - p.SetState(5962) + p.SetState(6019) p.Expression() } case MDLParserSTAR: { - p.SetState(5963) + p.SetState(6020) p.Match(MDLParserSTAR) if p.HasError() { // Recognition error - abort rule @@ -89670,7 +93783,7 @@ func (p *MDLParser) AggregateFunction() (localctx IAggregateFunctionContext) { goto errorExit } { - p.SetState(5966) + p.SetState(6023) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -89800,6 +93913,16 @@ func (s *FunctionCallContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *FunctionCallContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitFunctionCall(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) FunctionCall() (localctx IFunctionCallContext) { localctx = NewFunctionCallContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 698, MDLParserRULE_functionCall) @@ -89807,33 +93930,33 @@ func (p *MDLParser) FunctionCall() (localctx IFunctionCallContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5968) + p.SetState(6025) p.FunctionName() } { - p.SetState(5969) + p.SetState(6026) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5971) + p.SetState(6028) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&-19241592737017865) != 0) || ((int64((_la-129)) & ^0x3f) == 0 && ((int64(1)<<(_la-129))&-3673688525704003857) != 0) || ((int64((_la-193)) & ^0x3f) == 0 && ((int64(1)<<(_la-193))&355785462406692879) != 0) || ((int64((_la-262)) & ^0x3f) == 0 && ((int64(1)<<(_la-262))&-494781308354049) != 0) || ((int64((_la-326)) & ^0x3f) == 0 && ((int64(1)<<(_la-326))&-576462951326682881) != 0) || ((int64((_la-390)) & ^0x3f) == 0 && ((int64(1)<<(_la-390))&-99506071046657) != 0) || ((int64((_la-454)) & ^0x3f) == 0 && ((int64(1)<<(_la-454))&-360278323576668161) != 0) { + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&-19241592737017865) != 0) || ((int64((_la-129)) & ^0x3f) == 0 && ((int64(1)<<(_la-129))&-7348625821638328593) != 0) || ((int64((_la-193)) & ^0x3f) == 0 && ((int64(1)<<(_la-193))&2846283745256767519) != 0) || ((int64((_la-265)) & ^0x3f) == 0 && ((int64(1)<<(_la-265))&-494781308354049) != 0) || ((int64((_la-329)) & ^0x3f) == 0 && ((int64(1)<<(_la-329))&-576462951326682881) != 0) || ((int64((_la-393)) & ^0x3f) == 0 && ((int64(1)<<(_la-393))&-99506071046657) != 0) || ((int64((_la-457)) & ^0x3f) == 0 && ((int64(1)<<(_la-457))&-360278323576668161) != 0) { { - p.SetState(5970) + p.SetState(6027) p.ArgumentList() } } { - p.SetState(5973) + p.SetState(6030) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -89994,6 +94117,16 @@ func (s *FunctionNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *FunctionNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitFunctionName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) FunctionName() (localctx IFunctionNameContext) { localctx = NewFunctionNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 700, MDLParserRULE_functionName) @@ -90001,10 +94134,10 @@ func (p *MDLParser) FunctionName() (localctx IFunctionNameContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5975) + p.SetState(6032) _la = p.GetTokenStream().LA(1) - if !(((int64((_la-123)) & ^0x3f) == 0 && ((int64(1)<<(_la-123))&4611686018427519009) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&3145855) != 0) || _la == MDLParserIDENTIFIER || _la == MDLParserHYPHENATED_ID) { + if !(((int64((_la-123)) & ^0x3f) == 0 && ((int64(1)<<(_la-123))&-9223372036854644703) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&3145855) != 0) || _la == MDLParserIDENTIFIER || _la == MDLParserHYPHENATED_ID) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -90143,6 +94276,16 @@ func (s *ArgumentListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ArgumentListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitArgumentList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ArgumentList() (localctx IArgumentListContext) { localctx = NewArgumentListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 702, MDLParserRULE_argumentList) @@ -90150,10 +94293,10 @@ func (p *MDLParser) ArgumentList() (localctx IArgumentListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5977) + p.SetState(6034) p.Expression() } - p.SetState(5982) + p.SetState(6039) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -90162,7 +94305,7 @@ func (p *MDLParser) ArgumentList() (localctx IArgumentListContext) { for _la == MDLParserCOMMA { { - p.SetState(5978) + p.SetState(6035) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -90170,11 +94313,11 @@ func (p *MDLParser) ArgumentList() (localctx IArgumentListContext) { } } { - p.SetState(5979) + p.SetState(6036) p.Expression() } - p.SetState(5984) + p.SetState(6041) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -90362,36 +94505,46 @@ func (s *AtomicExpressionContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AtomicExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAtomicExpression(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AtomicExpression() (localctx IAtomicExpressionContext) { localctx = NewAtomicExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 704, MDLParserRULE_atomicExpression) var _la int - p.SetState(5997) + p.SetState(6054) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 693, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 703, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(5985) + p.SetState(6042) p.Literal() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(5986) + p.SetState(6043) p.Match(MDLParserVARIABLE) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(5991) + p.SetState(6048) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -90400,7 +94553,7 @@ func (p *MDLParser) AtomicExpression() (localctx IAtomicExpressionContext) { for _la == MDLParserDOT { { - p.SetState(5987) + p.SetState(6044) p.Match(MDLParserDOT) if p.HasError() { // Recognition error - abort rule @@ -90408,11 +94561,11 @@ func (p *MDLParser) AtomicExpression() (localctx IAtomicExpressionContext) { } } { - p.SetState(5988) + p.SetState(6045) p.AttributeName() } - p.SetState(5993) + p.SetState(6050) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -90423,14 +94576,14 @@ func (p *MDLParser) AtomicExpression() (localctx IAtomicExpressionContext) { case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(5994) + p.SetState(6051) p.QualifiedName() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(5995) + p.SetState(6052) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -90441,7 +94594,7 @@ func (p *MDLParser) AtomicExpression() (localctx IAtomicExpressionContext) { case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(5996) + p.SetState(6053) p.Match(MDLParserMENDIX_TOKEN) if p.HasError() { // Recognition error - abort rule @@ -90584,6 +94737,16 @@ func (s *ExpressionListContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ExpressionListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitExpressionList(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ExpressionList() (localctx IExpressionListContext) { localctx = NewExpressionListContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 706, MDLParserRULE_expressionList) @@ -90591,10 +94754,10 @@ func (p *MDLParser) ExpressionList() (localctx IExpressionListContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(5999) + p.SetState(6056) p.Expression() } - p.SetState(6004) + p.SetState(6061) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -90603,7 +94766,7 @@ func (p *MDLParser) ExpressionList() (localctx IExpressionListContext) { for _la == MDLParserCOMMA { { - p.SetState(6000) + p.SetState(6057) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -90611,11 +94774,11 @@ func (p *MDLParser) ExpressionList() (localctx IExpressionListContext) { } } { - p.SetState(6001) + p.SetState(6058) p.Expression() } - p.SetState(6006) + p.SetState(6063) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -90754,6 +94917,16 @@ func (s *QualifiedNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *QualifiedNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitQualifiedName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) QualifiedName() (localctx IQualifiedNameContext) { localctx = NewQualifiedNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 708, MDLParserRULE_qualifiedName) @@ -90761,22 +94934,22 @@ func (p *MDLParser) QualifiedName() (localctx IQualifiedNameContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(6007) + p.SetState(6064) p.IdentifierOrKeyword() } - p.SetState(6012) + p.SetState(6069) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 695, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 705, p.GetParserRuleContext()) if p.HasError() { goto errorExit } for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(6008) + p.SetState(6065) p.Match(MDLParserDOT) if p.HasError() { // Recognition error - abort rule @@ -90784,17 +94957,17 @@ func (p *MDLParser) QualifiedName() (localctx IQualifiedNameContext) { } } { - p.SetState(6009) + p.SetState(6066) p.IdentifierOrKeyword() } } - p.SetState(6014) + p.SetState(6071) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 695, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 705, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -90905,10 +95078,20 @@ func (s *IdentifierOrKeywordContext) ExitRule(listener antlr.ParseTreeListener) } } +func (s *IdentifierOrKeywordContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitIdentifierOrKeyword(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) IdentifierOrKeyword() (localctx IIdentifierOrKeywordContext) { localctx = NewIdentifierOrKeywordContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 710, MDLParserRULE_identifierOrKeyword) - p.SetState(6018) + p.SetState(6075) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -90918,7 +95101,7 @@ func (p *MDLParser) IdentifierOrKeyword() (localctx IIdentifierOrKeywordContext) case MDLParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(6015) + p.SetState(6072) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -90929,7 +95112,7 @@ func (p *MDLParser) IdentifierOrKeyword() (localctx IIdentifierOrKeywordContext) case MDLParserQUOTED_IDENTIFIER: p.EnterOuterAlt(localctx, 2) { - p.SetState(6016) + p.SetState(6073) p.Match(MDLParserQUOTED_IDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -90937,10 +95120,10 @@ func (p *MDLParser) IdentifierOrKeyword() (localctx IIdentifierOrKeywordContext) } } - case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV: + case MDLParserGROUP_BY, MDLParserORDER_BY, MDLParserCREATE, MDLParserALTER, MDLParserDROP, MDLParserRENAME, MDLParserMOVE, MDLParserENTITY, MDLParserPERSISTENT, MDLParserVIEW, MDLParserEXTERNAL, MDLParserASSOCIATION, MDLParserENUMERATION, MDLParserMODULE, MDLParserMICROFLOW, MDLParserWORKFLOW, MDLParserPAGE, MDLParserSNIPPET, MDLParserLAYOUT, MDLParserATTRIBUTE, MDLParserCOLUMN, MDLParserCOLUMNS, MDLParserINDEX, MDLParserOWNER, MDLParserSTORE, MDLParserREFERENCE, MDLParserSET, MDLParserPOSITION, MDLParserSTORAGE, MDLParserTABLE, MDLParserCASCADE, MDLParserCONNECT, MDLParserDISCONNECT, MDLParserLOCAL, MDLParserPROJECT, MDLParserSHOW, MDLParserDESCRIBE, MDLParserUSE, MDLParserDEBUG, MDLParserSELECT, MDLParserFROM, MDLParserWHERE, MDLParserHAVING, MDLParserOFFSET, MDLParserLIMIT, MDLParserAS, MDLParserTHEN, MDLParserELSE, MDLParserEND, MDLParserDISTINCT, MDLParserALL, MDLParserJOIN, MDLParserLEFT, MDLParserRIGHT, MDLParserINNER, MDLParserOUTER, MDLParserON, MDLParserBEGIN, MDLParserDECLARE, MDLParserCHANGE, MDLParserRETRIEVE, MDLParserDELETE, MDLParserCOMMIT, MDLParserLOOP, MDLParserWHILE, MDLParserIF, MDLParserELSIF, MDLParserRETURN, MDLParserLOG, MDLParserCALL, MDLParserJAVA, MDLParserACTION, MDLParserACTIONS, MDLParserCLOSE, MDLParserEVENTS, MDLParserSORT, MDLParserLIST, MDLParserINFO, MDLParserWARNING, MDLParserCRITICAL, MDLParserWITH, MDLParserOBJECT, MDLParserOBJECTS, MDLParserPAGES, MDLParserLAYOUTS, MDLParserSNIPPETS, MDLParserNOTEBOOKS, MDLParserSNIPPETCALL, MDLParserLAYOUTGRID, MDLParserDATAGRID, MDLParserDATAVIEW, MDLParserLISTVIEW, MDLParserGALLERY, MDLParserITEM, MDLParserCONTROLBAR, MDLParserSEARCH, MDLParserSEARCHBAR, MDLParserNAVIGATIONLIST, MDLParserACTIONBUTTON, MDLParserLINKBUTTON, MDLParserBUTTON, MDLParserTITLE, MDLParserDYNAMICTEXT, MDLParserDYNAMIC, MDLParserLABEL, MDLParserTEXTBOX, MDLParserTEXTAREA, MDLParserDATEPICKER, MDLParserRADIOBUTTONS, MDLParserCOMBOBOX, MDLParserCHECKBOX, MDLParserIMAGEINPUT, MDLParserWIDGETS, MDLParserCAPTION, MDLParserDATASOURCE, MDLParserSOURCE_KW, MDLParserSELECTION, MDLParserFOOTER, MDLParserHEADER, MDLParserCONTENT, MDLParserCLASS, MDLParserSTYLE, MDLParserBUTTONSTYLE, MDLParserDESIGN, MDLParserPROPERTIES, MDLParserDESIGNPROPERTIES, MDLParserSTYLING, MDLParserCLEAR, MDLParserWIDTH, MDLParserHEIGHT, MDLParserURL, MDLParserFOLDER, MDLParserCONTEXT, MDLParserEDITABLE, MDLParserIMAGE, MDLParserCOLLECTION, MDLParserSTATICIMAGE, MDLParserDYNAMICIMAGE, MDLParserCUSTOMCONTAINER, MDLParserTABCONTAINER, MDLParserTABPAGE, MDLParserGROUPBOX, MDLParserVISIBLE, MDLParserCANCEL, MDLParserPRIMARY, MDLParserSUCCESS, MDLParserDANGER, MDLParserTEMPLATE, MDLParserSTRING_TYPE, MDLParserINTEGER_TYPE, MDLParserLONG_TYPE, MDLParserDECIMAL_TYPE, MDLParserBOOLEAN_TYPE, MDLParserDATETIME_TYPE, MDLParserDATE_TYPE, MDLParserAUTONUMBER_TYPE, MDLParserBINARY_TYPE, MDLParserCOUNT, MDLParserSUM, MDLParserAVG, MDLParserMIN, MDLParserMAX, MDLParserAND, MDLParserOR, MDLParserNOT, MDLParserNULL, MDLParserIN, MDLParserBETWEEN, MDLParserLIKE, MDLParserUNIQUE, MDLParserDEFAULT, MDLParserTRUE, MDLParserFALSE, MDLParserVALIDATION, MDLParserFEEDBACK, MDLParserRULE, MDLParserREQUIRED, MDLParserERROR, MDLParserRANGE, MDLParserREGEX, MDLParserPATTERN, MDLParserEXPRESSION, MDLParserREST, MDLParserSERVICE, MDLParserSERVICES, MDLParserODATA, MDLParserBASE, MDLParserAUTH, MDLParserAUTHENTICATION, MDLParserBASIC, MDLParserNOTHING, MDLParserOAUTH, MDLParserOPERATION, MDLParserMETHOD, MDLParserPATH, MDLParserTIMEOUT, MDLParserBODY, MDLParserRESPONSE, MDLParserREQUEST, MDLParserSEND, MDLParserJSON, MDLParserXML, MDLParserSTATUS, MDLParserFILE_KW, MDLParserVERSION, MDLParserAPI, MDLParserCLIENT, MDLParserCLIENTS, MDLParserPUBLISH, MDLParserPUBLISHED, MDLParserEXPOSE, MDLParserCONTRACT, MDLParserNAMESPACE_KW, MDLParserSESSION, MDLParserGUEST, MDLParserPAGING, MDLParserNOT_SUPPORTED, MDLParserUSERNAME, MDLParserPASSWORD, MDLParserCONNECTION, MDLParserDATABASE, MDLParserQUERY, MDLParserMAP, MDLParserMAPPING, MDLParserIMPORT, MDLParserINTO, MDLParserBATCH, MDLParserLINK, MDLParserEXPORT, MDLParserGENERATE, MDLParserCONNECTOR, MDLParserEXEC, MDLParserTABLES, MDLParserVIEWS, MDLParserPARAMETER, MDLParserPARAMETERS, MDLParserHEADERS, MDLParserNAVIGATION, MDLParserMENU_KW, MDLParserHOMES, MDLParserHOME, MDLParserLOGIN, MDLParserFOUND, MDLParserMODULES, MDLParserENTITIES, MDLParserASSOCIATIONS, MDLParserMICROFLOWS, MDLParserNANOFLOWS, MDLParserWORKFLOWS, MDLParserENUMERATIONS, MDLParserCONSTANTS, MDLParserDEFINE, MDLParserFRAGMENT, MDLParserFRAGMENTS, MDLParserINSERT, MDLParserBEFORE, MDLParserAFTER, MDLParserUPDATE, MDLParserREFRESH, MDLParserCHECK, MDLParserBUILD, MDLParserEXECUTE, MDLParserSCRIPT, MDLParserLINT, MDLParserTEXT, MDLParserMESSAGE, MDLParserMESSAGES, MDLParserCHANNELS, MDLParserCATALOG, MDLParserFORCE, MDLParserCALLERS, MDLParserCALLEES, MDLParserREFERENCES, MDLParserTRANSITIVE, MDLParserIMPACT, MDLParserDEPTH, MDLParserSTRUCTURE, MDLParserTYPE, MDLParserVALUE, MDLParserSINGLE, MDLParserMULTIPLE, MDLParserNONE, MDLParserBOTH, MDLParserTO, MDLParserOF, MDLParserOVER, MDLParserFOR, MDLParserREPLACE, MDLParserMEMBERS, MDLParserFORMAT, MDLParserWITHOUT, MDLParserWIDGETTYPE, MDLParserBUSINESS, MDLParserEVENT, MDLParserSUBSCRIBE, MDLParserSETTINGS, MDLParserCONFIGURATION, MDLParserSECURITY, MDLParserROLE, MDLParserROLES, MDLParserGRANT, MDLParserREVOKE, MDLParserPRODUCTION, MDLParserPROTOTYPE, MDLParserMANAGE, MDLParserDEMO, MDLParserMATRIX, MDLParserAPPLY, MDLParserACCESS, MDLParserLEVEL, MDLParserUSER, MDLParserTASK, MDLParserDECISION, MDLParserSPLIT, MDLParserOUTCOMES, MDLParserTARGETING, MDLParserNOTIFICATION, MDLParserTIMER, MDLParserJUMP, MDLParserDUE, MDLParserOVERVIEW, MDLParserDATE, MDLParserPARALLEL, MDLParserWAIT, MDLParserBY, MDLParserREAD, MDLParserWRITE, MDLParserDESCRIPTION, MDLParserOFF, MDLParserUSERS, MDLParserMOD, MDLParserDIV: p.EnterOuterAlt(localctx, 3) { - p.SetState(6017) + p.SetState(6074) p.Keyword() } @@ -91064,10 +95247,20 @@ func (s *LiteralContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *LiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitLiteral(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) Literal() (localctx ILiteralContext) { localctx = NewLiteralContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 712, MDLParserRULE_literal) - p.SetState(6025) + p.SetState(6082) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -91077,7 +95270,7 @@ func (p *MDLParser) Literal() (localctx ILiteralContext) { case MDLParserSTRING_LITERAL: p.EnterOuterAlt(localctx, 1) { - p.SetState(6020) + p.SetState(6077) p.Match(MDLParserSTRING_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -91088,7 +95281,7 @@ func (p *MDLParser) Literal() (localctx ILiteralContext) { case MDLParserNUMBER_LITERAL: p.EnterOuterAlt(localctx, 2) { - p.SetState(6021) + p.SetState(6078) p.Match(MDLParserNUMBER_LITERAL) if p.HasError() { // Recognition error - abort rule @@ -91099,14 +95292,14 @@ func (p *MDLParser) Literal() (localctx ILiteralContext) { case MDLParserTRUE, MDLParserFALSE: p.EnterOuterAlt(localctx, 3) { - p.SetState(6022) + p.SetState(6079) p.BooleanLiteral() } case MDLParserNULL: p.EnterOuterAlt(localctx, 4) { - p.SetState(6023) + p.SetState(6080) p.Match(MDLParserNULL) if p.HasError() { // Recognition error - abort rule @@ -91117,7 +95310,7 @@ func (p *MDLParser) Literal() (localctx ILiteralContext) { case MDLParserEMPTY: p.EnterOuterAlt(localctx, 5) { - p.SetState(6024) + p.SetState(6081) p.Match(MDLParserEMPTY) if p.HasError() { // Recognition error - abort rule @@ -91271,6 +95464,16 @@ func (s *ArrayLiteralContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *ArrayLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitArrayLiteral(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) ArrayLiteral() (localctx IArrayLiteralContext) { localctx = NewArrayLiteralContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 714, MDLParserRULE_arrayLiteral) @@ -91278,26 +95481,26 @@ func (p *MDLParser) ArrayLiteral() (localctx IArrayLiteralContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(6027) + p.SetState(6084) p.Match(MDLParserLBRACKET) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(6036) + p.SetState(6093) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } _la = p.GetTokenStream().LA(1) - if _la == MDLParserEMPTY || ((int64((_la-288)) & ^0x3f) == 0 && ((int64(1)<<(_la-288))&769) != 0) || _la == MDLParserSTRING_LITERAL || _la == MDLParserNUMBER_LITERAL { + if _la == MDLParserEMPTY || ((int64((_la-291)) & ^0x3f) == 0 && ((int64(1)<<(_la-291))&769) != 0) || _la == MDLParserSTRING_LITERAL || _la == MDLParserNUMBER_LITERAL { { - p.SetState(6028) + p.SetState(6085) p.Literal() } - p.SetState(6033) + p.SetState(6090) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -91306,7 +95509,7 @@ func (p *MDLParser) ArrayLiteral() (localctx IArrayLiteralContext) { for _la == MDLParserCOMMA { { - p.SetState(6029) + p.SetState(6086) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -91314,11 +95517,11 @@ func (p *MDLParser) ArrayLiteral() (localctx IArrayLiteralContext) { } } { - p.SetState(6030) + p.SetState(6087) p.Literal() } - p.SetState(6035) + p.SetState(6092) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -91328,7 +95531,7 @@ func (p *MDLParser) ArrayLiteral() (localctx IArrayLiteralContext) { } { - p.SetState(6038) + p.SetState(6095) p.Match(MDLParserRBRACKET) if p.HasError() { // Recognition error - abort rule @@ -91424,6 +95627,16 @@ func (s *BooleanLiteralContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *BooleanLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitBooleanLiteral(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) BooleanLiteral() (localctx IBooleanLiteralContext) { localctx = NewBooleanLiteralContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 716, MDLParserRULE_booleanLiteral) @@ -91431,7 +95644,7 @@ func (p *MDLParser) BooleanLiteral() (localctx IBooleanLiteralContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(6040) + p.SetState(6097) _la = p.GetTokenStream().LA(1) if !(_la == MDLParserTRUE || _la == MDLParserFALSE) { @@ -91525,12 +95738,22 @@ func (s *DocCommentContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *DocCommentContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitDocComment(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) DocComment() (localctx IDocCommentContext) { localctx = NewDocCommentContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 718, MDLParserRULE_docComment) p.EnterOuterAlt(localctx, 1) { - p.SetState(6042) + p.SetState(6099) p.Match(MDLParserDOC_COMMENT) if p.HasError() { // Recognition error - abort rule @@ -91682,12 +95905,22 @@ func (s *AnnotationContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AnnotationContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAnnotation(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) Annotation() (localctx IAnnotationContext) { localctx = NewAnnotationContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 720, MDLParserRULE_annotation) p.EnterOuterAlt(localctx, 1) { - p.SetState(6044) + p.SetState(6101) p.Match(MDLParserAT) if p.HasError() { // Recognition error - abort rule @@ -91695,15 +95928,15 @@ func (p *MDLParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(6045) + p.SetState(6102) p.AnnotationName() } - p.SetState(6051) + p.SetState(6108) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 700, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 710, p.GetParserRuleContext()) == 1 { { - p.SetState(6046) + p.SetState(6103) p.Match(MDLParserLPAREN) if p.HasError() { // Recognition error - abort rule @@ -91711,11 +95944,11 @@ func (p *MDLParser) Annotation() (localctx IAnnotationContext) { } } { - p.SetState(6047) + p.SetState(6104) p.AnnotationParams() } { - p.SetState(6048) + p.SetState(6105) p.Match(MDLParserRPAREN) if p.HasError() { // Recognition error - abort rule @@ -91725,9 +95958,9 @@ func (p *MDLParser) Annotation() (localctx IAnnotationContext) { } else if p.HasError() { // JIM goto errorExit - } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 700, p.GetParserRuleContext()) == 2 { + } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 710, p.GetParserRuleContext()) == 2 { { - p.SetState(6050) + p.SetState(6107) p.AnnotationValue() } @@ -91853,6 +96086,16 @@ func (s *AnnotationNameContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AnnotationNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAnnotationName(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AnnotationName() (localctx IAnnotationNameContext) { localctx = NewAnnotationNameContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 722, MDLParserRULE_annotationName) @@ -91860,10 +96103,10 @@ func (p *MDLParser) AnnotationName() (localctx IAnnotationNameContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(6053) + p.SetState(6110) _la = p.GetTokenStream().LA(1) - if !(_la == MDLParserPOSITION || ((int64((_la-188)) & ^0x3f) == 0 && ((int64(1)<<(_la-188))&2147483651) != 0) || _la == MDLParserREQUIRED || _la == MDLParserCOMMENT || _la == MDLParserANNOTATION || _la == MDLParserIDENTIFIER) { + if !(_la == MDLParserPOSITION || ((int64((_la-189)) & ^0x3f) == 0 && ((int64(1)<<(_la-189))&2147483651) != 0) || _la == MDLParserREQUIRED || _la == MDLParserCOMMENT || _la == MDLParserANNOTATION || _la == MDLParserIDENTIFIER) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -92002,6 +96245,16 @@ func (s *AnnotationParamsContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AnnotationParamsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAnnotationParams(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AnnotationParams() (localctx IAnnotationParamsContext) { localctx = NewAnnotationParamsContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 724, MDLParserRULE_annotationParams) @@ -92009,10 +96262,10 @@ func (p *MDLParser) AnnotationParams() (localctx IAnnotationParamsContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(6055) + p.SetState(6112) p.AnnotationParam() } - p.SetState(6060) + p.SetState(6117) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -92021,7 +96274,7 @@ func (p *MDLParser) AnnotationParams() (localctx IAnnotationParamsContext) { for _la == MDLParserCOMMA { { - p.SetState(6056) + p.SetState(6113) p.Match(MDLParserCOMMA) if p.HasError() { // Recognition error - abort rule @@ -92029,11 +96282,11 @@ func (p *MDLParser) AnnotationParams() (localctx IAnnotationParamsContext) { } } { - p.SetState(6057) + p.SetState(6114) p.AnnotationParam() } - p.SetState(6062) + p.SetState(6119) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -92146,20 +96399,30 @@ func (s *AnnotationParamContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AnnotationParamContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAnnotationParam(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AnnotationParam() (localctx IAnnotationParamContext) { localctx = NewAnnotationParamContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 726, MDLParserRULE_annotationParam) - p.SetState(6067) + p.SetState(6124) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 702, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 712, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(6063) + p.SetState(6120) p.Match(MDLParserIDENTIFIER) if p.HasError() { // Recognition error - abort rule @@ -92167,7 +96430,7 @@ func (p *MDLParser) AnnotationParam() (localctx IAnnotationParamContext) { } } { - p.SetState(6064) + p.SetState(6121) p.Match(MDLParserCOLON) if p.HasError() { // Recognition error - abort rule @@ -92175,14 +96438,14 @@ func (p *MDLParser) AnnotationParam() (localctx IAnnotationParamContext) { } } { - p.SetState(6065) + p.SetState(6122) p.AnnotationValue() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(6066) + p.SetState(6123) p.AnnotationValue() } @@ -92319,34 +96582,44 @@ func (s *AnnotationValueContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *AnnotationValueContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitAnnotationValue(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) AnnotationValue() (localctx IAnnotationValueContext) { localctx = NewAnnotationValueContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 728, MDLParserRULE_annotationValue) - p.SetState(6072) + p.SetState(6129) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 703, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 713, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(6069) + p.SetState(6126) p.Literal() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(6070) + p.SetState(6127) p.Expression() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(6071) + p.SetState(6128) p.QualifiedName() } @@ -92742,6 +97015,16 @@ func (s *CommonNameKeywordContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *CommonNameKeywordContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitCommonNameKeyword(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) CommonNameKeyword() (localctx ICommonNameKeywordContext) { localctx = NewCommonNameKeywordContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 730, MDLParserRULE_commonNameKeyword) @@ -92749,10 +97032,10 @@ func (p *MDLParser) CommonNameKeyword() (localctx ICommonNameKeywordContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(6074) + p.SetState(6131) _la = p.GetTokenStream().LA(1) - if !(((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-188)) & ^0x3f) == 0 && ((int64(1)<<(_la-188))&576478365295182137) != 0) || ((int64((_la-276)) & ^0x3f) == 0 && ((int64(1)<<(_la-276))&180143985430364191) != 0) || ((int64((_la-350)) & ^0x3f) == 0 && ((int64(1)<<(_la-350))&5647091739131907) != 0) || ((int64((_la-416)) & ^0x3f) == 0 && ((int64(1)<<(_la-416))&-6917528058991722373) != 0)) { + if !(((int64((_la-41)) & ^0x3f) == 0 && ((int64(1)<<(_la-41))&268446987) != 0) || ((int64((_la-116)) & ^0x3f) == 0 && ((int64(1)<<(_la-116))&4785074609848577) != 0) || ((int64((_la-189)) & ^0x3f) == 0 && ((int64(1)<<(_la-189))&2305913398763585849) != 0) || ((int64((_la-279)) & ^0x3f) == 0 && ((int64(1)<<(_la-279))&180143985430364191) != 0) || ((int64((_la-353)) & ^0x3f) == 0 && ((int64(1)<<(_la-353))&5647091739131907) != 0) || ((int64((_la-419)) & ^0x3f) == 0 && ((int64(1)<<(_la-419))&-6917528058991722373) != 0)) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) @@ -92958,6 +97241,8 @@ type IKeywordContext interface { STATICIMAGE() antlr.TerminalNode DYNAMICIMAGE() antlr.TerminalNode CUSTOMCONTAINER() antlr.TerminalNode + TABCONTAINER() antlr.TerminalNode + TABPAGE() antlr.TerminalNode GROUPBOX() antlr.TerminalNode HEADER() antlr.TerminalNode FOOTER() antlr.TerminalNode @@ -93856,6 +98141,14 @@ func (s *KeywordContext) CUSTOMCONTAINER() antlr.TerminalNode { return s.GetToken(MDLParserCUSTOMCONTAINER, 0) } +func (s *KeywordContext) TABCONTAINER() antlr.TerminalNode { + return s.GetToken(MDLParserTABCONTAINER, 0) +} + +func (s *KeywordContext) TABPAGE() antlr.TerminalNode { + return s.GetToken(MDLParserTABPAGE, 0) +} + func (s *KeywordContext) GROUPBOX() antlr.TerminalNode { return s.GetToken(MDLParserGROUPBOX, 0) } @@ -94488,6 +98781,16 @@ func (s *KeywordContext) ExitRule(listener antlr.ParseTreeListener) { } } +func (s *KeywordContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case MDLParserVisitor: + return t.VisitKeyword(s) + + default: + return t.VisitChildren(s) + } +} + func (p *MDLParser) Keyword() (localctx IKeywordContext) { localctx = NewKeywordContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 732, MDLParserRULE_keyword) @@ -94495,10 +98798,10 @@ func (p *MDLParser) Keyword() (localctx IKeywordContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(6076) + p.SetState(6133) _la = p.GetTokenStream().LA(1) - if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&629276753604317175) != 0) || ((int64((_la-132)) & ^0x3f) == 0 && ((int64(1)<<(_la-132))&-468218264967741735) != 0) || ((int64((_la-196)) & ^0x3f) == 0 && ((int64(1)<<(_la-196))&44473182800836609) != 0) || ((int64((_la-262)) & ^0x3f) == 0 && ((int64(1)<<(_la-262))&-494783461604865) != 0) || ((int64((_la-326)) & ^0x3f) == 0 && ((int64(1)<<(_la-326))&-576462951326682881) != 0) || ((int64((_la-390)) & ^0x3f) == 0 && ((int64(1)<<(_la-390))&-99506071046657) != 0) || ((int64((_la-454)) & ^0x3f) == 0 && ((int64(1)<<(_la-454))&824750145535) != 0)) { + if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1106513109511439104) != 0) || ((int64((_la-65)) & ^0x3f) == 0 && ((int64(1)<<(_la-65))&629276753604317175) != 0) || ((int64((_la-132)) & ^0x3f) == 0 && ((int64(1)<<(_la-132))&-936592626214273319) != 0) || ((int64((_la-196)) & ^0x3f) == 0 && ((int64(1)<<(_la-196))&355785468157095939) != 0) || ((int64((_la-265)) & ^0x3f) == 0 && ((int64(1)<<(_la-265))&-494783461604865) != 0) || ((int64((_la-329)) & ^0x3f) == 0 && ((int64(1)<<(_la-329))&-576462951326682881) != 0) || ((int64((_la-393)) & ^0x3f) == 0 && ((int64(1)<<(_la-393))&-99506071046657) != 0) || ((int64((_la-457)) & ^0x3f) == 0 && ((int64(1)<<(_la-457))&824750145535) != 0)) { p.GetErrorHandler().RecoverInline(p) } else { p.GetErrorHandler().ReportMatch(p) diff --git a/mdl/grammar/parser/mdlparser_base_visitor.go b/mdl/grammar/parser/mdlparser_base_visitor.go new file mode 100644 index 0000000..5e5b548 --- /dev/null +++ b/mdl/grammar/parser/mdlparser_base_visitor.go @@ -0,0 +1,1504 @@ +// Code generated from MDLParser.g4 by ANTLR 4.13.2. DO NOT EDIT. + +package parser // MDLParser +import "github.com/antlr4-go/antlr/v4" + +type BaseMDLParserVisitor struct { + *antlr.BaseParseTreeVisitor +} + +func (v *BaseMDLParserVisitor) VisitProgram(ctx *ProgramContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitStatement(ctx *StatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDdlStatement(ctx *DdlStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitUpdateWidgetsStatement(ctx *UpdateWidgetsStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateStatement(ctx *CreateStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterStatement(ctx *AlterStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterStylingAction(ctx *AlterStylingActionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterStylingAssignment(ctx *AlterStylingAssignmentContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterPageOperation(ctx *AlterPageOperationContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterPageSet(ctx *AlterPageSetContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterLayoutMapping(ctx *AlterLayoutMappingContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterPageAssignment(ctx *AlterPageAssignmentContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterPageInsert(ctx *AlterPageInsertContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterPageDrop(ctx *AlterPageDropContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterPageReplace(ctx *AlterPageReplaceContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterPageAddVariable(ctx *AlterPageAddVariableContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterPageDropVariable(ctx *AlterPageDropVariableContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitNavigationClause(ctx *NavigationClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitNavMenuItemDef(ctx *NavMenuItemDefContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDropStatement(ctx *DropStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRenameStatement(ctx *RenameStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMoveStatement(ctx *MoveStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSecurityStatement(ctx *SecurityStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateModuleRoleStatement(ctx *CreateModuleRoleStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDropModuleRoleStatement(ctx *DropModuleRoleStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateUserRoleStatement(ctx *CreateUserRoleStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterUserRoleStatement(ctx *AlterUserRoleStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDropUserRoleStatement(ctx *DropUserRoleStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitGrantEntityAccessStatement(ctx *GrantEntityAccessStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRevokeEntityAccessStatement(ctx *RevokeEntityAccessStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitGrantMicroflowAccessStatement(ctx *GrantMicroflowAccessStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRevokeMicroflowAccessStatement(ctx *RevokeMicroflowAccessStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitGrantPageAccessStatement(ctx *GrantPageAccessStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRevokePageAccessStatement(ctx *RevokePageAccessStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitGrantWorkflowAccessStatement(ctx *GrantWorkflowAccessStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRevokeWorkflowAccessStatement(ctx *RevokeWorkflowAccessStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitGrantODataServiceAccessStatement(ctx *GrantODataServiceAccessStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRevokeODataServiceAccessStatement(ctx *RevokeODataServiceAccessStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterProjectSecurityStatement(ctx *AlterProjectSecurityStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateDemoUserStatement(ctx *CreateDemoUserStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDropDemoUserStatement(ctx *DropDemoUserStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitUpdateSecurityStatement(ctx *UpdateSecurityStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitModuleRoleList(ctx *ModuleRoleListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitEntityAccessRightList(ctx *EntityAccessRightListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitEntityAccessRight(ctx *EntityAccessRightContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateEntityStatement(ctx *CreateEntityStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitGeneralizationClause(ctx *GeneralizationClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitEntityBody(ctx *EntityBodyContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitEntityOptions(ctx *EntityOptionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitEntityOption(ctx *EntityOptionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAttributeDefinitionList(ctx *AttributeDefinitionListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAttributeDefinition(ctx *AttributeDefinitionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAttributeName(ctx *AttributeNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAttributeConstraint(ctx *AttributeConstraintContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDataType(ctx *DataTypeContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitTemplateContext(ctx *TemplateContextContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitNonListDataType(ctx *NonListDataTypeContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitIndexDefinition(ctx *IndexDefinitionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitIndexAttributeList(ctx *IndexAttributeListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitIndexAttribute(ctx *IndexAttributeContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitIndexColumnName(ctx *IndexColumnNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateAssociationStatement(ctx *CreateAssociationStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAssociationOptions(ctx *AssociationOptionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAssociationOption(ctx *AssociationOptionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDeleteBehavior(ctx *DeleteBehaviorContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterEntityAction(ctx *AlterEntityActionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterAssociationAction(ctx *AlterAssociationActionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterEnumerationAction(ctx *AlterEnumerationActionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterNotebookAction(ctx *AlterNotebookActionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateModuleStatement(ctx *CreateModuleStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitModuleOptions(ctx *ModuleOptionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitModuleOption(ctx *ModuleOptionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateEnumerationStatement(ctx *CreateEnumerationStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitEnumerationValueList(ctx *EnumerationValueListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitEnumerationValue(ctx *EnumerationValueContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitEnumValueName(ctx *EnumValueNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitEnumerationOptions(ctx *EnumerationOptionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitEnumerationOption(ctx *EnumerationOptionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateImageCollectionStatement(ctx *CreateImageCollectionStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitImageCollectionOptions(ctx *ImageCollectionOptionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitImageCollectionOption(ctx *ImageCollectionOptionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitImageCollectionBody(ctx *ImageCollectionBodyContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitImageCollectionItem(ctx *ImageCollectionItemContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitImageName(ctx *ImageNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateValidationRuleStatement(ctx *CreateValidationRuleStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitValidationRuleBody(ctx *ValidationRuleBodyContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRangeConstraint(ctx *RangeConstraintContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAttributeReference(ctx *AttributeReferenceContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAttributeReferenceList(ctx *AttributeReferenceListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateMicroflowStatement(ctx *CreateMicroflowStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateJavaActionStatement(ctx *CreateJavaActionStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitJavaActionParameterList(ctx *JavaActionParameterListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitJavaActionParameter(ctx *JavaActionParameterContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitJavaActionReturnType(ctx *JavaActionReturnTypeContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitJavaActionExposedClause(ctx *JavaActionExposedClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMicroflowParameterList(ctx *MicroflowParameterListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMicroflowParameter(ctx *MicroflowParameterContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitParameterName(ctx *ParameterNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMicroflowReturnType(ctx *MicroflowReturnTypeContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMicroflowOptions(ctx *MicroflowOptionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMicroflowOption(ctx *MicroflowOptionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMicroflowBody(ctx *MicroflowBodyContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMicroflowStatement(ctx *MicroflowStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDeclareStatement(ctx *DeclareStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSetStatement(ctx *SetStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateObjectStatement(ctx *CreateObjectStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitChangeObjectStatement(ctx *ChangeObjectStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAttributePath(ctx *AttributePathContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCommitStatement(ctx *CommitStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDeleteObjectStatement(ctx *DeleteObjectStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRollbackStatement(ctx *RollbackStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRetrieveStatement(ctx *RetrieveStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRetrieveSource(ctx *RetrieveSourceContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOnErrorClause(ctx *OnErrorClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitIfStatement(ctx *IfStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLoopStatement(ctx *LoopStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWhileStatement(ctx *WhileStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitContinueStatement(ctx *ContinueStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitBreakStatement(ctx *BreakStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitReturnStatement(ctx *ReturnStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRaiseErrorStatement(ctx *RaiseErrorStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLogStatement(ctx *LogStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLogLevel(ctx *LogLevelContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitTemplateParams(ctx *TemplateParamsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitTemplateParam(ctx *TemplateParamContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLogTemplateParams(ctx *LogTemplateParamsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLogTemplateParam(ctx *LogTemplateParamContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCallMicroflowStatement(ctx *CallMicroflowStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCallJavaActionStatement(ctx *CallJavaActionStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitExecuteDatabaseQueryStatement(ctx *ExecuteDatabaseQueryStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCallExternalActionStatement(ctx *CallExternalActionStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCallArgumentList(ctx *CallArgumentListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCallArgument(ctx *CallArgumentContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitShowPageStatement(ctx *ShowPageStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitShowPageArgList(ctx *ShowPageArgListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitShowPageArg(ctx *ShowPageArgContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitClosePageStatement(ctx *ClosePageStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitShowHomePageStatement(ctx *ShowHomePageStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitShowMessageStatement(ctx *ShowMessageStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitThrowStatement(ctx *ThrowStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitValidationFeedbackStatement(ctx *ValidationFeedbackStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestCallStatement(ctx *RestCallStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitHttpMethod(ctx *HttpMethodContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestCallUrl(ctx *RestCallUrlContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestCallUrlParams(ctx *RestCallUrlParamsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestCallHeaderClause(ctx *RestCallHeaderClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestCallAuthClause(ctx *RestCallAuthClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestCallBodyClause(ctx *RestCallBodyClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestCallTimeoutClause(ctx *RestCallTimeoutClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestCallReturnsClause(ctx *RestCallReturnsClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSendRestRequestStatement(ctx *SendRestRequestStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSendRestRequestBodyClause(ctx *SendRestRequestBodyClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitListOperationStatement(ctx *ListOperationStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitListOperation(ctx *ListOperationContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSortSpecList(ctx *SortSpecListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSortSpec(ctx *SortSpecContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAggregateListStatement(ctx *AggregateListStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitListAggregateOperation(ctx *ListAggregateOperationContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateListStatement(ctx *CreateListStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAddToListStatement(ctx *AddToListStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRemoveFromListStatement(ctx *RemoveFromListStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMemberAssignmentList(ctx *MemberAssignmentListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMemberAssignment(ctx *MemberAssignmentContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMemberAttributeName(ctx *MemberAttributeNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitChangeList(ctx *ChangeListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitChangeItem(ctx *ChangeItemContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreatePageStatement(ctx *CreatePageStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateSnippetStatement(ctx *CreateSnippetStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSnippetOptions(ctx *SnippetOptionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSnippetOption(ctx *SnippetOptionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitPageParameterList(ctx *PageParameterListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitPageParameter(ctx *PageParameterContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSnippetParameterList(ctx *SnippetParameterListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSnippetParameter(ctx *SnippetParameterContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitVariableDeclarationList(ctx *VariableDeclarationListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitVariableDeclaration(ctx *VariableDeclarationContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSortColumn(ctx *SortColumnContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathConstraint(ctx *XpathConstraintContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAndOrXpath(ctx *AndOrXpathContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathExpr(ctx *XpathExprContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathAndExpr(ctx *XpathAndExprContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathNotExpr(ctx *XpathNotExprContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathComparisonExpr(ctx *XpathComparisonExprContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathValueExpr(ctx *XpathValueExprContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathPath(ctx *XpathPathContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathStep(ctx *XpathStepContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathStepValue(ctx *XpathStepValueContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathQualifiedName(ctx *XpathQualifiedNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathWord(ctx *XpathWordContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathFunctionCall(ctx *XpathFunctionCallContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitXpathFunctionName(ctx *XpathFunctionNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitPageHeaderV3(ctx *PageHeaderV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitPageHeaderPropertyV3(ctx *PageHeaderPropertyV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSnippetHeaderV3(ctx *SnippetHeaderV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSnippetHeaderPropertyV3(ctx *SnippetHeaderPropertyV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitPageBodyV3(ctx *PageBodyV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitUseFragmentRef(ctx *UseFragmentRefContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWidgetV3(ctx *WidgetV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWidgetTypeV3(ctx *WidgetTypeV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWidgetPropertiesV3(ctx *WidgetPropertiesV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWidgetPropertyV3(ctx *WidgetPropertyV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitFilterTypeValue(ctx *FilterTypeValueContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAttributeListV3(ctx *AttributeListV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDataSourceExprV3(ctx *DataSourceExprV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitActionExprV3(ctx *ActionExprV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMicroflowArgsV3(ctx *MicroflowArgsV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMicroflowArgV3(ctx *MicroflowArgV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAttributePathV3(ctx *AttributePathV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitStringExprV3(ctx *StringExprV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitParamListV3(ctx *ParamListV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitParamAssignmentV3(ctx *ParamAssignmentV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRenderModeV3(ctx *RenderModeV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitButtonStyleV3(ctx *ButtonStyleV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDesktopWidthV3(ctx *DesktopWidthV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSelectionModeV3(ctx *SelectionModeV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitPropertyValueV3(ctx *PropertyValueV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDesignPropertyListV3(ctx *DesignPropertyListV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDesignPropertyEntryV3(ctx *DesignPropertyEntryV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWidgetBodyV3(ctx *WidgetBodyV3Context) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateNotebookStatement(ctx *CreateNotebookStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitNotebookOptions(ctx *NotebookOptionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitNotebookOption(ctx *NotebookOptionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitNotebookPage(ctx *NotebookPageContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateDatabaseConnectionStatement(ctx *CreateDatabaseConnectionStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDatabaseConnectionOption(ctx *DatabaseConnectionOptionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDatabaseQuery(ctx *DatabaseQueryContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDatabaseQueryMapping(ctx *DatabaseQueryMappingContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateConstantStatement(ctx *CreateConstantStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitConstantOptions(ctx *ConstantOptionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitConstantOption(ctx *ConstantOptionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateConfigurationStatement(ctx *CreateConfigurationStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateRestClientStatement(ctx *CreateRestClientStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestClientBaseUrl(ctx *RestClientBaseUrlContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestClientAuthentication(ctx *RestClientAuthenticationContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestAuthValue(ctx *RestAuthValueContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestOperationDef(ctx *RestOperationDefContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestHttpMethod(ctx *RestHttpMethodContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestOperationClause(ctx *RestOperationClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestHeaderValue(ctx *RestHeaderValueContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitRestResponseSpec(ctx *RestResponseSpecContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateIndexStatement(ctx *CreateIndexStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateODataClientStatement(ctx *CreateODataClientStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateODataServiceStatement(ctx *CreateODataServiceStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOdataPropertyValue(ctx *OdataPropertyValueContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOdataPropertyAssignment(ctx *OdataPropertyAssignmentContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOdataAlterAssignment(ctx *OdataAlterAssignmentContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOdataAuthenticationClause(ctx *OdataAuthenticationClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOdataAuthType(ctx *OdataAuthTypeContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitPublishEntityBlock(ctx *PublishEntityBlockContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitExposeClause(ctx *ExposeClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitExposeMember(ctx *ExposeMemberContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitExposeMemberOptions(ctx *ExposeMemberOptionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateExternalEntityStatement(ctx *CreateExternalEntityStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateNavigationStatement(ctx *CreateNavigationStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOdataHeadersClause(ctx *OdataHeadersClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOdataHeaderEntry(ctx *OdataHeaderEntryContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateBusinessEventServiceStatement(ctx *CreateBusinessEventServiceStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitBusinessEventMessageDef(ctx *BusinessEventMessageDefContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitBusinessEventAttrDef(ctx *BusinessEventAttrDefContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCreateWorkflowStatement(ctx *CreateWorkflowStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowBody(ctx *WorkflowBodyContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowActivityStmt(ctx *WorkflowActivityStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowUserTaskStmt(ctx *WorkflowUserTaskStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowBoundaryEventClause(ctx *WorkflowBoundaryEventClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowUserTaskOutcome(ctx *WorkflowUserTaskOutcomeContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowCallMicroflowStmt(ctx *WorkflowCallMicroflowStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowParameterMapping(ctx *WorkflowParameterMappingContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowCallWorkflowStmt(ctx *WorkflowCallWorkflowStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowDecisionStmt(ctx *WorkflowDecisionStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowConditionOutcome(ctx *WorkflowConditionOutcomeContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowParallelSplitStmt(ctx *WorkflowParallelSplitStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowParallelPath(ctx *WorkflowParallelPathContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowJumpToStmt(ctx *WorkflowJumpToStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowWaitForTimerStmt(ctx *WorkflowWaitForTimerStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowWaitForNotificationStmt(ctx *WorkflowWaitForNotificationStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWorkflowAnnotationStmt(ctx *WorkflowAnnotationStmtContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAlterSettingsClause(ctx *AlterSettingsClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSettingsSection(ctx *SettingsSectionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSettingsAssignment(ctx *SettingsAssignmentContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSettingsValue(ctx *SettingsValueContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDqlStatement(ctx *DqlStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitShowStatement(ctx *ShowStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitShowWidgetsFilter(ctx *ShowWidgetsFilterContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWidgetTypeKeyword(ctx *WidgetTypeKeywordContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWidgetCondition(ctx *WidgetConditionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWidgetPropertyAssignment(ctx *WidgetPropertyAssignmentContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWidgetPropertyValue(ctx *WidgetPropertyValueContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDescribeStatement(ctx *DescribeStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCatalogSelectQuery(ctx *CatalogSelectQueryContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCatalogJoinClause(ctx *CatalogJoinClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCatalogTableName(ctx *CatalogTableNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOqlQuery(ctx *OqlQueryContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOqlQueryTerm(ctx *OqlQueryTermContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSelectClause(ctx *SelectClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSelectList(ctx *SelectListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSelectItem(ctx *SelectItemContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSelectAlias(ctx *SelectAliasContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitFromClause(ctx *FromClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitTableReference(ctx *TableReferenceContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitJoinClause(ctx *JoinClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAssociationPath(ctx *AssociationPathContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitJoinType(ctx *JoinTypeContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitWhereClause(ctx *WhereClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitGroupByClause(ctx *GroupByClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitHavingClause(ctx *HavingClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOrderByClause(ctx *OrderByClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOrderByList(ctx *OrderByListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOrderByItem(ctx *OrderByItemContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitGroupByList(ctx *GroupByListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLimitOffsetClause(ctx *LimitOffsetClauseContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitUtilityStatement(ctx *UtilityStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSearchStatement(ctx *SearchStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitConnectStatement(ctx *ConnectStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDisconnectStatement(ctx *DisconnectStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitUpdateStatement(ctx *UpdateStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCheckStatement(ctx *CheckStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitBuildStatement(ctx *BuildStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitExecuteScriptStatement(ctx *ExecuteScriptStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitExecuteRuntimeStatement(ctx *ExecuteRuntimeStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLintStatement(ctx *LintStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLintTarget(ctx *LintTargetContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLintFormat(ctx *LintFormatContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitUseSessionStatement(ctx *UseSessionStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSessionIdList(ctx *SessionIdListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSessionId(ctx *SessionIdContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitIntrospectApiStatement(ctx *IntrospectApiStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDebugStatement(ctx *DebugStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSqlConnect(ctx *SqlConnectContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSqlDisconnect(ctx *SqlDisconnectContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSqlConnections(ctx *SqlConnectionsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSqlShowTables(ctx *SqlShowTablesContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSqlDescribeTable(ctx *SqlDescribeTableContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSqlGenerateConnector(ctx *SqlGenerateConnectorContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSqlQuery(ctx *SqlQueryContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitSqlPassthrough(ctx *SqlPassthroughContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitImportFromQuery(ctx *ImportFromQueryContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitImportMapping(ctx *ImportMappingContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLinkLookup(ctx *LinkLookupContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLinkDirect(ctx *LinkDirectContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitHelpStatement(ctx *HelpStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDefineFragmentStatement(ctx *DefineFragmentStatementContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitExpression(ctx *ExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitOrExpression(ctx *OrExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAndExpression(ctx *AndExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitNotExpression(ctx *NotExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitComparisonExpression(ctx *ComparisonExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitComparisonOperator(ctx *ComparisonOperatorContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAdditiveExpression(ctx *AdditiveExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitMultiplicativeExpression(ctx *MultiplicativeExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitUnaryExpression(ctx *UnaryExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitPrimaryExpression(ctx *PrimaryExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCaseExpression(ctx *CaseExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitIfThenElseExpression(ctx *IfThenElseExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCastExpression(ctx *CastExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCastDataType(ctx *CastDataTypeContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAggregateFunction(ctx *AggregateFunctionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitFunctionCall(ctx *FunctionCallContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitFunctionName(ctx *FunctionNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitArgumentList(ctx *ArgumentListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAtomicExpression(ctx *AtomicExpressionContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitExpressionList(ctx *ExpressionListContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitQualifiedName(ctx *QualifiedNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitIdentifierOrKeyword(ctx *IdentifierOrKeywordContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitLiteral(ctx *LiteralContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitArrayLiteral(ctx *ArrayLiteralContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitBooleanLiteral(ctx *BooleanLiteralContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitDocComment(ctx *DocCommentContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAnnotation(ctx *AnnotationContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAnnotationName(ctx *AnnotationNameContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAnnotationParams(ctx *AnnotationParamsContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAnnotationParam(ctx *AnnotationParamContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitAnnotationValue(ctx *AnnotationValueContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitCommonNameKeyword(ctx *CommonNameKeywordContext) interface{} { + return v.VisitChildren(ctx) +} + +func (v *BaseMDLParserVisitor) VisitKeyword(ctx *KeywordContext) interface{} { + return v.VisitChildren(ctx) +} diff --git a/mdl/grammar/parser/mdlparser_visitor.go b/mdl/grammar/parser/mdlparser_visitor.go new file mode 100644 index 0000000..ee910da --- /dev/null +++ b/mdl/grammar/parser/mdlparser_visitor.go @@ -0,0 +1,1131 @@ +// Code generated from MDLParser.g4 by ANTLR 4.13.2. DO NOT EDIT. + +package parser // MDLParser +import "github.com/antlr4-go/antlr/v4" + +// A complete Visitor for a parse tree produced by MDLParser. +type MDLParserVisitor interface { + antlr.ParseTreeVisitor + + // Visit a parse tree produced by MDLParser#program. + VisitProgram(ctx *ProgramContext) interface{} + + // Visit a parse tree produced by MDLParser#statement. + VisitStatement(ctx *StatementContext) interface{} + + // Visit a parse tree produced by MDLParser#ddlStatement. + VisitDdlStatement(ctx *DdlStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#updateWidgetsStatement. + VisitUpdateWidgetsStatement(ctx *UpdateWidgetsStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createStatement. + VisitCreateStatement(ctx *CreateStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#alterStatement. + VisitAlterStatement(ctx *AlterStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#alterStylingAction. + VisitAlterStylingAction(ctx *AlterStylingActionContext) interface{} + + // Visit a parse tree produced by MDLParser#alterStylingAssignment. + VisitAlterStylingAssignment(ctx *AlterStylingAssignmentContext) interface{} + + // Visit a parse tree produced by MDLParser#alterPageOperation. + VisitAlterPageOperation(ctx *AlterPageOperationContext) interface{} + + // Visit a parse tree produced by MDLParser#alterPageSet. + VisitAlterPageSet(ctx *AlterPageSetContext) interface{} + + // Visit a parse tree produced by MDLParser#alterLayoutMapping. + VisitAlterLayoutMapping(ctx *AlterLayoutMappingContext) interface{} + + // Visit a parse tree produced by MDLParser#alterPageAssignment. + VisitAlterPageAssignment(ctx *AlterPageAssignmentContext) interface{} + + // Visit a parse tree produced by MDLParser#alterPageInsert. + VisitAlterPageInsert(ctx *AlterPageInsertContext) interface{} + + // Visit a parse tree produced by MDLParser#alterPageDrop. + VisitAlterPageDrop(ctx *AlterPageDropContext) interface{} + + // Visit a parse tree produced by MDLParser#alterPageReplace. + VisitAlterPageReplace(ctx *AlterPageReplaceContext) interface{} + + // Visit a parse tree produced by MDLParser#alterPageAddVariable. + VisitAlterPageAddVariable(ctx *AlterPageAddVariableContext) interface{} + + // Visit a parse tree produced by MDLParser#alterPageDropVariable. + VisitAlterPageDropVariable(ctx *AlterPageDropVariableContext) interface{} + + // Visit a parse tree produced by MDLParser#navigationClause. + VisitNavigationClause(ctx *NavigationClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#navMenuItemDef. + VisitNavMenuItemDef(ctx *NavMenuItemDefContext) interface{} + + // Visit a parse tree produced by MDLParser#dropStatement. + VisitDropStatement(ctx *DropStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#renameStatement. + VisitRenameStatement(ctx *RenameStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#moveStatement. + VisitMoveStatement(ctx *MoveStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#securityStatement. + VisitSecurityStatement(ctx *SecurityStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createModuleRoleStatement. + VisitCreateModuleRoleStatement(ctx *CreateModuleRoleStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#dropModuleRoleStatement. + VisitDropModuleRoleStatement(ctx *DropModuleRoleStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createUserRoleStatement. + VisitCreateUserRoleStatement(ctx *CreateUserRoleStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#alterUserRoleStatement. + VisitAlterUserRoleStatement(ctx *AlterUserRoleStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#dropUserRoleStatement. + VisitDropUserRoleStatement(ctx *DropUserRoleStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#grantEntityAccessStatement. + VisitGrantEntityAccessStatement(ctx *GrantEntityAccessStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#revokeEntityAccessStatement. + VisitRevokeEntityAccessStatement(ctx *RevokeEntityAccessStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#grantMicroflowAccessStatement. + VisitGrantMicroflowAccessStatement(ctx *GrantMicroflowAccessStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#revokeMicroflowAccessStatement. + VisitRevokeMicroflowAccessStatement(ctx *RevokeMicroflowAccessStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#grantPageAccessStatement. + VisitGrantPageAccessStatement(ctx *GrantPageAccessStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#revokePageAccessStatement. + VisitRevokePageAccessStatement(ctx *RevokePageAccessStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#grantWorkflowAccessStatement. + VisitGrantWorkflowAccessStatement(ctx *GrantWorkflowAccessStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#revokeWorkflowAccessStatement. + VisitRevokeWorkflowAccessStatement(ctx *RevokeWorkflowAccessStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#grantODataServiceAccessStatement. + VisitGrantODataServiceAccessStatement(ctx *GrantODataServiceAccessStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#revokeODataServiceAccessStatement. + VisitRevokeODataServiceAccessStatement(ctx *RevokeODataServiceAccessStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#alterProjectSecurityStatement. + VisitAlterProjectSecurityStatement(ctx *AlterProjectSecurityStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createDemoUserStatement. + VisitCreateDemoUserStatement(ctx *CreateDemoUserStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#dropDemoUserStatement. + VisitDropDemoUserStatement(ctx *DropDemoUserStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#updateSecurityStatement. + VisitUpdateSecurityStatement(ctx *UpdateSecurityStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#moduleRoleList. + VisitModuleRoleList(ctx *ModuleRoleListContext) interface{} + + // Visit a parse tree produced by MDLParser#entityAccessRightList. + VisitEntityAccessRightList(ctx *EntityAccessRightListContext) interface{} + + // Visit a parse tree produced by MDLParser#entityAccessRight. + VisitEntityAccessRight(ctx *EntityAccessRightContext) interface{} + + // Visit a parse tree produced by MDLParser#createEntityStatement. + VisitCreateEntityStatement(ctx *CreateEntityStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#generalizationClause. + VisitGeneralizationClause(ctx *GeneralizationClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#entityBody. + VisitEntityBody(ctx *EntityBodyContext) interface{} + + // Visit a parse tree produced by MDLParser#entityOptions. + VisitEntityOptions(ctx *EntityOptionsContext) interface{} + + // Visit a parse tree produced by MDLParser#entityOption. + VisitEntityOption(ctx *EntityOptionContext) interface{} + + // Visit a parse tree produced by MDLParser#attributeDefinitionList. + VisitAttributeDefinitionList(ctx *AttributeDefinitionListContext) interface{} + + // Visit a parse tree produced by MDLParser#attributeDefinition. + VisitAttributeDefinition(ctx *AttributeDefinitionContext) interface{} + + // Visit a parse tree produced by MDLParser#attributeName. + VisitAttributeName(ctx *AttributeNameContext) interface{} + + // Visit a parse tree produced by MDLParser#attributeConstraint. + VisitAttributeConstraint(ctx *AttributeConstraintContext) interface{} + + // Visit a parse tree produced by MDLParser#dataType. + VisitDataType(ctx *DataTypeContext) interface{} + + // Visit a parse tree produced by MDLParser#templateContext. + VisitTemplateContext(ctx *TemplateContextContext) interface{} + + // Visit a parse tree produced by MDLParser#nonListDataType. + VisitNonListDataType(ctx *NonListDataTypeContext) interface{} + + // Visit a parse tree produced by MDLParser#indexDefinition. + VisitIndexDefinition(ctx *IndexDefinitionContext) interface{} + + // Visit a parse tree produced by MDLParser#indexAttributeList. + VisitIndexAttributeList(ctx *IndexAttributeListContext) interface{} + + // Visit a parse tree produced by MDLParser#indexAttribute. + VisitIndexAttribute(ctx *IndexAttributeContext) interface{} + + // Visit a parse tree produced by MDLParser#indexColumnName. + VisitIndexColumnName(ctx *IndexColumnNameContext) interface{} + + // Visit a parse tree produced by MDLParser#createAssociationStatement. + VisitCreateAssociationStatement(ctx *CreateAssociationStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#associationOptions. + VisitAssociationOptions(ctx *AssociationOptionsContext) interface{} + + // Visit a parse tree produced by MDLParser#associationOption. + VisitAssociationOption(ctx *AssociationOptionContext) interface{} + + // Visit a parse tree produced by MDLParser#deleteBehavior. + VisitDeleteBehavior(ctx *DeleteBehaviorContext) interface{} + + // Visit a parse tree produced by MDLParser#alterEntityAction. + VisitAlterEntityAction(ctx *AlterEntityActionContext) interface{} + + // Visit a parse tree produced by MDLParser#alterAssociationAction. + VisitAlterAssociationAction(ctx *AlterAssociationActionContext) interface{} + + // Visit a parse tree produced by MDLParser#alterEnumerationAction. + VisitAlterEnumerationAction(ctx *AlterEnumerationActionContext) interface{} + + // Visit a parse tree produced by MDLParser#alterNotebookAction. + VisitAlterNotebookAction(ctx *AlterNotebookActionContext) interface{} + + // Visit a parse tree produced by MDLParser#createModuleStatement. + VisitCreateModuleStatement(ctx *CreateModuleStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#moduleOptions. + VisitModuleOptions(ctx *ModuleOptionsContext) interface{} + + // Visit a parse tree produced by MDLParser#moduleOption. + VisitModuleOption(ctx *ModuleOptionContext) interface{} + + // Visit a parse tree produced by MDLParser#createEnumerationStatement. + VisitCreateEnumerationStatement(ctx *CreateEnumerationStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#enumerationValueList. + VisitEnumerationValueList(ctx *EnumerationValueListContext) interface{} + + // Visit a parse tree produced by MDLParser#enumerationValue. + VisitEnumerationValue(ctx *EnumerationValueContext) interface{} + + // Visit a parse tree produced by MDLParser#enumValueName. + VisitEnumValueName(ctx *EnumValueNameContext) interface{} + + // Visit a parse tree produced by MDLParser#enumerationOptions. + VisitEnumerationOptions(ctx *EnumerationOptionsContext) interface{} + + // Visit a parse tree produced by MDLParser#enumerationOption. + VisitEnumerationOption(ctx *EnumerationOptionContext) interface{} + + // Visit a parse tree produced by MDLParser#createImageCollectionStatement. + VisitCreateImageCollectionStatement(ctx *CreateImageCollectionStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#imageCollectionOptions. + VisitImageCollectionOptions(ctx *ImageCollectionOptionsContext) interface{} + + // Visit a parse tree produced by MDLParser#imageCollectionOption. + VisitImageCollectionOption(ctx *ImageCollectionOptionContext) interface{} + + // Visit a parse tree produced by MDLParser#imageCollectionBody. + VisitImageCollectionBody(ctx *ImageCollectionBodyContext) interface{} + + // Visit a parse tree produced by MDLParser#imageCollectionItem. + VisitImageCollectionItem(ctx *ImageCollectionItemContext) interface{} + + // Visit a parse tree produced by MDLParser#imageName. + VisitImageName(ctx *ImageNameContext) interface{} + + // Visit a parse tree produced by MDLParser#createValidationRuleStatement. + VisitCreateValidationRuleStatement(ctx *CreateValidationRuleStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#validationRuleBody. + VisitValidationRuleBody(ctx *ValidationRuleBodyContext) interface{} + + // Visit a parse tree produced by MDLParser#rangeConstraint. + VisitRangeConstraint(ctx *RangeConstraintContext) interface{} + + // Visit a parse tree produced by MDLParser#attributeReference. + VisitAttributeReference(ctx *AttributeReferenceContext) interface{} + + // Visit a parse tree produced by MDLParser#attributeReferenceList. + VisitAttributeReferenceList(ctx *AttributeReferenceListContext) interface{} + + // Visit a parse tree produced by MDLParser#createMicroflowStatement. + VisitCreateMicroflowStatement(ctx *CreateMicroflowStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createJavaActionStatement. + VisitCreateJavaActionStatement(ctx *CreateJavaActionStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#javaActionParameterList. + VisitJavaActionParameterList(ctx *JavaActionParameterListContext) interface{} + + // Visit a parse tree produced by MDLParser#javaActionParameter. + VisitJavaActionParameter(ctx *JavaActionParameterContext) interface{} + + // Visit a parse tree produced by MDLParser#javaActionReturnType. + VisitJavaActionReturnType(ctx *JavaActionReturnTypeContext) interface{} + + // Visit a parse tree produced by MDLParser#javaActionExposedClause. + VisitJavaActionExposedClause(ctx *JavaActionExposedClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#microflowParameterList. + VisitMicroflowParameterList(ctx *MicroflowParameterListContext) interface{} + + // Visit a parse tree produced by MDLParser#microflowParameter. + VisitMicroflowParameter(ctx *MicroflowParameterContext) interface{} + + // Visit a parse tree produced by MDLParser#parameterName. + VisitParameterName(ctx *ParameterNameContext) interface{} + + // Visit a parse tree produced by MDLParser#microflowReturnType. + VisitMicroflowReturnType(ctx *MicroflowReturnTypeContext) interface{} + + // Visit a parse tree produced by MDLParser#microflowOptions. + VisitMicroflowOptions(ctx *MicroflowOptionsContext) interface{} + + // Visit a parse tree produced by MDLParser#microflowOption. + VisitMicroflowOption(ctx *MicroflowOptionContext) interface{} + + // Visit a parse tree produced by MDLParser#microflowBody. + VisitMicroflowBody(ctx *MicroflowBodyContext) interface{} + + // Visit a parse tree produced by MDLParser#microflowStatement. + VisitMicroflowStatement(ctx *MicroflowStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#declareStatement. + VisitDeclareStatement(ctx *DeclareStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#setStatement. + VisitSetStatement(ctx *SetStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createObjectStatement. + VisitCreateObjectStatement(ctx *CreateObjectStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#changeObjectStatement. + VisitChangeObjectStatement(ctx *ChangeObjectStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#attributePath. + VisitAttributePath(ctx *AttributePathContext) interface{} + + // Visit a parse tree produced by MDLParser#commitStatement. + VisitCommitStatement(ctx *CommitStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#deleteObjectStatement. + VisitDeleteObjectStatement(ctx *DeleteObjectStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#rollbackStatement. + VisitRollbackStatement(ctx *RollbackStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#retrieveStatement. + VisitRetrieveStatement(ctx *RetrieveStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#retrieveSource. + VisitRetrieveSource(ctx *RetrieveSourceContext) interface{} + + // Visit a parse tree produced by MDLParser#onErrorClause. + VisitOnErrorClause(ctx *OnErrorClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#ifStatement. + VisitIfStatement(ctx *IfStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#loopStatement. + VisitLoopStatement(ctx *LoopStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#whileStatement. + VisitWhileStatement(ctx *WhileStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#continueStatement. + VisitContinueStatement(ctx *ContinueStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#breakStatement. + VisitBreakStatement(ctx *BreakStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#returnStatement. + VisitReturnStatement(ctx *ReturnStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#raiseErrorStatement. + VisitRaiseErrorStatement(ctx *RaiseErrorStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#logStatement. + VisitLogStatement(ctx *LogStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#logLevel. + VisitLogLevel(ctx *LogLevelContext) interface{} + + // Visit a parse tree produced by MDLParser#templateParams. + VisitTemplateParams(ctx *TemplateParamsContext) interface{} + + // Visit a parse tree produced by MDLParser#templateParam. + VisitTemplateParam(ctx *TemplateParamContext) interface{} + + // Visit a parse tree produced by MDLParser#logTemplateParams. + VisitLogTemplateParams(ctx *LogTemplateParamsContext) interface{} + + // Visit a parse tree produced by MDLParser#logTemplateParam. + VisitLogTemplateParam(ctx *LogTemplateParamContext) interface{} + + // Visit a parse tree produced by MDLParser#callMicroflowStatement. + VisitCallMicroflowStatement(ctx *CallMicroflowStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#callJavaActionStatement. + VisitCallJavaActionStatement(ctx *CallJavaActionStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#executeDatabaseQueryStatement. + VisitExecuteDatabaseQueryStatement(ctx *ExecuteDatabaseQueryStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#callExternalActionStatement. + VisitCallExternalActionStatement(ctx *CallExternalActionStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#callArgumentList. + VisitCallArgumentList(ctx *CallArgumentListContext) interface{} + + // Visit a parse tree produced by MDLParser#callArgument. + VisitCallArgument(ctx *CallArgumentContext) interface{} + + // Visit a parse tree produced by MDLParser#showPageStatement. + VisitShowPageStatement(ctx *ShowPageStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#showPageArgList. + VisitShowPageArgList(ctx *ShowPageArgListContext) interface{} + + // Visit a parse tree produced by MDLParser#showPageArg. + VisitShowPageArg(ctx *ShowPageArgContext) interface{} + + // Visit a parse tree produced by MDLParser#closePageStatement. + VisitClosePageStatement(ctx *ClosePageStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#showHomePageStatement. + VisitShowHomePageStatement(ctx *ShowHomePageStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#showMessageStatement. + VisitShowMessageStatement(ctx *ShowMessageStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#throwStatement. + VisitThrowStatement(ctx *ThrowStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#validationFeedbackStatement. + VisitValidationFeedbackStatement(ctx *ValidationFeedbackStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#restCallStatement. + VisitRestCallStatement(ctx *RestCallStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#httpMethod. + VisitHttpMethod(ctx *HttpMethodContext) interface{} + + // Visit a parse tree produced by MDLParser#restCallUrl. + VisitRestCallUrl(ctx *RestCallUrlContext) interface{} + + // Visit a parse tree produced by MDLParser#restCallUrlParams. + VisitRestCallUrlParams(ctx *RestCallUrlParamsContext) interface{} + + // Visit a parse tree produced by MDLParser#restCallHeaderClause. + VisitRestCallHeaderClause(ctx *RestCallHeaderClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#restCallAuthClause. + VisitRestCallAuthClause(ctx *RestCallAuthClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#restCallBodyClause. + VisitRestCallBodyClause(ctx *RestCallBodyClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#restCallTimeoutClause. + VisitRestCallTimeoutClause(ctx *RestCallTimeoutClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#restCallReturnsClause. + VisitRestCallReturnsClause(ctx *RestCallReturnsClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#sendRestRequestStatement. + VisitSendRestRequestStatement(ctx *SendRestRequestStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#sendRestRequestBodyClause. + VisitSendRestRequestBodyClause(ctx *SendRestRequestBodyClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#listOperationStatement. + VisitListOperationStatement(ctx *ListOperationStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#listOperation. + VisitListOperation(ctx *ListOperationContext) interface{} + + // Visit a parse tree produced by MDLParser#sortSpecList. + VisitSortSpecList(ctx *SortSpecListContext) interface{} + + // Visit a parse tree produced by MDLParser#sortSpec. + VisitSortSpec(ctx *SortSpecContext) interface{} + + // Visit a parse tree produced by MDLParser#aggregateListStatement. + VisitAggregateListStatement(ctx *AggregateListStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#listAggregateOperation. + VisitListAggregateOperation(ctx *ListAggregateOperationContext) interface{} + + // Visit a parse tree produced by MDLParser#createListStatement. + VisitCreateListStatement(ctx *CreateListStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#addToListStatement. + VisitAddToListStatement(ctx *AddToListStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#removeFromListStatement. + VisitRemoveFromListStatement(ctx *RemoveFromListStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#memberAssignmentList. + VisitMemberAssignmentList(ctx *MemberAssignmentListContext) interface{} + + // Visit a parse tree produced by MDLParser#memberAssignment. + VisitMemberAssignment(ctx *MemberAssignmentContext) interface{} + + // Visit a parse tree produced by MDLParser#memberAttributeName. + VisitMemberAttributeName(ctx *MemberAttributeNameContext) interface{} + + // Visit a parse tree produced by MDLParser#changeList. + VisitChangeList(ctx *ChangeListContext) interface{} + + // Visit a parse tree produced by MDLParser#changeItem. + VisitChangeItem(ctx *ChangeItemContext) interface{} + + // Visit a parse tree produced by MDLParser#createPageStatement. + VisitCreatePageStatement(ctx *CreatePageStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createSnippetStatement. + VisitCreateSnippetStatement(ctx *CreateSnippetStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#snippetOptions. + VisitSnippetOptions(ctx *SnippetOptionsContext) interface{} + + // Visit a parse tree produced by MDLParser#snippetOption. + VisitSnippetOption(ctx *SnippetOptionContext) interface{} + + // Visit a parse tree produced by MDLParser#pageParameterList. + VisitPageParameterList(ctx *PageParameterListContext) interface{} + + // Visit a parse tree produced by MDLParser#pageParameter. + VisitPageParameter(ctx *PageParameterContext) interface{} + + // Visit a parse tree produced by MDLParser#snippetParameterList. + VisitSnippetParameterList(ctx *SnippetParameterListContext) interface{} + + // Visit a parse tree produced by MDLParser#snippetParameter. + VisitSnippetParameter(ctx *SnippetParameterContext) interface{} + + // Visit a parse tree produced by MDLParser#variableDeclarationList. + VisitVariableDeclarationList(ctx *VariableDeclarationListContext) interface{} + + // Visit a parse tree produced by MDLParser#variableDeclaration. + VisitVariableDeclaration(ctx *VariableDeclarationContext) interface{} + + // Visit a parse tree produced by MDLParser#sortColumn. + VisitSortColumn(ctx *SortColumnContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathConstraint. + VisitXpathConstraint(ctx *XpathConstraintContext) interface{} + + // Visit a parse tree produced by MDLParser#andOrXpath. + VisitAndOrXpath(ctx *AndOrXpathContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathExpr. + VisitXpathExpr(ctx *XpathExprContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathAndExpr. + VisitXpathAndExpr(ctx *XpathAndExprContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathNotExpr. + VisitXpathNotExpr(ctx *XpathNotExprContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathComparisonExpr. + VisitXpathComparisonExpr(ctx *XpathComparisonExprContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathValueExpr. + VisitXpathValueExpr(ctx *XpathValueExprContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathPath. + VisitXpathPath(ctx *XpathPathContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathStep. + VisitXpathStep(ctx *XpathStepContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathStepValue. + VisitXpathStepValue(ctx *XpathStepValueContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathQualifiedName. + VisitXpathQualifiedName(ctx *XpathQualifiedNameContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathWord. + VisitXpathWord(ctx *XpathWordContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathFunctionCall. + VisitXpathFunctionCall(ctx *XpathFunctionCallContext) interface{} + + // Visit a parse tree produced by MDLParser#xpathFunctionName. + VisitXpathFunctionName(ctx *XpathFunctionNameContext) interface{} + + // Visit a parse tree produced by MDLParser#pageHeaderV3. + VisitPageHeaderV3(ctx *PageHeaderV3Context) interface{} + + // Visit a parse tree produced by MDLParser#pageHeaderPropertyV3. + VisitPageHeaderPropertyV3(ctx *PageHeaderPropertyV3Context) interface{} + + // Visit a parse tree produced by MDLParser#snippetHeaderV3. + VisitSnippetHeaderV3(ctx *SnippetHeaderV3Context) interface{} + + // Visit a parse tree produced by MDLParser#snippetHeaderPropertyV3. + VisitSnippetHeaderPropertyV3(ctx *SnippetHeaderPropertyV3Context) interface{} + + // Visit a parse tree produced by MDLParser#pageBodyV3. + VisitPageBodyV3(ctx *PageBodyV3Context) interface{} + + // Visit a parse tree produced by MDLParser#useFragmentRef. + VisitUseFragmentRef(ctx *UseFragmentRefContext) interface{} + + // Visit a parse tree produced by MDLParser#widgetV3. + VisitWidgetV3(ctx *WidgetV3Context) interface{} + + // Visit a parse tree produced by MDLParser#widgetTypeV3. + VisitWidgetTypeV3(ctx *WidgetTypeV3Context) interface{} + + // Visit a parse tree produced by MDLParser#widgetPropertiesV3. + VisitWidgetPropertiesV3(ctx *WidgetPropertiesV3Context) interface{} + + // Visit a parse tree produced by MDLParser#widgetPropertyV3. + VisitWidgetPropertyV3(ctx *WidgetPropertyV3Context) interface{} + + // Visit a parse tree produced by MDLParser#filterTypeValue. + VisitFilterTypeValue(ctx *FilterTypeValueContext) interface{} + + // Visit a parse tree produced by MDLParser#attributeListV3. + VisitAttributeListV3(ctx *AttributeListV3Context) interface{} + + // Visit a parse tree produced by MDLParser#dataSourceExprV3. + VisitDataSourceExprV3(ctx *DataSourceExprV3Context) interface{} + + // Visit a parse tree produced by MDLParser#actionExprV3. + VisitActionExprV3(ctx *ActionExprV3Context) interface{} + + // Visit a parse tree produced by MDLParser#microflowArgsV3. + VisitMicroflowArgsV3(ctx *MicroflowArgsV3Context) interface{} + + // Visit a parse tree produced by MDLParser#microflowArgV3. + VisitMicroflowArgV3(ctx *MicroflowArgV3Context) interface{} + + // Visit a parse tree produced by MDLParser#attributePathV3. + VisitAttributePathV3(ctx *AttributePathV3Context) interface{} + + // Visit a parse tree produced by MDLParser#stringExprV3. + VisitStringExprV3(ctx *StringExprV3Context) interface{} + + // Visit a parse tree produced by MDLParser#paramListV3. + VisitParamListV3(ctx *ParamListV3Context) interface{} + + // Visit a parse tree produced by MDLParser#paramAssignmentV3. + VisitParamAssignmentV3(ctx *ParamAssignmentV3Context) interface{} + + // Visit a parse tree produced by MDLParser#renderModeV3. + VisitRenderModeV3(ctx *RenderModeV3Context) interface{} + + // Visit a parse tree produced by MDLParser#buttonStyleV3. + VisitButtonStyleV3(ctx *ButtonStyleV3Context) interface{} + + // Visit a parse tree produced by MDLParser#desktopWidthV3. + VisitDesktopWidthV3(ctx *DesktopWidthV3Context) interface{} + + // Visit a parse tree produced by MDLParser#selectionModeV3. + VisitSelectionModeV3(ctx *SelectionModeV3Context) interface{} + + // Visit a parse tree produced by MDLParser#propertyValueV3. + VisitPropertyValueV3(ctx *PropertyValueV3Context) interface{} + + // Visit a parse tree produced by MDLParser#designPropertyListV3. + VisitDesignPropertyListV3(ctx *DesignPropertyListV3Context) interface{} + + // Visit a parse tree produced by MDLParser#designPropertyEntryV3. + VisitDesignPropertyEntryV3(ctx *DesignPropertyEntryV3Context) interface{} + + // Visit a parse tree produced by MDLParser#widgetBodyV3. + VisitWidgetBodyV3(ctx *WidgetBodyV3Context) interface{} + + // Visit a parse tree produced by MDLParser#createNotebookStatement. + VisitCreateNotebookStatement(ctx *CreateNotebookStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#notebookOptions. + VisitNotebookOptions(ctx *NotebookOptionsContext) interface{} + + // Visit a parse tree produced by MDLParser#notebookOption. + VisitNotebookOption(ctx *NotebookOptionContext) interface{} + + // Visit a parse tree produced by MDLParser#notebookPage. + VisitNotebookPage(ctx *NotebookPageContext) interface{} + + // Visit a parse tree produced by MDLParser#createDatabaseConnectionStatement. + VisitCreateDatabaseConnectionStatement(ctx *CreateDatabaseConnectionStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#databaseConnectionOption. + VisitDatabaseConnectionOption(ctx *DatabaseConnectionOptionContext) interface{} + + // Visit a parse tree produced by MDLParser#databaseQuery. + VisitDatabaseQuery(ctx *DatabaseQueryContext) interface{} + + // Visit a parse tree produced by MDLParser#databaseQueryMapping. + VisitDatabaseQueryMapping(ctx *DatabaseQueryMappingContext) interface{} + + // Visit a parse tree produced by MDLParser#createConstantStatement. + VisitCreateConstantStatement(ctx *CreateConstantStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#constantOptions. + VisitConstantOptions(ctx *ConstantOptionsContext) interface{} + + // Visit a parse tree produced by MDLParser#constantOption. + VisitConstantOption(ctx *ConstantOptionContext) interface{} + + // Visit a parse tree produced by MDLParser#createConfigurationStatement. + VisitCreateConfigurationStatement(ctx *CreateConfigurationStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createRestClientStatement. + VisitCreateRestClientStatement(ctx *CreateRestClientStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#restClientBaseUrl. + VisitRestClientBaseUrl(ctx *RestClientBaseUrlContext) interface{} + + // Visit a parse tree produced by MDLParser#restClientAuthentication. + VisitRestClientAuthentication(ctx *RestClientAuthenticationContext) interface{} + + // Visit a parse tree produced by MDLParser#restAuthValue. + VisitRestAuthValue(ctx *RestAuthValueContext) interface{} + + // Visit a parse tree produced by MDLParser#restOperationDef. + VisitRestOperationDef(ctx *RestOperationDefContext) interface{} + + // Visit a parse tree produced by MDLParser#restHttpMethod. + VisitRestHttpMethod(ctx *RestHttpMethodContext) interface{} + + // Visit a parse tree produced by MDLParser#restOperationClause. + VisitRestOperationClause(ctx *RestOperationClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#restHeaderValue. + VisitRestHeaderValue(ctx *RestHeaderValueContext) interface{} + + // Visit a parse tree produced by MDLParser#restResponseSpec. + VisitRestResponseSpec(ctx *RestResponseSpecContext) interface{} + + // Visit a parse tree produced by MDLParser#createIndexStatement. + VisitCreateIndexStatement(ctx *CreateIndexStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createODataClientStatement. + VisitCreateODataClientStatement(ctx *CreateODataClientStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createODataServiceStatement. + VisitCreateODataServiceStatement(ctx *CreateODataServiceStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#odataPropertyValue. + VisitOdataPropertyValue(ctx *OdataPropertyValueContext) interface{} + + // Visit a parse tree produced by MDLParser#odataPropertyAssignment. + VisitOdataPropertyAssignment(ctx *OdataPropertyAssignmentContext) interface{} + + // Visit a parse tree produced by MDLParser#odataAlterAssignment. + VisitOdataAlterAssignment(ctx *OdataAlterAssignmentContext) interface{} + + // Visit a parse tree produced by MDLParser#odataAuthenticationClause. + VisitOdataAuthenticationClause(ctx *OdataAuthenticationClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#odataAuthType. + VisitOdataAuthType(ctx *OdataAuthTypeContext) interface{} + + // Visit a parse tree produced by MDLParser#publishEntityBlock. + VisitPublishEntityBlock(ctx *PublishEntityBlockContext) interface{} + + // Visit a parse tree produced by MDLParser#exposeClause. + VisitExposeClause(ctx *ExposeClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#exposeMember. + VisitExposeMember(ctx *ExposeMemberContext) interface{} + + // Visit a parse tree produced by MDLParser#exposeMemberOptions. + VisitExposeMemberOptions(ctx *ExposeMemberOptionsContext) interface{} + + // Visit a parse tree produced by MDLParser#createExternalEntityStatement. + VisitCreateExternalEntityStatement(ctx *CreateExternalEntityStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#createNavigationStatement. + VisitCreateNavigationStatement(ctx *CreateNavigationStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#odataHeadersClause. + VisitOdataHeadersClause(ctx *OdataHeadersClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#odataHeaderEntry. + VisitOdataHeaderEntry(ctx *OdataHeaderEntryContext) interface{} + + // Visit a parse tree produced by MDLParser#createBusinessEventServiceStatement. + VisitCreateBusinessEventServiceStatement(ctx *CreateBusinessEventServiceStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#businessEventMessageDef. + VisitBusinessEventMessageDef(ctx *BusinessEventMessageDefContext) interface{} + + // Visit a parse tree produced by MDLParser#businessEventAttrDef. + VisitBusinessEventAttrDef(ctx *BusinessEventAttrDefContext) interface{} + + // Visit a parse tree produced by MDLParser#createWorkflowStatement. + VisitCreateWorkflowStatement(ctx *CreateWorkflowStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowBody. + VisitWorkflowBody(ctx *WorkflowBodyContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowActivityStmt. + VisitWorkflowActivityStmt(ctx *WorkflowActivityStmtContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowUserTaskStmt. + VisitWorkflowUserTaskStmt(ctx *WorkflowUserTaskStmtContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowBoundaryEventClause. + VisitWorkflowBoundaryEventClause(ctx *WorkflowBoundaryEventClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowUserTaskOutcome. + VisitWorkflowUserTaskOutcome(ctx *WorkflowUserTaskOutcomeContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowCallMicroflowStmt. + VisitWorkflowCallMicroflowStmt(ctx *WorkflowCallMicroflowStmtContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowParameterMapping. + VisitWorkflowParameterMapping(ctx *WorkflowParameterMappingContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowCallWorkflowStmt. + VisitWorkflowCallWorkflowStmt(ctx *WorkflowCallWorkflowStmtContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowDecisionStmt. + VisitWorkflowDecisionStmt(ctx *WorkflowDecisionStmtContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowConditionOutcome. + VisitWorkflowConditionOutcome(ctx *WorkflowConditionOutcomeContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowParallelSplitStmt. + VisitWorkflowParallelSplitStmt(ctx *WorkflowParallelSplitStmtContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowParallelPath. + VisitWorkflowParallelPath(ctx *WorkflowParallelPathContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowJumpToStmt. + VisitWorkflowJumpToStmt(ctx *WorkflowJumpToStmtContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowWaitForTimerStmt. + VisitWorkflowWaitForTimerStmt(ctx *WorkflowWaitForTimerStmtContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowWaitForNotificationStmt. + VisitWorkflowWaitForNotificationStmt(ctx *WorkflowWaitForNotificationStmtContext) interface{} + + // Visit a parse tree produced by MDLParser#workflowAnnotationStmt. + VisitWorkflowAnnotationStmt(ctx *WorkflowAnnotationStmtContext) interface{} + + // Visit a parse tree produced by MDLParser#alterSettingsClause. + VisitAlterSettingsClause(ctx *AlterSettingsClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#settingsSection. + VisitSettingsSection(ctx *SettingsSectionContext) interface{} + + // Visit a parse tree produced by MDLParser#settingsAssignment. + VisitSettingsAssignment(ctx *SettingsAssignmentContext) interface{} + + // Visit a parse tree produced by MDLParser#settingsValue. + VisitSettingsValue(ctx *SettingsValueContext) interface{} + + // Visit a parse tree produced by MDLParser#dqlStatement. + VisitDqlStatement(ctx *DqlStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#showStatement. + VisitShowStatement(ctx *ShowStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#showWidgetsFilter. + VisitShowWidgetsFilter(ctx *ShowWidgetsFilterContext) interface{} + + // Visit a parse tree produced by MDLParser#widgetTypeKeyword. + VisitWidgetTypeKeyword(ctx *WidgetTypeKeywordContext) interface{} + + // Visit a parse tree produced by MDLParser#widgetCondition. + VisitWidgetCondition(ctx *WidgetConditionContext) interface{} + + // Visit a parse tree produced by MDLParser#widgetPropertyAssignment. + VisitWidgetPropertyAssignment(ctx *WidgetPropertyAssignmentContext) interface{} + + // Visit a parse tree produced by MDLParser#widgetPropertyValue. + VisitWidgetPropertyValue(ctx *WidgetPropertyValueContext) interface{} + + // Visit a parse tree produced by MDLParser#describeStatement. + VisitDescribeStatement(ctx *DescribeStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#catalogSelectQuery. + VisitCatalogSelectQuery(ctx *CatalogSelectQueryContext) interface{} + + // Visit a parse tree produced by MDLParser#catalogJoinClause. + VisitCatalogJoinClause(ctx *CatalogJoinClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#catalogTableName. + VisitCatalogTableName(ctx *CatalogTableNameContext) interface{} + + // Visit a parse tree produced by MDLParser#oqlQuery. + VisitOqlQuery(ctx *OqlQueryContext) interface{} + + // Visit a parse tree produced by MDLParser#oqlQueryTerm. + VisitOqlQueryTerm(ctx *OqlQueryTermContext) interface{} + + // Visit a parse tree produced by MDLParser#selectClause. + VisitSelectClause(ctx *SelectClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#selectList. + VisitSelectList(ctx *SelectListContext) interface{} + + // Visit a parse tree produced by MDLParser#selectItem. + VisitSelectItem(ctx *SelectItemContext) interface{} + + // Visit a parse tree produced by MDLParser#selectAlias. + VisitSelectAlias(ctx *SelectAliasContext) interface{} + + // Visit a parse tree produced by MDLParser#fromClause. + VisitFromClause(ctx *FromClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#tableReference. + VisitTableReference(ctx *TableReferenceContext) interface{} + + // Visit a parse tree produced by MDLParser#joinClause. + VisitJoinClause(ctx *JoinClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#associationPath. + VisitAssociationPath(ctx *AssociationPathContext) interface{} + + // Visit a parse tree produced by MDLParser#joinType. + VisitJoinType(ctx *JoinTypeContext) interface{} + + // Visit a parse tree produced by MDLParser#whereClause. + VisitWhereClause(ctx *WhereClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#groupByClause. + VisitGroupByClause(ctx *GroupByClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#havingClause. + VisitHavingClause(ctx *HavingClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#orderByClause. + VisitOrderByClause(ctx *OrderByClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#orderByList. + VisitOrderByList(ctx *OrderByListContext) interface{} + + // Visit a parse tree produced by MDLParser#orderByItem. + VisitOrderByItem(ctx *OrderByItemContext) interface{} + + // Visit a parse tree produced by MDLParser#groupByList. + VisitGroupByList(ctx *GroupByListContext) interface{} + + // Visit a parse tree produced by MDLParser#limitOffsetClause. + VisitLimitOffsetClause(ctx *LimitOffsetClauseContext) interface{} + + // Visit a parse tree produced by MDLParser#utilityStatement. + VisitUtilityStatement(ctx *UtilityStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#searchStatement. + VisitSearchStatement(ctx *SearchStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#connectStatement. + VisitConnectStatement(ctx *ConnectStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#disconnectStatement. + VisitDisconnectStatement(ctx *DisconnectStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#updateStatement. + VisitUpdateStatement(ctx *UpdateStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#checkStatement. + VisitCheckStatement(ctx *CheckStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#buildStatement. + VisitBuildStatement(ctx *BuildStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#executeScriptStatement. + VisitExecuteScriptStatement(ctx *ExecuteScriptStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#executeRuntimeStatement. + VisitExecuteRuntimeStatement(ctx *ExecuteRuntimeStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#lintStatement. + VisitLintStatement(ctx *LintStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#lintTarget. + VisitLintTarget(ctx *LintTargetContext) interface{} + + // Visit a parse tree produced by MDLParser#lintFormat. + VisitLintFormat(ctx *LintFormatContext) interface{} + + // Visit a parse tree produced by MDLParser#useSessionStatement. + VisitUseSessionStatement(ctx *UseSessionStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#sessionIdList. + VisitSessionIdList(ctx *SessionIdListContext) interface{} + + // Visit a parse tree produced by MDLParser#sessionId. + VisitSessionId(ctx *SessionIdContext) interface{} + + // Visit a parse tree produced by MDLParser#introspectApiStatement. + VisitIntrospectApiStatement(ctx *IntrospectApiStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#debugStatement. + VisitDebugStatement(ctx *DebugStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#sqlConnect. + VisitSqlConnect(ctx *SqlConnectContext) interface{} + + // Visit a parse tree produced by MDLParser#sqlDisconnect. + VisitSqlDisconnect(ctx *SqlDisconnectContext) interface{} + + // Visit a parse tree produced by MDLParser#sqlConnections. + VisitSqlConnections(ctx *SqlConnectionsContext) interface{} + + // Visit a parse tree produced by MDLParser#sqlShowTables. + VisitSqlShowTables(ctx *SqlShowTablesContext) interface{} + + // Visit a parse tree produced by MDLParser#sqlDescribeTable. + VisitSqlDescribeTable(ctx *SqlDescribeTableContext) interface{} + + // Visit a parse tree produced by MDLParser#sqlGenerateConnector. + VisitSqlGenerateConnector(ctx *SqlGenerateConnectorContext) interface{} + + // Visit a parse tree produced by MDLParser#sqlQuery. + VisitSqlQuery(ctx *SqlQueryContext) interface{} + + // Visit a parse tree produced by MDLParser#sqlPassthrough. + VisitSqlPassthrough(ctx *SqlPassthroughContext) interface{} + + // Visit a parse tree produced by MDLParser#importFromQuery. + VisitImportFromQuery(ctx *ImportFromQueryContext) interface{} + + // Visit a parse tree produced by MDLParser#importMapping. + VisitImportMapping(ctx *ImportMappingContext) interface{} + + // Visit a parse tree produced by MDLParser#linkLookup. + VisitLinkLookup(ctx *LinkLookupContext) interface{} + + // Visit a parse tree produced by MDLParser#linkDirect. + VisitLinkDirect(ctx *LinkDirectContext) interface{} + + // Visit a parse tree produced by MDLParser#helpStatement. + VisitHelpStatement(ctx *HelpStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#defineFragmentStatement. + VisitDefineFragmentStatement(ctx *DefineFragmentStatementContext) interface{} + + // Visit a parse tree produced by MDLParser#expression. + VisitExpression(ctx *ExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#orExpression. + VisitOrExpression(ctx *OrExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#andExpression. + VisitAndExpression(ctx *AndExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#notExpression. + VisitNotExpression(ctx *NotExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#comparisonExpression. + VisitComparisonExpression(ctx *ComparisonExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#comparisonOperator. + VisitComparisonOperator(ctx *ComparisonOperatorContext) interface{} + + // Visit a parse tree produced by MDLParser#additiveExpression. + VisitAdditiveExpression(ctx *AdditiveExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#multiplicativeExpression. + VisitMultiplicativeExpression(ctx *MultiplicativeExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#unaryExpression. + VisitUnaryExpression(ctx *UnaryExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#primaryExpression. + VisitPrimaryExpression(ctx *PrimaryExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#caseExpression. + VisitCaseExpression(ctx *CaseExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#ifThenElseExpression. + VisitIfThenElseExpression(ctx *IfThenElseExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#castExpression. + VisitCastExpression(ctx *CastExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#castDataType. + VisitCastDataType(ctx *CastDataTypeContext) interface{} + + // Visit a parse tree produced by MDLParser#aggregateFunction. + VisitAggregateFunction(ctx *AggregateFunctionContext) interface{} + + // Visit a parse tree produced by MDLParser#functionCall. + VisitFunctionCall(ctx *FunctionCallContext) interface{} + + // Visit a parse tree produced by MDLParser#functionName. + VisitFunctionName(ctx *FunctionNameContext) interface{} + + // Visit a parse tree produced by MDLParser#argumentList. + VisitArgumentList(ctx *ArgumentListContext) interface{} + + // Visit a parse tree produced by MDLParser#atomicExpression. + VisitAtomicExpression(ctx *AtomicExpressionContext) interface{} + + // Visit a parse tree produced by MDLParser#expressionList. + VisitExpressionList(ctx *ExpressionListContext) interface{} + + // Visit a parse tree produced by MDLParser#qualifiedName. + VisitQualifiedName(ctx *QualifiedNameContext) interface{} + + // Visit a parse tree produced by MDLParser#identifierOrKeyword. + VisitIdentifierOrKeyword(ctx *IdentifierOrKeywordContext) interface{} + + // Visit a parse tree produced by MDLParser#literal. + VisitLiteral(ctx *LiteralContext) interface{} + + // Visit a parse tree produced by MDLParser#arrayLiteral. + VisitArrayLiteral(ctx *ArrayLiteralContext) interface{} + + // Visit a parse tree produced by MDLParser#booleanLiteral. + VisitBooleanLiteral(ctx *BooleanLiteralContext) interface{} + + // Visit a parse tree produced by MDLParser#docComment. + VisitDocComment(ctx *DocCommentContext) interface{} + + // Visit a parse tree produced by MDLParser#annotation. + VisitAnnotation(ctx *AnnotationContext) interface{} + + // Visit a parse tree produced by MDLParser#annotationName. + VisitAnnotationName(ctx *AnnotationNameContext) interface{} + + // Visit a parse tree produced by MDLParser#annotationParams. + VisitAnnotationParams(ctx *AnnotationParamsContext) interface{} + + // Visit a parse tree produced by MDLParser#annotationParam. + VisitAnnotationParam(ctx *AnnotationParamContext) interface{} + + // Visit a parse tree produced by MDLParser#annotationValue. + VisitAnnotationValue(ctx *AnnotationValueContext) interface{} + + // Visit a parse tree produced by MDLParser#commonNameKeyword. + VisitCommonNameKeyword(ctx *CommonNameKeywordContext) interface{} + + // Visit a parse tree produced by MDLParser#keyword. + VisitKeyword(ctx *KeywordContext) interface{} +} diff --git a/sdk/mpr/reader.go b/sdk/mpr/reader.go index 8836603..cccd4c9 100644 --- a/sdk/mpr/reader.go +++ b/sdk/mpr/reader.go @@ -178,6 +178,24 @@ func (r *Reader) ContentsDir() string { return r.contentsDir } +// ListAllUnitIDs returns all unit UUIDs from the Unit table. +func (r *Reader) ListAllUnitIDs() ([]string, error) { + rows, err := r.db.Query("SELECT UnitID FROM Unit") + if err != nil { + return nil, err + } + defer rows.Close() + var ids []string + for rows.Next() { + var unitID []byte + if err := rows.Scan(&unitID); err != nil { + continue + } + ids = append(ids, BlobToUUID(unitID)) + } + return ids, nil +} + // ProjectVersion returns the Mendix project version information. func (r *Reader) ProjectVersion() *version.ProjectVersion { return r.projectVersion From 4db259b54d88843ea8410ec28d2f3b7baf89a850 Mon Sep 17 00:00:00 2001 From: engalar Date: Wed, 1 Apr 2026 10:25:15 +0800 Subject: [PATCH 3/3] feat: pluggable widget engine v2 PLUGGABLEWIDGET syntax with explicit properties, auto datasource, auto child slots, TextTemplate attribute binding, and keyword properties. Core changes: - PLUGGABLEWIDGET 'widget.id' name (key: value) syntax - CUSTOMWIDGET/TABCONTAINER/TABPAGE grammar tokens - Auto datasource ordering (step 4.1, before child slots) - Auto child slot matching by container name - Object list auto-populate with Required filter - TextTemplate {AttrName} parameter binding - Widget lifecycle CLI (widget init/docs) - DESCRIBE PLUGGABLEWIDGET output for generic widgets - 20 new widget templates (mendix-11.6) Co-Authored-By: Claude Opus 4.6 (1M context) --- cmd/mxcli/cmd_widget.go | 292 +- ...2026-03-30-widget-docs-and-customwidget.md | 129 + ...026-03-30-widget-docs-generation-design.md | 59 + mdl/executor/cmd_alter_page.go | 71 + mdl/executor/cmd_pages_builder_input.go | 23 +- mdl/executor/cmd_pages_builder_v3.go | 15 +- mdl/executor/cmd_pages_builder_v3_layout.go | 2 +- mdl/executor/cmd_pages_describe.go | 11 + mdl/executor/cmd_pages_describe_output.go | 12 + mdl/executor/cmd_pages_describe_parse.go | 6 + mdl/executor/cmd_pages_describe_pluggable.go | 79 + mdl/executor/widget_engine.go | 577 +++- mdl/executor/widget_registry.go | 6 + mdl/executor/widget_registry_test.go | 6 +- mdl/visitor/visitor_alter_page.go | 5 + mdl/visitor/visitor_page_v3.go | 17 +- sdk/mpr/roundtrip_test.go | 212 ++ sdk/mpr/writer_widgets.go | 12 +- sdk/mpr/writer_widgets_layout.go | 70 +- sdk/pages/pages_widgets_advanced.go | 1 + sdk/widgets/augment.go | 105 +- .../definitions/barcodescanner.def.json | 9 + sdk/widgets/loader.go | 107 +- sdk/widgets/mpk/mpk.go | 8 +- .../mendix-11.6/accessibilityhelper.json | 575 ++++ .../templates/mendix-11.6/accordion.json | 1643 +++++++++ .../templates/mendix-11.6/areachart.json | 2955 ++++++++++++++++ sdk/widgets/templates/mendix-11.6/badge.json | 499 +++ .../templates/mendix-11.6/badgebutton.json | 507 +++ .../templates/mendix-11.6/barcodescanner.json | 1166 +++++++ .../mendix-11.6/datagrid-number-filter.json | 18 +- .../templates/mendix-11.6/dropdownsort.json | 639 ++++ .../templates/mendix-11.6/fieldset.json | 377 ++ .../templates/mendix-11.6/gallery.json | 162 +- .../templates/mendix-11.6/htmlelement.json | 2723 +++++++++++++++ .../mendix-11.6/languageselector.json | 614 ++++ sdk/widgets/templates/mendix-11.6/maps.json | 3031 +++++++++++++++++ .../templates/mendix-11.6/popupmenu.json | 1349 ++++++++ .../templates/mendix-11.6/progressbar.json | 1441 ++++++++ .../templates/mendix-11.6/progresscircle.json | 1441 ++++++++ .../templates/mendix-11.6/rangeslider.json | 2645 ++++++++++++++ .../mendix-11.6/selectionhelper.json | 497 +++ sdk/widgets/templates/mendix-11.6/slider.json | 2372 +++++++++++++ .../templates/mendix-11.6/starrating.json | 754 ++++ sdk/widgets/templates/mendix-11.6/switch.json | 308 ++ .../templates/mendix-11.6/timeline.json | 1704 +++++++++ .../templates/mendix-11.6/tooltip.json | 729 ++++ .../templates/mendix-11.6/treenode.json | 1301 +++++++ .../templates/mendix-11.6/videoplayer.json | 1577 +++++++++ 49 files changed, 32587 insertions(+), 274 deletions(-) create mode 100644 docs/plans/2026-03-30-widget-docs-and-customwidget.md create mode 100644 docs/plans/2026-03-30-widget-docs-generation-design.md create mode 100644 sdk/mpr/roundtrip_test.go create mode 100644 sdk/widgets/definitions/barcodescanner.def.json create mode 100644 sdk/widgets/templates/mendix-11.6/accessibilityhelper.json create mode 100644 sdk/widgets/templates/mendix-11.6/accordion.json create mode 100644 sdk/widgets/templates/mendix-11.6/areachart.json create mode 100644 sdk/widgets/templates/mendix-11.6/badge.json create mode 100644 sdk/widgets/templates/mendix-11.6/badgebutton.json create mode 100644 sdk/widgets/templates/mendix-11.6/barcodescanner.json create mode 100644 sdk/widgets/templates/mendix-11.6/dropdownsort.json create mode 100644 sdk/widgets/templates/mendix-11.6/fieldset.json create mode 100644 sdk/widgets/templates/mendix-11.6/htmlelement.json create mode 100644 sdk/widgets/templates/mendix-11.6/languageselector.json create mode 100644 sdk/widgets/templates/mendix-11.6/maps.json create mode 100644 sdk/widgets/templates/mendix-11.6/popupmenu.json create mode 100644 sdk/widgets/templates/mendix-11.6/progressbar.json create mode 100644 sdk/widgets/templates/mendix-11.6/progresscircle.json create mode 100644 sdk/widgets/templates/mendix-11.6/rangeslider.json create mode 100644 sdk/widgets/templates/mendix-11.6/selectionhelper.json create mode 100644 sdk/widgets/templates/mendix-11.6/slider.json create mode 100644 sdk/widgets/templates/mendix-11.6/starrating.json create mode 100644 sdk/widgets/templates/mendix-11.6/switch.json create mode 100644 sdk/widgets/templates/mendix-11.6/timeline.json create mode 100644 sdk/widgets/templates/mendix-11.6/tooltip.json create mode 100644 sdk/widgets/templates/mendix-11.6/treenode.json create mode 100644 sdk/widgets/templates/mendix-11.6/videoplayer.json diff --git a/cmd/mxcli/cmd_widget.go b/cmd/mxcli/cmd_widget.go index 4ec508a..01bc0d6 100644 --- a/cmd/mxcli/cmd_widget.go +++ b/cmd/mxcli/cmd_widget.go @@ -44,14 +44,39 @@ var widgetListCmd = &cobra.Command{ RunE: runWidgetList, } +var widgetInitCmd = &cobra.Command{ + Use: "init", + Short: "Extract definitions for all project widgets", + Long: `Scan the project's widgets/ directory, extract .def.json for each .mpk, +and generate skill documentation in .claude/skills/widgets/. + +This enables CREATE PAGE to use any project widget via the pluggable engine.`, + RunE: runWidgetInit, +} + +var widgetDocsCmd = &cobra.Command{ + Use: "docs", + Short: "Generate widget skill documentation", + Long: `Generate per-widget markdown documentation in .claude/skills/widgets/ from .mpk definitions.`, + RunE: runWidgetDocs, +} + func init() { widgetExtractCmd.Flags().String("mpk", "", "Path to .mpk widget package file") widgetExtractCmd.Flags().StringP("output", "o", "", "Output directory (default: .mxcli/widgets/)") widgetExtractCmd.Flags().String("mdl-name", "", "Override the MDL keyword name (default: derived from widget name)") widgetExtractCmd.MarkFlagRequired("mpk") + widgetInitCmd.Flags().StringP("project", "p", "", "Path to .mpr project file") + widgetInitCmd.MarkFlagRequired("project") + + widgetDocsCmd.Flags().StringP("project", "p", "", "Path to .mpr project file") + widgetDocsCmd.MarkFlagRequired("project") + widgetCmd.AddCommand(widgetExtractCmd) widgetCmd.AddCommand(widgetListCmd) + widgetCmd.AddCommand(widgetInitCmd) + widgetCmd.AddCommand(widgetDocsCmd) rootCmd.AddCommand(widgetCmd) } @@ -115,76 +140,219 @@ func deriveMDLName(widgetID string) string { return strings.ToUpper(name) } -// generateDefJSON creates a WidgetDefinition from an mpk.WidgetDefinition. +// generateDefJSON creates a skeleton WidgetDefinition from an mpk.WidgetDefinition. +// Properties are handled explicitly from MDL via the engine's explicit property pass, +// so no propertyMappings or childSlots are generated here. func generateDefJSON(mpkDef *mpk.WidgetDefinition, mdlName string) *executor.WidgetDefinition { - def := &executor.WidgetDefinition{ + widgetKind := "custom" + if mpkDef.IsPluggable { + widgetKind = "pluggable" + } + return &executor.WidgetDefinition{ WidgetID: mpkDef.ID, MDLName: mdlName, + WidgetKind: widgetKind, TemplateFile: strings.ToLower(mdlName) + ".json", DefaultEditable: "Always", } +} + +func runWidgetInit(cmd *cobra.Command, args []string) error { + projectPath, _ := cmd.Flags().GetString("project") + projectDir := filepath.Dir(projectPath) + widgetsDir := filepath.Join(projectDir, "widgets") + outputDir := filepath.Join(projectDir, ".mxcli", "widgets") + + // Load built-in registry to skip widgets that already have hand-crafted definitions + builtinRegistry, _ := executor.NewWidgetRegistry() + + // Scan widgets/ for .mpk files + matches, err := filepath.Glob(filepath.Join(widgetsDir, "*.mpk")) + if err != nil { + return fmt.Errorf("failed to scan widgets directory: %w", err) + } + if len(matches) == 0 { + fmt.Println("No .mpk files found in widgets/ directory.") + return nil + } + + if err := os.MkdirAll(outputDir, 0755); err != nil { + return fmt.Errorf("failed to create output directory: %w", err) + } + + var extracted, skipped int + for _, mpkPath := range matches { + mpkDef, err := mpk.ParseMPK(mpkPath) + if err != nil { + log.Printf("warning: skipping %s: %v", filepath.Base(mpkPath), err) + skipped++ + continue + } + + mdlName := deriveMDLName(mpkDef.ID) + filename := strings.ToLower(mdlName) + ".def.json" + outPath := filepath.Join(outputDir, filename) - // Build property mappings by inferring operations from XML types - var mappings []executor.PropertyMapping - var childSlots []executor.ChildSlotMapping - - for _, prop := range mpkDef.Properties { - normalizedType := mpk.NormalizeType(prop.Type) - - switch normalizedType { - case "attribute": - mappings = append(mappings, executor.PropertyMapping{ - PropertyKey: prop.Key, - Source: "Attribute", - Operation: "attribute", - }) - case "association": - mappings = append(mappings, executor.PropertyMapping{ - PropertyKey: prop.Key, - Source: "Association", - Operation: "association", - }) - case "datasource": - mappings = append(mappings, executor.PropertyMapping{ - PropertyKey: prop.Key, - Source: "DataSource", - Operation: "datasource", - }) - case "widgets": - // Widgets properties become child slots - containerName := strings.ToUpper(prop.Key) - if containerName == "CONTENT" { - containerName = "TEMPLATE" + // Skip widgets that have hand-crafted built-in definitions (e.g., COMBOBOX, GALLERY) + if builtinRegistry != nil { + if _, ok := builtinRegistry.GetByWidgetID(mpkDef.ID); ok { + skipped++ + continue } - childSlots = append(childSlots, executor.ChildSlotMapping{ - PropertyKey: prop.Key, - MDLContainer: containerName, - Operation: "widgets", - }) - case "selection": - mappings = append(mappings, executor.PropertyMapping{ - PropertyKey: prop.Key, - Source: "Selection", - Operation: "selection", - Default: prop.DefaultValue, - }) - case "boolean", "string", "enumeration", "integer", "decimal": - mapping := executor.PropertyMapping{ - PropertyKey: prop.Key, - Operation: "primitive", + } + + // Skip if already exists on disk + if _, err := os.Stat(outPath); err == nil { + skipped++ + continue + } + + defJSON := generateDefJSON(mpkDef, mdlName) + data, err := json.MarshalIndent(defJSON, "", " ") + if err != nil { + log.Printf("warning: skipping %s: %v", mpkDef.ID, err) + skipped++ + continue + } + data = append(data, '\n') + + if err := os.WriteFile(outPath, data, 0644); err != nil { + return fmt.Errorf("failed to write %s: %w", outPath, err) + } + kind := "custom" + if mpkDef.IsPluggable { + kind = "pluggable" + } + fmt.Printf(" %-12s %-20s %s\n", kind, mdlName, mpkDef.ID) + extracted++ + } + + fmt.Printf("\nExtracted: %d, Skipped: %d (existing or unparseable)\n", extracted, skipped) + + // Also generate docs + fmt.Println("\nGenerating widget documentation...") + return generateWidgetDocs(projectDir) +} + +func runWidgetDocs(cmd *cobra.Command, args []string) error { + projectPath, _ := cmd.Flags().GetString("project") + projectDir := filepath.Dir(projectPath) + return generateWidgetDocs(projectDir) +} + +func generateWidgetDocs(projectDir string) error { + widgetsDir := filepath.Join(projectDir, "widgets") + docsDir := filepath.Join(projectDir, ".claude", "skills", "widgets") + // Also try .ai-context + if _, err := os.Stat(filepath.Join(projectDir, ".ai-context")); err == nil { + docsDir = filepath.Join(projectDir, ".ai-context", "skills", "widgets") + } + + if err := os.MkdirAll(docsDir, 0755); err != nil { + return fmt.Errorf("failed to create docs directory: %w", err) + } + + matches, err := filepath.Glob(filepath.Join(widgetsDir, "*.mpk")) + if err != nil { + return fmt.Errorf("failed to scan widgets directory: %w", err) + } + + var generated int + var indexEntries []string + + for _, mpkPath := range matches { + mpkDef, err := mpk.ParseMPK(mpkPath) + if err != nil { + continue + } + + mdlName := deriveMDLName(mpkDef.ID) + filename := strings.ToLower(mdlName) + ".md" + outPath := filepath.Join(docsDir, filename) + + doc := generateWidgetDoc(mpkDef, mdlName) + + if err := os.WriteFile(outPath, []byte(doc), 0644); err != nil { + log.Printf("warning: failed to write %s: %v", filename, err) + continue + } + + kind := "CUSTOMWIDGET" + if mpkDef.IsPluggable { + kind = "PLUGGABLEWIDGET" + } + indexEntries = append(indexEntries, fmt.Sprintf("| `%s` | %s | `%s` | %s | %d |", + kind, mdlName, mpkDef.ID, mpkDef.Name, len(mpkDef.Properties))) + generated++ + } + + // Write index + var indexBuf strings.Builder + indexBuf.WriteString("# Available Widgets\n\n") + indexBuf.WriteString("Generated by `mxcli widget docs`. See individual files for property details.\n\n") + indexBuf.WriteString("| Prefix | Name | Widget ID | Display Name | Props |\n") + indexBuf.WriteString("|--------|------|-----------|--------------|-------|\n") + for _, entry := range indexEntries { + indexBuf.WriteString(entry) + indexBuf.WriteString("\n") + } + indexBuf.WriteString("\n**Usage in MDL:**\n```sql\n") + indexBuf.WriteString("-- React pluggable widgets\n") + indexBuf.WriteString("PLUGGABLEWIDGET 'com.mendix.widget.custom.badge.Badge' badge1\n\n") + indexBuf.WriteString("-- Legacy custom widgets\n") + indexBuf.WriteString("CUSTOMWIDGET 'com.company.OldWidget' legacy1\n") + indexBuf.WriteString("```\n") + + indexPath := filepath.Join(docsDir, "_index.md") + if err := os.WriteFile(indexPath, []byte(indexBuf.String()), 0644); err != nil { + return fmt.Errorf("failed to write index: %w", err) + } + + fmt.Printf("Generated %d widget docs in %s\n", generated, docsDir) + return nil +} + +func generateWidgetDoc(mpkDef *mpk.WidgetDefinition, mdlName string) string { + var buf strings.Builder + + prefix := "CUSTOMWIDGET" + if mpkDef.IsPluggable { + prefix = "PLUGGABLEWIDGET" + } + + buf.WriteString(fmt.Sprintf("# %s\n\n", mpkDef.Name)) + buf.WriteString(fmt.Sprintf("- **Widget ID:** `%s`\n", mpkDef.ID)) + buf.WriteString(fmt.Sprintf("- **Type:** %s\n", prefix)) + buf.WriteString(fmt.Sprintf("- **Version:** %s\n\n", mpkDef.Version)) + + buf.WriteString("## MDL Example\n\n```sql\n") + buf.WriteString(fmt.Sprintf("%s '%s' widget1\n", prefix, mpkDef.ID)) + buf.WriteString("```\n\n") + + if len(mpkDef.Properties) > 0 { + buf.WriteString("## Properties\n\n") + buf.WriteString("| Property | Type | Required | Default | Description |\n") + buf.WriteString("|----------|------|----------|---------|-------------|\n") + + for _, prop := range mpkDef.Properties { + if prop.IsSystem { + continue + } + req := "" + if prop.Required { + req = "Yes" } - if prop.DefaultValue != "" { - mapping.Value = prop.DefaultValue + desc := prop.Description + if len(desc) > 80 { + desc = desc[:77] + "..." } - mappings = append(mappings, mapping) - // Skip action, expression, textTemplate, object, icon, image, file — too complex for auto-mapping + buf.WriteString(fmt.Sprintf("| `%s` | %s | %s | %s | %s |\n", + prop.Key, prop.Type, req, prop.DefaultValue, desc)) } } - def.PropertyMappings = mappings - def.ChildSlots = childSlots - - return def + buf.WriteString("\n") + return buf.String() } func runWidgetList(cmd *cobra.Command, args []string) error { @@ -207,10 +375,14 @@ func runWidgetList(cmd *cobra.Command, args []string) error { return nil } - fmt.Printf("%-20s %-50s %s\n", "MDL Name", "Widget ID", "Template") - fmt.Printf("%-20s %-50s %s\n", strings.Repeat("-", 20), strings.Repeat("-", 50), strings.Repeat("-", 20)) + fmt.Printf("%-16s %-20s %-50s %s\n", "Kind", "MDL Name", "Widget ID", "Template") + fmt.Printf("%-16s %-20s %-50s %s\n", strings.Repeat("-", 16), strings.Repeat("-", 20), strings.Repeat("-", 50), strings.Repeat("-", 20)) for _, def := range defs { - fmt.Printf("%-20s %-50s %s\n", def.MDLName, def.WidgetID, def.TemplateFile) + kind := def.WidgetKind + if kind == "" { + kind = "pluggable" + } + fmt.Printf("%-16s %-20s %-50s %s\n", kind, def.MDLName, def.WidgetID, def.TemplateFile) } fmt.Printf("\nTotal: %d definitions\n", len(defs)) diff --git a/docs/plans/2026-03-30-widget-docs-and-customwidget.md b/docs/plans/2026-03-30-widget-docs-and-customwidget.md new file mode 100644 index 0000000..db0f4b4 --- /dev/null +++ b/docs/plans/2026-03-30-widget-docs-and-customwidget.md @@ -0,0 +1,129 @@ +# Widget Docs Generation & CUSTOMWIDGET Support + +> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. + +**Goal:** Enable creating any pluggable widget via `CUSTOMWIDGET` syntax and auto-generate per-widget documentation from MPK definitions. + +**Architecture:** Add CUSTOMWIDGET case to executor using existing GetTemplateFullBSON. Add `mxcli generate widget-docs` command that parses MPK XMLs and generates markdown to `.claude/skills/widgets/`. Update create-page.md skill. + +**Tech Stack:** Go, ANTLR4, MPK/XML parsing + +--- + +### Task 1: CUSTOMWIDGET executor support + +**Files:** +- Modify: `mdl/executor/cmd_pages_builder_v3.go` (buildWidgetV3 switch) +- Modify: `mdl/executor/cmd_pages_builder_v3_pluggable.go` (add buildCustomWidgetV3) + +**Step 1: Add case to buildWidgetV3** + +In the switch statement around line 250, add before the default case: + +```go +case "CUSTOMWIDGET": + return pb.buildCustomWidgetV3(w) +``` + +**Step 2: Add buildCustomWidgetV3 function** + +In `cmd_pages_builder_v3_pluggable.go`, add function that: +1. Gets `WidgetType` from `w.Properties["WidgetType"]` (string, the widget ID) +2. Calls `widgets.GetTemplateFullBSON(widgetType, mpr.GenerateID, pb.reader.Path())` +3. Creates `*pages.CustomWidget` with RawType + RawObject (same pattern as buildTextFilterV3) +4. Returns widget + +The WidgetType property comes through the existing generic `IDENTIFIER COLON propertyValueV3` grammar rule — no grammar change needed since `WidgetType` is a valid IDENTIFIER. + +**Step 3: Build and test** + +```bash +# Build +GOPROXY=https://goproxy.cn,direct HTTPS_PROXY=http://127.0.0.1:29758 go build -o bin/mxcli.exe ./cmd/mxcli + +# Test +echo "CREATE PAGE WidgetDemo.TestCW (Title: 'CW Test', Layout: Atlas_Core.Atlas_Default) { CUSTOMWIDGET badge1 (WidgetType: 'com.mendix.widget.custom.badge.Badge') }" | bin/mxcli.exe exec - -p D:/gh/poc-carrefour/ORION-AI-Production-Order.mpr +``` + +**Step 4: Commit** + +--- + +### Task 2: Widget docs generation command + +**Files:** +- Create: `cmd/mxcli/cmd_generate_widget_docs.go` + +**Step 1: Add `mxcli generate widget-docs` command** + +Cobra command that: +1. Scans `widgets/*.mpk` in project dir → `mpk.ParseMPK()` for each +2. For each widget, generates markdown with: + - Widget ID, name, version + - Property table (from PropertyDef: key, type, required, default, category, description) + - MDL example: `CUSTOMWIDGET name1 (WidgetType: 'widget.id')` + - `` markers +3. Writes to `.claude/skills/widgets/.md` (or `.ai-context/skills/widgets/`) +4. Generates `_index.md` with summary table + +**Step 2: Wire into `mxcli init`** + +In `cmd/mxcli/init.go`, call widget docs generation after skill sync. + +**Step 3: Build and test** + +```bash +bin/mxcli.exe generate widget-docs -p D:/gh/poc-carrefour/ORION-AI-Production-Order.mpr +ls D:/gh/poc-carrefour/.ai-context/skills/widgets/ +``` + +**Step 4: Commit** + +--- + +### Task 3: Update create-page.md skill + +**Files:** +- Modify: `.claude/skills/mendix/create-page.md` + +**Step 1: Add QUOTED_IDENTIFIER section** + +After "Key Syntax Elements" table, add: + +```markdown +### Reserved Words as Attribute Names + +Use double quotes to escape reserved keywords used as attribute names: +\`\`\`sql +COMBOBOX cbStatus (Label: 'Status', Attribute: "Status") +TEXTBOX txtDate (Label: 'Date', Attribute: "Date") +\`\`\` +``` + +**Step 2: Add CUSTOMWIDGET section** + +```markdown +### CUSTOMWIDGET — Any Pluggable Widget + +Create any pluggable widget by its widget ID: +\`\`\`sql +CUSTOMWIDGET widgetName (WidgetType: 'com.mendix.widget.custom.badge.Badge') +\`\`\` + +For available widgets and their properties, see `.claude/skills/widgets/` (generated by `mxcli generate widget-docs`). +``` + +**Step 3: Commit** + +--- + +### Task 4: Rebuild Showcase page with CUSTOMWIDGET + +**Files:** +- Script: `/d/tmp/recreate-showcase.mdl` + +After Tasks 1-3 are complete, rebuild Showcase page using CUSTOMWIDGET for all 24 pluggable widgets. Verify with `mx check`. + +**Step 1: Drop existing page, create new one with all widgets** +**Step 2: Run `mx check` to verify** +**Step 3: Commit app changes** diff --git a/docs/plans/2026-03-30-widget-docs-generation-design.md b/docs/plans/2026-03-30-widget-docs-generation-design.md new file mode 100644 index 0000000..3de9e23 --- /dev/null +++ b/docs/plans/2026-03-30-widget-docs-generation-design.md @@ -0,0 +1,59 @@ +# Widget Documentation Generation Design + +## Problem + +Pluggable widgets have BSON templates for creation, but Claude (and users) have no reference for what properties each widget supports, which are required, and how to use them in MDL. The `create-page.md` skill only documents built-in widgets. + +## Solution + +Auto-generate per-widget markdown documentation from MPK XML definitions + embedded templates, placed in `.claude/skills/widgets/` for Claude to reference during page creation. + +## Architecture + +### Output Structure + +``` +project/.claude/skills/widgets/ +├── badge.md # Auto-generated + manual supplements +├── accordion.md +├── switch.md +├── ... +└── _index.md # Summary index of all available widgets +``` + +### Generation Pipeline + +1. **Source 1: MPK XML** (`widgets/*.mpk`) — property names, types, required flags, categories, descriptions, enumeration values +2. **Source 2: Embedded templates** (`sdk/widgets/templates/`) — default values, widget ID mapping +3. **Merge** — combine into structured markdown per widget +4. **Preserve manual content** — `` / `` markers; content outside markers is preserved on regeneration + +### Generated Content Per Widget + +- Widget ID and display name +- Property table: name, type, required, default, description +- Basic MDL example using CUSTOMWIDGET syntax +- Entity context requirement flag + +### Integration Points + +- **`mxcli init`** — generates widget docs alongside skill sync +- **`create-page.md` skill** — references `.claude/skills/widgets/` for pluggable widget docs +- **New command**: `mxcli generate widget-docs` — standalone regeneration + +### Prerequisites + +- Generic CUSTOMWIDGET executor support (WidgetType property + template loading) +- Grammar: `WIDGETTYPE COLON STRING_LITERAL` in `widgetPropertyV3` + +## Files to Modify + +| File | Change | +|------|--------| +| `mdl/grammar/MDLParser.g4` | Add `WIDGETTYPE COLON STRING_LITERAL` to `widgetPropertyV3` | +| `mdl/visitor/visitor_page_v3.go` | Store WidgetType in widget properties | +| `mdl/executor/cmd_pages_builder_v3.go` | Add `case "CUSTOMWIDGET":` using `GetTemplateFullBSON` | +| `cmd/mxcli/cmd_generate.go` (new) | Widget docs generation command | +| `cmd/mxcli/init.go` | Call widget docs generation during init | +| `.claude/skills/mendix/create-page.md` | Add QUOTED_IDENTIFIER docs + reference to widget docs | +| `reference/mendix-repl/templates/.claude/skills/` | Include widget docs template | diff --git a/mdl/executor/cmd_alter_page.go b/mdl/executor/cmd_alter_page.go index eefbe8e..88fdc7d 100644 --- a/mdl/executor/cmd_alter_page.go +++ b/mdl/executor/cmd_alter_page.go @@ -632,6 +632,8 @@ func setRawWidgetProperty(widget bson.D, propName string, value interface{}) err return nil case "Attribute": return setWidgetAttributeRef(widget, value) + case "DataSource": + return setWidgetDataSource(widget, value) default: // Try as pluggable widget property (quoted string property name) return setPluggableWidgetProperty(widget, propName, value) @@ -685,6 +687,75 @@ func setWidgetAttributeRef(widget bson.D, value interface{}) error { return fmt.Errorf("widget does not have an AttributeRef property; Attribute can only be SET on input widgets (TextBox, TextArea, DatePicker, etc.)") } +// setWidgetDataSource sets the DataSource on a DataView or list widget. +func setWidgetDataSource(widget bson.D, value interface{}) error { + ds, ok := value.(*ast.DataSourceV3) + if !ok { + return fmt.Errorf("DataSource value must be a datasource expression") + } + + var serialized interface{} + + switch ds.Type { + case "selection": + // SELECTION widgetName → Forms$ListenTargetSource + serialized = bson.D{ + {Key: "$ID", Value: mpr.IDToBsonBinary(mpr.GenerateID())}, + {Key: "$Type", Value: "Forms$ListenTargetSource"}, + {Key: "ListenTarget", Value: ds.Reference}, + } + case "database": + // DATABASE Entity → Forms$DataViewSource with entity ref + var entityRef interface{} + if ds.Reference != "" { + entityRef = bson.D{ + {Key: "$ID", Value: mpr.IDToBsonBinary(mpr.GenerateID())}, + {Key: "$Type", Value: "DomainModels$DirectEntityRef"}, + {Key: "Entity", Value: ds.Reference}, + } + } + serialized = bson.D{ + {Key: "$ID", Value: mpr.IDToBsonBinary(mpr.GenerateID())}, + {Key: "$Type", Value: "Forms$DataViewSource"}, + {Key: "EntityRef", Value: entityRef}, + {Key: "ForceFullObjects", Value: false}, + {Key: "SourceVariable", Value: nil}, + } + case "microflow": + serialized = bson.D{ + {Key: "$ID", Value: mpr.IDToBsonBinary(mpr.GenerateID())}, + {Key: "$Type", Value: "Forms$MicroflowSource"}, + {Key: "MicroflowSettings", Value: bson.D{ + {Key: "$ID", Value: mpr.IDToBsonBinary(mpr.GenerateID())}, + {Key: "$Type", Value: "Forms$MicroflowSettings"}, + {Key: "Asynchronous", Value: false}, + {Key: "ConfirmationInfo", Value: nil}, + {Key: "FormValidations", Value: "All"}, + {Key: "Microflow", Value: ds.Reference}, + {Key: "ParameterMappings", Value: bson.A{int32(3)}}, + {Key: "ProgressBar", Value: "None"}, + {Key: "ProgressMessage", Value: nil}, + }}, + } + case "nanoflow": + serialized = bson.D{ + {Key: "$ID", Value: mpr.IDToBsonBinary(mpr.GenerateID())}, + {Key: "$Type", Value: "Forms$NanoflowSource"}, + {Key: "NanoflowSettings", Value: bson.D{ + {Key: "$ID", Value: mpr.IDToBsonBinary(mpr.GenerateID())}, + {Key: "$Type", Value: "Forms$NanoflowSettings"}, + {Key: "Nanoflow", Value: ds.Reference}, + {Key: "ParameterMappings", Value: bson.A{int32(3)}}, + }}, + } + default: + return fmt.Errorf("unsupported DataSource type for ALTER PAGE SET: %s", ds.Type) + } + + dSet(widget, "DataSource", serialized) + return nil +} + // setWidgetLabel sets the Label.Caption text on input widgets. func setWidgetLabel(widget bson.D, value interface{}) error { label := dGetDoc(widget, "Label") diff --git a/mdl/executor/cmd_pages_builder_input.go b/mdl/executor/cmd_pages_builder_input.go index 3d65027..be49c22 100644 --- a/mdl/executor/cmd_pages_builder_input.go +++ b/mdl/executor/cmd_pages_builder_input.go @@ -4,6 +4,7 @@ package executor import ( "fmt" + "log" "strings" "github.com/mendixlabs/mxcli/model" @@ -97,10 +98,12 @@ func updateWidgetPropertyValue(obj bson.D, propTypeIDs map[string]pages.Property // updatePropertyInArray finds a property by TypePointer and updates its value. func updatePropertyInArray(arr bson.A, propertyTypeID string, updateFn func(bson.D) bson.D) bson.A { result := make(bson.A, len(arr)) + matched := false for i, item := range arr { if prop, ok := item.(bson.D); ok { if matchesTypePointer(prop, propertyTypeID) { result[i] = updatePropertyValue(prop, updateFn) + matched = true } else { result[i] = item } @@ -108,21 +111,32 @@ func updatePropertyInArray(arr bson.A, propertyTypeID string, updateFn func(bson result[i] = item } } + if !matched { + log.Printf("WARNING: updatePropertyInArray: no match for TypePointer %s in %d properties", propertyTypeID, len(arr)-1) + } return result } // matchesTypePointer checks if a WidgetProperty has the given TypePointer. func matchesTypePointer(prop bson.D, propertyTypeID string) bool { + // Normalize: strip dashes for comparison (BlobToUUID returns dashed format, + // but propertyTypeIDs from template loader use undashed 32-char hex). + normalizedTarget := strings.ReplaceAll(propertyTypeID, "-", "") for _, elem := range prop { if elem.Key == "TypePointer" { // Handle both primitive.Binary (from MPR) and []byte (from JSON templates) switch v := elem.Value.(type) { case primitive.Binary: - propID := mpr.BlobToUUID(v.Data) - return propID == propertyTypeID + propID := strings.ReplaceAll(mpr.BlobToUUID(v.Data), "-", "") + return propID == normalizedTarget case []byte: - propID := mpr.BlobToUUID(v) - return propID == propertyTypeID + propID := strings.ReplaceAll(mpr.BlobToUUID(v), "-", "") + if propID == normalizedTarget { + return true + } + // Also try raw hex encoding (no GUID swap) for templates + rawHex := fmt.Sprintf("%x", v) + return rawHex == normalizedTarget } } } @@ -233,6 +247,7 @@ func convertPropertyTypeIDs(src map[string]widgets.PropertyTypeIDEntry) map[stri ValueTypeID: v.ValueTypeID, DefaultValue: v.DefaultValue, ValueType: v.ValueType, + Required: v.Required, ObjectTypeID: v.ObjectTypeID, } // Convert nested property IDs if present diff --git a/mdl/executor/cmd_pages_builder_v3.go b/mdl/executor/cmd_pages_builder_v3.go index 43c1f89..e25a939 100644 --- a/mdl/executor/cmd_pages_builder_v3.go +++ b/mdl/executor/cmd_pages_builder_v3.go @@ -334,17 +334,26 @@ func (pb *pageBuilder) buildWidgetV3(w *ast.WidgetV3) (pages.Widget, error) { // Fallback to static image if pluggable engine unavailable widget, err = pb.buildStaticImageV3(w) default: - // Try pluggable widget engine for registered widget types pb.initPluggableEngine() if pb.widgetRegistry != nil { + // Try by MDL name first if def, ok := pb.widgetRegistry.Get(strings.ToUpper(w.Type)); ok { return pb.pluggableEngine.Build(def, w) } + // PLUGGABLEWIDGET/CUSTOMWIDGET 'widget.id' name — lookup by widget ID + if w.Type == "PLUGGABLEWIDGET" || w.Type == "CUSTOMWIDGET" { + if widgetType, ok := w.Properties["WidgetType"].(string); ok { + if def, ok := pb.widgetRegistry.GetByWidgetID(widgetType); ok { + return pb.pluggableEngine.Build(def, w) + } + return nil, fmt.Errorf("no definition for widget %s (run 'mxcli widget init -p app.mpr')", widgetType) + } + } } if pb.pluggableEngineErr != nil { - return nil, fmt.Errorf("unsupported V3 widget type: %s (%v)", w.Type, pb.pluggableEngineErr) + return nil, fmt.Errorf("unsupported widget type: %s (%v)", w.Type, pb.pluggableEngineErr) } - return nil, fmt.Errorf("unsupported V3 widget type: %s", w.Type) + return nil, fmt.Errorf("unsupported widget type: %s", w.Type) } if err != nil { diff --git a/mdl/executor/cmd_pages_builder_v3_layout.go b/mdl/executor/cmd_pages_builder_v3_layout.go index 3dc31bc..cd26f1b 100644 --- a/mdl/executor/cmd_pages_builder_v3_layout.go +++ b/mdl/executor/cmd_pages_builder_v3_layout.go @@ -221,7 +221,7 @@ func (pb *pageBuilder) buildTabContainerV3(w *ast.WidgetV3) (*pages.TabContainer BaseWidget: pages.BaseWidget{ BaseElement: model.BaseElement{ ID: model.ID(mpr.GenerateID()), - TypeName: "Forms$TabContainer", + TypeName: "Forms$TabControl", }, Name: w.Name, }, diff --git a/mdl/executor/cmd_pages_describe.go b/mdl/executor/cmd_pages_describe.go index 22f8b9f..8d7ad21 100644 --- a/mdl/executor/cmd_pages_describe.go +++ b/mdl/executor/cmd_pages_describe.go @@ -531,6 +531,10 @@ type rawWidget struct { EditableIf string // Expression from ConditionalEditabilitySettings // Design properties from Appearance DesignProperties []rawDesignProp + // Explicit widget properties (for generic PLUGGABLEWIDGET output) + ExplicitProperties []rawExplicitProp + // Full widget ID (e.g. "com.mendix.widget.custom.switch.Switch") + WidgetID string // Pluggable Image widget properties ImageUrl string // Image URL (from textTemplate) AlternativeText string // Alt text (from textTemplate) @@ -544,6 +548,13 @@ type rawWidget struct { OnClickType string // "action", "enlarge" } +// rawExplicitProp represents a non-default property extracted from a CustomWidget. +type rawExplicitProp struct { + Key string + Value string // attribute short name or primitive value + IsRef bool // true if this is an attribute reference, false for primitive +} + // rawDesignProp represents a parsed design property from BSON. type rawDesignProp struct { Key string // Design property key, e.g., "Spacing top" diff --git a/mdl/executor/cmd_pages_describe_output.go b/mdl/executor/cmd_pages_describe_output.go index 2ce2a82..16e1949 100644 --- a/mdl/executor/cmd_pages_describe_output.go +++ b/mdl/executor/cmd_pages_describe_output.go @@ -500,6 +500,18 @@ func (e *Executor) outputWidgetMDLV3(w rawWidget, indent int) { props = appendConditionalProps(props, w) props = appendAppearanceProps(props, w) formatWidgetProps(e.output, prefix, header, props, "\n") + } else if len(w.ExplicitProperties) > 0 && w.WidgetID != "" { + // Generic pluggable widget with explicit properties + header := fmt.Sprintf("PLUGGABLEWIDGET '%s' %s", w.WidgetID, w.Name) + props := []string{} + if w.Caption != "" { + props = append(props, fmt.Sprintf("Label: %s", mdlQuote(w.Caption))) + } + for _, ep := range w.ExplicitProperties { + props = append(props, fmt.Sprintf("%s: %s", ep.Key, ep.Value)) + } + props = appendAppearanceProps(props, w) + formatWidgetProps(e.output, prefix, header, props, "\n") } else { header := fmt.Sprintf("%s %s", widgetType, w.Name) props := []string{} diff --git a/mdl/executor/cmd_pages_describe_parse.go b/mdl/executor/cmd_pages_describe_parse.go index 7f98132..c44ba04 100644 --- a/mdl/executor/cmd_pages_describe_parse.go +++ b/mdl/executor/cmd_pages_describe_parse.go @@ -158,6 +158,7 @@ func (e *Executor) parseRawWidget(w map[string]any) []rawWidget { widget.Caption = e.extractLabelText(w) widget.Content = e.extractCustomWidgetAttribute(w) widget.RenderMode = e.extractCustomWidgetType(w) // Store widget type in RenderMode + widget.WidgetID = e.extractCustomWidgetID(w) // For ComboBox, extract datasource and association attribute for association mode. // In association mode the Attribute binding is stored as EntityRef (not AttributeRef), // so we must use extractCustomWidgetPropertyAssociation instead of the generic scan. @@ -199,6 +200,11 @@ func (e *Executor) parseRawWidget(w map[string]any) []rawWidget { if widget.RenderMode == "IMAGE" { e.extractImageProperties(w, &widget) } + // For generic pluggable widgets (not handled by dedicated extractors above), + // extract all non-default properties as explicit key-value pairs. + if !isKnownCustomWidgetType(widget.RenderMode) { + widget.ExplicitProperties = e.extractExplicitProperties(w) + } return []rawWidget{widget} case "Forms$Label", "Pages$Label": diff --git a/mdl/executor/cmd_pages_describe_pluggable.go b/mdl/executor/cmd_pages_describe_pluggable.go index 3b57ce2..0565169 100644 --- a/mdl/executor/cmd_pages_describe_pluggable.go +++ b/mdl/executor/cmd_pages_describe_pluggable.go @@ -999,6 +999,85 @@ func (e *Executor) extractCustomWidgetPropertyAttributes(w map[string]any, prope return nil } +// extractCustomWidgetID extracts the full widget ID from a CustomWidget (e.g. "com.mendix.widget.custom.switch.Switch"). +func (e *Executor) extractCustomWidgetID(w map[string]any) string { + typeObj, ok := w["Type"].(map[string]any) + if !ok { + return "" + } + if widgetID, ok := typeObj["WidgetId"].(string); ok { + return widgetID + } + return "" +} + +// isKnownCustomWidgetType returns true for widget types that have dedicated DESCRIBE extractors. +func isKnownCustomWidgetType(widgetType string) bool { + switch widgetType { + case "COMBOBOX", "DATAGRID2", "GALLERY", "IMAGE", + "TEXTFILTER", "NUMBERFILTER", "DROPDOWNFILTER", "DATEFILTER": + return true + } + return false +} + +// extractExplicitProperties extracts non-default property values from a CustomWidget BSON. +// Returns attribute references and primitive values for properties that differ from defaults. +func (e *Executor) extractExplicitProperties(w map[string]any) []rawExplicitProp { + obj, ok := w["Object"].(map[string]any) + if !ok { + return nil + } + + propTypeKeyMap := buildPropertyTypeKeyMap(w, false) + if len(propTypeKeyMap) == 0 { + return nil + } + + var result []rawExplicitProp + props := getBsonArrayElements(obj["Properties"]) + for _, prop := range props { + propMap, ok := prop.(map[string]any) + if !ok { + continue + } + typePointerID := extractBinaryID(propMap["TypePointer"]) + propKey := propTypeKeyMap[typePointerID] + if propKey == "" { + continue + } + value, ok := propMap["Value"].(map[string]any) + if !ok { + continue + } + + // Check for AttributeRef (attribute binding) + if attrRef, ok := value["AttributeRef"].(map[string]any); ok && attrRef != nil { + if attr := extractString(attrRef["Attribute"]); attr != "" { + result = append(result, rawExplicitProp{ + Key: propKey, + Value: shortAttributeName(attr), + IsRef: true, + }) + continue + } + } + + // Check for non-default PrimitiveValue + if pv := extractString(value["PrimitiveValue"]); pv != "" { + // Skip common defaults + if pv == "true" || pv == "false" { + continue + } + result = append(result, rawExplicitProp{ + Key: propKey, + Value: pv, + }) + } + } + return result +} + // extractImageProperties extracts properties from a pluggable Image CustomWidget. func (e *Executor) extractImageProperties(w map[string]any, widget *rawWidget) { widget.ImageType = e.extractCustomWidgetPropertyString(w, "datasource") diff --git a/mdl/executor/widget_engine.go b/mdl/executor/widget_engine.go index 5ddd149..d5917b6 100644 --- a/mdl/executor/widget_engine.go +++ b/mdl/executor/widget_engine.go @@ -3,8 +3,10 @@ package executor import ( + "encoding/hex" "fmt" "log" + "regexp" "strings" "github.com/mendixlabs/mxcli/mdl/ast" @@ -27,6 +29,7 @@ const defaultSlotContainer = "TEMPLATE" type WidgetDefinition struct { WidgetID string `json:"widgetId"` MDLName string `json:"mdlName"` + WidgetKind string `json:"widgetKind,omitempty"` // "pluggable" (React) or "custom" (legacy Dojo) TemplateFile string `json:"templateFile"` DefaultEditable string `json:"defaultEditable"` PropertyMappings []PropertyMapping `json:"propertyMappings,omitempty"` @@ -170,6 +173,24 @@ func opSelection(obj bson.D, propTypeIDs map[string]pages.PropertyTypeIDEntry, p }) } +// opExpression sets an expression string on a widget property. +func opExpression(obj bson.D, propTypeIDs map[string]pages.PropertyTypeIDEntry, propertyKey string, ctx *BuildContext) bson.D { + if ctx.PrimitiveVal == "" { + return obj + } + return updateWidgetPropertyValue(obj, propTypeIDs, propertyKey, func(val bson.D) bson.D { + result := make(bson.D, 0, len(val)) + for _, elem := range val { + if elem.Key == "Expression" { + result = append(result, bson.E{Key: "Expression", Value: ctx.PrimitiveVal}) + } else { + result = append(result, elem) + } + } + return result + }) +} + // opDatasource sets a data source on a widget property. func opDatasource(obj bson.D, propTypeIDs map[string]pages.PropertyTypeIDEntry, propertyKey string, ctx *BuildContext) bson.D { if ctx.DataSource == nil { @@ -185,9 +206,19 @@ func opWidgets(obj bson.D, propTypeIDs map[string]pages.PropertyTypeIDEntry, pro if len(ctx.ChildWidgets) == 0 { return obj } - return updateWidgetPropertyValue(obj, propTypeIDs, propertyKey, func(val bson.D) bson.D { - return setChildWidgets(val, ctx.ChildWidgets) + result := updateWidgetPropertyValue(obj, propTypeIDs, propertyKey, func(val bson.D) bson.D { + updated := setChildWidgets(val, ctx.ChildWidgets) + // Verify Widgets was actually set + for _, e := range updated { + if e.Key == "Widgets" { + if arr, ok := e.Value.(bson.A); ok { + log.Printf("opWidgets %s: Widgets array has %d items", propertyKey, len(arr)) + } + } + } + return updated }) + return result } // setChildWidgets replaces the Widgets field in a WidgetValue with the given child widgets. @@ -350,11 +381,241 @@ func (e *PluggableWidgetEngine) Build(def *WidgetDefinition, w *ast.WidgetV3) (* updatedObject = op(updatedObject, propertyTypeIDs, mapping.PropertyKey, ctx) } - // 4. Apply child slots + // 4. Apply child slots (.def.json) if err := e.applyChildSlots(slots, w, propertyTypeIDs, &updatedObject); err != nil { return nil, err } + // 4.1 Auto datasource: map AST DataSource to first DataSource-type property. + // Must run BEFORE child slots and explicit properties so entityContext is set. + dsHandledByMapping := false + for _, m := range mappings { + if m.Source == "DataSource" { + dsHandledByMapping = true + break + } + } + if !dsHandledByMapping { + if ds := w.GetDataSource(); ds != nil { + for propKey, entry := range propertyTypeIDs { + if entry.ValueType == "DataSource" { + dataSource, entityName, err := e.pageBuilder.buildDataSourceV3(ds) + if err != nil { + return nil, fmt.Errorf("auto datasource for %s: %w", propKey, err) + } + ctx := &BuildContext{DataSource: dataSource, EntityName: entityName} + updatedObject = opDatasource(updatedObject, propertyTypeIDs, propKey, ctx) + if entityName != "" { + e.pageBuilder.entityContext = entityName + } + break + } + } + } + } + + // 4.3 Auto child slots: match AST children to Widgets-type template properties. + // Two matching strategies: + // 1. Named match: CONTAINER trigger { ... } → property "trigger" (by child name) + // 2. Default slot: direct children not matching any named slot → first Widgets property + // This allows pluggable widget child containers without requiring .def.json ChildSlot entries. + handledSlotKeys := make(map[string]bool) + for _, s := range slots { + handledSlotKeys[s.PropertyKey] = true + } + // Collect Widgets-type property keys + var widgetsPropKeys []string + for propKey, entry := range propertyTypeIDs { + if entry.ValueType == "Widgets" && !handledSlotKeys[propKey] { + widgetsPropKeys = append(widgetsPropKeys, propKey) + } + } + // Debug: log Widgets-type properties and children for matching + if len(w.Children) > 0 && len(widgetsPropKeys) > 0 { + var childNames []string + for _, c := range w.Children { + childNames = append(childNames, c.Name+"("+c.Type+")") + } + log.Printf("auto-slot %s: widgetProps=%v children=%v", w.Name, widgetsPropKeys, childNames) + } + // Phase 1: Named matching — match children by name against property keys + matchedChildren := make(map[int]bool) // indices of matched children + for _, propKey := range widgetsPropKeys { + upperKey := strings.ToUpper(propKey) + for i, child := range w.Children { + if matchedChildren[i] { + continue + } + if strings.ToUpper(child.Name) == upperKey { + var childBSONs []bson.D + log.Printf("auto-slot match: %s.%s has %d AST children", w.Name, propKey, len(child.Children)) + for _, slotChild := range child.Children { + widgetBSON, err := e.pageBuilder.buildWidgetV3ToBSON(slotChild) + if err != nil { + return nil, err + } + if widgetBSON != nil { + childBSONs = append(childBSONs, widgetBSON) + } + } + log.Printf("auto-slot match: %s.%s built %d BSON widgets", w.Name, propKey, len(childBSONs)) + if len(childBSONs) > 0 { + updatedObject = opWidgets(updatedObject, propertyTypeIDs, propKey, &BuildContext{ChildWidgets: childBSONs}) + handledSlotKeys[propKey] = true + } + matchedChildren[i] = true + break + } + } + } + // Phase 2: Default slot — unmatched direct children go to first unmatched Widgets property. + // Skip children already consumed by .def.json child slots (matched by type). + defSlotContainers := make(map[string]bool) + for _, s := range slots { + defSlotContainers[strings.ToUpper(s.MDLContainer)] = true + } + var defaultWidgetBSONs []bson.D + for i, child := range w.Children { + if matchedChildren[i] { + continue + } + if defSlotContainers[strings.ToUpper(child.Type)] { + continue // already consumed by applyChildSlots + } + widgetBSON, err := e.pageBuilder.buildWidgetV3ToBSON(child) + if err != nil { + return nil, err + } + if widgetBSON != nil { + defaultWidgetBSONs = append(defaultWidgetBSONs, widgetBSON) + } + } + if len(defaultWidgetBSONs) > 0 { + for _, propKey := range widgetsPropKeys { + if !handledSlotKeys[propKey] { + updatedObject = opWidgets(updatedObject, propertyTypeIDs, propKey, &BuildContext{ChildWidgets: defaultWidgetBSONs}) + break + } + } + } + + // 4.6 Apply explicit properties (not covered by .def.json mappings) + mappedKeys := make(map[string]bool) + for _, m := range mappings { + if m.Source != "" { + mappedKeys[m.Source] = true + } + } + for _, s := range slots { + mappedKeys[s.MDLContainer] = true + } + for propName, propVal := range w.Properties { + if mappedKeys[propName] || isBuiltinPropName(propName) { + continue + } + entry, ok := propertyTypeIDs[propName] + if !ok { + continue // not a known widget property key + } + // Convert non-string values (bool, int, float) to string for property setting + var strVal string + switch v := propVal.(type) { + case string: + strVal = v + case bool: + strVal = fmt.Sprintf("%t", v) + case int: + strVal = fmt.Sprintf("%d", v) + case float64: + strVal = fmt.Sprintf("%g", v) + default: + continue + } + ctx := &BuildContext{} + + // Route by ValueType when available + switch entry.ValueType { + case "Expression": + // Expression properties: set Expression field (not PrimitiveValue) + ctx.PrimitiveVal = strVal + updatedObject = opExpression(updatedObject, propertyTypeIDs, propName, ctx) + case "TextTemplate": + // TextTemplate properties: create ClientTemplate with attribute parameter binding. + // Syntax: '{AttributeName} - {OtherAttr}' → text '{1} - {2}' with TemplateParameters. + entityCtx := e.pageBuilder.entityContext + tmplBSON := createClientTemplateBSONWithParams(strVal, entityCtx) + updatedObject = updateWidgetPropertyValue(updatedObject, propertyTypeIDs, propName, func(val bson.D) bson.D { + result := make(bson.D, 0, len(val)) + for _, elem := range val { + if elem.Key == "TextTemplate" { + result = append(result, bson.E{Key: "TextTemplate", Value: tmplBSON}) + } else { + result = append(result, elem) + } + } + return result + }) + case "Attribute": + // Attribute properties: resolve path + if strings.Count(strVal, ".") >= 2 { + ctx.AttributePath = strVal + } else if e.pageBuilder.entityContext != "" { + ctx.AttributePath = e.pageBuilder.resolveAttributePath(strVal) + } + if ctx.AttributePath != "" { + updatedObject = opAttribute(updatedObject, propertyTypeIDs, propName, ctx) + } + default: + // Known non-attribute types: always use primitive + if entry.ValueType != "" && entry.ValueType != "Attribute" { + ctx.PrimitiveVal = strVal + updatedObject = opPrimitive(updatedObject, propertyTypeIDs, propName, ctx) + continue + } + // Legacy routing for properties without ValueType info + if strings.Count(strVal, ".") >= 2 { + ctx.AttributePath = strVal + updatedObject = opAttribute(updatedObject, propertyTypeIDs, propName, ctx) + } else if e.pageBuilder.entityContext != "" && !strings.ContainsAny(strVal, " '\"") { + ctx.AttributePath = e.pageBuilder.resolveAttributePath(strVal) + updatedObject = opAttribute(updatedObject, propertyTypeIDs, propName, ctx) + } else { + ctx.PrimitiveVal = strVal + updatedObject = opPrimitive(updatedObject, propertyTypeIDs, propName, ctx) + } + } + } + + // 4.9 Auto-populate required empty object lists (e.g., Accordion groups, AreaChart series) + updatedObject = ensureRequiredObjectLists(updatedObject, propertyTypeIDs) + + // Debug: verify updatedObject has Widgets content before building + if w.Name == "timelineCustom" { + for _, elem := range updatedObject { + if elem.Key == "Properties" { + if arr, ok := elem.Value.(bson.A); ok { + for _, item := range arr { + if prop, ok := item.(bson.D); ok { + for _, pe := range prop { + if pe.Key == "Value" { + if val, ok := pe.Value.(bson.D); ok { + for _, ve := range val { + if ve.Key == "Widgets" { + if wa, ok := ve.Value.(bson.A); ok && len(wa) > 1 { + log.Printf("BUILD CHECK: timelineCustom has non-empty Widgets: %d items", len(wa)) + } + } + } + } + } + } + } + } + } + } + } + } + // 5. Build CustomWidget widgetID := model.ID(mpr.GenerateID()) cw := &pages.CustomWidget{ @@ -576,3 +837,313 @@ func (e *PluggableWidgetEngine) applyChildSlots(slots []ChildSlotMapping, w *ast return nil } + +// isBuiltinPropName returns true for property names that are handled by +// dedicated MDL keywords (DataSource, Attribute, etc.) rather than by +// the explicit property pass. +func isBuiltinPropName(name string) bool { + switch name { + case "DataSource", "Attribute", "Label", "Caption", "Action", + "Selection", "Class", "Style", "Editable", "Visible", + "WidgetType", "DesignProperties", "Association", "CaptionAttribute", + "Content", "RenderMode", "ContentParams", "CaptionParams", + "ButtonStyle", "DesktopWidth", "DesktopColumns", "TabletColumns", + "PhoneColumns", "PageSize", "Pagination", "PagingPosition", + "ShowPagingButtons", "Attributes", "FilterType", "Width", "Height", + "Tooltip", "Name": + return true + } + return false +} + +// ============================================================================= +// Default Object List Population +// ============================================================================= + +// ensureRequiredObjectLists populates empty Object list properties with one default +// entry. This prevents CE0642 "Property 'X' is required" errors for widget properties +// like Accordion groups, AreaChart series, etc. +func ensureRequiredObjectLists(obj bson.D, propertyTypeIDs map[string]pages.PropertyTypeIDEntry) bson.D { + for propKey, entry := range propertyTypeIDs { + if entry.ObjectTypeID == "" || len(entry.NestedPropertyIDs) == 0 { + continue + } + // Skip non-required object lists that have nested DataSource properties — + // auto-populating these creates entries that trigger widget-level validation errors. + // Required object lists (like AreaChart series) are populated even with nested DataSource + // because the DataSource is conditional (e.g., depends on dataSet enum). + if !entry.Required { + hasNestedDS := false + for _, nested := range entry.NestedPropertyIDs { + if nested.ValueType == "DataSource" { + hasNestedDS = true + break + } + } + if hasNestedDS { + continue + } + } + // Skip if any Required nested property is Attribute (needs entity context) + hasRequiredAttr := false + for _, nested := range entry.NestedPropertyIDs { + if nested.Required && nested.ValueType == "Attribute" { + hasRequiredAttr = true + break + } + } + if hasRequiredAttr { + continue + } + obj = updateWidgetPropertyValue(obj, propertyTypeIDs, propKey, func(val bson.D) bson.D { + for _, elem := range val { + if elem.Key == "Objects" { + if arr, ok := elem.Value.(bson.A); ok && len(arr) <= 1 { + // Empty Objects array — create one default entry + defaultObj := createDefaultWidgetObject(entry.ObjectTypeID, entry.NestedPropertyIDs) + newArr := bson.A{int32(2), defaultObj} + result := make(bson.D, 0, len(val)) + for _, e := range val { + if e.Key == "Objects" { + result = append(result, bson.E{Key: "Objects", Value: newArr}) + } else { + result = append(result, e) + } + } + return result + } + } + } + return val + }) + } + return obj +} + +// createDefaultWidgetObject creates a minimal WidgetObject BSON entry for an object list. +func createDefaultWidgetObject(objectTypeID string, nestedProps map[string]pages.PropertyTypeIDEntry) bson.D { + propsArr := bson.A{int32(2)} // version marker + for _, entry := range nestedProps { + prop := createDefaultWidgetProperty(entry) + propsArr = append(propsArr, prop) + } + return bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "CustomWidgets$WidgetObject"}, + {Key: "TypePointer", Value: hexIDToBlob(objectTypeID)}, + {Key: "Properties", Value: propsArr}, + } +} + +// createDefaultWidgetProperty creates a WidgetProperty with default WidgetValue. +func createDefaultWidgetProperty(entry pages.PropertyTypeIDEntry) bson.D { + return bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "CustomWidgets$WidgetProperty"}, + {Key: "TypePointer", Value: hexIDToBlob(entry.PropertyTypeID)}, + {Key: "Value", Value: createDefaultWidgetValue(entry)}, + } +} + +// createDefaultWidgetValue creates a WidgetValue with standard default fields. +// Sets type-specific defaults: Expression→Expression field, TextTemplate→template, etc. +func createDefaultWidgetValue(entry pages.PropertyTypeIDEntry) bson.D { + primitiveVal := entry.DefaultValue + expressionVal := "" + var textTemplate interface{} // nil by default + + // Route default value to the correct field based on ValueType + switch entry.ValueType { + case "Expression": + expressionVal = primitiveVal + primitiveVal = "" + case "TextTemplate": + // Create a ClientTemplate with a placeholder translation to satisfy CE4899 + text := primitiveVal + if text == "" { + text = " " // non-empty to satisfy "required" translation check + } + textTemplate = createDefaultClientTemplateBSON(text) + case "String": + if primitiveVal == "" { + primitiveVal = " " // non-empty to satisfy required String properties + } + } + + return bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "CustomWidgets$WidgetValue"}, + {Key: "Action", Value: bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "Forms$NoAction"}, + {Key: "DisabledDuringExecution", Value: true}, + }}, + {Key: "AttributeRef", Value: nil}, + {Key: "DataSource", Value: nil}, + {Key: "EntityRef", Value: nil}, + {Key: "Expression", Value: expressionVal}, + {Key: "Form", Value: ""}, + {Key: "Icon", Value: nil}, + {Key: "Image", Value: ""}, + {Key: "Microflow", Value: ""}, + {Key: "Nanoflow", Value: ""}, + {Key: "Objects", Value: bson.A{int32(2)}}, + {Key: "PrimitiveValue", Value: primitiveVal}, + {Key: "Selection", Value: "None"}, + {Key: "SourceVariable", Value: nil}, + {Key: "TextTemplate", Value: textTemplate}, + {Key: "TranslatableValue", Value: nil}, + {Key: "TypePointer", Value: hexIDToBlob(entry.ValueTypeID)}, + {Key: "Widgets", Value: bson.A{int32(2)}}, + {Key: "XPathConstraint", Value: ""}, + } +} + +// createClientTemplateBSONWithParams creates a Forms$ClientTemplate that supports +// attribute parameter binding. Syntax: '{AttrName} - {OtherAttr}' extracts attribute +// names from curly braces, replaces them with {1}, {2}, etc., and generates +// TemplateParameter entries with AttributeRef bindings. +// If no {AttrName} patterns are found, creates a static text template. +func createClientTemplateBSONWithParams(text string, entityContext string) bson.D { + // Extract {AttributeName} patterns and build parameter list + re := regexp.MustCompile(`\{([A-Za-z][A-Za-z0-9_]*)\}`) + matches := re.FindAllStringSubmatchIndex(text, -1) + + if len(matches) == 0 { + // No attribute references — static text + return createDefaultClientTemplateBSON(text) + } + + // Replace {AttrName} with {1}, {2}, etc. and collect attribute names + var attrNames []string + paramText := text + // Process in reverse to preserve indices + for i := len(matches) - 1; i >= 0; i-- { + match := matches[i] + attrName := text[match[2]:match[3]] + // Check if it's a pure number (like {1}) — keep as-is + if _, err := fmt.Sscanf(attrName, "%d", new(int)); err == nil { + continue + } + attrNames = append([]string{attrName}, attrNames...) // prepend + paramText = paramText[:match[0]] + fmt.Sprintf("{%d}", len(attrNames)) + paramText[match[1]:] + } + + // Rebuild paramText with sequential numbering + paramText = text + attrNames = nil + for i := 0; i < len(matches); i++ { + match := matches[i] + attrName := text[match[2]:match[3]] + if _, err := fmt.Sscanf(attrName, "%d", new(int)); err == nil { + continue + } + attrNames = append(attrNames, attrName) + } + paramText = re.ReplaceAllStringFunc(text, func(s string) string { + name := s[1 : len(s)-1] + if _, err := fmt.Sscanf(name, "%d", new(int)); err == nil { + return s // keep numeric {1} as-is + } + for i, an := range attrNames { + if an == name { + return fmt.Sprintf("{%d}", i+1) + } + } + return s + }) + + // Build parameters BSON + params := bson.A{int32(2)} // version marker for non-empty array + for _, attrName := range attrNames { + attrPath := attrName + if entityContext != "" && !strings.Contains(attrName, ".") { + attrPath = entityContext + "." + attrName + } + params = append(params, bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "Forms$ClientTemplateParameter"}, + {Key: "AttributeRef", Value: bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "DomainModels$AttributeRef"}, + {Key: "Attribute", Value: attrPath}, + {Key: "EntityRef", Value: nil}, + }}, + {Key: "Expression", Value: ""}, + {Key: "FormattingInfo", Value: bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "Forms$FormattingInfo"}, + {Key: "CustomDateFormat", Value: ""}, + {Key: "DateFormat", Value: "Date"}, + {Key: "DecimalPrecision", Value: int64(2)}, + {Key: "EnumFormat", Value: "Text"}, + {Key: "GroupDigits", Value: false}, + {Key: "TimeFormat", Value: "HoursMinutes"}, + }}, + {Key: "SourceVariable", Value: nil}, + }) + } + + makeText := func(t string) bson.D { + return bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "Texts$Text"}, + {Key: "Items", Value: bson.A{int32(3), bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "Texts$Translation"}, + {Key: "LanguageCode", Value: "en_US"}, + {Key: "Text", Value: t}, + }}}, + } + } + + return bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "Forms$ClientTemplate"}, + {Key: "Fallback", Value: makeText(paramText)}, + {Key: "Parameters", Value: params}, + {Key: "Template", Value: makeText(paramText)}, + } +} + +// createDefaultClientTemplateBSON creates a Forms$ClientTemplate with an en_US translation. +func createDefaultClientTemplateBSON(text string) bson.D { + makeText := func(t string) bson.D { + return bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "Texts$Text"}, + {Key: "Items", Value: bson.A{int32(3), bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "Texts$Translation"}, + {Key: "LanguageCode", Value: "en_US"}, + {Key: "Text", Value: t}, + }}}, + } + } + return bson.D{ + {Key: "$ID", Value: generateBinaryID()}, + {Key: "$Type", Value: "Forms$ClientTemplate"}, + {Key: "Fallback", Value: makeText(text)}, + {Key: "Parameters", Value: bson.A{int32(2)}}, + {Key: "Template", Value: makeText(text)}, + } +} + +// generateBinaryID creates a new random 16-byte UUID in Microsoft GUID binary format. +func generateBinaryID() []byte { + return hexIDToBlob(mpr.GenerateID()) +} + +// hexIDToBlob converts a hex UUID string to a 16-byte binary blob in Microsoft GUID format. +func hexIDToBlob(hexStr string) []byte { + hexStr = strings.ReplaceAll(hexStr, "-", "") + data, err := hex.DecodeString(hexStr) + if err != nil || len(data) != 16 { + return data + } + // Swap bytes to match Microsoft GUID format (little-endian for first 3 segments) + data[0], data[1], data[2], data[3] = data[3], data[2], data[1], data[0] + data[4], data[5] = data[5], data[4] + data[6], data[7] = data[7], data[6] + return data +} diff --git a/mdl/executor/widget_registry.go b/mdl/executor/widget_registry.go index 9969d10..165e26a 100644 --- a/mdl/executor/widget_registry.go +++ b/mdl/executor/widget_registry.go @@ -157,6 +157,12 @@ func (r *WidgetRegistry) loadDefinitionsFromDir(dir string) error { upperName := strings.ToUpper(def.MDLName) if existing, ok := r.byMDLName[upperName]; ok { + // Skip user skeleton definitions (no mappings/modes) when built-in has mappings + if len(def.PropertyMappings) == 0 && len(def.Modes) == 0 && + (len(existing.PropertyMappings) > 0 || len(existing.Modes) > 0) { + log.Printf("info: skipping user skeleton %q — built-in %s has mappings", entry.Name(), def.MDLName) + continue + } log.Printf("info: user definition %q overrides built-in %s (widgetId: %s → %s)", entry.Name(), def.MDLName, existing.WidgetID, def.WidgetID) } diff --git a/mdl/executor/widget_registry_test.go b/mdl/executor/widget_registry_test.go index 0a62805..c7f0213 100644 --- a/mdl/executor/widget_registry_test.go +++ b/mdl/executor/widget_registry_test.go @@ -20,9 +20,9 @@ func TestRegistryLoadsAllEmbeddedDefinitions(t *testing.T) { t.Fatalf("NewWidgetRegistry() error: %v", err) } - // We expect 3 embedded definitions (combobox, gallery, image) - if got := reg.Count(); got != 3 { - t.Errorf("registry count = %d, want 3", got) + // We expect 4 embedded definitions (combobox, gallery, image) + if got := reg.Count(); got != 4 { + t.Errorf("registry count = %d, want 4", got) } } diff --git a/mdl/visitor/visitor_alter_page.go b/mdl/visitor/visitor_alter_page.go index 94a81d2..61e9f1a 100644 --- a/mdl/visitor/visitor_alter_page.go +++ b/mdl/visitor/visitor_alter_page.go @@ -106,6 +106,11 @@ func (b *Builder) buildAlterPageSetLayout(ctx *parser.AlterPageSetContext) *ast. // buildAlterPageAssignment extracts property name and value from an assignment context. func (b *Builder) buildAlterPageAssignment(ctx *parser.AlterPageAssignmentContext) (string, interface{}) { + // DataSource = dataSourceExprV3 + if dsCtx := ctx.DataSourceExprV3(); dsCtx != nil { + return "DataSource", buildDataSourceV3(dsCtx) + } + var name string if id := ctx.IdentifierOrKeyword(); id != nil { diff --git a/mdl/visitor/visitor_page_v3.go b/mdl/visitor/visitor_page_v3.go index fd82e9f..d288e89 100644 --- a/mdl/visitor/visitor_page_v3.go +++ b/mdl/visitor/visitor_page_v3.go @@ -312,7 +312,13 @@ func buildWidgetV3(ctx parser.IWidgetV3Context, b *Builder) *ast.WidgetV3 { } // Get widget type - if typeCtx := wCtx.WidgetTypeV3(); typeCtx != nil { + if wCtx.PLUGGABLEWIDGET() != nil { + widget.Type = "PLUGGABLEWIDGET" + widget.Properties["WidgetType"] = unquoteString(wCtx.STRING_LITERAL().GetText()) + } else if wCtx.CUSTOMWIDGET() != nil { + widget.Type = "CUSTOMWIDGET" + widget.Properties["WidgetType"] = unquoteString(wCtx.STRING_LITERAL().GetText()) + } else if typeCtx := wCtx.WidgetTypeV3(); typeCtx != nil { widget.Type = strings.ToUpper(typeCtx.GetText()) } @@ -584,6 +590,15 @@ func parseWidgetPropertyV3(ctx parser.IWidgetPropertyV3Context, widget *ast.Widg } return } + + // Generic property with keyword name: keyword: value (for pluggable widget property keys + // that happen to be MDL keywords, e.g., type, datasource, content) + if kw := propCtx.Keyword(); kw != nil { + if valCtx := propCtx.PropertyValueV3(); valCtx != nil { + widget.Properties[kw.GetText()] = buildPropertyValueV3(valCtx) + } + return + } } // buildDataSourceV3 builds a DataSource from the parse context. diff --git a/sdk/mpr/roundtrip_test.go b/sdk/mpr/roundtrip_test.go new file mode 100644 index 0000000..759c05f --- /dev/null +++ b/sdk/mpr/roundtrip_test.go @@ -0,0 +1,212 @@ +// SPDX-License-Identifier: Apache-2.0 + +package mpr + +import ( + "os" + "path/filepath" + "strings" + "testing" + + bsondebug "github.com/mendixlabs/mxcli/cmd/mxcli/bson" + "go.mongodb.org/mongo-driver/bson" +) + +// testReader creates a minimal Reader for roundtrip tests (no database needed). +func testReader() *Reader { + return &Reader{version: MPRVersionV1} +} + +// testWriter creates a minimal Writer for roundtrip tests (no database needed). +func testWriter() *Writer { + return &Writer{reader: testReader()} +} + +// toNDSL unmarshals raw BSON bytes and renders as Normalized DSL text. +func toNDSL(t *testing.T, data []byte) string { + t.Helper() + var doc bson.D + if err := bson.Unmarshal(data, &doc); err != nil { + t.Fatalf("failed to unmarshal BSON: %v", err) + } + return bsondebug.Render(doc, 0) +} + +// roundtripPage: baseline BSON → parse → serialize → NDSL compare. +func roundtripPage(t *testing.T, baselineBytes []byte) { + t.Helper() + r := testReader() + w := testWriter() + + page, err := r.parsePage("test-unit-id", "test-container-id", baselineBytes) + if err != nil { + t.Fatalf("parsePage failed: %v", err) + } + + serialized, err := w.serializePage(page) + if err != nil { + t.Fatalf("serializePage failed: %v", err) + } + + baselineNDSL := toNDSL(t, baselineBytes) + roundtripNDSL := toNDSL(t, serialized) + + if baselineNDSL != roundtripNDSL { + t.Errorf("roundtrip NDSL mismatch for page %q\n--- baseline ---\n%s\n--- roundtrip ---\n%s\n--- diff ---\n%s", + page.Name, baselineNDSL, roundtripNDSL, ndslDiff(baselineNDSL, roundtripNDSL)) + } +} + +// roundtripMicroflow: baseline BSON → parse → serialize → NDSL compare. +func roundtripMicroflow(t *testing.T, baselineBytes []byte) { + t.Helper() + r := testReader() + w := testWriter() + + mf, err := r.parseMicroflow("test-unit-id", "test-container-id", baselineBytes) + if err != nil { + t.Fatalf("parseMicroflow failed: %v", err) + } + + serialized, err := w.serializeMicroflow(mf) + if err != nil { + t.Fatalf("serializeMicroflow failed: %v", err) + } + + baselineNDSL := toNDSL(t, baselineBytes) + roundtripNDSL := toNDSL(t, serialized) + + if baselineNDSL != roundtripNDSL { + t.Errorf("roundtrip NDSL mismatch for microflow %q\n--- baseline ---\n%s\n--- roundtrip ---\n%s\n--- diff ---\n%s", + mf.Name, baselineNDSL, roundtripNDSL, ndslDiff(baselineNDSL, roundtripNDSL)) + } +} + +// roundtripSnippet: baseline BSON → parse → serialize → NDSL compare. +func roundtripSnippet(t *testing.T, baselineBytes []byte) { + t.Helper() + r := testReader() + w := testWriter() + + snippet, err := r.parseSnippet("test-unit-id", "test-container-id", baselineBytes) + if err != nil { + t.Fatalf("parseSnippet failed: %v", err) + } + + serialized, err := w.serializeSnippet(snippet) + if err != nil { + t.Fatalf("serializeSnippet failed: %v", err) + } + + baselineNDSL := toNDSL(t, baselineBytes) + roundtripNDSL := toNDSL(t, serialized) + + if baselineNDSL != roundtripNDSL { + t.Errorf("roundtrip NDSL mismatch for snippet %q\n--- baseline ---\n%s\n--- roundtrip ---\n%s\n--- diff ---\n%s", + snippet.Name, baselineNDSL, roundtripNDSL, ndslDiff(baselineNDSL, roundtripNDSL)) + } +} + +// roundtripEnumeration: baseline BSON → parse → serialize → NDSL compare. +func roundtripEnumeration(t *testing.T, baselineBytes []byte) { + t.Helper() + r := testReader() + w := testWriter() + + enum, err := r.parseEnumeration("test-unit-id", "test-container-id", baselineBytes) + if err != nil { + t.Fatalf("parseEnumeration failed: %v", err) + } + + serialized, err := w.serializeEnumeration(enum) + if err != nil { + t.Fatalf("serializeEnumeration failed: %v", err) + } + + baselineNDSL := toNDSL(t, baselineBytes) + roundtripNDSL := toNDSL(t, serialized) + + if baselineNDSL != roundtripNDSL { + t.Errorf("roundtrip NDSL mismatch for enumeration %q\n--- baseline ---\n%s\n--- roundtrip ---\n%s\n--- diff ---\n%s", + enum.Name, baselineNDSL, roundtripNDSL, ndslDiff(baselineNDSL, roundtripNDSL)) + } +} + +// TestRoundtrip_Pages runs roundtrip tests on all page baselines in testdata/. +func TestRoundtrip_Pages(t *testing.T) { + runRoundtripDir(t, "testdata/pages", roundtripPage) +} + +// TestRoundtrip_Microflows runs roundtrip tests on all microflow baselines. +func TestRoundtrip_Microflows(t *testing.T) { + runRoundtripDir(t, "testdata/microflows", roundtripMicroflow) +} + +// TestRoundtrip_Snippets runs roundtrip tests on all snippet baselines. +func TestRoundtrip_Snippets(t *testing.T) { + runRoundtripDir(t, "testdata/snippets", roundtripSnippet) +} + +// TestRoundtrip_Enumerations runs roundtrip tests on all enumeration baselines. +func TestRoundtrip_Enumerations(t *testing.T) { + runRoundtripDir(t, "testdata/enumerations", roundtripEnumeration) +} + +// runRoundtripDir loads all .mxunit files from a directory and runs the given roundtrip function. +func runRoundtripDir(t *testing.T, dir string, fn func(*testing.T, []byte)) { + t.Helper() + entries, err := os.ReadDir(dir) + if err != nil { + if os.IsNotExist(err) { + t.Skipf("no baseline directory: %s", dir) + return + } + t.Fatalf("failed to read directory %s: %v", dir, err) + } + + count := 0 + for _, entry := range entries { + if entry.IsDir() || !strings.HasSuffix(entry.Name(), ".mxunit") { + continue + } + count++ + name := strings.TrimSuffix(entry.Name(), ".mxunit") + t.Run(name, func(t *testing.T) { + data, err := os.ReadFile(filepath.Join(dir, entry.Name())) + if err != nil { + t.Fatalf("failed to read baseline: %v", err) + } + fn(t, data) + }) + } + if count == 0 { + t.Skipf("no .mxunit baselines in %s", dir) + } +} + +// ndslDiff returns a simple line-by-line diff of two NDSL strings. +func ndslDiff(a, b string) string { + linesA := strings.Split(a, "\n") + linesB := strings.Split(b, "\n") + + var diffs []string + maxLen := len(linesA) + if len(linesB) > maxLen { + maxLen = len(linesB) + } + + for i := 0; i < maxLen; i++ { + la, lb := "", "" + if i < len(linesA) { + la = linesA[i] + } + if i < len(linesB) { + lb = linesB[i] + } + if la != lb { + diffs = append(diffs, "- "+la) + diffs = append(diffs, "+ "+lb) + } + } + return strings.Join(diffs, "\n") +} diff --git a/sdk/mpr/writer_widgets.go b/sdk/mpr/writer_widgets.go index 58d00f5..fde831c 100644 --- a/sdk/mpr/writer_widgets.go +++ b/sdk/mpr/writer_widgets.go @@ -24,7 +24,7 @@ func serializeWidgetArray(widgets []pages.Widget) bson.A { for _, w := range widgets { if w != nil { if !hasItems { - arr = bson.A{int64(2)} // First item: change to version 2 + arr = bson.A{int32(2)} // First item: change to version 2 hasItems = true } arr = append(arr, serializeWidget(w)) @@ -46,7 +46,9 @@ func serializeWidget(w pages.Widget) bson.D { case *pages.Container: doc = serializeContainer(widget) case *pages.GroupBox: - doc = serializeGroupBox(widget) + return serializeGroupBox(widget) + case *pages.TabContainer: + return serializeTabContainer(widget) case *pages.LayoutGrid: doc = serializeLayoutGrid(widget) case *pages.DynamicText: @@ -237,7 +239,7 @@ func SerializeCustomWidgetDataSource(ds pages.DataSource) bson.D { } // Build SortItems array from Sorting field - sortItems := bson.A{int64(2)} // Version marker for non-empty array + sortItems := bson.A{int32(2)} // Version marker for non-empty array for _, sort := range d.Sorting { sortItem := bson.D{ {Key: "$ID", Value: idToBsonBinary(generateUUID())}, @@ -352,7 +354,7 @@ func serializeAppearance(class, style string, designProps []pages.DesignProperty } // serializeDesignProperties serializes design property values to a BSON array. -// Both empty and non-empty use version marker int32(3). +// Both empty and non-empty use version marker int64(3). func serializeDesignProperties(props []pages.DesignPropertyValue) bson.A { if len(props) == 0 { return bson.A{int32(3)} @@ -526,7 +528,7 @@ func serializeClientTemplate(ct *pages.ClientTemplate, fallbackText *model.Text, // Build parameters array - use [3] for empty, [2, items...] for non-empty params := bson.A{int32(3)} // Empty array with version marker 3 if ct != nil && len(ct.Parameters) > 0 { - params = bson.A{int64(2)} // Non-empty array uses version marker 2 + params = bson.A{int32(2)} // Non-empty array uses version marker 2 for _, param := range ct.Parameters { params = append(params, serializeClientTemplateParameter(param)) } diff --git a/sdk/mpr/writer_widgets_layout.go b/sdk/mpr/writer_widgets_layout.go index e777de7..69612c4 100644 --- a/sdk/mpr/writer_widgets_layout.go +++ b/sdk/mpr/writer_widgets_layout.go @@ -3,6 +3,7 @@ package mpr import ( + "github.com/mendixlabs/mxcli/model" "github.com/mendixlabs/mxcli/sdk/pages" "go.mongodb.org/mongo-driver/bson" @@ -60,6 +61,71 @@ func serializeGroupBox(gb *pages.GroupBox) bson.D { return doc } +// serializeTabContainer serializes a TabContainer widget. +func serializeTabContainer(tc *pages.TabContainer) bson.D { + tabPages := bson.A{int32(3)} // marker=3 for TabPages array + var defaultPageID []byte + for i, tp := range tc.TabPages { + tpDoc := serializeTabPage(tp) + tabPages = append(tabPages, tpDoc) + if i == 0 { + // Default to first tab + defaultPageID = idToBsonBinary(string(tp.ID)).Data + } + } + if tc.DefaultPageID != "" { + defaultPageID = idToBsonBinary(string(tc.DefaultPageID)).Data + } + + doc := bson.D{ + {Key: "$ID", Value: idToBsonBinary(string(tc.ID))}, + {Key: "$Type", Value: "Forms$TabControl"}, + {Key: "ActivePageAttributeRef", Value: nil}, + {Key: "ActivePageOnChangeAction", Value: bson.D{ + {Key: "$ID", Value: idToBsonBinary(GenerateID())}, + {Key: "$Type", Value: "Forms$NoAction"}, + {Key: "DisabledDuringExecution", Value: true}, + }}, + {Key: "ActivePageSourceVariable", Value: nil}, + {Key: "Appearance", Value: serializeAppearance(tc.Class, tc.Style, tc.DesignProperties)}, + {Key: "ConditionalVisibilitySettings", Value: nil}, + {Key: "DefaultPagePointer", Value: defaultPageID}, + {Key: "Name", Value: tc.Name}, + {Key: "TabIndex", Value: int64(0)}, + {Key: "TabPages", Value: tabPages}, + } + return doc +} + +// serializeTabPage serializes a TabPage within a TabContainer. +func serializeTabPage(tp *pages.TabPage) bson.D { + // Caption + var caption bson.D + if tp.Caption != nil { + caption = serializeText(tp.Caption) + } else { + caption = serializeText(&model.Text{ + BaseElement: model.BaseElement{ + ID: model.ID(GenerateID()), + TypeName: "Texts$Text", + }, + Translations: map[string]string{"en_US": tp.Name}, + }) + } + + doc := bson.D{ + {Key: "$ID", Value: idToBsonBinary(string(tp.ID))}, + {Key: "$Type", Value: "Forms$TabPage"}, + {Key: "Badge", Value: nil}, + {Key: "Caption", Value: caption}, + {Key: "ConditionalVisibilitySettings", Value: nil}, + {Key: "Name", Value: tp.Name}, + {Key: "RefreshOnShow", Value: tp.RefreshOnShow}, + {Key: "Widgets", Value: serializeWidgetArray(tp.Widgets)}, + } + return doc +} + // serializeLayoutGrid serializes a LayoutGrid widget. func serializeLayoutGrid(lg *pages.LayoutGrid) bson.D { // Mendix uses [3] for empty arrays, [2, item1, item2, ...] for non-empty arrays @@ -68,7 +134,7 @@ func serializeLayoutGrid(lg *pages.LayoutGrid) bson.D { hasRows := false for _, row := range lg.Rows { if !hasRows { - rows = bson.A{int64(2)} // First item: change to version 2 + rows = bson.A{int32(2)} // First item: change to version 2 hasRows = true } rows = append(rows, serializeLayoutGridRow(row)) @@ -95,7 +161,7 @@ func serializeLayoutGridRow(row *pages.LayoutGridRow) bson.D { hasCols := false for _, col := range row.Columns { if !hasCols { - cols = bson.A{int64(2)} // First item: change to version 2 + cols = bson.A{int32(2)} // First item: change to version 2 hasCols = true } cols = append(cols, serializeLayoutGridColumn(col)) diff --git a/sdk/pages/pages_widgets_advanced.go b/sdk/pages/pages_widgets_advanced.go index b538421..00e991f 100644 --- a/sdk/pages/pages_widgets_advanced.go +++ b/sdk/pages/pages_widgets_advanced.go @@ -168,6 +168,7 @@ type PropertyTypeIDEntry struct { ValueTypeID string DefaultValue string // Default value from the template's ValueType ValueType string // Type of value (Boolean, Integer, String, DataSource, etc.) + Required bool // Whether this property is required // For object list properties (IsList=true with ObjectType), these hold nested IDs ObjectTypeID string // ID of the nested ObjectType (for object lists like columns) NestedPropertyIDs map[string]PropertyTypeIDEntry // Property IDs within the nested ObjectType diff --git a/sdk/widgets/augment.go b/sdk/widgets/augment.go index 5373d77..0ecb64e 100644 --- a/sdk/widgets/augment.go +++ b/sdk/widgets/augment.go @@ -87,7 +87,7 @@ func AugmentTemplate(tmpl *WidgetTemplate, def *mpk.WidgetDefinition) error { } } - // Nothing to do + // Nothing to add/remove if len(missing) == 0 && len(stale) == 0 { return nil } @@ -113,7 +113,9 @@ func AugmentTemplate(tmpl *WidgetTemplate, def *mpk.WidgetDefinition) error { var newPropType, newProp map[string]any if hasExemplar { newPropType, newProp = clonePropertyPair(propTypes, objProps, exemplarIdx, p) - } else { + } + // Fall back to createPropertyPair if cloning failed (no exemplar or no matching property) + if newPropType == nil || newProp == nil { newPropType, newProp = createPropertyPair(p, bsonType) } @@ -653,3 +655,102 @@ func deepCloneTemplate(tmpl *WidgetTemplate) *WidgetTemplate { return clone } + +// collectNestedPropertyTypeIDs extracts PropertyKey→$ID mappings from a ValueType's ObjectType. +func collectNestedPropertyTypeIDs(vt map[string]any) map[string]string { + result := make(map[string]string) + objType, ok := getMapField(vt, "ObjectType") + if !ok { + return result + } + propTypes, ok := getArrayField(objType, "PropertyTypes") + if !ok { + return result + } + for _, pt := range propTypes { + ptMap, ok := pt.(map[string]any) + if !ok { + continue + } + key, _ := ptMap["PropertyKey"].(string) + id, _ := ptMap["$ID"].(string) + if key != "" && id != "" { + result[key] = id + } + } + return result +} + +// collectNestedPropertyTypeIDsByKey extracts PropertyKey→$ID from a rebuilt ObjectType map. +func collectNestedPropertyTypeIDsByKey(objType map[string]any) map[string]string { + result := make(map[string]string) + propTypes, ok := getArrayField(objType, "PropertyTypes") + if !ok { + return result + } + for _, pt := range propTypes { + ptMap, ok := pt.(map[string]any) + if !ok { + continue + } + key, _ := ptMap["PropertyKey"].(string) + id, _ := ptMap["$ID"].(string) + if key != "" && id != "" { + result[key] = id + } + } + return result +} + +// remapObjectTypePointers walks the Object Properties array and updates TypePointers +// that reference old PropertyType IDs from a rebuilt ObjectType. +func remapObjectTypePointers(objProps []any, idRemap map[string]string) { + if len(idRemap) == 0 { + return + } + for _, prop := range objProps { + propMap, ok := prop.(map[string]any) + if !ok { + continue + } + // Check Value.Objects for nested WidgetObjects with TypePointers + val, ok := getMapField(propMap, "Value") + if !ok { + continue + } + objects, ok := getArrayField(val, "Objects") + if !ok { + continue + } + for _, obj := range objects { + objMap, ok := obj.(map[string]any) + if !ok { + continue + } + // Remap the object's nested properties' TypePointers + nestedProps, ok := getArrayField(objMap, "Properties") + if !ok { + continue + } + for _, nestedProp := range nestedProps { + npMap, ok := nestedProp.(map[string]any) + if !ok { + continue + } + if tp, ok := npMap["TypePointer"].(string); ok { + if newTP, exists := idRemap[tp]; exists { + npMap["TypePointer"] = newTP + } + } + // Also remap Value.TypePointer (references ValueType $ID) + if nestedVal, ok := getMapField(npMap, "Value"); ok { + if tp, ok := nestedVal["TypePointer"].(string); ok { + if newTP, exists := idRemap[tp]; exists { + nestedVal["TypePointer"] = newTP + } + } + } + } + } + } +} diff --git a/sdk/widgets/definitions/barcodescanner.def.json b/sdk/widgets/definitions/barcodescanner.def.json new file mode 100644 index 0000000..f521a3a --- /dev/null +++ b/sdk/widgets/definitions/barcodescanner.def.json @@ -0,0 +1,9 @@ +{ + "widgetId": "com.mendix.widget.web.barcodescanner.BarcodeScanner", + "mdlName": "BARCODESCANNER", + "templateFile": "barcodescanner.json", + "defaultEditable": "Always", + "propertyMappings": [ + {"propertyKey": "datasource", "source": "Attribute", "operation": "attribute"} + ] +} diff --git a/sdk/widgets/loader.go b/sdk/widgets/loader.go index c446edc..0e1e7c9 100644 --- a/sdk/widgets/loader.go +++ b/sdk/widgets/loader.go @@ -115,16 +115,52 @@ var ( templateCacheLock sync.RWMutex ) -// Known widget IDs and their template files. -var widgetTemplateFiles = map[string]string{ - "com.mendix.widget.web.combobox.Combobox": "combobox.json", - "com.mendix.widget.web.datagrid.Datagrid": "datagrid.json", - "com.mendix.widget.web.datagridtextfilter.DatagridTextFilter": "datagrid-text-filter.json", - "com.mendix.widget.web.datagriddatefilter.DatagridDateFilter": "datagrid-date-filter.json", - "com.mendix.widget.web.datagriddropdownfilter.DatagridDropdownFilter": "datagrid-dropdown-filter.json", - "com.mendix.widget.web.datagridnumberfilter.DatagridNumberFilter": "datagrid-number-filter.json", - "com.mendix.widget.web.gallery.Gallery": "gallery.json", - "com.mendix.widget.web.image.Image": "image.json", +// widgetTemplateIndex maps widget IDs to template filenames. +// Built lazily by scanning embedded template JSON files. +var ( + widgetTemplateIndex map[string]string + widgetTemplateIndexOnce sync.Once +) + +// getWidgetTemplateIndex returns the widget ID → filename mapping, +// built by scanning all embedded JSON templates for their "widgetId" field. +func getWidgetTemplateIndex() map[string]string { + widgetTemplateIndexOnce.Do(func() { + widgetTemplateIndex = make(map[string]string) + entries, err := templateFS.ReadDir("templates/mendix-11.6") + if err != nil { + return + } + for _, entry := range entries { + if entry.IsDir() || !strings.HasSuffix(entry.Name(), ".json") { + continue + } + // Read just enough to extract widgetId + data, err := templateFS.ReadFile("templates/mendix-11.6/" + entry.Name()) + if err != nil { + continue + } + var header struct { + WidgetID string `json:"widgetId"` + Type map[string]any `json:"type"` + } + if err := json.Unmarshal(data, &header); err != nil { + continue + } + wid := header.WidgetID + // Fallback: extract WidgetId from type.WidgetId for older templates + if wid == "" && header.Type != nil { + if v, ok := header.Type["WidgetId"].(string); ok { + wid = v + } + } + if wid == "" { + continue + } + widgetTemplateIndex[wid] = entry.Name() + } + }) + return widgetTemplateIndex } // GetTemplate loads a widget template by widget ID. @@ -138,8 +174,9 @@ func GetTemplate(widgetID string) (*WidgetTemplate, error) { } templateCacheLock.RUnlock() - // Find template file - filename, ok := widgetTemplateFiles[widgetID] + // Find template file from auto-scanned index + index := getWidgetTemplateIndex() + filename, ok := index[widgetID] if !ok { return nil, nil // Not found, not an error } @@ -253,6 +290,7 @@ func jsonToBSONWithMappingAndObjectType(data map[string]any, idMapping map[strin var valueTypeID string var defaultValue string var valueType string + var required bool var nestedObjectTypeID string var nestedPropertyIDs map[string]PropertyTypeIDEntry @@ -294,9 +332,9 @@ func jsonToBSONWithMappingAndObjectType(data map[string]any, idMapping map[strin } } } else if key == "ValueType" && isPropertyType { - // For PropertyTypes, extract ValueType info including nested ObjectType, DefaultValue, and Type + // For PropertyTypes, extract ValueType info including nested ObjectType, DefaultValue, Type, Required nestedPropertyIDs = make(map[string]PropertyTypeIDEntry) - elem.Value = jsonValueToBSONWithNestedObjectType(val, idMapping, &valueTypeID, &nestedObjectTypeID, nestedPropertyIDs, &defaultValue, &valueType) + elem.Value = jsonValueToBSONWithNestedObjectType(val, idMapping, &valueTypeID, &nestedObjectTypeID, nestedPropertyIDs, &defaultValue, &valueType, &required) } else { elem.Value = jsonValueToBSONWithMappingAndObjectType(val, idMapping, propertyTypeIDs, &valueTypeID, key == "ValueType", objectTypeID) } @@ -311,6 +349,7 @@ func jsonToBSONWithMappingAndObjectType(data map[string]any, idMapping map[strin ValueTypeID: valueTypeID, DefaultValue: defaultValue, ValueType: valueType, + Required: required, } if nestedObjectTypeID != "" { entry.ObjectTypeID = nestedObjectTypeID @@ -323,7 +362,7 @@ func jsonToBSONWithMappingAndObjectType(data map[string]any, idMapping map[strin } // jsonValueToBSONWithNestedObjectType extracts ValueType info including nested ObjectType, DefaultValue, and Type. -func jsonValueToBSONWithNestedObjectType(val any, idMapping map[string]string, valueTypeID *string, nestedObjectTypeID *string, nestedPropertyIDs map[string]PropertyTypeIDEntry, defaultValue *string, valueType *string) any { +func jsonValueToBSONWithNestedObjectType(val any, idMapping map[string]string, valueTypeID *string, nestedObjectTypeID *string, nestedPropertyIDs map[string]PropertyTypeIDEntry, defaultValue *string, valueType *string, required *bool) any { switch v := val.(type) { case map[string]any: result := make(bson.D, 0, len(v)) @@ -357,6 +396,12 @@ func jsonValueToBSONWithNestedObjectType(val any, idMapping map[string]string, v *valueType = vt } elem.Value = jsonValueToBSONSimple(fieldVal, idMapping) + } else if key == "Required" { + // Extract required flag + if r, ok := fieldVal.(bool); ok { + *required = r + } + elem.Value = jsonValueToBSONSimple(fieldVal, idMapping) } else { elem.Value = jsonValueToBSONSimple(fieldVal, idMapping) } @@ -453,11 +498,31 @@ func extractNestedPropertyTypes(val any, idMapping map[string]string, nestedProp } } + // Extract DefaultValue, Type, and Required from nested ValueType + var nestedDefaultValue, nestedValueType string + var nestedRequired bool + if vtVal, ok := propType["ValueType"]; ok { + if vt, ok := vtVal.(map[string]any); ok { + if dv, ok := vt["DefaultValue"].(string); ok { + nestedDefaultValue = dv + } + if t, ok := vt["Type"].(string); ok { + nestedValueType = t + } + if r, ok := vt["Required"].(bool); ok { + nestedRequired = r + } + } + } + // Record the nested property type if propKey != "" { nestedPropertyIDs[propKey] = PropertyTypeIDEntry{ PropertyTypeID: propTypeID, ValueTypeID: valueTypeID, + DefaultValue: nestedDefaultValue, + ValueType: nestedValueType, + Required: nestedRequired, } } } @@ -640,6 +705,7 @@ type PropertyTypeIDEntry struct { ValueTypeID string DefaultValue string // Default value from the template's ValueType ValueType string // Type of value (Boolean, Integer, String, DataSource, etc.) + Required bool // Whether this property is required // For object list properties (IsList=true with ObjectType), these hold nested IDs ObjectTypeID string // ID of the nested ObjectType (for object lists) NestedPropertyIDs map[string]PropertyTypeIDEntry // Property IDs within the nested ObjectType @@ -649,8 +715,10 @@ type PropertyTypeIDEntry struct { func collectIDs(data map[string]any, idGenerator func() string, idMapping map[string]string) { for key, val := range data { if key == "$ID" { - if oldID, ok := val.(string); ok && len(oldID) == 32 && isHexString(oldID) { - // Generate new ID for this $ID field + if oldID, ok := val.(string); ok && len(oldID) == 32 { + // Generate new ID for this $ID field. + // Accept any 32-char string (not just valid hex) to handle + // manually crafted placeholder IDs in templates. newID := idGenerator() idMapping[oldID] = newID } @@ -854,8 +922,9 @@ func augmentFromMPK(tmpl *WidgetTemplate, widgetID string, projectPath string) * // ListAvailableTemplates returns a list of available widget template IDs. func ListAvailableTemplates() []string { - result := make([]string, 0, len(widgetTemplateFiles)) - for widgetID := range widgetTemplateFiles { + index := getWidgetTemplateIndex() + result := make([]string, 0, len(index)) + for widgetID := range index { result = append(result, widgetID) } return result diff --git a/sdk/widgets/mpk/mpk.go b/sdk/widgets/mpk/mpk.go index 066d0f9..058c4b1 100644 --- a/sdk/widgets/mpk/mpk.go +++ b/sdk/widgets/mpk/mpk.go @@ -35,6 +35,7 @@ type WidgetDefinition struct { ID string // e.g. "com.mendix.widget.web.combobox.Combobox" Name string // e.g. "Combo box" Version string // from package.xml clientModule version + IsPluggable bool // true if pluginWidget="true" (React), false for legacy Dojo Properties []PropertyDef // regular elements SystemProps []PropertyDef // elements } @@ -190,9 +191,10 @@ func ParseMPK(mpkPath string) (*WidgetDefinition, error) { } def := &WidgetDefinition{ - ID: widget.ID, - Name: widget.Name, - Version: version, + ID: widget.ID, + Name: widget.Name, + Version: version, + IsPluggable: widget.PluginWidget == "true", } // Walk property groups to collect properties diff --git a/sdk/widgets/templates/mendix-11.6/accessibilityhelper.json b/sdk/widgets/templates/mendix-11.6/accessibilityhelper.json new file mode 100644 index 0000000..e02ab20 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/accessibilityhelper.json @@ -0,0 +1,575 @@ +{ + "widgetId": "com.mendix.widget.web.accessibilityhelper.AccessibilityHelper", + "name": "Accessibility helper", + "version": "11.6.4", + "extractedFrom": "d6b6fc94-3653-4109-a73f-09944df7e718", + "type": { + "$ID": "5c3de2779d13478a826fed18d5e07708", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/accessibility-helper", + "ObjectType": { + "$ID": "dd4ee79e7559480d9684069e6af65eaf", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "9abe99286b744e8d93e49d770bf53166", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Target selector", + "Category": "General", + "Description": "Selector to find the first HTML element you want to target which must be a valid CSS selector like '.mx-name-texbox1 input'", + "IsDefault": false, + "PropertyKey": "targetSelector", + "ValueType": { + "$ID": "0e2976b38fc74508a3a638f223f54d15", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + }, + { + "$ID": "3bd8424210734732b930c34bb26bc344", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Content", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "content", + "ValueType": { + "$ID": "a70f929f68fb4c7f8f7c106ac7415ce7", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "3f9062bcf3d048fd875f902b720e7610", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "HTML Attributes", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "attributesList", + "ValueType": { + "$ID": "8445209d45884c6ca2357bded63b442f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "c93ee83253034b3c8eab53ad487e3096", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "5ad7f3fa608e4f5880a438a61213b8b7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "HTML attribute", + "Category": "General", + "Description": "The HTML attribute to be set based on the condition. The following attributes are not allowed: 'class', 'style', 'widgetid', 'data-mendix-id'.", + "IsDefault": false, + "PropertyKey": "attribute", + "ValueType": { + "$ID": "ba5e723f2461458f87429f55644d275c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + }, + { + "$ID": "14d614c60f5148a4b4cc73510e4caadd", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Source type", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "valueSourceType", + "ValueType": { + "$ID": "a358cb4620584b71823311e5f460cd3b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "text", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "58e0cd93c6e242149a31cccd3b2ca4ab", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "text", + "Caption": "Text" + }, + { + "$ID": "2b288e3d9c5d40b5b28977a146160013", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "d9569a7455e44927bedb3ed31fb993f6", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Expression value", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "valueExpression", + "ValueType": { + "$ID": "39a7f02a43c34fc7b64927e3eb6668af", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "311f9b41a9894a928275bcb113940d6f", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "06e0b234e23d40e8a3ac09bf12000493", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Text value", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "valueText", + "ValueType": { + "$ID": "f33d608468c641c495a59897835d2aac", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "583d5460e20943d0ad9ea63d81e35258", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Condition", + "Category": "General", + "Description": "Condition to determine if the HTML attribute must be set or not", + "IsDefault": false, + "PropertyKey": "attributeCondition", + "ValueType": { + "$ID": "3521722cf0ea46e49be072a280e196a1", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": { + "$ID": "293c423c2b534773b100bec2e591ecde", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Boolean" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Input Elements", + "StudioProCategory": "Input elements", + "SupportedPlatform": "Web", + "WidgetDescription": "", + "WidgetId": "com.mendix.widget.web.accessibilityhelper.AccessibilityHelper", + "WidgetName": "Accessibility helper", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "4438c2a0d66845ee85276500f05451bd", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "4b20a3e358a74f4487cdba22c44505c9", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "9abe99286b744e8d93e49d770bf53166", + "Value": { + "$ID": "2f6ed0f0c168495cbfbe6973b2d647be", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "d26eb73c9f53405db4a9c864ec55c3cf", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "0e2976b38fc74508a3a638f223f54d15", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "885c2d5714e045779460a1e56a2c0d80", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "3bd8424210734732b930c34bb26bc344", + "Value": { + "$ID": "696f1af8851d46528ad99615e41b53a5", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "16d37d2505224052a6b89922158c7f88", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a70f929f68fb4c7f8f7c106ac7415ce7", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "d2f840d6ab8a41dda2fb3621364c2611", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "3f9062bcf3d048fd875f902b720e7610", + "Value": { + "$ID": "0bdea5b240c94d35a6e3ff8c448b88ac", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7b7806c990224a1fa7033334dadb2cc5", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "8445209d45884c6ca2357bded63b442f", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "dd4ee79e7559480d9684069e6af65eaf" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/accordion.json b/sdk/widgets/templates/mendix-11.6/accordion.json new file mode 100644 index 0000000..2164b4a --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/accordion.json @@ -0,0 +1,1643 @@ +{ + "widgetId": "com.mendix.widget.web.accordion.Accordion", + "name": "Accordion", + "version": "11.6.4", + "extractedFrom": "d7e4c5c1-ace2-435f-840c-e52b5b2c86d2", + "type": { + "$ID": "9b829055d81f4432bfc058b314d01698", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/accordion", + "ObjectType": { + "$ID": "2bf34ced5aa64585bee73194224b2fd8", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "a9fe20a3479c4c2492c01a7d0116f807", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Enable advanced options", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "advancedMode", + "ValueType": { + "$ID": "a44b5dec4c054cf18cb8b6679516f095", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "8eb08fd0127a47728ed894189e2afd86", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Groups", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "groups", + "ValueType": { + "$ID": "20c082654b22478eb963f1e86ccf560c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "cd558af1126c4e1990ee32a37bf775b6", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "75940fa9e9c24764a5b907192325f86e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Header", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "headerRenderMode", + "ValueType": { + "$ID": "012f87736310460d8c4ae0ae688f77f7", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "text", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "32d515a6e9e945f6addae6f5039a79a6", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "text", + "Caption": "Text" + }, + { + "$ID": "b152efc11e364792b0d1e418397de934", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "custom", + "Caption": "Custom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "d94078cf60934c8b9d3762f789b2667c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Text", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "headerText", + "ValueType": { + "$ID": "4a6357e0cbdb49d99faf006193d1d55d", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2, + { + "$ID": "8a392dcf73e9410eb88821fa711a9d09", + "$Type": "CustomWidgets$WidgetTranslation", + "LanguageCode": "en_US", + "Text": "Header" + }, + { + "$ID": "7c68574fd2154ae1b173c1b5bfb67ede", + "$Type": "CustomWidgets$WidgetTranslation", + "LanguageCode": "nl_NL", + "Text": "Koptekst" + } + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "509c024adbac4c918c748890a8674379", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Render mode", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "headerHeading", + "ValueType": { + "$ID": "8106d4f9eee04de58d1ec5684b514ff2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "headingThree", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "d1220234a2be4ecabcbae6a3acde284c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "headingOne", + "Caption": "Heading 1" + }, + { + "$ID": "6ca728e0d1ff4beebad078ccbfc67f12", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "headingTwo", + "Caption": "Heading 2" + }, + { + "$ID": "91da1cc906d04e0f9750f53f492c82ae", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "headingThree", + "Caption": "Heading 3" + }, + { + "$ID": "b64d97070a824b228421348fc3e74945", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "headingFour", + "Caption": "Heading 4" + }, + { + "$ID": "043d571e70844474a69c43a62545152e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "headingFive", + "Caption": "Heading 5" + }, + { + "$ID": "f6aec2605ae144d589fa35a2b0302da9", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "headingSix", + "Caption": "Heading 6" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "65d967cbfe7f46dcbb229ba134ae6ba3", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Header", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "headerContent", + "ValueType": { + "$ID": "ca9fd407a6ec44ebb4182863fc3bad02", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "d19cebf76ddc447da6ab777e930c9aae", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Content", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "content", + "ValueType": { + "$ID": "e40c72110a7041438356f419771d8346", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "f4849729831c4a7a881e0e3065013b3f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Visible", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "visible", + "ValueType": { + "$ID": "d8ab530ae1dd4687925a2306d5f1f37f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": { + "$ID": "1494174ff8b6425397b066f0992eeede", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Boolean" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "51507cb11a4446b38c1f347267071dc8", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Dynamic class", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicClass", + "ValueType": { + "$ID": "3b841b8bf1ce46d0ae23a2db1cf5c274", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "e047c3d0a28f438392129637885a6aea", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "af77a3e64ed940a99eb312940ea04d14", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Load content", + "Category": "General", + "Description": "This property determines when the widgets should be rendered and data is fetched. The “Always” option will always load the widgets regardless whether the group is expanded. The “When expanded” option can reduce the initial (page) load time, but will increase the load time when expanding the group.", + "IsDefault": false, + "PropertyKey": "loadContent", + "ValueType": { + "$ID": "9d7fb194de604dd9b44fe8c00c21e53d", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "always", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "75fcec702c544f6cada2aa490295d69c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "always", + "Caption": "Always" + }, + { + "$ID": "3f99fa6fb72241d28118e1f110efcbf7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "whenExpanded", + "Caption": "When expanded" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "71812e4f60e94d15b78dae49e1e6d63e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Start as", + "Category": "State", + "Description": "", + "IsDefault": false, + "PropertyKey": "initialCollapsedState", + "ValueType": { + "$ID": "acb113a51e1344789572144041f33fdc", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "collapsed", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "667b7f8ccb0742919ecd037e86d2312e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expanded", + "Caption": "Expanded" + }, + { + "$ID": "8de17cd22f1f47349b8877d436c371d0", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "collapsed", + "Caption": "Collapsed" + }, + { + "$ID": "8685cf26cff3451cb54cb0c62cca7eb4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Dynamic" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "6407eec0890f49fbb12a1b18810a39dd", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Start as collapsed", + "Category": "State", + "Description": "", + "IsDefault": false, + "PropertyKey": "initiallyCollapsed", + "ValueType": { + "$ID": "9b9bac64fef04e94825ae2c9562c02f3", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": { + "$ID": "6211e801e12a4fb2ad02f03b2bd3b60f", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Boolean" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "8b01afe7bb3244689655ba76fb7721ed", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Collapsed", + "Category": "State", + "Description": "Determines whether the group is collapsed or expanded. The 'Start as' properties override the attribute value for the initial state.", + "IsDefault": false, + "PropertyKey": "collapsed", + "ValueType": { + "$ID": "d9ab3363e019431eb4f0e34818996b37", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Boolean" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "onToggleCollapsed", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "3f2e479194c8401094151d98adbfa072", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On change", + "Category": "State", + "Description": "Executes an action when the 'Collapsed' attribute value changes. Note: the 'Start as' properties can prevent execution of this action when the initial state changes.", + "IsDefault": false, + "PropertyKey": "onToggleCollapsed", + "ValueType": { + "$ID": "88e57b00c1274f56a2971c003d97f76c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + }, + { + "$ID": "ef723b40e4674cb0a47d2a2bf377a810", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Collapsible", + "Category": "General::Behavior", + "Description": "", + "IsDefault": false, + "PropertyKey": "collapsible", + "ValueType": { + "$ID": "76c23c2ad61e4f738580f001e4907c53", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "171e668971c345ba8dd52d6af515d8e7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Expanded groups", + "Category": "General::Behavior", + "Description": "Allow a single group or multiple groups to be expanded at the same time.", + "IsDefault": false, + "PropertyKey": "expandBehavior", + "ValueType": { + "$ID": "604ded66e66c433dac83d2f74053beb2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "singleExpanded", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "b3dfac4f82324e5ba4af091d74110530", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "singleExpanded", + "Caption": "Single" + }, + { + "$ID": "15e1bbc52f544933ab154ef3b155e40b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "multipleExpanded", + "Caption": "Multiple" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "993ef05849cb4931b58e37b6b9613a97", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Animate", + "Category": "General::Behavior", + "Description": "", + "IsDefault": false, + "PropertyKey": "animate", + "ValueType": { + "$ID": "f517f2969b9b4e408580c9a77087ff9b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "2be7ddcc28174bea87be40d393876a67", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show icon", + "Category": "Visualization::Icon", + "Description": "", + "IsDefault": false, + "PropertyKey": "showIcon", + "ValueType": { + "$ID": "30099e4fb3884901ab204f02b7a1964e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "right", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "05c6e7f40f334d5591cc35bc8f86e5d4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "right", + "Caption": "Right" + }, + { + "$ID": "7699bb8048c2478284440e88c18a6907", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "left", + "Caption": "Left" + }, + { + "$ID": "fbebe833ec5b4a379a44035c0a1f14e7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "no", + "Caption": "No" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "4124118fc17f40f488f2a4348ae5e7f7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Icon", + "Category": "Visualization::Icon", + "Description": "", + "IsDefault": false, + "PropertyKey": "icon", + "ValueType": { + "$ID": "135d6dae1a5a49d6b57f20d3d9e1f666", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Icon" + } + }, + { + "$ID": "e667f977e59740699af8ba663fe783e5", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Expand icon", + "Category": "Visualization::Icon", + "Description": "", + "IsDefault": false, + "PropertyKey": "expandIcon", + "ValueType": { + "$ID": "82a42970e63148a4b9f0ea30d7a00dcb", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Icon" + } + }, + { + "$ID": "3877992a51ed40c581cce1015fe275cf", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Collapse icon", + "Category": "Visualization::Icon", + "Description": "", + "IsDefault": false, + "PropertyKey": "collapseIcon", + "ValueType": { + "$ID": "c33afcfe38e54bd8a82e8af529fd6538", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Icon" + } + }, + { + "$ID": "9f96f046d0c647dcb2b581d868608032", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Animate icon", + "Category": "Visualization::Icon", + "Description": "Animate the icon when the group is collapsing or expanding.", + "IsDefault": false, + "PropertyKey": "animateIcon", + "ValueType": { + "$ID": "9acf8e3196464786bfc7c055d5bd7497", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Structure", + "StudioProCategory": "Structure", + "SupportedPlatform": "Web", + "WidgetDescription": "Toggle the display of sections of content.", + "WidgetId": "com.mendix.widget.web.accordion.Accordion", + "WidgetName": "Accordion", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "c78a3f6d33804cb489462308a1d48363", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "ea6d01f4cedf441d9d0c6e56b6471f40", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "a9fe20a3479c4c2492c01a7d0116f807", + "Value": { + "$ID": "ea08587d862a45438a6338673b3ed374", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "6a25acd769604acaaf83784c526cbdf5", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a44b5dec4c054cf18cb8b6679516f095", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b2ac3097de134b81ba5d252e786f431e", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "8eb08fd0127a47728ed894189e2afd86", + "Value": { + "$ID": "131de340a2cf4969bdbc5889459de568", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "0d9bb2e0e7d64a988eb5ef48aa3df1b5", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "20c082654b22478eb963f1e86ccf560c", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "7d834a6cb4b94039a2b00de1b4339aa2", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ef723b40e4674cb0a47d2a2bf377a810", + "Value": { + "$ID": "1caf5918ab9d4a0b8f88803f124f4f1f", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "3091d8a41c4e45ec98ecc643636bf565", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "76c23c2ad61e4f738580f001e4907c53", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a0eb4161f0f641798c7d339a2c726ae2", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "171e668971c345ba8dd52d6af515d8e7", + "Value": { + "$ID": "47443d263e064782906f805755cfecb2", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "d29eb93b52614a43a4dea7441bef1b77", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "singleExpanded", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "604ded66e66c433dac83d2f74053beb2", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a8e8d5fd18ae48d482019efe4c9e3ce7", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "993ef05849cb4931b58e37b6b9613a97", + "Value": { + "$ID": "b4706b96a1774b5db0757df31d5d7ef9", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "03331c01a13a458294a14e6a226a7521", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f517f2969b9b4e408580c9a77087ff9b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "c322671c3ced40679790e03059fa6c20", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "2be7ddcc28174bea87be40d393876a67", + "Value": { + "$ID": "9e4f03a5aef640c6950a874177d725ce", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "5044c9b6dadc448cb0ca07b9259a3681", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "right", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "30099e4fb3884901ab204f02b7a1964e", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "405153c11e364dfd8afe842cc8222c6d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "4124118fc17f40f488f2a4348ae5e7f7", + "Value": { + "$ID": "4162a808bef04984a7e3b7d7d0748022", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b3246d9cda074d27807e8ccd2b7b9bcc", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "135d6dae1a5a49d6b57f20d3d9e1f666", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "805fd08b6cd04ae098fe12c5c4aad0aa", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "e667f977e59740699af8ba663fe783e5", + "Value": { + "$ID": "e2e316b7680b4a44843cc17db7ab1b1b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "4d5fd1c9d3224a31b17c57c2718933f3", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "82a42970e63148a4b9f0ea30d7a00dcb", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "bfdc75bae7e9478ca885cc63922ad9bc", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "3877992a51ed40c581cce1015fe275cf", + "Value": { + "$ID": "856da36f92fc48e69c2c507502277f35", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "5a8b8acc5d3a4531a32a665eeac37442", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "c33afcfe38e54bd8a82e8af529fd6538", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "e5e098a06b244badbd09c24367544352", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "9f96f046d0c647dcb2b581d868608032", + "Value": { + "$ID": "02ad5d9e26cf4a91a5c9f0cb85a17582", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "dae94c4ac34e4dd3bc6eb46b83685fd5", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "9acf8e3196464786bfc7c055d5bd7497", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "2bf34ced5aa64585bee73194224b2fd8" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/areachart.json b/sdk/widgets/templates/mendix-11.6/areachart.json new file mode 100644 index 0000000..5cdfdc9 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/areachart.json @@ -0,0 +1,2955 @@ +{ + "widgetId": "com.mendix.widget.web.areachart.AreaChart", + "name": "Area chart", + "version": "11.6.4", + "extractedFrom": "fc805e44-3c87-436c-836a-0695e63d24d5", + "type": { + "$ID": "ab4d5280d82b4bc682e95ba8e23572d1", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "", + "ObjectType": { + "$ID": "042daa8b3fc84137888feed6bbb26049", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "fedae3140aac4f0c82c93119092d1aa8", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Series", + "Category": "General::Data source", + "Description": "Add series and configure their properties", + "IsDefault": false, + "PropertyKey": "series", + "ValueType": { + "$ID": "cf44f20c7a3944a181bf17056ff74eda", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "5cea1433acad4d108414ed7566e70efb", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "a4bd4aa487c24e90bf61c1e935a9cd0d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Data set", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dataSet", + "ValueType": { + "$ID": "eefaea7cd80b43b681eff1457cc1d083", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "static", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "61f394ad083240cca1dcac2f7d0c6490", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "static", + "Caption": "Single series" + }, + { + "$ID": "e9867aebba214a3d93f61bcdb97fd530", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Multiple series" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "2f66685007334216a72e1e9f52ee1ec9", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Data source", + "Category": "General", + "Description": "Data points for a single series.", + "IsDefault": false, + "PropertyKey": "staticDataSource", + "ValueType": { + "$ID": "ace704e42f9b41e6b41f98919885eb2b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "DataSource" + } + }, + { + "$ID": "5ed251064e124f49a040098ba4a8047b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Data source", + "Category": "General", + "Description": "Data points for all series which will be divided into single series based on the Group by attribute value.", + "IsDefault": false, + "PropertyKey": "dynamicDataSource", + "ValueType": { + "$ID": "fa83898c1ddc4c58bb834c112d6d5758", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "DataSource" + } + }, + { + "$ID": "8d7ac0615f3e42b6bd81c820b358132f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Group by", + "Category": "General", + "Description": "Data points within the same group form one series.", + "IsDefault": false, + "PropertyKey": "groupByAttribute", + "ValueType": { + "$ID": "602dcba63fa94622b34534b8b028259b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "String", + "Boolean", + "DateTime", + "Decimal", + "Enum", + "HashString", + "Integer", + "Long" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "dynamicDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "879ae0ff97fb4859a701a114a9846278", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Series name", + "Category": "General", + "Description": "The series name displayed in the legend.", + "IsDefault": false, + "PropertyKey": "staticName", + "ValueType": { + "$ID": "3c09ab70d0c64bddb82598f916a883a5", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "3a6a695994744a47b55fd044e5e3ed46", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Series name", + "Category": "General", + "Description": "The series name displayed in the legend.", + "IsDefault": false, + "PropertyKey": "dynamicName", + "ValueType": { + "$ID": "339ba5d034164019aa39d21a72580c86", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "dynamicDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "5b31bc9abb554a1bab9d2c0c345809b6", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "X axis attribute", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticXAttribute", + "ValueType": { + "$ID": "5a8e2737d1464be39c71091247e318f1", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "String", + "Enum", + "DateTime", + "Decimal", + "Integer", + "Long", + "AutoNumber" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "staticDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "d669b4fb46164ad988b591341fc8229c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "X axis attribute", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicXAttribute", + "ValueType": { + "$ID": "86e749e601be4e1ab93651fdf120413e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "String", + "Enum", + "DateTime", + "Decimal", + "Integer", + "Long", + "AutoNumber" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "dynamicDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "6136b8bf95764eef9a175166d4e6cb0e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Y axis attribute", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticYAttribute", + "ValueType": { + "$ID": "7cb187c8c3e84194a056f10ffc038ee2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "String", + "Enum", + "DateTime", + "Decimal", + "Integer", + "Long", + "AutoNumber" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "staticDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "35e0a17b76c24b3191283cb557a90e3e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Y axis attribute", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicYAttribute", + "ValueType": { + "$ID": "b72c9aabe1174d978497234814718e15", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "String", + "Enum", + "DateTime", + "Decimal", + "Integer", + "Long", + "AutoNumber" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "dynamicDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "571814c218a34ad1b42e1fdb6af425f7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Aggregation function", + "Category": "General", + "Description": "Defines how data is aggregated when multiple Y values are available for a single X value", + "IsDefault": false, + "PropertyKey": "aggregationType", + "ValueType": { + "$ID": "df2dfba21c714ff49c5f30d117e2a05f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "none", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "40e7c39ca12f4d0ab67579f68e0177e5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "none", + "Caption": "None" + }, + { + "$ID": "833a077cb2de432ea9ac2f7227c4c08c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "count", + "Caption": "Count" + }, + { + "$ID": "8434e1ed67bc41c7beeb9bdfd9eb0cb0", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "sum", + "Caption": "Sum" + }, + { + "$ID": "4a21802b0a944e59b7844e1c072b728d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "avg", + "Caption": "Average" + }, + { + "$ID": "2ee8163106204e61b0e96c33b91524b7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "min", + "Caption": "Minimum" + }, + { + "$ID": "c187b7f8896844189731bbb237851186", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "max", + "Caption": "Maximum" + }, + { + "$ID": "dbcc89ceccaa4852ab6ed8ab8905d879", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "median", + "Caption": "Median" + }, + { + "$ID": "d2f20d5cc4e44197be4d752cfc99ecf0", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "mode", + "Caption": "Mode" + }, + { + "$ID": "cf247af9731445608a212ccb36601b49", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "first", + "Caption": "First" + }, + { + "$ID": "55742a4ca6774e039f4ab6a0fd82c646", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "last", + "Caption": "Last" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "5155e4350e85492bb69318de5d766310", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip hover text", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticTooltipHoverText", + "ValueType": { + "$ID": "47c5dfffd5ee4bf19d8bf1cf61287318", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "staticDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "a6920725d2534918a4314bba2199ac6d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip hover text", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicTooltipHoverText", + "ValueType": { + "$ID": "a9716315fb0e49d9beed3c9fa740b2f4", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "dynamicDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "faae07e613b44c8b82cc205a0cea04dc", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Interpolation", + "Category": "Appearance", + "Description": "", + "IsDefault": false, + "PropertyKey": "interpolation", + "ValueType": { + "$ID": "ce80a39d87aa475cbf814dc643555224", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "linear", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "d44ac31245be47288c485f8f3897084a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "linear", + "Caption": "Linear" + }, + { + "$ID": "904c71db2d914e60bfc167a8b1849cee", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "spline", + "Caption": "Curved" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "41cc26b947c843ceb604bddf48c7343d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Line style", + "Category": "Appearance", + "Description": "", + "IsDefault": false, + "PropertyKey": "lineStyle", + "ValueType": { + "$ID": "192c0397df9e4747909d84686bc1c4c5", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "line", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "f8526ce38bd041bf963b8cbfdc9a116b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "line", + "Caption": "Line" + }, + { + "$ID": "38535bd9cb034c868f15f611af747d8c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "lineWithMarkers", + "Caption": "Line with markers" + }, + { + "$ID": "ce26d05e416c466dbb70d0c72ed3041f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "custom", + "Caption": "Custom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "d23be6a811fb4f488a8bcc74efa13095", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Line color", + "Category": "Appearance", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticLineColor", + "ValueType": { + "$ID": "6ac13cbf8cb54ec081ebc7c670bc16c9", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "staticDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "941458377dc241e6ab081cd0a98731bd", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "e156f1bacf364f74994d1502a7df06a3", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Line color", + "Category": "Appearance", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicLineColor", + "ValueType": { + "$ID": "74e4904f6ed243e59798ae82ac10de78", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "dynamicDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "939ada0836e64121af0d04f9aceb5ea1", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "98cd727eeeac469890f108d714d760bf", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Marker color", + "Category": "Appearance", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticMarkerColor", + "ValueType": { + "$ID": "fe4703dd26db44edb969d623e08a1e1b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "staticDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "b921cf8881c640c79c3baafb2f0a9667", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "b94d53c6eca947978252e122c1e6d56d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Marker color", + "Category": "Appearance", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicMarkerColor", + "ValueType": { + "$ID": "cd3f8c06052947f39325fa7089aa4eab", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "dynamicDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "43a6b311e65c4df58b2037ba9b806bf4", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "01318629ea34460a9c1f9cb4b8c77e90", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Area fill color", + "Category": "Appearance", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticFillColor", + "ValueType": { + "$ID": "7e539f3902eb4bbfbc68e99d7e53e0db", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "staticDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "90288070052240f0a0fd10a699cea5db", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "3692299be0f84548826d8527103ca308", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Area fill color", + "Category": "Appearance", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicFillColor", + "ValueType": { + "$ID": "fc33bef18de04bb48eb3aee39409e126", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "dynamicDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "a160790f8d6846aabe739386d44a0c5b", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "9dd98b2525b84538aefc592db751e71e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click action", + "Category": "Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticOnClickAction", + "ValueType": { + "$ID": "678c084838524e1b82b9710c334eeb40", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "staticDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "4b227e4811904f66a686e07b53fa7534", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click action", + "Category": "Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicOnClickAction", + "ValueType": { + "$ID": "4b00fda13576461ead53d8a9f918033f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "dynamicDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "bd68452195c7481d82b1edd80e4ea219", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Custom series options", + "Category": "Advanced", + "Description": "", + "IsDefault": false, + "PropertyKey": "customSeriesOptions", + "ValueType": { + "$ID": "90c602035b0d48b6b3eb14f60dcca788", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": true, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + }, + { + "$ID": "10dd3cb022b14a5fbca85e92a449c2db", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Enable advanced options", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "enableAdvancedOptions", + "ValueType": { + "$ID": "1715cc01641f4372889ba3dbaa7d75f3", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "7f4487f2d5eb4b7fa1bbafa30b3da770", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show playground slot", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "showPlaygroundSlot", + "ValueType": { + "$ID": "d7ca3668c6374353b4fdd45e689e25f6", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "df01fb30535d4117b3101670afb04356", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Playground slot", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "playground", + "ValueType": { + "$ID": "fde93bf882004e179fbe9deb1bddb743", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "90fdcbfd8bc84bb792881c9487c0832a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "X axis label", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "xAxisLabel", + "ValueType": { + "$ID": "d0176fa0f7854e7db7e853876c4c5a63", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "19dfa60ef1d44c9ca808da9ec9ae02d3", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Y axis label", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "yAxisLabel", + "ValueType": { + "$ID": "1e24e31f1de442d9ba308a5826d73613", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "dffa95d3eb2d468bb5f0e94e90817065", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show legend", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "showLegend", + "ValueType": { + "$ID": "61bcb80b560147bb93e365657197cffe", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "ad533e816cd4469e89d995ecefca848f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Grid lines", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "gridLines", + "ValueType": { + "$ID": "cf118a4bd6f8494cb4e3c207b20d29b0", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "none", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "39463fb030b14b0890ecda06773308c4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "none", + "Caption": "None" + }, + { + "$ID": "067fc0ecfa234a47bef15ca657c0c232", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "horizontal", + "Caption": "Horizontal" + }, + { + "$ID": "9d7dc52a596b4c76971841ac94fd9519", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "vertical", + "Caption": "Vertical" + }, + { + "$ID": "c01f12f9701a44e0b0c1e480438997f4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "both", + "Caption": "Both" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "0d416fd63d9d4e7a86b3f3e22046de56", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Visibility", + "Description": "", + "IsDefault": false, + "PropertyKey": "Visibility", + "ValueType": { + "$ID": "61a935d77e544db9801627eaf44c0a02", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "24a9fb62fcea42278c9df925f9bf22e7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Name", + "ValueType": { + "$ID": "997e1dec54634424afdbef91b2fe3837", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "da3af3b1823740d2b26f59fc1bc967b0", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "TabIndex", + "ValueType": { + "$ID": "a314f8fd263c4697be3895f2ee3e162f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "d8cdac67ab3b458e9a37dc82fdc7c30a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Width unit", + "Category": "Dimensions::Dimensions", + "Description": "Percentage: portion of parent size. Pixels: absolute amount of pixels.", + "IsDefault": false, + "PropertyKey": "widthUnit", + "ValueType": { + "$ID": "0f687b57d2664cdc89d66d8d15eb168e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "percentage", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "16397fc4e1104fb4b8c6250a298f6a25", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentage", + "Caption": "Percentage" + }, + { + "$ID": "695c47d908f84e65b4f544779a8934ce", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "pixels", + "Caption": "Pixels" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "5443235e93614619a5fcac8a84185b9d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Width", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "width", + "ValueType": { + "$ID": "217d8baf7a4e4f83bf973f6ccacf95cc", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "100", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "70bd0d33a9e74c36bf12292c295166bb", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height unit", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "heightUnit", + "ValueType": { + "$ID": "a8417a2956bb4247b1d6a8609cf856db", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "percentageOfWidth", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "1506ef7bb5474a07b53d638eb24da920", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentageOfWidth", + "Caption": "Percentage of width" + }, + { + "$ID": "46b3ab8394834a3da28196dfda1fd228", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "pixels", + "Caption": "Pixels" + }, + { + "$ID": "27908550accb4c518eef3ea029a90518", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentageOfParent", + "Caption": "Percentage of parent" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "c8be0326e0cd4172b68b0e8521093a20", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "height", + "ValueType": { + "$ID": "f96cfbeaca6d419891e0d19af12b4f16", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "75", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "ebfad7c5e2014b03856118defb896a46", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Enable theme folder config loading", + "Category": "Advanced::Advanced", + "Description": "", + "IsDefault": false, + "PropertyKey": "enableThemeConfig", + "ValueType": { + "$ID": "55dc3d0b9eea4fada252f837662b1fc7", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "149963d338614d498337045df37250fc", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Custom layout", + "Category": "Advanced::Advanced", + "Description": "", + "IsDefault": false, + "PropertyKey": "customLayout", + "ValueType": { + "$ID": "cad8dcf6d87f4cde8848455b239b1db7", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": true, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + }, + { + "$ID": "554b34b35355425f904dba7559a4d734", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Custom configurations", + "Category": "Advanced::Advanced", + "Description": "", + "IsDefault": false, + "PropertyKey": "customConfigurations", + "ValueType": { + "$ID": "2338a487dc594f1caa8c7b1505cd0733", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": true, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Charts", + "StudioProCategory": "Charts", + "SupportedPlatform": "Web", + "WidgetDescription": "Create an area chart", + "WidgetId": "com.mendix.widget.web.areachart.AreaChart", + "WidgetName": "Area chart", + "WidgetNeedsEntityContext": false, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "c90426f7a2ce40cfbef83ab818395488", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "a9ebb83e0e334c188b0824ce847f6aa2", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "fedae3140aac4f0c82c93119092d1aa8", + "Value": { + "$ID": "8ece006822d641dc89fba968f58e3be9", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "92524cbb96354b14a0edd00b7f5f8708", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "cf44f20c7a3944a181bf17056ff74eda", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "c6e617f8330f4310977d918d6c75644d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "10dd3cb022b14a5fbca85e92a449c2db", + "Value": { + "$ID": "8a7869dc5e9e49baa2e9dd14f80c2f71", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "ef37d6b28b2842ae82e631b04adf66d1", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "1715cc01641f4372889ba3dbaa7d75f3", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b69ec8bef8a94735b7a0b416b5db9cdc", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "7f4487f2d5eb4b7fa1bbafa30b3da770", + "Value": { + "$ID": "46a2bc885fe746f581411c6cf56780cf", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "59e237222f8845d8a3eaccd93a616451", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d7ca3668c6374353b4fdd45e689e25f6", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f76451a4008d4d0aaf2e5c9ca685a008", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "df01fb30535d4117b3101670afb04356", + "Value": { + "$ID": "e597d50a36ac450c8dcbe47328a797be", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "9f2eb0e4153049309f3da755a7806b61", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "fde93bf882004e179fbe9deb1bddb743", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "2816d75aab6e4a3e996c0905a97f8be0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "90fdcbfd8bc84bb792881c9487c0832a", + "Value": { + "$ID": "1d67eb2eabdd44e0b61953dcfd280f54", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "1896a289d8144681a580c179e20fecc6", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "d5b702ebc99a497db72e271c471f3ffa", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "88946a9b63304ff0b7981124a371b840", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "c94143fe86fb46febf0355436d88069e", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "d0176fa0f7854e7db7e853876c4c5a63", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "0451022872cd43888af6e409918861f9", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "19dfa60ef1d44c9ca808da9ec9ae02d3", + "Value": { + "$ID": "011819fb1b2d4dad9e388ee831359c6c", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7ae79af30f5847dda02a001caad1a772", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "81b4566045f24392afdac6e492a30748", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "6fc3a62c0f064636b0ba1599fbad963f", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "fec14758a14246189ecf98ab9742e17a", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "1e24e31f1de442d9ba308a5826d73613", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "139f2d99550447e0ad4670d58271ce94", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "dffa95d3eb2d468bb5f0e94e90817065", + "Value": { + "$ID": "26717a29961e4edd80c76af5f10ec91d", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "4313dd812f3047b3ace3399c7f699187", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "61bcb80b560147bb93e365657197cffe", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "1de0c7861307459d84e187c350aaed82", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ad533e816cd4469e89d995ecefca848f", + "Value": { + "$ID": "56d91fe3775b44b5927720ca18ab32e0", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "391235c6f6ef49ee8aebe05e073cb05b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "none", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "cf118a4bd6f8494cb4e3c207b20d29b0", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f19e5c9396f947aaa713ffdc9682176d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "d8cdac67ab3b458e9a37dc82fdc7c30a", + "Value": { + "$ID": "9f78747affe64e889e446929c7ff1bb8", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "0d51c38d12b24571947f8888ddafb14f", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "percentage", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "0f687b57d2664cdc89d66d8d15eb168e", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "9c77c9fbf2694642984768a7b4d20fee", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "5443235e93614619a5fcac8a84185b9d", + "Value": { + "$ID": "87c1e023f64645c1959c604d222f13df", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c65f2655c1e54b349d0de217c537a17a", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "100", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "217d8baf7a4e4f83bf973f6ccacf95cc", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "27300dc4840b42e3a2f82a2dc6621a55", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "70bd0d33a9e74c36bf12292c295166bb", + "Value": { + "$ID": "ebadb1609676489e9a6cb8319388079e", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "1bbbd8f212274b38bf4bf1d37adfcc66", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "percentageOfWidth", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a8417a2956bb4247b1d6a8609cf856db", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "e96d0262d9c84f1e871bf812c5c9e998", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "c8be0326e0cd4172b68b0e8521093a20", + "Value": { + "$ID": "6a458576677644638c86a88220f5f88a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "53d32b8fdd8049a9b369d9a5d00e5abe", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "75", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f96cfbeaca6d419891e0d19af12b4f16", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "7724ce0f2c3049579a5950a3a3319bf6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ebfad7c5e2014b03856118defb896a46", + "Value": { + "$ID": "5d65e20eff954595bbd35856edef432a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "11600880dc5f4144850a33c2fc3e8e99", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "55dc3d0b9eea4fada252f837662b1fc7", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "9006fe0941d54787adff5b7b658178d6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "149963d338614d498337045df37250fc", + "Value": { + "$ID": "f1cba8f0a145433a882ae3da51e09cef", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b61f2e6a05de4aeea39c5afcab9a81f7", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "cad8dcf6d87f4cde8848455b239b1db7", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "38344dead414494eb6e937f4e92609eb", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "554b34b35355425f904dba7559a4d734", + "Value": { + "$ID": "c562556ec98e420e8836d99e51401d81", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "0e9a2aa87f5145a88614c20910c5c1fe", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "2338a487dc594f1caa8c7b1505cd0733", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "042daa8b3fc84137888feed6bbb26049" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/badge.json b/sdk/widgets/templates/mendix-11.6/badge.json new file mode 100644 index 0000000..ffad45d --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/badge.json @@ -0,0 +1,499 @@ +{ + "widgetId": "com.mendix.widget.custom.badge.Badge", + "name": "Badge", + "version": "11.6.4", + "extractedFrom": "83cca78d-22db-42ca-b240-96bab87b5ea6", + "type": { + "$ID": "9e274f783a54436bad1999dd95a9f280", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/badge", + "ObjectType": { + "$ID": "1384bec123534199b6b0b2ea035a3179", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "555856bea9d141c7aadaf23df5eb80e1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Type", + "Category": "General::General", + "Description": "Render it as either a badge or a color label", + "IsDefault": false, + "PropertyKey": "type", + "ValueType": { + "$ID": "d54f16a9d6f54bd8b451e06a038e255c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "badge", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "5cf56a2cf8a24cb6979ddb96c879dea9", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "badge", + "Caption": "Badge" + }, + { + "$ID": "866da99cec274b4fb63f1cb4295a30ce", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "label", + "Caption": "Label" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "6b20222dc8b941ddb107017f6a2bc754", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "value", + "ValueType": { + "$ID": "0a6295c8d8c1412d9095030900e26c43", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2, + { + "$ID": "80a64a52993c4d2ba148a8432cb87730", + "$Type": "CustomWidgets$WidgetTranslation", + "LanguageCode": "en_US", + "Text": "Badge" + }, + { + "$ID": "f6899968c8db440294eb62f820d8c54d", + "$Type": "CustomWidgets$WidgetTranslation", + "LanguageCode": "nl_NL", + "Text": "Badge" + } + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "e65c75abcd714e5d88a74763e9dee6f7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click", + "Category": "General::Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "onClick", + "ValueType": { + "$ID": "0d3b0d6a38f0447f9269e9c550e5ae5b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "0c671ff171fd4d16b6821397fcae867f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Visibility", + "Description": "", + "IsDefault": false, + "PropertyKey": "Visibility", + "ValueType": { + "$ID": "df23e99e1c0d4edca524d37d36f592bb", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "f34490489f28491494f916246e5530b9", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Name", + "ValueType": { + "$ID": "8ebcf1b818a24d0e84c5d0be34ae0669", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "d59047a500454ca5a68dc0afe9589465", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "TabIndex", + "ValueType": { + "$ID": "42127cc7083640dcbb24f1fd1b8b252e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Display", + "StudioProCategory": "Display", + "SupportedPlatform": "Web", + "WidgetDescription": "", + "WidgetId": "com.mendix.widget.custom.badge.Badge", + "WidgetName": "Badge", + "WidgetNeedsEntityContext": false, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "b191758d8ae74dc5be25ef1e513857af", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "5575e33caa0f4dc691f9a36f850681ed", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "555856bea9d141c7aadaf23df5eb80e1", + "Value": { + "$ID": "e39bcff97aaa43e8a078c07fddaba388", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "68b2569f32444e6b94060b7dfea64452", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "badge", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d54f16a9d6f54bd8b451e06a038e255c", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "72b1ec8f57bc4fa7997a74dced005023", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "6b20222dc8b941ddb107017f6a2bc754", + "Value": { + "$ID": "d83bd4805716412ead67c45d28a6a976", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "fd02c1b48e094a09bb0d41779a8592dd", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "235dffc822594a1f87de620cba444de7", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "882b5aab868845c28636d4209263cfe3", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "ea91ce0f03bd4a1797d0be4c226e7c4b", + "$Type": "Texts$Text", + "Items": [ + 3, + { + "$ID": "85c46a6a2fbb4b289c16dd07643875b6", + "$Type": "Texts$Translation", + "LanguageCode": "en_US", + "Text": "Badge" + }, + { + "$ID": "21ffe4bd98c4413ab3e23c48e2b38082", + "$Type": "Texts$Translation", + "LanguageCode": "nl_NL", + "Text": "Badge" + } + ] + } + }, + "TranslatableValue": null, + "TypePointer": "0a6295c8d8c1412d9095030900e26c43", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "38e37b0f97664122820f2716c5edac92", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "e65c75abcd714e5d88a74763e9dee6f7", + "Value": { + "$ID": "a2a9801284f54255a12603db83e5eab5", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e45b19238900441896af6f6f41fc1da6", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "0d3b0d6a38f0447f9269e9c550e5ae5b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "1384bec123534199b6b0b2ea035a3179" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/badgebutton.json b/sdk/widgets/templates/mendix-11.6/badgebutton.json new file mode 100644 index 0000000..e95d1d3 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/badgebutton.json @@ -0,0 +1,507 @@ +{ + "widgetId": "com.mendix.widget.custom.badgebutton.BadgeButton", + "name": "Badge button", + "version": "11.6.4", + "extractedFrom": "d7f00fd7-1453-4eb8-ac89-0dcd71afafec", + "type": { + "$ID": "831b978fab204e66875cabc5353f9312", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/badge-button", + "ObjectType": { + "$ID": "759eac27ace6401abdb5b40368866420", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "eae62503898249b7a69d806c129bb870", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Caption", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "label", + "ValueType": { + "$ID": "0aa399c331e940bc8f4ad40fb03af4bb", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2, + { + "$ID": "8e4035abba434c43a4f69044e493c9aa", + "$Type": "CustomWidgets$WidgetTranslation", + "LanguageCode": "en_US", + "Text": "Button" + }, + { + "$ID": "52446bf832d8440b8b3049e29709ed71", + "$Type": "CustomWidgets$WidgetTranslation", + "LanguageCode": "nl_NL", + "Text": "Knop" + } + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "855e856443ba4b4e93b8d2b7c4d0c040", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Value", + "Category": "General::Badge", + "Description": "", + "IsDefault": false, + "PropertyKey": "value", + "ValueType": { + "$ID": "91e1594dd5324ffd8059c63212cddf7e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "8a8a7ef4dbf64e509361bc3f22692cab", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Visibility", + "Description": "", + "IsDefault": false, + "PropertyKey": "Visibility", + "ValueType": { + "$ID": "883fdaed681542ba998cb4cea46b26fc", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "58f30ec22b8549a097dc2821bd5b7027", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click", + "Category": "General::Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "onClickEvent", + "ValueType": { + "$ID": "598dcf467ad742eab225dc7dded7d701", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "b0fc71c80db842d59f4f763e2b9b7061", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Name", + "ValueType": { + "$ID": "6c03b03dad20496fb61032bfafba222a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "bcad1f889c184dc5a2b36423aa9f6223", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "TabIndex", + "ValueType": { + "$ID": "fb58e400ce6249c190cfeec46f3e214c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Buttons", + "StudioProCategory": "Buttons", + "SupportedPlatform": "Web", + "WidgetDescription": "", + "WidgetId": "com.mendix.widget.custom.badgebutton.BadgeButton", + "WidgetName": "Badge button", + "WidgetNeedsEntityContext": false, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "0075f56f65c445119c969b92bebebfe3", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "dc6f1bc49b0a4050918c70c8af872848", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "eae62503898249b7a69d806c129bb870", + "Value": { + "$ID": "5bee9ae3cf894b6eaf2913a6594330d8", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "2903bc0c851940d1a800ab599c66129c", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "e3b39d0a093b4cb5a826ab7b892f6880", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "db22afe546be4cf6882fe99b570fe4b1", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "5d57ddde262a4497a180af3dadc507d6", + "$Type": "Texts$Text", + "Items": [ + 3, + { + "$ID": "8c3897cb2f414139a642edb711c3a144", + "$Type": "Texts$Translation", + "LanguageCode": "en_US", + "Text": "Button" + }, + { + "$ID": "1ac06c1b86054a3db0ea1c61629b83c6", + "$Type": "Texts$Translation", + "LanguageCode": "nl_NL", + "Text": "Knop" + } + ] + } + }, + "TranslatableValue": null, + "TypePointer": "0aa399c331e940bc8f4ad40fb03af4bb", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "509a8b3b9a614ee0bf60bab6ca72a23f", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "855e856443ba4b4e93b8d2b7c4d0c040", + "Value": { + "$ID": "e5294180853045b49ad901ed22124404", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "a18939cf12c749a5be7d9e3002912c12", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "636016df8b9f4d15b4f2d04095e7b8a0", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "1b9ee95feb56478b9320a53eb0e173c4", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "070c286b6a2846b98452439a37911821", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "91e1594dd5324ffd8059c63212cddf7e", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "dcf17972ca554ac9b4941be6e4c41972", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "58f30ec22b8549a097dc2821bd5b7027", + "Value": { + "$ID": "dda00f61c34344e8b916aaf7e677acb9", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "6d996a12fec04d01875f9b4da31546da", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "598dcf467ad742eab225dc7dded7d701", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "759eac27ace6401abdb5b40368866420" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/barcodescanner.json b/sdk/widgets/templates/mendix-11.6/barcodescanner.json new file mode 100644 index 0000000..08ec268 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/barcodescanner.json @@ -0,0 +1,1166 @@ +{ + "widgetId": "com.mendix.widget.web.barcodescanner.BarcodeScanner", + "name": "Barcode Scanner", + "version": "11.6.4", + "extractedFrom": "2b7fdb72-6eb1-454d-a802-5aba764b77aa", + "type": { + "$ID": "0da65cbde2944091ac27bbd4ed8407f9", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/barcode-scanner", + "ObjectType": { + "$ID": "0dfe60a187464140b0d34505b18d3cfd", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "3a0f0fb474db4bddb20891d47de45932", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Scanned result", + "Category": "General::General", + "Description": "The String attribute used to store the result of the scanned barcode.", + "IsDefault": false, + "PropertyKey": "datasource", + "ValueType": { + "$ID": "952eed9ce6c04716b07e8eedebf84d7c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "String" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "75a181b291ab421989dc541b1577bb15", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show barcode mask", + "Category": "General::General", + "Description": "Apply a mask to camera view, as a specific target area for the barcode.", + "IsDefault": false, + "PropertyKey": "showMask", + "ValueType": { + "$ID": "086f6704d5524de7b49bdd02247b93b6", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "7da17500358a43f5a932236173fbbd03", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Use all barcode formats", + "Category": "General::General", + "Description": "Scan for all available barcode formats", + "IsDefault": false, + "PropertyKey": "useAllFormats", + "ValueType": { + "$ID": "d535e99996024a6b9c7a8c688637079d", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "099018a4ba2a44119b10880c75cd2404", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Enabled barcode formats", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "barcodeFormats", + "ValueType": { + "$ID": "3837318200964fd69cb4fd1666591d43", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "c42e7d5225084b4e931b5cc13203590a", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "674396265d274d6ca685f9b4c3c70709", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Barcode format", + "Category": "Object list group", + "Description": "Barcode format which should be recognized by the scanner", + "IsDefault": false, + "PropertyKey": "barcodeFormat", + "ValueType": { + "$ID": "d9fdb39a4e1142628d2bf4a04abed200", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "AZTEC", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "96ba85a7621e42d1b46640c9f699edd7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "AZTEC", + "Caption": "Aztec" + }, + { + "$ID": "e37627e8b669466785603ea70d712ec5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "CODE_39", + "Caption": "Code 39" + }, + { + "$ID": "f2b8479601d84db09374b2658e6fc426", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "CODE_128", + "Caption": "Code 128" + }, + { + "$ID": "aeefdcb0fd8046329339adf0c21470be", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "DATA_MATRIX", + "Caption": "Data Matrix" + }, + { + "$ID": "b2edeaa9e4ba4c37a09ff25f7e3a0786", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "EAN_8", + "Caption": "EAN-8" + }, + { + "$ID": "52dae29c49984e1dac71b40e32e1a24e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "EAN_13", + "Caption": "EAN-13" + }, + { + "$ID": "f15401313339418fa8a45f49f8bc911d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "ITF", + "Caption": "ITF" + }, + { + "$ID": "42c7d087b51340bb9d9372240bc4f3b2", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "PDF_417", + "Caption": "PDF 417" + }, + { + "$ID": "3dc754d497274822847a18130dd5dcf6", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "QR_CODE", + "Caption": "QR Code" + }, + { + "$ID": "390bd3b225e346da8d986aec4d46b6b4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "RSS_14", + "Caption": "RSS-14" + }, + { + "$ID": "b75a33ab8bfb400988a8a001aae3cf5e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "UPC_A", + "Caption": "UPC-A" + }, + { + "$ID": "a13092698b924e7ea8e04455f604bec4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "UPC_E", + "Caption": "UPC-E" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + }, + { + "$ID": "22299ce7299d4fd9a480d6b3979336eb", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On detect action", + "Category": "General::Events", + "Description": "Action to trigger when the barcode has been successfully detected.", + "IsDefault": false, + "PropertyKey": "onDetect", + "ValueType": { + "$ID": "192e8584113a4fad828ff361b85edd33", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "21ae491b404b4a21921d0044bcac6f2b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Name", + "ValueType": { + "$ID": "6a34b2c7727143fa8a4399c966070aa5", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "85228b50c51b4dc68eace21d461fd7a1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Visibility", + "ValueType": { + "$ID": "811a93307e044714a7461b76ea06810a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "1bce78118ca041539fbbea0c3d5a18fd", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Width unit", + "Category": "Dimensions::Dimensions", + "Description": "Percentage: portion of parent size. Pixels: absolute amount of pixels.", + "IsDefault": false, + "PropertyKey": "widthUnit", + "ValueType": { + "$ID": "63e15d123c784fd2b367b3ab68863fb1", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "percentage", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "3a79fb42dd304dd6be050dacea0de0d5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentage", + "Caption": "Percentage" + }, + { + "$ID": "36537ec83bef43009429fd7fcc10f164", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "pixels", + "Caption": "Pixels" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "dadbf80510c941e1851f14396a78f611", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Width", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "width", + "ValueType": { + "$ID": "051313616e564aa58390712dd00d6738", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "100", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "278e6f88ca5346dd883fcbd810fe8bd6", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height unit", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "heightUnit", + "ValueType": { + "$ID": "2e634983564149b0b32a8a3f4f700528", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "percentageOfWidth", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "ab858fb381f04c2cb4a3632699552248", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentageOfWidth", + "Caption": "Percentage of width" + }, + { + "$ID": "9b75da9d924442d0843d24a4b1025d98", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "pixels", + "Caption": "Pixels" + }, + { + "$ID": "4707ef93256046b8a2776b385ecf7111", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentageOfParent", + "Caption": "Percentage of parent" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "aac7b8dcc985401e84342fde5eb1b9bf", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "height", + "ValueType": { + "$ID": "e79701ff57fe4747b903c4696d6333d3", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "75", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "21d8dde252ac497b9244c7191f8a14fc", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Detection logic", + "Category": "Advanced", + "Description": "Choose the detection logic to use for barcode scanning.", + "IsDefault": false, + "PropertyKey": "detectionLogic", + "ValueType": { + "$ID": "30992c2695654242b6b27bfc63e30f00", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "native", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "1fe4fb05f8fb4ab083601270e4efa373", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "zxing", + "Caption": "ZXing" + }, + { + "$ID": "0e09eaca0dc043529fb1f959eac8b03a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "native", + "Caption": "BarcodeDetector API (experimental fast scan, fallback to ZXing)" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Images, Videos & Files", + "StudioProCategory": "Images, videos & files", + "SupportedPlatform": "Web", + "WidgetDescription": "The widget lets you scan a barcode", + "WidgetId": "com.mendix.widget.web.barcodescanner.BarcodeScanner", + "WidgetName": "Barcode Scanner", + "WidgetNeedsEntityContext": false, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "0c784a92e130406d8a5bd4e8ffe44dbb", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "1382914ee022455496db32d018f7bcb2", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "3a0f0fb474db4bddb20891d47de45932", + "Value": { + "$ID": "ea29b7a948a84d5395f22d0c58401cbc", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "036a2844205f4c0e8a4ce6fa81272202", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "952eed9ce6c04716b07e8eedebf84d7c", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "5a9082f43aba4c5d80e06c5821bc74d5", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "75a181b291ab421989dc541b1577bb15", + "Value": { + "$ID": "b9314efa2c1d475f89190b95d8549aad", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "57577c3b02b948e3a208fc70ff663d4e", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "086f6704d5524de7b49bdd02247b93b6", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ad0e645da06e4009b7d6b10a8b36b67a", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "7da17500358a43f5a932236173fbbd03", + "Value": { + "$ID": "fbcb5acd5caa48d88c064ffb7b5d2919", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "a4e3a19f058a431ab56de832b6ad850a", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d535e99996024a6b9c7a8c688637079d", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f9c1e1b8afc54913bc80b4e7ef97efa7", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "099018a4ba2a44119b10880c75cd2404", + "Value": { + "$ID": "073fd52946c845cb8f61ffe8ca0f7c4d", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "df21916323cc4ab79d7ce408ba6908af", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "3837318200964fd69cb4fd1666591d43", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "96fc8d3c2f1f416886e7dc3aa37959f7", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "22299ce7299d4fd9a480d6b3979336eb", + "Value": { + "$ID": "04fddda5df8e46e09665deeff97a1bf1", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "262f3bedfe49470b96a068eb2ea327e2", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "192e8584113a4fad828ff361b85edd33", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "dd8f4f3f0577422898289d86a7834615", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1bce78118ca041539fbbea0c3d5a18fd", + "Value": { + "$ID": "e26d837e29c14307acc071704d0bf24b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e07fa120047f4ddaaaec746ef977e7af", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "percentage", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "63e15d123c784fd2b367b3ab68863fb1", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "e08c9f8395e74c969af83f6c7083d3c2", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "dadbf80510c941e1851f14396a78f611", + "Value": { + "$ID": "117ab989793c4d72932255b80f678aa7", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "a2f9ab26b39c4e3589bb62a09b81ad7c", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "100", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "051313616e564aa58390712dd00d6738", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "d8ced11d1f9d4fd496d41fc02e38aa3b", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "278e6f88ca5346dd883fcbd810fe8bd6", + "Value": { + "$ID": "f04160097e174436ba15e6629a79e8af", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "94e636cf112640d9abb51fce2af72bf3", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "percentageOfWidth", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "2e634983564149b0b32a8a3f4f700528", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "cc53d695a8904ed8b1b95a6183e81987", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "aac7b8dcc985401e84342fde5eb1b9bf", + "Value": { + "$ID": "9ad8289f95ca48b7964b6c8723221804", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "9149d1b0e45a4d6c91ba6cd4675d11a3", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "75", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "e79701ff57fe4747b903c4696d6333d3", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "e39c83e58cf042a8b9ff7b2ceec4ffd0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "21d8dde252ac497b9244c7191f8a14fc", + "Value": { + "$ID": "33c4e8b1357f42c4b01b024e1609d3df", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "243f6da117e74a9189dd8d63e5603ed9", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "native", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "30992c2695654242b6b27bfc63e30f00", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "0dfe60a187464140b0d34505b18d3cfd" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/datagrid-number-filter.json b/sdk/widgets/templates/mendix-11.6/datagrid-number-filter.json index 14a6421..7bfdb8a 100644 --- a/sdk/widgets/templates/mendix-11.6/datagrid-number-filter.json +++ b/sdk/widgets/templates/mendix-11.6/datagrid-number-filter.json @@ -214,16 +214,16 @@ "Selection": "None", "SourceVariable": null, "TextTemplate": { - "$ID": "dn2b3c4d5e6f700100000000000001a0", + "$ID": "dd2b3c4d5e6f700100000000000001a0", "$Type": "Forms$ClientTemplate", "Fallback": { - "$ID": "dn2b3c4d5e6f700100000000000001a1", + "$ID": "dd2b3c4d5e6f700100000000000001a1", "$Type": "Texts$Text", "Items": [] }, "Parameters": [], "Template": { - "$ID": "dn2b3c4d5e6f700100000000000001a2", + "$ID": "dd2b3c4d5e6f700100000000000001a2", "$Type": "Texts$Text", "Items": [] } @@ -408,16 +408,16 @@ "Selection": "None", "SourceVariable": null, "TextTemplate": { - "$ID": "dn2b3c4d5e6f700200000000000002a0", + "$ID": "dd2b3c4d5e6f700200000000000002a0", "$Type": "Forms$ClientTemplate", "Fallback": { - "$ID": "dn2b3c4d5e6f700200000000000002a1", + "$ID": "dd2b3c4d5e6f700200000000000002a1", "$Type": "Texts$Text", "Items": [] }, "Parameters": [], "Template": { - "$ID": "dn2b3c4d5e6f700200000000000002a2", + "$ID": "dd2b3c4d5e6f700200000000000002a2", "$Type": "Texts$Text", "Items": [] } @@ -458,16 +458,16 @@ "Selection": "None", "SourceVariable": null, "TextTemplate": { - "$ID": "dn2b3c4d5e6f700300000000000003a0", + "$ID": "dd2b3c4d5e6f700300000000000003a0", "$Type": "Forms$ClientTemplate", "Fallback": { - "$ID": "dn2b3c4d5e6f700300000000000003a1", + "$ID": "dd2b3c4d5e6f700300000000000003a1", "$Type": "Texts$Text", "Items": [] }, "Parameters": [], "Template": { - "$ID": "dn2b3c4d5e6f700300000000000003a2", + "$ID": "dd2b3c4d5e6f700300000000000003a2", "$Type": "Texts$Text", "Items": [] } diff --git a/sdk/widgets/templates/mendix-11.6/dropdownsort.json b/sdk/widgets/templates/mendix-11.6/dropdownsort.json new file mode 100644 index 0000000..b8762e4 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/dropdownsort.json @@ -0,0 +1,639 @@ +{ + "widgetId": "com.mendix.widget.web.dropdownsort.DropdownSort", + "name": "Drop-down sort", + "version": "11.6.4", + "extractedFrom": "3e6abfe6-e8c3-4838-b48d-cdd7f8b149ca", + "type": { + "$ID": "b8d2cfee37f041bdb27d0f52e1c441ea", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/modules/gallery#4-1-drop-down-sort", + "ObjectType": { + "$ID": "120d8afba5974cf99e480a01d4d08435", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "f1317b894e584171a81633aa5933dbad", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Datasource to sort", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "linkedDs", + "ValueType": { + "$ID": "cba23601493c447789c45b4f6c4896f9", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": true, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "DataSource" + } + }, + { + "$ID": "18e941e4bc844383bfa790bc44a02e55", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Attributes", + "Category": "General::General", + "Description": "Select the attributes that the end-user may use for sorting", + "IsDefault": false, + "PropertyKey": "attributes", + "ValueType": { + "$ID": "9106343841054369a847e4227361ffd2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "e4db6891f0d44c17bc6d89da43e91c44", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "17d9dc1382384ee8b29bf93cb31451a1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Attribute", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "attribute", + "ValueType": { + "$ID": "6ac38d55045f40fda4e9c1716898cb9e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "AutoNumber", + "Decimal", + "Integer", + "Long", + "String", + "DateTime", + "Boolean", + "Enum" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "../linkedDs", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": true, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "8dd13272e9d34c51902fad4a019c7200", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Caption", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "caption", + "ValueType": { + "$ID": "afd5231dcf7f4bba9f29cab873884270", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + }, + { + "$ID": "7c6936425498455db0dd42a47af5677b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Empty option caption", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "emptyOptionCaption", + "ValueType": { + "$ID": "7cd7cb7785854635bcd4cbebfcce2627", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "7bfb6190781e477ba2b17c8aae1e9b83", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Sort order button caption", + "Category": "Accessibility::Accessibility", + "Description": "Assistive technology will read this upon reaching the sort order button.", + "IsDefault": false, + "PropertyKey": "screenReaderButtonCaption", + "ValueType": { + "$ID": "24868f84769c47fdaad17c819eebabbb", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "39aecd9929a341288d999dacf28076c5", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Input caption", + "Category": "Accessibility::Accessibility", + "Description": "Assistive technology will read this upon reaching the input element.", + "IsDefault": false, + "PropertyKey": "screenReaderInputCaption", + "ValueType": { + "$ID": "d505fbf7f4144d26b944fbbb3beeca02", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Data Controls", + "StudioProCategory": "Data controls", + "SupportedPlatform": "Web", + "WidgetDescription": "", + "WidgetId": "com.mendix.widget.web.dropdownsort.DropdownSort", + "WidgetName": "Drop-down sort", + "WidgetNeedsEntityContext": false, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "c1b4ad6d38034c52b74aeb8321d63091", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "097120e02eca4ca78fdf848b94c4484e", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "f1317b894e584171a81633aa5933dbad", + "Value": { + "$ID": "8b198bf471624db7940bcefef66005d7", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "8921998978db44bf82a6e8a4d8296fef", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "cba23601493c447789c45b4f6c4896f9", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f9c6726497d343259c6ec029c16fa391", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "18e941e4bc844383bfa790bc44a02e55", + "Value": { + "$ID": "9f9855fa934b4ab9be85e68df7e27131", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b5cf12d2ca664a3a9347991da7095b1b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "9106343841054369a847e4227361ffd2", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "71777e7b80a6489a910d127dafd81011", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "7c6936425498455db0dd42a47af5677b", + "Value": { + "$ID": "32f3f1b2257f4c2796ff09844df4ee65", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "3e8d720c804b4073bd8c6c1c4fc6e72d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "002d5e7109054cceb5b89ebb55290a0e", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "0d7965479ba34d85b87a7f13f092d38e", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "e4a06a73e1154e78adc9d60429f59ca8", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "7cd7cb7785854635bcd4cbebfcce2627", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "7ad2f4ea70064eb5bf3714e96e71f827", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "7bfb6190781e477ba2b17c8aae1e9b83", + "Value": { + "$ID": "c089d516ebdf4f87b40b75cfe2e9a3fb", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "6a30f33b302f4037a5abc986fe5efff2", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "df3430a3658a44f68640966c1df833e2", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "02f7fb8b26aa4c14beb2d2424d3e9f0f", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "8080d89f48c04b07ad59ce605010f4fb", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "24868f84769c47fdaad17c819eebabbb", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "919216cc133d4a5ab1dc19789bee5b40", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "39aecd9929a341288d999dacf28076c5", + "Value": { + "$ID": "8dd70193e57a4613b7580425a9266718", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "72275b3561484e39a4de1ae0cf4a2286", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "663075078d7b4d6fa11824b14ce9a66a", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "3f91a97ea8de4532a4bdc80681fad4a9", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "bbd4b555ca4e45189d3dbe7e272d4933", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "d505fbf7f4144d26b944fbbb3beeca02", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "120d8afba5974cf99e480a01d4d08435" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/fieldset.json b/sdk/widgets/templates/mendix-11.6/fieldset.json new file mode 100644 index 0000000..cc4b715 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/fieldset.json @@ -0,0 +1,377 @@ +{ + "widgetId": "com.mendix.widget.web.fieldset.Fieldset", + "name": "Fieldset", + "version": "11.6.4", + "extractedFrom": "c7be9537-45f5-45aa-92fc-ed052b6bc496", + "type": { + "$ID": "57f63fba7eed476ca88ec2a7a111615a", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/fieldset", + "ObjectType": { + "$ID": "5b8c60c42faa4be6b21a505fe61ab011", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "30701ee7121e4b00b8e989357cc518f1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Legend", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "legend", + "ValueType": { + "$ID": "61a0d2eb60e54d4eb5531cda780f8527", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "cb9f346f01e242ac99e160e81301e58c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Content", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "content", + "ValueType": { + "$ID": "0d4d0760e07e41198451e55e1c765956", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "5a53214b2c7b4498bbe330648d2a272d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Visibility", + "Description": "", + "IsDefault": false, + "PropertyKey": "Visibility", + "ValueType": { + "$ID": "942420ac761f462d823138582bfa2e6d", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "60b78f670fb847aca1db6cf27c3f81e5", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Name", + "ValueType": { + "$ID": "783e577574304b8f813556471558e25c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "c3e4042892474f00beab3314c88ee89b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "TabIndex", + "ValueType": { + "$ID": "66c4f0b8294a4000bdb104d918b8f1d4", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Input Elements", + "StudioProCategory": "Input elements", + "SupportedPlatform": "Web", + "WidgetDescription": "", + "WidgetId": "com.mendix.widget.web.fieldset.Fieldset", + "WidgetName": "Fieldset", + "WidgetNeedsEntityContext": false, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "ba3c16b1e3624aa983bdfa5604ea1df1", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "4b07816381454d91ae4984d53244b6b4", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "30701ee7121e4b00b8e989357cc518f1", + "Value": { + "$ID": "7c1c9436296348d991a139024bdf5bb6", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "30cb1e0eff6a4c36997a1f1c35a62f9f", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "6b5582a828044a92958cf61cf2f72163", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "d430d87568bf40a4b5a859c118ecc767", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "04a70387bf11476e832e71b7699eca88", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "61a0d2eb60e54d4eb5531cda780f8527", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "0d18a2f006bc4d00aac5876e6d73557e", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "cb9f346f01e242ac99e160e81301e58c", + "Value": { + "$ID": "e8a026251eb34eea81f89bd9208803ea", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "89ec9566217f4928bc16e5e8c6c2b3ae", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "0d4d0760e07e41198451e55e1c765956", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "5b8c60c42faa4be6b21a505fe61ab011" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/gallery.json b/sdk/widgets/templates/mendix-11.6/gallery.json index c3c48fa..350f959 100644 --- a/sdk/widgets/templates/mendix-11.6/gallery.json +++ b/sdk/widgets/templates/mendix-11.6/gallery.json @@ -58,28 +58,13 @@ "DataSource": { "$ID": "1e4694c2700d4a5da47f590dc70517e9", "$Type": "CustomWidgets$CustomWidgetXPathSource", - "EntityRef": { - "$ID": "3056e3d4a12b48ac8c58e43144a8b80b", - "$Type": "DomainModels$DirectEntityRef", - "Entity": "PgTest.Customer" - }, + "EntityRef": null, "ForceFullObjects": false, "SortBar": { "$ID": "19fd730b1ce74ebd89e6535328b94913", "$Type": "Forms$GridSortBar", "SortItems": [ - 2, - { - "$ID": "b05e121b081c453191d5ede425af0c61", - "$Type": "Forms$GridSortItem", - "AttributeRef": { - "$ID": "3a7b8c4b0eb14c5c8ae7980083eb86f6", - "$Type": "DomainModels$AttributeRef", - "Attribute": "PgTest.Customer.Name", - "EntityRef": null - }, - "SortOrder": "Ascending" - } + 2 ] }, "SourceVariable": null, @@ -246,148 +231,7 @@ "TranslatableValue": null, "TypePointer": "5cadb97bf49546a5afaee593b6d2f398", "Widgets": [ - 2, - { - "$ID": "6b55ceb70c324de0b6fb45b4c8b607e6", - "$Type": "Forms$DynamicText", - "Appearance": { - "$ID": "29b23d288c944097a8c4cfa52f1a835f", - "$Type": "Forms$Appearance", - "Class": "", - "DesignProperties": [ - 3 - ], - "DynamicClasses": "", - "Style": "" - }, - "ConditionalVisibilitySettings": null, - "Content": { - "$ID": "a5347beef24a402d9c18485d1382b0f8", - "$Type": "Forms$ClientTemplate", - "Fallback": { - "$ID": "6550515be4a74d1c8925eaa9402dad13", - "$Type": "Texts$Text", - "Items": [ - 3 - ] - }, - "Parameters": [ - 2 - ], - "Template": { - "$ID": "bdcc89f4c6a149fbb3692a831ee79169", - "$Type": "Texts$Text", - "Items": [ - 3, - { - "$ID": "38704f9f3d244012a04ef123530ec4c6", - "$Type": "Texts$Translation", - "LanguageCode": "en_US", - "Text": "{Name}" - } - ] - } - }, - "Name": "custName", - "NativeAccessibilitySettings": null, - "NativeTextStyle": "Text", - "RenderMode": "Text", - "TabIndex": 0 - }, - { - "$ID": "e77bb30cf56b4e2c84e5701eda0dd6b9", - "$Type": "Forms$DynamicText", - "Appearance": { - "$ID": "6483460c2b0f4162b0f19fcbb95843a8", - "$Type": "Forms$Appearance", - "Class": "", - "DesignProperties": [ - 3 - ], - "DynamicClasses": "", - "Style": "" - }, - "ConditionalVisibilitySettings": null, - "Content": { - "$ID": "bfb041bf438f4f30b00169d597bdced9", - "$Type": "Forms$ClientTemplate", - "Fallback": { - "$ID": "0d65fe67ebdf45e2b12b2986844b32d2", - "$Type": "Texts$Text", - "Items": [ - 3 - ] - }, - "Parameters": [ - 2 - ], - "Template": { - "$ID": "e233d87f63d7499f86010ebbacc33484", - "$Type": "Texts$Text", - "Items": [ - 3, - { - "$ID": "f2f9b086e2c3437081bc8f0fab7a15c3", - "$Type": "Texts$Translation", - "LanguageCode": "en_US", - "Text": "{Email}" - } - ] - } - }, - "Name": "custEmail", - "NativeAccessibilitySettings": null, - "NativeTextStyle": "Text", - "RenderMode": "Text", - "TabIndex": 0 - }, - { - "$ID": "ea0d34709e764cbf8bfc0fef444d0a29", - "$Type": "Forms$DynamicText", - "Appearance": { - "$ID": "87b73ea2217a449fb3140280329142cc", - "$Type": "Forms$Appearance", - "Class": "", - "DesignProperties": [ - 3 - ], - "DynamicClasses": "", - "Style": "" - }, - "ConditionalVisibilitySettings": null, - "Content": { - "$ID": "1c7c58e85d4c4a0080a6fa119815e43a", - "$Type": "Forms$ClientTemplate", - "Fallback": { - "$ID": "c69c01faf4274af38df74a319233089a", - "$Type": "Texts$Text", - "Items": [ - 3 - ] - }, - "Parameters": [ - 2 - ], - "Template": { - "$ID": "7b0c1431871045088a12244653901dfc", - "$Type": "Texts$Text", - "Items": [ - 3, - { - "$ID": "a6ff0b28f0fe439ba2c4be400fd7efac", - "$Type": "Texts$Translation", - "LanguageCode": "en_US", - "Text": "{City}" - } - ] - } - }, - "Name": "custCity", - "NativeAccessibilitySettings": null, - "NativeTextStyle": "Text", - "RenderMode": "Text", - "TabIndex": 0 - } + 2 ], "XPathConstraint": "" } diff --git a/sdk/widgets/templates/mendix-11.6/htmlelement.json b/sdk/widgets/templates/mendix-11.6/htmlelement.json new file mode 100644 index 0000000..c83a0a0 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/htmlelement.json @@ -0,0 +1,2723 @@ +{ + "widgetId": "com.mendix.widget.web.htmlelement.HTMLElement", + "name": "HTML Element", + "version": "11.6.4", + "extractedFrom": "c8276e45-b488-4a96-bf97-6779dabb9790", + "type": { + "$ID": "140e3e654c8a4174ad1013a033a87fff", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/htmlelement", + "ObjectType": { + "$ID": "9eff0a9186c84b9f806909f4ce05074e", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "62ebe9c3314e49da894ffe8571bf648c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tag name", + "Category": "General::HTML element", + "Description": "", + "IsDefault": false, + "PropertyKey": "tagName", + "ValueType": { + "$ID": "de627189f12d44ff8544d485beca832e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "div", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "745a8eb8adae4a91aba46a939a8f559e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "div", + "Caption": "div" + }, + { + "$ID": "6a82fb5ec12543f69af6e43e24a79a4a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "span", + "Caption": "span" + }, + { + "$ID": "6c104f347366481f87c117808192d347", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "p", + "Caption": "p" + }, + { + "$ID": "0a3aba0c732e41aba6a89e19d91a22a6", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "ul", + "Caption": "ul" + }, + { + "$ID": "2eb03d4ae5f24749a2b75c33191b3ac1", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "ol", + "Caption": "ol" + }, + { + "$ID": "9ee5536b5ac24c629de1c14718cab5b1", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "li", + "Caption": "li" + }, + { + "$ID": "98607bdccf6c4da281c8d890bb0281d0", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "a", + "Caption": "a" + }, + { + "$ID": "65bbe4f3e79f4461807d24aeb3a71134", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "img", + "Caption": "img" + }, + { + "$ID": "8a2d7f72b6bf4170908595a7b5a8bfe1", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "h1", + "Caption": "h1" + }, + { + "$ID": "f1c2ea0b4cc741dcb0f7719c8d298c0a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "h2", + "Caption": "h2" + }, + { + "$ID": "a0062f79ec54486cb4c4fc720f69e3e7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "h3", + "Caption": "h3" + }, + { + "$ID": "4a57fd8230114bbda1ed955e9fa6e459", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "h4", + "Caption": "h4" + }, + { + "$ID": "1c42867c2f6c40ee8f4ea060c4909cf2", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "h5", + "Caption": "h5" + }, + { + "$ID": "c30d7c67dc3145448cec6ce26746a4ee", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "h6", + "Caption": "h6" + }, + { + "$ID": "9861366505f942cdbc0838b4e68b286e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "__customTag__", + "Caption": "Use custom name" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "a667e0a50f7c45d3b24fb63a6d7817e0", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Custom tag", + "Category": "General::HTML element", + "Description": "", + "IsDefault": false, + "PropertyKey": "tagNameCustom", + "ValueType": { + "$ID": "0111ed2547cd419ba03f8db23e4be3e8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "div", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + }, + { + "$ID": "a710678d5c34478cba15ec23732c28b9", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Repeat element", + "Category": "General::HTML element", + "Description": "Repeat element for each item in data source.", + "IsDefault": false, + "PropertyKey": "tagUseRepeat", + "ValueType": { + "$ID": "d73a18adc15649f3beb06117a63acbe2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "ad3d8d8e1bdf4ebe8ca7c986e8a14c0b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Data source", + "Category": "General::HTML element", + "Description": "", + "IsDefault": false, + "PropertyKey": "tagContentRepeatDataSource", + "ValueType": { + "$ID": "fd92cd4f02614494b02894f94b443268", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "DataSource" + } + }, + { + "$ID": "f708f35ab1a4411c9223d3ceef3729d7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Content", + "Category": "General::HTML element", + "Description": "", + "IsDefault": false, + "PropertyKey": "tagContentMode", + "ValueType": { + "$ID": "76a063ead93a4237a4c0dddc6f88dc81", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "container", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "77102354b9e940d9b8ba1ddf6add5f10", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "container", + "Caption": "Container for widgets" + }, + { + "$ID": "2c576aa025984036a24636bcd13371eb", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "innerHTML", + "Caption": "HTML" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "9fc1be7221e74c179ef5682a4b647dc9", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "HTML", + "Category": "General::HTML element", + "Description": "", + "IsDefault": false, + "PropertyKey": "tagContentHTML", + "ValueType": { + "$ID": "edca5b43e8644cd6a7babe04e334e543", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": true, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "298b6067ae484064ad7c2dde6c327b85", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Content", + "Category": "General::HTML element", + "Description": "", + "IsDefault": false, + "PropertyKey": "tagContentContainer", + "ValueType": { + "$ID": "5de72ea0bb4a4366b2a27f221f012582", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "da6bbe716fc44cbdb86bc362102f5817", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "HTML", + "Category": "General::HTML element", + "Description": "", + "IsDefault": false, + "PropertyKey": "tagContentRepeatHTML", + "ValueType": { + "$ID": "c6876ed9e0984185807545c007358207", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "tagContentRepeatDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": true, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "02c28e671b5544399939118564eadb48", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Content", + "Category": "General::HTML element", + "Description": "", + "IsDefault": false, + "PropertyKey": "tagContentRepeatContainer", + "ValueType": { + "$ID": "7bd9f6abb6a04e0ebce046651c3876f6", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "tagContentRepeatDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "710f85e985524f17a0d53a1104518b2d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Attributes", + "Category": "General::HTML attributes", + "Description": "The HTML attributes that are added to the HTML element. For example: ‘title‘, ‘href‘. If ‘class’ or ‘style’ is added as attribute this is merged with the widget class/style property. For events (e.g. onClick) use the Events section.", + "IsDefault": false, + "PropertyKey": "attributes", + "ValueType": { + "$ID": "f81a352a90ce40ee967742f44ec8d5c2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "0c7166b9731349b59dc7894874711355", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "b432009582994e80a50f25c5d0e4066e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Name", + "Category": "Attributes", + "Description": "", + "IsDefault": false, + "PropertyKey": "attributeName", + "ValueType": { + "$ID": "cb1ac89cf4de43239d94474c546ad9a8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + }, + { + "$ID": "b66420acb7b74eaaa976304b293da3ae", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Value based on", + "Category": "Attributes", + "Description": "", + "IsDefault": false, + "PropertyKey": "attributeValueType", + "ValueType": { + "$ID": "f451034c5ccd4efe8a93767e474fdcce", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "expression", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "b634f957a7ae4cd3a5a548ed366008aa", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + }, + { + "$ID": "a8fef238c86a4e2ea124291659559360", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "template", + "Caption": "Text template" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "fb3b944f7b9649c692aee42a61f5037e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Value", + "Category": "Attributes", + "Description": "", + "IsDefault": false, + "PropertyKey": "attributeValueTemplate", + "ValueType": { + "$ID": "39489dfce04b4ed9a23c9ba0756a72c8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "0351558d3f6a4c8f91ed16199b3f9ad1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Value", + "Category": "Attributes", + "Description": "", + "IsDefault": false, + "PropertyKey": "attributeValueExpression", + "ValueType": { + "$ID": "df254738e41a4728b96b9cecfcad7c60", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "ad656bfc1d384586a6b1fcff4e05aea6", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "ef3bc8b02e7d4e208a0cad595242de9d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Value", + "Category": "Attributes", + "Description": "", + "IsDefault": false, + "PropertyKey": "attributeValueTemplateRepeat", + "ValueType": { + "$ID": "fdc8d66fd5b5411b80f31eda2a382bab", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "../tagContentRepeatDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "65d8203f50704084baf7c66ac005b9ef", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Value", + "Category": "Attributes", + "Description": "", + "IsDefault": false, + "PropertyKey": "attributeValueExpressionRepeat", + "ValueType": { + "$ID": "52cfc59726954074ada07704ca64e057", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "../tagContentRepeatDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "e15a32ae19264f5d9ce896a2af18b6e9", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + }, + { + "$ID": "1411c33495a74f288e99278409d4199c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Events", + "Category": "Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "events", + "ValueType": { + "$ID": "7b60fcc7cf0c447aa73c3bd0ff3db62c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "9e8c3c0815534b178710603b289c578a", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "473b9e0a22704cf0940f8bbb8713bc4a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Name", + "Category": "Event", + "Description": "", + "IsDefault": false, + "PropertyKey": "eventName", + "ValueType": { + "$ID": "101b15e134d34294810eb7dccdc2ed94", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "onClick", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "16aa2ce3382c4c72bafa4302450b2269", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onAbort", + "Caption": "onAbort" + }, + { + "$ID": "ecdca3ae296d47299ac667df6d525c3a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onAbortCapture", + "Caption": "onAbortCapture" + }, + { + "$ID": "317486f339084853aace05580e9d1957", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onAnimationEnd", + "Caption": "onAnimationEnd" + }, + { + "$ID": "2ce5e35673a0468bab8667fca06bd9f2", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onAnimationEndCapture", + "Caption": "onAnimationEndCapture" + }, + { + "$ID": "98696cdf2ef54ef3b173f64648f18d68", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onAnimationIteration", + "Caption": "onAnimationIteration" + }, + { + "$ID": "f9351199a2a74af6b0b37bf999814694", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onAnimationIterationCapture", + "Caption": "onAnimationIterationCapture" + }, + { + "$ID": "6ea1b6f992af49d59017b49d013efcdd", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onAnimationStart", + "Caption": "onAnimationStart" + }, + { + "$ID": "b1d98a45724a4dd39e7f3c844cffbd6b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onAnimationStartCapture", + "Caption": "onAnimationStartCapture" + }, + { + "$ID": "bd35d9e2056248d395e5f4d8ec64ec9f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onAuxClick", + "Caption": "onAuxClick" + }, + { + "$ID": "5f18c6a5310042c1b5eaabe93e764d74", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onAuxClickCapture", + "Caption": "onAuxClickCapture" + }, + { + "$ID": "5f376a9ea4ed4ff38959fe7c65cafc1f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onBeforeInput", + "Caption": "onBeforeInput" + }, + { + "$ID": "732bb09f939048d2af5ae4c3769db891", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onBeforeInputCapture", + "Caption": "onBeforeInputCapture" + }, + { + "$ID": "221f84e9786547149b88b0a6f1d9e7fd", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onBlur", + "Caption": "onBlur" + }, + { + "$ID": "891ee37aaad24779b9695b368ea28733", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onBlurCapture", + "Caption": "onBlurCapture" + }, + { + "$ID": "0a463e859e374f4ca240420ff87c35d5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCanPlay", + "Caption": "onCanPlay" + }, + { + "$ID": "628cf4b384024e2caee22df103614115", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCanPlayCapture", + "Caption": "onCanPlayCapture" + }, + { + "$ID": "61e4d294850f4f659082578ee7457853", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCanPlayThrough", + "Caption": "onCanPlayThrough" + }, + { + "$ID": "9cb0b8c82b464452980df41e9e2e304c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCanPlayThroughCapture", + "Caption": "onCanPlayThroughCapture" + }, + { + "$ID": "ebbae824bab9412a83d4acc376f6fa89", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onChange", + "Caption": "onChange" + }, + { + "$ID": "8edb852d3a0840a3a448695efc4f9285", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onChangeCapture", + "Caption": "onChangeCapture" + }, + { + "$ID": "79b50ff304b34fae9f31a234e2cf8c36", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onClick", + "Caption": "onClick" + }, + { + "$ID": "113b6cb010ea442b9e56e143b655be60", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onClickCapture", + "Caption": "onClickCapture" + }, + { + "$ID": "fe2d3219b5744f858cc7cb9dba51861f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCompositionEnd", + "Caption": "onCompositionEnd" + }, + { + "$ID": "2eb79f7ccbb74cddaf2640771fe9ed55", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCompositionEndCapture", + "Caption": "onCompositionEndCapture" + }, + { + "$ID": "6883a83259c8409285796f08133b452b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCompositionStart", + "Caption": "onCompositionStart" + }, + { + "$ID": "88352a563bf94878974fb9707c85654d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCompositionStartCapture", + "Caption": "onCompositionStartCapture" + }, + { + "$ID": "61455408f63041e1b334f2f923b555cf", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCompositionUpdate", + "Caption": "onCompositionUpdate" + }, + { + "$ID": "54a5b438d25b49dc823470f1629858d5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCompositionUpdateCapture", + "Caption": "onCompositionUpdateCapture" + }, + { + "$ID": "a702d6d3a14c450d8ec4954015d1073a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onContextMenu", + "Caption": "onContextMenu" + }, + { + "$ID": "826d110cacab4490a6b6dbd4f8a98c52", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onContextMenuCapture", + "Caption": "onContextMenuCapture" + }, + { + "$ID": "59d748b7d3fd40dbace0f4aa930cf2f2", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCopy", + "Caption": "onCopy" + }, + { + "$ID": "b0e4787e401347478000baefb93f12bb", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCopyCapture", + "Caption": "onCopyCapture" + }, + { + "$ID": "c147b7e571b14b41a18626581102f8c2", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCut", + "Caption": "onCut" + }, + { + "$ID": "0be4c8a071114dbe95aefcc9395a63e8", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onCutCapture", + "Caption": "onCutCapture" + }, + { + "$ID": "0b9c2a9c3cd64f089d4805677113aa8f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDoubleClick", + "Caption": "onDoubleClick" + }, + { + "$ID": "aea01328e7434cea9e60aef609f4cc78", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDoubleClickCapture", + "Caption": "onDoubleClickCapture" + }, + { + "$ID": "7264620d539049c09f8c4c38df67c537", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDrag", + "Caption": "onDrag" + }, + { + "$ID": "54bb174d971241e488b64b66a74a0e15", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragCapture", + "Caption": "onDragCapture" + }, + { + "$ID": "0792197528b34436bebb6c3cc5075d63", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragEnd", + "Caption": "onDragEnd" + }, + { + "$ID": "32f9c923e16b4c4aa961ef6c52bc3e8b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragEndCapture", + "Caption": "onDragEndCapture" + }, + { + "$ID": "a30e5786d581402899c60b84fa60ead1", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragEnter", + "Caption": "onDragEnter" + }, + { + "$ID": "b7bb5db1459b450ea0d23d241ac64a64", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragEnterCapture", + "Caption": "onDragEnterCapture" + }, + { + "$ID": "95080fd7e9a94084a747470f57c3b633", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragExit", + "Caption": "onDragExit" + }, + { + "$ID": "2f94c4e005f141da891f89c7f0309b31", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragExitCapture", + "Caption": "onDragExitCapture" + }, + { + "$ID": "137d0af02ab244239418aff5569cf14e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragLeave", + "Caption": "onDragLeave" + }, + { + "$ID": "2949e8b28960485a94cc671c60668165", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragLeaveCapture", + "Caption": "onDragLeaveCapture" + }, + { + "$ID": "81d7430a7e6544b9a0f7515f187e07a5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragOver", + "Caption": "onDragOver" + }, + { + "$ID": "70203334d4ef4894a5daa24be4b4d7a6", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragOverCapture", + "Caption": "onDragOverCapture" + }, + { + "$ID": "315e6ff4d37941d0b73243f40b4291d9", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragStart", + "Caption": "onDragStart" + }, + { + "$ID": "3e0afd28321447ccb7651b3bfe2dd90f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDragStartCapture", + "Caption": "onDragStartCapture" + }, + { + "$ID": "1f794e0d88c9486592391a390d9d5ba3", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDrop", + "Caption": "onDrop" + }, + { + "$ID": "9f129473df884d13b143e19d377fc985", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDropCapture", + "Caption": "onDropCapture" + }, + { + "$ID": "299fa7ed82004948a4548e5b7480f813", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDurationChange", + "Caption": "onDurationChange" + }, + { + "$ID": "bf6d7a97192c45b5883c80750b841332", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onDurationChangeCapture", + "Caption": "onDurationChangeCapture" + }, + { + "$ID": "1669174bb20d4ab592f65f9e0ba267ee", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onEmptied", + "Caption": "onEmptied" + }, + { + "$ID": "465f073847544a01b0283f45be19beed", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onEmptiedCapture", + "Caption": "onEmptiedCapture" + }, + { + "$ID": "27c171679f9145e4b5d012221c22345a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onEncrypted", + "Caption": "onEncrypted" + }, + { + "$ID": "35e564421be04f268e74c198b15f179e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onEncryptedCapture", + "Caption": "onEncryptedCapture" + }, + { + "$ID": "4f265e8715da45bf9debd03618d35017", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onEnded", + "Caption": "onEnded" + }, + { + "$ID": "4a3d85a91a404068b9fb53258ae4fe71", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onEndedCapture", + "Caption": "onEndedCapture" + }, + { + "$ID": "267bbef13c184e4a98720c690bcf1eb3", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onError", + "Caption": "onError" + }, + { + "$ID": "70ce3c257ed34282a624b189cf4eb80d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onErrorCapture", + "Caption": "onErrorCapture" + }, + { + "$ID": "60ef040d550244538db14d3a23f92660", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onFocus", + "Caption": "onFocus" + }, + { + "$ID": "c15e5591312d4027b25909dd5474328e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onFocusCapture", + "Caption": "onFocusCapture" + }, + { + "$ID": "7dd99a4cd72e4e7f8412cf53c13c70d8", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onGotPointerCapture", + "Caption": "onGotPointerCapture" + }, + { + "$ID": "b1e77ad1785d40ad960681c166a03d30", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onGotPointerCaptureCapture", + "Caption": "onGotPointerCaptureCapture" + }, + { + "$ID": "bfca6a0b87f4418cb0234f95b5fb8604", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onInput", + "Caption": "onInput" + }, + { + "$ID": "b7127ba611cf4ff7b35971fb2235f665", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onInputCapture", + "Caption": "onInputCapture" + }, + { + "$ID": "a4beb7df04594576a4d30c7075f6638d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onInvalid", + "Caption": "onInvalid" + }, + { + "$ID": "3403695cb9644d54bbd0b0491cf7e3e0", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onInvalidCapture", + "Caption": "onInvalidCapture" + }, + { + "$ID": "5d9b5dc178ef468a913f0f363bfee1c8", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onKeyDown", + "Caption": "onKeyDown" + }, + { + "$ID": "db0817375da54913857767dbd64adacf", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onKeyDownCapture", + "Caption": "onKeyDownCapture" + }, + { + "$ID": "f1a43d405796498ab8bdbcabfad61760", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onKeyPress", + "Caption": "onKeyPress" + }, + { + "$ID": "04968500807b4f27a3096cc616e72177", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onKeyPressCapture", + "Caption": "onKeyPressCapture" + }, + { + "$ID": "9cc8322c5c494cda902ec2b2900c9bae", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onKeyUp", + "Caption": "onKeyUp" + }, + { + "$ID": "ea6f4de9b45b4561b80ab81244c150c8", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onKeyUpCapture", + "Caption": "onKeyUpCapture" + }, + { + "$ID": "af8e3ee33f534c2180267038088c8e11", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLeave", + "Caption": "onLeave" + }, + { + "$ID": "5dfc1cb4f4f84e1a99d832ee25c30aff", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLoad", + "Caption": "onLoad" + }, + { + "$ID": "f6fddc6cbaa149ec8551e72ad29852a5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLoadCapture", + "Caption": "onLoadCapture" + }, + { + "$ID": "10673995e81b4bdab7f61c17df13610d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLoadedData", + "Caption": "onLoadedData" + }, + { + "$ID": "69221601be7a46bdad0da216db9a7bac", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLoadedDataCapture", + "Caption": "onLoadedDataCapture" + }, + { + "$ID": "ca18b76ebda74cd5b955546ab5a1fde9", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLoadedMetadata", + "Caption": "onLoadedMetadata" + }, + { + "$ID": "2a83f883602a41f796d767d305bce9e5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLoadedMetadataCapture", + "Caption": "onLoadedMetadataCapture" + }, + { + "$ID": "ec896cd0866a476ea7ba7281e6145704", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLoadStart", + "Caption": "onLoadStart" + }, + { + "$ID": "64315215d96c4711a10aa5342bd38498", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLoadStartCapture", + "Caption": "onLoadStartCapture" + }, + { + "$ID": "189acd94c6d640d2af1f3faa07013f7a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLostPointerCapture", + "Caption": "onLostPointerCapture" + }, + { + "$ID": "71a550d1735f406e80008306e92919aa", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onLostPointerCaptureCapture", + "Caption": "onLostPointerCaptureCapture" + }, + { + "$ID": "df7cd19a02214675b044e8c2c14485fa", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseDown", + "Caption": "onMouseDown" + }, + { + "$ID": "cfaf681510c24c04949800960cabdca3", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseDownCapture", + "Caption": "onMouseDownCapture" + }, + { + "$ID": "264387b021e34bca8c39416e49459d39", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseEnter", + "Caption": "onMouseEnter" + }, + { + "$ID": "dbb0a76cf4c246dfb6e6a55874310440", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseLeave", + "Caption": "onMouseLeave" + }, + { + "$ID": "b66be07c438c43b4826c6ca8d0fc3fdb", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseMove", + "Caption": "onMouseMove" + }, + { + "$ID": "5e58d6f3c49c4f15875087c05aeb284e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseMoveCapture", + "Caption": "onMouseMoveCapture" + }, + { + "$ID": "3e161864949745f194d350c7b6042619", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseOut", + "Caption": "onMouseOut" + }, + { + "$ID": "3f658069a5834acbb920501a21e083df", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseOutCapture", + "Caption": "onMouseOutCapture" + }, + { + "$ID": "56cc1f89bc2948cdaa56de33c6ce9968", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseOver", + "Caption": "onMouseOver" + }, + { + "$ID": "46da9928e9a948c5aed9a1a05e2d56c7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseOverCapture", + "Caption": "onMouseOverCapture" + }, + { + "$ID": "629af293eefd489cb91ea96ecba7e17f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseUp", + "Caption": "onMouseUp" + }, + { + "$ID": "d6faa0aa62da4854b488d20a10bc081b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onMouseUpCapture", + "Caption": "onMouseUpCapture" + }, + { + "$ID": "16a3b71a9e15457b9b1b410aaba467e3", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPaste", + "Caption": "onPaste" + }, + { + "$ID": "4d8c16281ae24d9d91bcdc76cfe5137e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPasteCapture", + "Caption": "onPasteCapture" + }, + { + "$ID": "9cc088419a0845bf856632cd76052969", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPause", + "Caption": "onPause" + }, + { + "$ID": "6e35a458ab684e718c5a5a7b74306262", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPauseCapture", + "Caption": "onPauseCapture" + }, + { + "$ID": "ee8173c186e2470a89364ff160a8963f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPlay", + "Caption": "onPlay" + }, + { + "$ID": "86a515580ce44cc090a818c83491039a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPlayCapture", + "Caption": "onPlayCapture" + }, + { + "$ID": "ba0b388d66f14da28f82532122c6d828", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPlaying", + "Caption": "onPlaying" + }, + { + "$ID": "e57935d0fbbe487bac35521cae33ed6c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPlayingCapture", + "Caption": "onPlayingCapture" + }, + { + "$ID": "132c7cb1b0a94e5f8edd346d38711c7c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerCancel", + "Caption": "onPointerCancel" + }, + { + "$ID": "47ac1d0c3449452ca1122c0e31462ad3", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerCancelCapture", + "Caption": "onPointerCancelCapture" + }, + { + "$ID": "b362ac1eb7f648228dc22fd5fdc74d02", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerDown", + "Caption": "onPointerDown" + }, + { + "$ID": "e8c2f65237184744a1857461b1dc3e23", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerDownCapture", + "Caption": "onPointerDownCapture" + }, + { + "$ID": "8cf61ac7eaf74ba79c88b23c15b3f626", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerEnter", + "Caption": "onPointerEnter" + }, + { + "$ID": "2b19ad84edcb436dbb4d942163828ece", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerEnterCapture", + "Caption": "onPointerEnterCapture" + }, + { + "$ID": "776124d295ef481e91ddf40470fa60a6", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerLeave", + "Caption": "onPointerLeave" + }, + { + "$ID": "36c52929c4624db4ab15db02705afb52", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerLeaveCapture", + "Caption": "onPointerLeaveCapture" + }, + { + "$ID": "c4ac07373d894c3dacdb7a82b21bee0b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerMove", + "Caption": "onPointerMove" + }, + { + "$ID": "46cbce29a6e941ceaa8309f81300e24f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerMoveCapture", + "Caption": "onPointerMoveCapture" + }, + { + "$ID": "744ba4b789894f2c968943a2a5fe564e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerOut", + "Caption": "onPointerOut" + }, + { + "$ID": "ef747e7138724f26bdce67bc24e726f7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerOutCapture", + "Caption": "onPointerOutCapture" + }, + { + "$ID": "da58706b36444c149579c78060db97ce", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerOver", + "Caption": "onPointerOver" + }, + { + "$ID": "b45c8fb42f684903a3e61a7cae9384a8", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerOverCapture", + "Caption": "onPointerOverCapture" + }, + { + "$ID": "0366b3c944e54ca4a19bee892217af81", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerUp", + "Caption": "onPointerUp" + }, + { + "$ID": "d07c700466bd4156a54cf2229ce14450", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onPointerUpCapture", + "Caption": "onPointerUpCapture" + }, + { + "$ID": "d71b53e0f3b141a5886841ce206178a6", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onProgress", + "Caption": "onProgress" + }, + { + "$ID": "420cc31c17eb41818435b6a7d3d3c637", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onProgressCapture", + "Caption": "onProgressCapture" + }, + { + "$ID": "e799b6218d844dbbb9da6d153d13257a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onRateChange", + "Caption": "onRateChange" + }, + { + "$ID": "df6f918ab6ea4c41942e0ce7b79e2629", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onRateChangeCapture", + "Caption": "onRateChangeCapture" + }, + { + "$ID": "538320405d9c40ce8b4bf5a7ee900833", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onReset", + "Caption": "onReset" + }, + { + "$ID": "e236d3bd8f684c108979f8add3ee800e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onResetCapture", + "Caption": "onResetCapture" + }, + { + "$ID": "e51537bfdbca4c16875071ec814a3859", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onScroll", + "Caption": "onScroll" + }, + { + "$ID": "87b93b666a4447889fb5ef64bfff137a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onScrollCapture", + "Caption": "onScrollCapture" + }, + { + "$ID": "ee4a824453fc46ec98f6248616eb96d4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onSeeked", + "Caption": "onSeeked" + }, + { + "$ID": "0997e3c3f99d4b8db2230c27e1e227ca", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onSeekedCapture", + "Caption": "onSeekedCapture" + }, + { + "$ID": "802856de81a4487e9a97c5dabd743dc9", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onSeeking", + "Caption": "onSeeking" + }, + { + "$ID": "d4871d1219d74d91ba89dc046d2f21fb", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onSeekingCapture", + "Caption": "onSeekingCapture" + }, + { + "$ID": "d001f13bc00342da879b42cb35f11899", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onSelect", + "Caption": "onSelect" + }, + { + "$ID": "31a3820422b349658879e65c8ed6d013", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onSelectCapture", + "Caption": "onSelectCapture" + }, + { + "$ID": "a4139c3f2c8341d3906e10831dbf7cf2", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onStalled", + "Caption": "onStalled" + }, + { + "$ID": "60e41587ac1a4dbca98388de8a923185", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onStalledCapture", + "Caption": "onStalledCapture" + }, + { + "$ID": "9d71276e1b8843b59b4a06d3f5c56128", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onSubmit", + "Caption": "onSubmit" + }, + { + "$ID": "597680fc5f7a46ea90e6272c205fef45", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onSubmitCapture", + "Caption": "onSubmitCapture" + }, + { + "$ID": "574f15cf92df41cb9c92325c1b1914d5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onSuspend", + "Caption": "onSuspend" + }, + { + "$ID": "13049e7d4e9e47019907af2add329c4f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onSuspendCapture", + "Caption": "onSuspendCapture" + }, + { + "$ID": "46044b9025254e81b088027bb96d3f2c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTimeUpdate", + "Caption": "onTimeUpdate" + }, + { + "$ID": "236b2c595369468f9aad1e894aa070ac", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTimeUpdateCapture", + "Caption": "onTimeUpdateCapture" + }, + { + "$ID": "c3477e89c85f450abc94a653ed654ef3", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTouchCancel", + "Caption": "onTouchCancel" + }, + { + "$ID": "76b8f7b37d4e48aab2c1a3f0bb4c6ec6", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTouchCancelCapture", + "Caption": "onTouchCancelCapture" + }, + { + "$ID": "ed22a80a4b624fccb6102742802617ab", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTouchEnd", + "Caption": "onTouchEnd" + }, + { + "$ID": "d53f0d0863df4d748e199f12289ab63c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTouchEndCapture", + "Caption": "onTouchEndCapture" + }, + { + "$ID": "9f13011e85784500a6119a5e1c6d0472", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTouchMove", + "Caption": "onTouchMove" + }, + { + "$ID": "fab7eb0879f74523b3920c2776e76061", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTouchMoveCapture", + "Caption": "onTouchMoveCapture" + }, + { + "$ID": "7d4cda439aae45af9474bb93badba1d1", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTouchStart", + "Caption": "onTouchStart" + }, + { + "$ID": "41108db7d4bc4eabbde83fcba0f0dea8", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTouchStartCapture", + "Caption": "onTouchStartCapture" + }, + { + "$ID": "fa2da4c477f84c2ca19134f6d3b063ac", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTransitionEnd", + "Caption": "onTransitionEnd" + }, + { + "$ID": "a9df598244374c34a78a0f589c61acb5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onTransitionEndCapture", + "Caption": "onTransitionEndCapture" + }, + { + "$ID": "9e87c9a928b64a5d8eae12699ef760de", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onVolumeChange", + "Caption": "onVolumeChange" + }, + { + "$ID": "48aa847dab104f998d75a3146e25a8f3", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onVolumeChangeCapture", + "Caption": "onVolumeChangeCapture" + }, + { + "$ID": "6c2df58cf00e442984c0935a50ff0c3e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onWaiting", + "Caption": "onWaiting" + }, + { + "$ID": "68b287a81a8140638e3520bb969d715d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onWaitingCapture", + "Caption": "onWaitingCapture" + }, + { + "$ID": "b1fef6c3a7084a6295cbae8a74caacb3", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onWheel", + "Caption": "onWheel" + }, + { + "$ID": "6bc3b79927d74c7f89d73ecdc36ad496", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onWheelCapture", + "Caption": "onWheelCapture" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "8b662f7fb59e42598326e9dda4f0137d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Action", + "Category": "Event", + "Description": "", + "IsDefault": false, + "PropertyKey": "eventAction", + "ValueType": { + "$ID": "cf76d2c5d86e4094ae949987acc62d7e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "21284a2b8136403e9df08c672652d3c9", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Action", + "Category": "Event", + "Description": "", + "IsDefault": false, + "PropertyKey": "eventActionRepeat", + "ValueType": { + "$ID": "167dd30119f9415481e9c1ab7e634874", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "../tagContentRepeatDataSource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "e73856204a5041e199b3fff8959ae043", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Stop propagation", + "Category": "Advanced", + "Description": "", + "IsDefault": false, + "PropertyKey": "eventStopPropagation", + "ValueType": { + "$ID": "f09edd579b5d4c959c445bb2f528cb17", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "81d6ddcbbe3b46edb6df71e11048287b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Prevent default", + "Category": "Advanced", + "Description": "", + "IsDefault": false, + "PropertyKey": "eventPreventDefault", + "ValueType": { + "$ID": "4000c658ecda494d966da0301ceb2513", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + }, + { + "$ID": "9c00d155cdfe41d1adb9803f939a26db", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Sanitization configuration", + "Category": "Advanced::HTML Sanitization", + "Description": "Configuration for HTML sanitization in JSON format. Leave blank for default.", + "IsDefault": false, + "PropertyKey": "sanitizationConfigFull", + "ValueType": { + "$ID": "7dbe171472494720a7d70bc012807799", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": true, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "", + "StudioProCategory": "", + "SupportedPlatform": "Web", + "WidgetDescription": "Displays custom HTML", + "WidgetId": "com.mendix.widget.web.htmlelement.HTMLElement", + "WidgetName": "HTML Element", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "7d959f4bcc834d7ab28516a917bf625f", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "6d59404bb0f249e9b91b81d01768ed0c", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "62ebe9c3314e49da894ffe8571bf648c", + "Value": { + "$ID": "b374963170754774bcdaae37dbd272c8", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c3219a4e1b644441ae9190dc12880d85", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "div", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "de627189f12d44ff8544d485beca832e", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f42d4913c72540f19e953b2be729c5d0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "a667e0a50f7c45d3b24fb63a6d7817e0", + "Value": { + "$ID": "b20f28e2e8b247959c898ca1bf48b474", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "3753d2aabc154ca6bcce2e92560369e7", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "div", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "0111ed2547cd419ba03f8db23e4be3e8", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "bcef8290b06e49e287888a9e6bec5b40", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "a710678d5c34478cba15ec23732c28b9", + "Value": { + "$ID": "9ebec4cddc204eb19bcb9941fd73c3d5", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "06d25ca9f0514774b850d85f15d3d14d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d73a18adc15649f3beb06117a63acbe2", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "1016612efe5148078f010f6a256e7dd1", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ad3d8d8e1bdf4ebe8ca7c986e8a14c0b", + "Value": { + "$ID": "bac9eca8c2d7435ba462df6a89d06ab5", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "6973f2727d1b4bbb892a526eba1761c2", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "fd92cd4f02614494b02894f94b443268", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "39c75a7bb49745f8be1513b76aefe48f", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "f708f35ab1a4411c9223d3ceef3729d7", + "Value": { + "$ID": "59fb8e000e7b4500930aca763c383b95", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "57965a8dd3ca4003a4a041796ed505ea", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "container", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "76a063ead93a4237a4c0dddc6f88dc81", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "95d7f2fc488c424690ca581123ea95de", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "9fc1be7221e74c179ef5682a4b647dc9", + "Value": { + "$ID": "1cc7a1526d694147b3bd3e7a7fe76278", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "4582c3f52e6d43768450f66b06781da0", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "edca5b43e8644cd6a7babe04e334e543", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "edeb7acc383843cea5b36461d278f0a7", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "298b6067ae484064ad7c2dde6c327b85", + "Value": { + "$ID": "baa41685d45f4ef29cab412037b76d83", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "bb0ac4fd603a422a9f2d6773f336a94b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "5de72ea0bb4a4366b2a27f221f012582", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "6057d375583c4f4fae69d866d4b32de0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "da6bbe716fc44cbdb86bc362102f5817", + "Value": { + "$ID": "73141cc069504ddabcae9139549c9b3f", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b2a868e06b704850b81b08f61833fe7a", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "c6876ed9e0984185807545c007358207", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f4916d98b2a541a39ddc51c6f7f1dc61", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "02c28e671b5544399939118564eadb48", + "Value": { + "$ID": "26c411b426274a0797a4aed94f54f70f", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "70deb6593d5747908826239c99a0d108", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7bd9f6abb6a04e0ebce046651c3876f6", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "2d7d0d89debb410bb2d62b75df6a050a", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "710f85e985524f17a0d53a1104518b2d", + "Value": { + "$ID": "c51bcbcf432c4dd2a52dfa1236ec113a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "386fd1b9905d4f2c84bcfbf30156d359", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f81a352a90ce40ee967742f44ec8d5c2", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "bd4c5d591faa4ff0869ffb2d98509990", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1411c33495a74f288e99278409d4199c", + "Value": { + "$ID": "5755a0e33b2f4589b63f56208af58d8e", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "2a0a3b3342ff4e358d4c2b12375dd2f1", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7b60fcc7cf0c447aa73c3bd0ff3db62c", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "8e4fd75859614216a4215b67d61afe43", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "9c00d155cdfe41d1adb9803f939a26db", + "Value": { + "$ID": "c1bce4c4188f4103afcc206376a416d5", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "9fcf09ac328b4f6eb469299c3f2a7035", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7dbe171472494720a7d70bc012807799", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "9eff0a9186c84b9f806909f4ce05074e" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/languageselector.json b/sdk/widgets/templates/mendix-11.6/languageselector.json new file mode 100644 index 0000000..fc62e87 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/languageselector.json @@ -0,0 +1,614 @@ +{ + "widgetId": "com.mendix.widget.web.languageselector.LanguageSelector", + "name": "Language selector", + "version": "11.6.4", + "extractedFrom": "5348da5f-bef0-44ff-abbe-4d1364158f8a", + "type": { + "$ID": "48240cf99fad4691a8c3f54fd911770e", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/languageSelector", + "ObjectType": { + "$ID": "6347e118092b46e1a6a5eb838ef329ed", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "05feafd261b24295a376e30348869393", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Data source", + "Category": "General::Languages", + "Description": "Recommended: Database data source with System.Language as entity.", + "IsDefault": false, + "PropertyKey": "languageOptions", + "ValueType": { + "$ID": "6633ecfa09e0433497781d69e2b51ecb", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "DataSource" + } + }, + { + "$ID": "ebc68c2ad5aa4eacb5417cc5639a1863", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Language caption", + "Category": "General::Languages", + "Description": "Recommended: $currentObject/Description.", + "IsDefault": false, + "PropertyKey": "languageCaption", + "ValueType": { + "$ID": "418907e112e64436a84a422c6dd64524", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "languageOptions", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": { + "$ID": "087fc6d252bc47779501778a22b9b8ef", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "da0d53f094fc45e89b344518ecec05cc", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Menu position", + "Category": "General::General", + "Description": "The location of the menu relative to the current selected language (click area).", + "IsDefault": false, + "PropertyKey": "position", + "ValueType": { + "$ID": "bd10b1cb65dd4cec99e745c057a2da3b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "bottom", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "0798040cbcef47999232a54f48b02b91", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "left", + "Caption": "Left" + }, + { + "$ID": "1dcf1b7ab82846db9f1647835b862361", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "right", + "Caption": "Right" + }, + { + "$ID": "777afbb376794471a86e33918e7ad632", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "top", + "Caption": "Top" + }, + { + "$ID": "69ccf32469854a148c9876478fe28f02", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "bottom", + "Caption": "Bottom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "bc670b5465bc4230b800c91d86f45b22", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Open menu on", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "trigger", + "ValueType": { + "$ID": "2d7df91b2e4f4e0e9e1f396b673a82fa", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "click", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "c1d6c282314345568f05c6959e76fb89", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "click", + "Caption": "Click" + }, + { + "$ID": "b92225a0cf744022af338df99a51a259", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "hover", + "Caption": "Hover" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "c9a33da70cc44373a4f13da3bb201775", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Hide for single language", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "hideForSingle", + "ValueType": { + "$ID": "f683ce4a2c164b23960a258f29c959da", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "93060ff899854bee903edf598ac8bb7e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Label caption", + "Category": "Accessibility::Accessibility", + "Description": "Assistive technology will read this upon reaching the input element.", + "IsDefault": false, + "PropertyKey": "screenReaderLabelCaption", + "ValueType": { + "$ID": "da2843955a574165bb65817b022c979a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Display", + "StudioProCategory": "Display", + "SupportedPlatform": "Web", + "WidgetDescription": "", + "WidgetId": "com.mendix.widget.web.languageselector.LanguageSelector", + "WidgetName": "Language selector", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "f520c6ac32d34ce5bbe02c9751e191ac", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "9a6f92c6c65d4a1680f896084a307cf5", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "05feafd261b24295a376e30348869393", + "Value": { + "$ID": "3266864c926c46b8b1456ef4fa99bfed", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "525c1ac4607e486da96076f54223070f", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "6633ecfa09e0433497781d69e2b51ecb", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "5e3a9fa2e21a46e9ad37654e9d42dd57", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ebc68c2ad5aa4eacb5417cc5639a1863", + "Value": { + "$ID": "6064ff39cd0e42cf873ad004cee1060f", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "f15459de79254b22973b6a830eb06668", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "418907e112e64436a84a422c6dd64524", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "44ae987c3b1d4fa89e736995ee5dbddb", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "da0d53f094fc45e89b344518ecec05cc", + "Value": { + "$ID": "d05793fe02a040d48ba205000d2fca00", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "db7618670a6b4f36a612a018454d4d81", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "bottom", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "bd10b1cb65dd4cec99e745c057a2da3b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "5b3bfe06796744bab341fb9d95d02311", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "bc670b5465bc4230b800c91d86f45b22", + "Value": { + "$ID": "aff75f1c379a4119b39dc525d0ab2209", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "585203e4f24b46769076cbfcf6fdf240", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "click", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "2d7df91b2e4f4e0e9e1f396b673a82fa", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f064b115eae84c49a63f59ee8a367b9c", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "c9a33da70cc44373a4f13da3bb201775", + "Value": { + "$ID": "1ddca95edb9f4e28b46122831bdad726", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7f23f548b4004f92bf52313f80f3b20d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f683ce4a2c164b23960a258f29c959da", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "c50f54ee83784623b2b7441b6540955b", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "93060ff899854bee903edf598ac8bb7e", + "Value": { + "$ID": "1fa5bb133ff8418f8e1a42dbde8005f8", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "ffd1fffae8404309b48f2116e96ada68", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "777d7d7cd44c45d1abe89ad8738c282a", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "1931aaa9f5d64b6bbc3859db75a15442", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "123f7b3050fa4559a4dd656c281b3dc1", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "da2843955a574165bb65817b022c979a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "6347e118092b46e1a6a5eb838ef329ed" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/maps.json b/sdk/widgets/templates/mendix-11.6/maps.json new file mode 100644 index 0000000..cccfe02 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/maps.json @@ -0,0 +1,3031 @@ +{ + "widgetId": "com.mendix.widget.custom.Maps.Maps", + "name": "Maps", + "version": "11.6.4", + "extractedFrom": "ad99db47-e255-4c75-a357-b4a640b8102d", + "type": { + "$ID": "e61e8793c7a94d25834a0f978312b045", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/maps", + "ObjectType": { + "$ID": "79d8d2282f5848d8ad35b780bc0d626d", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "c1627ee4cd764d80bbb304a2a64b19a3", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Enable advanced options", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "advanced", + "ValueType": { + "$ID": "5062ba1991f14b2bb9a655b5840171d5", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "96bb496725da4cbb80c39ecd84d3d57b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Marker", + "Category": "General::Markers", + "Description": "A list of static locations on the map.", + "IsDefault": false, + "PropertyKey": "markers", + "ValueType": { + "$ID": "c2c4645da38a4a5bad2e7865e33c7da6", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "7e88d1ced1124310915c90c8b58fba37", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "e74c28433232473893b079f9fec0dde2", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Location", + "Category": "Locations::Location", + "Description": "", + "IsDefault": false, + "PropertyKey": "locationType", + "ValueType": { + "$ID": "4e08ffb2193f45878205102161071c1a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "address", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "de5a5117db2745028cd5fe2e402da47d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "address", + "Caption": "Based on address" + }, + { + "$ID": "9b5c189ca0754ee2a917205ba07cbbe5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "latlng", + "Caption": "Based on latitude and longitude" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "2f610d5da874430cb9a3c5b99770f08e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Address", + "Category": "Locations::Location", + "Description": "Address containing (a subset of) street, number, zipcode, city and country.", + "IsDefault": false, + "PropertyKey": "address", + "ValueType": { + "$ID": "89d2ef821da84894a74332596b298b2a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "4a1871948275470db6a562922106e436", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Latitude", + "Category": "Locations::Location", + "Description": "Decimal number from -90.0 to 90.0.", + "IsDefault": false, + "PropertyKey": "latitude", + "ValueType": { + "$ID": "095e918d8ebe4868b1af1eb68aa25346", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "44a2b1455b4947649206176361e5bef8", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Longitude", + "Category": "Locations::Location", + "Description": "Decimal number from -180.0 to 180.0.", + "IsDefault": false, + "PropertyKey": "longitude", + "ValueType": { + "$ID": "5248445486544bfb98710db09c83703c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "283556f9c8a94f678dd8c389880fbd35", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Title", + "Category": "Locations::Location", + "Description": "Title displayed when clicking the marker.", + "IsDefault": false, + "PropertyKey": "title", + "ValueType": { + "$ID": "4c8515c6e07c4522b286144a714337dd", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "9fbb9d7549494d07a55b3a9aed708167", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click", + "Category": "Locations::Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "onClick", + "ValueType": { + "$ID": "9fcc18431d6a4eeaae1205f9b3f9093b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "a40f4f0eb7944204ad16975934c40ca4", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Marker style", + "Category": "Locations::Visualization", + "Description": "", + "IsDefault": false, + "PropertyKey": "markerStyle", + "ValueType": { + "$ID": "56fb8e9dcc7b4d41a3d76376fdbd1d3f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "default", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "8403f7729afd4bcb87904c9e0c40158c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "default", + "Caption": "Default" + }, + { + "$ID": "9f2daa9fb6634de6bab7ba831720f1e8", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "image", + "Caption": "Image" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "6678dc68ff18466d83c76c55efea60c3", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Image", + "Category": "Locations::Visualization", + "Description": "Image that replaces the default icon.", + "IsDefault": false, + "PropertyKey": "customMarker", + "ValueType": { + "$ID": "fe8dd0ac375e439980e93212ee6f0ce6", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Image" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + }, + { + "$ID": "efde290a2f9145d6bfa7acb2ade8a990", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Marker list", + "Category": "General::Markers", + "Description": "A list of markers showing dynamic locations on the map.", + "IsDefault": false, + "PropertyKey": "dynamicMarkers", + "ValueType": { + "$ID": "14d5bef75ec94db1995e8200dcb13e28", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "25cc64bda3c0419896de07f5eaca16bd", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "f2553e0260084d0b918475ec73b61bf7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Data source", + "Category": "Locations::Location", + "Description": "", + "IsDefault": false, + "PropertyKey": "markersDS", + "ValueType": { + "$ID": "c750addd81fa4bfe8bf1dfe5b8819a23", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "DataSource" + } + }, + { + "$ID": "acc98270cc024bcf80ba0b2c91154375", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Location", + "Category": "Locations::Location", + "Description": "", + "IsDefault": false, + "PropertyKey": "locationType", + "ValueType": { + "$ID": "9281c7c4146d44ba897571c8221b079b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "address", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "030f654f211c4791892a054697a6ce00", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "address", + "Caption": "Based on address" + }, + { + "$ID": "ec0b1ac3f25b449694a011e25feed4d3", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "latlng", + "Caption": "Based on latitude and longitude" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "4b719379959e4defbb8c2bf003d2f857", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Address", + "Category": "Locations::Location", + "Description": "Address containing (a subset of) street, number, zipcode, city and country.", + "IsDefault": false, + "PropertyKey": "address", + "ValueType": { + "$ID": "ac417c9d9a754c278b02ba1d384873a8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "String" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "markersDS", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "6cb234f97b7748e4ad05c286f828339d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Latitude", + "Category": "Locations::Location", + "Description": "Decimal number from -90.0 to 90.0.", + "IsDefault": false, + "PropertyKey": "latitude", + "ValueType": { + "$ID": "2d74ea55bd1d4a15b4fac70072d82450", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Decimal" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "markersDS", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "fe2bdfeea0134d64aec3a3e39472d53d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Longitude", + "Category": "Locations::Location", + "Description": "Decimal number from -180.0 to 180.0.", + "IsDefault": false, + "PropertyKey": "longitude", + "ValueType": { + "$ID": "70f9675d7db249b49308f170f434b08c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Decimal" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "markersDS", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "ad0f39400dd14fde9d301de627238f8a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Title", + "Category": "Locations::Location", + "Description": "Title displayed when clicking the marker.", + "IsDefault": false, + "PropertyKey": "title", + "ValueType": { + "$ID": "893441c419fc4084972b9e7c15afe724", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "String" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "markersDS", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "c5203f159a99476c815d8c4e14f62ac6", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click", + "Category": "Locations::Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "onClickAttribute", + "ValueType": { + "$ID": "f42c1d09b74644c78b43db7234bd5af0", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "markersDS", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "68bf93cfb19947cfaaa17dca3bbebddc", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Marker style", + "Category": "Locations::Visualization", + "Description": "", + "IsDefault": false, + "PropertyKey": "markerStyleDynamic", + "ValueType": { + "$ID": "4ff0d328eba84d7b8f29d2e36b2c2d5e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "default", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "b98c24a7b9054693af6cf61badccf526", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "default", + "Caption": "Default" + }, + { + "$ID": "2af857f04ad9453eb12cfe5091baf41c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "image", + "Caption": "Image" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "616ae72c74f64e23adede6010e90e0ef", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Image", + "Category": "Locations::Visualization", + "Description": "Image that replaces the default icon.", + "IsDefault": false, + "PropertyKey": "customMarkerDynamic", + "ValueType": { + "$ID": "7cf49c660afa49509d62442f7a485a18", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Image" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + }, + { + "$ID": "b6136d0be7a340518187169ec00b465d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "API Key", + "Category": "General::Configurations", + "Description": "API Key for usage of the map through the selected provider.Google Maps - https://developers.google.com/maps/documentation/javascript/get-api-key Map Box - https://docs.mapbox.com/help/getting-started/access-tokens/ Here Maps - https://developer.here.com/tutorials/getting-here-credentials/", + "IsDefault": false, + "PropertyKey": "apiKey", + "ValueType": { + "$ID": "09be00d8f1224d1780e01f809cede4f1", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + }, + { + "$ID": "1c59d9d6a67047c5a40e6fc8b978a52d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "API Key", + "Category": "General::Configurations", + "Description": "API Key for usage of the map through the selected provider.Google Maps - https://developers.google.com/maps/documentation/javascript/get-api-key Map Box - https://docs.mapbox.com/help/getting-started/access-tokens/ Here Maps - https://developer.here.com/tutorials/getting-here-credentials/", + "IsDefault": false, + "PropertyKey": "apiKeyExp", + "ValueType": { + "$ID": "1d0ca1807b7a4c188901b1001a93d843", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "bb062c94387c42a0987fae1806890976", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "1fc75220f0094e6aacdbc7359d1763e0", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Geo location API key", + "Category": "General::Configurations", + "Description": "Used to translate addresses to latitude and longitude. This API Key should be a Google Geocoding API Key found in https://developers.google.com/maps/documentation/geocoding/overview", + "IsDefault": false, + "PropertyKey": "geodecodeApiKey", + "ValueType": { + "$ID": "f0ba21e99e7a4956822a0af45241f80c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + }, + { + "$ID": "0d23929280b44d4b96f4fe2506565269", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Geo location API key", + "Category": "General::Configurations", + "Description": "Used to translate addresses to latitude and longitude. This API Key should be a Google Geocoding API Key found in https://developers.google.com/maps/documentation/geocoding/overview", + "IsDefault": false, + "PropertyKey": "geodecodeApiKeyExp", + "ValueType": { + "$ID": "01f318fdbcb74b3c96f4123991443967", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "82f6edf49ecd47d689df367f089a618b", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "3e446fd397b542f58292fdc09dd2fcdb", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show current location marker", + "Category": "General::Configurations", + "Description": "Shows the user current location marker.", + "IsDefault": false, + "PropertyKey": "showCurrentLocation", + "ValueType": { + "$ID": "a28bc879e4c34593a3e6878c351f4ca9", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "3c9ebc02957344339dec23e766471396", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Drag", + "Category": "Controls::General", + "Description": "The center will move when end-users drag the map.", + "IsDefault": false, + "PropertyKey": "optionDrag", + "ValueType": { + "$ID": "fefaf6ed6f80470b8a6fcd9b8a9b7c94", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "f8bb3d60a7af4d9397360938fe798fb0", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Scroll to zoom", + "Category": "Controls::General", + "Description": "The map is zoomed with a mouse scroll.", + "IsDefault": false, + "PropertyKey": "optionScroll", + "ValueType": { + "$ID": "e5662314569345b1803fb73d7c4ab430", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "935e370a95464770bf6ab8d29ed447ef", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Zoom", + "Category": "Controls::General", + "Description": "Show zoom controls [ + ] [ - ].", + "IsDefault": false, + "PropertyKey": "optionZoomControl", + "ValueType": { + "$ID": "b0b80411e3124191a92100cbe93e3db8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "618c187a7d9444cd99c058239bd1e44d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Attribution control", + "Category": "Controls::General", + "Description": "Add attributions to the map (credits).", + "IsDefault": false, + "PropertyKey": "attributionControl", + "ValueType": { + "$ID": "d5bb7676542f43388ccc3dfc718e552a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "4382be42783e472188087566985ea82e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Street view", + "Category": "Controls::General", + "Description": "Enables the Street View control.", + "IsDefault": false, + "PropertyKey": "optionStreetView", + "ValueType": { + "$ID": "4d014e7183f84350adf356e0841c93f1", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "68761f13194f4fa78a91a933493dc79d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Map type", + "Category": "Controls::General", + "Description": "Enables switching between different map types.", + "IsDefault": false, + "PropertyKey": "mapTypeControl", + "ValueType": { + "$ID": "faa643358be24c8f9fc1e6a0c9931a99", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "74e1a477405a428aaa7c171040ded18d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Full screen", + "Category": "Controls::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "fullScreenControl", + "ValueType": { + "$ID": "4b80cff0ad2542da9471af0dde5a7ce0", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "28459429a6c84171a985e7ab12ae5b15", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Rotate", + "Category": "Controls::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "rotateControl", + "ValueType": { + "$ID": "8aeac75979f441a9a859d2220a6987e4", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "fbee14175814430081d1838607fe598c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Width unit", + "Category": "Dimensions::Dimensions", + "Description": "Percentage: portion of parent size. Pixels: absolute amount of pixels.", + "IsDefault": false, + "PropertyKey": "widthUnit", + "ValueType": { + "$ID": "261f821d00864615bd250604183f8088", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "percentage", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "b987d91471794413b51dd88cd5e31a8a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentage", + "Caption": "Percentage" + }, + { + "$ID": "10f6e81523214840884bd69210154c90", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "pixels", + "Caption": "Pixels" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "a3891f06592d4eb2b4ab58a6708f135b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Width", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "width", + "ValueType": { + "$ID": "82e33d7c012e4890bfc90069f764f474", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "100", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "29dad9f049d8488d9baa6b6269152d87", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height unit", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "heightUnit", + "ValueType": { + "$ID": "fb10229a44ea4bf38317da9e0abcdeef", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "percentageOfWidth", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "6780c46a3a184c419198ac36ab0a43dd", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentageOfWidth", + "Caption": "Percentage of width" + }, + { + "$ID": "63ccf957b54745138583ec889925be05", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "pixels", + "Caption": "Pixels" + }, + { + "$ID": "14d71a46c95c42798788443e1322eeb6", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentageOfParent", + "Caption": "Percentage of parent" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "ea79bfe2b31c4624b96fd3ff0e65711e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "height", + "ValueType": { + "$ID": "9a51e03cde754a299d811b1f2282a0ad", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "75", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "bf5c7591417440148511fc0f6bf85a45", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Zoom level", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "zoom", + "ValueType": { + "$ID": "8827712fc9334098bea294b6d9bb1e20", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "automatic", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "03d8de308c9a43c18fe7d68277bca9ec", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "automatic", + "Caption": "Automatic" + }, + { + "$ID": "4d0b99816dfa458a8a8ecce691b3433f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "world", + "Caption": "World" + }, + { + "$ID": "ff5ab1ff9fef4f039e97b566b718949c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "continent", + "Caption": "Continent" + }, + { + "$ID": "3b19e53d94e6405cb4a0289d9dbd3064", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "city", + "Caption": "City" + }, + { + "$ID": "42c9010bd63747a49250fd0eb0e55659", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "street", + "Caption": "Street" + }, + { + "$ID": "96f24b2db1ac40929aac0992aa07407b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "buildings", + "Caption": "Buildings" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "d5a6fb461ece46e3a3beee3b75828965", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Map provider", + "Category": "Advanced::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "mapProvider", + "ValueType": { + "$ID": "bd04a24174a645f8843b6dbcdeb2343f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "googleMaps", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "856dc481ceab479f896b5494ae630f86", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "googleMaps", + "Caption": "Google Maps" + }, + { + "$ID": "ff72b6e7008b47278342c4e8efaa9c79", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "openStreet", + "Caption": "Open street" + }, + { + "$ID": "53b11afb6ed148a7a7bdf684ec99c009", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "mapBox", + "Caption": "Map box" + }, + { + "$ID": "61b9e617077449678e1beced5793e54b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "hereMaps", + "Caption": "Here Maps" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "812fcdda6cfe4725825271a11ed4bf40", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Google MapId key", + "Category": "Advanced::General", + "Description": "Used to render and style the Google map. This MapId key from Google can be found in https://developers.google.com/maps/documentation/get-map-id", + "IsDefault": false, + "PropertyKey": "googleMapId", + "ValueType": { + "$ID": "d9b6b067fb74419d8c0884faffe79c30", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "String" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Display", + "StudioProCategory": "Display", + "SupportedPlatform": "Web", + "WidgetDescription": "Custom description please", + "WidgetId": "com.mendix.widget.custom.Maps.Maps", + "WidgetName": "Maps", + "WidgetNeedsEntityContext": false, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "58a5cd1f2d5e467abc707e6be92a3a33", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "d8b26ae66d1941a59db1c3831f1f9ed7", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "c1627ee4cd764d80bbb304a2a64b19a3", + "Value": { + "$ID": "873cd45e09e345139c82dfd9fcf9666b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "2b6917c46b7044689bdbbca85571a374", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "5062ba1991f14b2bb9a655b5840171d5", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "cac2f8d11a03428ba337a170ff5c7d47", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "96bb496725da4cbb80c39ecd84d3d57b", + "Value": { + "$ID": "679a04c9167c40f585b0abd9ba63abc3", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "f6facb452e464f89af6b26ffdcc5194e", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "c2c4645da38a4a5bad2e7865e33c7da6", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "459d7ba94dd342578e51ad58633ab5fc", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "efde290a2f9145d6bfa7acb2ade8a990", + "Value": { + "$ID": "c3af2c36a80c4c179042a985eba3a7d2", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "ca7da29e37e04981ab10c8095c150b77", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "14d5bef75ec94db1995e8200dcb13e28", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "fce7ba1c5bf54a179fa30f9fe6d319f0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "b6136d0be7a340518187169ec00b465d", + "Value": { + "$ID": "88c439a5bc16427981be6ea59ebd447c", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "095cc27723b249fa9dfaadccf5f0a090", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "09be00d8f1224d1780e01f809cede4f1", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "d63e65f8e64e412586b8e03eedda78a4", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1c59d9d6a67047c5a40e6fc8b978a52d", + "Value": { + "$ID": "a16aacdace1d4cd1ba517fdd4e330021", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "6ec4c6fdebdb4bcbbb0f6e62f2fa3076", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "1d0ca1807b7a4c188901b1001a93d843", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "8e52a7f2c47e448f974b21208b760d34", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1fc75220f0094e6aacdbc7359d1763e0", + "Value": { + "$ID": "febbd63f50744fc59210a4472b7c2c04", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "db8934e222b24b5988b31c8558fa52fa", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f0ba21e99e7a4956822a0af45241f80c", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "34144aa567c641a08d4bde4853900063", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "0d23929280b44d4b96f4fe2506565269", + "Value": { + "$ID": "44afd7c7b0ec44d69e7791be17ee4b97", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "6c862544dc4d4edfb69ba81675ad6b93", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "01f318fdbcb74b3c96f4123991443967", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "30ddcab2c7a241eb932c4bfa40571aa3", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "3e446fd397b542f58292fdc09dd2fcdb", + "Value": { + "$ID": "4c4ffb7f683045bf94949450ed80c5f5", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "21ee2bcad0a7497daba365df4cf08c9e", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a28bc879e4c34593a3e6878c351f4ca9", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ce061d692ef54fa180dfa9c87477032a", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "3c9ebc02957344339dec23e766471396", + "Value": { + "$ID": "de2c411932d54813812a1ce64a5a452a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "fbff272c0faf4036a59dfddc81b456b9", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "fefaf6ed6f80470b8a6fcd9b8a9b7c94", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "327756d8691a47d7865493666198998a", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "f8bb3d60a7af4d9397360938fe798fb0", + "Value": { + "$ID": "5b61a338ad02434ebb57a2ac7fe4103d", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "2b259e4b38454ff29dcc5c347869c56b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "e5662314569345b1803fb73d7c4ab430", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "6f21e41161af48e9a34e95f885fe022b", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "935e370a95464770bf6ab8d29ed447ef", + "Value": { + "$ID": "0a5817196d194b1ca122691adb7ebdd1", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "296c0a24acdb4bda8f869998d240573a", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "b0b80411e3124191a92100cbe93e3db8", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "dc7a8a9e02e4463cbf55edf2cb3b5e0d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "618c187a7d9444cd99c058239bd1e44d", + "Value": { + "$ID": "3cdffcd747a04727ae996166d2056a1f", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "4c3759dfd7e44ac9948805d0182b4985", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d5bb7676542f43388ccc3dfc718e552a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "072b4f2734164a33be80fd49b7e72a1d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "4382be42783e472188087566985ea82e", + "Value": { + "$ID": "0bcca54534254692a1073a675d453879", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "efb23c6dd57644bdb9c17012fb486b37", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "4d014e7183f84350adf356e0841c93f1", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "6f981973417f4a9d8cb7413c589c1818", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "68761f13194f4fa78a91a933493dc79d", + "Value": { + "$ID": "e10daa96916f4c819e87a7420f49902b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "5ea33f32520745639aa928b06edb1212", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "faa643358be24c8f9fc1e6a0c9931a99", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "49566206770540f6824dd4ef95190800", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "74e1a477405a428aaa7c171040ded18d", + "Value": { + "$ID": "09b4c2cb078f48dba7babe3614b11e5a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "37fd52c0684f4dcf851a97c533e5cfd6", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "4b80cff0ad2542da9471af0dde5a7ce0", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "167982da695e4cbfaee56a39d7fad4ca", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "28459429a6c84171a985e7ab12ae5b15", + "Value": { + "$ID": "11420c33447f4f61a508964f8c6623f6", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "a98ccce1fc0e4f04bd8d8e5f1e1c4539", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "8aeac75979f441a9a859d2220a6987e4", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "d36253ff50744d638b7461e4ef34ec68", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "fbee14175814430081d1838607fe598c", + "Value": { + "$ID": "2954c10af76c468bad0bfc79ca610f5b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "ff23953a6720453f9d46c7f4d2b2e992", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "percentage", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "261f821d00864615bd250604183f8088", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "4dea1608d3e2443183b4d78029f89eeb", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "a3891f06592d4eb2b4ab58a6708f135b", + "Value": { + "$ID": "ff3c9b05979549fb947c0297dd8a8c1a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7e51efb5db7b4a3dbb5855210cc9b89f", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "100", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "82e33d7c012e4890bfc90069f764f474", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "725a05a65eef4ce69b525783e8d4c6ab", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "29dad9f049d8488d9baa6b6269152d87", + "Value": { + "$ID": "22af459b5b674def90d0c5476bd1d955", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "92ad3a9fbc18483596da8c79b59fe723", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "percentageOfWidth", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "fb10229a44ea4bf38317da9e0abcdeef", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "5cd516c4312e4496a31773ea22206db2", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ea79bfe2b31c4624b96fd3ff0e65711e", + "Value": { + "$ID": "ac7baee8eb2947eba81ca4d5161b275a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7af7b8cfc6094269a55d7f0a9d120439", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "75", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "9a51e03cde754a299d811b1f2282a0ad", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "842d39d790fe4524b7c749d67fe30fc9", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "bf5c7591417440148511fc0f6bf85a45", + "Value": { + "$ID": "6386edcb8146497385e1f3a7624ac180", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "0c2b524a98b141beb80076c41e8df8d8", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "automatic", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "8827712fc9334098bea294b6d9bb1e20", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "4a02dfe6d1a84c4a8ebedf850a1be72a", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "d5a6fb461ece46e3a3beee3b75828965", + "Value": { + "$ID": "20e1a8f6766746e8b28db4f4ca78f213", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "4bafda33f5e4465e97b03394c4ba8120", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "googleMaps", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "bd04a24174a645f8843b6dbcdeb2343f", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "1a0d45137448496194cd7c37f68126c6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "812fcdda6cfe4725825271a11ed4bf40", + "Value": { + "$ID": "fd33d6922d1d495f941f2f4609876564", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "bca4d68734af4aa8ba2d2b90792eec81", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d9b6b067fb74419d8c0884faffe79c30", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "79d8d2282f5848d8ad35b780bc0d626d" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/popupmenu.json b/sdk/widgets/templates/mendix-11.6/popupmenu.json new file mode 100644 index 0000000..c769ea2 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/popupmenu.json @@ -0,0 +1,1349 @@ +{ + "widgetId": "com.mendix.widget.web.popupmenu.PopupMenu", + "name": "Pop-up menu", + "version": "11.6.4", + "extractedFrom": "27da14a9-0df5-498a-9f15-b4624717e35c", + "type": { + "$ID": "0cac2abf934d48fa8eb4ae0f94c9b7cb", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/popup-menu", + "ObjectType": { + "$ID": "cf31d21ff453452cb5631effe3a9c05f", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "41a6ba65dae14ca092478d58a89b1158", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Enable advanced options", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "advancedMode", + "ValueType": { + "$ID": "9b72a47cf16e4506b534639c3a51f41a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "5126887f54bb4b6685de3c7330cae40f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "The area to open or close the menu.", + "Category": "General::General", + "Description": "Responsible for toggling the Pop-up menu.", + "IsDefault": false, + "PropertyKey": "menuTrigger", + "ValueType": { + "$ID": "876dc39bc17448bb871802c41d8659e0", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "a6bc7768d1884abdb25dbd24949c8240", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Menu items", + "Category": "General::General", + "Description": "The popup menu items.", + "IsDefault": false, + "PropertyKey": "basicItems", + "ValueType": { + "$ID": "27728cd05caf48ad9d799686c6d57caf", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "767fbdbf9841452fa3e8826b885d6707", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "7d3bf7cf5e3a4a3ca1211e9bd9394e68", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Item type", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "itemType", + "ValueType": { + "$ID": "33faa1b3567c4bf98b9bb6b86fa2ecd8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "item", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "103561643aee4cfc8362100c06bdda09", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "item", + "Caption": "Button" + }, + { + "$ID": "ffcefd8d46b04374859321f9e1060d61", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "divider", + "Caption": "Divider" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "4be4169aed47488d894950ecbf1859a7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Caption", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "caption", + "ValueType": { + "$ID": "d669f115aa364c5cb56200d238e3fc3d", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "26530ca70c4d45bfba0636d969cda398", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Visible", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "visible", + "ValueType": { + "$ID": "f79ac389d124439490f06bed685e635f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "5ffc1f747eef43ecb931acdd7a3641df", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Boolean" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "6ecb53922a8444c1ba9286cf5c893cf0", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click action", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "action", + "ValueType": { + "$ID": "2ce7a9d2b8c24b39a846abbe16422ea8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "db099962d64048adb51645b24b5261d6", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Style", + "Category": "General", + "Description": "An extra class will be added: \"popupmenu-basic-item-[style]\"", + "IsDefault": false, + "PropertyKey": "styleClass", + "ValueType": { + "$ID": "451760b33c844c2ab664aaba250f4383", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "defaultStyle", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "2da850865f0646289798d89dc8f4e968", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "defaultStyle", + "Caption": "Default" + }, + { + "$ID": "2b67e562d7a84ff188b329728add016a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "inverseStyle", + "Caption": "Inverse" + }, + { + "$ID": "1049be2f7df84d4b89ff1c616b762bec", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "primaryStyle", + "Caption": "Primary" + }, + { + "$ID": "2bbb2408614545bbbadde1ac95e7d362", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "infoStyle", + "Caption": "Info" + }, + { + "$ID": "156f3ca569664233b31999cd844819c8", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "successStyle", + "Caption": "Success" + }, + { + "$ID": "bca7d72f6f3446c3b38ffeb4dda3a125", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "warningStyle", + "Caption": "Warning" + }, + { + "$ID": "39775715b7844f1a90e8c4e0d27bd13b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dangerStyle", + "Caption": "Danger" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + }, + { + "$ID": "5f8a0de7b3c44063b9e1a4457ca43258", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Menu items", + "Category": "General::General", + "Description": "The popup menu custom items. To make sure the popup closes correctly after a click, do not configure clickable widgets inside the placeholders. Use the action property of this widget.", + "IsDefault": false, + "PropertyKey": "customItems", + "ValueType": { + "$ID": "25be1209611741068dcf285cf25ac33e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": { + "$ID": "5d4b37a5f76f44248e2a18cab79c303a", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "a26aeba2a68043fbb1bb1164e00aba03", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Content", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "content", + "ValueType": { + "$ID": "f0a881c2ba894e41b20ab4897ef52200", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "ad0dee6461c7444499a06432bb26971d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Visible", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "visible", + "ValueType": { + "$ID": "0840323a40bd4d6a876e9b9652793ee7", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "4be7b6650a134f2f8240026bdb871971", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Boolean" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "8afd7d5ea9f14c1d9262775517eec6be", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click action", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "action", + "ValueType": { + "$ID": "6849b6340cd54a1a84d1757c8259d0fb", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + } + ] + }, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Object" + } + }, + { + "$ID": "0e2e3ab3467841f29358151494ac141f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Open on", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "trigger", + "ValueType": { + "$ID": "d66cf0302d7c48bd8ef0fe7349242d24", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "onclick", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "45fc31e7e6474595b355e618760da77c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onclick", + "Caption": "Click" + }, + { + "$ID": "99eb0ce34a0a43a3a13a2339dddee94a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onhover", + "Caption": "Hover" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "1128b00a0be3410e9e720591fa650a25", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Close on", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "hoverCloseOn", + "ValueType": { + "$ID": "cb1235ad2c6645c6ab58b9cdb331a08b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "onHoverLeave", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "af13f570ed444ca587a07c19fdcfdbd6", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onClickOutside", + "Caption": "Click outside" + }, + { + "$ID": "c2e57b6639e74f309753d3aed70b93f7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "onHoverLeave", + "Caption": "Hover leave" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "2e0ec8383923421786ecdfe348b6c037", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Menu position", + "Category": "General::General", + "Description": "The location of the menu relative to the click area.", + "IsDefault": false, + "PropertyKey": "position", + "ValueType": { + "$ID": "f0ba32b0b7564d718b5feb2de7d17cf6", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "bottom", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "6b3280dac8714d98b892c177702a9b74", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "left", + "Caption": "Left" + }, + { + "$ID": "5f32d28ee17542c4ab8b80ddd2e69b70", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "right", + "Caption": "Right" + }, + { + "$ID": "d0ccb3df28264cd6b4f28e9828d4275b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "top", + "Caption": "Top" + }, + { + "$ID": "cd83fe3c0e954092b1abd6063e8a7f98", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "bottom", + "Caption": "Bottom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "0947f24837dc4955b353f50e1fed2fb9", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Clipping strategy", + "Category": "General::General", + "Description": "'Absolute' positions the floating element relative to its nearest positioned ancestor, while 'Fixed' breaks it out of any clipping ancestor.", + "IsDefault": false, + "PropertyKey": "clippingStrategy", + "ValueType": { + "$ID": "fa7fb44f25cc4eb6be1d01314ca26d0d", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "absolute", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "9ae8b8b2f3dd4f48a01abf5c8bebd3e4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "absolute", + "Caption": "Absolute" + }, + { + "$ID": "9f9f071ac8ab4f199fe6cc7ccec57b84", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "fixed", + "Caption": "Fixed" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "6ad862c454614a41abf53d83a0ff9717", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show preview", + "Category": "General::Development", + "Description": "Use this to see a preview of the menu items while developing.", + "IsDefault": false, + "PropertyKey": "menuToggle", + "ValueType": { + "$ID": "71b85f07db4043fe857276118603b90f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Menus", + "StudioProCategory": "Menus & navigation", + "SupportedPlatform": "Web", + "WidgetDescription": "Displays a set of pre-defined items within the Pop-up menu", + "WidgetId": "com.mendix.widget.web.popupmenu.PopupMenu", + "WidgetName": "Pop-up menu", + "WidgetNeedsEntityContext": false, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "d13f245d7e3d432682e885da39ae2ee3", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "c9093e7dd8274bf1a0aa3979c81f6a0d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "41a6ba65dae14ca092478d58a89b1158", + "Value": { + "$ID": "a284fc347e5940749843e4a349b8a699", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7fd12fa5efa644aea9442d66ce3f84c6", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "9b72a47cf16e4506b534639c3a51f41a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "712232f4d86141ddba65ab0aaa76371d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "5126887f54bb4b6685de3c7330cae40f", + "Value": { + "$ID": "1e62712e4b004d97be70966381be6cb6", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7b9f6afd8bbb4f37a8a7ae23e2ec84d7", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "876dc39bc17448bb871802c41d8659e0", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b1aba17d3aa646a683bb29760b954641", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "a6bc7768d1884abdb25dbd24949c8240", + "Value": { + "$ID": "351ce20dead048bcacb1043a6538dff0", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "87699400e8194302bc7f39ec304a3b15", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "27728cd05caf48ad9d799686c6d57caf", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "824e54b164004f4b9679a3a9f2627efa", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "5f8a0de7b3c44063b9e1a4457ca43258", + "Value": { + "$ID": "7528ed2d77244e6d8a5f55ab45e637d6", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "a75653f7014e49c695f57454f050ff9a", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "25be1209611741068dcf285cf25ac33e", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "27b276c493874c1694ededc49f24c90b", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "0e2e3ab3467841f29358151494ac141f", + "Value": { + "$ID": "6d3a25d0244645d097460466ab89aed0", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "8005024a7b614ac5a35713c13c4ebcf7", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "onclick", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d66cf0302d7c48bd8ef0fe7349242d24", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "9dce354af2a44c389e07b79f7a996fd0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1128b00a0be3410e9e720591fa650a25", + "Value": { + "$ID": "ace1ab7ae5aa4a23bd0d8d6085335575", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "da035eb3d8234cb49e03b734827b8fe8", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "onHoverLeave", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "cb1235ad2c6645c6ab58b9cdb331a08b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "9fe4b2b0ff474988bdbdb4e3e56f95f3", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "2e0ec8383923421786ecdfe348b6c037", + "Value": { + "$ID": "b25532ae028946beb70f19df3f7dcf3e", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "d09ce8b62c7b40d99769a7ba70120c46", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "bottom", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f0ba32b0b7564d718b5feb2de7d17cf6", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "008de3a462ef47ff969be21f45e032c6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "0947f24837dc4955b353f50e1fed2fb9", + "Value": { + "$ID": "7e6576a1ad5c409aa4911ece1c75a5a4", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "0d825db5820444df8fddbda6c6d50281", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "absolute", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "fa7fb44f25cc4eb6be1d01314ca26d0d", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "9798754de1044ca0b3597489179aabc5", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "6ad862c454614a41abf53d83a0ff9717", + "Value": { + "$ID": "d866d0accb3548f4b46adec8432d1150", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c62db20c11ca4d4bb4377a0384307f98", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "71b85f07db4043fe857276118603b90f", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "cf31d21ff453452cb5631effe3a9c05f" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/progressbar.json b/sdk/widgets/templates/mendix-11.6/progressbar.json new file mode 100644 index 0000000..f73576d --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/progressbar.json @@ -0,0 +1,1441 @@ +{ + "widgetId": "com.mendix.widget.custom.progressbar.ProgressBar", + "name": "Progress Bar", + "version": "11.6.4", + "extractedFrom": "e4145eec-a60f-480d-a9be-f0635326cdce", + "type": { + "$ID": "944e6c9f7c1b4232bda7626b13f3306c", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/progress-bar", + "ObjectType": { + "$ID": "fde990a9f86b455292414b0840af5129", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "1e514eb4fa604332895d4dd71c695092", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Type", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "type", + "ValueType": { + "$ID": "41ccccd2636d45f1a42f1cfe21015f57", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "static", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "7a334344dec940949a824dbf66f8aa77", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "static", + "Caption": "Static" + }, + { + "$ID": "3bf8cc062efe46b5a746a59d2239b47e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Dynamic" + }, + { + "$ID": "e22c6a9851a64bc7be7be65a64b51964", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "2de0351bceb54d0ea5cb543b7f5b1ae2", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Current value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticCurrentValue", + "ValueType": { + "$ID": "f0c8322957174e2ca1991e0df3485b84", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "50", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "6363b735ff5840e087baa1ccdb340841", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Current value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicCurrentValue", + "ValueType": { + "$ID": "c318c47b274d47eba1894a4ce11ccdd5", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Decimal", + "Integer", + "Long" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "ad3ea7c1b5854a41bc05f9872e4e659c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Current value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "expressionCurrentValue", + "ValueType": { + "$ID": "8a1f337a6fb84022af59cf5167968555", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "9a93a4d0feae4d32b5c2f0f2b28a23e5", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "d6fb0a0e584646a499d6fb11ef590cee", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticMinValue", + "ValueType": { + "$ID": "dad03323c6f54af8a087945f76b74457", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "0", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "faa9de725689408db0ae597bccfecef1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicMinValue", + "ValueType": { + "$ID": "f848ba13e6f14dffb61f509b32be21c3", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Decimal", + "Integer", + "Long" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "345748c40fd14f429fa6bbc1b8972088", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "expressionMinValue", + "ValueType": { + "$ID": "73e4e171386046ddbbe8b54e6428d903", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "d059ecdcff2c4c0c97e3dedc5b769f0e", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "483d1b946ccd435b8a0f8c9a10a747fe", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticMaxValue", + "ValueType": { + "$ID": "72e692a291df41efa31421eb6dcc62b6", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "100", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "cab55d0c44854dd8a130e22d98dd4a15", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicMaxValue", + "ValueType": { + "$ID": "672c807573374a1a9f5171f0ae9508ae", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Decimal", + "Integer", + "Long" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "ddb641cc89be45bfab18cba7062eef25", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "expressionMaxValue", + "ValueType": { + "$ID": "228bd9f9aad54867bcf9fb3378a99551", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "314500999e7049e5a6dbe085ce8852a8", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "4f8b788e95e249d3bfe6fa32446c47c1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "Visibility", + "ValueType": { + "$ID": "1e5eef190ff942729f13de0f88e19265", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "ce23095f395d4fb892f363a78a7e7cd8", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click", + "Category": "General::Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "onClick", + "ValueType": { + "$ID": "6e080a3c6f764c2e8c121d1340ddf4b0", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "c81ab1d734d644e5bcf8bb632ea96400", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show label", + "Category": "Progress Label::Progress Label", + "Description": "", + "IsDefault": false, + "PropertyKey": "showLabel", + "ValueType": { + "$ID": "d4e751d4c300495f88a643879b3b278d", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "42b87d6da19c4d948e1fd2c978d323f0", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Label type", + "Category": "Progress Label::Progress Label", + "Description": "Note: If the Size of the progress bar is set to \"Small\" in the Appearance tab, then text and percentage labels will be shown in a tooltip and custom labels will be ignored.", + "IsDefault": false, + "PropertyKey": "labelType", + "ValueType": { + "$ID": "f7be2ef4139f402182ea8f24ec3b191f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "text", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "c184c2e47516406c87b0f0e7be2d6af5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "text", + "Caption": "Text" + }, + { + "$ID": "d9d2491650774ed7a63bed38aa5e115f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentage", + "Caption": "Percentage" + }, + { + "$ID": "455e316459904de887d5947e10bf37b7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "custom", + "Caption": "Custom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "a261aa8eb6344c919992eb5129c8b909", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Label text", + "Category": "Progress Label::Progress Label", + "Description": "", + "IsDefault": false, + "PropertyKey": "labelText", + "ValueType": { + "$ID": "4970890363d4437083e63fa843c8c3f4", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "c62372e449af4a299f42a2314f6af605", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Custom label", + "Category": "Progress Label::Progress Label", + "Description": "", + "IsDefault": false, + "PropertyKey": "customLabel", + "ValueType": { + "$ID": "f615f936bbcf4a55b62b157fc510f3da", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Display", + "StudioProCategory": "Display", + "SupportedPlatform": "Web", + "WidgetDescription": "The widget lets you display a percentage as a bar", + "WidgetId": "com.mendix.widget.custom.progressbar.ProgressBar", + "WidgetName": "Progress Bar", + "WidgetNeedsEntityContext": false, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "f30664b9429e479592fc180c0beab22a", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "a845fc4f36ba4c67a2c60d172b68d61d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1e514eb4fa604332895d4dd71c695092", + "Value": { + "$ID": "e21d0099b55242888ff0f665fd1da180", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "eb6cbdd94e2d4c67b3bfd980ed9cd19a", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "static", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "41ccccd2636d45f1a42f1cfe21015f57", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "4634df7411c74513b1ad845033d15c5d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "2de0351bceb54d0ea5cb543b7f5b1ae2", + "Value": { + "$ID": "3d924c1c8c5f43c3a186a50a29723021", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "084f97f1240944b2b9cbd087ce39e748", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "50", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f0c8322957174e2ca1991e0df3485b84", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a948bcd5e1ad4bb6897c628f9174d05d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "6363b735ff5840e087baa1ccdb340841", + "Value": { + "$ID": "4686251ee5db455388c01c93f8b7c63b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c97d99dae5a94d2fb74561bd87123926", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "c318c47b274d47eba1894a4ce11ccdd5", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "36f6d8f8019e47b882ee25e67f9847f0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ad3ea7c1b5854a41bc05f9872e4e659c", + "Value": { + "$ID": "868f7cfb76a945e6befc7273d46e9b1b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "ad731613d3a14f46a823a8c9430908ce", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "8a1f337a6fb84022af59cf5167968555", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "d9543361c1e441b299eecbaa05887be8", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "d6fb0a0e584646a499d6fb11ef590cee", + "Value": { + "$ID": "c21b2dd69c214378928baeb90a433e2b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "188ab117006d438588fb7c4faedb199f", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "0", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "dad03323c6f54af8a087945f76b74457", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "42cdc990cb644055962a0b166e7c081d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "faa9de725689408db0ae597bccfecef1", + "Value": { + "$ID": "a3f41185563243ff86bf49b2a0675064", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "5ceb2ab6b7e148269f44e6fceb382154", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f848ba13e6f14dffb61f509b32be21c3", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "66be0df376aa43c3b5cab6ff0807e9fb", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "345748c40fd14f429fa6bbc1b8972088", + "Value": { + "$ID": "4c3c60eb4305434d90221e27d7accc43", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e2eece22a5f64cef9a4ee25897e18d52", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "73e4e171386046ddbbe8b54e6428d903", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b04668346cff4edb8aabca81600a0f74", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "483d1b946ccd435b8a0f8c9a10a747fe", + "Value": { + "$ID": "14f64efbbf4343b8bc42038f534b3a20", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "f9ee5e966aa844639b7b80bff72a4f61", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "100", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "72e692a291df41efa31421eb6dcc62b6", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ffaf286e3e5a4b25ac5b2ff1dc3a8c07", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "cab55d0c44854dd8a130e22d98dd4a15", + "Value": { + "$ID": "d6244bca034c4ebf926926d2f999afc1", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "25a6bcaf3af344c58091fbd4393ba69d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "672c807573374a1a9f5171f0ae9508ae", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "7a5c656dd02d4921b4e30a4e9ec0baf6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ddb641cc89be45bfab18cba7062eef25", + "Value": { + "$ID": "ccfb935783e04033b33b4abb07d9979c", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "54e559686d104059803e2704662c6760", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "228bd9f9aad54867bcf9fb3378a99551", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "1cf8ce170a3d4ce085c031887bfee7e9", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ce23095f395d4fb892f363a78a7e7cd8", + "Value": { + "$ID": "ab88d9b40cd84edb834e782d815bd599", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b6043e5b826a4b70a9f70631697bcee3", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "6e080a3c6f764c2e8c121d1340ddf4b0", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "0edd152f744a4f21ab4a1714e551d4fd", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "c81ab1d734d644e5bcf8bb632ea96400", + "Value": { + "$ID": "563eaa30d77b4060adfcc21d3ab561c6", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c1d4cd8d21ae43ffa5e7f6c688a5d58b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d4e751d4c300495f88a643879b3b278d", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "6a8448fe207343f09aa3ec3073ff6a49", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "42b87d6da19c4d948e1fd2c978d323f0", + "Value": { + "$ID": "2293a78248864e8fbe2b282ef4838536", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b563093f08b24565ab3a3f445b880bb5", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "text", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f7be2ef4139f402182ea8f24ec3b191f", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "d6f9c1ac07fe4df584d2486c89bf89a3", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "a261aa8eb6344c919992eb5129c8b909", + "Value": { + "$ID": "3295fe4bc1b64e9092bba87e40edd8bd", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "56983ceafb234e73bf33a404ad7949be", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "4970890363d4437083e63fa843c8c3f4", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "4848119a2cec4381b11fa6d6543303b0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "c62372e449af4a299f42a2314f6af605", + "Value": { + "$ID": "b0ac100698654fcebc7f2b37c5d9f94a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "8677d0af9129466899b92796b8269284", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f615f936bbcf4a55b62b157fc510f3da", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "fde990a9f86b455292414b0840af5129" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/progresscircle.json b/sdk/widgets/templates/mendix-11.6/progresscircle.json new file mode 100644 index 0000000..e59d5d2 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/progresscircle.json @@ -0,0 +1,1441 @@ +{ + "widgetId": "com.mendix.widget.custom.progresscircle.ProgressCircle", + "name": "Progress circle", + "version": "11.6.4", + "extractedFrom": "14dbd39d-2ed6-41f0-97ab-0b8a7927de64", + "type": { + "$ID": "2eb90fcac5c2425294682f0d7e2484b2", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/progress-circle", + "ObjectType": { + "$ID": "ebbdb95e1b4c4c6fa9542519a449c1de", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "2ab3738ee661452186a42b3383f3ddc1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Type", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "type", + "ValueType": { + "$ID": "107b076be8f2482dbd15cf7788e2605f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "static", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "cf86fdb5d35641fa819c56c47243b325", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "static", + "Caption": "Static" + }, + { + "$ID": "f25b53b19d364b788eeb054b4c2536dc", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Dynamic" + }, + { + "$ID": "9a7569215f794457944b70c385005045", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "2c36c7fca55d40b38efd9aa8eab7bdec", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Current value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticCurrentValue", + "ValueType": { + "$ID": "e82cf05f3305400c826705a9d3fd4e9c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "50", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "40a381b5d4bc475f8c2d84b891bba1d5", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Current value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicCurrentValue", + "ValueType": { + "$ID": "f43952dd54d043779993b1b7291eeb50", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Decimal", + "Integer", + "Long" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "cb5acbb1c8a04f2c8be67cbc3aeb262b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Current value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "expressionCurrentValue", + "ValueType": { + "$ID": "e08d4b98d9b84b56ab51315d6ae217e4", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "1d0d60436dd34508a64c3e58b98f5414", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "e4240e167e9d4a10bc156109bbf15b90", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticMinValue", + "ValueType": { + "$ID": "25ae8dda5aa746eabfb5762a4cc02c00", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "0", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "e0cfc04b97bc42d9ba4d437a0b0cfc84", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicMinValue", + "ValueType": { + "$ID": "deb7d9b5c4f94207a896f062ca61833a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Decimal", + "Integer", + "Long" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "99f279020bb14510bf51667ad9cc3781", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "expressionMinValue", + "ValueType": { + "$ID": "cb0efd2f3475449fac18a2667c3b253f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "08505b17b3bc4df5b1c3f9366cd6ef7f", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "d20a8472d5734d3fa292bfbfd23d6fb2", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticMaxValue", + "ValueType": { + "$ID": "06616c9d49cc48198026f1a4800f2a0a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "100", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "3d554ef63e76405da46e6288bf4b7fdf", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "dynamicMaxValue", + "ValueType": { + "$ID": "4dea4f2bb87d4e15a962ddd5a273aafe", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Decimal", + "Integer", + "Long" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "d3d78addd4b14cfda7192abd6ce3f31b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "expressionMaxValue", + "ValueType": { + "$ID": "a152e3a0a4ab4cee96138084db2c1dbc", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "6beb265e206748b1b1c663d71c052a7e", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "7093dd83e5424b1493d3cd0a2914be56", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "Visibility", + "ValueType": { + "$ID": "81e1746433674dcda8e285cc1d71fc3a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "83682c422de64ae0a2abcfeeef83b52e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click", + "Category": "General::Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "onClick", + "ValueType": { + "$ID": "0c2b78a5e5714c7d88074fb08f3af4c7", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "e90a48a2241344ffb0fff5a058a24015", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show label", + "Category": "Progress Label::Progress Label", + "Description": "", + "IsDefault": false, + "PropertyKey": "showLabel", + "ValueType": { + "$ID": "1f7af91ae1ce4295ad14f9fb71baf47d", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "fc3e1c06e2b246d2a724895c91ce1a6a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Label type", + "Category": "Progress Label::Progress Label", + "Description": "", + "IsDefault": false, + "PropertyKey": "labelType", + "ValueType": { + "$ID": "40686d0058af4743a1a40b293238a743", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "text", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "95dfc73dfff34fd783fde789efb41685", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "text", + "Caption": "Text" + }, + { + "$ID": "79e2afefde984a74bd633c959552dbac", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentage", + "Caption": "Percentage" + }, + { + "$ID": "db67623a299d4da9a2f1c6b38b6a1ec5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "custom", + "Caption": "Custom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "ebc6572423304b53b0eccca9d7a2f2d2", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Label text", + "Category": "Progress Label::Progress Label", + "Description": "", + "IsDefault": false, + "PropertyKey": "labelText", + "ValueType": { + "$ID": "3686d1d3154042e6a6b5bfdc3967733c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "1ab4a2b500dd4fa8a6eef6362f14327a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Custom label", + "Category": "Progress Label::Progress Label", + "Description": "", + "IsDefault": false, + "PropertyKey": "customLabel", + "ValueType": { + "$ID": "006de2c006b44259b09ae2b7830cf545", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Display", + "StudioProCategory": "Display", + "SupportedPlatform": "Web", + "WidgetDescription": "Displays a progress in a circle", + "WidgetId": "com.mendix.widget.custom.progresscircle.ProgressCircle", + "WidgetName": "Progress circle", + "WidgetNeedsEntityContext": false, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "032defcb43a34a9eac1d009b50ae918b", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "b97478495eca46b5a2cbe6f6d428e303", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "2ab3738ee661452186a42b3383f3ddc1", + "Value": { + "$ID": "62606c0886b0457ebf34228aa0f5dce3", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "46979eeb5d36430ea99d309f94214695", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "static", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "107b076be8f2482dbd15cf7788e2605f", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a3aa841cbb5c4d1da8aae6b3095bba8e", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "2c36c7fca55d40b38efd9aa8eab7bdec", + "Value": { + "$ID": "5559cce94a1d4a199d7e444a5d8fd862", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e97823a72e1146088e187217891241e3", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "50", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "e82cf05f3305400c826705a9d3fd4e9c", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "24577a50b26a479e8d1f0c1308aa3669", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "40a381b5d4bc475f8c2d84b891bba1d5", + "Value": { + "$ID": "6bdf99b5c3d84cef811f49d0c0008592", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b616794d8b3e445fa5dad233c7274525", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f43952dd54d043779993b1b7291eeb50", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "963a477dddd044b09eb8c73ee71737c9", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "cb5acbb1c8a04f2c8be67cbc3aeb262b", + "Value": { + "$ID": "dd25496562024f07a455791d59840fdb", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "17759c04fdf84b81af03b9259c180d8d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "e08d4b98d9b84b56ab51315d6ae217e4", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "81027da277744d3fade60d08c6ce6658", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "e4240e167e9d4a10bc156109bbf15b90", + "Value": { + "$ID": "cd08030a59b942a3b4b97b3d267a4987", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e28efafc74a5486893e150c230d126f9", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "0", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "25ae8dda5aa746eabfb5762a4cc02c00", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b471c2eb9af84e74b14518579c4b947d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "e0cfc04b97bc42d9ba4d437a0b0cfc84", + "Value": { + "$ID": "17e4fae352204d51a838bf906dfc9165", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b7fa4ecea3034e52b9262303fd5d09cc", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "deb7d9b5c4f94207a896f062ca61833a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "cfe7a8899d274918b821bfa76496b415", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "99f279020bb14510bf51667ad9cc3781", + "Value": { + "$ID": "18b0618550e74489a7719ba340b1c99b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "5266500fd2e04f318819f7ee2531e695", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "cb0efd2f3475449fac18a2667c3b253f", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "92fed44e35194b34aa3131638e72ba64", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "d20a8472d5734d3fa292bfbfd23d6fb2", + "Value": { + "$ID": "83616bcf1c6144f38cfb7d538bc056de", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "60e19e5cec5a43b6a3165401e9716fb5", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "100", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "06616c9d49cc48198026f1a4800f2a0a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "5db59a13ae3e49b3ab48828ca276cfa6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "3d554ef63e76405da46e6288bf4b7fdf", + "Value": { + "$ID": "7a33e458b587491bb553dd8b715411e2", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "1b547aff8bc14d8b94480ceffaea6e0f", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "4dea4f2bb87d4e15a962ddd5a273aafe", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ffd1030fec60496183234a9f5786c6a7", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "d3d78addd4b14cfda7192abd6ce3f31b", + "Value": { + "$ID": "6a1ecb96bec947b99948558ddf9051b3", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "385c5e7337354655b7f0f716b10e270d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a152e3a0a4ab4cee96138084db2c1dbc", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "d7a526b3f02c465aa4e2fce2c92c3913", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "83682c422de64ae0a2abcfeeef83b52e", + "Value": { + "$ID": "1ef5eef2eca24dc5a243de909357d104", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "789d4e8034ec4647b8b8c4647249b13b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "0c2b78a5e5714c7d88074fb08f3af4c7", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "614a3b8835bc465ba01fd3c70aa1ba85", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "e90a48a2241344ffb0fff5a058a24015", + "Value": { + "$ID": "9c8407244b144208b39439fac4da07b3", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "ca038866d1a1421ea9ec2c7ed9e9e32e", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "1f7af91ae1ce4295ad14f9fb71baf47d", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "68dfce8f5bfa42f38c8ce3cc576d9c93", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "fc3e1c06e2b246d2a724895c91ce1a6a", + "Value": { + "$ID": "68730fb666fd440ea2a86f5e55d3e423", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "2cf70ca00db74cf68510ee53b50db2e9", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "text", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "40686d0058af4743a1a40b293238a743", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ce4f9fb3683542829a737bd737e942c4", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ebc6572423304b53b0eccca9d7a2f2d2", + "Value": { + "$ID": "027f403fd9774ffdbebc210157d24da2", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "961bc1fbff134ee8a20c510187a276d7", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "3686d1d3154042e6a6b5bfdc3967733c", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "20cad138eeff43959ccb203cd1f00b17", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1ab4a2b500dd4fa8a6eef6362f14327a", + "Value": { + "$ID": "be7a951a8e7141028a6a51d13f560aec", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b3fb327b068e424488152a148354178d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "006de2c006b44259b09ae2b7830cf545", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "ebbdb95e1b4c4c6fa9542519a449c1de" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/rangeslider.json b/sdk/widgets/templates/mendix-11.6/rangeslider.json new file mode 100644 index 0000000..27f10f5 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/rangeslider.json @@ -0,0 +1,2645 @@ +{ + "widgetId": "com.mendix.widget.custom.RangeSlider.RangeSlider", + "name": "Range Slider", + "version": "11.6.4", + "extractedFrom": "4a968512-f88c-4148-9b0c-3e0c361ff04d", + "type": { + "$ID": "3ef28a01fc1f477382c8582336cb3153", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "", + "ObjectType": { + "$ID": "e2cc58fe74c94d28810bb7fb24561cc7", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "554ec4315ec245929352273932a89c3b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Lower bound attribute", + "Category": "General::Data source", + "Description": "The lower bound value on the slider", + "IsDefault": false, + "PropertyKey": "lowerBoundAttribute", + "ValueType": { + "$ID": "7ddfe9e2ed994fb693846b05486ec390", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Integer", + "Long", + "Decimal" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "4d40c949191f48a7be90a0b0d68b6196", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Upper bound attribute", + "Category": "General::Data source", + "Description": "The upper bound value on the slider", + "IsDefault": false, + "PropertyKey": "upperBoundAttribute", + "ValueType": { + "$ID": "3ab0df4ea43a4605b5cc39442711eeed", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Integer", + "Long", + "Decimal" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "5c85326a4d40481280a9d404528e0144", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Enable advanced options", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "advanced", + "ValueType": { + "$ID": "92d6938916c54fd082e893e22d92427d", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "46ba53f1c6a7432a95bb0ce57a758689", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value type", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "minValueType", + "ValueType": { + "$ID": "3729aacdb4b74941a0957e01ef511017", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "static", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "01ccadea284d4a10a80efc8c3b583d61", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "static", + "Caption": "Static" + }, + { + "$ID": "96111ba405384d6c9ffd081870d1e8f4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Dynamic" + }, + { + "$ID": "0ed866f9d5654e62afc6c81c0127e8ca", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "b02238afde6f49809a91ce4f8bea0d06", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticMinimumValue", + "ValueType": { + "$ID": "b6fab1e61b5a4bb597862f0b28d2c627", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "0", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Decimal" + } + }, + { + "$ID": "68645c7548e54db2a680f8c3d0e29ced", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "minAttribute", + "ValueType": { + "$ID": "a3eb0a7c01b34349b96e5cdcd527b79e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Decimal", + "Integer", + "Long" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "4424aa30958c4855bfbeb28c4b3454e1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "expressionMinimumValue", + "ValueType": { + "$ID": "ddc8d32eb1e34a0a9ae024f2301027ea", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "4aa1c645a2f14a4aba2e55baac3c8325", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "6f5e9fa2c60045bea9897d4f243bf73c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value type", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "maxValueType", + "ValueType": { + "$ID": "4b5ae9fe42f547b88ebcbe0bb93eaaec", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "static", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "345d7212c0a647e08d88fc00b8778ac9", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "static", + "Caption": "Static" + }, + { + "$ID": "b1e9067977904a53b3df83388faad3ad", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Dynamic" + }, + { + "$ID": "9078792f7b82482597105887d6818867", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "e325d43051d64b0b8447c57f15161fd5", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "staticMaximumValue", + "ValueType": { + "$ID": "85adc388c8424978ac39a965f38cbb6b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "100", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Decimal" + } + }, + { + "$ID": "5142730aa3a141f79cebc2bb5d4b3bc3", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "maxAttribute", + "ValueType": { + "$ID": "9959994b157d4623a631f024bee24833", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Integer", + "Long", + "Decimal" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "1e6ad7c767944c3582e9a2191e98f386", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "expressionMaximumValue", + "ValueType": { + "$ID": "65f20d1ed81d46dc8e0e6bd7bf0767c8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "9ea5f5100415436b9193d4b548c563b8", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "330fef525af74d639eba268a60365db5", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Step size type", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "stepSizeType", + "ValueType": { + "$ID": "98af97293fce479690fbcf69f8eb07e2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "static", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "d01d092b3c1b4766943e984b59939b93", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "static", + "Caption": "Static" + }, + { + "$ID": "fa391f6df22c4d0e852fc05b4ec1cc14", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Dynamic" + }, + { + "$ID": "002b53450d574455a17c9a266de74178", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "c896c97f7f8a44a3ad17a233ac90eb21", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Step size", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "stepValue", + "ValueType": { + "$ID": "7eef723e9a144b0cbf7592ec39d40038", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "1", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Decimal" + } + }, + { + "$ID": "9b62bdaa50f343c89d72ee615e78e554", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Step size", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "stepAttribute", + "ValueType": { + "$ID": "fb6506d8ebd241669b78ede1bf270f90", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Integer", + "Long", + "Decimal" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "fd0f5896d6794d99bbf2d2df9f85ba3e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Step size", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "expressionStepSize", + "ValueType": { + "$ID": "cf476108aaf14ea9b97d4069d5ea6347", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "d6efca05384a422e9c920812354577a7", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "0a4b77100f5d45e1b64de00d9146f0a0", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show tooltip", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "showTooltip", + "ValueType": { + "$ID": "c7d47ea71e714d6896b5ad7e78495a79", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "c5cf364875e2467cb7a7e0073be07115", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Lower bound tooltip type", + "Category": "General::General", + "Description": "By default tooltip shows current value. Choose 'Custom' to create your own template.", + "IsDefault": false, + "PropertyKey": "tooltipTypeLower", + "ValueType": { + "$ID": "ca53df30de394047ab012bf02941f3cd", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "value", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "ecf36d6cde1143759b2e1ff629535f1f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "value", + "Caption": "Value" + }, + { + "$ID": "138ae2ff5e3e45d1858a0e8f91ea63dc", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "customText", + "Caption": "Custom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "b344c50078e345de8e50905065d3a18f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "tooltipLower", + "ValueType": { + "$ID": "4ec00d853dac490fb586ae481424ef2a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "010da53cbf424383892220994429816d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Upper bound tooltip type", + "Category": "General::General", + "Description": "By default tooltip shows current value. Choose 'Custom' to create your own template.", + "IsDefault": false, + "PropertyKey": "tooltipTypeUpper", + "ValueType": { + "$ID": "259e78212ad54c22a9e1d802674886ad", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "value", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "fe7b60a2326848c5a5f11840f8e2306a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "value", + "Caption": "Value" + }, + { + "$ID": "81b90f6248734f188b1bead66a5707ef", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "customText", + "Caption": "Custom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "310c51d35fa1485baff199a21fa2e8a2", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "tooltipUpper", + "ValueType": { + "$ID": "cc0c047bd9e643828eea559a2455108f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "83fe76da909e4bb4bb6228d11013965a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip always visible", + "Category": "General::General", + "Description": "When enabled tooltip is always visible to the user", + "IsDefault": false, + "PropertyKey": "tooltipAlwaysVisible", + "ValueType": { + "$ID": "26aa062192c4436ba64028ee21bb248f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "ab13e877cd3049a5baf80bd37b0d40f6", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "Label", + "ValueType": { + "$ID": "934bde1943514ba584bd86fab1a68f1e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "c34733b7ec8340f2bea61806306cb684", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Editability", + "Description": "", + "IsDefault": false, + "PropertyKey": "Editability", + "ValueType": { + "$ID": "a8ccd4935b2c4a50a96e98b4797be4f2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "8a5acda206704d0a88e118aa6136ec8e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Visibility", + "Description": "", + "IsDefault": false, + "PropertyKey": "Visibility", + "ValueType": { + "$ID": "3695694c4da64fee9b9d6ceec1830533", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "2911689cb2644e4d9fe8c47841e25572", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Number of markers", + "Category": "Track::Track", + "Description": "Marker ticks on the slider (visible when larger than 0)", + "IsDefault": false, + "PropertyKey": "noOfMarkers", + "ValueType": { + "$ID": "c205f26b4dc64ad7bf8e8155aef8b3dd", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "1", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "cd8a414fb6614e8885c56023a8d3f11a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Decimal places", + "Category": "Track::Track", + "Description": "Number of decimal places for marker values", + "IsDefault": false, + "PropertyKey": "decimalPlaces", + "ValueType": { + "$ID": "4ccbe005f0824547bc74ebabe9845679", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "0", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "2b283254046d48888e2a7c02d631c53e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Orientation", + "Category": "Track::Track", + "Description": "If orientation is 'Vertical', make sure that parent or slider itself has fixed height", + "IsDefault": false, + "PropertyKey": "orientation", + "ValueType": { + "$ID": "59f8eb1b03c1485ca4f16d2df33ef36c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "horizontal", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "49bb78f43d484d27a2913f293bd347a1", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "horizontal", + "Caption": "Horizontal" + }, + { + "$ID": "ba5c432291304e7b900cde060fa63867", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "vertical", + "Caption": "Vertical" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "ec281d6e770345f58940cff2c3f3ed3e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height unit", + "Category": "Track::Track", + "Description": "", + "IsDefault": false, + "PropertyKey": "heightUnit", + "ValueType": { + "$ID": "36216cf348b2421eb1ca3f2c33c98ced", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "percentage", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "dcfacae9da2444ffb0e715bfd582a2ae", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentage", + "Caption": "Percentage" + }, + { + "$ID": "9db20e1253034859bbe4c9d9c20ed52d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "pixels", + "Caption": "Pixels" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "a92660eee3fb4a1f8b2a01ccf688af09", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height", + "Category": "Track::Track", + "Description": "", + "IsDefault": false, + "PropertyKey": "height", + "ValueType": { + "$ID": "891f6ffc4117404f8df4030a8ccedbc1", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "100", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "1a4be49805e947fb9680d235c64612b4", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On change", + "Category": "Events::Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "onChange", + "ValueType": { + "$ID": "632fbcaa462c46aba07e72d59606d7db", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Input Elements", + "StudioProCategory": "Input elements", + "SupportedPlatform": "Web", + "WidgetDescription": "Change range of values using a slider", + "WidgetId": "com.mendix.widget.custom.RangeSlider.RangeSlider", + "WidgetName": "Range Slider", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "cbba65d11c004925adcde3c1acb5d5db", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "1acb43e2c08440929185f890b8eb3e08", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "554ec4315ec245929352273932a89c3b", + "Value": { + "$ID": "903e8d3f7fc04ae499a51f87a89c136d", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "03eea4e382934f9181c6c9a2fcdf687b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7ddfe9e2ed994fb693846b05486ec390", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "3422dd808ef941f9a78a03bf2d6643fc", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "4d40c949191f48a7be90a0b0d68b6196", + "Value": { + "$ID": "3cdeb75ba22a4db2a105393d9e03c396", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "51a4d7f8825747de907366ba77183fe4", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "3ab0df4ea43a4605b5cc39442711eeed", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "6a33bbe8f678415a9f2dc56014405c72", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "5c85326a4d40481280a9d404528e0144", + "Value": { + "$ID": "07ac1d9ff59e4ea3bb75eba45c26207c", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "534c0c16b1494bf18e67b66d4130afbc", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "92d6938916c54fd082e893e22d92427d", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "bc9a3fbbacaa4422bdbcf1cb466c2bc0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "46ba53f1c6a7432a95bb0ce57a758689", + "Value": { + "$ID": "e0c56940e31246998215be432de34241", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "8422e8193c124e02b6870552b4a1c28c", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "static", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "3729aacdb4b74941a0957e01ef511017", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "2ab0b61329124c35b625c0782e325018", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "b02238afde6f49809a91ce4f8bea0d06", + "Value": { + "$ID": "359aff5887794a699c5d6f96eb564aaf", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c77fc70ee23c45078ae77c59d243205f", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "0", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "b6fab1e61b5a4bb597862f0b28d2c627", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "2fdc5e5e944d4ce1bd491564ff6b59f6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "68645c7548e54db2a680f8c3d0e29ced", + "Value": { + "$ID": "24f76d54221145968e8695c6a05ab961", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e8a1aa5a669d408ebc03420b9d4d9477", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a3eb0a7c01b34349b96e5cdcd527b79e", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "4008a4a554764c7592012f144be25ae7", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "4424aa30958c4855bfbeb28c4b3454e1", + "Value": { + "$ID": "9aef5763f13c413982ca9ca7f7575f74", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "cc793f9985ae4d0bba7247371670c7df", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "ddc8d32eb1e34a0a9ae024f2301027ea", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b0fad1f32c7249ff9e92731e925b8f8e", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "6f5e9fa2c60045bea9897d4f243bf73c", + "Value": { + "$ID": "dc0352553bcb45afa94140c0922d85a8", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "db7151c34c7e4131bf29710d8c2ccf0c", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "static", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "4b5ae9fe42f547b88ebcbe0bb93eaaec", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ba692c647f62483aa871ac06b427f9a2", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "e325d43051d64b0b8447c57f15161fd5", + "Value": { + "$ID": "7b4a9936bcc74628919729cb40b66475", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "10c83c0011654652ad66052ebea94c10", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "100", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "85adc388c8424978ac39a965f38cbb6b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f1e478413d7e43f7b707a3e5fdb26ff6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "5142730aa3a141f79cebc2bb5d4b3bc3", + "Value": { + "$ID": "131d35c69e9c4a9fa05732220e45d549", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "0af7838f2b144d91b2e67a18ca5a74eb", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "9959994b157d4623a631f024bee24833", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b48dd8a49ab64a2c8b7b1cd49c60dad6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1e6ad7c767944c3582e9a2191e98f386", + "Value": { + "$ID": "b7b0e3d2609a4c6d82b84051b3ee55b4", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "6857e33ba09240eca9e870fe0e145984", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "65f20d1ed81d46dc8e0e6bd7bf0767c8", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "c07f1781e79140849cb1ee304fc5a7d1", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "330fef525af74d639eba268a60365db5", + "Value": { + "$ID": "36876299f2cf46dc9bd1a45468714d1a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "20eb87a0e3b94d2090fa4f08ed096dc7", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "static", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "98af97293fce479690fbcf69f8eb07e2", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "92344fdd38e7477dbb1e82ccde8494fc", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "c896c97f7f8a44a3ad17a233ac90eb21", + "Value": { + "$ID": "a79276a77b294ea4b1ad58e6fbc5bc60", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b3c1a5a5a5514aeba25978f0e9014895", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "1", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7eef723e9a144b0cbf7592ec39d40038", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "fe9ae3e344724a4aad0747b509d2ebfa", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "9b62bdaa50f343c89d72ee615e78e554", + "Value": { + "$ID": "87e2f3f1efde40d48f37e07e66952593", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "3266b720fbf846a1beda336e26836f03", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "fb6506d8ebd241669b78ede1bf270f90", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "7c908ca175e14c239259b47b1de90c85", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "fd0f5896d6794d99bbf2d2df9f85ba3e", + "Value": { + "$ID": "a61ca865c0ac45fc90473d078305058e", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "04458b8a97fb48f2ab0e7d35e870acc0", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "cf476108aaf14ea9b97d4069d5ea6347", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a1027c63ad074f0d8e8a99c8066aaa03", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "0a4b77100f5d45e1b64de00d9146f0a0", + "Value": { + "$ID": "0bd7b2359a584b3a90e2404a43694e16", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "63f8724be78a4a339c5f78093b577842", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "c7d47ea71e714d6896b5ad7e78495a79", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "5d61331e6e854b73b094e2f0a46fec5e", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "c5cf364875e2467cb7a7e0073be07115", + "Value": { + "$ID": "643315a84bf4451b98dd1bfdb01c1676", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "00fbe50e19f24c6ebd8789c7358b4006", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "value", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "ca53df30de394047ab012bf02941f3cd", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "782b04fb61234c03ab25f365e11fefd8", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "b344c50078e345de8e50905065d3a18f", + "Value": { + "$ID": "84552986c0334d6f92ef66f9ec0f0b2b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e0770e0615a440658ed948d98efbe105", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "4ec00d853dac490fb586ae481424ef2a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "5303c529bb7249e4aed69e783f0bfb88", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "010da53cbf424383892220994429816d", + "Value": { + "$ID": "77e81d0f386c41e7893fc248078c95c6", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "56e8b845ff2f4bf196775a3ecbeaaa4d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "value", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "259e78212ad54c22a9e1d802674886ad", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "72dc2c902b894f89abe0461db79995ec", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "310c51d35fa1485baff199a21fa2e8a2", + "Value": { + "$ID": "665dd01061b445a6a13c0f525f72b8d7", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b63cfbc784c9433c9688dfe840975c40", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "cc0c047bd9e643828eea559a2455108f", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "47c108b8197341d79ebe2d1ced21c556", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "83fe76da909e4bb4bb6228d11013965a", + "Value": { + "$ID": "880a501ef2794437bbb9e96f31a7de92", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "1ec7d121a7654de3ad50b46ff6cf6868", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "26aa062192c4436ba64028ee21bb248f", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a26c364d0a3d4e6bbb6b3fc83af95dd3", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "2911689cb2644e4d9fe8c47841e25572", + "Value": { + "$ID": "5412309138b24b95969d02a91100bf5c", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "70848fc696334358bc449eedda9f7f4c", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "1", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "c205f26b4dc64ad7bf8e8155aef8b3dd", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "e0f8f9b800a54716bd377c93a6d42f79", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "cd8a414fb6614e8885c56023a8d3f11a", + "Value": { + "$ID": "ee73be96e4ae49fc9a15dd85fc3ac5cd", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "89ef6bc26a824f339f70818bbeaa5a1a", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "0", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "4ccbe005f0824547bc74ebabe9845679", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "31def9ab3f4947b0abc7b48685919096", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "2b283254046d48888e2a7c02d631c53e", + "Value": { + "$ID": "765ebef6f23444a79b216dd56dd104d6", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e6d2290b2d4648e6b8a7c70a63df9768", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "horizontal", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "59f8eb1b03c1485ca4f16d2df33ef36c", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a2d27a81574240ba9d3d9c737ce77334", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ec281d6e770345f58940cff2c3f3ed3e", + "Value": { + "$ID": "e81e0bad32e44d8fa97851862e7fa8e7", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "1f8b95accb8248adbd6bfff1416b0a40", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "percentage", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "36216cf348b2421eb1ca3f2c33c98ced", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f24db2bd41d542e9a35d2a23b33d940a", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "a92660eee3fb4a1f8b2a01ccf688af09", + "Value": { + "$ID": "4298ce03ea3d47e19337f6f0da7beb2c", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "346ed2285f0340b5867a2b9c105ee978", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "100", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "891f6ffc4117404f8df4030a8ccedbc1", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "c70de5699ba342e9a8a295bc4a93f84e", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1a4be49805e947fb9680d235c64612b4", + "Value": { + "$ID": "b415cdda945b4f2b979b6b9a3a798e05", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "57ccfa31b4a44d9e86cc28970f3089f6", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "632fbcaa462c46aba07e72d59606d7db", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "e2cc58fe74c94d28810bb7fb24561cc7" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/selectionhelper.json b/sdk/widgets/templates/mendix-11.6/selectionhelper.json new file mode 100644 index 0000000..90b4551 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/selectionhelper.json @@ -0,0 +1,497 @@ +{ + "widgetId": "com.mendix.widget.web.selectionhelper.SelectionHelper", + "name": "Selection helper", + "version": "11.6.4", + "extractedFrom": "db6308e9-1668-4b9c-9362-396926b9be58", + "type": { + "$ID": "873c092cebf748da851343a09e88f45b", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/modules/gallery#selection-helper-widget", + "ObjectType": { + "$ID": "9e656c653ef342d3845454289b322274", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "4037e1c6c68d4e73b05b9b3a867426f9", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Style", + "Category": "General", + "Description": "Custom enables placeholders for using widgets for the different states.", + "IsDefault": false, + "PropertyKey": "renderStyle", + "ValueType": { + "$ID": "d48a6b57e84742f2a9bb6ceb0aeafe25", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "checkbox", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "7ad644c4c05a46fe81fee3a832ea2d44", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "checkbox", + "Caption": "Check box" + }, + { + "$ID": "6579c8c4b06447daa247638b6ee5927c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "custom", + "Caption": "Custom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "d7829790916f40aca6ef134f9edf0766", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Check box caption", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "checkboxCaption", + "ValueType": { + "$ID": "149877eae02848e9aa3d2ba6a1e6ef7f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "9649f6f5faae43b69ac24086fd9ce1d1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "All selected", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "customAllSelected", + "ValueType": { + "$ID": "7fb6b2bb41024f609ba68494223d0d62", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "48e2e7c08c8f47358e3d9d12744130a3", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Some selected", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "customSomeSelected", + "ValueType": { + "$ID": "fcd058c1a9834a3da831dce7d604751b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "dc0ff7d1f6944af8a0e0d81ad8852c7a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "None selected", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "customNoneSelected", + "ValueType": { + "$ID": "36652ea8325147a6bad5d74f0e4d2239", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Data Controls", + "StudioProCategory": "Data controls", + "SupportedPlatform": "Web", + "WidgetDescription": "", + "WidgetId": "com.mendix.widget.web.selectionhelper.SelectionHelper", + "WidgetName": "Selection helper", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "b42d0753072a49e895ff65a182234092", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "457c864d7e754c6faa9de43665e83083", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "4037e1c6c68d4e73b05b9b3a867426f9", + "Value": { + "$ID": "7b26ad31e3a641e081a751f8126d5b4a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "9357181066c0428c861f8866416df4bf", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "checkbox", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d48a6b57e84742f2a9bb6ceb0aeafe25", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "5ca12cdcc96b47df82adfbec5846e4bc", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "d7829790916f40aca6ef134f9edf0766", + "Value": { + "$ID": "2bd7f1f1ce324c32bbbbfe9101e20800", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "41b170058a14431c853b4a769fc89e31", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "c6e21fe70f204a47a51b9a47f37f0ce5", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "a2b27af9d35c49e4aa187bd9b280ec90", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "c30b2d4e59944a54b5e655a017870541", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "149877eae02848e9aa3d2ba6a1e6ef7f", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f8a490c0e07b45449d6b4e5b9f006979", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "9649f6f5faae43b69ac24086fd9ce1d1", + "Value": { + "$ID": "0c0fe3f2dc1b47d5822100d6ffe81a43", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "6d79b0f1557449979d73df56805538a7", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7fb6b2bb41024f609ba68494223d0d62", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b1342d22e8ab4dd9b58d0ca0309d12ef", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "48e2e7c08c8f47358e3d9d12744130a3", + "Value": { + "$ID": "a4ec99c420c64b92b8236967505f76a0", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "0b4161f0fedb47daa7d802ff5dbcd12b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "fcd058c1a9834a3da831dce7d604751b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "9b32f57d6ba8470897c2e9f30c5739cb", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "dc0ff7d1f6944af8a0e0d81ad8852c7a", + "Value": { + "$ID": "dbec3df9cc73483c9f097bb71161cb0b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c9b5c7537dcc49a9abc088527b2f5332", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "36652ea8325147a6bad5d74f0e4d2239", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "9e656c653ef342d3845454289b322274" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/slider.json b/sdk/widgets/templates/mendix-11.6/slider.json new file mode 100644 index 0000000..4685814 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/slider.json @@ -0,0 +1,2372 @@ +{ + "widgetId": "com.mendix.widget.custom.slider.Slider", + "name": "Slider", + "version": "11.6.4", + "extractedFrom": "4e3b4136-5eec-4dcd-8d73-a35b2780f568", + "type": { + "$ID": "1cebcd49b4784d1bb7df56ead6a23852", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "", + "ObjectType": { + "$ID": "34982dee741746dba78ec516d879e64b", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "35fef95bbdcf43889f04602705c7ef75", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Value attribute", + "Category": "General::Data source", + "Description": "", + "IsDefault": false, + "PropertyKey": "valueAttribute", + "ValueType": { + "$ID": "1e349f4b57ca4073ac440aade34e5c89", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Integer", + "Long", + "Decimal" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "f810a14e29ae4150a63eae21367d7174", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Enable advanced options", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "advanced", + "ValueType": { + "$ID": "e7644006a32647089322604588c1d0d5", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "869bb41535c54405b0fbfbdb8d6e04f3", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value type", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "minValueType", + "ValueType": { + "$ID": "67eca3e1eeb5444582a56e16071d40c3", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "static", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "b2874eb4b98e4b7b93f28f0bb4c7aa9b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "static", + "Caption": "Static" + }, + { + "$ID": "2f2915c85fc445848282a9140139a9fc", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Dynamic" + }, + { + "$ID": "95242983e9f948df8574278122f5e295", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "1f4751df33a8448cbfb5a15aabe65e8f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "The minimum value of the slider.", + "IsDefault": false, + "PropertyKey": "staticMinimumValue", + "ValueType": { + "$ID": "79e246b8001e4c1daf97d0b152fc4c11", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "0", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Decimal" + } + }, + { + "$ID": "afb6a44c7cbd4f1e8ec78bcd9d6fffb7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "The minimum value of the slider.", + "IsDefault": false, + "PropertyKey": "minAttribute", + "ValueType": { + "$ID": "c64e95e54d594ed691ae52336031cfc6", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Decimal", + "Integer", + "Long" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "1fbc6b692e4a4ba5b4c6eb75568ce0ef", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Minimum value", + "Category": "General::General", + "Description": "The minimum value of the slider.", + "IsDefault": false, + "PropertyKey": "expressionMinimumValue", + "ValueType": { + "$ID": "a308b1ad527f475badf313456be8bf9b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "753d69b97c9944589ddda0f2d3ab43c1", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "0eff64514f594e8eb9b1f6f323f02a4c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value type", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "maxValueType", + "ValueType": { + "$ID": "0045153c59b34939accce0c12a31040c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "static", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "eca9b1b245e4437fa49ff118563b1c5f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "static", + "Caption": "Static" + }, + { + "$ID": "3773f805a57d47989394c38c312bed2e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Dynamic" + }, + { + "$ID": "30ab60bf76e248bb81e02743e216abcd", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "b035f99160b143a0b300a16db407b225", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "The maximum value of the slider.", + "IsDefault": false, + "PropertyKey": "staticMaximumValue", + "ValueType": { + "$ID": "861edef43b324c9ebd43da8db2fb8281", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "100", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Decimal" + } + }, + { + "$ID": "deccb8f618e149f89bb2196691e7c2ab", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "The maximum value of the slider.", + "IsDefault": false, + "PropertyKey": "maxAttribute", + "ValueType": { + "$ID": "fe8bbc121b2844d1977c2393cf89f06a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Integer", + "Long", + "Decimal" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "45fe495d72454e94bfa69e2e23109806", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Maximum value", + "Category": "General::General", + "Description": "The maximum value of the slider.", + "IsDefault": false, + "PropertyKey": "expressionMaximumValue", + "ValueType": { + "$ID": "3f325bb0ebbf44c680a122b9a66ad8c1", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "39668ff1e1be46859fb78d7b78864e39", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "c1a8a0fb09b64c2b9a57f9f4fba8a4a4", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Step size type", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "stepSizeType", + "ValueType": { + "$ID": "e7f4ca319aee4715bf46ded2d3011884", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "static", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "703ed7c25c024b27a64afcce12e563d4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "static", + "Caption": "Static" + }, + { + "$ID": "21aef542caac4d4dbc385c83720493d5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Dynamic" + }, + { + "$ID": "e879bed1e4d2471d8f4c1870644cd956", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "930d4c830ca542f7bf4ca3a59880ddb6", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Step size", + "Category": "General::General", + "Description": "Value to be added or subtracted on each step the slider makes. Must be greater than zero, and max - min should be evenly divisible by the step value.", + "IsDefault": false, + "PropertyKey": "stepValue", + "ValueType": { + "$ID": "a68199998b66481aa0c729d1eb94c3c3", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "1", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Decimal" + } + }, + { + "$ID": "aaad1c83d6b84ffeb6559b386d449358", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Step size", + "Category": "General::General", + "Description": "Value to be added or subtracted on each step the slider makes. Must be greater than zero, and max - min should be evenly divisible by the step value.", + "IsDefault": false, + "PropertyKey": "stepAttribute", + "ValueType": { + "$ID": "2aeb530b852d4d95874ee117141c6831", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Integer", + "Long", + "Decimal" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "ca30f6e05b1c423fb42511c8b3bd0b91", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Step size", + "Category": "General::General", + "Description": "Value to be added or subtracted on each step the slider makes. Must be greater than zero, and max - min should be evenly divisible by the step value.", + "IsDefault": false, + "PropertyKey": "expressionStepSize", + "ValueType": { + "$ID": "e31284698448401f9e2b6b4d62b3b2a4", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "0f065c4d736e4e36b9bb467772b23975", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "Decimal" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "6bb028d9aa9a44b5b5125566be472048", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show tooltip", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "showTooltip", + "ValueType": { + "$ID": "112f76408933403aaf6f156e9418f824", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "8b030048dcdf41eb8e094add6b3232a9", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip type", + "Category": "General::General", + "Description": "By default tooltip shows current value. Choose 'Custom' to create your own template.", + "IsDefault": false, + "PropertyKey": "tooltipType", + "ValueType": { + "$ID": "25af66a7b26a493086c6b7bc79aa21fa", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "value", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "5b4933e5aba541e2ad0630096fbc8524", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "value", + "Caption": "Current value" + }, + { + "$ID": "4f06e8c3c7144bd0bd4dfc1a976ed40b", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "customText", + "Caption": "Custom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "4f210c5eb81a4f1d8eeb295481c48998", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "tooltip", + "ValueType": { + "$ID": "2d0c63a8f90f4ab0a4a41f601b446bc9", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "df9a24f780ed4ecfb36166ef9138bd99", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip always visible", + "Category": "General::General", + "Description": "When enabled tooltip is always visible to the user", + "IsDefault": false, + "PropertyKey": "tooltipAlwaysVisible", + "ValueType": { + "$ID": "b28b5b44621b4af6a319318156f548b8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "d56d407ae65b46fba87951cbcc973491", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "Label", + "ValueType": { + "$ID": "863fdf607f264a1d826f8b899ce49705", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "05cd9b84dd044a15907c97a0a8ec8da9", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Editability", + "Description": "", + "IsDefault": false, + "PropertyKey": "Editability", + "ValueType": { + "$ID": "ab0c0691fdb94a9eb0b72e913c7b64ab", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "47fd1c80e8d44122acf2b583d7805790", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Visibility", + "Description": "", + "IsDefault": false, + "PropertyKey": "Visibility", + "ValueType": { + "$ID": "1c8370fd1715484f9368a39cca9228a8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "da4383b726da4ab8aa34beebc76f62cd", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Number of markers", + "Category": "Track::Track", + "Description": "The number of marker ticks that appear along the slider’s track. (Visible when larger than 0)", + "IsDefault": false, + "PropertyKey": "noOfMarkers", + "ValueType": { + "$ID": "61c39e3a48e64872abaa6f4d115b5ad2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "2", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "dff2979b8a5a4ba4bf13336ddba74982", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Decimal places", + "Category": "Track::Track", + "Description": "Number of decimal places for marker values", + "IsDefault": false, + "PropertyKey": "decimalPlaces", + "ValueType": { + "$ID": "5111d996d23b46ff80e1770e0f0d3290", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "0", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "6b3127ae80c94ccba05917cc8dcbf555", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Orientation", + "Category": "Track::Track", + "Description": "The orientation of the slider. If ‘Vertical’, make sure to set the either the height of the parent or slider to a fixed height.", + "IsDefault": false, + "PropertyKey": "orientation", + "ValueType": { + "$ID": "b3f7741b046942a3ac534ae99fddcbb1", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "horizontal", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "8664026291c847c0b7b7d313617c0782", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "horizontal", + "Caption": "Horizontal" + }, + { + "$ID": "23530b2ffb11426b93027e248c313901", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "vertical", + "Caption": "Vertical" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "5814b1dd87a74ded8568f0697df3ceb7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height unit", + "Category": "Track::Track", + "Description": "", + "IsDefault": false, + "PropertyKey": "heightUnit", + "ValueType": { + "$ID": "e6588cd2ddaa417eb7f42e95c3343a2c", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "percentage", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "58fc3f30ed5f4626981644232153adab", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentage", + "Caption": "Percentage" + }, + { + "$ID": "86367760b0c44d5ab71da51dfaa8b5eb", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "pixels", + "Caption": "Pixels" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "184cc73c595c4f7b800ac16f39cafd34", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height", + "Category": "Track::Track", + "Description": "", + "IsDefault": false, + "PropertyKey": "height", + "ValueType": { + "$ID": "a9d27309b2214be097dcc3d2918bba07", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "100", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "81540dfbce7147ddbbc46ddf1339e492", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On change", + "Category": "Events::Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "onChange", + "ValueType": { + "$ID": "a85e2aecf2324c4eb977e878c7e4bfbf", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Input Elements", + "StudioProCategory": "Input elements", + "SupportedPlatform": "Web", + "WidgetDescription": "Change a number value using a slider", + "WidgetId": "com.mendix.widget.custom.slider.Slider", + "WidgetName": "Slider", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "174dd5cae14f4f8a88317781162d7683", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "a3f5a32b847743e78d23e54297c429d6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "35fef95bbdcf43889f04602705c7ef75", + "Value": { + "$ID": "4695c52f6653419d978b3ba27b785a9e", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "d2919263e1c5497dac6fbeef61e682fe", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "1e349f4b57ca4073ac440aade34e5c89", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "24b630ba1c35497ea609d403077c8e11", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "f810a14e29ae4150a63eae21367d7174", + "Value": { + "$ID": "6f709a93fc5a40198d355a06f50993c6", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "4a07ee70fa9d4de3a341bfec08df9c57", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "e7644006a32647089322604588c1d0d5", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "6eb7f55eeebb4f38a9d800d1b1845458", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "869bb41535c54405b0fbfbdb8d6e04f3", + "Value": { + "$ID": "6d3650ed536c4e9db7b12d9961c3c3cf", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "d01458c499ab4181bbff0dc1b833bb0b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "static", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "67eca3e1eeb5444582a56e16071d40c3", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "6da9e17060134da6b7c3ee90c80810e1", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1f4751df33a8448cbfb5a15aabe65e8f", + "Value": { + "$ID": "df9ffb1c0cac490fbb930b191dafd4a3", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "4a6f9154ecbf43cba70ce860c58ca9be", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "0", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "79e246b8001e4c1daf97d0b152fc4c11", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "95c2b7b524ac47d892ebe95124177b19", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "afb6a44c7cbd4f1e8ec78bcd9d6fffb7", + "Value": { + "$ID": "80f0ac5aa62c44898fb0df0da694f1c6", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "0f9a06ab0f0c446085b832ef5adc30c1", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "c64e95e54d594ed691ae52336031cfc6", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ce261d3af3fe4324a370c9eee381294c", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1fbc6b692e4a4ba5b4c6eb75568ce0ef", + "Value": { + "$ID": "d196c7b0cf284d3a812d274f39a6fe7b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "107ef85d6d65495b8d069e42b5935d0e", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a308b1ad527f475badf313456be8bf9b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "bb06196eda064ef997ab5a089b49b933", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "0eff64514f594e8eb9b1f6f323f02a4c", + "Value": { + "$ID": "cb14db00b1bc474b8896e90ec7357101", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "dcd92c15d2d945a4aaaf4b9e0be7949b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "static", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "0045153c59b34939accce0c12a31040c", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "56f1beebf4e049d88fbe57cf3fadf0d0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "b035f99160b143a0b300a16db407b225", + "Value": { + "$ID": "bc94eb01b9e1401eb540074ea6a4e50a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "6a594b2e516e4bc79a72838e5cfd069d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "100", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "861edef43b324c9ebd43da8db2fb8281", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "8e33888a8cbd4c868b0716291aa3dee4", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "deccb8f618e149f89bb2196691e7c2ab", + "Value": { + "$ID": "b41a2897b43445299f1af2eac748dae4", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7105cd848dfd460d8b7e6f777f80ee02", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "fe8bbc121b2844d1977c2393cf89f06a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "cc5c2082f8454564b0077d276b02e87c", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "45fe495d72454e94bfa69e2e23109806", + "Value": { + "$ID": "00b5f033a3794b77857481f50b83da3d", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "f7958d89b9cb4e5aa120468762af34bb", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "3f325bb0ebbf44c680a122b9a66ad8c1", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ee6bb35c899648d6b8bec224605dcda0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "c1a8a0fb09b64c2b9a57f9f4fba8a4a4", + "Value": { + "$ID": "d2f6c190f8eb4ee68c8f08e81960bd8f", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "51b9b67af85c40cba4966eac97741baf", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "static", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "e7f4ca319aee4715bf46ded2d3011884", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b9ab130a016444a9aed78bf4d02985b8", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "930d4c830ca542f7bf4ca3a59880ddb6", + "Value": { + "$ID": "d8eebe3b98ad4165bc369b3c8d54ee64", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7f37d9e734ee4cd7ab7c5506f51ed28b", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "1", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a68199998b66481aa0c729d1eb94c3c3", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "536573fa2f1d42909fbfffecb419c4c2", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "aaad1c83d6b84ffeb6559b386d449358", + "Value": { + "$ID": "47c7937fdd3d43d9a357d1ab739d381e", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "f4583334535042eaa7d4d1e131eac61a", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "2aeb530b852d4d95874ee117141c6831", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "c3455db12fc74df4bdd6cd209ddd9401", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ca30f6e05b1c423fb42511c8b3bd0b91", + "Value": { + "$ID": "c863a9f476b647b7837c6656a75fec3d", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "48b1d4a1d0884cefa38dffeead504485", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "e31284698448401f9e2b6b4d62b3b2a4", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ba7a4590c37c44b597962fa8d1a22645", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "6bb028d9aa9a44b5b5125566be472048", + "Value": { + "$ID": "e432d88898004cbe89a4ce01d77e2a93", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c2e14d49c26d4d908ce99ab031c41896", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "112f76408933403aaf6f156e9418f824", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "182e6be8a1fe4ad18edf21efc6365272", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "8b030048dcdf41eb8e094add6b3232a9", + "Value": { + "$ID": "d3ad0e652cda4a58b6aaa2e70b319390", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "fa220cbd5a1b46c5bda6e3005e6313d4", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "value", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "25af66a7b26a493086c6b7bc79aa21fa", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "2fb2b758a260432ea9607f5f9a178ea3", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "4f210c5eb81a4f1d8eeb295481c48998", + "Value": { + "$ID": "03b293652d4f44ab9c7359167312874b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "929fbaeda39b45e5acbf7a5ea4c41f91", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "2d0c63a8f90f4ab0a4a41f601b446bc9", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b29c026ed4d2486cb668d0ca5103ff24", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "df9a24f780ed4ecfb36166ef9138bd99", + "Value": { + "$ID": "805345d4d6ce4a50b1504ac8f4ea4a63", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "4d1f6bdc609a46a6b957d6248a5933e8", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "b28b5b44621b4af6a319318156f548b8", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "713f5d30ad4a4d7b90a81ad3edf76dc3", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "da4383b726da4ab8aa34beebc76f62cd", + "Value": { + "$ID": "78ba6db01b374ff0bb6e63d8fcbdad09", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "a4b02a40f454403097c481b316ab0764", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "2", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "61c39e3a48e64872abaa6f4d115b5ad2", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f064ddbb0ec34cc9849eacd9b052bdd6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "dff2979b8a5a4ba4bf13336ddba74982", + "Value": { + "$ID": "274faa0d9f67481e944e8ad4bcec305e", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "9e8d9fc8d5a54346ad9a5595be2ca50e", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "0", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "5111d996d23b46ff80e1770e0f0d3290", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "4c092c2c4bc24327b5b6cfd58d0b1861", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "6b3127ae80c94ccba05917cc8dcbf555", + "Value": { + "$ID": "544e8a74924d4d3f94a8e64badac3573", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "66a6c980fc514480912f4fcf7eba6296", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "horizontal", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "b3f7741b046942a3ac534ae99fddcbb1", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ded2e38f1e28485f90a06c8f333408f2", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "5814b1dd87a74ded8568f0697df3ceb7", + "Value": { + "$ID": "bc1f5fa88cef4a0f9e18d8d9affe7877", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "cd5f7792975e4eac8ff3e6416f0f3da9", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "percentage", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "e6588cd2ddaa417eb7f42e95c3343a2c", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "e9783ebed60945eea7ee28013a535af1", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "184cc73c595c4f7b800ac16f39cafd34", + "Value": { + "$ID": "83e51c24fca641bd8731523a42a4ea76", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "d82257e2045f4a9f80aa1dc9c0b937a5", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "100", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a9d27309b2214be097dcc3d2918bba07", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "30880035ca054551b07b30ecfd6422f4", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "81540dfbce7147ddbbc46ddf1339e492", + "Value": { + "$ID": "1898b36152b74cd9b0945cfcfd6fb2e7", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e9e0405e0c8d4f3cab2ec52aa5f44ef7", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a85e2aecf2324c4eb977e878c7e4bfbf", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "34982dee741746dba78ec516d879e64b" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/starrating.json b/sdk/widgets/templates/mendix-11.6/starrating.json new file mode 100644 index 0000000..e4f9364 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/starrating.json @@ -0,0 +1,754 @@ +{ + "widgetId": "com.mendix.widget.custom.starrating.StarRating", + "name": "Rating", + "version": "11.6.4", + "extractedFrom": "9bc46bcf-8c41-4054-af2c-c4df94ada936", + "type": { + "$ID": "d338f3b4eb82412796dd827c1576cc9e", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/rating", + "ObjectType": { + "$ID": "324c7ea6f43447a4ab2774e456369d63", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "0c7a6e0a8a0d47af92a29325ed619d5d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Attribute", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "rateAttribute", + "ValueType": { + "$ID": "828e1423342d4967826177f2541d9dad", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Integer", + "Long", + "Decimal" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "4d7ce9c6cdb64510bb3f73e690a185e0", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Empty icon", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "emptyIcon", + "ValueType": { + "$ID": "4923f6d08fa845a8b611feac0103f280", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Icon" + } + }, + { + "$ID": "eb87905fe3694c9c8e3fac8ffe5169cf", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Selected icon", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "icon", + "ValueType": { + "$ID": "628adfc1d80a41d3890aca43afc8d6f0", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Icon" + } + }, + { + "$ID": "94f1bca690934a8f80554bb984335ed8", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Amount", + "Category": "General", + "Description": "The number of rating icons", + "IsDefault": false, + "PropertyKey": "maximumStars", + "ValueType": { + "$ID": "4439b8230214425693951efae89f2726", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "5", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "79e40337bdac4edc97f26d20bb5c7ab8", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Animation", + "Category": "General", + "Description": "", + "IsDefault": false, + "PropertyKey": "animation", + "ValueType": { + "$ID": "7a6a0b82ee8443eca2fdcffb8ad19069", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "995411fab6d64d199038efce1e785fed", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On change", + "Category": "Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "onChange", + "ValueType": { + "$ID": "f4a676e686af45c7ac8ae455ac693162", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "277fce3514c34b4face8d19e3da291d5", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Name", + "ValueType": { + "$ID": "2a4ed057b7da454ca0d337907c3fc86b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "08d018adff5843e0accf403c51578ec4", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Editability", + "ValueType": { + "$ID": "3994e69597c44540a04dfda015cf48c2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "adb30d5b2caf4d07b02ea487b6ef96eb", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Visibility", + "ValueType": { + "$ID": "25b0d32262f3482081a47d57542870ff", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "adc6e14a2d4b42d0ba45bb26a793c29e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "TabIndex", + "ValueType": { + "$ID": "8a7c75575b1c4c4b940484c150274bda", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Display", + "StudioProCategory": "Display", + "SupportedPlatform": "Web", + "WidgetDescription": "", + "WidgetId": "com.mendix.widget.custom.starrating.StarRating", + "WidgetName": "Rating", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "30eda0a8603545328df699af4c995ab3", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "23d801b020354f008ce4cf8a259a98ee", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "0c7a6e0a8a0d47af92a29325ed619d5d", + "Value": { + "$ID": "083eb54283f3464894e427253e4457f7", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "615325777eb745cc9824751085c5c389", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "828e1423342d4967826177f2541d9dad", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f3e44eca78834d2cb5d7a1c6179db05f", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "4d7ce9c6cdb64510bb3f73e690a185e0", + "Value": { + "$ID": "471ad94515504a5582fb028c5ca71345", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "976b862a4b3f45aeb72d99812f2cc0d4", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "4923f6d08fa845a8b611feac0103f280", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "849b3379a16a471680591d817f7119d4", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "eb87905fe3694c9c8e3fac8ffe5169cf", + "Value": { + "$ID": "2df0c75221a942a7ae65c2cbab663afe", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7b211f2d8e004e9794822cdf66a56acb", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "628adfc1d80a41d3890aca43afc8d6f0", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "edf2b3b2cb1840a0976c80b1f96751eb", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "94f1bca690934a8f80554bb984335ed8", + "Value": { + "$ID": "037f1494af3f42aa9e1baa6e457f8953", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "5550190a6b2c480c95d9627c8a96e44c", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "5", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "4439b8230214425693951efae89f2726", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "2406224f710b4b399a4d146b1e4f1b7f", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "79e40337bdac4edc97f26d20bb5c7ab8", + "Value": { + "$ID": "928624557f8a4125bedc79e01faf6011", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "747228a3821b474abadae5d3b443bd08", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7a6a0b82ee8443eca2fdcffb8ad19069", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "8759b210cf3c4084bcbb239e9bc79b45", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "995411fab6d64d199038efce1e785fed", + "Value": { + "$ID": "733794e8557a47d1860bbfa1f15c236d", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "3f7b897c1a17404cbfa590fc8defd1a0", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f4a676e686af45c7ac8ae455ac693162", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "324c7ea6f43447a4ab2774e456369d63" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/switch.json b/sdk/widgets/templates/mendix-11.6/switch.json new file mode 100644 index 0000000..4481242 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/switch.json @@ -0,0 +1,308 @@ +{ + "widgetId": "com.mendix.widget.custom.switch.Switch", + "name": "Switch", + "version": "11.6.4", + "extractedFrom": "892d009e-9c56-4629-b179-b292824910a3", + "type": { + "$ID": "1ad0e353920b44328e14773dc2ba2902", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/switch", + "ObjectType": { + "$ID": "b43c23fec9844c698d1cceb8ce3514a1", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "cc448ca6125449d5b7b41227ec84a834", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Boolean attribute", + "Category": "General::Data source", + "Description": "Attribute to toggle", + "IsDefault": false, + "PropertyKey": "booleanAttribute", + "ValueType": { + "$ID": "97b5a9fe1d6f433aa58abf7959144ecf", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "Boolean" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "bc997a0a629d419f83f0ddedac356560", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On change", + "Category": "General::Actions", + "Description": "Action to be performed when the switch is toggled", + "IsDefault": false, + "PropertyKey": "action", + "ValueType": { + "$ID": "56f7e892e0f24491a818b0a2518bba57", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + }, + { + "$ID": "49908883689b45afbcb365500ca581b1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Label", + "ValueType": { + "$ID": "d4d7da4cbe234755b0aeb94e4fdb2598", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "f5af59bc6654412490540436834ee5a7", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Editability", + "ValueType": { + "$ID": "174b6a1359d74191bf18283b8bbbdd3b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Input Elements", + "StudioProCategory": "Input elements", + "SupportedPlatform": "Web", + "WidgetDescription": "Toggle a boolean attribute", + "WidgetId": "com.mendix.widget.custom.switch.Switch", + "WidgetName": "Switch", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "7c8f3e942f524df3b92c9c5106ff4947", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "a37265a280ac45539444e119435b7ee6", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "cc448ca6125449d5b7b41227ec84a834", + "Value": { + "$ID": "ea8893e5418547e7b808ced978aeab43", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "ea87264a78f94cb4978ca8362b5a3ba6", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "97b5a9fe1d6f433aa58abf7959144ecf", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "c4b6129b5bd34338829eb1b42ddccedd", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "bc997a0a629d419f83f0ddedac356560", + "Value": { + "$ID": "c139ce93489b420186af33fa82404f61", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "ab19832e6cb249eebb62ebc36e4aa338", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "56f7e892e0f24491a818b0a2518bba57", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "b43c23fec9844c698d1cceb8ce3514a1" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/timeline.json b/sdk/widgets/templates/mendix-11.6/timeline.json new file mode 100644 index 0000000..66f11bd --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/timeline.json @@ -0,0 +1,1704 @@ +{ + "widgetId": "com.mendix.widget.web.timeline.Timeline", + "name": "Timeline", + "version": "11.6.4", + "extractedFrom": "b0fcf32a-15b8-4a68-949c-5bcc1fe3528e", + "type": { + "$ID": "184dc6d1946348f0bcc94d49447ee59b", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/timeline", + "ObjectType": { + "$ID": "1afa43c6e28d4253b9ac20742a5eb2f1", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "19d63ff9d7454e7d81ac52c6645c8f7d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Data source", + "Category": "Data Source::Data source", + "Description": "", + "IsDefault": false, + "PropertyKey": "data", + "ValueType": { + "$ID": "554693de7a1b42e9a9038465da569f37", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "DataSource" + } + }, + { + "$ID": "afbbb63799d848a68070410350638574", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Title", + "Category": "Data Source::Data source", + "Description": "", + "IsDefault": false, + "PropertyKey": "title", + "ValueType": { + "$ID": "e452f21c4ad041d89a37a07553f6aa67", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "data", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "b0de7994f431485899fd97c211d00fb9", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Description", + "Category": "Data Source::Data source", + "Description": "", + "IsDefault": false, + "PropertyKey": "description", + "ValueType": { + "$ID": "269d023fc4d74501bc3cf0c3cef2bbd1", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "data", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "d91075a0f05b40ad9005795bc396facb", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Time Indication", + "Category": "Data Source::Data source", + "Description": "", + "IsDefault": false, + "PropertyKey": "timeIndication", + "ValueType": { + "$ID": "c04031d8344f48c7ba9b862cf373168b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "data", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "ac9fcc6505014adc984bb8be49d203d8", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Custom Visualization", + "Category": "General::General", + "Description": "Enables free to model timeline.", + "IsDefault": false, + "PropertyKey": "customVisualization", + "ValueType": { + "$ID": "ed5f9e316b28483bb5099ebef56aa71d", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "52df8592eb5c448e85b8a5a6d6213fe5", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Icon", + "Category": "General::General", + "Description": "If no icon is configured, a circle will be rendered.", + "IsDefault": false, + "PropertyKey": "icon", + "ValueType": { + "$ID": "d4ea496118b2464f89b84418aaef8786", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Icon" + } + }, + { + "$ID": "a30c2f86a157461bb0783380db203e8d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Group Events", + "Category": "General::General", + "Description": "Shows a header between grouped events based on event date.", + "IsDefault": false, + "PropertyKey": "groupEvents", + "ValueType": { + "$ID": "a678e6ef7fa9433782f033d125d78134", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "7e4a7e0c5fbf4a3dbbaff59f0477ccf6", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Group Attribute", + "Category": "General::General", + "Description": "Will be used for grouping events, as a group header value. If events have no date time value, use \"Unscheduled events placement\" to control rendering.", + "IsDefault": false, + "PropertyKey": "groupAttribute", + "ValueType": { + "$ID": "707ab4744b6d4215ba93114674dff2c0", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1, + "DateTime" + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "data", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Attribute" + } + }, + { + "$ID": "31a289f2af42434aa70e0108c6836a00", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Group by", + "Category": "General::General", + "Description": "Group events based on day, month or year.", + "IsDefault": false, + "PropertyKey": "groupByKey", + "ValueType": { + "$ID": "fec33b23be2145e69bbdfbfa84866c7e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "day", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "4c8bae5cc7054624a53dd64346c7d9c4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "day", + "Caption": "Day" + }, + { + "$ID": "825309306698468498a3eac186709b6f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "month", + "Caption": "Month" + }, + { + "$ID": "752ce5198b6c4a499b95628ddb9168c9", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "year", + "Caption": "Year" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "744a29d0e7674afea89f63013af79abd", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Format", + "Category": "General::General", + "Description": "Format group header with current language's format", + "IsDefault": false, + "PropertyKey": "groupByDayOptions", + "ValueType": { + "$ID": "d4a933e4be40429b9ef881825ca0719e", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "dayName", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "aa7ba6ae3c4e43f59188de58f5baa683", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dayName", + "Caption": "Day name" + }, + { + "$ID": "bd54f4eb5ddb4fe795b0de62a474d1e5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dayMonth", + "Caption": "Day and month" + }, + { + "$ID": "1c9cc335229f4aa08671ea2db3ae18d4", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "fullDate", + "Caption": "Day, month, year" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "c4353ef6db284b958048c722dca3a330", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Format", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "groupByMonthOptions", + "ValueType": { + "$ID": "456763c70ddb4f04b258fdc85ec0dcd9", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "month", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "e630c817f2454ffbb81a7e10b31c82d7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "month", + "Caption": "Month" + }, + { + "$ID": "3f042476ec7344a88455a43149ee51ae", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "monthYear", + "Caption": "Month and year" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "855289ad870f49a086424828b07cc67c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Ungrouped events position", + "Category": "General::General", + "Description": "Position in the list of events without a date and time", + "IsDefault": false, + "PropertyKey": "ungroupedEventsPosition", + "ValueType": { + "$ID": "0ce4e9280e144a71840321977b2ebb1b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "end", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "321ab6be42db45a8bdf6ad9def7aef13", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "beginning", + "Caption": "Beginning of the timeline" + }, + { + "$ID": "936e7542844e4e9fa19acb7b27ea887f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "end", + "Caption": "End of the timeline" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "b39a617548134b0da0bc31ce45dd7714", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Icon", + "Category": "General::Custom", + "Description": "Content of the icon", + "IsDefault": false, + "PropertyKey": "customIcon", + "ValueType": { + "$ID": "f2b712fcdf224797823348a4037af1e2", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "data", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "2845b27254e042259f51a759688dec2a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Group header", + "Category": "General::Custom", + "Description": "Content of the group header", + "IsDefault": false, + "PropertyKey": "customGroupHeader", + "ValueType": { + "$ID": "38b632e0e5a54c3e9817c631d5f8ee4a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "data", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "9e2c30dd4f194a34be693b05e9e664cc", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Title", + "Category": "General::Custom", + "Description": "Content of the title", + "IsDefault": false, + "PropertyKey": "customTitle", + "ValueType": { + "$ID": "c85ec76495af4109ac7166ed74cbf5f0", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "data", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "913c748d93e643c0871e1b04d13b074f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Event time", + "Category": "General::Custom", + "Description": "Content of the event time", + "IsDefault": false, + "PropertyKey": "customEventDateTime", + "ValueType": { + "$ID": "19e1f012f2d547af8bd760def1488518", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "data", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "718d36da3de74138a5c64453f689af6c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Content", + "Category": "General::Custom", + "Description": "Content of the description", + "IsDefault": false, + "PropertyKey": "customDescription", + "ValueType": { + "$ID": "82f68cfb9aec4fe5bc83dd9f6f3abddc", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "data", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "fbfe31150090487ea547bda1be5a12de", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "On click", + "Category": "Events", + "Description": "", + "IsDefault": false, + "PropertyKey": "onClick", + "ValueType": { + "$ID": "d2d9f58adeda477fad6dda67f4808b1b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "data", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Action" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Display", + "StudioProCategory": "Display", + "SupportedPlatform": "Web", + "WidgetDescription": "Shows vertical timeline with events", + "WidgetId": "com.mendix.widget.web.timeline.Timeline", + "WidgetName": "Timeline", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "614f17c9f8d14f9287c7c180038f7f18", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "f11314a5c3dc481ba225c867c104ca85", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "19d63ff9d7454e7d81ac52c6645c8f7d", + "Value": { + "$ID": "868d0aaae0a2463e8d9e4981dabab912", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "5d91258183ab43d7a254589290233bbe", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "554693de7a1b42e9a9038465da569f37", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "9562a8414a514e7292bbf95fea697a02", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "afbbb63799d848a68070410350638574", + "Value": { + "$ID": "a9e92aa4ac994363b42bbf783d0f7346", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "cd46a39b0c0c4abeaf7682b08cb3c725", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "55d1a398436e41dcbe92aa8493ba473b", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "30989a2062a3420d8a6ce0f5e6f1c8bf", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "ac46d7042f7e400b80f350c19c51da59", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "e452f21c4ad041d89a37a07553f6aa67", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "efa84cfa1ddd416ebd33101174c627b3", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "b0de7994f431485899fd97c211d00fb9", + "Value": { + "$ID": "c57d8291973746608df9d25942d9f770", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "ac36b43b694b47428ef7c9261dea5acd", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "ad24c87db8394046b000da061ef1d653", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "77a0c7f0e2f1494aa2d66a3a7418d321", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "72f0ef1204664855b2072b45d8a62165", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "269d023fc4d74501bc3cf0c3cef2bbd1", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "8f461f13bd6d4b059713d8de18ff3bf7", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "d91075a0f05b40ad9005795bc396facb", + "Value": { + "$ID": "e640103189e543f281eadd337a753e1b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "1ac2fe0c0b3f45419af3bb2685cf1926", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "cc49b4db32104c9f900f0ac6195459dd", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "f0c7660714944424abb5aaf7407f2711", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "73799115b7e3467fadfa8623e9f92382", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "c04031d8344f48c7ba9b862cf373168b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a1390ac37199496d8acc52c7d87c0435", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ac9fcc6505014adc984bb8be49d203d8", + "Value": { + "$ID": "57057dc6b5004f078bca822dee976f18", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "b833cf27c4794cadb25cdc465de3764c", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "ed5f9e316b28483bb5099ebef56aa71d", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "d76f56781cfa422f81f7895e07e2f1c2", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "52df8592eb5c448e85b8a5a6d6213fe5", + "Value": { + "$ID": "8945d2755b0248f38197b232cb763566", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "8518ee385ec145a4ac4c6fe6db1ea893", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d4ea496118b2464f89b84418aaef8786", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "3caf8007cb1440f18b4a5faba0227e63", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "a30c2f86a157461bb0783380db203e8d", + "Value": { + "$ID": "b2c7fbbdb6424e11acb33cef3362be21", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "928757bc1e2f4bda91a66f00fd718164", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a678e6ef7fa9433782f033d125d78134", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "2a7303925c864c67a9430f0be68a9a06", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "7e4a7e0c5fbf4a3dbbaff59f0477ccf6", + "Value": { + "$ID": "d2f7ce68b1e145d5a4b430f649305b51", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "90a2fa097a434d37810e0ad48201dd54", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "707ab4744b6d4215ba93114674dff2c0", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "635c71ac786e42d4bf42e59c38b7a636", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "31a289f2af42434aa70e0108c6836a00", + "Value": { + "$ID": "f30c2df45aa54a25915a4df3db47b69b", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "22139a29618f49bd8345f0d66b9c3caf", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "day", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "fec33b23be2145e69bbdfbfa84866c7e", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "8cc62f2ffbb7450fbaad3395860071c0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "744a29d0e7674afea89f63013af79abd", + "Value": { + "$ID": "8df9465d2a434303a2eebe61d05bf5dc", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "d8090d8e46ff4672858b29bcf5b0dfca", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "dayName", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d4a933e4be40429b9ef881825ca0719e", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "de17e10486d44c6b894ea9482c62a1f9", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "c4353ef6db284b958048c722dca3a330", + "Value": { + "$ID": "3d4a210d1a984813b9e024594fa7e9f3", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "7be3685334ec42b7b779df44742866cf", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "month", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "456763c70ddb4f04b258fdc85ec0dcd9", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "9c254a37a023454183bca02d303c46e4", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "855289ad870f49a086424828b07cc67c", + "Value": { + "$ID": "65104003151141edb7635dc76891fb4a", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "553aed8874424b4b8e6cae83ac650aca", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "end", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "0ce4e9280e144a71840321977b2ebb1b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "31fcb0b40daf4dc7b59b63f0a9729def", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "b39a617548134b0da0bc31ce45dd7714", + "Value": { + "$ID": "717ab523f88643558ca3ea23974daa1c", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "46fff1a1b0134c31952c0c2d092801f5", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f2b712fcdf224797823348a4037af1e2", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "80fcb36b285149db8d66ff8c9cd17160", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "2845b27254e042259f51a759688dec2a", + "Value": { + "$ID": "7a4c93c8aedc4cee899f95ed88a44f10", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "09c7fda9573246e0a139511614b7b8c3", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "38b632e0e5a54c3e9817c631d5f8ee4a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "bc479c7a631a49e3bfa70cd4b6a3149d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "9e2c30dd4f194a34be693b05e9e664cc", + "Value": { + "$ID": "4b9ad1a5f1b343f4abe597a6d3aeb860", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "0c2604fbf93f4916888bd3786cc7c16d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "c85ec76495af4109ac7166ed74cbf5f0", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "3a15566d9251493e98d3dbffe557c089", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "913c748d93e643c0871e1b04d13b074f", + "Value": { + "$ID": "2f82d9cd8de74b8b8abd7dc75736ddbe", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "eddbe48dba034858b5d594ddb2a5ced0", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "19e1f012f2d547af8bd760def1488518", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "e2308ad668f84a64b530aa181f2b4f4b", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "718d36da3de74138a5c64453f689af6c", + "Value": { + "$ID": "a2fb8b30a7d64560b970570d58dcedb1", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "09b3fa71577a4a9fbebe5871a52f260d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "82f68cfb9aec4fe5bc83dd9f6f3abddc", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "404d47e9a8fa43c18d6ec9f1e1a5da06", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "fbfe31150090487ea547bda1be5a12de", + "Value": { + "$ID": "03ae48b129fa4423bae45b7b28bcf3bf", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "2ee14dd2fa9149cbbcc94db5c89fa9cc", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "d2d9f58adeda477fad6dda67f4808b1b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "1afa43c6e28d4253b9ac20742a5eb2f1" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/tooltip.json b/sdk/widgets/templates/mendix-11.6/tooltip.json new file mode 100644 index 0000000..cfe9bca --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/tooltip.json @@ -0,0 +1,729 @@ +{ + "widgetId": "com.mendix.widget.web.tooltip.Tooltip", + "name": "Tooltip", + "version": "11.6.4", + "extractedFrom": "4f015d39-33a2-4eb7-af2f-690843711c8b", + "type": { + "$ID": "560879b62ab84f138cd8614bc8baf444", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/tooltip", + "ObjectType": { + "$ID": "24ab3251545e4dc68fcb27cec359bd7b", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "a8b62c57b6904bb09d92476001b62465", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Trigger: place widgets here", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "trigger", + "ValueType": { + "$ID": "f35d6d9ae4394e258aa2df3eb4f116ca", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "951b5df1e633490284aad752ea0e929a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Render method", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "renderMethod", + "ValueType": { + "$ID": "f9c2984344e74e61b4fb4c6ec0a1ccab", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "text", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "d034622ffb31449f9f035ddadc03a90d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "text", + "Caption": "Text" + }, + { + "$ID": "0113ff5262504cd680754b7b6106558f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "custom", + "Caption": "Custom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "88fb6fc6d7494b95aac9ff432e15e0bb", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip content: place widgets here", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "htmlMessage", + "ValueType": { + "$ID": "3237602ef2394bc698b485ebe4ae9fab", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "bf40f8b60ae1422eaaabbd8ef19706bd", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "textMessage", + "ValueType": { + "$ID": "6a30920dcd0e46ef87733da04bd36147", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "378a7fbb8b0d4049bdf043595d1b2d18", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Tooltip position", + "Category": "General::General", + "Description": "How to position the tooltip in relation to the trigger element - at the top, to the left, at the bottom or to the right.", + "IsDefault": false, + "PropertyKey": "tooltipPosition", + "ValueType": { + "$ID": "7b2c6334d9dd413e84fdc2d4a95293f7", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "top", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "ee588bd6708c4fcda2d054f997ba4978", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "left", + "Caption": "Left" + }, + { + "$ID": "aa7b3580e1d94131a8322634750ec71a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "right", + "Caption": "Right" + }, + { + "$ID": "858291e8f2f54f0db5e4eca85180e580", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "top", + "Caption": "Top" + }, + { + "$ID": "0dafcac23fa9460389eaeebf3e95c33d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "bottom", + "Caption": "Bottom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "b8bf64d2d6a4433e8850cbecbdf71c39", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Arrow position", + "Category": "General::General", + "Description": "How to position the tooltip arrow in relation to the tooltip - at the start, in the center or at the end.", + "IsDefault": false, + "PropertyKey": "arrowPosition", + "ValueType": { + "$ID": "6883a5d76641496ca21e2c6d1421d481", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "none", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "1812b4df51864a92b6bf083869f5950c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "start", + "Caption": "Start" + }, + { + "$ID": "2c0c426d2a2c4467b9add444bfbd6ab1", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "none", + "Caption": "Center" + }, + { + "$ID": "dea4532597864417b5bf82cfd2057ec8", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "end", + "Caption": "End" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "268180791bd449d5aec5284e0c30f900", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Open on", + "Category": "General::General", + "Description": "How the tooltip is triggered - click, hover, hover and focus. On mobile device “hover” will be triggered on touch.", + "IsDefault": false, + "PropertyKey": "openOn", + "ValueType": { + "$ID": "7668899e43e441afb54cd99e240a14fe", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "hover", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "8fca70961cf34f99ac730434dc6b0ea2", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "click", + "Caption": "Click" + }, + { + "$ID": "750d81fb279f4555a627588c1b2aaa16", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "hover", + "Caption": "Hover" + }, + { + "$ID": "93cb392cc8b4477a93ae8798cedabb6f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "hoverFocus", + "Caption": "Hover,focus" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Display", + "StudioProCategory": "Display", + "SupportedPlatform": "Web", + "WidgetDescription": "", + "WidgetId": "com.mendix.widget.web.tooltip.Tooltip", + "WidgetName": "Tooltip", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "5bd0294363d64bf383e204ea27bcecdb", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "19a198bc0e3242a299686e25861749ab", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "a8b62c57b6904bb09d92476001b62465", + "Value": { + "$ID": "ff66a7490c9344b2bbbd8bb36338ee7d", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "f84b057c38bb470480254f2730285feb", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f35d6d9ae4394e258aa2df3eb4f116ca", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "513690104e3542ff92d6d213dccf0e00", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "951b5df1e633490284aad752ea0e929a", + "Value": { + "$ID": "6449aa15738f4257b9a47de2b6f21055", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "596a40a2d0564af69ce31d514e88b7de", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "text", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f9c2984344e74e61b4fb4c6ec0a1ccab", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "53bea560af6e4f7d8954e04dd21224e3", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "88fb6fc6d7494b95aac9ff432e15e0bb", + "Value": { + "$ID": "f1fca24e44d54f639488ca65fea47923", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e32820d5494c475bab6907548ff893b0", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "3237602ef2394bc698b485ebe4ae9fab", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "e37892fc6e0c47a59d19724ff01bb19f", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "bf40f8b60ae1422eaaabbd8ef19706bd", + "Value": { + "$ID": "e43ae59b81c6413eb788e17c7c6472cb", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "145a5e9cfd2b45a09af74f45cd3cefe2", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "0cdbcfbabd094852adc75e3f57ecb7e5", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "03a228b1f7c44188a1b976996fe44662", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "bef48141fc314b329559b46884830fa9", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "6a30920dcd0e46ef87733da04bd36147", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a4621a65469b4480a86bea98abeccc5c", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "378a7fbb8b0d4049bdf043595d1b2d18", + "Value": { + "$ID": "8c2183af27454709a6a46c9f90d136ce", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "323a1ef73e494bd18137ac3e2602db86", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "top", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7b2c6334d9dd413e84fdc2d4a95293f7", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "16371353c99949b0b635502bfb2ce450", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "b8bf64d2d6a4433e8850cbecbdf71c39", + "Value": { + "$ID": "d2a610b0d7a74f6895c0b6127702ec6f", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "4c97c1aeb76a4e5fbe09866de7b0ff29", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "none", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "6883a5d76641496ca21e2c6d1421d481", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "c7c65ed0ba6e4040ba678d5ba8890470", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "268180791bd449d5aec5284e0c30f900", + "Value": { + "$ID": "e7bd27a75474469c97826d2a90ede858", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "12e69531f29e4259a1fd514df46e9a08", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "hover", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7668899e43e441afb54cd99e240a14fe", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "24ab3251545e4dc68fcb27cec359bd7b" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/treenode.json b/sdk/widgets/templates/mendix-11.6/treenode.json new file mode 100644 index 0000000..0a47e61 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/treenode.json @@ -0,0 +1,1301 @@ +{ + "widgetId": "com.mendix.widget.web.treenode.TreeNode", + "name": "Tree node", + "version": "11.6.4", + "extractedFrom": "8269c38f-fdb6-4fe0-a1e2-b41a065a3e84", + "type": { + "$ID": "9ec4732dd8b245609fc274a9af6df600", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/modules/tree-node", + "ObjectType": { + "$ID": "2359b983c2d34ab69b2673cf54c625a6", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "812a6c50e43144a3ba29f6eca89ac89d", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Enable advanced options", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "advancedMode", + "ValueType": { + "$ID": "f046c3367f734b0f98cc9aa76fdaddb3", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "e720a6d812a0401db3fc9487427c034e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Data source", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "datasource", + "ValueType": { + "$ID": "8f557050885843fb84833be8ddf63933", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": true, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "DataSource" + } + }, + { + "$ID": "0976e31159104a06a9b625989d6c80a6", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Header type", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "headerType", + "ValueType": { + "$ID": "57d870052fc8448b826002b78450747a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "text", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "9e4af120e116434bbbcf69e2d9f1b5af", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "text", + "Caption": "Text" + }, + { + "$ID": "90c0d6e2821e44cfa8ec7a3b52a497a7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "custom", + "Caption": "Custom" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "2ea7a94a96e548e2a0b6bff28d56aca4", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Open node when", + "Category": "General::General", + "Description": "Define which part of the node, when clicked, should open or close this node. \"Header is clicked\" means the whole header is clickable, while \"Icon is clicked\" means only the icon is used to switch node state.", + "IsDefault": false, + "PropertyKey": "openNodeOn", + "ValueType": { + "$ID": "c78583a36f204b0199a86230d6723015", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "headerClick", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "451523bee1db49638d34d62821828ed3", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "headerClick", + "Caption": "Header is clicked" + }, + { + "$ID": "dcdcf474cddb4573beec41acc6825d7c", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "iconClick", + "Caption": "Icon is clicked" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "3bfc7455b6c44fa4a8e6f21049a42c1a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Header", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "headerContent", + "ValueType": { + "$ID": "26d6848a9d734cc9b182d1f206216dab", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "datasource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "eef01afb0e134f04a16455945ed129f8", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Header caption", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "headerCaption", + "ValueType": { + "$ID": "245d6f1d71f64be4b155d9829b4e8be8", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "datasource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "2b770a3842644aafb59e8689168b4137", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Has children", + "Category": "General::General", + "Description": "Indicate whether the node has children or is an end node. When set to yes, a composable region becomes available to define the child nodes.", + "IsDefault": false, + "PropertyKey": "hasChildren", + "ValueType": { + "$ID": "a66f96592f784b6f9116e52526cc8585", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "a6b6d6ca8f0644e38a65e0a1847ad82b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Start expanded", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "startExpanded", + "ValueType": { + "$ID": "559f136f576e423fb51ad0232c73e460", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "105e9cd41d234987bd8e97b597cbb7a2", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Place other Tree nodes here", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "children", + "ValueType": { + "$ID": "80b3344487ff49c3b78f6195dc83a020", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "datasource", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Widgets" + } + }, + { + "$ID": "33e49b4d10f7479a8b5851ada50693b2", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Animate", + "Category": "General::General", + "Description": "", + "IsDefault": false, + "PropertyKey": "animate", + "ValueType": { + "$ID": "1eaf5c89e89648eeb5747802261c9249", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "63a7824cc65a4174a2c71af8a19dbb2e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show icon", + "Category": "Visualization::Icon", + "Description": "", + "IsDefault": false, + "PropertyKey": "showIcon", + "ValueType": { + "$ID": "b84b0744edc3460990d0808e3d987bd1", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "left", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "805af42ce851481cb84e93e213d20352", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "left", + "Caption": "Left" + }, + { + "$ID": "d3409627a3714a2bbc130460efe69445", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "right", + "Caption": "Right" + }, + { + "$ID": "4ee386a0fbd94058a02004360aacd5f9", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "no", + "Caption": "No" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "83a859d9e1bb414ab284c8a170f53a63", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Expanded icon", + "Category": "Visualization::Icon", + "Description": "", + "IsDefault": false, + "PropertyKey": "expandedIcon", + "ValueType": { + "$ID": "a4ff1df26dd94e009bcae57999b77b5a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Icon" + } + }, + { + "$ID": "e66b8be3deff48d6adbfa54f754d751c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Collapsed icon", + "Category": "Visualization::Icon", + "Description": "", + "IsDefault": false, + "PropertyKey": "collapsedIcon", + "ValueType": { + "$ID": "dbb81ee336f748cb88071648975a96a7", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Icon" + } + }, + { + "$ID": "3223806ef7aa4b05904deec82e8b4c97", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Animate icon", + "Category": "Visualization::Icon", + "Description": "Animate the icon when the group is collapsing or expanding.", + "IsDefault": false, + "PropertyKey": "animateIcon", + "ValueType": { + "$ID": "fd99c1b606194d499cd2c63276ee49d6", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Data Containers", + "StudioProCategory": "Data containers", + "SupportedPlatform": "Web", + "WidgetDescription": "Display a tree view structure", + "WidgetId": "com.mendix.widget.web.treenode.TreeNode", + "WidgetName": "Tree node", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "7af71c3c8ef54d359f05c101f17979a4", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "8f9ca7f275dc41b28733c29c239ebe10", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "812a6c50e43144a3ba29f6eca89ac89d", + "Value": { + "$ID": "852a439cc20b431aa776f2bb85d66d9e", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "69952a53622d44bbb92aca1d44f4226d", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f046c3367f734b0f98cc9aa76fdaddb3", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "7eef13a0d8ce4f14ae469376a8dc808e", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "e720a6d812a0401db3fc9487427c034e", + "Value": { + "$ID": "505440b7aaa24f2faaf5aa0fa753de50", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "345a54bae2454357992ae8e4dfdb3864", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "8f557050885843fb84833be8ddf63933", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "6115d4a79b4243beacf9662c7380afe0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "0976e31159104a06a9b625989d6c80a6", + "Value": { + "$ID": "f6c0397b520f44a8a09d53d6a3d82c62", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "dc5e11b49a394144b7e16abde4315ef3", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "text", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "57d870052fc8448b826002b78450747a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "24892a00843c4df3a8fc16dcd89453b4", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "2ea7a94a96e548e2a0b6bff28d56aca4", + "Value": { + "$ID": "5deea0a38f204ff68770765b46acfad5", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "4a9543cdb9b24685994ed8f3d808f63c", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "headerClick", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "c78583a36f204b0199a86230d6723015", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "20e8527d5caf493eb0966f537c9c4d74", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "3bfc7455b6c44fa4a8e6f21049a42c1a", + "Value": { + "$ID": "7a7dc6f27dee4ed29622948bc979be06", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "bebbd5fe5aeb4d2b8066c80a4d10ac64", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "26d6848a9d734cc9b182d1f206216dab", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "b7c242eeed9d4708aa04734fb1d93e00", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "eef01afb0e134f04a16455945ed129f8", + "Value": { + "$ID": "97bbbaf341854244bcfb1c9937f85082", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "1a271c1a3d224d22ae4bd8db35780649", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "98661c0b53e54684a378e45c4607f0f5", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "b8dbad92775b4ca48b88e98f56dc6a84", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "12c463b6f95540faa498f524b3ea16eb", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "245d6f1d71f64be4b155d9829b4e8be8", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "1a8d4bdd0b094906952046a4989d6e24", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "2b770a3842644aafb59e8689168b4137", + "Value": { + "$ID": "9768c7a6cbc34fffac89e97a41c1e300", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "06a417e911fd439280c1b3e1952ae253", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a66f96592f784b6f9116e52526cc8585", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "cb7b8e2e39eb4aa19e099eb6d4c989af", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "a6b6d6ca8f0644e38a65e0a1847ad82b", + "Value": { + "$ID": "2c71f97e14de47dc93353777a8abd0fe", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "dfbdc8f1115e49c7b8a9d67127a723a3", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "559f136f576e423fb51ad0232c73e460", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f17ede9f9d87462e9719ca938d63ac52", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "105e9cd41d234987bd8e97b597cbb7a2", + "Value": { + "$ID": "5a754b3e53f041ea838df33302e5b366", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "5969a0a8765d486695986e39fb6d7acd", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "80b3344487ff49c3b78f6195dc83a020", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "eebddf5a3b614469ac721a6fb9c84ab1", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "33e49b4d10f7479a8b5851ada50693b2", + "Value": { + "$ID": "841e353c78dc4fdc875f8a95c82dd3c2", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "0a53a767e0834888a464b25fcbb21767", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "1eaf5c89e89648eeb5747802261c9249", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "e9649ea13d274c9d918b57e0a7a5ae5e", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "63a7824cc65a4174a2c71af8a19dbb2e", + "Value": { + "$ID": "fabd63ed1a924718b92e1b17b681350e", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "5379b763077b4b96994d34ddd9db29e8", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "left", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "b84b0744edc3460990d0808e3d987bd1", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a99c84701aeb4a40a481499894486110", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "83a859d9e1bb414ab284c8a170f53a63", + "Value": { + "$ID": "fc81b419a0f1442a918d28d01faf02a9", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "40e42b94547d4fbba712022e203fdab4", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "a4ff1df26dd94e009bcae57999b77b5a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "2a284c057c294818a5d795a99408dc9d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "e66b8be3deff48d6adbfa54f754d751c", + "Value": { + "$ID": "e6fed53810b54b2b940f6cdb049251a8", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "aafd3c5e8b1147ddaa9b21a2abf91a4a", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "dbb81ee336f748cb88071648975a96a7", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "64fe988473a14249ba91c1b7606802a0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "3223806ef7aa4b05904deec82e8b4c97", + "Value": { + "$ID": "82354034f3854d3b9a33292773f91ace", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e896bb159e6a49c4aeaaa397f32ddcf0", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "fd99c1b606194d499cd2c63276ee49d6", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "2359b983c2d34ab69b2673cf54c625a6" + } +} \ No newline at end of file diff --git a/sdk/widgets/templates/mendix-11.6/videoplayer.json b/sdk/widgets/templates/mendix-11.6/videoplayer.json new file mode 100644 index 0000000..3c39fe7 --- /dev/null +++ b/sdk/widgets/templates/mendix-11.6/videoplayer.json @@ -0,0 +1,1577 @@ +{ + "widgetId": "com.mendix.widget.web.videoplayer.VideoPlayer", + "name": "Video Player", + "version": "11.6.4", + "extractedFrom": "6d434a2a-15a8-42b5-bd7b-8b995ee9855c", + "type": { + "$ID": "960bdb3d73df47febe94fccc62abd9c7", + "$Type": "CustomWidgets$CustomWidgetType", + "HelpUrl": "https://docs.mendix.com/appstore/widgets/video-player", + "ObjectType": { + "$ID": "94f0089cafee44ada4063ac4352077ae", + "$Type": "CustomWidgets$WidgetObjectType", + "PropertyTypes": [ + 2, + { + "$ID": "11e8f127b0594a7b8a38d28da013958f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Type", + "Category": "General::Data source", + "Description": "", + "IsDefault": false, + "PropertyKey": "type", + "ValueType": { + "$ID": "25c43c5eff884daf9c2c70adea183f80", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "dynamic", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "14bde80064dd462cb47def3fd200ca21", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "dynamic", + "Caption": "Dynamic" + }, + { + "$ID": "8566346d4ad942f996cfdcf9a55790a5", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "expression", + "Caption": "Expression" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "0497ba1d44c441b392431b9e1f329319", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Video URL", + "Category": "General::Data source", + "Description": "The web address of the video: YouTube, Vimeo, Dailymotion or MP4.", + "IsDefault": false, + "PropertyKey": "urlExpression", + "ValueType": { + "$ID": "9cb2c6eab3674170b1fd46bad3e59b7f", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "f8a7f246e3514c2b957392a73386f9b1", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "fa7e2fb0875a4d3c91167dc3189d6c21", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Poster URL", + "Category": "General::Data source", + "Description": "The web address of the poster image. A poster image is a custom preview image that will be shown in the player until the user starts the video.", + "IsDefault": false, + "PropertyKey": "posterExpression", + "ValueType": { + "$ID": "7979bcb095014e27a4f89155002bb652", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": { + "$ID": "3f6702f35e89484991a53d9359625112", + "$Type": "CustomWidgets$WidgetReturnType", + "AssignableTo": "", + "EntityProperty": "", + "IsList": false, + "Type": "String" + }, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Expression" + } + }, + { + "$ID": "ae1c3a4274c54b36bf580a1a04cd2641", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Video URL", + "Category": "General::Data source", + "Description": "The web address of the video: YouTube, Vimeo, Dailymotion or MP4.", + "IsDefault": false, + "PropertyKey": "videoUrl", + "ValueType": { + "$ID": "3118c87b0cf547f7a644f8f7a598f436", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "36ab38130da8481385a67a792a5f7f1e", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Poster URL", + "Category": "General::Data source", + "Description": "The web address of the poster image. A poster image is a custom preview image that will be shown in the player until the user starts the video.", + "IsDefault": false, + "PropertyKey": "posterUrl", + "ValueType": { + "$ID": "7d7679601a4d47aab1498351a8cb568a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "48a4ae823abc48e1b0baef0665463fe1", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "Name", + "ValueType": { + "$ID": "51b212b11461431590506bdb1d168bb7", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "aa409fe63e864c08b6db42f38572a509", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "", + "Category": "General::Common", + "Description": "", + "IsDefault": false, + "PropertyKey": "TabIndex", + "ValueType": { + "$ID": "d5186b298ef14fc29e766a1a7481766a", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "System" + } + }, + { + "$ID": "48d78e6f19d14dfebeccdd4cc1f58ad8", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Title", + "Category": "Accessibility::Accessibility", + "Description": "Describe the purpose of the video (e.g., 'Video tutorial on accessibility').", + "IsDefault": false, + "PropertyKey": "iframeTitle", + "ValueType": { + "$ID": "a1721abae4754a039fbdacdde79091ef", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": false, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "TextTemplate" + } + }, + { + "$ID": "8f3a0e561cb9434bb45ad8a48029352f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Auto start", + "Category": "Controls::Controls", + "Description": "Automatically start playing the video when the page loads.", + "IsDefault": false, + "PropertyKey": "autoStart", + "ValueType": { + "$ID": "7f72bdb3ff784995ba9d0cc5d0aa61e6", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "1b621081fbf44996b8a0fffb317ea630", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Show Controls", + "Category": "Controls::Controls", + "Description": "Display video controls (control bar, display icons, dock buttons). Available for YouTube, Dailymotion and external videos.", + "IsDefault": false, + "PropertyKey": "showControls", + "ValueType": { + "$ID": "f9c7e6b948c74412ba59f05a458d9bdc", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "true", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "ff5dbae552e446e284308eac8d8c809f", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Muted", + "Category": "Controls::Controls", + "Description": "Start the video on mute.", + "IsDefault": false, + "PropertyKey": "muted", + "ValueType": { + "$ID": "f08b8ea82ea44a2c9f0844bddda6bdeb", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "d48a99f07d254cf0b62608d8eef71e0c", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Loop", + "Category": "Controls::Controls", + "Description": "Loop the video after it finishes. Available for YouTube, Vimeo, and external videos.", + "IsDefault": false, + "PropertyKey": "loop", + "ValueType": { + "$ID": "1a552606355b41f9a96552f326f25b8b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "false", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Boolean" + } + }, + { + "$ID": "82910e871ec843d289828bd321d0265b", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Width Unit", + "Category": "Dimensions::Dimensions", + "Description": "Percentage: portion of parent size. Pixels: absolute amount of pixels.", + "IsDefault": false, + "PropertyKey": "widthUnit", + "ValueType": { + "$ID": "be89bb4d2b0c432dabc322a250527c99", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "percentage", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "80579de54491416a8e96c928a2f8cd33", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentage", + "Caption": "Percentage" + }, + { + "$ID": "946ffd6fb26048f5a8df78ccd1c3975a", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "pixels", + "Caption": "Pixels" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "4d7bff0a1c1141dca7cfe41837fc5d13", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Width", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "width", + "ValueType": { + "$ID": "8f78562ba1f04ba5854cf7805123bf10", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "100", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + }, + { + "$ID": "317c47a22909457badcf57b393a7cbcf", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height unit", + "Category": "Dimensions::Dimensions", + "Description": "Aspect ratio: ratio of width to height. Percentage of parent: portion of parent height. Percentage of width: portion of the width. Pixels: absolute amount of pixels.", + "IsDefault": false, + "PropertyKey": "heightUnit", + "ValueType": { + "$ID": "74f5a395897941ba8026facb0d06a95b", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "aspectRatio", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "8691d286f2e54b249b4e105ef594f438", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "aspectRatio", + "Caption": "Aspect ratio" + }, + { + "$ID": "811d7193510d47579e63d5f29cc0e53e", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentageOfParent", + "Caption": "Percentage of parent" + }, + { + "$ID": "9da26f1eff564a4dae1cb374af2eb471", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "percentageOfWidth", + "Caption": "Percentage of width" + }, + { + "$ID": "1090815ab2dc4653864d64a0e7a42da7", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "pixels", + "Caption": "Pixels" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "f122349ca9544663a55a8058ce1a070a", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Aspect ratio", + "Category": "Dimensions::Dimensions", + "Description": "16:9 (Widescreen, HD Video), 4:3 (Classic TV, Standard monitor), 3:2 (Classic film), 21:9 (Cinemascope), 1:1 (Square, Social media)", + "IsDefault": false, + "PropertyKey": "heightAspectRatio", + "ValueType": { + "$ID": "4f1b1332552e43eaa63ebc3c5ed15a60", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "sixteenByNine", + "EntityProperty": "", + "EnumerationValues": [ + 2, + { + "$ID": "36bcb0af439c48f686093d7ebaf788fe", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "sixteenByNine", + "Caption": "16:9" + }, + { + "$ID": "1a9d474b92914d6ba9cfc2206a5d9a66", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "fourByThree", + "Caption": "4:3" + }, + { + "$ID": "54a7b18502484356bc97a22132884f67", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "threeByTwo", + "Caption": "3:2" + }, + { + "$ID": "56b73b5b7a574394ae4014e9044ad34d", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "TwentyOneByNine", + "Caption": "21:9" + }, + { + "$ID": "afd2c0f1b5d345ab9c579a3f3210dd1f", + "$Type": "CustomWidgets$WidgetEnumerationValue", + "_Key": "oneByOne", + "Caption": "1:1" + } + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Enumeration" + } + }, + { + "$ID": "3440354b7f3d45cd9986c1f962d12275", + "$Type": "CustomWidgets$WidgetPropertyType", + "Caption": "Height", + "Category": "Dimensions::Dimensions", + "Description": "", + "IsDefault": false, + "PropertyKey": "height", + "ValueType": { + "$ID": "8af4ba7da8ae428f9a339b402037a4df", + "$Type": "CustomWidgets$WidgetValueType", + "ActionVariables": [ + 2 + ], + "AllowedTypes": [ + 1 + ], + "AllowNonPersistableEntities": false, + "AssociationTypes": [ + 1 + ], + "DataSourceProperty": "", + "DefaultType": "None", + "DefaultValue": "500", + "EntityProperty": "", + "EnumerationValues": [ + 2 + ], + "IsLinked": false, + "IsList": false, + "IsMetaData": false, + "IsPath": "No", + "Multiline": false, + "ObjectType": null, + "OnChangeProperty": "", + "ParameterIsList": false, + "PathType": "None", + "Required": true, + "ReturnType": null, + "SelectableObjectsProperty": "", + "SelectionTypes": [ + 1 + ], + "SetLabel": false, + "Translations": [ + 2 + ], + "Type": "Integer" + } + } + ] + }, + "OfflineCapable": true, + "StudioCategory": "Images, Videos & Files", + "StudioProCategory": "Images, videos & files", + "SupportedPlatform": "Web", + "WidgetDescription": "Shows a video from YouTube, Vimeo, Dailymotion and Mp4", + "WidgetId": "com.mendix.widget.web.videoplayer.VideoPlayer", + "WidgetName": "Video Player", + "WidgetNeedsEntityContext": true, + "WidgetPluginWidget": true + }, + "object": { + "$ID": "9d2bb15971974c0b91458673da63153c", + "$Type": "CustomWidgets$WidgetObject", + "Properties": [ + 2, + { + "$ID": "cb8e3d0003b14ad99cfe9e326bda0ce5", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "11e8f127b0594a7b8a38d28da013958f", + "Value": { + "$ID": "9c62b7c2e0c848a184d481b205e210f2", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c55c8faa38674913967d068b7744b5ea", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "dynamic", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "25c43c5eff884daf9c2c70adea183f80", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "9137ae1ef6004c96a9e4359d3bed5581", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "0497ba1d44c441b392431b9e1f329319", + "Value": { + "$ID": "365180513a8247eeab3a6782bb10dd54", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "869f01fc31ba4b86beffbb8511e423b8", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "9cb2c6eab3674170b1fd46bad3e59b7f", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "d00fe1c049eb4df98a168a78e10b439d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "fa7e2fb0875a4d3c91167dc3189d6c21", + "Value": { + "$ID": "235a2088907c42d482629ddd400ed0bf", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "29619f22839842d2aa42eba0c88267ad", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7979bcb095014e27a4f89155002bb652", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "05e1475639af4d648f2e48ec09f0622d", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ae1c3a4274c54b36bf580a1a04cd2641", + "Value": { + "$ID": "bbf0f503a32b4e8ebb7d340a6309a6b6", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c31c517db76c43e080ee1429229eabc7", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "79da05ea7b7c48fb933bb1c2fc3e87c2", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "87844948ac794aa989e69eecbf5f9fb3", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "5aa75603ecd74b4594bb4735fe2b214d", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "3118c87b0cf547f7a644f8f7a598f436", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "23e047ed0f05482095d90b4c387b3c2f", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "36ab38130da8481385a67a792a5f7f1e", + "Value": { + "$ID": "bbde214adb934bad9f05b4909b852104", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "964abadaf6994983b91bdc3f051e3be1", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "d8bd6652cf784cae960962e771840921", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "4dd685d1ea6c4f12bcc0cdc987e2449a", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "4acee6fd49b7425288a89b4b21d64da3", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "7d7679601a4d47aab1498351a8cb568a", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f76c397208ca4d9ab52e6df36794bfe5", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "48d78e6f19d14dfebeccdd4cc1f58ad8", + "Value": { + "$ID": "9308dc794a6a438b9e7f6cdbe942bd85", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "1873a1a4d7764e8cae4c9d85d940ed30", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": { + "$ID": "6af77669debd4d0db1ac55507cfe2876", + "$Type": "Forms$ClientTemplate", + "Fallback": { + "$ID": "1b193955ec1b4b55960c40a8111b8d1d", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + }, + "Parameters": [ + 2 + ], + "Template": { + "$ID": "710b08c271804730bea0a7c8b1401a03", + "$Type": "Texts$Text", + "Items": [ + 3 + ] + } + }, + "TranslatableValue": null, + "TypePointer": "a1721abae4754a039fbdacdde79091ef", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "a650cfac67a94fafae345b8c43a28909", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "8f3a0e561cb9434bb45ad8a48029352f", + "Value": { + "$ID": "5e6c8927a30a4a5c8e8c3e38695829d1", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "84038bc3e4234a5cae6c97c1353efda5", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "7f72bdb3ff784995ba9d0cc5d0aa61e6", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "d751301e1fe244e2b3e26eade586f468", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "1b621081fbf44996b8a0fffb317ea630", + "Value": { + "$ID": "20aef47a1b6e490e88bb873baea46ba4", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "ad366d6be3d24fab8eca5f5694bc9a96", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "true", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f9c7e6b948c74412ba59f05a458d9bdc", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "f9367b94e78a47d3a88d1d397efd11a9", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "ff5dbae552e446e284308eac8d8c809f", + "Value": { + "$ID": "32edab3e533f40d18d4258ce77473bb3", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "8f0c5a46886f4453bcb731823c01dfef", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "f08b8ea82ea44a2c9f0844bddda6bdeb", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "1641556b01174399aac2fa86280a5102", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "d48a99f07d254cf0b62608d8eef71e0c", + "Value": { + "$ID": "817235e78c2f42e5b46c43fea5deb67e", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "949ee74ce7194f4a90d6e007eab1bdd6", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "false", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "1a552606355b41f9a96552f326f25b8b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ee111b5b49054b14b1c4d35ec58327b0", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "82910e871ec843d289828bd321d0265b", + "Value": { + "$ID": "40ecfca0cfc646ee9faa4147c4d56420", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "69d9a7d1c7d04a87aa98a83665f5a2b3", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "percentage", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "be89bb4d2b0c432dabc322a250527c99", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "ddb4943c3b674aff84b9fcc01beee4bc", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "4d7bff0a1c1141dca7cfe41837fc5d13", + "Value": { + "$ID": "fb1b2ae207164edf97ca35b145ebe1ef", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "c2f080f7a08749299f417465d89b7acb", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "100", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "8f78562ba1f04ba5854cf7805123bf10", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "e0320096cf954d2b92b795ad85b24b12", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "317c47a22909457badcf57b393a7cbcf", + "Value": { + "$ID": "09c74b4499ca4b3a992b4080897ea9d2", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "e496220879fb443e893578f10890ce58", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "aspectRatio", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "74f5a395897941ba8026facb0d06a95b", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "69a875906e604db198db1b7806687be1", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "f122349ca9544663a55a8058ce1a070a", + "Value": { + "$ID": "7f1d84232a4c455c88df0d9a56f2d303", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "8f432a0ce3ff41f997ccf6cfb1656f24", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "sixteenByNine", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "4f1b1332552e43eaa63ebc3c5ed15a60", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + }, + { + "$ID": "34c8700214bf4164a74f853e18d60359", + "$Type": "CustomWidgets$WidgetProperty", + "TypePointer": "3440354b7f3d45cd9986c1f962d12275", + "Value": { + "$ID": "7e2ead1cca7c489bba90ebb9fcf708c5", + "$Type": "CustomWidgets$WidgetValue", + "Action": { + "$ID": "3c37767501c943b0ad34466e99b34728", + "$Type": "Forms$NoAction", + "DisabledDuringExecution": true + }, + "AttributeRef": null, + "DataSource": null, + "EntityRef": null, + "Expression": "", + "Form": "", + "Icon": null, + "Image": "", + "Microflow": "", + "Nanoflow": "", + "Objects": [ + 2 + ], + "PrimitiveValue": "500", + "Selection": "None", + "SourceVariable": null, + "TextTemplate": null, + "TranslatableValue": null, + "TypePointer": "8af4ba7da8ae428f9a339b402037a4df", + "Widgets": [ + 2 + ], + "XPathConstraint": "" + } + } + ], + "TypePointer": "94f0089cafee44ada4063ac4352077ae" + } +} \ No newline at end of file