(* Content-type: application/vnd.wolfram.mathematica *) (*** Wolfram Notebook File ***) (* http://www.wolfram.com/nb *) (* CreatedBy='Mathematica 11.0' *) (*CacheID: 234*) (* Internal cache information: NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 158, 7] NotebookDataLength[ 139961, 3071] NotebookOptionsPosition[ 135210, 2991] NotebookOutlinePosition[ 135685, 3010] CellTagsIndexPosition[ 135642, 3007] WindowFrame->Normal*) (* Beginning of Notebook Content *) Notebook[{ Cell[BoxData[Cell[GraphicsData["PDF", "\<\ 9E14ARda;S<:9LCUl^G[Yo>PdEM3gc3EDL20_AVU/M6Eb82m6K65dIDAUHfmT I@Xn?PYcM79UHFd:N07]O@MLDe^j[oO=WG?VcWC]cCbnFLncm :584@^m=;635gW__ahJ5g^b:8XXR2QI046UR@`FB47X99K@4O?nM[M^@k6a2211` lE_jFmWINiGoG^^OKgg[FmoGmTKFAQ91P210420840@80P@1PP11P210420840@8 0P@1PP11P210420840@80P@1PP11P210420840@80P@1PP11P2104>Sk2;ailhIH @a4420840Ge3@=3@/_1N^DML:DWMRX3?oO:PicGjm_Jk^cghhI?om[EfMdFTo7j9 0;nQiGm>5olfA?SKD059gHE0/>2c2j:IZIGmLPRYjaAhjNj3e?/YZL:R8SU7T@<; 187>8@1fn/m`hH10`H0PT[X=PD3n_ilCCDnYDSNAnmUeVX]2cUb`mUiT?6=^n9GX O]I1dYfN@N0m>`D;1Y3DC@P4lOoSW6QVofNWEZP`IC;YZh:2Xn6WGNH_6licn]k4 I/Vf?FUIfORZIhHdZJGO843HZBLhnL=PYmHfFKfThO7cg<]AeYkSS>fWFd QI>iiic]QhoGe]GeVeU3>]8c211f8^bTTi5F9AKWi;hlMNFJ`kbUGdfa66o]bZC_ SFd=Y/e9CT/SfRNM@?gQ54;HRK1CedNk[;GUHTb/dl9EGaUHS^@i<;`de]9UW9G[ J6]gnhD[XB4Wk=AeZ3nX4PPk4GKZhX07iiAGE_`lJn7oC;76DPkDQ?m1BV>]G8NK >eS>lPVkL;U:G4fXZH/hOh2?4gHRk=CeH@oV^GD_JLkZcD=[_oe/_/_GSelTJVY^ KVfCjZAlD/P7R01Q9l9>>QWfT8k::RY^g;VkI<^^[:O?/4=7N4TW`7k8QO@SM^8? 2>@?2519^1R4e:_FG1n6AH6/EEYKEil_;6aYJNWF>BEO:J[nAnbYI:ZPh8Y^g`EK 5Mf5O=mV9g0>[=cUS?BKThF3;QI?^5Xb9JKDn7ZYDDcYi6]D6QaIm=598DE@^8df RNlVTd^>H[^7WJQaele9LF1[EQLcN3]^Vf;Qg7VVJYQj=SHg@S2[[:iRDUEeMFeM KG=c4`YQkZ@c[Bmm52clm5CQT8^R LE75aWL[]fOFQ;jX>o^ZoV9NoHFlnU<_ZK@[DfadYg;L]M8AUhZn>2_j[KV0WJF^;^:KfI@4oSbo/SU@P:2`Y:fM6:C:=CDd2DM6[0X5>ZR/@RQZK6QC; EiN7^D9UMOE[_R3[jH_Tm:aK3e:^9MbmN>ICilWIe3PdeE4b:^8S;dYAch]kO7CibmORhY; j^[[FI^ZgLDnbDi1P]l7lOleE33/H_7>S9ZWUDgd3cH@J9JeeD_KJU_JJY[K95;l N;gm`eNUTYHc;n]WgZgh=4;hYa18Dnm>eGD77BVEZG]fJZf][knMV3QSaOY5jkMe AeZaIEO0bK>0SaiGb;`Fl3LNl9fcIY=>ZU^kHenn@n@d5W;/@U9EN:ZiCDGnS8/K1CbkO^D]N; 1N^fG;Ui^eWSaBT:?18D[U[Jc1G[WkejeOZ6Q@C`b>FK]nN/ETIbeX[ebNWYMODM 6mES3j:bFYcim2Vj>FoeIT?WVMPTE@L;[WlW]hmeGkQb`mi38FL_a=e?cK h[5XR==_L=^>M?4O/MJSE59bSU8R4ieok0IfZQJ;cdI5ogFR>J`OMIj6la`Vf;P] fk:KPANIalnNVLaHl:fQMMN[@oWVW_=bG[aDadj]KJd=CDfH@J^fkok[A;>1aUHS c>g7F[T`MYkZH7Y13aSdJkBebg0cNmJ>O6iP 1=86/eBJUFUU?38o^2CgaUI:CGPZimi <@Ug8GhX=USYFGc4CVSFdjNcUZgoWlTF?aQIXB=S;9gE0J9hOAC?HK29cMNC;CjO a7=L]5YM;OB?`XGX64?WjF0T4=4X74Zbi08O=RASN4h3SJfoV/b3WE_0VO>2XV:8 M^ZZD>dDjiDnaTk@7@D9HP/K81LY3N`JZNcCblD3o?T3SQL<>57`=W=LN2DOl[gb kaM0`oeoa?dd@NVLSY@:k0ifZZViN>djiZ3Rl==EOZbUllnf7Z[/I>K]OQThN692/IIGK7_ BRDXODB1lmI/6JO2W:bedloRTDcEMH6e Glc5DAJ>IQjcMoWjXaVZOFVA]V@lNN8dKmVGTgUS;9aYle[VFDdbN;UO6eQ4Lk8C1;2XYgW3Xn=N6=_PE 7Zn6@cZL9^HJM_ `;G? Gon`FUSO[?XDmF2;M=AE^@@5j]<]8bVFA]RYoB3WIZLiJkNL]OOhZC`]f`_702MI^GKhX`3bki2h0>=46gN_5N^E:V:MRJ`Gn`Hk1@Tn2N@7 ?ZeSYBIIVnaaAMm4n_:3P WBJUiCUZRKYadlaccW0cmPDMFXEWX@cifX07RgBTK`ahS;Kf^bVFM7FDg/W8I]VF W@G2@RgH2O=^]8Gc9NAcCi/eL<=Bd0nAY1O/D9loa =Vi@;:1lK4Kl==D>`d2YHCB<4nfWGHRnYURG>RAE[oL1MZ948?hO`XDESNe4M:H_ ;JfbZoVBgm6BTZ;4@^N3n;lk;KYG1]V9oG5a/faIJQFUYnXnlJTKI2M/RjAUINhi 7W`P85AM>Q@Dc_>H0offh[31V85/_fc[kUl2@Ph4Q;4nnh]ob>6P/^gDV>RKXG2BZFkog`>`EjbLkC=_SjhLmKZGgSXid^;83 G?SM7f?Uh[eR0h<0c/nGeZnM@mn14MK>2XmRh]H Q8;dU43Cl6>OH:OO10]h=iE7<]=1Z:72GmCo5U`4PV9SY`6Q`X@BK9f`/aW5jcagWaDCKMdEe`8H<92J;UbkTO]GJ5]38eBVRRnU]EiBKnSV?LX2lUjk 7B9BE 1hlbi;_cRUE@VkbJ/1=@X]IgMQiiO3j4LfJ`ZFI@H0n`DfiNg^XmQkhgD]h46F?Q 11GgVYd78V?RW^Jna>Z?QPG]K94f0n7JfUYHIXZ:Ro4F7ZAWG[mc;nQ/i=gDQj0k i^ERJQBGUAVhN]54YlP`:=o0JLKf`bMRh^nR3N8J:W877Z@ClPd=3K2QBTY;m`dn 2CN3:06SXUd9URk3c1giQ@8h9eA5So]:7f2W@<4oQ`[3GZPe0VUZUOTo[Oe47C]1 8PXB91B[IBOP4b>X]hh]je?/A;eXc8/>oj2F13]QXS431Q[;kjMH?G[l6?Ih7Ck> 31kLbLY>47;0CS2:6:Bm>SA65_gTCa:35=^/@G ZkGJA@WYY@g;4b^XXbhjTIAD2m6mk:CAca16SSYf^YNBbSgY50L9lRR:VifDk]OR 8jY8C4f5VT9aLH4OHRAXCU8bG;j:]AEFF8XC7k[[DIH^Sg9b5=^SAAiM>7dYNYb=^c;b4;?= k5l;1:f]T3oKRJ2Z]J0@n6fN93OEH32Tl;R/gb2=EK1kgoj8FM2iA/A6BEYD;^[PP9kP9e>Q9ffmej/a4kHf]RjohR`Z1R2 SNH8Z=j9;^`lLQcZ?TDI6cQPKf;CgX?RfU[EAeR_h?L^j=AIf8f3SQPFACUHZ/<< 7/KW[4maG=AgMY:[a3lk9`:0jW[ALWMi2;dgf]HMbi3gf7;;>@LkMn_ZnbdO?^N/G8]h_^nbc4iOoFjiZ`RTlW^ Yj@C`ic570b_R:MRoX=PY`3nmXcZimG/e8gA]NEIgDO@R^=/RnZR C2MGbcDY=LA`RSaOAFn`46NW;BKc2dY:maoa=G6La1d?X5MlP4f^8CcRgbkZj jEef>QlESC==GINME=V9TQ^WF5f;^beOD6^TBI2e]Sk:b/;6HS]f`^;>`]EbYPmQ 9gIj2N;o:D:hlc7;`G<<[ICR9^MKi@?lniJmTdJS1Kg[FgZWGV@WV0Jmi_=O5aCH N2onbJCM6A=/81XhDmIIn/Q>Ejif7c]QmnCJ[OS>/E=f=P/kFKYHcU`06aRUgj<> ?gh@/Q?TWb3nOed@7LZ][Fa^]mDEcjlgRbWkBkR8gAY19h:C_?INRKKIKmQYcLim L1OChF3Fi0IPX[ZbPi`0MT:@d:JVY_en`EHcib_][OmXHX/S7W8C2fD=0`[/aIGM NL9>^YZTFYBS4kdCEBneJQ]n]GCY@o7N5gEG2aX^iD/fIhY]H/_n>KB@lTZWAM/d On@3F=W9MiaIg:VY^jk:99SVjVBWmK]ojAUf`^HDc:DFKMke@g_;8VbDCe^biW[2 ?CABZNF4WAQ0Z9DMTIgJ:c4jeXXc=18Pn5E@hIl_5?=Rbn4llamaJUS^m:1kZ@Ve memf`XUn0lMYSinmP4/gcAa5fD_g=HS3Y13]AA05W_nmlSd<=cVYNc[2I[S;mU9fHoIe]1gao>A6XHMYg?>3J [M^=SLZ>SoB4WM2G[h^:_JDd5?6A[>cXbDQT9hJDV4cW f4UGQ=>YL_Xk>l7`1V/O3M9djihM8c]e:P<9>c5@47IRX60bQ9dH:9@bQ9fD0<57 H<:aIbLo/T5IJl1k;ObI`fV`4_72S]g8cE^aF<9>31Z4WAPXV0aQ9`H:Y@aQ9bE0 l553M/:M=KEeV`oh@UiB?=/2MQY[hgHZMZSJfdidC/YJ:D66U[_d6>mTl9LJgW5;h1_LeQ3n>DHbQT]Ci]:CEc]Zade]ZDZU;]GJeEgA:D?fMWAI_g;5RfikUFgM[TYI/ gPWI@mEb6?=MKoA>KdgaLOQRgMj3`gV>R^5PL<@Ej_7XVflgkhS/e5OIBLhB7ilD nJAD[Ll@/jMdlMCH/To?`2/hfc4gN@VM>`DL9?SOhL:Y=l[HZe?GS?KGoaPV3gSG ZHdiSY_k:C]A?TH/GGjfMhM[//BdAhT?=Dg`Q2JE:/NDe4=f@^SQ1nWY?n7@_M:a ET/WSjE[/;F7RDWHZ@ncDb3omaN;nI9fidO`@QGoSSlAShiBhiYB:gKjjaWATI`J aBXjVoo/]3b60POQM>Z[o/]>FW^OHhHdTl4kdSOI2Fe3V18hWZESX33[>jce/>:3 le_HU:;Ia=j9OXUmK6D7K/72kEaAPHC[e:[>fNWCdhDkdZ^HHJm5Q[2C4VRHPkgX @FGM[_dmMY95]N=`fSoFaQeQHQQfP_H9@@Cf7Po02EW2CPaRQ9dH:9R9TjgfS]QILO8C/c[d3Z3eZZCWII_f]F]oYfHDl2M53O_`5A` ^R8@RA2fV=5b4WIB63ChBMU;5Q;kBKmRY9dl1Zh8964mORS9ameJ:HhF?]5TY HBLJ=<9>ZX>7/9/3SZGGH2V4d]C@j;E`i^7g@0X]@GDbb59LD;eVeS 5WeoFZgPW_E=fdkO0jdC/Y@@@`NdO_Q@S>Z:9[KQBDGSZlXeKdiN]DhZ:PY0Ual=>^RmL?/WNPn4U>]@GLJJ/XQ8SGJW1WOZ8gZWjaPCg8[1Yf;U8EM/?MHE;IK;hnhW3N4k]o8XS8Yj5 Tog/AG[W6k>Gf>WO8XAckiCM4CE4lbEdZVQBg[mFA;RZBIYCfLcLS`kn8]>o>5QEeWYme7oBOH:DLm66W^^7SccRZ=?KXSj/[^ 8lM7FCX[fJo24o:RmE]E_E9dn1:kecMV[k1C/>3G8@8@e3OWAInOUJOCQ@o:^;b6 IUDfKTTGOgjjn>gmIdFDjbLd_U=V0a`gO`0F1Af>]0i_06nTIVI>]?MDg1fSZF2@ TMGUf5/hF/;Z>iNeI9B6?mF_L54;f@WUh<7kZHnFK]VU93k1Sh6B][`kI:N;Ejo? F;YFRIg0SD=hC[LOYk>TVm[5FZ=>bk`4i]22Z:62G:k=@n?2DSFNUFM[ZGT[9X `oIQY^el9Z0^A0MN]Wg_kL@7LXld7B?O;6e21:PjBEf;k7ed>F2BVI6[;Qeh^=bmohbnngaWI:0Y>J25NRLi1A5KU=i5Qaok 9c/YRC617DCKA3bkYBTTWQgGh<40I]Dk`CNVZLM/a:;5h=@l?GnEUeLPJ6QBo/V0 jJ>Yie`UddMj_Plb/UjaHeoTmKS7cg<;RhY;:bX@98E>b2>R4bkV2h@8P9kai5UB I^KYjhQYoTB^Xb`LUfkMQA3TCg=O0HB:ZRX6VO;:bY:bbZZ^ NJo70bH8LFk/=W/D3c7RgalZY>_jg/Ajhbm7K]bimoaeOVUINDe];D@Y67Xe=3G1 3@jZ0>c9jEV7@R=n=;G5N50DW50JA:UAeZj5aDE]n5=h4I[T2C/19L9>7@hEEWIR IX[[P^F8E:]iLU^`78Z8e`EDo6_5ZU7;aWf7YcS=I9gn45Z@C=aVKCe`i4ChVO2; UnV4o47oh:fo75VjJHO;P^EHB_c]Io?O3YnlkM2aXY9BeEF]QNONBPkaj1Yo<[GkdLcNM_JRk@N?8L9MnG@c_mnBB;?h`dl=ZljmW;Ud2K0AoieC_gCgBHQW/DNo6f O6SKK3gL5jhl71Qj9OHVCRdU?D[7omSA@aE;]^bJi3CSRlTFZPn2VZ0QWkIhUF9M C:DMIPPk0B;2CQf>4h`^EMV96HfSN0i`SjUi6/ic99D=7`>Q2O M<]>`1onQ=O^g8l3b0c/RQU:B^4iXmN:/20oa<@65k4d1ShdXd:a_g3CCW2;8V

/;F8cDS@k6^ 3PLKL`=Q9d11f8TI3nXb65dLk:@hCCC9SkE`=Yo>`TjX7AG]?A74lib[Y07FY5S5 Nc0IKFKiH;6SLgK2^^Ide5G4NU>/CSF_FgH2K=N 8[VEV?CGWldI@HRUhfZdmgDeRFJD`9VVAn <;8bm_16L<2VY_OZMgFSBmee`Ti0Q[2C^^71G>m9MT9Mf6i;cTQgGkCZVdTl[FOR ]iXhQHbW7@Hm:kF4nPYdn[bTjXX[6YlEF1h618a9N65ZQ2EDW>U:<^PoL5 i=O/>WSg@IYZK0/6@ddbQ9f0DSmV9hm5ZhJK>`ha/HDlCjO19SJOSSFinb2U^HG; @UEYl=3/==;Enm>9ITaAFVL66m/J>/m0k6lU_I=RYI962AACPFL_>@KffCHUo/Ae^IVLZ[QacaB2=Vca 2oe<1DTlL^UF@Uem_F:3VJNH308F0c[Od9n<0=2G]Z?`2IbKaA=^i[maaBEd^;]:Vh_3`^jL76OHM0@ElKFZZ[HYcEFn@1nf0C fbl=;=1gT7o`6[O/a>Ah;3encjING>oJ_N9NCWK]Sn ?>neE=H9M/;j:4lPF7OTa;a=>eO]fb4mb9]U@Z;RZ;S h_L4Q:0R[iDK`5@lbSIk1V@6F20S8O>c[K^AldcHK3_?F`Z=b/:=>eO]?[3SA=29 TnNP5Fm^`L[R_E41YVC`f@][mQiL^D<1TagkgMM^:BXYDHd1ZVhZXIcMao`i^^ni O^_SEbnU[J`P]dKNCYRgNJOBhgSThN>LQTHHF[a_<5/3:;^SE`GlDiNS]al;Q;gC k5FKG7fFlccW0@[`2NR8@/K:MI;m=6S7k8B=hnbWCaECe]>W 6HmcjQ[ZFmlXFbZZ6bCdMES8?<_=cLaiXUQJEo;@XW2c4nX52N0?MU0icim7ghb7 :;GG;fSe[P;fO7RmN_j1_a`8g8jo[FK 8kSbV/m7JHX]e`8CU2PF8iR_Wc/:cM_nIll^og`2EA18hoo5foL^OGPDMoPR3>GXnlVY`8@ nQ7l[jkSWKY>f0U`mEMf@]NHdJ:DjM@PHFiF:ZB;7iUR=LUd]Rj><]DEaO48jeOZ bV6^/ci5GjCiPKVCbG0l`_XElj3V6MIb>2iZGS;^i2Q7Rjl8>`6dO/a>FP`9lPQ1 @4l@8>b45d7HBDm68fT6@D0A0L9>@8>`Tn:@87V2P9hP@=P9;j87f>VKLhG[Dg2n _PUi6ROh1Nl^nTk9NYegdD1?:o?E^hTK0C8FN2 @6L@Z97:?RG/e=dNE0;i@b:;mfAB8OJHg`FB8@P@1;PA@PObQ UhYobJh5>G6oSPoeFlZlD7gZ^l_QO]VY7WdMWidD4WKZKWHJNKW4=`N>Ig_dcOJ9 jW0ZY;Vi6LLgh=I<;1IGR/GEn:^YTK]`U<3;VHcMg5[OTDBcVi^KL8h6;][@8JYO B3De]OGel;n]j[BcCkb/7VhTeQZOWI=7iMJ][eYJndCdCS@>0Gb3JjFWGgI`OZXk GWeINFE9NCUL4/6E92J5KZ/0/ABEU/6OKDUYNGe3PdcF2N=c=0KlPgPR1HFR]XFQIL99_KYj2DYkbNLocB7Y`;BknG=CElidlMYef7FWIVKUiQO0gG5eKBd>cFUMUkX7PI>lkc@8e?mXT[ZKmOTjaDjGRbTe LQ1OFIV/Z=oF;ToHjAdklF9:HUkg]>b4Ul^K5>lX?eN`nJNLkic]3b[a?=4ELGg/`@@0eA R^R4ljZhl^DTlonJJ3K@foHM2c]e8n5NLATlGZYU3la4^6RKh^AYj3aM `fCTX0EjNfngP5Nhl5h93eIF?N]e5>HJ >?>;BCch[/B3WD[P]456=_3jjk9h]JYc=XhGQA3Sj5[_OXDf;dRZnT]4hH30KYRKA7JRfLV_H>JMR^ME>UiHMCQbl7;1C_2N>/SD [__H2HjShNTXC0=fP]@4JQX8g^2i`7/KY/m08a]h;c7el5jnNANROQl92XGP@BNh 2]nbolS/eA]hjj3i`kO4abe<>3SWYMiNN]nlOg1e06a[Q2b0F`00FVP/KGm WF<2RhbaMlO2eWR]D^PkPW bFUYPjKJPIgP1]aUh@XCmmWXe11CNdAMdM0oS7IEMlMC`?K`hiZoW/Jf7F6WKT3P 7C/]B:hD=K8jde0[XWOmMN?Ud^b44=_MbTkOJD15KcEa01ok0PVkIe]eGKlGW 2HC@`8S5D9KDHE7f?]GERf_Zh4H9^RUX]b2Ig4i<3SdO6G[^8_O:SV6W8LHfQ`92 dc:cABFUQBG570WAaW<;2VkN_@m?85P5`oN8V:7b;J2=^:mH?/g8I COVHL_k2`0ZNG^:CD`BRX_:ZZVYaCDeM?M7KjW1@N?R5b=DkmR8ob];UL51XLg=?Sl2^Sn78 Ei:_cXX617C3g2Bbdc]fF_>`^QVRPgY]BGMlYEO/1:n`bHoBhAM^[:D[g;[^?Q6H lcbg]ZiF`md[?2jAB41F5IEEb7?0aK0CPTb5GkPTdT`KQRdfk1_V_/iO]OfFWES_f8DdTC6SPZo7;dbg`n56]@cW]kUii<][RKLbLek7G[a<_;0O:cS]3Y9Cn/F>9ZZ hEN9AHdoW1<=l2O/e0d8d>`D:]b@e@^VV7[5C_3V573b3;`/8X;]>7^?]:c7l=ZT i7b9Ll@Zf@jYUCTEfBWTO6AQ4M?^JM:mYlE U8X@OU<5YnYHSO/EUINl<]iQR>C:]T/J6BcORS5fmX8WjdMCNLL6b :g7aWH7UON5BVOCadfNDjd^NldCW6FTiCh1i@W8ZPUfRl2nWF3k9OMVYOEG=@7_O P>jhGeSGeEFRkeF[/>b3Z[JiE]g `o97^dien9@R>`FN?RLX;=BHWN0>Z`gRg:kSP@RiP]GF85?kg;`lMNXJ50/?Wn=/ g11NHH;3]?VKMYJFUFWaUVT_iCnJ>D1JPkbgiM0a^77CPZ2`K=aea8ob6faR]ng` dL9RJP/E;SCW[=b48<;Pfn>Q9f6BdB60NWF3A2HK4edf8:0KS]ZAUAgH:I1_7E/F 8nRZSfD]aXaN/A>DBhPJ3:Nb@lg/8DCQIef;7VWbB5OHRBkoH704=?3@K`oW>Cg: cYK1EX1]B@kFHhbU:hS5IogfNagY^mXm oZi]/6ZcW3TO6hD`lhR9CjR]Xnc[X>>2bm1_3BeagGgaZXZZJ]IWmOHR^V0HFoJA o5MNabI?Q9f0JP1oMG95EUT_;?WeRYf:blXA/A5N[b4NG;ei2dKPgC@S^/Q>0>e@ l2U=f:VjE_c]E2RdWJ5XD75foLlK>=a`RNXn?L9@4WFL8iLIN< D0Di^Bn`/`Tenl2Y]Zl5O6SBd1bH>V@mNojiP@Ef<65GmXYO86_Sd]Yaem;cg`:I GITePk6hdoVf7F4W/=>9PX1W]LFBWSHW`432VmFO?C_/^b4d;LE>QUJaMnkZg72M VCPm`dk0=Rd[2e]k4;70C_/2@^EZ=2fE<2P]o7cT90M?A3Y6i8:UFgKQ2]`X`1EU/n6kIERMl_W65VKc=k4Db`1QYIWHbl39]h;IJ=6[A1bkigF78d Gf9j0h/kGJ^52C_9fBVnZ;]F/TW kNHbW[fCV3C1OQY/4V2^jKU/GBM;JdEd;HAGa/HO;56Eb1n7S8;?G:1]A:L]F@e= O]mRYiOR5Zmk5@?l2/S:C]L8l?m`__QN>FAYM]d5=kedlE^mHRNLODUm5`mIS/M3Tf3VKNH2L/VP;?G>`TWbRcDe9JfTCkJMPeX=U9leN?NZ74RkUc kgmP>F3U2WJZZVVWG8:9i_?G[f34SZIRRANOnU0Y0ZWVMOG:WM;F=f_Ca4AfdS4e bIE>La:[G]Of`[8>0dV_f:VT_<;0dA<7D_0S7QdKYlmjYog19a4hTU/[3Vaao0C/ Q;DHE3e1GFJWSf7eJciL]f0TWCMjbTjWm]4jbdkWXjaKCiX`d Maa/kP1_3e9Y>l4P[NPmVdGRPQR?oI>@B=ED_eL:0GV2gn188:K/KoZRV@We3LZ6i]QH8OUCOY g[lCeG;103on`k:VYUH^/n7^nf7B:gJ2_M>LeA_dgmjYDUbemJSo=eoD^>f7de]CE@RN?Tg@``QaTkU1DFRZ?`m^>X63lT?g/fF0c1mb38gjnhFLJZ03^ k5JVgCLP]Bhi[jIUOeJ]SVdbFN:/Z]KbYZJbaYIDWVSK7^VNT]dD=LiIocFlD5SOKYaXoH:dN52_f0WV=g^>nOeXJXO5WK77k1Mi nMP4ej9C7CkB5KdC4<]hlPBa_g4lNKB5ba2N8bbAf_3gcZJ8bNP=>keiVY^kO>On KjI@AhA`iQL=Ha[9I70AFhZS:JfkbmMC[=K/>i`_d?jl35=/SfDPPE`C=_b3Gb6; k:4ZSFQhQI8On0?22`oUe9ehFW?l2G/bS2_kec>X]m]TYf3nh^A:MKGSnY[DJ/>H <]f_J_giW1N8^0A_YJZQWmWYjlnK?WNT^@>fcacW;VFMk7P:eoE3MWX3WeB^?/]Q B33Nc_e`H2Q7Pn4`HJ`=]L?X/GSEQNPHMGLZHJ8?7l6hBAD]OhT/HEmQJDQ7k;Oa HO=3BBKZ4^@[l1S[/g9njn[:3RGk5e1RXKX6h3[[^Y:eBAYNA<^?5e`[`?C[WFDM ?H?dQig@7Yb=oMWNPo8IH^GjcA@;clF[`liOb/g?Pnl2>>mEIi;MfMW1/==PnQA` LC4Uo:So`n5/E0egLfPN=6V][Sg=a@JkMDmOkjm8BMd7:H7h2JL9YVS:ek m]>WjSP7en?^9Dj`m`3adRIEjTkXM1K`W[Vo[;7UF4hMaB@JC/0N^4eGk=@3CEFZ @/i>eLfmATdHV0h_lo>n=[HMIVh?PX8O0:a7X7lfMYUi:2P<> ;Naef@U]N?c/VLD/WaoUO_b_ d4C150N7f[hc]GMN/?aP@?2=n0BhMPD;`dkShN2>icCDg768V@=GDmfmO8?2^K72]l^gkh4_ GncLVDnK4g:^BcIJWGXY>[Vi[:7E=5Zn^<=?_i8`d2/OnjS/52ChOB3o@DV3]0_n lk_n@S4JmHfMZ4je]F4Ymb0mONOQhbKCi/9C;Ua[HWiQa@NVX_T:=]R3HKeSjkiV mbog7ZA8ILgLldhAZoO/9?Og2bnAl5g/Y[]i`b0UIR3Mc@DI>3SM:n3HQ<@TWQM5Uf4^HCio;OKlRZ_Z@Ki19 XoJ41Z A^Ih^GTi:7gFbPf0E6T0Z7j/[Q4knR`7Vd5?=MK>oOV[EagRZEY8KeeYOB<[UC>nT[BdeMGE59JE?LenUI6I6 aMf63V[AQQeVdnK06OQPHa_@a@Qc9b?GFC>G[klH4`_c7^h9aK0C_94L3XihV9W= 5hXhDX5@U5LPN?hZ;cD[9oC29C__QG2:0XU[^;VSdOAi;ejoI]DNX`fmcThkSo[1 ^a@L>]W=G^@GXI5K0oAUbn7SF0b>h3VmlXkFf2OH2MdBRhA@BRRM7ChLLmmWGOg`L?C DMMfW`QJ_7WWcgK^D>A2U88UYmL:RZ0dI2NhJXU0;8IBB5cb9bRiZh<4Ai[W[ejO ^fHc9CkaW0NKf?oR7lcZSQ/UmRhk`CF:QONRM7M8]<7ajGOLkWK=CT>3oQ0WoMZI`l0GA/SnR0kOA`R71T5ghHMS9hU:Ra451TIIPhe]Mah=::^/@>>E6ZWj4OO03mFZOHNn=Z:LOhigm1CG m[j@[mY>kR^OA@So5cM_<>:=IYToQhRLKeL4?:_3/A5n@d]6FN>>m:ZoWACnRW/9 fNOH:E3`em>5_SUjlLHa5?/L>bT=Bg@1Ol5WcR>b`1Q;IbRgcCgWaMa>`4FU>iV? R^cDFLnm:0@UUiJGWkibkB/S7?UgnN]4/oBLaj[1iW1K;k8CJ[mhk@Kf3TJI>b:T I/C5:ab0<]HOMn0QK]e_gkWGZFJJ@G/`LcJV1Z:>[aMg7o_ac[bCR IWREKbM62QYJ_[QHa4E@OHfMoS50>?5:FJg:/1 f@UAKWLL?bWl3P0E]hU4N56cME?BZP0Kg8C]SgM5^dH[bUjb1S Vdgk3co:NPbCNlgoX>eO]64K5/_SKE`GKMk10FJ_S=/>:jfAbSj=40h8e8EM@@1o IDYeCGA2bH00j>7Ij^YKk1C0ag5V76[FTmN=I_@KMSYm:LYRnSa4 C827:9PTLB2/4gJRWKW9oDUJ`gDK7;Pa8iK>X06maTi]KC0^oLK43PHHf3GHiN]o ;NkfoI@DcM>UV>/8N`N[9ePSO3756UJJB[gCohnKdZ[nli@^HPBO:7QDdBaCFKWC 260m?bjQHP2HT3EDN]mR9coQdPOEELg:>X[NN]OmRIg^9Cn`W;D0QSYHKEW>V=oM k8@=A1^_1O[9CS0C?GOUfU0NX72U;Dja_MRY15:RW`Fo`@ceN/9MZJi?>gKgV1Lg ]hbj@S/KIc^Obb[Z:5fDL`]>0NMcW]?OWUTcD9eGL`gH2CIJJe8Z?`JihFJU1_CT Akl2ln^UEoQ`dZ]F9M;M[dbYo?k4CZWYjE>miV>W2GYPHcOfToQdmgDR>lWIbDM3 MX;eMMP5K@>bb7nelJHdmnl4FeK[F@]PH0nOW70g2_49?^EP9:IiPPN68LJfN1HU 84hjPXZZ>ZaC6T]jn?5@C/d`n3K14E[]YSWX@^i1YD329DhLOB8NaN7O:ISofJDR S]m:66BkaiEna:eMejkmWGR:3a?FTjmZ:oDY67AoHZN76AVFGP/YmhlFc]`7bWZ< WF14BWW^aFJRYG?0j@/L@kC3ZHeWTajV`Jlh56^dKdaeYLUJIBobl[jBQeCndMAf hkk3^ggm/KS[K=YanVM k5C0:C^mmCh76`IE=Y2;@imMiP[WF]_Bm/didOoZGMTYX<0PZSRk/_M]W1A7BcmS 9mj/1G0?YCo/57O_?QgeH929kI4^Ace0JA>Pm[M`P^64mjY=j]P9nWV`8P;nPQEQ X@[3/Z[_okAV;9J@[5F0WD84WdFYIBO:^;eNA_5WKk4CaL3`d<8?OU9CdJQO kkLo/E=:N[ZIe`8h400kZO>aATnX7Y>Mh5l5BQ^XKQ04O7M0F5MV=mhDE4WSiI^B Tn`mEfcKZhjMa;Fe6oHL`4TOV=0_fkb[FUb3>kGkPbmUjnWchNlGYNdi5P3gP?[? B4X];:ZG1Sj_obBX2ekYo0X^2bC`KZMD<_?aHYk4n7ZY>WKjEJSPjn]U`9niGc5C 9iD6_91kOI5;FMYCZ8IdO[=WUi2HK3E[0KJI X2ZamEjTKSbPncYQYbNi[baWc:?eCV7W8Z7ZD@@FNC@0gUOP005VX[0jF;gW85B8IIg3_2GnYlna5XEC?`QH06_cWJ7EWN@7[7K/BXF[ n`SGOgBHH9AVh3Z;GePTJn>B8]BEdh_G`@[IhYHAQ` Ze`M>odQG6QiYiceIF4O<:m>mTeDBNl:C[l?h2LG=cJ[YmoNNWd0[Mn`DlSIlnJN Lf1l>B7X24D@]gDoG]FkP1RBVDo8IeiJDZBk1N2N2W E:Qeo_m:g>am]g:07i_9Dj3P?dlFKW[d?[2Y8SSUSBd1cnYkcB6EO4ggDA2h]k9g oCPYHZ:HkcO/1;M@LeI_VVCWgKZY>MN6Se9TbCfO];OOnJ1 ;_kK`3cahL@0Gd aBB;;DOlZlCEZ^F0=oR5X[DkOh402I]iN5eXK>ZZ9Z6lZ/YUoU:@<7c8k3ib@UAL d^OH2I0FeCO_OURU?@l4l;n;;TV[Y0:kZkhP_8P=R:K76^/cP?o3NE5BUe?B_b3dXKiRMF3SPQmmcbUT?T3Pe216=_UV4a[=CUNYU/@fKekg7FYR/B GAO9:U3`Ua1A35mI8j7De5kl2:PIMS;cmWT/McZ=Re[l/OJRY[jNWUIH5hC16d09 OWVEgaCc85H=TMM^P6N`R]6l0CRMTIbF=];6KHbU:iHcf6>J]Va]Rha;IV1U9`e[ U3A:cUnii[ih=KKQ8Z`ACPINl@]fn_YmKF`3JX;m4XjUg4Y:AQ^DJi4cWU0T2SUkPFJW_aW`ZV_[E6o[ k1D/38G58SY<<7`0GXZ=HaGK>U]/cmoOg2I;:VoZRV>jg`@9o^FLR9MDFM@48J[M <6j2@mLJjMKd6YQ^DQ8JJ2Z@?cjjm?2Cf[bjMSjel>2S/RK3V=8oQ/V=ZK[8<5Xo 7/SoLkS@neiUHjoji^DN1/2:IRO/Da/hCenaOBnLh^hjLZ9CJOoa@3R_ISF6jA@k 5IJF3>@iDB:@gCBGnL_g7?_;>QXdjRmSL:QDe]c_HoP/B3;eBlX[CDX;YFVmU67K2[9UPkFKX=6>Z ViNAbdc=daCW6I

  • GV`cIhW5^f@mIhW=kGZ_f_ShaG==YVY9FOWeQ7]; ]^gmJXX5cPkCNfZ06Sib[K`FXV]fliKA_DF93Oj2amECgfIM^ gX9W68iM/a>W;`b3iBO?nDMCn`N?7[6n4DDL=<`SL3321b>8<4`ea]Yk19joY4VG =Bbl9fnC]KDn[FXIMUkdJjf=Ro1P8?nS@<6@BlFckeF/ba9OhMLoZF`^JVRYTm9N b>CHP;BX_kI6FF]iTaBT5<>_GiMA?N]^nCnM5Pd8P8UA5nb_]6HTi/50hDmAYO^O e:Z;;mbC;hFS;R0hb=[]Fd=[R053C>cP20Rokie:gdjan_AWGWaR4^/i[9ZjnSn= W89]YWlKJnagmP8R1E3_k=g?SD86lIRJG`[h/cK]W;Ih5GSbNoWQ2k@4JaTLZD33 OS2bnMk8VTk83c:fAI_QmA6I7da/WNH]FKggl?f7jE0kMhPiF_D_Xhg@:WV_DH:= QUgn7_FJfV5Wd6_UQVfnO[O^9l^k`2;9:7B=9^gFlZY:=6n;[ioWdSFHi^PPJ0X= T6=^PgDRdcGj;N3h2Bh>]g2fW^VcH]L_Ijk4`>fNJPaO^R:0bRl/G;Ggl7m?=4>I XjaM:j^[eMf/dSJFWaG5Ne0>7?AmJnH0a?k_Q:T[3a`]:H<1CmoC?Z5C67hkdZ[n 50:BjL:Q=[TnVE:3Q`W=Hd/fYHWmWmMMi4/BRYXBRY/BBY^YE=:4Sm72QY1GMC/c JVa^UU96SgQ4Jf9T^:F;VB31Ya55Vm=ZH0VVn9Ke<8nGaE^dN^Z/Q@P?Y5gRNBdJ ?m?WDEHfZ`:fC]8`c=GKdW_A:?OIIjkM:9IkXEB70b;o?Wgil_CUjK^H: YUFMjS8]_3T/G[GkV7m/`]e>aNRDMaTJjUHXKB9SHV7YcI^m69K]R7/2VLg@JNHD YkNm@cOAFALi9J7QCaedn2[SlI<]Qdm15Wg8f[]Z_hM4U7f=]eLEYCSd^Egf3LbQMTecM 1?:9::@B_Z:_hgnX_[6La1DMe=P5DYGGoY4oOf=:IDii4lM`DTF/]ji0Qh>`IEe9 D9F`jVWA8ba3V9:[JlD@T;Rk2LCX?aChk>E;Z5oPQ2Cdgoa@?P]^AHG3bd=bZBOhRjLnEJaEDcc^3<5@P6]n5;DIS<5MRY3=eDP:[ck81Dk QXL2@kLM?;YbagjjJnPV>X/^abKL@JF=cHfJM0ggE8_5XY8Rm0;];=O<3JKVcDKi :1`/JFlEN:OmdElDTMcd10XZBSgWHh`=Xl]2f0?cbV=:>: gCA2gehCfTNeRoHQk/<?O53/]DM`=g/IYoZjklm]Lk/GYZ oj3^ZD>Qo4jdBW=0N_S>>hF=M[4Ek2JD[5>k7eb421L1Kc0MB0Pmo298M@@1PX0B 0];F=eOi3CJaYNaFU?f0RaBk@4]do_c4LYSWMZ1VE0::O2@840Aj7X46VBbnY>W; bkB7^ZkZLoA1YjBf3F2Whl:[1A8HZ?LlcZA6PP11@0/4VUZU:AF=U0UUehbPe=:2 XP3CFoTP`BN1QLMbjWXm]ZlF;hPl@Q3hT16@b:AWnA9Z^eloEMUMi;A0`Cl5lgdB ZlXK>mk;oY270NTk@D0o4L1N//o3ZXlYgkUj^MNV=D5Ae2@`_5JFG0;kPOj`Uj6O hhNdRR3@O@SPS71aTgAlMMWW2N[Go_`aDLFnCjP3mMd=7BVO840@j6h4@51SXhXY P/8B[blC5?bm3;aB4_AJ@ZRY^lL<:IlPd6<8h<@^c^[fKB>X4`Fd[k`>3icf6:ZT 8X80@J3[2<3QBEi]ll7/6[TScKhV@D5S1VZjD_ZbEPIoaEe7PiA04208j1D2V=LU 3BeQ^OEbEgEmIaL_B?1[o`:KVnF_2CFaN44QG4d@j2L8h9ahJF>;Kdi]KdJJjiCR :e3`fb2n@ec5lfXYhnm>[cRO=8HP@13@5@:Hhh:jiYEYEAn7b/DWOCHc21Clkc2A EFaI[121PHSEICoiRMCEB2KUm5L449k0<;J3?hB;SJnEAnFB7 S_0B@N33@Z1F:Q/IFoI9Z>0Om92MPPCo9jA`eYfZU>:nhDf^_oj:TGhA17X;0EP= fMf[n9NC`UoY2D7APU`@oin2n4LNeaKDBXUMDfn=3E8_@J3G4L3d?oZTKUaDfLL1 lUENYeCF^[fIYRH4bP`G9UDd=T7?A3g@HD;kUN; FhS?0L;<1062@3/48:hPe18EEQQacjT8D3fhTAO0ooaMN^EN@S@H0P @12P4FQZUBFD=m_7EO`fB>iGDkNJ9MGBi6hC[>mDG1M9:Y[JQChWKh@P@10P22PQ 05gd3D73k?]Eo`[7_`QgdWgQjP84OcmCI1mO7Ub_jEHR^mo;Nk/d9?SmMk9=DNJnh@KD1i0Y1P2104>10@2:CkLn]noa: bImX?Z7oEefMMNZ:_13HOojoL67hReZiXXWXVXSLB10P26R1@6^AA;HmXoX?L5]7 >Jo[f[6G85m4nHH2@GE:F69^ aX?no7l>5XBl84igfl7;8KjB[`P2184>4H2m0BbAMVJ8oa@/XUCUWO<0c8N9`Vo2 2lO7Ecb[JLJfH8OETA/80P@1PT2W410gBe<[VdK7UGlL9Y@k0MK0abKFPoklADWE ]dA=aHf]a;=UY`0W=a<420:J8h0X`iWRU]2GTVT95Fl=biVeVf:6dU11I19>_UYj >ZonMEec_EBZNBgTCX80@H0PX1d2X9[l^^HX@OgDjhRT86`G3igFW`LDO7:^:>Qi GDjE]54V8nOV]<>I?4D@80QXQ`22XEo>Ula>Z_kg/j9o211@78DD`?mc^=3YM_Vf IkFU3I2Gb;TiXVLS2104NPF1=oVBUYTYED3 1062P1hP0=_bYiE=4n<[eZJ;7iK11gR_l2BYU210420840@80P@1PP11P2104208 40@80P@1PP11P210420840@80P@1PP11P210420840@80P@1PP11P210420840@8 0P@1PP11P210420840@80P@1PP11@2d2oam2H/;f2VE^I7=dLVEQK@YUKVA_HVX: >20`86mRJPXa>3Tc<0YUKVA_HVX:C@P;dQUJFMX M20a=S@P;d=_K6mbDg1QHfD:;dAUMVUSIDMbHGTP;dU^M6EbL6m/HGAU87AbMFDP ;d9YM7=@IG93Kfe`KfiUKW@P>20_AVU/M6Eb82m6K65dIDAUHfmTIB0n?PYcM79U HFd:N07]d3410000`Z3nZFL;;hQ0HL200@<631P`H<200@<631P`H<200@<631P` H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<20 0@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<6 31P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P` H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<20 0@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<6 31P`H<200@<631P`H>0o83dPE1569BH1@0XJ49WI41DHD4BUFI5C0 0DN78V=550^3PV;G2O8@D<1:5LV2GPIj=l1fFm E4VJ0>Gg:=?Cn9a<030DVEoRoTiJ9h0N:IW i8X4RDURYQ7GV6WUjg]FMKVJ?VofMlNOU?m?LQjneGa9^c?WT6b/;kdF0?HTFY/M/kjE E@2dK@I0iN6/CnlP0?850;CNW??PSI`1U`4El0=L0/Y1^iSDRALN@31XNQHIPH 5/HIhhMIS>5REV7FHTX`eIQSV5I<5nHfIQ0cPOV2YF;E/JIH9j`oMPTf4I^=;LAF H8mPFk2G/@?HHN`k70k7`1WR771n^1QLn2 3l5cl69l8Kh:Oaao7]n?7lJo9i09FPA[PPlQUR0TK2AD41X8i`SmQ172=561Z4md 8XH@NLALHRVaS]Q1_4TL9TjC54V691MB92VI]85DBFXRGBHm9[dQTlTjI4Mb65U0 GTn^99lPGbD?TSm@U2PV54m:74E2fDhiB[U0ND1i@jEB3JQ^e5RZV;ZMFTnmA7e: OBm7Tc>GliOSbJfCZi5[UN^GNbE?U=NGMiMO;YlWGb5oB_jVo;P2DL50`E>1Xk1F XDKQ]<8mQDU5VZ:EHXQRVV:9HX?R=LEA9KbBPI:g4TnY@>V`dRFU8AY2djEid[Rd CK@jfVGJ<1e7=jCkdi?YaO@Oj;gd2FDUIE_U:>DLiA[U/lYB1/8`H?PcDQVUS9>< ^hb?lcCV^LoScm/f[fUNok`YUOTZKRYlUB:EIYD1UHnZC5E_eACEWJY]ZToD<6XV JV5ZfF[keBj[SLnWcgNNcieO=?oTo8OZ/;Z9N[SjJ_G3jSgZTaZJ6[hJ6AYE6YLd aSDIVVjJbI[UV^LdakAXFP^e15[UF^NeGS2EVNkX/eQWXdjccQ=MTRiK=d6gG;MCMd9?BbmH;en_DNnQ?U6O[InT_dNoFgo:`=0P fV2;@I_1Z:6:XKmQWV6ShFd/Dbg[;1mI:ET5F6fdj[3j`m[4VV]MHgg7QV[SHk?>Y]gV]JfY;Mmf_nem>iYM /=dF^djkcoH>mR;k9_/a1cf7N8Nm3_OHM7HX^hAmeA7[j>6hc_63LjS2``Gl1OD;AQbdG7Q^1abTBiT;XaON72Qe5GKUN=Jjo[8:hnh^kQo^BilH[ihgaGOQUo944UhBbQ=54UlAMRF=9[TTEBN<2Cd6eh7FbGo:1i:VD T9BS:C>YdJW=JHBdn;CC@REQR[0[GCjbVWEkUDCXT3ATD`XLeUV ^iR>oTceB8`TVbF3F@^cJ[;NIdMUWlYAc17Vm>BJi6k;7LWcbO]n=FHeMgEW_WKn Q_c1=Ni[3Zf5eZiLfkU>Meg1^^7e_^^?KB1]B=W`bdK;SFDKgfj:g]AAX56`_V1X /noVaT:i@U7Q_Bg>F`i/aF`EK>gMI[>]J]^G8UkAmF;;hX[RCbGLT^_OFGeGnMg< mXC]_JGfYO]gh7H8MmcMjK[cF9URFEkId:kPGJgUc?:Rl[NkEnbnEV5KLF0?JHmT Sk@bZ;:mBZmZAmFWjZCZPAZ?V^JmjW^gkIgJam_G_mm]Om<1S@?51chN51blOlSg D6^]@Fg5HMcQ[e8lI7?AhE7YLO2SgGE>mCG=jPgU3K2SI;6 /N=aafomh?E3Na>[jE0cXkWh13PQ>O7RaoPOkihM7LhM;CnKogcdS?JIV[?:Id_?TLhEW9/iWgMnlT;6QO6; RAN7>UMd?[Zdi=:M[[2^g/^1UjmNlKUbZM^mnoaEUj]W[SUM>gfMOKg]Q_f=eQjk WYIOk7iYjKG_KKgYL;?mU^>]S[h5ONOjGO/_g_JjONF>oidK0h/6n^h^_W_oG]`m jGgNoM47Z@mN?laj>?eXoF?/hj8W2TlZWZXo[OgEn=MVZKgdk:3GHCCMfW_YZN:gZ^n?oJ1oJ7kHoC7TNW/CoQ? UIn=?gMl2OcbN2I]I^KOmhCcn`YUKVAcM79UHFd:IFiTKf9Z2S4c830PKf9Z2S8f 30bC@d<3MJ<30W<30W:@YUKVA_HVX: CPP<30`<30PKR0:<30`<30`<30bCD`>B0`<30`<21^80X`<30`<38`<30f830`<30`86hP2S0`<30`3Pa830`<30`86hP 2S0`<30`20`<30`<21^80YdLV5YK6Eb 2S`l82mCJGYU834g82mBKfmd834d830PDR0_BFiVKb0a830PDR0_BD@PFb0lHS8i >CHd3TfIVDn2SaRCIVIChPGB0n?PYcM65bM7QbIFH:"], "Graphics", ImageSize->{394, 164}, ImageMargins->0, ImageRegion->{{0., 1.}, {0., 1.}},ExpressionUUID-> "fa7f92ca-550f-497d-8ea0-627a6b4500f2"]], "Input", CellChangeTimes->{{3.728058151655451*^9, 3.7280582039027777`*^9}, 3.7280582479309607`*^9},ExpressionUUID->"b3382702-9bcb-4174-8297-\ d53f0c8dc05a"], Cell[CellGroupData[{ Cell["Cryptography and Security Protocols", "Chapter", CellChangeTimes->{{3.7280582612197733`*^9, 3.728058304007764*^9}},ExpressionUUID->"456d4aa3-29d3-4871-b3e6-\ 857d71c4036f"], Cell["\<\ Paulo Mateus MMA\[Dash]MEIC \ \>", "Text", CellChangeTimes->{{3.728058310970299*^9, 3.7280583251576*^9}},ExpressionUUID->"d9775cf2-fe8f-425a-85d7-3f49e6cfa2a6"] }, Open ]], Cell[CellGroupData[{ Cell["Concepts on Algebra and Complexity", "Chapter", CellChangeTimes->{{3.728058333692665*^9, 3.728058340387947*^9}, { 3.728193103504583*^9, 3.728193138381463*^9}, {3.728193189692791*^9, 3.728193190139413*^9}, {3.728916493161105*^9, 3.72891650643587*^9}, { 3.832822916897949*^9, 3.832822927551969*^9}, {3.832822971634715*^9, 3.8328229724408207`*^9}},ExpressionUUID->"784132f8-8698-4803-9080-\ 2dc11304ae18"], Cell[CellGroupData[{ Cell["Diffie-Hellman key agreement", "Section", CellChangeTimes->{{3.728062293677641*^9, 3.728062304019003*^9}, { 3.728193259258326*^9, 3.728193262544937*^9}, {3.728289540604205*^9, 3.7282895716818933`*^9}, {3.728916766705125*^9, 3.7289167807460003`*^9}},ExpressionUUID->"259f56a4-5530-4592-be74-\ 282ccdc84f83"], Cell[TextData[{ "In symmetric cryptosystems the agents have to share previously the key to \ communicate. However, in today\[CloseCurlyQuote]s scenario this situation is \ unthinkable - one agent might want to communicate secretly with another, even \ without being able to share previously some secret.\n\nDiffie and Hellman \ (DH) came up with a great idea for two agents, Alice and Bob, to agree with a \ symmetric key if they were able to communicate over some authenticated public \ channel, that is, a channel that could be eavesdropped, but that the receiver \ always knows, for sure, who sent a message (this could be achieved with some \ physical process - voice timber, social recognition, or so, that we are going \ to abstract for the moment).\n\nDH idea is based on the hardness of solving \ certain algebraic equations, that is, the fact that there is no efficient \ algorithm to find solutions to these equations. To introduce DH we delve a \ bit more in the properties of ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "n", "\[Cross]"], TraditionalForm]],ExpressionUUID->"a113ffbc-cf81-4123-8ef0-e6855bf10516"], ".\n\n", StyleBox["Proposition 1. ", FontWeight->"Bold"], "Let n>1 some positive integer and \[Alpha] \[Element] ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "n", "\[Cross]"], TraditionalForm]],ExpressionUUID->"458fe637-2d47-4159-9e00-a6e4001cd77b"], " then, there exists positive m such that ", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Alpha]", "m"], "=", RowBox[{"1", " ", "mod", " ", "n"}]}], TraditionalForm]],ExpressionUUID-> "b87e965f-54bb-4e27-8009-28a538794ec7"], ".\n\n", StyleBox["Proof: ", FontWeight->"Bold"], "\nSet \nPa=", Cell[BoxData[ FormBox[ RowBox[{"{", RowBox[{ SuperscriptBox["\[Alpha]", "m"], " ", "mod", " ", "n"}]}], TraditionalForm]],ExpressionUUID->"7e0ca2fb-a708-4e7d-b4ed-2dceff19f834"], ": m>0} \[Subset]", Cell[BoxData[ FormBox[ RowBox[{" ", SubsuperscriptBox["\[DoubleStruckCapitalZ]", "n", "\[Cross]"]}], TraditionalForm]],ExpressionUUID->"a0759036-79ae-4514-a046-4e9ce8e52f3c"], " \nPaL the infinite sequence (", Cell[BoxData[ FormBox[ SubscriptBox[ RowBox[{ RowBox[{ SuperscriptBox["\[Alpha]", "m"], " ", "mod", " ", "n"}], ")"}], RowBox[{"m", ">", "0"}]], TraditionalForm]],ExpressionUUID-> "162a0f58-6ce3-4c83-8a1b-0cf93159b596"], "\nPaI =", Cell[BoxData[ FormBox[ RowBox[{"{", RowBox[{ SuperscriptBox["\[Alpha]", "m"], " ", "mod", " ", "n"}]}], TraditionalForm]],ExpressionUUID->"57f1b1d6-f194-4746-8f35-775b6d9eb795"], ": m>0, such that ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", "m"], TraditionalForm]],ExpressionUUID-> "a433fe27-bc05-4afd-9e42-7059fbf00a82"], " mod n occurs infinitely often in PaL} \n\n(1) First we are going to show \ that the elements ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", "m"], TraditionalForm]],ExpressionUUID-> "f264bea8-872d-4a45-b0af-67480011a8b7"], " that repeat infinitely in PaL are precisely Pa, that is PaI=Pa\n\nAssume \ they are not, that is PaI\[NotEqual]Pa. Start by noticing that if \[Alpha]\ \[Element]PaI then Pa=PaI, and so \[Alpha]\[NotElement]PaI.\nLet m be the ", StyleBox["smallest element ", FontWeight->"Bold"], "such that ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", "m"], TraditionalForm]],ExpressionUUID-> "1292f045-3eac-41b2-82be-63c8a5592b4b"], "mod n \[Element] PaI, m>0.\nThen, we must have m>1 (if m=1 then \[Alpha]\ \[Element]PaI and PaI=Pa). \nSince m is the smallest element such that ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", "m"], TraditionalForm]],ExpressionUUID-> "f17e92af-fe01-40b4-9292-97cce3e404c0"], "mod n \[Element] PaI, ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", RowBox[{"m", "-", "1"}]], TraditionalForm]],ExpressionUUID-> "ae465587-4964-44cb-af5a-b98caf5e10f6"], "mod n \[NotElement] PaI, \nso in PaL we have ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"somewhere", " ", "the", " ", "sequence"}], "..."}], SuperscriptBox["\[Alpha]", "m"], SuperscriptBox["\[Alpha]", RowBox[{"m", "+", "1"}]]}], "..."}], SuperscriptBox["\[Alpha]", "m"], SuperscriptBox["\[Alpha]", RowBox[{"m", "+", "1"}]]}], "..."}], SuperscriptBox["\[Alpha]", "m"], SuperscriptBox["\[Alpha]", RowBox[{"m", "+", "1"}]]}], "..."}], " ", "repeating", " ", "infinitly", " ", RowBox[{"often", "."}]}], TraditionalForm]],ExpressionUUID-> "d36e33c8-cfd0-4dff-a24d-19f4913aa12e"], "\n\nThe element that occurs just before ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", "m"], TraditionalForm]],ExpressionUUID-> "d1dea6f4-41a4-4849-830d-f1a91f98ac03"], " in PaL has to be ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["\[Alpha]", "m"], "\[Cross]", SuperscriptBox["\[Alpha]", RowBox[{"-", "1"}]]}], "=", RowBox[{ SuperscriptBox["\[Alpha]", RowBox[{"m", "-", "1"}]], " ", "mod", " ", "n"}]}], ","}], TraditionalForm]],ExpressionUUID->"ba33128c-c3f7-42f7-80ac-9c36e8c5a720"], "and so ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", RowBox[{"m", "-", "1"}]], TraditionalForm]],ExpressionUUID-> "8de0b3ca-e722-443a-b99a-9fbe2dae8f35"], "also occurs infinitely often, but m was the smallest element in this \ condition, which is a contradiction! Therefore there is no m>1 such that ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", RowBox[{"m", "-", "1"}]], TraditionalForm]],ExpressionUUID-> "6de78e3e-2215-4ea9-9f52-2284d017396e"], "mod n \[NotElement] PaI, and so PaI = Pa\n\n(2) By (1) \[Alpha] occurs \ infinitely often in PaL, and so does 1!\n\nBy (1), ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SuperscriptBox["\[Alpha]", "k"], "=", RowBox[{ "\[Alpha]", " ", "mod", " ", "n", " ", "for", " ", "infinite", " ", RowBox[{"k", "'"}], "s"}]}], ",", " ", RowBox[{ RowBox[{"so", " ", "take", " ", "m"}], " ", "=", " ", RowBox[{"k", "-", "1"}]}], " ", ",", " ", RowBox[{ SuperscriptBox["\[Alpha]", RowBox[{"k", "-", "1"}]], "=", RowBox[{ RowBox[{ SuperscriptBox["\[Alpha]", "k"], SuperscriptBox["\[Alpha]", RowBox[{"-", "1"}]]}], "=", RowBox[{ RowBox[{"\[Alpha]", " ", SuperscriptBox["\[Alpha]", RowBox[{"-", "1"}]]}], "=", RowBox[{"1", " ", "mod", " ", "n"}]}]}]}]}], TraditionalForm]], ExpressionUUID->"e1fe18df-ffff-4ae7-8a21-22829be97474"], " \n\nQED\n\n\n", StyleBox["Definition 2. ", FontWeight->"Bold"], "Let n some positive integer and \[Alpha] \[Element] ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "n", "\[Cross]"], TraditionalForm]],ExpressionUUID->"3766938d-a4fd-44c0-8afc-04df1d00a265"], ", then the order of \[Alpha], denoted by m=ord(\[Alpha]) is the smallest \ positive integer such that ", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Alpha]", "m"], "=", RowBox[{"1", " ", "mod", " ", RowBox[{"n", "."}]}]}], TraditionalForm]],ExpressionUUID-> "a3b689fd-2ba4-4376-b46b-2dfef0a967a6"], " If ord(\[Alpha])=\[Phi](n)=|", Cell[BoxData[ FormBox[ RowBox[{ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "n", "\[Cross]"], "|"}], TraditionalForm]],ExpressionUUID->"666a87fd-c08e-42ab-93bd-2027889f3a3e"], " then \[Alpha] is called a ", StyleBox["generator", FontSlant->"Italic"], " and ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "n", "\[Cross]"], TraditionalForm]],ExpressionUUID->"06944f3d-39ff-4679-a4ef-e21fb3bafe76"], " is said to be ", StyleBox["cyclic", FontSlant->"Italic"], ".\n\nThere are integers such that ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "n", "\[Cross]"], TraditionalForm]],ExpressionUUID->"d4f60b5d-c01c-4f94-8962-f38efc350713"], " is not cyclic. Indeed, ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "n", "\[Cross]"], TraditionalForm]],ExpressionUUID->"e03feb98-be60-45b2-a850-2db2d34c2e16"], " is cyclic iff n is 1, 2, 4, a power of an odd prime, or twice a power of \ an odd prime (but we leave this result for later on when we are more on to \ it)!\n" }], "Text", CellChangeTimes->CompressedData[" 1:eJwdy2kog3EAx/FnLO2doyRLIZOVpaR5sS2mSJHMpI2ekGOrJVebo4mFIldi hFeOKEtTvELJEe3I46jJtRVKWJM82Xjh+P/24tenfvVNrGlS1odQFJVABh3V jEht8+ZYhjbToK6tQgwld+JcKMgLqKBKEUnD1HR/LVylz7Tw/JPpgAeFyWNQ ybfOwkVhnw3KPqNPIP2ydAGnmflLOGHwXMOBZcE9ZONHWFjQ3cUpJzK5NBeO V4jz4HNAmA/njOcKuFVV1Q5T/OEDUHO6PQU90v7sBSLvpVQOf2OK6v3EJ9lk UK4qVfNHdNwcNkKm7KkVNvgEekhzjzvhRk+cCV75fIPQzuEMw0xXnRm+3xZZ YIe70gqVVuEGrHZ97UJLyfQRfDManFAn/X2F8ZpDFprW9N/BX07/wJXNDIqy kz7pOxQOmiK4sDhsvK+FODO1fgD3yiV2+HGqdsLerT0XrEvUsrA5yxuA8zxz bCtx/8EYoSeKVr1RcJTvfjQQzTsfQf8BhJwo0A== "],ExpressionUUID->"57574ff6-544d-40f3-99a2-16c114770af2"], Cell[BoxData[{ RowBox[{ RowBox[{ RowBox[{"z", "[", "n_", "]"}], ":=", RowBox[{"Table", "[", RowBox[{"i", ",", RowBox[{"{", RowBox[{"i", ",", "0", ",", RowBox[{"n", "-", "1"}]}], "}"}]}], "]"}]}], ";"}], "\n", RowBox[{ RowBox[{ RowBox[{"zt", "[", "n_", "]"}], ":=", RowBox[{"Select", "[", RowBox[{ RowBox[{"z", "[", "n", "]"}], ",", RowBox[{"Function", "[", RowBox[{"x", ",", RowBox[{ RowBox[{"GCD", "[", RowBox[{"x", ",", "n"}], "]"}], "\[Equal]", "1"}]}], "]"}]}], "]"}]}], ";"}]}], "Input", CellChangeTimes->{{3.728918567621314*^9, 3.7289187352296457`*^9}},ExpressionUUID->"d36a22d6-4bcc-49af-a16b-\ 152c2e7a9fb4"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"p9mod19", "=", RowBox[{"Table", "[", RowBox[{ RowBox[{"PowerMod", "[", RowBox[{"2", ",", "i", ",", "19"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", RowBox[{"zt", "[", "19", "]"}], "]"}]}], "}"}]}], "]"}]}]], "Input", CellChangeTimes->{{3.728918740904517*^9, 3.728918772310944*^9}, { 3.728918932468609*^9, 3.728918940032317*^9}, {3.729259634813621*^9, 3.729259635518983*^9}, {3.7292606163295307`*^9, 3.729260676198196*^9}},ExpressionUUID->"217a1081-f2c2-42ec-a9c3-\ e053900b3113"], Cell[BoxData[ RowBox[{"{", RowBox[{ "2", ",", "4", ",", "8", ",", "16", ",", "13", ",", "7", ",", "14", ",", "9", ",", "18", ",", "17", ",", "15", ",", "11", ",", "3", ",", "6", ",", "12", ",", "5", ",", "10", ",", "1"}], "}"}]], "Output", CellChangeTimes->{{3.7289187523980217`*^9, 3.728918772589349*^9}, { 3.728918929380014*^9, 3.728918941821479*^9}, 3.729259535166211*^9, 3.7292596359939327`*^9, {3.729260600200398*^9, 3.7292606765401707`*^9}},ExpressionUUID->"3712df1c-e2ba-4957-8629-\ 711661faa9f6"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Sort", "[", RowBox[{"Union", "[", "p9mod19", "]"}], "]"}]], "Input", CellChangeTimes->{{3.729260641640646*^9, 3.729260661405278*^9}},ExpressionUUID->"5011b2c5-f2a6-4e14-960d-\ 3074c587f054"], Cell[BoxData[ RowBox[{"{", RowBox[{ "1", ",", "2", ",", "3", ",", "4", ",", "5", ",", "6", ",", "7", ",", "8", ",", "9", ",", "10", ",", "11", ",", "12", ",", "13", ",", "14", ",", "15", ",", "16", ",", "17", ",", "18"}], "}"}]], "Output", CellChangeTimes->{{3.729260647265087*^9, 3.729260677532518*^9}},ExpressionUUID->"8f83bae3-9b17-4b72-a55b-\ 46f76a4f90ed"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Position", "[", RowBox[{"p9mod19", ",", "1"}], "]"}]], "Input", CellChangeTimes->{{3.728918911435005*^9, 3.728918950926499*^9}},ExpressionUUID->"c3c1f02c-b71b-42fe-84e0-\ e78ac1bdcd1b"], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", "18", "}"}], ",", RowBox[{"{", "36", "}"}], ",", RowBox[{"{", "54", "}"}]}], "}"}]], "Output", CellChangeTimes->{ 3.7289189512569017`*^9, {3.7292606059185867`*^9, 3.7292606210135098`*^9}},ExpressionUUID->"5e638b70-d1d5-4e03-b0e9-\ 2f72457ea092"] }, Open ]], Cell[BoxData[ RowBox[{ RowBox[{"order", "[", RowBox[{"x_", ",", "n_"}], "]"}], ":=", RowBox[{ RowBox[{"Position", "[", RowBox[{ RowBox[{"Table", "[", RowBox[{ RowBox[{"PowerMod", "[", RowBox[{"x", ",", "i", ",", "n"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", RowBox[{"zt", "[", "n", "]"}], "]"}]}], "}"}]}], "]"}], ",", "1"}], "]"}], "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}]}]], "Input", CellChangeTimes->{{3.728918567621314*^9, 3.7289187352296457`*^9}, { 3.728918970398365*^9, 3.728919005514885*^9}, 3.728919491539497*^9},ExpressionUUID->"549e0b66-3611-4d2f-b14c-\ 9683a52a6e4c"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"order", "[", RowBox[{"9", ",", "19"}], "]"}]], "Input", CellChangeTimes->{{3.728918979855962*^9, 3.7289189854511337`*^9}},ExpressionUUID->"c8f26394-6adf-44e5-9128-\ 1fe911084577"], Cell[BoxData["9"], "Output", CellChangeTimes->{{3.7289189857414103`*^9, 3.728919006710528*^9}, 3.729260891130508*^9},ExpressionUUID->"421598e5-da53-4c1e-b055-\ e2468e00dfc3"] }, Open ]], Cell[TextData[{ "The number 3 is a generator of ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "p", "\[Cross]"], TraditionalForm]],ExpressionUUID->"630ad4af-663f-48d1-a4da-db6da76f1527"] }], "Text", CellChangeTimes->{{3.7289191080859213`*^9, 3.728919125666995*^9}, { 3.728919457825288*^9, 3.7289194597266197`*^9}},ExpressionUUID->"61695952-2c47-4bd8-8d53-\ e27e17f62638"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"order", "[", RowBox[{"3", ",", "19"}], "]"}]], "Input", CellChangeTimes->{{3.7289190141884117`*^9, 3.728919019920568*^9}},ExpressionUUID->"c058e25f-1347-4e1b-9a8e-\ ba03cf593393"], Cell[BoxData["18"], "Output", CellChangeTimes->{{3.728919016078466*^9, 3.728919020496313*^9}, 3.729260894886373*^9},ExpressionUUID->"3635584e-d683-480a-a962-\ 8530d37d0206"] }, Open ]], Cell[TextData[{ "So, if p is prime, ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "p", "\[Cross]"], TraditionalForm]],ExpressionUUID->"47cc78d2-a1d1-4f88-a556-53f4bd765dc6"], " is cyclic and has a generator \[Alpha]. Moreover, we will see that f:", Cell[BoxData[ FormBox[ SubscriptBox["\[DoubleStruckCapitalZ]", RowBox[{"p", "-", "1"}]], TraditionalForm]],ExpressionUUID-> "6e79fb0f-31e8-4da3-8325-864c9558dfe9"], "\[RightArrow]", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "p", "\[Cross]"], TraditionalForm]],ExpressionUUID->"50f4c84c-74e9-4346-b8d2-2cde7d19cb9a"], " where f(x)=", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Alpha]", RowBox[{"\[AliasDelimiter]", "\[AliasDelimiter]"}]], " ", "mod", " ", "p", " "}], TraditionalForm]],ExpressionUUID-> "776f058d-74cd-442a-be73-f1e6a70efc1a"], "can be computed efficiently, but at the moment (March 2018), it is not know \ how to compute its inverse efficiently (at least for all p and using \ classical computers). These facts are used to understand DH key agreement \ protocol.\n" }], "Text", CellChangeTimes->{{3.7289194712345037`*^9, 3.728919478316113*^9}, { 3.72906660281181*^9, 3.7290667348777237`*^9}, {3.729066796321311*^9, 3.729066968591735*^9}, {3.729067070727214*^9, 3.729067112108858*^9}, { 3.729067165807662*^9, 3.7290671674447193`*^9}, 3.72906739032512*^9, { 3.729241362497745*^9, 3.729241402513736*^9}, {3.729261217725987*^9, 3.7292612299889307`*^9}, {3.7292612602051477`*^9, 3.729261286160818*^9}, { 3.729261333962935*^9, 3.7292613557280483`*^9}, {3.729494251293779*^9, 3.729494251869678*^9}, {3.79221994700709*^9, 3.792219947007205*^9}, { 3.792220012988418*^9, 3.792220012988564*^9}},ExpressionUUID->"1df600b2-84be-4240-9bd5-\ f118d4b5c925"], Cell[TextData[{ "Setup: Alice and Bob agree in some prime p and a generator \[Alpha] \n1) \ Alice generates random x and sends ", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Alpha]", "x"], " ", "mod", " ", "p", " "}], TraditionalForm]],ExpressionUUID->"ab8cfe6e-a0a5-4c3f-a834-bb2845c88d50"], " to Bob\n2) Bob generates random y and sends ", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Alpha]", "y"], " ", "mod", " ", "p", " "}], TraditionalForm]],ExpressionUUID->"7090f4dd-69e2-43d3-8c38-5b2efcc79aa3"], " to Alice\n3) Alice computes the symmetric (session) key\n ", Cell[BoxData[ FormBox[ RowBox[{"k", "=", RowBox[{ SuperscriptBox[ RowBox[{"(", SuperscriptBox["\[Alpha]", "y"], ")"}], "x"], " ", "mod", " ", "p", " "}]}], TraditionalForm]],ExpressionUUID-> "523cd910-7245-4cb5-9c78-0623884aeba5"], " and Bob computes ", Cell[BoxData[ FormBox[ RowBox[{"k", "=", RowBox[{ SuperscriptBox[ RowBox[{"(", SuperscriptBox["\[Alpha]", "x"], ")"}], "y"], " ", "mod", " ", RowBox[{"p", ".", " "}]}]}], TraditionalForm]],ExpressionUUID-> "cfda3fb0-eec8-4106-b205-19f63b33ee26"], "\n4) From this point they communicate using some symmetric cryptosystem \ with key k" }], "Program", CellChangeTimes->{{3.728917636254856*^9, 3.72891769990173*^9}, { 3.728919531825405*^9, 3.728919581785915*^9}, {3.729066974047117*^9, 3.7290670588558683`*^9}, {3.729067134919446*^9, 3.729067159531303*^9}, { 3.729067266441452*^9, 3.729067290553639*^9}, {3.729067506369446*^9, 3.729067512486403*^9}, {3.729261376237711*^9, 3.729261379464965*^9}},ExpressionUUID->"9631f0d2-7a3d-4062-ae86-\ 6877d3d7aa79"], Cell[TextData[{ "An Eavesdropper (Eve) observes only", Cell[BoxData[ FormBox[ RowBox[{" ", SuperscriptBox["\[Alpha]", "x"]}], TraditionalForm]],ExpressionUUID-> "652ff4a6-2341-4612-a028-5bbd86da6329"], "and ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", "y"], TraditionalForm]],ExpressionUUID-> "f61db864-c17a-42c5-9766-a9f899a5df77"], " and so, she cannot obtain (efficiently) x or y and will not be able to \ infer the key k!\n\nIn this lecture we will define what efficiently means." }], "Text", CellChangeTimes->{{3.7290671768273363`*^9, 3.72906726201608*^9}, { 3.729067295843832*^9, 3.729067425183876*^9}, {3.7290675283328238`*^9, 3.729067617913514*^9}},ExpressionUUID->"493413e1-57bf-4ba2-95fe-\ 9377cf2ea2eb"] }, Open ]], Cell[CellGroupData[{ Cell["One-way functions", "Section", CellChangeTimes->{{3.728062293677641*^9, 3.728062304019003*^9}, { 3.728193259258326*^9, 3.728193262544937*^9}, {3.728289540604205*^9, 3.7282895716818933`*^9}, {3.728916766705125*^9, 3.7289167807460003`*^9}, { 3.729067604516163*^9, 3.729067609554571*^9}, {3.7290700788747683`*^9, 3.729070081558054*^9}, 3.729070114704534*^9},ExpressionUUID->"bee889d5-05b5-48d5-a8d9-\ 9ea26d19d8fe"], Cell[TextData[{ "Informally, a (total) function ", Cell[BoxData[ FormBox[ RowBox[{"f", ":", RowBox[{ SuperscriptBox["\[DoubleStruckCapitalN]", "k"], "\[RightArrow]", "\[DoubleStruckCapitalN]"}]}], TraditionalForm]],ExpressionUUID-> "f4eb46b3-a0a1-4e78-b563-f0f0ae9bd225"], " is said to be computable if there is algorithm (that is, a procedure that \ always terminates) A that upon input ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"(", RowBox[{ SubscriptBox["x", "1"], ",", "...", ",", SubscriptBox["x", "k"]}], ")"}], " "}], TraditionalForm]], ExpressionUUID->"761a0bcb-7668-4402-b7ba-d14f60bd9d7e"], "outputs ", Cell[BoxData[ FormBox[ RowBox[{"f", "(", RowBox[{ SubscriptBox["x", "1"], ",", "...", ",", SubscriptBox["x", "k"]}], ")"}], TraditionalForm]],ExpressionUUID-> "599c36d1-d787-4dca-8a8e-d695c240331e"], ". The time of an algorithm for input ", Cell[BoxData[ FormBox[ RowBox[{"(", RowBox[{ SubscriptBox["x", "1"], ",", "...", ",", SubscriptBox["x", "k"]}], ")"}], TraditionalForm]],ExpressionUUID-> "8cbd7076-5bff-4d9d-beab-651d7b2d3e35"], " is the number of steps that the algorithm takes to produce the output.\n\n\ We represent the ", StyleBox["Time", FontWeight->"Bold"], " of an algorithm as a function of the input size \[Eta]=", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubsuperscriptBox["\[Sum]", RowBox[{"i", "=", "1"}], "k"], RowBox[{"|", SubscriptBox["x", "i"], "|", " ", "where", " ", "|", SubscriptBox["x", "i"], "|"}]}], " ", "=", RowBox[{"\[LeftCeiling]", RowBox[{ SubscriptBox["log", "2"], "(", RowBox[{ SubscriptBox["x", "i"], "+", "1"}], ")"}]}]}], TraditionalForm]], ExpressionUUID->"40dc38b3-ccd7-41f6-acca-be4367515527"], "\[RightCeiling] (the number of bits required to write ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["x", "i"], ">", "0"}], TraditionalForm]],ExpressionUUID-> "18dee923-a768-4933-b79e-def3c1d489af"], ") and use asymptotic O() notation.\n\n", StyleBox["Definition 3.", FontWeight->"Bold"], " A function f(\[Eta])\[Element]O(g(\[Eta])) if ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["\[Exists]", RowBox[{"k", ">", "0"}]], RowBox[{ SubscriptBox["\[Exists]", RowBox[{ SubscriptBox["\[Eta]", "0"], ">", "0"}]], SubscriptBox["\[ForAll]", RowBox[{"\[Eta]", ">", SubscriptBox["\[Eta]", "0"]}]]}]}], " ", "|", RowBox[{"f", "(", "\[Eta]", ")"}], "|", RowBox[{"<", "k"}], "|", RowBox[{"g", "(", "\[Eta]", ")"}], "|"}], TraditionalForm]], ExpressionUUID->"fc9ee4f9-42e7-45d1-a7a2-0a0c02eea7ad"] }], "Text", CellChangeTimes->{{3.729067634872473*^9, 3.729068279277485*^9}, { 3.7290687347101803`*^9, 3.7290687769477177`*^9}, 3.729069241611623*^9, { 3.7292408825926437`*^9, 3.729240882721012*^9}, {3.7295035775299997`*^9, 3.7295035918278418`*^9}, {3.729503663307489*^9, 3.7295036639354897`*^9}},ExpressionUUID->"6599e2b1-51ab-4a99-9df5-\ 1e9a02c9c4d7"], Cell[TextData[{ StyleBox["Exercise 4.", FontWeight->"Bold"], " Show that f(\[Eta])\[Element]O(g(\[Eta])) iff ", Cell[BoxData[ FormBox[ RowBox[{"lim", " ", SubscriptBox["sup", RowBox[{"n", "\[RightArrow]", "\[Infinity]"}]]}], TraditionalForm]], ExpressionUUID->"a5242ef1-5b79-472c-8818-eee5585c3c8b"], " ", Cell[BoxData[ FormBox[ RowBox[{ FractionBox[ RowBox[{"|", RowBox[{"f", "(", "\[Eta]", ")"}], "|"}], RowBox[{"|", RowBox[{"g", "(", "\[Eta]", ")"}], "|"}]], "<", "\[Infinity]"}], TraditionalForm]],ExpressionUUID->"29291812-2191-444c-a6a3-c94ad10d3389"], ".\n", StyleBox["Proof:\n\n", FontWeight->"Bold"], "Recall that:", StyleBox[" ", FontWeight->"Bold"], Cell[BoxData[ FormBox[ RowBox[{"lim", " ", SubscriptBox["sup", RowBox[{"n", "\[RightArrow]", "\[Infinity]"}]]}], TraditionalForm]], ExpressionUUID->"52df25b5-6e72-4285-85f2-c74f845ead05"], StyleBox[" ", FontWeight->"Bold"], Cell[BoxData[ FormBox[ FractionBox[ RowBox[{"|", RowBox[{"f", "(", "n", ")"}], "|"}], RowBox[{"|", RowBox[{"g", "(", "n", ")"}], "|"}]], TraditionalForm]],ExpressionUUID-> "8b371a57-b4e8-4bec-b9d1-10288a479c27"], "=", Cell[BoxData[ FormBox[ SubscriptBox["lim", RowBox[{"n", "\[RightArrow]", "\[Infinity]"}]], TraditionalForm]], ExpressionUUID->"03c1c7d8-6c6b-4f4f-8232-74ca4307d0d3"], "(", Cell[BoxData[ FormBox[ SubscriptBox["sup", RowBox[{"m", ">", "n"}]], TraditionalForm]],ExpressionUUID-> "6a72ec71-b6f5-4c63-bca3-83c79f1f3962"], "{", Cell[BoxData[ FormBox[ FractionBox[ RowBox[{"|", RowBox[{"f", "(", "m", ")"}], "|"}], RowBox[{"|", RowBox[{"g", "(", "m", ")"}], "|"}]], TraditionalForm]],ExpressionUUID-> "9c8cf440-f4c9-4294-9125-61eeee2bbb87"], "})\n\[DoubleLeftArrow] Assume ", Cell[BoxData[ FormBox[ SubscriptBox["lim", RowBox[{"n", "\[RightArrow]", "\[Infinity]"}]], TraditionalForm]], ExpressionUUID->"3fe85d40-f949-4cb9-aa2f-77a147dcebc3"], "(", Cell[BoxData[ FormBox[ SubscriptBox["sup", RowBox[{"m", ">", "n"}]], TraditionalForm]],ExpressionUUID-> "37bb7a95-a996-4219-9a06-1703a0086f22"], "{", Cell[BoxData[ FormBox[ FractionBox[ RowBox[{"|", RowBox[{"f", "(", "m", ")"}], "|"}], RowBox[{"|", RowBox[{"g", "(", "m", ")"}], "|"}]], TraditionalForm]],ExpressionUUID-> "ca2defa5-13f6-4d40-a8b7-5665eebb9756"], "})=c <\[Infinity] (with c non-negative) by definition of limit it means \ that for any \n\[CurlyEpsilon]>0 there exists an ", Cell[BoxData[ FormBox[ SubscriptBox["n", "0"], TraditionalForm]],ExpressionUUID-> "e0869c56-4b94-4cd5-9da1-7a168bdbdd8c"], " such that for all ", Cell[BoxData[ FormBox[ RowBox[{"m", ">", SubscriptBox["n", "0"]}], TraditionalForm]],ExpressionUUID-> "7e8624a2-d5ec-4749-b057-5d4e9c52348e"], " ", Cell[BoxData[ FormBox[ FractionBox[ RowBox[{"|", RowBox[{"f", "(", "m", ")"}], "|"}], RowBox[{"|", RowBox[{"g", "(", "m", ")"}], "|"}]], TraditionalForm]],ExpressionUUID-> "0385631a-1f65-4d90-abe3-810c8f06a3ed"], ""Bold"], ">0. There exists a k>0 (we have just chosen k=c+\[CurlyEpsilon]) ", Cell[BoxData[ RowBox[{ RowBox[{ SubscriptBox["\[Exists]", RowBox[{ SubscriptBox["\[Eta]", "0"], ">", "0"}]], SubscriptBox["\[ForAll]", RowBox[{"\[Eta]", ">", SubscriptBox["\[Eta]", "0"]}]]}], " ", "|", RowBox[{"f", "(", "\[Eta]", ")"}], "|", RowBox[{"<", RowBox[{"(", RowBox[{"c", "+", "\[CurlyEpsilon]"}], ")"}]}], "|", RowBox[{"g", RowBox[{"(", "\[Eta]", ")"}]}], "|"}]],ExpressionUUID-> "5aea2684-eb9c-4226-8fa8-8fb0a9d4fdf4"], " \n\nchoose ", Cell[BoxData[ RowBox[{ SubscriptBox["\[Eta]", "0"], "=", SubscriptBox["k", "0"]}]],ExpressionUUID-> "7212a190-2613-4474-9495-9eea4015f70b"], " and so f(\[Eta])\[Element]O(g(\[Eta]))\n\[DoubleRightArrow] ", Cell[BoxData[ RowBox[{"Assume", " "}]],ExpressionUUID-> "981eb5b2-4423-4f2a-972c-6716a754c83d"], Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["\[Exists]", RowBox[{"k", ">", "0"}]], RowBox[{ SubscriptBox["\[Exists]", RowBox[{ SubscriptBox["\[Eta]", "0"], ">", "0"}]], SubscriptBox["\[ForAll]", RowBox[{"\[Eta]", ">", SubscriptBox["\[Eta]", "0"]}]]}]}], " ", "|", RowBox[{"f", "(", "\[Eta]", ")"}], "|", RowBox[{"<", "k"}], "|", RowBox[{"g", "(", "\[Eta]", ")"}], "|"}], TraditionalForm]], ExpressionUUID->"21e39d0a-da88-40ff-a1c6-3ea4634be328"], "\n\nthis means that ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["sup", RowBox[{"m", ">", SubscriptBox["n", "0"]}]], " ", RowBox[{"{", FractionBox[ RowBox[{"|", RowBox[{"f", "(", "m", ")"}], "|"}], RowBox[{"|", RowBox[{"g", "(", "m", ")"}], "|"}]], "}"}]}], "<", "k"}], TraditionalForm]],ExpressionUUID->"4162e33d-a273-4250-a229-2cf853b91df8"], " but ", Cell[BoxData[ FormBox[ SubscriptBox["lim", RowBox[{"n", "\[RightArrow]", "\[Infinity]"}]], TraditionalForm]], ExpressionUUID->"d3504dbd-bfb2-483a-aa6a-153bcfd5e511"], "(", Cell[BoxData[ FormBox[ SubscriptBox["sup", RowBox[{"m", ">", "n"}]], TraditionalForm]],ExpressionUUID-> "5062bd50-55ee-4ef8-b679-995e03eeda22"], "{", Cell[BoxData[ FormBox[ FractionBox[ RowBox[{"|", RowBox[{"f", "(", "m", ")"}], "|"}], RowBox[{"|", RowBox[{"g", "(", "m", ")"}], "|"}]], TraditionalForm]],ExpressionUUID-> "3ce3f89c-680c-40c4-8aff-2d53c3a04df3"], "})\[LessEqual] ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["sup", RowBox[{"m", ">", SubscriptBox["n", "0"]}]], " ", RowBox[{"{", FractionBox[ RowBox[{"|", RowBox[{"f", "(", "m", ")"}], "|"}], RowBox[{"|", RowBox[{"g", "(", "m", ")"}], "|"}]], "}"}]}], TraditionalForm]], ExpressionUUID->"ce804baf-0314-433b-a3b7-d93d1095857f"], ""Bold"], " if ", Cell[BoxData[ FormBox[ SubscriptBox["lim", RowBox[{"n", "\[RightArrow]", "\[Infinity]"}]], TraditionalForm]], ExpressionUUID->"68ea9e3e-e66c-4984-aeee-c98bd09c02c1"], " ", Cell[BoxData[ FormBox[ RowBox[{ FractionBox[ RowBox[{"|", RowBox[{"f", "(", "n", ")"}], "|"}], RowBox[{"|", RowBox[{"g", "(", "n", ")"}], "|"}]], "<", "\[Infinity]"}], TraditionalForm]],ExpressionUUID->"3034a2c4-8ece-4e2c-8916-973ddb83e248"], " then f(\[Eta])\[Element]O(g(\[Eta]))\n\nIn this course, contrary to what \ it is common in algorithmic complexity, the time-cost of the arithmetic \ operations and predicates over integers is not constant (since we will \ require arbitrary large integers and not just 64bits integers).\n\n\n\nThus, \ assuming x,y\[Element]O(\[Eta]), the cost of arithmetic operations and \ predicates is the following: \n\nf(x,y)\[RightTeeArrow]x\[PlusMinus]y \ \[Element] O(\[Eta]) \nf(x,y)\[RightTeeArrow]x\[Cross]y \[Element] O(", Cell[BoxData[ FormBox[ SuperscriptBox["\[Eta]", "2"], TraditionalForm]],ExpressionUUID-> "94f06230-6b0f-49a1-92b1-318e1e6d1c7d"], ") (although this can be made more efficient with Discrete Fourier \ Transformation) \nf(x,y)\[RightTeeArrow]x\[Divide]y \[Element] O(", Cell[BoxData[ FormBox[ SuperscriptBox["\[Eta]", "2"], TraditionalForm]],ExpressionUUID-> "0474ef1a-7e00-466d-808b-4a2e9a8676c1"], ") this is integer division\nf(x,y)\[RightTeeArrow]x mod y \[Element]O(", Cell[BoxData[ FormBox[ SuperscriptBox["\[Eta]", "2"], TraditionalForm]],ExpressionUUID-> "e0c41282-7838-410c-8884-b97b9ed0aec4"], ")\np(x,y)\[RightTeeArrow]x<=y \[Element] O(\[Eta]) (actually, it is \ O(min(|x|,|y|), and this might be relevant in some cases) \n\nBoolean \ operations, such has conjunction, disjunction and negation are still O(1) \ since Booleans are encoded as 2={0,1} with constant size.\n\n", StyleBox["Definition 5. ", FontWeight->"Bold"], "A function ", Cell[BoxData[ FormBox[ RowBox[{"f", ":", RowBox[{ SuperscriptBox["\[DoubleStruckCapitalN]", "k"], "\[RightArrow]", "\[DoubleStruckCapitalN]"}]}], TraditionalForm]],ExpressionUUID-> "215b18b7-5ab0-44a9-a3fa-e664c2b04089"], " is said to be computed polynomial time iff there exists an algorithm A and \ a polynomial p such that\n1) A computes f;\n2) ", Cell[BoxData[ FormBox[ RowBox[{ StyleBox["Time", FontWeight->"Bold"], "(", RowBox[{"A", "(", RowBox[{ SubscriptBox["x", "1"], ",", "...", ",", SubscriptBox["x", "k"]}]}]}], TraditionalForm]],ExpressionUUID-> "74fe4674-700a-41d1-a2b4-e9d62b816913"], ")) \[Element] O(p(\[Eta])).\n\n", StyleBox["Exercise 6.", FontWeight->"Bold"], " Show that if p(\[Eta]) is a positive polynomial of degree k then p(\[Eta]) \ \[Element] ", Cell[BoxData[ FormBox[ RowBox[{"O", "(", SuperscriptBox["\[Eta]", "k"]}], TraditionalForm]],ExpressionUUID-> "4a395838-f55f-4a55-8448-2c5e6aa4a762"], "\.1d).\n\n", StyleBox["Proof: ", FontWeight->"Bold"], Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"p", "(", "\[Eta]", ")"}], "=", RowBox[{ RowBox[{ RowBox[{ RowBox[{ SubscriptBox["a", "k"], SuperscriptBox["\[Eta]", "k"]}], "+", RowBox[{ SubscriptBox["a", RowBox[{"k", "-", "1"}]], SuperscriptBox["\[Eta]", RowBox[{"k", "-", "1"}]]}], "+"}], "..."}], "+", SubscriptBox["a", "0"]}]}], TraditionalForm]],ExpressionUUID-> "5b8b9498-64ad-42cf-97e6-9cf1148e4b46"], " and so ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["lim", RowBox[{"n", "\[Rule]", "\[Infinity]"}]], FractionBox[ RowBox[{"p", "(", "\[Eta]", ")"}], SuperscriptBox["\[Eta]", "k"]]}], "=", RowBox[{ SubscriptBox["a", "k"], "<", RowBox[{ "\[Infinity]", " ", "and", " ", "so", " ", "by", " ", "the", " ", "previous", " ", "exercise"}]}]}], TraditionalForm]],ExpressionUUID-> "9477d03f-36a6-47c9-b304-b8ad18fb3666"], " p(\[Eta]) \[Element] ", Cell[BoxData[ FormBox[ RowBox[{"O", "(", SuperscriptBox["\[Eta]", "k"]}], TraditionalForm]],ExpressionUUID-> "66de3dff-86f1-4a1a-b00a-18bbd0ef4489"], "\.1d).\n\nWe say that a function can be computed efficiently if it can be \ computed in polynomial time (although this must be taken with a pitch of \ salt, as there are quite inefficient polynomials, actually anything beyond \ cubic, or so, is quite inefficient!).\n\n", StyleBox["Theorem", FontWeight->"Bold"], "[Cantor late XIX century]", StyleBox[".", FontWeight->"Bold"], " \nShow that there is an efficient bijection between ", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[DoubleStruckCapitalN]", "k"], "and", " ", "\[DoubleStruckCapitalN]"}], TraditionalForm]],ExpressionUUID-> "055e91cd-102a-47f1-8e06-f3ab87c0efbe"], " for all k.\n\n", StyleBox["Proof:", FontWeight->"Bold"], " [key idea] \n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"C", RowBox[{"(", RowBox[{"x", ",", "y"}], ")"}]}], "=", FractionBox[ RowBox[{ RowBox[{"(", RowBox[{"x", "+", "y", "+", "1"}], ")"}], RowBox[{"(", RowBox[{"x", "+", "y"}], ")"}]}], "2"]}], TraditionalForm]], ExpressionUUID->"444e85d7-f7da-47b6-a2f3-807e18aaa7c5"], "+y (try to find the left and right inverse and implement it in \ Mathematica). Note that, if there is a right and left inverse for C(x,y), \ then C(x,y) has to be bijective.\n\nThanks to the above exercise, we can drop \ (or place) the k from the power of \[DoubleStruckCapitalN] whenever we want \ to. Recall that computers can only compute over the natural numbers, or \ equivalently, over (discrete) structures that can be encoded with natural \ numbers. Whenever it is convenient, instead maps over the set of natural \ numbers we use maps over the set of ", StyleBox["strings", FontWeight->"Bold"], ", that is the set ", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox[ RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}], "*"], ",", " "}], TraditionalForm]], ExpressionUUID->"13116bda-8f26-4173-ab43-beca5077eee9"], "or any other discrete set, such as the set of all ", StyleBox["finite graphs ", FontWeight->"Bold"], "\[ScriptCapitalG].\n\n", StyleBox["Definition 8", FontWeight->"Bold"], ". A function ", Cell[BoxData[ FormBox[ RowBox[{"f", ":", RowBox[{ "\[DoubleStruckCapitalN]", "\[RightArrow]", "\[DoubleStruckCapitalN]"}]}], TraditionalForm]],ExpressionUUID-> "429f6019-2438-4d73-8ead-1cb940c2d66b"], " is said to be ", StyleBox["one-way ", FontSlant->"Italic"], "if:\n1) it is injective;\n2) computed in polynomial time;\n3) its inverse \ is not computed in polynomial time;\n4) honest, that is ", Cell[BoxData[ FormBox[ RowBox[{"|", RowBox[{"f", "(", "x", ")"}], "|", RowBox[{"\[Element]", RowBox[{"O", "(", RowBox[{"|", "x", SuperscriptBox["|", "k"]}], ")"}]}]}], TraditionalForm]], ExpressionUUID->"809c192c-84af-4908-9d87-6fb6689dec3e"], " and ", Cell[BoxData[ FormBox[ RowBox[{"|", "x", "|", RowBox[{"\[Element]", RowBox[{"O", "(", RowBox[{"|", RowBox[{"f", "(", "x", ")"}], SuperscriptBox["|", RowBox[{"k", "'"}]]}], ")"}], " "}]}], TraditionalForm]], ExpressionUUID->"d7de1403-629a-4ef6-96d7-9654ce31b012"], "for some constants k, and k\[CloseCurlyQuote]\n\nWe can relax a bit the \ notion one-way function in order and consider a family of functions \n", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["f", "\[Theta]"], ":", " "}], TraditionalForm]], ExpressionUUID->"907ecded-dd5c-4377-ab6f-cf7b3d38b3ba"], Cell[BoxData[ FormBox[ SubscriptBox["D", "\[Theta]"], TraditionalForm]],ExpressionUUID-> "fe4bcedb-9d9d-46a4-8dec-428819e43e3f"], "\[RightArrow]\[DoubleStruckCapitalN], where \[Eta]=|\[Theta]| is called the \ security parameter, the time-complexity for 2) and 3) is measured against \ \[Eta], and moreover, all elements of ", Cell[BoxData[ FormBox[ SubscriptBox["D", "\[Theta]"], TraditionalForm]],ExpressionUUID-> "cc4715df-2969-44f1-b502-1196988fe842"], " have size polynomially-bounded on \[Eta].\n\n", StyleBox["Exercise 9.", FontWeight->"Bold"], " Give the rigorous definition of one-way function for family of functions.\n\ \nA family of functions ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"{", RowBox[{ SubscriptBox["f", "\[Theta]"], ":", " ", RowBox[{ SubscriptBox["D", "\[Theta]"], "\[RightArrow]", "\[DoubleStruckCapitalN]"}]}], "}"}], ","}], TraditionalForm]], ExpressionUUID->"4f4fd75a-b6f2-4ffb-bcbf-3b5b33dca170"], " is said to be ", StyleBox["one-way ", FontSlant->"Italic"], "if:\n0) x\[Element] ", Cell[BoxData[ FormBox[ SubscriptBox["D", "\[Theta]"], TraditionalForm]],ExpressionUUID-> "46fd67a0-b914-477e-9559-606b76e22af5"], " then |x|\[Element]O(p(\[Eta])), exists p for all \[Theta] (for all n, \ there exists |\[Theta]|>n)\n where ", StyleBox["\[Eta]=|\[Theta]| is called the security parameter", FontSlant->"Italic"], "\n1) ", Cell[BoxData[ SubscriptBox["f", "\[Theta]"]],ExpressionUUID-> "bf634086-8a3c-4e75-836a-2e30e955f6d3"], " is injective;\n2) ", Cell[BoxData[ SubscriptBox["f", "\[Theta]"]],ExpressionUUID-> "21687569-7b60-43dc-b24e-71b30de26a6c"], " computed in polynomial time on \[Eta];\n3) its inverse is not computed in \ polynomial time;\n4) honest, that is ", Cell[BoxData[ FormBox[ RowBox[{"|", RowBox[{"f", "(", "x", ")"}], "|", RowBox[{"\[Element]", RowBox[{"O", "(", RowBox[{"|", "x", SuperscriptBox["|", "k"]}], ")"}]}]}], TraditionalForm]], ExpressionUUID->"0b6872a4-e5c6-45bf-8d1c-8686693aaada"], " and ", Cell[BoxData[ FormBox[ RowBox[{"|", "x", "|", RowBox[{"\[Element]", RowBox[{"O", "(", RowBox[{"|", RowBox[{"f", "(", "x", ")"}], SuperscriptBox["|", RowBox[{"k", "'"}]]}], ")"}], " "}]}], TraditionalForm]], ExpressionUUID->"ac482f61-7bbb-4c51-b0cb-d403da9f215f"], "for some constants k, and k\[CloseCurlyQuote] for all \[Theta]\n\n", StyleBox["Example ", FontWeight->"Bold"], "DH example (candidate) nobody knows if the inverse can be computed in \ polynomial time or not\n\n\[Theta]=(\[Alpha],p) where p is prime and \[Alpha] \ is a generator of ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "p", "\[Cross]"], TraditionalForm]],ExpressionUUID->"874bc0bd-f429-4149-b49e-270cf6d8d7e0"], "\n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["f", "\[Theta]"], "(", "x", ")"}], "=", SuperscriptBox["\[Alpha]", "x"]}], TraditionalForm]],ExpressionUUID-> "5f5117f9-6310-47a6-83ea-7197f989b9eb"], " mod p ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["f", "\[Theta]"], ":"}], TraditionalForm]],ExpressionUUID-> "76c9004c-10ff-4efb-8dba-2692ed3ac1fa"], Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["\[DoubleStruckCapitalZ]", RowBox[{"p", "-", "1"}]], "\[RightArrow]", SubsuperscriptBox["\[DoubleStruckCapitalZ]", "p", "\[Cross]"]}], TraditionalForm]],ExpressionUUID->"aecd7bc2-cca6-4f8a-a1c3-2647db887ba1"], "\n\[Eta]=|\[Theta]|=|\[Alpha]|+|p| clearly x\[Element]", Cell[BoxData[ FormBox[ SubscriptBox["\[DoubleStruckCapitalZ]", RowBox[{"p", "-", "1"}]], TraditionalForm]],ExpressionUUID-> "43937852-7eb3-465e-accc-906b94ca0efb"], " -> |x|<|\[Theta]|, |x|\[Element]O(|\[Theta]|).\n\nAs we shall see the \ existence of one-way function is very hard to show, and it is connected with \ the famous \[ScriptCapitalP]=\[ScriptCapitalN]\[ScriptCapitalP] problem.\n\n\ DH is based on the fact that ", Cell[BoxData[ FormBox[ SubscriptBox["f", "p"], TraditionalForm]],ExpressionUUID-> "3f5e8943-fa24-42c0-9516-fadb41635abe"], ":", Cell[BoxData[ FormBox[ RowBox[{ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "p", "\[Cross]"], "\[Cross]", SubscriptBox["\[DoubleStruckCapitalZ]", RowBox[{"p", "-", "1"}]]}], TraditionalForm]],ExpressionUUID-> "4187fdef-41a9-4893-a119-e6a5afc6898b"], "\[RightArrow]", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "p", "\[Cross]"], TraditionalForm]],ExpressionUUID->"cd29db6d-1732-4e15-8209-c8a680a8e91e"], " where ", Cell[BoxData[ FormBox[ SubscriptBox["f", "p"], TraditionalForm]],ExpressionUUID-> "36d4bf9c-f527-4299-9072-ffa402b1139c"], "(\[Alpha],x)=", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Alpha]", "x"], " ", "mod", " ", "p", " "}], TraditionalForm]],ExpressionUUID->"1b14d6a7-4953-4110-9659-2ee8c5a636da"], "is believed to be one way (when we fix a generator \[Alpha]) and that\n\n", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["f", "p"], "("}], TraditionalForm]],ExpressionUUID-> "4867bffa-c39a-4070-a5fd-14eb37732643"], Cell[BoxData[ FormBox[ SubscriptBox["f", "p"], TraditionalForm]],ExpressionUUID-> "4fd6fd65-b29c-40f9-bae9-9f6d60637a9b"], "(\[Alpha],x),y)=", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["f", "p"], "("}], TraditionalForm]],ExpressionUUID-> "dafec10c-531a-4cf6-82f4-a26fb4ec2754"], Cell[BoxData[ FormBox[ SubscriptBox["f", "p"], TraditionalForm]],ExpressionUUID-> "0a860728-caa9-4760-a87d-207629c2ef5f"], "(\[Alpha],y),x)=", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Alpha]", "xy"], "mod", " ", "p"}], TraditionalForm]], ExpressionUUID->"06737e74-5850-4cfb-8731-7f0e0a4ae2e7"], ", or in other words\n\ng(h(\[Alpha])))=h(g(\[Alpha]))) where g(\[Alpha])=", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Alpha]", "x"], " ", "mod", " ", "p", " "}], TraditionalForm]],ExpressionUUID->"f9e72ba2-d622-42d1-9f51-2fd85cdc5e80"], "and h(\[Alpha])=", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Alpha]", "y"], " ", "mod", " ", "p", " "}], TraditionalForm]],ExpressionUUID->"62dae371-92c6-444e-9ed1-010378862340"], "\n\nActually one might be tempted to think that there are many functions of \ these kind, that is,\ncommutative functions g and h, that are non-linear (and \ so hopefully hard to invert)!\n\n", StyleBox["Theorem 10.", FontWeight->"Bold"], " ", ButtonBox["[Ritt 1922]", BaseStyle->"Hyperlink", ButtonData->{ URL["http://www.ams.org/tran/1923-025-03/S0002-9947-1923-1501252-3/S0002-\ 9947-1923-1501252-3.pdf"], None}, ButtonNote-> "http://www.ams.org/tran/1923-025-03/S0002-9947-1923-1501252-3/S0002-9947-\ 1923-1501252-3.pdf"], " The only nonlinear rational functions that commute are:\n1) ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"f", RowBox[{"(", "a", ")"}]}], "=", SuperscriptBox["a", "k"]}], TraditionalForm]],ExpressionUUID-> "8c03326d-c569-458b-8525-4dedcbf2485f"], " (power polynomials) -> DH\n2) Chebychev polynomials -> Does not seem to \ have a trivial OW correspondence\n3) Elliptic curves -> Elliptic curve crypto\ \n\nWe are now going to establish that the existence of one-way functions \ imply \[ScriptCapitalP] \[NotEqual]\[ScriptCapitalN]\[ScriptCapitalP]\n" }], "Text", CellChangeTimes->{{3.729067634872473*^9, 3.729068185293722*^9}, { 3.7290683187627707`*^9, 3.729068727447504*^9}, {3.729068926087726*^9, 3.729068986982586*^9}, {3.729069020436496*^9, 3.729069235649788*^9}, { 3.729069359333441*^9, 3.729069804140893*^9}, {3.7290698490107937`*^9, 3.72906990648035*^9}, {3.72906994491927*^9, 3.729070069327428*^9}, { 3.72907010052125*^9, 3.729070127715085*^9}, 3.729231161077812*^9, { 3.729231191516226*^9, 3.7292317485703297`*^9}, {3.7292317831145782`*^9, 3.729231967681842*^9}, {3.729232010682809*^9, 3.7292320720926*^9}, { 3.72923211358663*^9, 3.729232119284712*^9}, {3.729232202033822*^9, 3.729232204497944*^9}, {3.729232237916749*^9, 3.7292323910495043`*^9}, { 3.7292325057937107`*^9, 3.7292325630813007`*^9}, {3.7292325941137943`*^9, 3.7292328043130093`*^9}, {3.729233036889584*^9, 3.729233167528314*^9}, { 3.729233217584002*^9, 3.7292332175869217`*^9}, {3.729240325511821*^9, 3.729240588951919*^9}, {3.72924088369795*^9, 3.729240914706272*^9}, { 3.729261945308578*^9, 3.729261956061141*^9}, {3.729261996256742*^9, 3.7292620287866297`*^9}, {3.729262070421782*^9, 3.729262156250454*^9}, { 3.729262219387765*^9, 3.729262267399139*^9}, {3.729262300060004*^9, 3.729262807844537*^9}, {3.729262900529332*^9, 3.729262908831335*^9}, { 3.7292629678089046`*^9, 3.729263047583796*^9}, {3.7292632408665047`*^9, 3.729263243952972*^9}, {3.729263308177951*^9, 3.729263503329032*^9}, { 3.729263548440785*^9, 3.729263552880403*^9}, {3.729263621964654*^9, 3.729263634331108*^9}, {3.729263668224554*^9, 3.729263672315957*^9}, { 3.729263713974451*^9, 3.729263718772666*^9}, {3.7292642021996403`*^9, 3.7292642053145323`*^9}, {3.7294929596123447`*^9, 3.7294929620587597`*^9}, {3.7294942791906223`*^9, 3.729494360351521*^9}, { 3.729494395929131*^9, 3.7294944423997*^9}, {3.729497001680812*^9, 3.729497002935932*^9}, {3.729504088278337*^9, 3.729504105725717*^9}, { 3.7295041935119753`*^9, 3.729504348466467*^9}, {3.729504525922776*^9, 3.72950453130159*^9}, {3.729504641853531*^9, 3.729504798997563*^9}, { 3.7295049928007307`*^9, 3.729505078161688*^9}},ExpressionUUID->"b299dfb5-6d21-4072-af50-\ 2d05df72971e"] }, Open ]], Cell[CellGroupData[{ Cell["NP vs One-way functions", "Section", CellChangeTimes->{{3.728062293677641*^9, 3.728062304019003*^9}, { 3.728193259258326*^9, 3.728193262544937*^9}, {3.728289540604205*^9, 3.7282895716818933`*^9}, {3.728916766705125*^9, 3.7289167807460003`*^9}, { 3.729067604516163*^9, 3.729067609554571*^9}, {3.7290700788747683`*^9, 3.729070081558054*^9}, 3.729070114704534*^9, {3.729241142329267*^9, 3.7292411548091307`*^9}},ExpressionUUID->"d1f5ea0b-18a8-4c80-8c86-\ 14c89d856330"], Cell["\<\ We shall require several concepts from complexity theory. \ \>", "Text", CellChangeTimes->{{3.7292334608338337`*^9, 3.729233482830789*^9}},ExpressionUUID->"cabca282-bc1c-402c-986c-\ 0458bc2b9766"], Cell[TextData[{ StyleBox["Definition 11.", FontWeight->"Bold"], " A set A\[SubsetEqual] ", Cell[BoxData[ FormBox[ SuperscriptBox["\[DoubleStruckCapitalN]", "k"], TraditionalForm]], ExpressionUUID->"d16f0191-c1d6-42ea-8d4c-e03fb5e11e00"], " is said to be in polynomial time iff its characteristic function \n\n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["\[Chi]", "A"], "(", "x", ")"}], "=", RowBox[{"{", GridBox[{ {"1", RowBox[{"x", "\[Element]", "A"}]}, {"0", RowBox[{"x", "\[NotElement]", " ", "A"}]} }], "\[NoBreak]"}]}], TraditionalForm]],ExpressionUUID-> "4c0dd34f-b947-4288-908f-cd072f2c8795"], "\ncan be computed in polynomial time. The set of all polynomial time sets \ is denoted by \[ScriptCapitalP]." }], "Text", CellChangeTimes->{{3.729067634872473*^9, 3.729068185293722*^9}, { 3.7290683187627707`*^9, 3.729068727447504*^9}, {3.729068926087726*^9, 3.729068986982586*^9}, {3.729069020436496*^9, 3.729069235649788*^9}, { 3.729069359333441*^9, 3.729069804140893*^9}, {3.7290698490107937`*^9, 3.72906990648035*^9}, {3.72906994491927*^9, 3.729070069327428*^9}, { 3.72924092378475*^9, 3.729240924104719*^9}},ExpressionUUID->"3a228229-ea6a-4eaf-8b71-\ 371c56fa2651"], Cell[TextData[{ "In 2002, it was ", ButtonBox["shown that the set of prime numbers is in \[ScriptCapitalP]", BaseStyle->"Hyperlink", ButtonData->{ URL["https://en.wikipedia.org/wiki/AKS_primality_test"], None}, ButtonNote->"https://en.wikipedia.org/wiki/AKS_primality_test"], "." }], "Text", CellChangeTimes->{{3.72923405664952*^9, 3.7292340922695303`*^9}, { 3.729240276981992*^9, 3.729240276984501*^9}},ExpressionUUID->"2385f129-9e8e-4559-9d4f-\ c1a03254a718"], Cell[TextData[{ StyleBox["Exercise 12. ", FontWeight->"Bold"], "Show that the set of even numbers is in \[ScriptCapitalP]. Show that \ numbers that are palindromes in decimal base are also in \[ScriptCapitalP]. " }], "Text", CellChangeTimes->{{3.7292339817507257`*^9, 3.7292340554941397`*^9}, { 3.729240282192191*^9, 3.729240298694393*^9}, {3.729240925600528*^9, 3.729240927168391*^9}},ExpressionUUID->"e038efd0-ab11-4be5-8ae1-\ 67558febbe4a"], Cell[TextData[{ "\n ", StyleBox["Definition 13.", FontWeight->"Bold"], " A set A\[SubsetEqual] ", Cell[BoxData[ FormBox[ SuperscriptBox["\[DoubleStruckCapitalN]", "k"], TraditionalForm]], ExpressionUUID->"27fe075d-235f-46fd-aeb8-c7e97eadc9c6"], " is said to be in ", StyleBox["non-deterministic polynomial time", FontWeight->"Bold"], " if\n there exists a set B\[SubsetEqual] ", Cell[BoxData[ FormBox[ SuperscriptBox["\[DoubleStruckCapitalN]", RowBox[{"k", "+", "1"}]], TraditionalForm]],ExpressionUUID-> "aa3a3709-29d6-447a-ae71-ee1e7dcbea49"], " such that:\n 1) B\[Element]\[ScriptCapitalP].\n 2) if (x,w) \[Element] B \ then |w|\[Element]O(p(|x|)) for some polynomial p, where x\[Element] ", Cell[BoxData[ FormBox[ SuperscriptBox["\[DoubleStruckCapitalN]", "k"], TraditionalForm]], ExpressionUUID->"2570fbf2-3036-48f2-8b91-bc7339a9d4d4"], " and w\[Element]\[DoubleStruckCapitalN];\n 3)\n \tx\[Element] A iff ", Cell[BoxData[ FormBox[ SubscriptBox["\[Exists]", "w"], TraditionalForm]],ExpressionUUID-> "4434e571-a98d-45fd-9125-ef6a0ac15c2c"], " (x,w)\[Element] B (if x\[Element] A, such w is called a witness of x in \ A)\nThe set of all NP sets is denoted by \[ScriptCapitalN]\[ScriptCapitalP]." }], "Text", CellChangeTimes->{{3.729067634872473*^9, 3.729068185293722*^9}, { 3.7290683187627707`*^9, 3.729068727447504*^9}, {3.729068926087726*^9, 3.729068986982586*^9}, {3.729069020436496*^9, 3.729069235649788*^9}, { 3.729069359333441*^9, 3.729069804140893*^9}, {3.7290698490107937`*^9, 3.72906990648035*^9}, {3.72906994491927*^9, 3.729070069327428*^9}, { 3.729233486346868*^9, 3.729233646238512*^9}, {3.729233767455515*^9, 3.729233878757959*^9}, {3.729233934430788*^9, 3.7292339754062*^9}, { 3.729240690736431*^9, 3.729240716768221*^9}, {3.729240928984771*^9, 3.72924092928896*^9}, {3.729265041023671*^9, 3.7292650515137777`*^9}, { 3.729495043068108*^9, 3.729495056884514*^9}, {3.729505937246114*^9, 3.7295059401128893`*^9}, {3.72950597586775*^9, 3.729505976251027*^9}},ExpressionUUID->"36ca45e6-6740-4232-98cc-\ 904fbcbd595f"], Cell[BoxData[ TemplateBox[{ GraphicsBox[ GraphicsComplexBox[CompressedData[" 1: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 yCR1QodTUz1+Ko98NjlbhmXKIyVrycXSjvLIwX9RPaWngG6fG3t0sImul27s 457kZiuhmLMcOd90JbStaf2g3Eol9Gbq4/NWisrI+WFB24ZVLJS1d56m3QoW surMP3len4WKLOb7s/exkFb7b6UaL1XRJv+ZLTpFqkhv/Y6WDamqyFm29/W7 DlVkUc21+mqphq5ndk2tNFdDvNGaG2/qqKGhgDyWymb6fMp+8mQdc0CIAxpL bTj5fWLnreO73u23L+vHe7TK3VOu8MXOsc7huzoFZt0kzhYZaaVojenB+3y8 13CS+GI+w/ejp0O9VXh4TX5L5q1eLrmO5D2L+9wZsnR8iZ7jVPWK19uP+kb6 YV7gMA9wyI/rnRfYels1kP0N9o8qY578hyfVhB+YJGQ4WH8jehc9H4Ysif0U sbaNkvw2OqbuYz3Z37dNsD0x2fsTqWdhfwlXPtLgvaadzCfqZ9xh6SQ5ufMp tuDy65aPXWS/lVDPMawXtpNx0P7+c6ZKfW4Pdfa79uI+SfFz/T2V3KM7lvdQ h2Yd3mBhT59Pof/S8PiFe48MkDg6f/SYX4krHSdaxW6G5Rp0HGSWCjV9P9H1 8HzbY4zIDLoeruYGaJUfUUATEzY3CkIH8Nmr/FrBmWF8U8dXOb16EI+zrX46 47UQLzndlrkpqx/H28Wkh4T24dl5bQ4cw278vOTeucTJfVh3/OyHm/y78YD6 mfxNvXx8LacvNTGwC88/ebxV7QgPF1tscjEpa8VOD8zcdLW7cLjChF7BlE68 LeXCzIh73/FGbU5xuXUWVk9+yp0hSevnVsyC3032tmFAaIc8fnuLa4b8wiz8 /p/ChSmzv+CE6nfT62+0UWNfjG3Wdy/GlrLLjhhUt1Ove7TnCP3e4ix+43bX yHZKL95r5Y3ROfiMVJnymIF2akDatjHbsIfSTa1M5/A6qS3d2pE7NHqoWHlu QFRzHyXcxK3JDh6gPnUKTjp59lOBfjafsj0GqUXIW8Jjk5C6tz75mFP1IDX5 iJJFzSshdb7OaXx7jAT6O7l9xF+WEmjhHwf37tgvpGY5RjRVjZJEdyPbcqfu kkZ7Vs35EGAljbKaBjupEikU2KWX4tYujVqW1oae/oOJJraOPjjSnIlqb07l Vr0dgaYd/XHAKWEi3fa+br0VcqgkuTro9Dw59KGJcSzonSzSvFzWQN2RQx63 MvTvL1REW+ZL5rBmKCJBsZ1LyVsF9H6c26HB04qoEAfrms5QQY2hikZJE1SQ Z+qkCfdfK6MlSR4ztENVUKlW0dJUFVW06+9mdTsFVZRU+7pMo56F0ptro6pN VFG/zI78P4+wUS7vpqNsOBtRoz7/GePGRru56PK362z0m2afBYc1hDsdX5lx hoR4yOHCrtKGYWykNUUxfdIwVora/nLGyEFMRYQs4ajSPsTBQeNmQXA//riv Oj3EqQ+fMps7+KmlF+flJe1uyerBL5PPPtp0tQtXlJbYcVzougHOqVFT+j/O sOnEKv3CW8x/hNS4Ot1viQwh1Tc/pDuEP0QlOpS9ZnlIoP1LWxoSJYeJXwHn SsH4ojNB8pLIQdsms3CpJDIZynrFYkoi/wb1TwFhEog9pynNrUQSFd54Hh+U K4WMz6WkciOk0LblS1iR8lIosn+iYfk8aTSKuWFV2Cza34Bz6p2mztigQmmk XbLKxcuYgayvHIoNGsFAYbp/unqdlEZfV3rFBF1mINPpr6ikv0agCzt3e5Uc HIEY1MItJewR6I2bLJWkwUT7rmUlce1pPwTOvXtcbGTlTzGR32e3VjxGBr1r s985S8hEY40sZCPjmGhKkq+TV4QM6tmWOj8pRhblHQ+qrgr8oZsSo0/OGrIo eVqHqbZAFhknTnsd4E77J3CO/rK1psrZQw7pNOZUVsnJIxmzsi69HjnEHyXd SMXLoTlKkd/wVnmU/0yTnxaqgN5Ffo3l/qmADh41cPBSV0Dqz8vmaNcooELf xRVVPrTfAudyK3RfoZ1SRLLx1utL+hTRcJN2LdWiiBLjFcylYxXJPmu/MfBJ t58y0rdxNk7yUEachTfusVSV0Xwfg4VhhbRPozk52Gm5jgrijAsLDmpWQekP Hk1P+qyC3A/IZ0efUEGPr58beDKOhTRaF58PvfMDE05pvL7BQvzmIuPKcBaa d1o5dPcH2tf5Pctr4bCEKupmHIiq3q6KtqspH7i3RRXVaqfUzLdURQf6Wmes i1VF78Y9CP5tChs9jY5svqjPRp6nLQSHpNhozkhJv5UraB+oPU6q+eJONtLm GzKufWOjrJVleX9+ZaNRZwObLuax0YPrBz4GyqmhzYVnj45NVUOp6qNOmyer IbfP+6xSg9XQ1QGTqgdP1BD4GGcenRoZ5SDEvvkrytUWCYmf4/KP557SOtrP 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 "], {{{ EdgeForm[], Directive[ RGBColor[0.368417, 0.506779, 0.709798], AbsoluteThickness[1.6], Opacity[0.3]], GraphicsGroupBox[{ PolygonBox[CompressedData[" 1:eJxNWHe8z2UUfs/XNa+tJLJniMS9RDZZiTRoSwmVq6Vd4irJLDub0hBCRUVL W0XaKBq0d9rreT7P06f+eD7nfN7v+zvv+57xnHNv7SGjBhRkKaWrIqUikMcA LYDqwExgBlAamA7cbn2Fv1EvCUwDSlhO93ohMBsoBdwF3Oa9D3kf9+QDNYEc f5/uPRcCpwFNgQXAPUB5oC5wPlABaOXf8s7jgalAcWAsMMl2ugB3AsWAZcBy 61N8J+6ZBdwNlPX7VvhuecBEoDbQFlgK1APm+l25wGSfRZsbgQlAGZ852esz fEZZ753ic8f5TtxzHHAUUAPoATQA6tvezUA5+2aaf1tof/MOnXxX+qID0NJ2 1gL3A3Xss7r24Vj/tihwh+2XtQ8LHa/OQC3bpI2V9m2e/cF49QIaAQ39vWj6 LwdyrR/tcxmv0d5fCXgAWGNbNX0W47gQGOb7rra/eN9L7ZOKwMWOB2PRHWjj My4H2tlvfZJymHm9GFjk/f/mEP15BnA6UMXfl3hPge/BO3yMmrgGODspH8cA hwBXh+rlLOjfsG6A5tBvgLweGAz9O8h+QDXoA/kNqAycAFwHHOQ3jnMOnARc Dxxs341N/+XJWPuX970mqS6Ybxscv3E45ydgCPdCfm+dd9/v+zeF/CtU388D x0E/FPJPyD9C/roWslSm/Qeg5/hd4yF/A85Net+XfuMYyG+Bc6B/AZkBzaD/ ClkUOBL6J5B9gap8N+Sn/i1raI7z7UHnX3GvFzqHGOtLHPcCx6S8c+FSx7qd Y1/Ja5d5vZFzjvl5S1ItMe7M+QW2w7V5STXb2vvK2ad3eA+5YX5Sjcz3OvWb fGfevx9whc9q63vzzoOYK0ATYABwJXD4/84o77ev95tvdbwZ6/v8HtphTYxK qqO+wMikGj8ZuAponMSRBbZ5r+/AfO4NXJTE5+fbFu08BjQL1Uj7JP6hPjSJ j2j/Q/oxE3/tob1MHNkD8pCQz8jnDzteFbH2ThLn8H0b7KvdQK1M3PcJ0DxT DMgtq7x/J5AX4mzWPWuDdTHNZ+TaT/QX82Sdf5/jczY6jrmwsSzkoyeYs6Ha 6oozNyf1jRewNiJUlzshRwNnQn8NclSo1ifYJt+Rj9+2zsQRh0GWCfWuLcAr PrcX1g8LcR7vRn4jL9bA2p2h+PXEnsr2W03IFaH8XuW3FHf8+XbWfD18vyeU 003o21D9HwM77TP1j48Y/0y1NAnfB4Ri3gJrR2XitveA2pl6ZCN83xzKxbaQ 1X3nxpDbQvlaBXvfSuLnw7H2XCjP9gKtoXeFPAF7qoX4txr0tx3HLtBLhfpQ oWNWwr5Y7zfSN+wBzPPxjmmhz1vjmJKTSpiX1tinOfbTWuvdcdabSf0j3+t1 vGedz1zp3/Osz4EpoRro6Fxg33mY8Q9xcx/YrB/ilW5JsSpn2/k+lz2kjdfp u+5eOzap/lmz/D17ObmIPS7Pv23gfdzDeYT5zjzv6d9Usu1uts/aJWezflmj 7PE1fJfOtk1OaOm3nJjENewj5CT26Yb+3te/vTYpR8I2We+sffq6j8/qn8Rr 7FONfD/ebXiSn8hjI5Jqi/xzvO3zDqckcRP73alJPMi+eUFSzZEPe+PA2iF/ MQ6d/Bbeob3vswrf7w3xez8sfG3/9Yf+ve+VA71opv76IPaeGrr3QsibgfOg v806C/VPGo5MPbgT5OpQn9jEPhny3bOQQ0NveBXywtAbMuwvkqlPt3QO8b1l sDbBZ3WG/qj9OivUU9lPPw/1v8FJdcC8ZF0sSeJrcjU56MakmeQk7D0xFI8S sFky07e9rF3PHvMgb3JfngF5hXlsDuSN7ss/hmYCzgPFYKN4pjnmZKz9HYr9 38Ae6EdA7gOaZuqLdSHfT5rNWR8bXSMNsf5B0t8AG7D2g/NhLfTOoZxphj37 k3pmE+gfJ83OazgzOCcfIZeEcpXJeLvvwHnhK88MfwBvhWYexnad49sL8t2Q rzjLPJc0z/SB/pFnm4D8zDNJd8jnQzlJXnwmiRurQ383qffSl6Uz+TMPslWm +ZFcWC7ET1VCPE5euA36X0l/r7yRxEe1kji+h/cwvx5wjt0H2SFUR4fie9VM f2Mwzksd6wpYK59pvmAvJbeS01gHK10LNbG2K+lvDPafgzP1IMqDrJPX2ZPI T79yX6juOKPNtE86QXYMcQTj8LhjwRg+5Djmh3ifnL+NfgrxwxGhmZLc1Bbn bHfd/hKaF+nDRZDFQnMgY74+FPchzM0QV30J3B/iSebRY6FcWs7YJc00S0Jn 81z6r2MmH7aD/mzSPNMD+vYQzxSGZmLmPDlgvmuTc/oPoZn2DPJBiOc45872 Ou0dHbL5E/BMmN8gX0jKyUHQB4Y4jzPUI0l8xXn/59DMz/l3gd/eKjTfkOvb YWPLEHf3h3wpaT/5Y7HvSR561FxE/821Hfa6FqEcKx2aacidFSH7ZprDttou be4I1Q9rh3PN66HZhjPCxFAPIC++GeJG8tzLIa57I1RjrC/OSi+FuJu8kpuJ WzhbPRXqAS/aR/TPi6GcY759Hfo7gfu3huLEGPHvpw9DPPZ0qD5Zm+TdLSHu fTIUA/r/gxBHkB84r+0Ocd1UyANJfWlXiMu4Zxr0X5J61HshXiAnkDvf97l1 Qn2IPagA+shQv5oMuSNpFu6A73VD8/h0yN+T+tjl0C8L/R3ZhnWW6X8EDUIz BHv5V0l9iz1rONaHhXpj1dD8xD7/XVI/Yy8rGeof7B2bkmYp9pl9IS5jzf4D x9uz6Q== "]], PolygonBox[CompressedData[" 1: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 "]]}]}, { EdgeForm[], Directive[ RGBColor[0.880722, 0.611041, 0.142051], AbsoluteThickness[1.6], Opacity[0.3]], GraphicsGroupBox[{ PolygonBox[CompressedData[" 1:eJwt0lVWXEEUheFel5EwFYYAjTXu0rgECBCc4JrgGjx4cJeE4JAQSE+H/6y7 H76HrltddersE5ycH5rneDyeEAThjB81iEMzyhGJACqQgla0IRUnOIAdsoV1 5OALepCOfWwjF91oRxoucYp8/MUjivABwwhHKfrhxTV+ogAl6EIYvmMFfvzH C4rRga8IxT80IAmNeEMyJjGKTIzp7nCtjWt9DgvIRq/utnsHMIQMDKpWr97d p7ePaJ/tmcdHRGEaZYjALKaQhTW9x6+1b1pfUh1WwzIqEa1edqqfLWhSRtaD V/XhATco1PeA9lhuR8rO8tlVRpbJuXKxfl+p579Qi3hUYRU+PKEeicp/03Fn YAfViMGG/uNTLXeq5xZ1SMAhPiHWcWfw2HHn0Obi2XFnw877oTMtzz/K1OZ0 xnFn1c7Y0znW4wn12e75rbus3nvVbG+60Lssn8/KyHq8qD6/A3eDcHs= "]], PolygonBox[CompressedData[" 1:eJwt0FVKhVEQAOCLuBDd0rW7W+819qAiBgYYGBgYGBgYGBgYGBgY6/H7YR6+ hzPMnIn8+mw6k5NKpfLIZcdjmzI6uOWOLNVsskV75MwyRwtFLLJEK8U88kQ3 NUwyRTOFTDBOQcQeuI9eSc0Lz1HbwwzTUZv0XGA+eic9N1inNGY85IhOKrjh mqrY6YB9yiNnl73YPYl98E4tvfzyRx/1/PBNXcSG6KeERgYYpCFmeuUtdkn+ vOSKTMy0yhpt8ccoYzTFjVZYjtsmOSMMk46cC86pjD9POaMrYiccxy2S2Cdf sVuywz+tkEc5 "]]}]}, {}, {}, {}, {}, {}}, {{ Directive[ RGBColor[0.368417, 0.506779, 0.709798], AbsoluteThickness[1.6]], LineBox[CompressedData[" 1:eJwl0ttWjGEAxvFvnFS0x9S0lURlRhPty4FdsRatJVLHXUAuoBsodA8GN5G0 Xx1SRCGkbIpbQPze5eA//+d55l2z3u9bUzNyd2A0FkVRBmMIedzHBAZwH/ew Yn/IGdzCbUzZzvA0/+VBvJIf8Et+xIdwB0MYRhrNeOP7Kwei6DWf07vlPK7g DVs5v+Vi22V5Tq7hj1zAhSjCvN7uzGdu4wVutH/hBv7Kp3mRb3AxruMw6vDC 3s9HcBTP9SUk5W8c55KA3+7jOF/lUt4L9+Sbehl3hPvjml7JXejEsnPd/ARV mMRPW9q5H/xYT6BJ39VT/D2823Anez3v6Cd5m0+F+9pP8JZ+nD9xbXgu+zH+ oFfxJleHd2VvxXu9hQtx3t6DfLyzV4Zs7+UCXreVhmdDArP6WfsMX9Jz5TX5 IF/Un8lN8lO+oOfIq3KXnC3/xh/sI4kUssL7w6/Y///fP5kAQl4= "]], LineBox[CompressedData[" 1:eJwl01VTVlEUBuAPBNt/4Ixix5WtMwp2K453tmIndnfe2Z1Xdnc3oih2d7eg YGM+e7h45l1nz8vMxz7rxCUltx0UFYlE/pBOUZY7WMFMVrGSWH6Sw3R+8J1E sshmCl/4TB4+8olJZJJBK17zhvG84y1RvOQVY3nBc1rwkEeM4gmP+ed33pcP GME97tKMG9xkCLe5xW/9a/I6yVzlCk24QDr9ucTF8L/qp8nz9OUcZ2nEKU7T kzOk8E3/hDxJd45zjAYc5BBdOMLhcEf6++UBOrGPvdRjJ7toxx52h3vU3y53 sI260ZFIAvHmTWxmI1vZwgf9DbIU6ylJvH5tuY5irKU4NZxXJ8XfVJaVqEo1 qlCLmsTpNpcl5HvdTBI9Z8g6zkqH9+W5THj3zrJp4zlLJoTfTFna04GO1A/v XidCZ/NX4+ywR/KoLEdXupFEw7BbutH0CHuoNyfsokyV5elFb/rQmFjdGPqZ f+nNlTnysqzAAAYSPoSm5NPNy2DzX715Ubnfxx1ZkaEMY3i4Dwro5mekeQHz ifCUZ4xmDKmOW4Y9kgX1x5kXsZDocKfhvTGBiWHn9FrLNFlIf7J5CYuJCXcV 9o6pTAu7Gu477LMsrD/DvIyl5GU1a5hFkejc7/0/YtmPqA== "]]}, { Directive[ RGBColor[0.880722, 0.611041, 0.142051], AbsoluteThickness[1.6]], LineBox[{613, 594, 661, 652, 653, 651, 655, 654, 628, 657, 658, 656, 660, 659, 629, 663, 664, 662, 666, 665, 630, 668, 669, 667, 671, 670, 631, 673, 674, 672, 676, 675, 632, 646, 650, 649, 612, 599, 617, 598, 616, 597, 615, 596, 614, 595, 613}], LineBox[CompressedData[" 1:eJwl0Fk2AlAAANCnndhSXyJT/pKSvkimONqIzENIGTNmKmO0HfccH3cDtzeR iaZ7QggxkpEQ+hhjmi4rlFhlhjLrrLHJBnm22WGLPXaZ5YAK+xxxSIEqJxxT p8YcZ5xzyiUXzNPgmituuWGBex6445EmizzzwhMtXlnijXfafPJBkW86fPHL D8skyDHKFCNkGWaSITIMkibOBAOk6GecWOT/9w8pNDk4 "]]}}}], { DisplayFunction -> Identity, AspectRatio -> 1, Axes -> {False, False}, AxesLabel -> {None, None}, AxesOrigin -> {Automatic, Automatic}, DisplayFunction :> Identity, Frame -> {{False, False}, {False, False}}, FrameLabel -> {{None, None}, {None, None}}, FrameTicks -> {{Automatic, Automatic}, {Automatic, Automatic}}, GridLinesStyle -> Directive[ GrayLevel[0.5, 0.4]], Method -> { "ScalingFunctions" -> None, "TransparentPolygonMesh" -> True, "AxesInFront" -> True}, PlotRange -> {{-2, 5}, {-2, 5}}, PlotRangeClipping -> True, PlotRangePadding -> {{ Scaled[0.02], Scaled[0.02]}, { Scaled[0.02], Scaled[0.02]}}, Ticks -> {Automatic, Automatic}}], FormBox[ FormBox[ TemplateBox[{ RowBox[{"B", "\[Element]", "\[ScriptCapitalP]"}], RowBox[{"A", "\[Element]", "\[ScriptCapitalN]\[ScriptCapitalP]"}]}, "SwatchLegend", DisplayFunction -> (FormBox[ StyleBox[ StyleBox[ PaneBox[ TagBox[ GridBox[{{ TagBox[ GridBox[{{ GraphicsBox[{ Directive[ PointSize[0.5], EdgeForm[ Directive[ Opacity[1], RGBColor[0.368417, 0.506779, 0.709798], AbsoluteThickness[1]]], RGBColor[0.368417, 0.506779, 0.709798], AbsoluteThickness[1.6], Opacity[0.3]], RectangleBox[{0, 0}, {10, 10}, "RoundingRadius" -> 0]}, AspectRatio -> Full, ImageSize -> {10, 10}, PlotRangePadding -> None, ImagePadding -> Automatic, BaselinePosition -> (Scaled[0.1] -> Baseline)], #}, { GraphicsBox[{ Directive[ PointSize[0.5], EdgeForm[ Directive[ Opacity[1], RGBColor[0.880722, 0.611041, 0.142051], AbsoluteThickness[1]]], RGBColor[0.880722, 0.611041, 0.142051], AbsoluteThickness[1.6], Opacity[0.3]], RectangleBox[{0, 0}, {10, 10}, "RoundingRadius" -> 0]}, AspectRatio -> Full, ImageSize -> {10, 10}, PlotRangePadding -> None, ImagePadding -> Automatic, BaselinePosition -> (Scaled[0.1] -> Baseline)], #2}}, GridBoxAlignment -> { "Columns" -> {Center, Left}, "Rows" -> {{Baseline}}}, AutoDelete -> False, GridBoxDividers -> { "Columns" -> {{False}}, "Rows" -> {{False}}}, GridBoxItemSize -> {"Columns" -> {{All}}, "Rows" -> {{All}}}, GridBoxSpacings -> { "Columns" -> {{0.5}}, "Rows" -> {{0.5}}}], "Grid"]}}, GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, AutoDelete -> False, GridBoxItemSize -> { "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxSpacings -> {"Columns" -> {{1}}, "Rows" -> {{0}}}], "Grid"], Alignment -> Left, AppearanceElements -> None, ImageMargins -> {{5, 5}, {5, 5}}, ImageSizeAction -> "ResizeToFit"], LineIndent -> 0, StripOnInput -> False], { FontFamily -> "Arial"}, Background -> Automatic, StripOnInput -> False], TraditionalForm]& ), InterpretationFunction :> (RowBox[{"SwatchLegend", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Directive", "[", RowBox[{ RowBox[{"EdgeForm", "[", RowBox[{"Directive", "[", RowBox[{ RowBox[{"Opacity", "[", "1", "]"}], ",", InterpretationBox[ ButtonBox[ TooltipBox[ GraphicsBox[{{ GrayLevel[0], RectangleBox[{0, 0}]}, { GrayLevel[0], RectangleBox[{1, -1}]}, { RGBColor[0.368417, 0.506779, 0.709798], RectangleBox[{0, -1}, {2, 1}]}}, AspectRatio -> 1, Frame -> True, FrameStyle -> RGBColor[0.24561133333333335`, 0.3378526666666667, 0.4731986666666667], FrameTicks -> None, PlotRangePadding -> None, ImageSize -> Dynamic[{Automatic, 1.35 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[ Magnification])}]], "RGBColor[0.368417, 0.506779, 0.709798]"], Appearance -> None, BaseStyle -> {}, BaselinePosition -> Baseline, DefaultBaseStyle -> {}, ButtonFunction :> With[{Typeset`box$ = EvaluationBox[]}, If[ Not[ AbsoluteCurrentValue["Deployed"]], SelectionMove[Typeset`box$, All, Expression]; FrontEnd`Private`$ColorSelectorInitialAlpha = 1; FrontEnd`Private`$ColorSelectorInitialColor = RGBColor[0.368417, 0.506779, 0.709798]; FrontEnd`Private`$ColorSelectorUseMakeBoxes = True; MathLink`CallFrontEnd[ FrontEnd`AttachCell[Typeset`box$, FrontEndResource["RGBColorValueSelector"], { 0, {Left, Bottom}}, {Left, Top}, "ClosingActions" -> { "SelectionDeparture", "ParentChanged", "EvaluatorQuit"}]]]], BaseStyle -> Inherited, Evaluator -> Automatic, Method -> "Preemptive"], RGBColor[0.368417, 0.506779, 0.709798], Editable -> False, Selectable -> False], ",", RowBox[{"AbsoluteThickness", "[", "1.6`", "]"}]}], "]"}], "]"}], ",", InterpretationBox[ ButtonBox[ TooltipBox[ GraphicsBox[{{ GrayLevel[0], RectangleBox[{0, 0}]}, { GrayLevel[0], RectangleBox[{1, -1}]}, { RGBColor[0.368417, 0.506779, 0.709798], RectangleBox[{0, -1}, {2, 1}]}}, AspectRatio -> 1, Frame -> True, FrameStyle -> RGBColor[ 0.24561133333333335`, 0.3378526666666667, 0.4731986666666667], FrameTicks -> None, PlotRangePadding -> None, ImageSize -> Dynamic[{ Automatic, 1.35 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[ Magnification])}]], "RGBColor[0.368417, 0.506779, 0.709798]"], Appearance -> None, BaseStyle -> {}, BaselinePosition -> Baseline, DefaultBaseStyle -> {}, ButtonFunction :> With[{Typeset`box$ = EvaluationBox[]}, If[ Not[ AbsoluteCurrentValue["Deployed"]], SelectionMove[Typeset`box$, All, Expression]; FrontEnd`Private`$ColorSelectorInitialAlpha = 1; FrontEnd`Private`$ColorSelectorInitialColor = RGBColor[0.368417, 0.506779, 0.709798]; FrontEnd`Private`$ColorSelectorUseMakeBoxes = True; MathLink`CallFrontEnd[ FrontEnd`AttachCell[Typeset`box$, FrontEndResource["RGBColorValueSelector"], { 0, {Left, Bottom}}, {Left, Top}, "ClosingActions" -> { "SelectionDeparture", "ParentChanged", "EvaluatorQuit"}]]]], BaseStyle -> Inherited, Evaluator -> Automatic, Method -> "Preemptive"], RGBColor[0.368417, 0.506779, 0.709798], Editable -> False, Selectable -> False], ",", RowBox[{"AbsoluteThickness", "[", "1.6`", "]"}], ",", RowBox[{"Opacity", "[", "0.3`", "]"}]}], "]"}], ",", RowBox[{"Directive", "[", RowBox[{ RowBox[{"EdgeForm", "[", RowBox[{"Directive", "[", RowBox[{ RowBox[{"Opacity", "[", "1", "]"}], ",", InterpretationBox[ ButtonBox[ TooltipBox[ GraphicsBox[{{ GrayLevel[0], RectangleBox[{0, 0}]}, { GrayLevel[0], RectangleBox[{1, -1}]}, { RGBColor[0.880722, 0.611041, 0.142051], RectangleBox[{0, -1}, {2, 1}]}}, AspectRatio -> 1, Frame -> True, FrameStyle -> RGBColor[0.587148, 0.40736066666666665`, 0.09470066666666668], FrameTicks -> None, PlotRangePadding -> None, ImageSize -> Dynamic[{Automatic, 1.35 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[ Magnification])}]], "RGBColor[0.880722, 0.611041, 0.142051]"], Appearance -> None, BaseStyle -> {}, BaselinePosition -> Baseline, DefaultBaseStyle -> {}, ButtonFunction :> With[{Typeset`box$ = EvaluationBox[]}, If[ Not[ AbsoluteCurrentValue["Deployed"]], SelectionMove[Typeset`box$, All, Expression]; FrontEnd`Private`$ColorSelectorInitialAlpha = 1; FrontEnd`Private`$ColorSelectorInitialColor = RGBColor[0.880722, 0.611041, 0.142051]; FrontEnd`Private`$ColorSelectorUseMakeBoxes = True; MathLink`CallFrontEnd[ FrontEnd`AttachCell[Typeset`box$, FrontEndResource["RGBColorValueSelector"], { 0, {Left, Bottom}}, {Left, Top}, "ClosingActions" -> { "SelectionDeparture", "ParentChanged", "EvaluatorQuit"}]]]], BaseStyle -> Inherited, Evaluator -> Automatic, Method -> "Preemptive"], RGBColor[0.880722, 0.611041, 0.142051], Editable -> False, Selectable -> False], ",", RowBox[{"AbsoluteThickness", "[", "1.6`", "]"}]}], "]"}], "]"}], ",", InterpretationBox[ ButtonBox[ TooltipBox[ GraphicsBox[{{ GrayLevel[0], RectangleBox[{0, 0}]}, { GrayLevel[0], RectangleBox[{1, -1}]}, { RGBColor[0.880722, 0.611041, 0.142051], RectangleBox[{0, -1}, {2, 1}]}}, AspectRatio -> 1, Frame -> True, FrameStyle -> RGBColor[ 0.587148, 0.40736066666666665`, 0.09470066666666668], FrameTicks -> None, PlotRangePadding -> None, ImageSize -> Dynamic[{ Automatic, 1.35 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[ Magnification])}]], "RGBColor[0.880722, 0.611041, 0.142051]"], Appearance -> None, BaseStyle -> {}, BaselinePosition -> Baseline, DefaultBaseStyle -> {}, ButtonFunction :> With[{Typeset`box$ = EvaluationBox[]}, If[ Not[ AbsoluteCurrentValue["Deployed"]], SelectionMove[Typeset`box$, All, Expression]; FrontEnd`Private`$ColorSelectorInitialAlpha = 1; FrontEnd`Private`$ColorSelectorInitialColor = RGBColor[0.880722, 0.611041, 0.142051]; FrontEnd`Private`$ColorSelectorUseMakeBoxes = True; MathLink`CallFrontEnd[ FrontEnd`AttachCell[Typeset`box$, FrontEndResource["RGBColorValueSelector"], { 0, {Left, Bottom}}, {Left, Top}, "ClosingActions" -> { "SelectionDeparture", "ParentChanged", "EvaluatorQuit"}]]]], BaseStyle -> Inherited, Evaluator -> Automatic, Method -> "Preemptive"], RGBColor[0.880722, 0.611041, 0.142051], Editable -> False, Selectable -> False], ",", RowBox[{"AbsoluteThickness", "[", "1.6`", "]"}], ",", RowBox[{"Opacity", "[", "0.3`", "]"}]}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{#, ",", #2}], "}"}], ",", RowBox[{"LegendMarkers", "\[Rule]", "Automatic"}], ",", RowBox[{"LabelStyle", "\[Rule]", RowBox[{"{", "}"}]}], ",", RowBox[{"LegendLayout", "\[Rule]", "\"Column\""}]}], "]"}]& ), Editable -> True], TraditionalForm], TraditionalForm]}, "Legended", DisplayFunction->(GridBox[{{ TagBox[ ItemBox[ PaneBox[ TagBox[#, "SkipImageSizeLevel"], Alignment -> {Center, Baseline}, BaselinePosition -> Baseline], DefaultBaseStyle -> "Labeled"], "SkipImageSizeLevel"], ItemBox[#2, DefaultBaseStyle -> "LabeledLabel"]}}, GridBoxAlignment -> {"Columns" -> {{Center}}, "Rows" -> {{Center}}}, AutoDelete -> False, GridBoxItemSize -> Automatic, BaselinePosition -> {1, 1}]& ), Editable->True, InterpretationFunction->(RowBox[{"Legended", "[", RowBox[{#, ",", RowBox[{"Placed", "[", RowBox[{#2, ",", "After"}], "]"}]}], "]"}]& )]], "Input",ExpressionUU\ ID->"14f8682a-d243-4be1-afed-0cc423a2db41"], Cell[TextData[{ StyleBox["Exercise 14: ", FontWeight->"Bold"], " Show that \[ScriptCapitalP] \[Subset] \[ScriptCapitalN]\[ScriptCapitalP].\n\ \nIf A is in P then A\[Cross]{0}=B is also in P since (x,y)\[Element] B iff x\ \[Element]A and y=0. Moreover, this set serves as the required set for A to \ be in NP, that is, B satisfies all the conditions for A to be NP!", StyleBox["\n\nExercise 15: ", FontWeight->"Bold"], "Show that the following sets are NP: " }], "Text", CellChangeTimes->{{3.7292339817507257`*^9, 3.729233988382551*^9}, { 3.729234102119467*^9, 3.729234357181581*^9}, {3.729240615399241*^9, 3.729240682944821*^9}, {3.729240776849017*^9, 3.729240866352735*^9}, { 3.729240938096899*^9, 3.729241118537509*^9}, {3.729494591228943*^9, 3.729494622397687*^9}, {3.729505800635852*^9, 3.729505825967846*^9}, { 3.729505858594946*^9, 3.729505916285665*^9}, {3.7295059644077787`*^9, 3.7295060180353823`*^9}, 3.729506070572916*^9, {3.729671742504942*^9, 3.729671808775899*^9}},ExpressionUUID->"9dc936c3-6750-4166-8941-\ d1142513731e"], Cell["\<\ 1) F={(x,y):x has a factor greater than 1 and smaller that y}. If this set is in P then RSA is not secure anymore.\ \>", "Text", CellChangeTimes->{{3.7292339817507257`*^9, 3.729233988382551*^9}, { 3.729234102119467*^9, 3.729234357181581*^9}, {3.729240615399241*^9, 3.729240682944821*^9}, {3.729240776849017*^9, 3.729240866352735*^9}, { 3.729240938096899*^9, 3.729241118537509*^9}, {3.729494591228943*^9, 3.729494622397687*^9}, {3.729505800635852*^9, 3.729505825967846*^9}, { 3.729505858594946*^9, 3.729505916285665*^9}, {3.7295059644077787`*^9, 3.7295060180353823`*^9}, {3.729506119388913*^9, 3.729506132995214*^9}, { 3.7296718838269243`*^9, 3.7296718966635027`*^9}},ExpressionUUID->"1d8565d2-07c3-4436-8db1-\ a2b91a01fdf2"], Cell["B = {(x, y, w): 1{{3.7295061940116987`*^9, 3.7295062208242817`*^9}},ExpressionUUID->"212c7603-7f5f-4420-aebd-\ 91d7297cb296"], Cell[BoxData[ RowBox[{ RowBox[{"CB", "[", RowBox[{"x_", ",", "y_", ",", "w_"}], "]"}], ":=", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"w", "<", "y"}], "&&", RowBox[{"w", ">", "1"}], "&&", " ", RowBox[{ RowBox[{"Mod", "[", RowBox[{"x", ",", "w"}], "]"}], "\[Equal]", "0"}]}], ",", "1", ",", "0"}], "]"}]}]], "Input", CellChangeTimes->{{3.729506230190281*^9, 3.729506278379175*^9}},ExpressionUUID->"7fed0923-b733-408a-a810-\ 373f600329b2"], Cell[TextData[{ "2) L={(x,y,\[Alpha],n): x", Cell[BoxData[ FormBox[ RowBox[{"\[Element]", SubsuperscriptBox["\[DoubleStruckCapitalZ]", "p", "\[Cross]"]}], TraditionalForm]],ExpressionUUID->"0de5966d-f99c-4eb7-8a7d-e4fbf364a3dc"], " x=", Cell[BoxData[ RowBox[{ SuperscriptBox["\[Alpha]", "k"], " ", "mod", " ", "n"}]],ExpressionUUID-> "c94eff97-d0f3-4e0e-b89e-ef0d59528ebc"], " and k is smaller that y} - assume for the moment that power modulo n can \ be computed in polynomial-time. If one shows a variant of this set to be in \ P, Eve can take any bitcoins she wishes." }], "Text", CellChangeTimes->{{3.7292339817507257`*^9, 3.729233988382551*^9}, { 3.729234102119467*^9, 3.729234357181581*^9}, {3.729240615399241*^9, 3.729240682944821*^9}, {3.729240776849017*^9, 3.729240866352735*^9}, { 3.729240938096899*^9, 3.729241118537509*^9}, {3.729494591228943*^9, 3.729494622397687*^9}, {3.729505800635852*^9, 3.729505825967846*^9}, { 3.729505858594946*^9, 3.729505916285665*^9}, {3.7295059644077787`*^9, 3.7295060180353823`*^9}, {3.729506333701068*^9, 3.7295063340068274`*^9}, { 3.7295068628853617`*^9, 3.729506882968248*^9}, {3.7295069143023987`*^9, 3.729506914587776*^9}},ExpressionUUID->"648d9604-b4d7-487a-926e-\ 0cc3debd827a"], Cell[TextData[{ "B={(x,y,\[Alpha],n,w): x", Cell[BoxData[ FormBox[ RowBox[{"\[Element]", SubsuperscriptBox["\[DoubleStruckCapitalZ]", "p", "\[Cross]"]}], TraditionalForm]],ExpressionUUID->"0de282d7-69fc-44da-8b77-4cb3d3135570"], " x=", Cell[BoxData[ RowBox[{ SuperscriptBox["\[Alpha]", "w"], " ", "mod", " ", "n"}]],ExpressionUUID-> "48c35c5e-6717-44ff-99d0-6bc4d71f0d12"], " and w{{3.7292339817507257`*^9, 3.729233988382551*^9}, { 3.729234102119467*^9, 3.729234357181581*^9}, {3.729240615399241*^9, 3.729240682944821*^9}, {3.729240776849017*^9, 3.729240866352735*^9}, { 3.729240938096899*^9, 3.729241118537509*^9}, {3.729494591228943*^9, 3.729494622397687*^9}, {3.729505800635852*^9, 3.729505825967846*^9}, { 3.729505858594946*^9, 3.729505916285665*^9}, {3.7295059644077787`*^9, 3.7295060180353823`*^9}, {3.729506333701068*^9, 3.7295063340068274`*^9}, { 3.729506550218247*^9, 3.72950659073036*^9}},ExpressionUUID->"e3ffabd2-cf73-4935-aabc-\ ba3dca1476ff"], Cell[BoxData[ RowBox[{ RowBox[{"CB", "[", RowBox[{"x_", ",", "y_", ",", "a_", ",", "n_", ",", "w_"}], "]"}], ":=", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"w", "<", "y"}], "&&", RowBox[{ RowBox[{"PowerMod", "[", RowBox[{"a", ",", "w", ",", "n"}], "]"}], "\[Equal]", "x"}]}], ",", "1", ",", "0"}], "]"}]}]], "Input", CellChangeTimes->{{3.729506594255307*^9, 3.729506610429105*^9}, { 3.729506743303982*^9, 3.729506766704884*^9}},ExpressionUUID->"e33b8181-d12b-4f71-a0b2-\ 0485f4e6c4f9"], Cell[TextData[{ "\n3) Iso={(G,G'): G,G'\[Element]\[ScriptCapitalG] and g is isomorphic to \ g'} \n\nThe problem of \[ScriptCapitalP] =\[ScriptCapitalN]\[ScriptCapitalP] \ can be stated in two ways:\n\n", StyleBox["Decision version", FontWeight->"Bold"], ": If A\[Element] \[ScriptCapitalN]\[ScriptCapitalP] then A\[Element] \ \[ScriptCapitalP], that is, its characteristic function of A can be computed \ in polynomial-time.\n\n", StyleBox["Search version", FontWeight->"Bold"], ": If A\[Element] \[ScriptCapitalN]\[ScriptCapitalP], and let B\[Element]\ \[ScriptCapitalP] be a set required in Definition 13 for A to be NP, then, \ there exists a polynomial-time function g:", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[DoubleStruckCapitalN]", "k"], "\[RightArrow]"}], TraditionalForm]],ExpressionUUID->"b0bea2ef-71ec-42f2-87ea-6dfadd4a9511"], Cell[BoxData[ FormBox["\[DoubleStruckCapitalN]", TraditionalForm]],ExpressionUUID-> "5e6dae25-31c2-4c59-a0c2-cc318045a763"], " such that \nx\[Element] A iff (x,g(x))\[Element] B\n\n", StyleBox["Theorem", FontWeight->"Bold"], ": The decision and search problem for \[ScriptCapitalP] =\[ScriptCapitalN]\ \[ScriptCapitalP] are equivalent.\n\n", StyleBox["Proof: SV -> DV ", FontWeight->"Bold"], "(meaning if I can find a witness efficiently then ", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "B"], TraditionalForm]],ExpressionUUID-> "391dffea-27f0-4bfc-b65a-5a23cc8791ce"], " is PT)\nwe know that ", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "B"], TraditionalForm]],ExpressionUUID-> "6c364ed8-6508-4a4c-92e7-8aac625406c2"], " can be computed in PT\nAlgorithm to compute ", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "A"], TraditionalForm]],ExpressionUUID-> "b87f2892-7045-49f3-b353-2f56cd4e6861"], ":\n\ninput x \n#include g,\n", Cell[BoxData[ FormBox[ RowBox[{"return", " "}], TraditionalForm]],ExpressionUUID-> "1d87a0a7-e8a3-46ab-9b2d-e3d650907531"], Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["\[Chi]", "B"], "(", RowBox[{"x", ",", RowBox[{"g", "(", "x", ")"}]}], ")"}], TraditionalForm]],ExpressionUUID-> "f23bb848-b5df-486f-abed-39b64daef71e"], " // this is computed in PT because g is PT and B is in P\n\n\n", StyleBox["DV -> SV", FontWeight->"Bold"], "\nOne has access to a library that computes the ", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "C"], TraditionalForm]],ExpressionUUID-> "ab94bafe-6c24-4ba2-aebd-04f6e0c00791"], " for any C\[Element] NP, w.l.o.g. we assume \nthat the witness w is an \ element of ", Cell[BoxData[ FormBox[ SuperscriptBox[ RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}], "\[FivePointedStar]"], TraditionalForm]], ExpressionUUID->"e72d5846-3872-414c-b274-feaf892127e4"], ", (we also denote the empty string by \[CurlyEpsilon]\n\nC={(x,p): x\ \[Element]A and p is a prefix of w, with (x,w)\[Element] B}, this set is in \ NP\n\n{(x,p,w):(x,w)\[Element]B, p prefix of w} is in P\n\nAlgorithm to \ compute ", Cell[BoxData[ FormBox["g", TraditionalForm]],ExpressionUUID-> "9e6d31f0-f026-4538-8806-53af17bda203"], "\ninput x\n#include ", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "C"], TraditionalForm]],ExpressionUUID-> "a69c7894-c1e2-4313-9632-bb588fe5757f"], ",\nw=\[CurlyEpsilon]; //empty string\nif(", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "C"], TraditionalForm]],ExpressionUUID-> "74df602a-13b3-4c2a-a2af-71dd068b959b"], "(x,\[CurlyEpsilon])==0) return w; // x\[NotElement]A\n", Cell[BoxData[ FormBox[ RowBox[{"while", "(", RowBox[{ RowBox[{ SubscriptBox["\[Chi]", "B"], "(", RowBox[{"x", ",", "w"}], ")"}], "!="}]}], TraditionalForm]], ExpressionUUID->"7fc1add4-0d6e-473d-9c1e-95b93d6b786c"], "1) {// if the algorithm reaches this point there is a witness\n if(", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "C"], TraditionalForm]],ExpressionUUID-> "b676b3d6-8dbe-4301-a3ab-df686450037a"], "(x,w.0)==1) w=w.0; // . is concatenation\n else w=w.1; // this divides to \ conquer\n }\n return w;\n\nThe while loop iterates a polynomial number of \ times because |w|\[Element]O(p(|x|)) by definition of B, each step is \ polynomial, thus the full computation is polynomial on (the number of bits \ of) x!\n\n\n\n", StyleBox["Theorem", FontWeight->"Bold"], ": If there exists one-way functions then \[ScriptCapitalP] \[NotEqual]\ \[ScriptCapitalN]\[ScriptCapitalP].\n\n", StyleBox["Proof:", FontWeight->"Bold"], " Proof by contraposition, assume \[ScriptCapitalP] =\[ScriptCapitalN]\ \[ScriptCapitalP], and we are going to show that any honest injective \ function f:\[DoubleStruckCapitalN]\[RightArrow]\[DoubleStruckCapitalN] can be \ inverted in PT!\n\nConsider the set C={(y,p):p is a prefix of the inverse of \ y by f }, first we show that this set is in NP.\n\nB={(y,p,x):f(x)=y and p is \ a prefix of x} this in P and |x| is bounded polynomially on |y| because f is \ honest! Note that the witness x is the pre-image of y\n\nAlgorithm to compute \ ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SuperscriptBox["f", RowBox[{"-", "1", " "}]], "-", " ", RowBox[{"left", " ", "inverse", " ", RowBox[{ SuperscriptBox["f", RowBox[{"-", "1"}]], "(", RowBox[{"f", "(", "x", ")"}], ")"}]}]}], "=", "x"}], TraditionalForm]], ExpressionUUID->"b7d64d49-0ffa-4371-a1f6-bd52e6f0d21a"], "\ninput y\n#include ", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "C"], TraditionalForm]],ExpressionUUID-> "76ad16ee-1404-4e8b-a3b6-8a46d4c2860d"], ",\nx=\[CurlyEpsilon]; //empty string\nif(", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "C"], TraditionalForm]],ExpressionUUID-> "28f1cfc3-5702-4e99-902e-579995e07eb8"], "(y,\[CurlyEpsilon])==0) return 0; //y has no pre-image\n", Cell[BoxData[ FormBox[ RowBox[{"while", "(", RowBox[{ RowBox[{"f", "(", "\<\"x\"\>", ")"}], "\[NotEqual]", "y"}]}], TraditionalForm]],ExpressionUUID->"07cebf43-fb22-41b1-aa97-582c31b536f9"], ") {// if a reach this point y has a pre-image\n if(", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "C"], TraditionalForm]],ExpressionUUID-> "6563c6bd-d4c8-4d81-91e4-c4e16e386f42"], "(y,x.0)==1) x=x.0; // . is concatenation\n else x=x.1; // this divides to \ conquer\n }\n return \[OpenCurlyDoubleQuote]x\[CloseCurlyDoubleQuote] ; //\ \[CloseCurlyQuote]\[CloseCurlyQuote]x\[CloseCurlyQuote]\[CloseCurlyQuote] is \ x converted from string to number \[CurlyEpsilon] is converted to 0\n\nThis \ program is polynomial because |x| is bounded polynomially on |y| and C is \ NP (and assuming NP=P, ", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "C"], TraditionalForm]],ExpressionUUID-> "4c10af19-61c6-4aa9-a66d-f5650a19b087"], " is computed in PT) !\n" }], "Text", CellChangeTimes->CompressedData[" 1:eJwdyksowwEAx/FlYaspimXJ8mopESk2bBnzXDt4hDk4YKWYeZVtRquxyETk sckNB8nBoikH2lqz/lpbaGnJqylD2VgeKf/fDt8+l296p6JRFkWhUNhkMBht iQ05AkIf30CDux4rE+pcW0Vw2f4iCpN+l3ZIICcnRQrX68TdkGBVymF1oVsH tU1PNUNnAeH1ESGG/rbE01HStS+BDRL0JgfMyZpxQT1j7hJepwt9kKM4pCpJ 34pPIt792tnwWG5Jg7RqJh8aWyUCeEH9EsGp3vIqOLlh6Ip8E4sRVc78fnjD q49YMfaohnnUvxX4YPs0QWHcjhly6ckXMHeT8ML99tlbmDGveIZ2kfwNKs0h hoq0OXyUAMvcRhYcWTVnQj/BzoaTqQcFcCK+hwu3hwO18NzJk8I9L10Glcnj vXBhqWUQakreh2FMUKqEHuOABjYkHWhhH6FfhuWmV4uD1HulssJGdcM9/JnO +oD/QUYPGA== "],ExpressionUUID->"4e30b0d8-a960-44ab-8a02-9752c680ddf2"] }, Open ]], Cell[CellGroupData[{ Cell["One-way functions with a trapdoor", "Section", CellChangeTimes->{{3.728062293677641*^9, 3.728062304019003*^9}, { 3.728193259258326*^9, 3.728193262544937*^9}, {3.728289540604205*^9, 3.7282895716818933`*^9}, {3.728916766705125*^9, 3.7289167807460003`*^9}, { 3.729067604516163*^9, 3.729067609554571*^9}, {3.7290700788747683`*^9, 3.729070081558054*^9}, 3.729070114704534*^9, {3.729241142329267*^9, 3.729241197897122*^9}},ExpressionUUID->"ae4db449-8c7b-4d54-b4ef-\ 4ed134630077"], Cell[TextData[{ "The notion of one-way function is enough to define a DH scheme. But to \ define a asymmetric cryptosystem we need the notion of trapdoor.\n\n\n", StyleBox["Definition 8", FontWeight->"Bold"], ". A function ", Cell[BoxData[ FormBox[ RowBox[{"f", ":", RowBox[{ "\[DoubleStruckCapitalN]", "\[RightArrow]", "\[DoubleStruckCapitalN]"}]}], TraditionalForm]],ExpressionUUID-> "620afde5-8c7f-43da-a6f5-058384ff27be"], " is said to be one-way function with a trapdoor if:\n1) it is an one-way \ function;\n2) there exists a function g", Cell[BoxData[ FormBox[ RowBox[{":", RowBox[{ SuperscriptBox["\[DoubleStruckCapitalN]", "2"], "\[RightArrow]", "\[DoubleStruckCapitalN]"}]}], TraditionalForm]],ExpressionUUID-> "064c0672-e97d-4044-835c-d5612c3cc5ad"], " computable in polynomial time such that \n\t\t", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["\[Exists]", "p"], RowBox[{ SubscriptBox["\[ForAll]", "\[Eta]"], RowBox[{ SubscriptBox["\[Exists]", RowBox[{"w", "\[Element]", RowBox[{"O", "(", RowBox[{"p", "(", "\[Eta]", ")"}], ")"}]}]], RowBox[{ SubscriptBox["\[ForAll]", RowBox[{"x", "\[Element]", RowBox[{"O", "(", "\[Eta]", ")"}]}]], " ", RowBox[{"g", "(", RowBox[{ RowBox[{"f", "(", "x", ")"}], ",", "w"}], ")"}]}]}]}]}], "=", "x"}], TraditionalForm]],ExpressionUUID-> "c12d3901-8a7b-4a85-aaa4-2bba0dacd0e7"], " ;\n This w is called the trapdoor for inputs of size \[Eta].\n\nThe \ definition can be extrapolated to families of functions.\n\n", StyleBox["Exercise 9.", FontWeight->"Bold"], " Give the rigorous definition of one-way function for family of functions.\n\ \nThis definition captures the abstraction of asymmetric cryptosystem \n\n", StyleBox["Definition ", FontWeight->"Bold"], "The family ", Cell[BoxData[ FormBox[ SubscriptBox[ RowBox[{"{", RowBox[{"(", RowBox[{ "X", ",", " ", "Y", ",", " ", "K", ",", "e", ",", "d", ",", "u", ",", "U"}], ")"}], "}"}], "\[Theta]"], TraditionalForm]],ExpressionUUID-> "24639711-2177-416e-aa71-4995aa1919b6"], " is an asymmetric cryptosystem with security parameter \[Eta]=|\[Theta]| \ where\n1) u: K\[RightArrow] U is a PT publication function u(k) is called the \ public key of k.\n2) ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox[ RowBox[{"{", RowBox[{ SubscriptBox["e", RowBox[{"u", "(", "k", ")"}]], ":", RowBox[{"X", "\[RightArrow]", "Y"}]}], "}"}], "\[Theta]"], " ", "is", " ", "a", " ", "one", " ", "w"}], TraditionalForm]],ExpressionUUID-> "3033eebb-4e86-40d5-b306-16f613d661a4"], "ay family with trapdoor k \n3) ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["d", "k"], "(", RowBox[{ SubscriptBox["e", RowBox[{"u", "(", "k", ")"}]], "(", "x", ")"}], ")"}], "=", "x"}], TraditionalForm]],ExpressionUUID->"7338f24c-c1f2-4bd5-8f25-bb843b91273e"], "\n", StyleBox["4) It should be efficient to sample K as |\[Theta]| grows.\n\n ", FontColor->RGBColor[1, 0, 0]], "\nThe fourth condition imposes that it should be easy to sample a random \ key for each parameter \[Theta], we will explain in detail these conditions \ later on.\n\n", StyleBox["Example", FontWeight->"Bold"], " Candidate - RSA \n- \[Theta]=n=pq, with p and q primes\n- ", Cell[BoxData[ FormBox[ RowBox[{"X", "=", RowBox[{"Y", "=", SubscriptBox["\[DoubleStruckCapitalZ]", "n"]}]}], TraditionalForm]], ExpressionUUID->"863ec339-d63a-4c03-b5c3-94b91d5b09b0"], "\n- K={(a,b): ab=1 mod \[Phi](n)}\n- u(a,b)=a;\n\n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["e", "a"], "(", "x", ")"}], "=", SuperscriptBox["x", "a"]}], TraditionalForm]],ExpressionUUID-> "fa246f04-f0c7-435c-8565-ab2a22f1ff53"], " mod n\n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["d", RowBox[{"(", RowBox[{"a", ",", "b"}], ")"}]], "(", "y", ")"}], "="}], TraditionalForm]],ExpressionUUID->"5a1b29fc-4cda-44d9-9b09-c794a5bb13e4"], " ", Cell[BoxData[ FormBox[ SuperscriptBox["y", "b"], TraditionalForm]],ExpressionUUID-> "d4d31f94-eee9-404f-9135-3c69b1a99279"], " mod n\n" }], "Text", CellChangeTimes->{{3.729241201466663*^9, 3.729241252321476*^9}, 3.729241458601811*^9, {3.729241525123126*^9, 3.729241663853084*^9}, { 3.729241705044737*^9, 3.7292419267274437`*^9}, {3.7294946557245703`*^9, 3.729494798964449*^9}, {3.729494895132214*^9, 3.729494947374811*^9}, { 3.729495117828012*^9, 3.7294953800385303`*^9}, {3.729495410588004*^9, 3.729496028572083*^9}, {3.729496068916316*^9, 3.729496069372917*^9}, { 3.7294977275280037`*^9, 3.729497774494895*^9}, {3.729509668627067*^9, 3.72950966947722*^9}, {3.7295098566520233`*^9, 3.729509874218317*^9}, 3.732862565029436*^9, {3.832822954011407*^9, 3.832822954457597*^9}},ExpressionUUID->"228d3a12-eb50-4d99-8fb8-\ c9af9b223779"] }, Open ]] }, Open ]] }, WindowSize->{1259, 675}, WindowMargins->{{9, Automatic}, {Automatic, 0}}, PrintingCopies->1, PrintingPageRange->{1, Automatic}, Magnification:>2. Inherited, FrontEndVersion->"12.1 for Mac OS X x86 (64-bit) (June 19, 2020)", StyleDefinitions->"Default.nb", ExpressionUUID->"0bd07bf2-a0d8-4e75-ae8b-e6da94f8c9ba" ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[558, 20, 32338, 499, 363, "Input",ExpressionUUID->"b3382702-9bcb-4174-8297-d53f0c8dc05a"], Cell[CellGroupData[{ Cell[32921, 523, 182, 3, 136, "Chapter",ExpressionUUID->"456d4aa3-29d3-4871-b3e6-857d71c4036f"], Cell[33106, 528, 176, 5, 114, "Text",ExpressionUUID->"d9775cf2-fe8f-425a-85d7-3f49e6cfa2a6"] }, Open ]], Cell[CellGroupData[{ Cell[33319, 538, 419, 6, 136, "Chapter",ExpressionUUID->"784132f8-8698-4803-9080-2dc11304ae18"], Cell[CellGroupData[{ Cell[33763, 548, 321, 5, 134, "Section",ExpressionUUID->"259f56a4-5530-4592-be74-282ccdc84f83"], Cell[34087, 555, 9245, 239, 2586, "Text",ExpressionUUID->"57574ff6-544d-40f3-99a2-16c114770af2"], Cell[43335, 796, 721, 23, 101, "Input",ExpressionUUID->"d36a22d6-4bcc-49af-a16b-152c2e7a9fb4"], Cell[CellGroupData[{ Cell[44081, 823, 590, 14, 59, "Input",ExpressionUUID->"217a1081-f2c2-42ec-a9c3-e053900b3113"], Cell[44674, 839, 530, 10, 67, "Output",ExpressionUUID->"3712df1c-e2ba-4957-8629-711661faa9f6"] }, Open ]], Cell[CellGroupData[{ Cell[45241, 854, 221, 5, 59, "Input",ExpressionUUID->"5011b2c5-f2a6-4e14-960d-3074c587f054"], Cell[45465, 861, 379, 8, 67, "Output",ExpressionUUID->"8f83bae3-9b17-4b72-a55b-46f76a4f90ed"] }, Open ]], Cell[CellGroupData[{ Cell[45881, 874, 216, 5, 59, "Input",ExpressionUUID->"c3c1f02c-b71b-42fe-84e0-e78ac1bdcd1b"], Cell[46100, 881, 316, 9, 67, "Output",ExpressionUUID->"5e638b70-d1d5-4e03-b0e9-2f72457ea092"] }, Open ]], Cell[46431, 893, 737, 21, 101, "Input",ExpressionUUID->"549e0b66-3611-4d2f-b14c-9683a52a6e4c"], Cell[CellGroupData[{ Cell[47193, 918, 210, 5, 59, "Input",ExpressionUUID->"c8f26394-6adf-44e5-9128-1fe911084577"], Cell[47406, 925, 179, 3, 67, "Output",ExpressionUUID->"421598e5-da53-4c1e-b055-e2468e00dfc3"] }, Open ]], Cell[47600, 931, 412, 10, 75, "Text",ExpressionUUID->"61695952-2c47-4bd8-8d53-e27e17f62638"], Cell[CellGroupData[{ Cell[48037, 945, 210, 5, 59, "Input",ExpressionUUID->"c058e25f-1347-4e1b-9a8e-ba03cf593393"], Cell[48250, 952, 178, 3, 67, "Output",ExpressionUUID->"3635584e-d683-480a-a962-8530d37d0206"] }, Open ]], Cell[48443, 958, 1857, 40, 261, "Text",ExpressionUUID->"1df600b2-84be-4240-9bd5-f118d4b5c925"], Cell[50303, 1000, 1708, 43, 295, "Program",ExpressionUUID->"9631f0d2-7a3d-4062-ae86-6877d3d7aa79"], Cell[52014, 1045, 752, 18, 204, "Text",ExpressionUUID->"493413e1-57bf-4ba2-95fe-9377cf2ea2eb"] }, Open ]], Cell[CellGroupData[{ Cell[52803, 1068, 437, 7, 134, "Section",ExpressionUUID->"bee889d5-05b5-48d5-a8d9-9ea26d19d8fe"], Cell[53243, 1077, 3115, 88, 481, "Text",ExpressionUUID->"6599e2b1-51ab-4a99-9df5-1e9a02c9c4d7"], Cell[56361, 1167, 23733, 652, 5589, "Text",ExpressionUUID->"b299dfb5-6d21-4072-af50-2d05df72971e"] }, Open ]], Cell[CellGroupData[{ Cell[80131, 1824, 491, 7, 134, "Section",ExpressionUUID->"d1f5ea0b-18a8-4c80-8c86-14c89d856330"], Cell[80625, 1833, 211, 7, 159, "Text",ExpressionUUID->"cabca282-bc1c-402c-986c-0458bc2b9766"], Cell[80839, 1842, 1276, 31, 320, "Text",ExpressionUUID->"3a228229-ea6a-4eaf-8b71-371c56fa2651"], Cell[82118, 1875, 480, 12, 69, "Text",ExpressionUUID->"2385f129-9e8e-4559-9d4f-c1a03254a718"], Cell[82601, 1889, 453, 9, 114, "Text",ExpressionUUID->"e038efd0-ab11-4be5-8ae1-67558febbe4a"], Cell[83057, 1900, 2110, 44, 384, "Text",ExpressionUUID->"36ca45e6-6740-4232-98cc-904fbcbd595f"], Cell[85170, 1946, 31569, 585, 748, "Input",ExpressionUUID->"14f8682a-d243-4be1-afed-0cc423a2db41"], Cell[116742, 2533, 1071, 19, 339, "Text",ExpressionUUID->"9dc936c3-6750-4166-8941-d1142513731e"], Cell[117816, 2554, 756, 13, 114, "Text",ExpressionUUID->"1d8565d2-07c3-4436-8db1-a2b91a01fdf2"], Cell[118575, 2569, 174, 3, 69, "Text",ExpressionUUID->"212c7603-7f5f-4420-aebd-91d7297cb296"], Cell[118752, 2574, 499, 15, 59, "Input",ExpressionUUID->"7fed0923-b733-408a-a810-373f600329b2"], Cell[119254, 2591, 1275, 25, 165, "Text",ExpressionUUID->"648d9604-b4d7-487a-926e-0cc3debd827a"], Cell[120532, 2618, 1038, 23, 75, "Text",ExpressionUUID->"e3ffabd2-cf73-4935-aabc-ba3dca1476ff"], Cell[121573, 2643, 543, 15, 59, "Input",ExpressionUUID->"e33b8181-d12b-4f71-a0b2-0485f4e6c4f9"], Cell[122119, 2660, 7449, 178, 3309, "Text",ExpressionUUID->"4e30b0d8-a960-44ab-8a02-9752c680ddf2"] }, Open ]], Cell[CellGroupData[{ Cell[129605, 2843, 499, 7, 134, "Section",ExpressionUUID->"ae4db449-8c7b-4d54-b4ef-4ed134630077"], Cell[130107, 2852, 5075, 135, 1664, "Text",ExpressionUUID->"228d3a12-eb50-4d99-8fb8-c9af9b223779"] }, Open ]] }, Open ]] } ] *)