From 6445828583a4072acec1c2188dacae5cb1ef84c5 Mon Sep 17 00:00:00 2001 From: Jueun Park <s5616012@mailbox.tu-dresden.de> Date: Thu, 14 Oct 2021 16:00:47 +0900 Subject: [PATCH] Update attributes --- .../6.8/executionHistory/executionHistory.bin | Bin 5678547 -> 5678547 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/6.8/fileHashes/fileHashes.bin | Bin 803449 -> 803449 bytes .gradle/6.8/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .gradle/6.8/javaCompile/javaCompile.lock | Bin 17 -> 17 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .../de/tudresden/inf/st/openapi/ast/Get.class | Bin 12395 -> 11398 bytes .../inf/st/openapi/ast/ParameterObject.class | Bin 28263 -> 30577 bytes .../tudresden/inf/st/openapi/ast/Post.class | Bin 12451 -> 11454 bytes .../de/tudresden/inf/st/openapi/ast/Get.java | 641 +++++++++--------- .../inf/st/openapi/ast/OperationObject.java | 28 +- .../inf/st/openapi/ast/ParameterObject.java | 76 +++ .../de/tudresden/inf/st/openapi/ast/Post.java | 41 +- .../inf/st/openapi/ast/PropertyItem.java | 4 +- src/main/jastadd/InferParameter.jrag | 115 ++-- src/main/jastadd/RandomRequestGenerator.jrag | 7 +- 16 files changed, 491 insertions(+), 421 deletions(-) diff --git a/.gradle/6.8/executionHistory/executionHistory.bin b/.gradle/6.8/executionHistory/executionHistory.bin index 487dde5f26e8bb40a6b744bb3242a6c3acbbfaea..0937b7d7a3574da085e6d34d8e4e27d6f6b6ffe2 100644 GIT binary patch delta 5077 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 B;mZI3 delta 5075 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 diff --git a/.gradle/6.8/executionHistory/executionHistory.lock b/.gradle/6.8/executionHistory/executionHistory.lock index af20fcff714e2467307d839b3c2c52dfc001bd7d..b8d71ad805654f50c9d334ff24dbee081cf7033f 100644 GIT binary patch literal 17 VcmZQp+O{L7ZHdZl1~8ER2mmxN1vLNw literal 17 VcmZQp+O{L7ZHdZl1~8Dm4FEJ61s?za diff --git a/.gradle/6.8/fileHashes/fileHashes.bin b/.gradle/6.8/fileHashes/fileHashes.bin index 0b805cbed77abc540c4e9b217b1311d955d9e0a8..85b8fc04654f00a26803206273599d087eb2d69a 100644 GIT binary patch delta 4182 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 P{h&=w8EAvSk!KeGKXR|Q delta 4209 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 FE&$l#<O2Wz diff --git a/.gradle/6.8/fileHashes/fileHashes.lock b/.gradle/6.8/fileHashes/fileHashes.lock index 65526b12c90b649566a5068f2caa395cc21602d8..23e552ee05cfd42ba4cc5fbfb0107c0ea92b84e3 100644 GIT binary patch literal 17 WcmZP;t>XHyYn^sA0|>DA>j3~Pfdm`? literal 17 WcmZP;t>XHyYn^sA0|>Bq^8o-XSp)b0 diff --git a/.gradle/6.8/javaCompile/javaCompile.lock b/.gradle/6.8/javaCompile/javaCompile.lock index d7dd07d50a31b9c8d34512e0c71ad22a0c94dae8..8a1f5a3c0a58a570da4a16b7728342f0336fcb62 100644 GIT binary patch literal 17 VcmZS9_jn)L_pnKx0SuJ>001zJ1nmF- literal 17 VcmZS9_jn)L_pnKx0SuIW0st_I1nK|) diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 897f7f32e101ba5cc6967f9ccc13badb416e6cd9..5826910ca27d4367f3743d38a83a2fbdc433e681 100644 GIT binary patch literal 17 UcmZRMRkTpz>bjrL00x@p0U+@Mwg3PC literal 17 UcmZRMRkTpz>bjrL00x>H0U*-@m;e9( diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class index 9d2bacd1f891187a0af801e0932ca1c4fca374b4..31a3f7f496d0fe035751c91e5eaaecf3138c0ef0 100644 GIT binary patch delta 4381 zcmaEz&=y&L>ff$?3=9k=jJw$x-f=N7GQ0;7AJ`c_axi@2VED|%z{2o_gW)TP{stnx zvori)XZQ(X{^DZbVff9(z|HW7o#8JRg8;)n5a&M^g8(A~7XvpVBPSyhBQrZA3m1bJ z!#@s2RxSoHMm7+^&c(>V$jQN2&jsRfvorE=F~~8pb1^6~{9|Y2<z!H2<l|ycXXNK% zP-GMU5rQB>h@DXwBrF0_Aj-uk#wgCtD8bGs$<8Rn!6?ne@Q6`{i&2(Qj*CGT<P&v9 zd604ikX}U)O9{kM1`#UkjH+A=_3Dgj?2PJM3|5R9+zcleH9-bzu`_COG1xI`a5L&K z>asKHaWLw0F*q{32k|wz7_314v|u#gVl-ql;$}F>Xbd7u*cnZ^7`zzGxEM|`nsYHc zX0!mYEIAmuxER72tw0=W4n`XgZ40u?j)T#@9>g$WXLJBL&Jkq36UYV59E>g?5m%66 zHxS{@!RW!oV8Q6g&gjL(kjUuG!RP~`eYqI@82z~z0~iCj7=svtxfnx0mY-$}<zNg0 zMFcxYS2&1>0C_tSWNZ|Oh-PPuVccxZ)WpOXw|O5+3lnQRBZH;S<c-2clPlRLZ}#O- zV-!eWXG~;gOk!tDW@k)cXH1>k%<0FI#>l|potc-y$Y23c&d<fmn7&z-tCo=^gPk#R z^E~caMvfkaG9Jb(#_Y+;ybfYHjJb>q%<irsJdAlD@qC84j0|Fv1DM4o_w&jL6fhR@ zF!V4Mfrw&|#CcIM86JinhF%`V62?*<#xllo9>xlWUUtSx9>yxh>dEhU^##fpYj_xI z8B5t2>v$OJ8OkQ>@yRilF*Z#0=W~*3WR&1xY+`KYVOYS>%fqk`L@Z)>&d8uVd7^-V zsC#M&55ppc#XO8H3~SjLB|w~)lOOPP>9jJou`{;wFm^DO@-VDsSj@w)3`DGEc+SJv z$=Joiuz}$@55q==O^gislN}|MC%<Cn(c)q3X6#~Q5Y9?0OVlqd$;{DrEGkN@^vNtP z0r{zihq0HjkB6a%p?LCpelfOw9>xibeUrHb@<b;xPGV=A%)>Z^aVihvG=}*+jMEuj zPVN&h(3`<HlZSB@<7^(rIgE3880Ue)VLoFY590#Hg^UcWg{7%Ql{}1#7#H#|E@qfJ zIbBePw-gk%OF%Z2FceQ-An3xog<&fX<5I?DJdDd3mredCD8{^kanj^`N#)4~G8|zc zr3E>uJd7(DOBorMjSLKU7*{c_W@lW(!?>1l9XsQC9>xuf8`&8*@i1;?+``Vdm4|T~ zNGWR~$a6f5+ZlK8Fz#gB!Nc$j6eb%$;k1Hb@#H!o36@=q47Q-OwE2us7Mp}fVoFM8 zURpq6Nk%|oQDSatNor9sBZJB0c~X+b;P3(km9?f1A^^bxj0~a>oq-_VBD8M4CKbcP z!JeL45>i=^I@v&WjeH>k69Wq<gc%qZSQtteiWwLfq!}0)N*T%+7#YeZ|CZgsSTT8v zoO^vG0|P@011AF~LpwtiLp1{vgCIjaLk&YM12cmvLpDPlLp=ivgC#>aLjyx211p0U zgBwE=Lo)*#gA;=vLkmMI13SYM1}=s+hIR%f1_p-t3>^%e3?ML{p^KrJfsvt`fq}uB zf#pAg69Wf3gE~7yI6DI)I|B<NI|Dbv<SKdodL#j`tN;VUe+DZCCWvZ~VmVMj+{4fd zay$bAgE0dm10w?i1FP0{28E3b3=B*R6$}gvTwoX2F|aV$Gl2ZX15pHZ5hFt%+yHY1 zCa@f*7Rz1+Q^l<eO6aC|FmNz<BALPoH>HQ6pMi;?e6p>AOg+d}J_cq628JL87KUI3 zE`|`W9x<>>xS@I&7`PcGFid1%WSGRjz#zxK$S{q8nPGY~17k7642GFddKQ?T&A`Gi zhhZ+%qdHKJGO?_I`;rap@<@<9^$ZX%GC?h3WSGY=A6+Xmy4D1cRt%jB;DLi2x+>`5 zlE%QokPb5-6ch(=yBA_LK^5JE90nGKT$l+c1}tJ&3=Y{fiqiI=kcGr&5d#N9F<3n$ zRJouQaxgG4EMe$mU}RVdPUVaYpwL>zuox5oli8GF7%L_xD=DjkQi1{lGXpDw3{<@m zgCav4!*XyqIzvtCp1f8`hJ6LYVg_c0^2ryJ#4JHBfP{4)*mg)zvqIIc1SN5Be1g=h zVqjok1Qn2AyXBSL7%L{HDQo+H?ABsnVUT0sXIR6qmVudpk3p4T9YZ}heV9VcVr4L3 zSP%9ID6jA`F#l!XV`orjl>5cN%D~950qUi@%C3wRla*Dp!I>6htSpkTDsW>>;Ku4> zHC7g6EDNaA2Dz4j0hHCi?qSo?-p*i-o?P~VeGdtHHn7o2AiuLQEMZs+PM(_?`k@Bd zGcbb<V%O4U-o~Je9`i>T*cgr>nZ^z_4P+QQ!xC`*U}V_BuoavJ^i`!S5HWBLtP2tY zu$&0WOWX{M4BHtP8K#3W5+lP7hOHo%Om0+_GDc{=jzu#g!%l`>Ad46nm`WK~7`PZ1 z7?mfVQ_WyvD4uMgrs*Rf$*wKQvW+3oie)*2lqCB$20x*oZ43c38F-;G!B#Ar7({n7 zh(&H^5SL`x$q>TGu#G`hD0CZx<TeJWZ4A=O|967K!zSNT7xxUeV$+gj+r|*F{Qnbe zD^{&747R#E86ue&!X;TZSaBlrIrlR#G59gEG72*=FbXq@f@lU7a1ocpATila!?b=O z!#9R?4Br`cF#Ke=&hU%j7Q=6bpA3H(nHc^uvNAF-3NZX-6lP>#RA6KT`yN!p*D^#g z>}J@*z|PRl5WujPVIKnrLm5LN!+wSX3~UTP8Q8!DHXB1Y!ybl%42Kw4Kw$!lB1UC~ z!{Fkafl-;^NIk<u1||khMk$7)42Kw)8ICb9fD06e*5eE;;8H(?f%6Z84m-mMvA+y5 z><lN^8BYFVaA0TfVrMwT&Tv}nKZ7CzD?7AGumCGK!NBkbR85@x#US^eL4bh;SsGLm zoB`*#dT9nGhVu-J46{-hE-_qYxW>T5aJ`t}2E)x_hFc7b47VBXKq8m<3Ii(xF9QSP zEp1<|Eeuh|8Thq!GuTD4Z)dRI$`Az-(%H%2z{D_<fp<59W28{@b_VDDP+=D)hH$NI z3^Cgn+_o{e`|0jv@L*(^$>6NJb8?H8l18l0at3ipRz%9+l4RB1#t`ST{QoXQ$`Fd5 zd`_!}C1x8#!sIw@iOfVRE=jI!3`s)C;MC+N$|}fkVgZ92NHAp^Ln`w&hO})A>Dw4G zthgn)w=wu`W5^WB0;?4PIYyFOl4Bb~_BMu`<qU!-0=dioPhv3xrKBjGoeYta?`w;T zf>}%q;i4>StazZ_ik!@?qYbXQmN95DFfj5mFfsBmh%)jsC@~5!=r9T~m@|qpgfWUS z#4?IAWHCxGlrTy%G%`vtbTCRYbTi5@EMb&mSj#BSu#HiHVLzi1!!bq`hO>;S438Mq z8D2ALGJIpyVq|30VPs>}XH;M`WOQOQVhm?AVa#SUWvpg2W9(tHsArtTXvH{}(VB4q zqZ8w5Mr+1(j5dtx8EqMNGTJfjVRT|V&S=MYiqVPjI-@f<3HLGZF~l-xgOe~TLl}b* zIN`D|W;5tB+-11Oz|H8y5W#St;Q<2|!&*j0aBGH{VH?8_aBGHz;Vi>LaBGH@;Ss|b zhI&wQhK=Df!)|bMhMnOx!(ni9hJ$fEgEY7~!wgC`@brHRn*Ny>Z!jEXc*wv6PU0O5 ze18~3*%=;*fvJ;!84Mxm`zM3&F9xRn4Dk${uq6Blsold~&j4=ah+>t7wSxXIXt6V# z{L2u}&XCB?@c1VKFW5{024=XKpgbWL&CUSH7ud7K6HvBz%D@O}nS#nk1_lQGdT`MV zX+q^~Ky6$wx`P88QryBSJVu5WgxeO3-bgy3tr7u8P%i;yFU(p)t!)hXX!bJ5BI$<O zE8xhmn&CM}H>gqur&>^j%YZ}e3Wn#9jL)DCvq@_kLje&Mfy)(;(W@931RNQbK`aFY z6_P>q#zdGT;K;BDt1~o+(2QuzfQ@;H>YGvqR;_Ieq?yCO%<u{vzpokIfa$jkQyCZ- xv=~?!CNst|Oi|-x*v1&kFk6k2;Vfe;!#Oohh6{|b3>O_F8LlwKGF(;T1OV3+Ag}-c delta 5223 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 diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ParameterObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ParameterObject.class index d209ac47e41fd62937a0040f26181c298509d2f5..8421cdbfb6bd301a48aebb478d678b7c72e7aa08 100644 GIT binary patch literal 30577 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 AtN;K2 literal 28263 zcmX^0Z`VEs1_l#mB`$_Nj88ck#2KHlGd>5=FW4Dhaxt(nKILK%XMDxZ_?nA>1HyR& z5_t<E-hqhsAmRgv_y{6Cfr!r_;tPoQ3NrW`i1-d7ey}tC1PT8FS@D~T@eku)cE*3~ zjQ`o07}%K@xftXapK>rUaWTj-F>^7VWMbiBVr60jaoM>TWSKa)7{r-4K?D~U12Yph zh{Xe9@p3WjVdCRt5NF~C5dt7W5JU)p2w@N*0wP2~gcyhr2N4n+Op+ioq_`MZ8DDWR zurf)52p)DO8IZ6nh>+uA-~b7WGs%Nk3Lt`qok<ZyD}e^I2^sti)E!p@`$qSZiz zIy;jFJCi0CgAbDyH{&`cZIG=x>`b~`3;|49+)R2*`s_>w9888>48cqsAig#`lMxp~ zI5?=8*ti&tn2fm?!kJ7!rkR3RW+0Y1h-Cp{S%O$rAeJ?VWdmZ_f>?GSmOY5&0Ae|U zSWY08GZ%w3lM9IJ3gWtfSneQ}2RoA|7efKWYA=wlytx@SF!_K8UoHkGCO;72&&3qL z6v)lEo+${VGZ>^Z1Vn^#F?fKKcrb-=F@-ZlfMg><5>X%`nv203B<sx-1CodZ`85s{ z8u1)V3G7UXTnwEci>;ZGIGB<_-cI3QN(IqrT#Tof(m9wiK%7hvCktd=Hi(<U!ITT) z<be#z=U^(}U@GKbD&k-&2B|CIVk%{FW@jqnV(4TlXS09600taP6<iGSnJPi4stROE zHAr_22U9IbT^%Udv4dFktYGB~3|!ny4NQ$f3=B-|LJW*d-9ijZO#L9S30zDQnI?gB zPv&5n0y1hUNaHjPrs<&cI0NLgnIK{oJJW1-ra6oZ0wwv`sd>RAMVWc&@qUT9sf-Ll zK3R!niTXK-dFlEP32R0MK4f*Cd5jF=$O0~@#mPmP1tppJd5jFAU>T?U{G8Opy!fEh z!qUv5)D%VrVI*^*vet|Yaww`@QVWVwlM_o)Q=lps8DvltIOgQ!m%HW`lvIW#=9H!~ zG6;gDA?}P1E~(5(Wn>Tmi$P6@cdaPM$xlgTWROA;2AdR=TAW%`26i1-(myFHHMu0- zwIVUM0Avz!SU}{g85t~-^K%RGi&Fy<ixP8FOHzyC;Vl28c;Cc=c!<*Yc*o!nzx<Tc z`1rES;>;3|HT;l3C@sm%(GN~7v1VjYDoV^t$<GZ)EXjZy6A$$dT$?gPQDA9mQ6+9w z7U`*ZsYQt;sX<^Pp@u*>@m`6=C5|a6KAFWO@veELx&BF6Nbb@=)#{m75)ajvnO71I z!f>~U7r^`t^(I_~F^Z9a%_cK1v&4>(fmuT{jFExG865QdKACx`ex<odsYM})Nsy4u zPfpAUODxI+@u7k&B^jB;j0}c8DXID;r71<J#VM(I`k8rY`o$&s`30$Yi3OSZiNz)Q z@GyWl!J3hQ7i6u9b4F%PN>OSaBV&dJB&3m(F^MA31Z0h*jW{7lz!R&FkYD`^N|23$ z`j}u4A;q^f?G%IJn5n>kk%6he5JVV(2xAao0wPR7gc*o12N4z^!jh3em7s$_o@QiV zE-*9zlZK28x&-wg`xvat2uvC?GKl%0B(}<eRA_<=BxtCAL5U4PMZw7#skw>%N!E7O zj0~{^l_NQnu-VYED5SI?CzTfFJLl(>q~?_%%#WhB`%6;uiZk=`z>en(&P>lsEGaEY zWn@wuPFa+2L?R^;q!NXU>`d4yv@}EA2t`XU)HU3-0+CukWs77`X<kWYZfaO&ab{9Z zs$*VWen}#zol(rrG>?&i+c`h4xTL5wxg@`ck%7lEFE6#oIVZ8WIJKCO!JeSgp!GAt zR23xitQi?t^1v-37D&U03DoZ4MrrGCAeuLVSlTZ9;6?^=bA=V!L}7=wN_fF)5DgIy zSUO>3V28#dBLfeV1<s|63_Qqjz{tP}4>d*xmXgYXR7M6iNFBt;zz(gl7#Vm$MH$R+ zJ4OaJNYZ0ukVGzzkS(%9lS8)Ej*&qORUb6s>=+qXvNQ8i7#UbYKy6D#24??)5=I6V zP|Jgnfjh4>7hX$)8VR0^41BqXl^%&@sX?jbMVTe3;I=~)BLiPrPHAz5V@XMob7FD^ zs9gsZaL&)kNlgZ&0jMx*a!!6;DkFojh9<!n$80#T<bhi#T&@+#so)lDF(U&@a(+Q2 zBLib9BZC@JUUdf9<Ck9&Tv||&UsRHs0@nj-fCQH$CTII57C@^Oj<nL89A~gOT!^Fr zs*4cKYlOHpBZF{BQEDnkgI|6~QDR<kT7FS3BLizPs7b@fK-g>0#B9yTz?jL%z~~7| z3q`4^j0_wwgBck(GK*DQ3riDo7#Val2nH6+M9nBh2KM6A5=b@>#Zqj8vMOsCq(#o2 z4pS+jp@|fFkQ8an&NQE$X#pdHC9&2c<xX&dvSwspElw=~Wk%L?2+dcVT7r@<`O?t@ zxQkOu5P4M$*$dDNVh!>GcRI2%Q55&X)G;!MfUU#msfd6r#Sj)MPAviFapZD9C>@I+ zM{#Niw0z)5hcmf~Q%m5b1y?!}M*wCrqVy1enTrqt1r99RgL9$=;g|<Czd+%^oDa&n zAw+2)TrI&|VQmKqY>;=MEhk0>UBZ^Y^@E(IMKJxql`}GMXCxNGxQq;-SVr)4h$uE- zszE(rP|QGG4GvCqBJ_j8laV2qIF%#?Bs<eWMg|W5f)a3{%E&-iGc;EtWh<C&Yeoi1 zRNtW#MUaFD?HQw#0+5;n9I2253RQ$!06<kSG6;iHG*}I|LW9%{280s;QiTJyj3p<t zxP*}*fh3)TLkPJJgr-$ce)TKOMV4V?kOh@=sDdZ~#t+V{2!Ap%7;1PDF36EBv1Vl8 z&qypr7Gh-JPfSTc6)_|n0>~P`fu~0>1EFYPWROC$7S*q4amvVGM53EKLAhEOEyy5A zL!XF@gPb-P8RALPL2{a4XIjL_zzK34G~d}03{A{@2iI=R$RLNs<0t_vg{A;SQUFb| zn2|vmT?j=3C<`Jt=Ri)OenvvJ0W~8b%fK@dvLK3UK^X~IlE{pNtOc5pkcA)_2~~uM zjD)O#$c%)d1(K1Fg;4!koLYh`NmNEc)?f|KNXVj)2&Q_rK(+$h!3U*dWI>R<DE<Sb zV`K#=lAv^qED24=C_<<jz{L)<>jAQhks+3Fxr0<z5R>zv#zRvuC^3So0;n(}1ISCr zA}B880p~-wT0P=w0H}IvMg|^m@ek!QGVp*4VK`ThuxH_&LvUi%CRk1()H5=OBin}R zE#!b_WY8zY9pD5CifXu3keG|1exVHwC~(q*l!#Cfkc}uF5=V|F6d7J*nPNr;2^2nx zQUUa-0Y-*&!XbmyDTR*og69W(6AP?0ee#RaVME_0S^5QuMa8K_`nmZjsX6*(#)yG% zP`9syk%21}GIimbSis1DJlOy;jFEvW88X@jmgY%?4Yq)}obYjdP;Zk2YYP||xZ!&J zlZY9rMfNcx19L9OwcPP=Ly8$01Ry;}a6o|K%9@eE3rWZ~vA_nxMH%47?`mj!2Amjt zAiBZklVzB1YD#8eNM!+JP}Y>Naar(LHE2T^G+2zs8BkRO^DDGnVQpv4&a{}FX$d>i zQg)_gj0{UCNqESCOS(gdPqpk!%NZFsL1R3bNu{8nA9C7JaP8LYOe+`}SiHf*PZq?6 z98ymRq|=&_fjKzRkDX~HXc#TOv?w{1k->@#!-Bzjtr;2E5{nB`lS>#GIGiCfheeDG zTq&u^If+H7DUKzK456-8F-f2?uAKZL-I9#d;>_Zh;LP-p)Z!9!aow!M;*!Lal$he8 z<e1#V%)A(w0L*N?tfItpD`RsbMh0QXv?0peA|rzu^5_S2R0hjH4I={!NIQH&7@Sog zlY*earkIg|a1R33ZwAe(S~D_m6hLM<OBfm0LCm1kG<K#{>`bc}8N?tagT`o5i%Z-g z6Pchv-6U#+4R*sJA!TU9$RGmpX?`y1{3@szBs4h(ok_K3WT3e_jm#MtL{O(`A(00f zSU@U%Aburn&JTO^=O<+qGcrUFO!}lXryz6B;6k_#ni7$d7OiZ<>cwQ5CoVG!Mg~FD zSo6#)VPw$2;&o3?td3;Q&CJWpEzM<QV9!mgfUs!qaC1vW27Y*r45<Sc8AQ=U;-Q1S zoI$B+sYR)Ipt3TADuD_!50XiZ85uZ>AkzaO`HT$OM6?uP^&+U%lb8peTOejE0kwI; z1u4kgGC}JWM3Ce_rJ5e7TIXT7%y5N=;UdE&Mh104MF!MeJWOjC|1mNs6H@M9P{PBs zmT4U$gEk?hNcoV5QI}DVhtU*7n1cvQMk^jhTM%InA{;?t&LEa6h=^c}<Y5$NxWdCI z0U{(BA2BlM6S591BzPDl8Krob)-$THGyVf{q8S;qq6ubaXmD6FGN^!p60+_H_e={T z13yBUYf%xXiV#PLKuScX(#)Kc)FMU(d9VsA1@H`!LSBA}LNRRaMj<V~NP&lG1Jgzx zrcF$n*_pQRFd8r#@-S^>G~{8p3<@6=MkyXfSrDPZ_<)CL8`E|kMlHq%JdE0mIy?;f z820lp8~_mqLBt`3!#oT}K*UiHaSSAO9K<>SB2F@#Vq{?8VGLvp;$hmsD8k5~K`3}( zbtezgPLRdfj5$1vg^W2oOuInZbqHyPHg>@StUOG+nfCB7Hi3+2VFXS75Ymm@<K|(U z3eq?oq*0TQMtGNwkwF+7E#R`<v8X7q64Z?6VYtk+mxpN|(|#U?(+p=A83YlEJQ9mD zf>TS_nGWzU9c0?i$RGul12^!Y)4=cvH%5j8=ggwy(wxL1g_P7Z(BhxW{5*yHG=;>H zk|J<hQUNJ_>Y?|`G>{~9ur1lr)MI2&$KRcR8^ObLh*6A(QJ3j352G2QArGS|h-J-a z!^3FFbcBb|0wiY6bd-nDj?spP=@>}N2_)tS5_1Eoa|MaHfLP8TmOo<v57Tj`6Ff{O znNIOAMlnY7Fh($)=3z_##XVY>`6d?dFcyPS#u=uwJWS^p#dw&`Ge+|;T>vHLi%gf; znJ)7%U17S)!*q@5IuFwgrkgyB<%}XcjBOxIx0r6TGu`1~y32Hrhv_~@t_vhL6D0Ql zWXwaRM?6fAK{0j~6l1=m1U$Higfy;DTA><{j0y^60dOpXlL@5h!o&20=_w-vV>J)c zGp6T^42-orOfQ&T@-V$(G-PC8D+VuC<Y9Wvw4aCR4Jc(^V7$n~^p@!zBLjP8UP)?t zY7r0PHOA{a4Cg@Z^&`{0sEt7+2Q%6;GBDaQGO#9sQZ*0Ld!`TUOdp9T`Js(P9;Q!B zpBWh#)p(e`fWmhJ(^np*Z%p5L7|w&-n@qBMQJWW#kkx>Mr4CY^0AKc}smH_ggXt#^ z(=Vpq>`Z@nnEo>TV`LC;%Fiz;E-6YZ@J%hr$WJNeXJh&=z!=TX!5}Zd%)rCU$jl_b z%*@Zq%p$<d%EQdY%r3yp!OzOfDZtDH;&Ssa^Dy(WGxPB<^D_(ZFkArnCYVCsc;=PB zypow$qLZ0dqNxWmUyz6C2PiMtlVZLeTI)qaQ;&!7KBz?30+sTLj8a6@vhZvV8tQ<Q zao{2fTxWq6GqN)aF*4W^Dk!1#9#ZEMY3&Ik10+{~4TeN0BZE2VMuI2I85yid*9n^w zWMr@=T{Ebpht7-eA#yiJl#ziKApjnB5<>7jOF*kvK{Yy3u!dw5<(Gqkl`NOQhXxoK z%t-eKXgGk8!Gd&+kQO6KEW%pQ1S@V>y$>on85uah>pwtCS{Xpg1E8Tw#AG=%eL-de z*a{MhQbFAgw#0&hRM6raU1<LUDTP^M_CBBuDNxrvJ+%b9vWk&G7-d-mSP(S30**(p zabO|Px|4iZ(giJNfI3}=m;rE@;~{hPe$XXDj0~XZL9jU}qpo6*d00#dj>MD{uqbKE zT|n!WHNb<^%!w%}j0{-kx}#8%a&RhWcn37PnwXha462BV!OJ}u8EmlzG?6U}Yeoh~ zWc{!;D1-*s9FvOS#gsK8g9EY|kT@YYvW#W~FUp!1Mh0GJiwcrj85t4@k2XS-`X`Y( z#tqSD&B(wBUogVR5TZd~WE`rCl8}OASyDraBNJYXiNSITxOD?7-mDoJ*fSD~{ZcDH z%i{9D6kB>~iFaxxBLiew1iWSdVm)ZCljt=A5G~e>47!BMENJ%tqJfct4;r0NVWOrj zplTsTkQ%8_&7i^7g3=O31`FgQiee<VNP&tVmrzh4Mh4K@E~s(Ei2Mc)a?q>?i75cI z(gQxW53z%|rG;pktcmDBqiJDefXyGlB^Vj931=+0YKU`5jS9GSYsk_zXx|SmT+GM- zD!-u{Za@VAypvbV$RGrbI7E1dF*2|frRL_Br7|+`6hoIvL25GtBF1eX85immP)VAX zl3L-PhE@#2N-<ARu~3=>=@c+Bh-u&&L`zRC0nOGhGO(qB7C;t5supOI98_W#r55BQ zg2u00pgsa8Jm-wWqTtlRQqa&AG+;5sk&`9VVT=r*HHe-iskzXFXP`M!!uc3UgEbLt zQ6%Mz3|ye1#3jEJyuXH7L(_$kffF=U2_A3-FR(*Y(a_+<bU32M=Ya-@TV@exkrhe? zg?bV)>I@DKs0gNkpwbTHFz~1+i-xBrXklt*UP&<{g90M5z^SLWq$o8pSKl+QBpA%H zh7AE=m1SgL&B@HoEMa7j*YJYci&ddD7qc+42qS|utTaY)Fv7dc>7XiH9;OCtQd(&q zc%iXAXvJ?%W@?c&D1{;U8XAnAnqgcFa?GNP46?{+2NEVQE5Hp3w!~!6GGj&tRqPh| zCuMo&f!2Q%m*#@4Q%5!sY8|EnAohzfGMFMON3|bG7peqk-IXGC=Qw48Iwer2uqQ)S zUNbTjLv6tkND!M)CDA;FO$m}^(C7q56x7qOp(3!DC#0Lt$iNOBe+HEfVxV><B7s9y zSc8fU?8EAYgsMnrBNWj?V`moUVU}Q)=3$m$mgQmEz%0kepoFk8Gp{T^J5}E&F*hkC z(KoduF)b0aFQJl=fjbw$V`o-iWMK2j&(AI`U}QK04N0)Cpawv?-yVs1DLJXdDiD>( zMGqwQkVQ~5f=W5^Bq3Jf*NYr8P-~qNb8><+OHx6d07&-&wCOJ(KNHm9kU@<Wh}&UV z0#va=QUcijC}l0OMX0*inH3osR58LGTd*-Q$l+JVpvWN3u!n(>VK0LK0}E(Omw|zS z1vIP+rVldg2h)cb4uk0<Q2Hp8J_eOP4&|SK(kB^Cfz_X8I0L57Lg{l*`aG1r0HrT7 zTw-8gNMK+DO(ZZdGF)X~V6b6eVqj!oVBpf)&cLX}yp@4zBLf2i6T>wI1_nL`W(EcZ zB?cDea}1me$_&>T7#MgUsu^xD++<*2U}U((a0O~oIRi6T&QgngF9Y*d1{ST|46Kpc z8Q7S&F|cdxX5fh2&cMln#AZcevu$HwM_4Syz{bG9pu@nypvxe_pvR!VpwFPgV8CF( zV2I=hOSmI0Gu&oi26>0Em4TUopMilP9_}42?QINPS~}YpxV3b*G4N<fvTS4E)skf0 z#=xf~$+nGwUrUmG8-swBB*!)eK`lwnZ45$Ml3ZXnOLA{x5Z0390Xtff7wle1KA2OP z!C~aaAjrVLU<C~$YX&|B8wOzpTLuXRI|exhdj=H-2L>$$M+O51Ck8VHX9gPv7Y1hr zR|Zc8H--QPcZP5V4~94fPq4RUK%5Ts76U^(!yShG;4qD6xXZAgfeGX>hI<VA!SNE$ zaG&8Y0}EK}0mESi(7x?>hKCG?!GRag@Q7hQ13OsuF~ea74lwHp!(j$aFzYG9GX^d& z>p8<I25vCx1;a}Q9x&?_!%GHUFzYqLO9noMHw+96T2Q;5GQ5TAe8KPzuKqn-{Raj< zhL7Mh^oij!0|Uck21bVO49pBaq8a##8GaTs{3>SnUCi*OnBi|R!@pvN|HX_9#f*%_ zj7-Ih%*Bi>#f+@QjBJeTAmxl4#Zbgq%m_goFa}pKBX=<)Pcb8JF(V%%KUldyF(WP{ z2$m8mW&|My7Di!45op5IVPFIYG86k6u(Lr)pA9VH2aXm<l4pWO3nQZ_qZqnQW^|pQ zSapiSGmA0QPFAh$3?hhx&jpU-Xa*LB7$gH&;Z{pvH9!>IfJ6osh9s;8NHR(>FoALk zgA)TI*fK7y?F?cE7{q<FH^6-laYi}=2SWzf6fuZOs53Yim>8uQZZa@3%7BX<Mg|!M zM$ilvG*tF5uz=M&Yi(nY@X==6${?w=g@NT5gP=Bu-o_wxfI)gI1B><spWO_yk-Hh> zBDXWh3n^@4P}JJSptOxac^iY`HU^dL462aSufU+lAj1I3Z*t%?ozK9^P{6>&P{<(2 zP{bh5P{N?dP|BdhPzH9c0s}JxD}xNgkqk-<ii~oM^56({hIoNdfq{WRl!56FgFHKf z_<vAburr7=FtUSvqR1!(DNPvkK{5;s46It)7}OBK14$gsV7nlR0~$k&O5n2-K&hUM zfss)eR6;VUFiJrKW&;B=I1ia>ZDUaP0foge1}$b=84zpVA_jR7Eo0=TdyIikcN>F- zpSG^dHU{<<CdTFe?}1|n5(H}CEZob$%FxHa!_dzl&M<*Nj$tB$62l}0b%x0dx(xjc z#thTJ&I4syIR<`4RYo-iW(Gb6RYrA24RGw3LV|*UmBD~f6C9hMK;dOz{>#9}&LGYx z_ltp*fss)Q?)vpm*P9@@UK8PZIW3uO44N><Yau)SK8E8LF|aZ$X5e91!XVDDltGqZ z8G|Cjat1Yq6%0BIOBjq8*1#Pvi{y9}xZ_RWj@QTPcv+C+SwJ(W(4fD~zy$X7EG_Nr z4B9gpCTneB(9u4?Aijk`XBk7Q))od`2v2tzL%G%#20aK*Zy7_T))oeR2v2_*L$uZw z1_KDsU>Sq2))ods2+wdCgT2-k1|ta1Xc>c{))oe12+w#KgR<5Z1``O+WEq2~))od+ z2+wpG13Sxd1{QD$0*PNp^4bIr0!YrA1@$fi!z@N=Ml}XTZ~|s$VEWB4!-0{35i|`C z^{5@xqikB*TN!lF3x-_`tPH!63}%BH%*Ln>u4@<>4HylfMT7@5`3r&q>lgzUh+59T zDr5%A3dn9f1~w9s6$Bwh!d%Gb$j)d4t_Qdo7#U3%7#V&PGyG&=1T7lC=44%TC!b?r zWjGHu9}*VWoNR{G$+{3H>tc2CEwGWqJNXv_BcnN^9yTZIp*#5z11rO0u=%*1Y=PCu zdJre;VRiC5u#v<&`8NY2qa~viHYe+&JNX*}E5moN`PiI%7?cngtr<a$MNp#=Q7&#_ z&<7<3NP7{Sa2c7v#z342Ef>+_{|^HrXq5;yml>eBj1hE35jWUK+%B`j>M{d#mx+Om z!RxZW42+ES*u%^a-DPqNtc>ztBXPUT0jtXl(OsqmHU_WD{xL8zI$}?NM(8dxVqj%7 z1{;aZWuQuxk<kfj0yKgoKqG7kkkJloB*c}(Wb^+FjEv6M1JfAY$!-j+jP79bu{jx% z09~*KrZIY827!%%I1_sUWMp7qWOT*uG81%{MKQ24MuUyS?J_s4E;B)QSsK_Fye<Qk z=I)Fh&=NS1ff-zFv1@6AdL$sHLCRfl3ym?KfsL^MY$n8M?2xjTfq{XY(UajB10%TM z4zUj;@|J-S(llrEVqj$SX7qvPKqsg*Tw2>0%t1C;fNX+fYKTqc44jM=NH%f7ZQ^2- zX7mM@4}S1=u`7trz`!5?GH)A$<xK2#9AiD$M2PzYASQzA4ORvwK5)I}&lmu8q8YTG z$^$Zzc^iY(0S0UI;B7}Tjt62K10!fL6tp>K3^jvOi+LM^<^cv)bOR<J8NdlO0Nj;f z42BnBVc;r^k%@tkF`O|78c!%D+h8$yCLWU+86y}Yq25HPzD?0%VIc!6<07z0koZQe z3r~SU9khxE>L}z=+7#WZYr)1qf*waEVP;@tjA4w0nue4VLH%Kn(~y(mRt7f4ZD2DY zPD4(LaSSifl42agJ9tuzXJ7;^ID!U%5y%q^3=AAv+Zb%OG1#GXtQhx#?SQzO0~$q) zjEV5h9I}4<Z43_R`jML|2>nTn$x!<ppzSA6I<uAD#^88>!3jO=keeg0bOu^>2Wnb_ z@^1>(i~#Ztu8eRU$yZo2LMme#)PZ#jOyKT6s81z%oB@<&?UysKgM!OfM|&HCGbm<Q z7(ks^@c0emeFkC12MiL755abT`bG>4lF*Q2V31^#W=v;bWDsUxV+6$$6THZPh`eK9 z0%u8f1|~jdb_NaxM#c=dTauw};nv#5V2`jJk}e>&KV@KLe8#}V_#DZ0Zn*8-P}^BC zY=?-v1Lau8OvWsz=kuU_5OD1H>1xYtV{ifa7um-546KYF7`Pcff^7tKfIy>Gknt)| zEJ6GWVu9j|iGh`Y9qe;vxX&RX??B^OjM<Di(9$CmnliYxSiq$R2c*Xgu^LiJ{$$`} z`~|iak_liQ<z!$2TY)H#AtH!OkP9zg3LxbR3j-r)9VRsMA<7q)Z45RC7&y?9Boi~( zR!Fu$ExB?T7#WMOCU1M`Z49oM$(xA_Y!<`^*phcKV-D0=h!SQSgDtv~guuo?oCGUj zAcZN&NhMefu}3#V8m}Rx*h(kRFdZUIfFp)UnSqT-1#A?=TZBrd_wdrGjDZofiV>Rr zkV_Xg%+iTT8*B%}&xq2c0&D5yj#)Y}nPAml$yf!oAGvgLgOpAl=s{)+HUr{MY|&SZ zwR8gc21n_{<O((s;w!ABQw?J+)PYz^CwEBc<c268kV+>eUj|_&KL!aVf3O|cN~bzJ zrPF)N(y1Qq7Ua^&9br2p!-7jEreFqErVs`$CdhCd#CBMwWnci6P9WPMWzkCpMA--t zc@Hj~8W<a)o<}a7+_0BUOtB2COmPg{Oz~j<Vk@0MHWDtK-h)f0CM=~BD~{5MDV>3n z33)sZ=21vlgj_{KL=c&v8NGA@jSRKGb1<TGV#QuM6@onrNkFKjQ!@i2V=LC=?G7oO zFp@WND->JuZi71uxpZ<v&m|2=PC_l6Ku&7MYKS|!A)R;)>A+Sxq0SyaN~ehoY)q5D zMnQ5dq0;FCymabhU}WsVTDo{*DV>lTp@`C{8>@aVETt2q=?RHOg#I4JUTFG9E}c9f zrIR;$kgZ1YC${M8!&*9le1ofW+6*=k;wr4AQ$OPbr~|Q-PF|4G$rDjNAeT<N8HAbk zFi0>#TAh&c0k!Qk5l`v#0kd?P1a}K^>Ewm59l3Nm$iT{Uh=GggFxZC>+hLg&QaXWb zhm=K_rPBv+=`@*f3e@w+rIRO)(&;n<E7KVUZl<$f8?lv6AR7snP9MOf(^M>_6C1A5 z=_&&!(>1WQkW2vcD5NaHES(UUU>bVq1R8sv4$r}e(uoaw>2x1#D<lD-mQK?c7#U|^ zP2OIR(g`DZKLeWu@d38vJrnLM<kHC#J(nO4^`VwdAScbjYKRxQA&~Jrh`%rmnawx{ z(y(O#O*e5dFffJfX7Gt*-Ok|ar>nh_!H<a{TvrD|Yi(ihKhD6fwVNRzl6^Zv;8q5I zkdW?9h9D+}nGC$U8G<8)Lbfx6?uQD8F)@ViW(bem&Jbb60vhPHVg=2(Ms8z>n#I5; z$pYm>hl3a~$f7aZ7-GSqamQc^<F+xxgM|{16(($BNCb-}!4)QLV@L)Ir64Oz*~X9x z7EOaIOxwng4i?IQ3uSC$$OH>z9b*uOI4}$3xGbG*4B6Wla=>!AaOJt%81leE`7;@O zcQX`3Zf7X8VgqR?+Qv|9#V*Odlc9u>VJ3qHh*iqSaDc(dibIkOG|OBDBFc4kFjVYh zsAOgcU;h7!BnxONx(aM!HM)s4xJ>kbnOF-lu})_PLp_>_4PX<o1ZCq)1`iZxH=$ah z0(Z7I%#vo1B`q)uZa|#eD#>ES295MKCWdfHwhdOC$b3%Fw6!0T1(O>C1Ctw*2Z&~X z6tU+Rj2Rf1nHe~lSr`PFSs5gm*%)+~*%>UEIT)OoxfuMIc^JZ(c^P7v`57{p1sIB% z1sUp?g%~=Sg&8I?i!jV#7G+q@EXJ^jS)5@PvjoFYW=Vz%%u)=unWY&XGs`f%W0qz3 z#w^Fk$Slvu$*jOA%dE(#%B;j_z^u$@!K}jQ$gIkk$gIX##jMWQ#H`8K#jM3RnOU20 zGqVok8D?F^E6n<gcbE+rpEDaWzGpUK{K0I@B*ARLq|0o|WWsF0WWj9B<jicr<i>2x z6wGV`&iPdgJdBA9VvKVc(-}Az9T^-M=P}M_U}M}27OP|6V4Te0$hZI`#w5WY#3;u& zk%5Ep2ZIgcLXa3kIOBW9MU0CXSQug%UotLXxCxrpX9|OLn3=*DmohE`O=U8LF)nAE z&%ngM$>htpf^j7SGr0Sz#lQl!brk~})UMSGY)~84fR+Y;b*_b0P4Nuke;9Pw8P|#Z zWzc752xn&y7Zn0QA!(t%3{vcj>)9DM{9@4i#lVinMV8k3#lZHTL6Cukok5(PVGmf> zItE5|#*NV7#!cWNTAG20aVrBOBY!I64#u5~dl;A)_ZBnmW87cNcz}VC@gU<NNWYSC zDgzsM!NM+W&<tBUYSGiKwS}Qw2c_ugfEGO<VMx)_8M&RI%TH??L)JEiZYvgTZK0lR z487VyecKp%SrWD}^jool7J^I=nz)T&(o6<%ZAn%wU69D+Z46VkF--MY&L9usP7s;~ zRv-jcz$C!6jbS=SS{t0|LH5B?Jv-D{U_Lu2)tfWSVOYh$z_5y84VZ>h?cfC?%pMF( z%$^LQ%w7yi%-#$-%)Sif%>E4a%mEA@%z+Fs%)tzq%pnZ5%%Kcj%wY^OnWGryFvl`1 zXO3c6#T?79ojDGi+UywE80;Cc84oiaVPIzPU`S#-%6JUCc)*YGIKzHW+F{rQOFIm^ z7*Bww_?Q@WFs@)Y1x*2(46J_`MA;cniv42<U}xxLXFSEuXe9lgL4bi76rGGl?2IQN zaS58&#vX^KL2-D7fsyenEDo6-GO&W;knu1$4rido;S8-U3^P#Ua3(YkLBd$$5E31b z_%enr8qnUxpeQs8vTz_0#GVaeBSj==9f8ksMg@pwNL(7?*9?nfh*pND5Uq2-$>0Wv zGj|)qylo8K+ZbS}Clf_<GN>eFm1Koh0G=QgxB{4O#iqNBVSxz4!WnZIbdepg806}0 z3~(QSDuX547?y5hP+88vqV2Q%|K{Zk!6>%C5~eM)8LKEO$07z3d<JUiqWG$Xm2vt1 zGulFnL1DMdN85@O8Xw@q%euh|l$b#g0p>#zGviXm%?u2Tn;Ex)Xy|H;GzLiq2IedV zCgyAgQRW;5CFWcP9p-!nbLK(@d*&hr59ShvQ07vGR^~E>NzCO82bilE&N5dsJZ7$8 z<YBI5^klAQjAw3O%wTS0oXp(7IFq@RaS?Mn<5K1>#tqEvjGLLe7!NRagA=<413M!R zgE^xd<2eR4#v}%F@M-{727AU5SO#FshGqZ;#>22=&v+P?>=_RtC3`0ZUTCua%Mbxc z_EvuwOxYPX{9*87XPEE6&S><Lftl$Kg9PI*1~U#a^22!sM#c+_7a^@I#%T;JpwgG& z2)<U<a@1_HTx$!%a@1DV3TQR~34^kU&Nc?SnG6~_+91X@hLzwE>-pOlmTY5KWyJ#3 z4~|Bb4cY>U0@d3XR*NvK*~zeunPC^hdIpAF3>!eiMh1qR44Xh}66LlrsG#cvClHX8 zV3Sxu3())+au~KSFfddxECbV97`B0FNZlU9Ai}`FJe`4)c?N?Z^GpUw=2;9n%(EFR znddM#GtXo2V_v`z%Dj*vhj|r4IrBn>D(1xu^~_5cTA7zJ%w%51u#kB<!!qVo3>%pj zGi+gA#c+@r(s6`zNshoGm*EIF>Ol(_k1$?h0Cj>m8FnMphmh9q5ynf5m!ahy9|H@t z#xtu#R8Uv&R8Zi;?J5H!Xtyu4g1XDV0$zvo78IFm+ZlYVSR`4Xjb=#}nH>z9Aq{6q z7Fjr3YYW2`)acy;5|U&=smiuO<97>492CJaOiLJ4Walv`Xv@eZY-3m{ld^+h8#q3| zN+1!k0i;S+dmF=cnFMUovhx^Zv}Lz3ti&b>(uPeOT*V<QVFT4CNeq<?cNiELIv8ev z>E#St!SoS^vtarT!#yw!sp}xc!*&KP<{b>e%sUz6nRhX0Gw)`wW8TBy!@QRvjCnsp z67xZZZ017@mCUCYTA2?qbTA)g=w&{_FoXFN!xH8r49l61GOT7k#;}$76vIL0V+==_ zk29QQKE-g8`8dNJ=2Hx>m`{U?2NQ5@_ZFTq-ojJHTgDsEHBWCDZ!&5yFf(v5JO-x` z7Vy-D00Y|}20M1fb>fC{GU1>!L7<|$#lXmT8@`aP06KXJTE4{u>kRDxM<dHt1|}^Z z@Tyv*B~akit<2XM*qLuI2r}Pd5M#d0Ai;cxL6-S0*e8(Qqde3n5)AB&ci`)@m>C!a z@g&u|pnCWo10!g=F|^x{=x1(c*ooFfWQNQMK{5%fi^$0M5IzP2Um6Kso&=c?2Cwp9 zehPLfL??7<q<|x%7ULrfYqv4%LbH}Z7D+SIS^-B!6|9;u*4<&(tjPEXk~dKn?d>MQ zW^izVh76P$7z7*{C9xVLL4-kw<&fZzctA-=VAD)=NIalUNXRl`bA>t)Aps6XY_1?V z7$q5_v3Q0wV;GnjAA^>*GCpDW#=yYf#K6Jug=sFsS2a#XW2U)`0&1L$Axv`_L)ADL z^O)u`=BsfsZf2UxxJ8YVaU0WI#_bN0jJufTGVWI6WR_%>XO?1+WNKnyU{GLSW@=_& YW@=$-WoiSnI+!|{y1=X+re3B#0RB_AUjP6A diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class index e83ddc03f0e0e291c58555aaa90d0adc9057a1cd..432ef6692eb650ec486b487d6c41b5c0dc9829ef 100644 GIT binary patch delta 4463 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 WPKJw&@eG$7BpI$U#xq<~;{*V}*fFR8 delta 5260 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 OL6YGaV;#eDHBJD^R4m2- diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java index aaf98c7d..8723817e 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java @@ -1,17 +1,21 @@ /* This file was generated with JastAdd2 (http://jastadd.org) version 2.3.2 */ package de.tudresden.inf.st.openapi.ast; + import org.openapi4j.core.exception.ResolutionException; import org.openapi4j.core.validation.ValidationException; import org.openapi4j.parser.model.v3.*; import org.openapi4j.core.model.reference.Reference; import org.openapi4j.core.model.OAIContext; + import java.io.IOException; import java.util.*; import java.net.URL; + import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import org.openapi4j.core.exception.DecodeException; + import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; @@ -19,338 +23,359 @@ import java.net.HttpURLConnection; import javax.net.ssl.HttpsURLConnection; import java.util.Random; import java.util.stream.IntStream; + /** * @ast node * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\OpenAPISpecification.ast:43 * @astdecl Get : ASTNode ::= OperationObject; * @production Get : {@link ASTNode} ::= <span class="component">{@link OperationObject}</span>; - */ public class Get extends ASTNode<ASTNode> implements Cloneable { - /** - * @aspect InferParameter - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:159 - */ - public void connectGET(String path){ + /** + * @aspect InferParameter + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:147 + */ + public void connectGET(String path) { - try{URL url=new URL(path); - HttpsURLConnection con=(HttpsURLConnection)url.openConnection(); - con.setRequestProperty("User-Agent","Mozilla/5.0"); // add request header + try { + URL url = new URL(path); + HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); + con.setRequestProperty("User-Agent", "Mozilla/5.0"); // add request header - con.setRequestMethod("GET"); // optional default is GET + con.setRequestMethod("GET"); // optional default is GET - int responseCode=con.getResponseCode(); - BufferedReader in=new BufferedReader(new InputStreamReader(con.getInputStream())); - String inputLine; - StringBuffer response=new StringBuffer(); + int responseCode = con.getResponseCode(); + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); - while((inputLine=in.readLine())!=null){ - response.append(inputLine); - } - in.close(); + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); - // print result - System.out.println("Inferred path : "+path); - System.out.println("HTTP status code (GET) : "+responseCode);}catch(Exception e){ - System.out.println(e.toString()); - } + // print result + System.out.println("Inferred path : " + path); + System.out.println("HTTP status code (GET) : " + responseCode); + } catch (Exception e) { + System.out.println(e.toString()); } - /** - * @declaredat ASTNode:1 - */ - public Get() { - super(); - } - /** - * Initializes the child array to the correct size. - * Initializes List and Opt nta children. - * @apilevel internal - * @ast method - * @declaredat ASTNode:10 - */ - public void init$Children() { - children = new ASTNode[1]; - } - /** - * @declaredat ASTNode:13 - */ - @ASTNodeAnnotation.Constructor( - name = {"OperationObject"}, - type = {"OperationObject"}, - kind = {"Child"} - ) - public Get(OperationObject p0) { - setChild(p0, 0); - } - /** @apilevel low-level - * @declaredat ASTNode:22 - */ - protected int numChildren() { - return 1; - } - /** - * @apilevel internal - * @declaredat ASTNode:28 - */ - public boolean mayHaveRewrite() { - return false; - } - /** @apilevel internal - * @declaredat ASTNode:32 - */ - public void flushAttrCache() { - super.flushAttrCache(); - } - /** @apilevel internal - * @declaredat ASTNode:36 - */ - public void flushCollectionCache() { - super.flushCollectionCache(); - } - /** @apilevel internal - * @declaredat ASTNode:40 - */ - public Get clone() throws CloneNotSupportedException { - Get node = (Get) super.clone(); - return node; - } - /** @apilevel internal - * @declaredat ASTNode:45 - */ - public Get copy() { - try { - Get node = (Get) clone(); - node.parent = null; - if (children != null) { - node.children = (ASTNode[]) children.clone(); - } - return node; - } catch (CloneNotSupportedException e) { - throw new Error("Error: clone not supported for " + getClass().getName()); } - } - /** - * Create a deep copy of the AST subtree at this node. - * The copy is dangling, i.e. has no parent. - * @return dangling copy of the subtree at this node - * @apilevel low-level - * @deprecated Please use treeCopy or treeCopyNoTransform instead - * @declaredat ASTNode:64 - */ - @Deprecated - public Get fullCopy() { - return treeCopyNoTransform(); - } - /** - * Create a deep copy of the AST subtree at this node. - * The copy is dangling, i.e. has no parent. - * @return dangling copy of the subtree at this node - * @apilevel low-level - * @declaredat ASTNode:74 - */ - public Get treeCopyNoTransform() { - Get tree = (Get) copy(); - if (children != null) { - for (int i = 0; i < children.length; ++i) { - ASTNode child = (ASTNode) children[i]; - if (child != null) { - child = child.treeCopyNoTransform(); - tree.setChild(child, i); - } - } + + /** + * @declaredat ASTNode:1 + */ + public Get() { + super(); } - return tree; - } - /** - * Create a deep copy of the AST subtree at this node. - * The subtree of this node is traversed to trigger rewrites before copy. - * The copy is dangling, i.e. has no parent. - * @return dangling copy of the subtree at this node - * @apilevel low-level - * @declaredat ASTNode:94 - */ - public Get treeCopy() { - Get tree = (Get) copy(); - if (children != null) { - for (int i = 0; i < children.length; ++i) { - ASTNode child = (ASTNode) getChild(i); - if (child != null) { - child = child.treeCopy(); - tree.setChild(child, i); - } - } + + /** + * Initializes the child array to the correct size. + * Initializes List and Opt nta children. + * + * @apilevel internal + * @ast method + * @declaredat ASTNode:10 + */ + public void init$Children() { + children = new ASTNode[1]; } - return tree; - } - /** @apilevel internal - * @declaredat ASTNode:108 - */ - protected boolean is$Equal(ASTNode node) { - return super.is$Equal(node); - } - /** - * Replaces the OperationObject child. - * @param node The new node to replace the OperationObject child. - * @apilevel high-level - */ - public void setOperationObject(OperationObject node) { - setChild(node, 0); - } - /** - * Retrieves the OperationObject child. - * @return The current node used as the OperationObject child. - * @apilevel high-level - */ - @ASTNodeAnnotation.Child(name="OperationObject") - public OperationObject getOperationObject() { - return (OperationObject) getChild(0); - } - /** - * Retrieves the OperationObject child. - * <p><em>This method does not invoke AST transformations.</em></p> - * @return The current node used as the OperationObject child. - * @apilevel low-level - */ - public OperationObject getOperationObjectNoTransform() { - return (OperationObject) getChildNoTransform(0); - } -/** @apilevel internal */ -protected java.util.Set inferRandomUrl_String_OperationObject_visited; - /** - * @attribute syn - * @aspect InferParameter - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:38 - */ - @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="InferParameter", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:38") - public String inferRandomUrl(String pathRef, OperationObject operationObject) { - java.util.List _parameters = new java.util.ArrayList(2); - _parameters.add(pathRef); - _parameters.add(operationObject); - if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute Get.inferRandomUrl(String,OperationObject)."); + + /** + * @declaredat ASTNode:13 + */ + @ASTNodeAnnotation.Constructor( + name = {"OperationObject"}, + type = {"OperationObject"}, + kind = {"Child"} + ) + public Get(OperationObject p0) { + setChild(p0, 0); } - inferRandomUrl_String_OperationObject_visited.add(_parameters); - try { - List<String> paths=new ArrayList<>(); - - for(ParameterOb o:operationObject.getParameterObs()){ - ParameterObject p=o.parameterObject(); - SchemaObject s=p.getSchemaOb().schemaObject(); - - // check if the parameter is in type 'path'. - if(p.getIn().equals("path")){ - for(InferredParameter i:root().collectInferredParameters()){ - // get the field which must be modified - String pathPart=pathRef.substring(pathRef.indexOf("{"),pathRef.indexOf("}")+1); - // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) - // add inferred parameter in url - paths.add(pathRef.replace(pathPart,i.value())); - } - } // check if the parameter is in type 'query' - else if(p.getIn().equals("query")){ - // check if query parameter is in type 'array' - if(s.getType().equals("array")){ - for(InferredParameter i:root().collectInferredParameters()){ - // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) - // add inferred parameter in url - pathRef=pathRef+"&"+p.getName()+"="+i.value(); - } - paths.add(pathRef.replaceFirst("&","?")); - }else{ - for(InferredParameter i:root().collectInferredParameters()){ - // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) - // add inferred parameter in url - paths.add(pathRef+"?"+p.getName()+"="+i.value()); + + /** + * @apilevel low-level + * @declaredat ASTNode:22 + */ + protected int numChildren() { + return 1; + } + + /** + * @apilevel internal + * @declaredat ASTNode:28 + */ + public boolean mayHaveRewrite() { + return false; + } + + /** + * @apilevel internal + * @declaredat ASTNode:32 + */ + public void flushAttrCache() { + super.flushAttrCache(); + } + + /** + * @apilevel internal + * @declaredat ASTNode:36 + */ + public void flushCollectionCache() { + super.flushCollectionCache(); + } + + /** + * @apilevel internal + * @declaredat ASTNode:40 + */ + public Get clone() throws CloneNotSupportedException { + Get node = (Get) super.clone(); + return node; + } + + /** + * @apilevel internal + * @declaredat ASTNode:45 + */ + public Get copy() { + try { + Get node = (Get) clone(); + node.parent = null; + if (children != null) { + node.children = (ASTNode[]) children.clone(); } + return node; + } catch (CloneNotSupportedException e) { + throw new Error("Error: clone not supported for " + getClass().getName()); + } + } + + /** + * Create a deep copy of the AST subtree at this node. + * The copy is dangling, i.e. has no parent. + * + * @return dangling copy of the subtree at this node + * @apilevel low-level + * @declaredat ASTNode:64 + * @deprecated Please use treeCopy or treeCopyNoTransform instead + */ + @Deprecated + public Get fullCopy() { + return treeCopyNoTransform(); + } + + /** + * Create a deep copy of the AST subtree at this node. + * The copy is dangling, i.e. has no parent. + * + * @return dangling copy of the subtree at this node + * @apilevel low-level + * @declaredat ASTNode:74 + */ + public Get treeCopyNoTransform() { + Get tree = (Get) copy(); + if (children != null) { + for (int i = 0; i < children.length; ++i) { + ASTNode child = (ASTNode) children[i]; + if (child != null) { + child = child.treeCopyNoTransform(); + tree.setChild(child, i); + } } + } + return tree; + } + + /** + * Create a deep copy of the AST subtree at this node. + * The subtree of this node is traversed to trigger rewrites before copy. + * The copy is dangling, i.e. has no parent. + * + * @return dangling copy of the subtree at this node + * @apilevel low-level + * @declaredat ASTNode:94 + */ + public Get treeCopy() { + Get tree = (Get) copy(); + if (children != null) { + for (int i = 0; i < children.length; ++i) { + ASTNode child = (ASTNode) getChild(i); + if (child != null) { + child = child.treeCopy(); + tree.setChild(child, i); + } } - System.out.println(paths.size()+" Paths are inferred."); + } + return tree; + } + + /** + * @apilevel internal + * @declaredat ASTNode:108 + */ + protected boolean is$Equal(ASTNode node) { + return super.is$Equal(node); + } + + /** + * Replaces the OperationObject child. + * + * @param node The new node to replace the OperationObject child. + * @apilevel high-level + */ + public void setOperationObject(OperationObject node) { + setChild(node, 0); + } + + /** + * Retrieves the OperationObject child. + * + * @return The current node used as the OperationObject child. + * @apilevel high-level + */ + @ASTNodeAnnotation.Child(name = "OperationObject") + public OperationObject getOperationObject() { + return (OperationObject) getChild(0); + } + + /** + * Retrieves the OperationObject child. + * <p><em>This method does not invoke AST transformations.</em></p> + * + * @return The current node used as the OperationObject child. + * @apilevel low-level + */ + public OperationObject getOperationObjectNoTransform() { + return (OperationObject) getChildNoTransform(0); + } + + /** + * @apilevel internal + */ + protected java.util.Set inferRandomUrl_String_OperationObject_visited; + + /** + * @attribute syn + * @aspect InferParameter + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:38 + */ + @ASTNodeAnnotation.Attribute(kind = ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect = "InferParameter", declaredAt = "E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:38") + public String inferRandomUrl(String pathRef, OperationObject operationObject) { + java.util.List _parameters = new java.util.ArrayList(2); + _parameters.add(pathRef); + _parameters.add(operationObject); + if (inferRandomUrl_String_OperationObject_visited == null) + inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); + if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute Get.inferRandomUrl(String,OperationObject)."); + } + inferRandomUrl_String_OperationObject_visited.add(_parameters); + try { + List<String> paths = new ArrayList<>(); + + for (ParameterOb o : operationObject.getParameterObs()) { + ParameterObject p = o.parameterObject(); + SchemaObject s = p.getSchemaOb().schemaObject(); + + // check if the parameter is in type 'path'. + if (p.getIn().equals("path")) + paths = p.addinfPathParameters(pathRef, paths); + // check if the parameter is in type 'query' + else if (p.getIn().equals("query")) + paths = p.addinfQueryParameters(pathRef, paths); + + System.out.println(paths.size() + " Paths are inferred."); } - for(String path:paths) - connectGET(path); + for (String path : paths) + connectGET(path); return pathRef; + } finally { + inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } + } + + /** + * @apilevel internal + */ + protected java.util.Set generateRandomUrl_String_visited; + + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:74 + */ + @ASTNodeAnnotation.Attribute(kind = ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect = "RandomRequestGenerator", declaredAt = "E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:74") + public boolean generateRandomUrl(String pathRef) { + Object _parameters = pathRef; + if (generateRandomUrl_String_visited == null) generateRandomUrl_String_visited = new java.util.HashSet(4); + if (generateRandomUrl_String_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute Get.generateRandomUrl(String)."); + } + generateRandomUrl_String_visited.add(_parameters); + try { + try { + for (ParameterOb o : getOperationObject().getParameterObs()) { + ParameterObject p = o.parameterObject(); + if (p.getIn().equals("path")) + pathRef = p.randomPathParameter(pathRef); + else if (p.getIn().equals("query")) + pathRef = p.randomQueryParameter(pathRef); + } + System.out.println("Generated path : " + pathRef); + + URL url = new URL(pathRef); + HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); + con.setRequestProperty("User-Agent", "Mozilla/5.0"); // add request header + + con.setRequestMethod("GET"); // optional default is GET + + int responseCode = con.getResponseCode(); + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + + // print result + System.out.println("HTTP status code (GET) : " + responseCode); + //System.out.println("Response : " + response.toString()); + for (ResponseTuple t : getOperationObject().getResponseTuples()) { + if (t.getKey().equals("200") && responseCode == 200) { + //System.out.println("Response successfully saved!"); + SchemaOb respSchema = t.getResponseOb().responseObject().getContentTuple(0).getMediaTypeObject().getSchemaOb(); + if (respSchema.schemaObject().getType().equals("array")) + getOperationObject().writeDictionaryWithArray(respSchema, response.toString()); + else + getOperationObject().writeDictionary(respSchema, response.toString()); + } + } + return true; + } catch (Exception e) { + System.out.println(e.toString()); + return false; } - finally { - inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } finally { + generateRandomUrl_String_visited.remove(_parameters); + } } - } -/** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_visited; - /** - * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:74 - */ - @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:74") - public boolean generateRandomUrl(String pathRef) { - Object _parameters = pathRef; - if (generateRandomUrl_String_visited == null) generateRandomUrl_String_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute Get.generateRandomUrl(String)."); + + /** + * @apilevel internal + */ + public ASTNode rewriteTo() { + return super.rewriteTo(); } - generateRandomUrl_String_visited.add(_parameters); - try { - try{ - for(ParameterOb o:getOperationObject().getParameterObs()){ - ParameterObject p=o.parameterObject(); - if(p.getIn().equals("path")) - pathRef=p.randomPathParameter(pathRef); - else if(p.getIn().equals("query")) - pathRef=p.randomQueryParameter(pathRef); - } - System.out.println("Generated path : "+pathRef); - - URL url=new URL(pathRef); - HttpsURLConnection con=(HttpsURLConnection)url.openConnection(); - con.setRequestProperty("User-Agent","Mozilla/5.0"); // add request header - - con.setRequestMethod("GET"); // optional default is GET - - int responseCode=con.getResponseCode(); - BufferedReader in=new BufferedReader(new InputStreamReader(con.getInputStream())); - String inputLine; - StringBuffer response=new StringBuffer(); - - while((inputLine=in.readLine())!=null){ - response.append(inputLine); - } - in.close(); - - // print result - System.out.println("HTTP status code (GET) : "+responseCode); - //System.out.println("Response : " + response.toString()); - for(ResponseTuple t:getOperationObject().getResponseTuples()){ - if(t.getKey().equals("200")&&responseCode==200){ - //System.out.println("Response successfully saved!"); - SchemaOb respSchema=t.getResponseOb().responseObject().getContentTuple(0).getMediaTypeObject().getSchemaOb(); - if(respSchema.schemaObject().getType().equals("array")) - getOperationObject().writeDictionaryWithArray(respSchema,response.toString()); - else - getOperationObject().writeDictionary(respSchema,response.toString()); - } - } - return true; - }catch(Exception e){ - System.out.println(e.toString()); - return false; - } - } - finally { - generateRandomUrl_String_visited.remove(_parameters); + + /** + * @apilevel internal + */ + public boolean canRewrite() { + return false; } - } - /** @apilevel internal */ - public ASTNode rewriteTo() { - return super.rewriteTo(); - } - /** @apilevel internal */ - public boolean canRewrite() { - return false; - } } diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java index 18b4b438..f7172fd9 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java @@ -85,33 +85,33 @@ public class OperationObject extends ASTNode<ASTNode> implements Cloneable { } /** * @aspect InferParameter - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:126 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:114 */ public void writeDictionary(SchemaOb schema,String resp)throws Exception{ - ObjectMapper mapper = new ObjectMapper(); - JsonNode respNode = mapper.readTree(resp); + ObjectMapper mapper=new ObjectMapper(); + JsonNode respNode=mapper.readTree(resp); String value; - if (schema instanceof SchemaReference) { - for (PropertyItem p : schema.schemaObject().getPropertyItems()) { - String infName = p.writePropertyName(schema, p); - value = p.writePropertyValue(respNode, p); + if(schema instanceof SchemaReference){ + for(PropertyItem p:schema.schemaObject().getPropertyItems()){ + String infName=p.writePropertyName(schema,p); + value=p.writePropertyValue(respNode,p); - root().addInferredParameter(new InferredParameter(infName + "?" + value)); - root().addInferredParameter(new InferredParameter(p.getName() + "?" + value)); + root().addInferredParameter(new InferredParameter(infName+"?"+value)); + root().addInferredParameter(new InferredParameter(p.getName()+"?"+value)); } - } else { - for (PropertyItem p : schema.schemaObject().getPropertyItems()) { - value = p.writePropertyValue(respNode, p); + }else{ + for(PropertyItem p:schema.schemaObject().getPropertyItems()){ + value=p.writePropertyValue(respNode,p); - root().addInferredParameter(new InferredParameter(p.getName() + "?" + respNode.get(p.getName()).textValue())); + root().addInferredParameter(new InferredParameter(p.getName()+"?"+respNode.get(p.getName()).textValue())); } } } /** * @aspect InferParameter - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:149 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:137 */ public void writeDictionaryWithArray(SchemaOb schema,String resp)throws Exception{ ObjectMapper mapper=new ObjectMapper(); diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java index fabf01fd..c1a73e81 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java @@ -828,6 +828,82 @@ protected java.util.Set composeParameter_ParameterOb_Map_Object__ASTNode__visite } } /** @apilevel internal */ +protected java.util.Set addinfPathParameters_String_List_String__visited; + /** + * @attribute syn + * @aspect InferParameter + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:80 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="InferParameter", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:80") + public List<String> addinfPathParameters(String pathRef, List<String> paths) { + java.util.List _parameters = new java.util.ArrayList(2); + _parameters.add(pathRef); + _parameters.add(paths); + if (addinfPathParameters_String_List_String__visited == null) addinfPathParameters_String_List_String__visited = new java.util.HashSet(4); + if (addinfPathParameters_String_List_String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute ParameterObject.addinfPathParameters(String,List_String_)."); + } + addinfPathParameters_String_List_String__visited.add(_parameters); + try { + for(InferredParameter i:root().collectInferredParameters()){ + // get the field which must be modified + String pathPart=pathRef.substring(pathRef.indexOf("{"),pathRef.indexOf("}")+1); + // case insensitive comparison of parameter name and name of inferred parameters + if(getName().equalsIgnoreCase(i.name())) + // add inferred parameter in url + paths.add(pathRef.replace(pathPart,i.value())); + } + return paths; + } + finally { + addinfPathParameters_String_List_String__visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set addinfQueryParameters_String_List_String__visited; + /** + * @attribute syn + * @aspect InferParameter + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:92 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="InferParameter", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:92") + public List<String> addinfQueryParameters(String pathRef, List<String> paths) { + java.util.List _parameters = new java.util.ArrayList(2); + _parameters.add(pathRef); + _parameters.add(paths); + if (addinfQueryParameters_String_List_String__visited == null) addinfQueryParameters_String_List_String__visited = new java.util.HashSet(4); + if (addinfQueryParameters_String_List_String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute ParameterObject.addinfQueryParameters(String,List_String_)."); + } + addinfQueryParameters_String_List_String__visited.add(_parameters); + try { + SchemaObject s=getSchemaOb().schemaObject(); + // check if query parameter is in type 'array' + if(s.getType().equals("array")){ + for(InferredParameter i:root().collectInferredParameters()){ + // case insensitive comparison of parameter name and name of inferred parameters + if(getName().equalsIgnoreCase(i.name())) + // add inferred parameter in url + pathRef=pathRef+"&"+getName()+"="+i.value(); + } + paths.add(pathRef.replaceFirst("&","?")); + }else{ + for(InferredParameter i:root().collectInferredParameters()){ + // case insensitive comparison of parameter name and name of inferred parameters + if(getName().equalsIgnoreCase(i.name())) + // add inferred parameter in url + paths.add(pathRef+"?"+getName()+"="+i.value()); + } + } + return paths; + } + finally { + addinfQueryParameters_String_List_String__visited.remove(_parameters); + } + } +/** @apilevel internal */ protected java.util.Set randomPathParameter_String_visited; /** * @attribute syn diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java index faeef69f..f9d24724 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java @@ -29,7 +29,7 @@ import java.util.stream.IntStream; public class Post extends ASTNode<ASTNode> implements Cloneable { /** * @aspect InferParameter - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:184 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:172 */ public void connectPOST(String path){ try{URL url=new URL(path); @@ -219,10 +219,10 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited; /** * @attribute syn * @aspect InferParameter - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:82 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:59 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="InferParameter", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:82") + @ASTNodeAnnotation.Source(aspect="InferParameter", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InferParameter.jrag:59") public String inferRandomUrl(String pathRef, OperationObject operationObject) { java.util.List _parameters = new java.util.ArrayList(2); _parameters.add(pathRef); @@ -240,35 +240,12 @@ protected java.util.Set inferRandomUrl_String_OperationObject_visited; SchemaObject s=p.getSchemaOb().schemaObject(); // check if the parameter is in type 'path'. - if(p.getIn().equals("path")){ - for(InferredParameter i:root().collectInferredParameters()){ - // get the field which must be modified - String pathPart=pathRef.substring(pathRef.indexOf("{"),pathRef.indexOf("}")+1); - // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) - // add inferred parameter in url - paths.add(pathRef.replace(pathPart,i.value())); - } - } // check if the parameter is in type 'query' - else if(p.getIn().equals("query")){ - // check if query parameter is in type 'array' - if(s.getType().equals("array")){ - for(InferredParameter i:root().collectInferredParameters()){ - // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) - // add inferred parameter in url - pathRef=pathRef+"&"+p.getName()+"="+i.value(); - } - paths.add(pathRef.replaceFirst("&","?")); - }else{ - for(InferredParameter i:root().collectInferredParameters()){ - // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) - // add inferred parameter in url - paths.add(pathRef+"?"+p.getName()+"="+i.value()); - } - } - } + if(p.getIn().equals("path")) + paths=p.addinfPathParameters(pathRef,paths); + // check if the parameter is in type 'query' + else if(p.getIn().equals("query")) + paths=p.addinfQueryParameters(pathRef,paths); + System.out.println(paths.size()+" Paths are inferred."); } for(String path:paths) diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/PropertyItem.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/PropertyItem.java index 46e31fa9..126ca8a7 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/PropertyItem.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/PropertyItem.java @@ -225,7 +225,7 @@ protected java.util.Set writePropertyName_SchemaOb_PropertyItem_visited; throw new RuntimeException("Circular definition of attribute PropertyItem.writePropertyName(SchemaOb,PropertyItem)."); } writePropertyName_SchemaOb_PropertyItem_visited.add(_parameters); - String writePropertyName_SchemaOb_PropertyItem_value = ((SchemaReference) schema).getRef().substring(((SchemaReference) schema).getRef().lastIndexOf("/") + 1) + p.getName(); + String writePropertyName_SchemaOb_PropertyItem_value = ((SchemaReference)schema).getRef().substring(((SchemaReference)schema).getRef().lastIndexOf("/")+1)+p.getName(); writePropertyName_SchemaOb_PropertyItem_visited.remove(_parameters); return writePropertyName_SchemaOb_PropertyItem_value; } @@ -247,7 +247,7 @@ protected java.util.Set writePropertyValue_JsonNode_PropertyItem_visited; throw new RuntimeException("Circular definition of attribute PropertyItem.writePropertyValue(JsonNode,PropertyItem)."); } writePropertyValue_JsonNode_PropertyItem_visited.add(_parameters); - String writePropertyValue_JsonNode_PropertyItem_value = node.get(p.getName()).toString().startsWith("\"") && node.get(p.getName()).toString().endsWith("\"") ? node.get(p.getName()).toString().substring(1, node.get(p.getName()).toString().length() - 1) : node.get(p.getName()).toString(); + String writePropertyValue_JsonNode_PropertyItem_value = node.get(p.getName()).toString().startsWith("\"")&&node.get(p.getName()).toString().endsWith("\"")?node.get(p.getName()).toString().substring(1,node.get(p.getName()).toString().length()-1):node.get(p.getName()).toString(); writePropertyValue_JsonNode_PropertyItem_visited.remove(_parameters); return writePropertyValue_JsonNode_PropertyItem_value; } diff --git a/src/main/jastadd/InferParameter.jrag b/src/main/jastadd/InferParameter.jrag index 86d79440..c0f1850b 100644 --- a/src/main/jastadd/InferParameter.jrag +++ b/src/main/jastadd/InferParameter.jrag @@ -3,13 +3,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; aspect InferParameter{ - syn String PropertyItem.writePropertyName(SchemaOb schema, PropertyItem p) = ((SchemaReference) schema).getRef().substring(((SchemaReference) schema).getRef().lastIndexOf("/") + 1) + p.getName(); + syn String PropertyItem.writePropertyName(SchemaOb schema,PropertyItem p)=((SchemaReference)schema).getRef().substring(((SchemaReference)schema).getRef().lastIndexOf("/")+1)+p.getName(); - syn String PropertyItem.writePropertyValue(JsonNode node, PropertyItem p) = node.get(p.getName()).toString().startsWith("\"") && node.get(p.getName()).toString().endsWith("\"") ? node.get(p.getName()).toString().substring(1, node.get(p.getName()).toString().length() - 1) : node.get(p.getName()).toString(); + syn String PropertyItem.writePropertyValue(JsonNode node,PropertyItem p)=node.get(p.getName()).toString().startsWith("\"")&&node.get(p.getName()).toString().endsWith("\"")?node.get(p.getName()).toString().substring(1,node.get(p.getName()).toString().length()-1):node.get(p.getName()).toString(); coll Set<InferredParameter> OpenAPIObject.collectInferredParameters()[new HashSet<InferredParameter>()]; InferredParameter contributes this to OpenAPIObject.collectInferredParameters(); + syn String InferredParameter.name()=getParameter().substring(0,getParameter().indexOf("?")); syn String InferredParameter.value()=getParameter().substring(getParameter().indexOf("?")+1); @@ -19,20 +20,20 @@ public void OpenAPIObject.generateRequestsWithInferredParameters()throws Excepti generateRequests(); for(PathsObject p:getPathsObjects()) - p.inferUrl(urls); + p.inferUrl(); } - inh Set<String> PathsObject.inferUrl(Set<String> urls); - eq OpenAPIObject.getPathsObject(int i).inferUrl(Set<String> urls){ + inh boolean PathsObject.inferUrl(); + eq OpenAPIObject.getPathsObject(int i).inferUrl(){ PathItemObject p=getPathsObject(i).getPathItemObject(); String path=getServerObject(0).getUrl(); if(p.hasGet()) - urls.add(p.getGet().inferRandomUrl(path+getPathsObject(i).getRef(),p.getGet().getOperationObject())); + p.getGet().inferRandomUrl(path+getPathsObject(i).getRef(),p.getGet().getOperationObject()); else if(p.hasPost()) - urls.add(p.getPost().inferRandomUrl(path+getPathsObject(i).getRef(),p.getPost().getOperationObject())); + p.getPost().inferRandomUrl(path+getPathsObject(i).getRef(),p.getPost().getOperationObject()); - return urls; + return true; } syn String Get.inferRandomUrl(String pathRef,OperationObject operationObject){ @@ -43,35 +44,12 @@ public void OpenAPIObject.generateRequestsWithInferredParameters()throws Excepti SchemaObject s=p.getSchemaOb().schemaObject(); // check if the parameter is in type 'path'. - if(p.getIn().equals("path")){ - for(InferredParameter i:root().collectInferredParameters()){ - // get the field which must be modified - String pathPart=pathRef.substring(pathRef.indexOf("{"),pathRef.indexOf("}")+1); - // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) - // add inferred parameter in url - paths.add(pathRef.replace(pathPart,i.value())); - } - } // check if the parameter is in type 'query' - else if(p.getIn().equals("query")){ - // check if query parameter is in type 'array' - if(s.getType().equals("array")){ - for(InferredParameter i:root().collectInferredParameters()){ - // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) - // add inferred parameter in url - pathRef=pathRef+"&"+p.getName()+"="+i.value(); - } - paths.add(pathRef.replaceFirst("&","?")); - }else{ - for(InferredParameter i:root().collectInferredParameters()){ - // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) - // add inferred parameter in url - paths.add(pathRef+"?"+p.getName()+"="+i.value()); - } - } - } + if(p.getIn().equals("path")) + paths=p.addinfPathParameters(pathRef,paths); + // check if the parameter is in type 'query' + else if(p.getIn().equals("query")) + paths=p.addinfQueryParameters(pathRef,paths); + System.out.println(paths.size()+" Paths are inferred."); } for(String path:paths) @@ -87,60 +65,71 @@ public void OpenAPIObject.generateRequestsWithInferredParameters()throws Excepti SchemaObject s=p.getSchemaOb().schemaObject(); // check if the parameter is in type 'path'. - if(p.getIn().equals("path")){ + if(p.getIn().equals("path")) + paths=p.addinfPathParameters(pathRef,paths); + // check if the parameter is in type 'query' + else if(p.getIn().equals("query")) + paths=p.addinfQueryParameters(pathRef,paths); + + System.out.println(paths.size()+" Paths are inferred."); + } + for(String path:paths) + connectPOST(path); + return pathRef; + } + + syn List<String> ParameterObject.addinfPathParameters(String pathRef,List<String> paths){ for(InferredParameter i:root().collectInferredParameters()){ // get the field which must be modified String pathPart=pathRef.substring(pathRef.indexOf("{"),pathRef.indexOf("}")+1); // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) + if(getName().equalsIgnoreCase(i.name())) // add inferred parameter in url paths.add(pathRef.replace(pathPart,i.value())); } - } // check if the parameter is in type 'query' - else if(p.getIn().equals("query")){ + return paths; + } + + syn List<String> ParameterObject.addinfQueryParameters(String pathRef,List<String> paths){ + SchemaObject s=getSchemaOb().schemaObject(); // check if query parameter is in type 'array' if(s.getType().equals("array")){ for(InferredParameter i:root().collectInferredParameters()){ // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) + if(getName().equalsIgnoreCase(i.name())) // add inferred parameter in url - pathRef=pathRef+"&"+p.getName()+"="+i.value(); + pathRef=pathRef+"&"+getName()+"="+i.value(); } paths.add(pathRef.replaceFirst("&","?")); }else{ for(InferredParameter i:root().collectInferredParameters()){ // case insensitive comparison of parameter name and name of inferred parameters - if(p.getName().equalsIgnoreCase(i.name())) + if(getName().equalsIgnoreCase(i.name())) // add inferred parameter in url - paths.add(pathRef+"?"+p.getName()+"="+i.value()); - } + paths.add(pathRef+"?"+getName()+"="+i.value()); } } - System.out.println(paths.size()+" Paths are inferred."); - } - for(String path:paths) - connectPOST(path); - return pathRef; + return paths; } public void OperationObject.writeDictionary(SchemaOb schema,String resp)throws Exception{ - ObjectMapper mapper = new ObjectMapper(); - JsonNode respNode = mapper.readTree(resp); + ObjectMapper mapper=new ObjectMapper(); + JsonNode respNode=mapper.readTree(resp); String value; - if (schema instanceof SchemaReference) { - for (PropertyItem p : schema.schemaObject().getPropertyItems()) { - String infName = p.writePropertyName(schema, p); - value = p.writePropertyValue(respNode, p); + if(schema instanceof SchemaReference){ + for(PropertyItem p:schema.schemaObject().getPropertyItems()){ + String infName=p.writePropertyName(schema,p); + value=p.writePropertyValue(respNode,p); - root().addInferredParameter(new InferredParameter(infName + "?" + value)); - root().addInferredParameter(new InferredParameter(p.getName() + "?" + value)); + root().addInferredParameter(new InferredParameter(infName+"?"+value)); + root().addInferredParameter(new InferredParameter(p.getName()+"?"+value)); } - } else { - for (PropertyItem p : schema.schemaObject().getPropertyItems()) { - value = p.writePropertyValue(respNode, p); + }else{ + for(PropertyItem p:schema.schemaObject().getPropertyItems()){ + value=p.writePropertyValue(respNode,p); - root().addInferredParameter(new InferredParameter(p.getName() + "?" + respNode.get(p.getName()).textValue())); + root().addInferredParameter(new InferredParameter(p.getName()+"?"+respNode.get(p.getName()).textValue())); } } diff --git a/src/main/jastadd/RandomRequestGenerator.jrag b/src/main/jastadd/RandomRequestGenerator.jrag index c0004f55..52940edf 100644 --- a/src/main/jastadd/RandomRequestGenerator.jrag +++ b/src/main/jastadd/RandomRequestGenerator.jrag @@ -50,9 +50,12 @@ aspect RandomRequestGenerator{ return pathRef; } -public void OpenAPIObject.generateRequests()throws Exception{ +syn boolean OpenAPIObject.generateRequests(){ + try{ for(PathsObject p:getPathsObjects()) - p.generateUrl(); + p.generateUrl();} catch (Exception e) { + return false; + } } inh boolean PathsObject.generateUrl(); -- GitLab