From 4fd8bfb875a11553e410eca3033ae785317b7b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Popovics=20Andr=C3=A1s?= Date: Tue, 25 Jul 2017 09:17:11 +0100 Subject: [PATCH] [ADF-1041] Node picker, first iteration (#2122) * First try * Dialog basic functionality * Search input * Hammering it together * Fist working proto for copy * Fix the tests and tslint errors for a happier world * Add more tests (and test shells for the future) * copyNode and moveNode methods * Copy and move actions for content type * Extract common parts in favor of using them in folder content type also * Small fixes * Copy and Move actions for folders as well * Style fixes, ui behaviours and tests needed to be written * Move duplicated search service from documentlist to core * Use search service from core within the search component * Fix dialog width * Update docs * Tests for node selector * Change seletionMade event's name to select --- .../app/components/files/files.component.html | 32 ++ demo-shell-ng2/config/webpack.dev.js | 2 +- demo-shell-ng2/resources/i18n/en.json | 10 +- ng2-components/ng2-alfresco-core/index.ts | 1 + .../src/assets/search.service.mock.ts | 63 +++ .../src/services/search.service.spec.ts | 22 +- .../src/services/search.service.ts | 5 +- .../ng2-alfresco-documentlist/README.md | 47 ++- .../docs/assets/document-action-copymove.png | Bin 0 -> 53905 bytes .../assets/document-action-copymovedialog.png | Bin 0 -> 78744 bytes .../ng2-alfresco-documentlist/index.ts | 11 +- .../content-action.component.spec.ts | 13 +- .../content-node-selector.component.html | 73 ++++ .../content-node-selector.component.scss | 116 ++++++ .../content-node-selector.component.spec.ts | 377 ++++++++++++++++++ .../content-node-selector.component.ts | 152 +++++++ .../sites-dropdown.component.html | 1 + .../sites-dropdown.component.scss | 3 - .../src/i18n/en.json | 21 + .../src/material.module.ts | 7 +- .../services/document-actions.service.spec.ts | 36 +- .../src/services/document-actions.service.ts | 80 ++-- .../services/document-list.service.spec.ts | 20 + .../src/services/document-list.service.ts | 22 + .../services/folder-actions.service.spec.ts | 25 +- .../src/services/folder-actions.service.ts | 69 ++-- .../src/services/node-actions.service.ts | 121 ++++++ ng2-components/ng2-alfresco-search/index.ts | 9 +- .../search-autocomplete.component.spec.ts | 4 +- .../search-autocomplete.component.ts | 3 +- .../search-control.component.spec.ts | 3 +- .../src/components/search.component.spec.ts | 5 +- .../src/components/search.component.ts | 3 +- 33 files changed, 1218 insertions(+), 138 deletions(-) create mode 100644 ng2-components/ng2-alfresco-core/src/assets/search.service.mock.ts rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/services/search.service.spec.ts (79%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/services/search.service.ts (91%) create mode 100644 ng2-components/ng2-alfresco-documentlist/docs/assets/document-action-copymove.png create mode 100644 ng2-components/ng2-alfresco-documentlist/docs/assets/document-action-copymovedialog.png create mode 100644 ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.html create mode 100644 ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.scss create mode 100644 ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.spec.ts create mode 100644 ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.ts create mode 100644 ng2-components/ng2-alfresco-documentlist/src/services/node-actions.service.ts diff --git a/demo-shell-ng2/app/components/files/files.component.html b/demo-shell-ng2/app/components/files/files.component.html index 94d4ff49a2..16fc315961 100644 --- a/demo-shell-ng2/app/components/files/files.component.html +++ b/demo-shell-ng2/app/components/files/files.component.html @@ -117,6 +117,22 @@ + + + + + + + + Promise.resolve(fakeSearch) + } + } +}; diff --git a/ng2-components/ng2-alfresco-search/src/services/search.service.spec.ts b/ng2-components/ng2-alfresco-core/src/services/search.service.spec.ts similarity index 79% rename from ng2-components/ng2-alfresco-search/src/services/search.service.spec.ts rename to ng2-components/ng2-alfresco-core/src/services/search.service.spec.ts index f8e9a9aa08..b644993b9f 100644 --- a/ng2-components/ng2-alfresco-search/src/services/search.service.spec.ts +++ b/ng2-components/ng2-alfresco-core/src/services/search.service.spec.ts @@ -16,9 +16,17 @@ */ import { async, TestBed } from '@angular/core/testing'; -import { AlfrescoApiService, CoreModule } from 'ng2-alfresco-core'; import { fakeApi, fakeError, fakeSearch } from '../assets/search.service.mock'; +import { CookieServiceMock } from './../assets/cookie.service.mock'; +import { AlfrescoApiService } from './alfresco-api.service'; +import { AlfrescoSettingsService } from './alfresco-settings.service'; +import { AppConfigModule } from './app-config.service'; +import { AuthenticationService } from './authentication.service'; +import { CookieService } from './cookie.service'; +import { LogService } from './log.service'; import { SearchService } from './search.service'; +import { StorageService } from './storage.service'; +import { UserPreferencesService } from './user-preferences.service'; declare let jasmine: any; @@ -30,10 +38,18 @@ describe('SearchService', () => { beforeEach(async(() => { TestBed.configureTestingModule({ imports: [ - CoreModule + AppConfigModule ], providers: [ - SearchService + SearchService, + AuthenticationService, + AlfrescoApiService, + AlfrescoSettingsService, + AuthenticationService, + StorageService, + UserPreferencesService, + { provide: CookieService, useClass: CookieServiceMock }, + LogService ] }).compileComponents(); })); diff --git a/ng2-components/ng2-alfresco-search/src/services/search.service.ts b/ng2-components/ng2-alfresco-core/src/services/search.service.ts similarity index 91% rename from ng2-components/ng2-alfresco-search/src/services/search.service.ts rename to ng2-components/ng2-alfresco-core/src/services/search.service.ts index b7792c05e1..bf005d0a3b 100644 --- a/ng2-components/ng2-alfresco-search/src/services/search.service.ts +++ b/ng2-components/ng2-alfresco-core/src/services/search.service.ts @@ -17,8 +17,9 @@ import { Injectable } from '@angular/core'; import { NodePaging } from 'alfresco-js-api'; -import { AlfrescoApiService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; import { Observable } from 'rxjs/Rx'; +import { AlfrescoApiService } from './alfresco-api.service'; +import { AuthenticationService } from './authentication.service'; /** * Internal service used by Document List component. @@ -26,7 +27,7 @@ import { Observable } from 'rxjs/Rx'; @Injectable() export class SearchService { - constructor(public authService: AlfrescoAuthenticationService, + constructor(public authService: AuthenticationService, private apiService: AlfrescoApiService) { } diff --git a/ng2-components/ng2-alfresco-documentlist/README.md b/ng2-components/ng2-alfresco-documentlist/README.md index 82bbad4d9d..f6efef092f 100644 --- a/ng2-components/ng2-alfresco-documentlist/README.md +++ b/ng2-components/ng2-alfresco-documentlist/README.md @@ -32,6 +32,7 @@ - [Delete - Show notification message with no permission](#delete---show-notification-message-with-no-permission) - [Delete - Disable button checking the permission](#delete---disable-button-checking-the-permission) - [Download](#download) + - [Copy and move](#copy-and-move) + [Folder actions](#folder-actions) * [Context Menu](#context-menu) * [Navigation mode](#navigation-mode) @@ -630,9 +631,12 @@ You can define both folder and document actions at the same time. + icon="content_copy" + target="document" + title="copy" + permission="update" + [disableWithNoPermission]="true" + handler="copy"> @@ -647,6 +651,7 @@ You can define both folder and document actions at the same time. target="document" title="Delete with additional custom callback" handler="delete" + permission="delete" (execute)="myCustomActionAfterDelete($event)"> @@ -679,6 +684,8 @@ All document actions are rendered as a dropdown menu as on the picture below: The following action handlers are provided out-of-box: - **Download** (document) +- **Copy** (document, folder) +- **Move** (document, folder) - **Delete** (document, folder) All system handler names are case-insensitive, `handler="download"` and `handler="DOWNLOAD"` @@ -766,6 +773,40 @@ Initiates download of the corresponding document file. ![Download document action](docs/assets/document-action-download.png) +##### Copy and move + +Shows the destination chooser dialog for copy and move actions + +![Copy/move dialog](docs/assets/document-action-copymovedialog.png) + +```html + + + + + + + + + + + +``` + +![Copy/move document action](docs/assets/document-action-copymove.png) + #### Folder actions Folder actions have the same declaration as document actions except ```taget="folder"``` attribute value. You can define system, custom or combined handlers as well just as with the document actions. diff --git a/ng2-components/ng2-alfresco-documentlist/docs/assets/document-action-copymove.png b/ng2-components/ng2-alfresco-documentlist/docs/assets/document-action-copymove.png new file mode 100644 index 0000000000000000000000000000000000000000..8325b8692837fabdde6dc21ad8dc852e8d06b0ea GIT binary patch literal 53905 zcmeFZXH-+$+BS@cf*=S=Q>vhX(nO?p6;P2bCA1)jbdcUbP!S15rT0*zNbfx;7?9qC z(2){a=)LpKxX<3g_Uz}3?-}p-#{1(q1{zt(T65n0zV2)0t)jdPG2tab92^|t2lwwO z)`4q0&GZr=?7A zhJ*CP^#sRc_4I^?p(K2F&NGJio{>Zba^5JVeEj&cPqsH}Ii&<8MIIaMMU|MMl2Q*+ z)jX~8!3iDc?(jCEY_l!Wwsmi6FtXt+PNTzIWhL$7Q!lh75jU^(#z%(4)LdD|#nr>X zGsflMlL?ukqN5{$`y&oH7cK9|vZBndEyJ&*UoSN6HjS+j@Fqt0r{T8!yyknZA2q~!P2oW%*bQW<$F z<}9_$gPIQc&uAjXZ13La;D*UNZVdXE!NEvUw&2Tr3cH;0btC#I0m!EXJaxJ3RO#m{p*nUkipstZ_A@})u-^Ry2qap6%wJ(o-weU>dE0JbMy1j1;?U!8| zdSrdSa?s-iv;LQ;FI>cmpAGR}NoJnpz8gcg$Wl*Yp75QjKk5D6Ub}#x{DoHk_w_PF zc!KXoR|ME@IVU7J(I}8p3!4VFo+Ers-Fkb?_{lTvM1K~S;urCxXY$T}jZK{Ey;-(c zTk}Y5A}v6XmU-0t?DBx!6Gi{#(_PIJ0h6!$YBcrH!X0HpZ3(~i&MBb7kr<{p5&3F{NZ@^HpypbejMZH(|6vTaQZBreR2JM$Ogd= z9!hd=amKL|9TD->h2i*w@PnoZwT;3PGo8b@=`wsygw~wd0j}e5P6BQ_HIpwYMi-Ji z9-%vw-gcHRi5+c@i@9`5NAyXA;p%EBa>n8mXI6wIxokQeSb_FxL>@IX6mj zA4efsX+n)>OR9z;f=3c>+N;BRqVJ=7Je?&WM0ot5lxpH!+4xy)n%*DsH!p|};!jSV zEgIn=53=4>YhtJm&OH!gDAR3FZh*8hS{iWVVPE4_9l9G`3%M5D;_LOKUgep8L+Qj`^!h*Qc!&&3`S)lpU z8a%6$gxeP*w;zd@(yT@#;09*#c716brod?!<{S_jzM1UGS5vwtr~Vk{ML6=?xBE@} zI;FxmGSN8jHP5cd=o<8=bDxnEw0XG_DZ%FTOX4qaLqYr?pP!vl}#M+JaZDJ?1o=fiIkjCrMt^!pRC>bo~%1#TEKO{QO)i zOl;}=S#L)@YDv=bckWL6QYHpPFsk{U9P@Ev_PQ@{{^b?s^!uloB))!gdwN~jFXS@C zH~D1BZ3@A_7-`PSI^XD$sb*vj?uaE&Ka}cL()msv`=UI-!|6b+dWTwqkRh zi1y-akg<%}#k?K(Tz1jBew@~g57)l`wa@0*%Pn=>0QlWpCMVK6XCAyd zTVsBQJ0T|b&2#_fB-znoHNs5qzcEIU>5P^?y7r80icFoXzap)q)S=j+W1Y_g zway!RhP>-XMd3;zuH2m#_L$QChUz07xglALkHZOwgbw4B+fYqHj`-pzHCf@iuJ?E0 z_tf)M3022#a43IzY^pe`=JGKUZk{-oDxy=SSf;)0yP}FdL2-&gg(8el%P`^L$42W= zts8eg*{QmAvvzBDtA5&j%#|*t&YT|k>C`9d?y&TEW#Ocah`^43X?CGEh!8}yN8oU( z{9}HVbE<91T&m*m;RLa?gp|?b_i%2RB<1l}(&tVZMBKV_QP7{)zt%t6Ut!#?emh`1 zKua*&LwmDyGisdIo!2?)Y7{=Nm9a;szUe7bL$jm^5hb!XJBk^Y>wmhrsw(S!2j9(?pbGzWRdcEzl-|50M{ag8!tid4c7 z^n#fp!(N{O%09k+M3kP$Wy6~CGgQ~yifoIU@&+s%+jLtzKDfVkFW85Ygpts`dH4ns zc)OmlUMf&7Fef%M#z}r4#!|Q|mN_O|xJ1y?+S;D1{CmY(#ifdra<#Hy8x=>GgBIGM zBlgF_BH~*WazE(}Oa@W^BuHG;LZm=+(^)LunD0Hm_2$=lT_0WZoLF7a;YW*)7wLvY z#ZHTv$D78>Afyr6Bch15J@&o)y^Yg*hl-2i+5dVLeR1xhjPjZEx9Pje;sr^)-E#?r?S-ET zB}rffZ&yEHnub2lPdP6)I<<9HbvAXz8#x(fwoSLKHL$nQ{wUa@*h4`sLk0?ljbscL zTj(1eGz&(^w#v1Law=YUO4Qo=JzCJ{nR=Y6uC;C(dk}=ih?ubUmFqoU{MV{e!>2+|F+5{w7P}>5AE+n4tKC$_HYLV(_Qswey;u-Wjs@b&-qlrCsx6M* zGEzuHajwPtjzmM)4kbQUHslWEL)FA4Q$=EaVu|d9a6YasonoiH@px~~Pi$&8C@DuY z7s}jr3EfV4O4UEC57koh;1~_l<}704;M%YBE0|qr+Yq-paDHmPGaJauX;z$dHJc){ zs;t#WM=sJ7@}zHkoeV?6cauNF+^NF4u1*#$j~?Jx;(N=#ZcZ{XScr6L>gR}OyTxYt zct@Q+vol>2vhKm=Xtv2WVzEA8UlMM4SopGfe53V8EOB>AH@d>Ng3v*9C^mPuhRd@0 z`$EUCO8Hci?w8@XsEDY7qU@rgUAv8}^t+g^_WQf33yUJ8&*ACADIQajbzeH~{&=_5 z4uh(ARyhmIJs%(|VP2P!3sj>^Vqi0oxHQRkmhTzg#_g;8_H^-fm05iS+r3uB)$3zBVn zJN#mJLnbe1L3C2YWBcCPgzZRvYGEq6Z7sfA%+YDMli~ZwwtgcF5$??O2H)>caX)D` zbUP!-bLXH>EaGW4R{vt3sQP zk>@q{;XUM->?$fZXH&*TMtY_9PVpM+i!VMYsVA3Ex;VxSIPJot+ma6)Ha`$DRd78d z+fvYQ5D)ev!dYLsDri%nc|rg$`nvgTD9#m`MFHpwA)!FtGT%-*x~F+*OQ-K{-MqCT zO@*V(g9ClV%v`G_BaN8zdAf+xE+p$P6-+=Dx9Hd_t5|YCwv@DY!9dcSN#vBBGiVde zJiiaI#lfMxiv2n9K>5lN4$g@46H0TpFFkFH{^7(cn;o;gCpW31YTMg z+C5=(vM{%_6><_~`uPqa@EZGTE+)pGZ?Q8IWzvvSWV~x-W5~$Md7JYllNcc*Bcq7T z(`Q1;_oV;zaqvG;CSyCh=R#auj*gC;jy#-JHbz|Bf`WovH*ay>y2SzB!C~ucY4^m5 z!_t=dkDL5?pL>S31~w+o?M$pJ8L{_$qHkqyC(6Wxeb8Tj{#d7>lgY0qS=#<`1ig00faAZe+i0kKXfxN^BMY#Twy%-^~%_0z}gVyAp!ej6+E><@{bCGL!EUBBRdCJgyHgz8+W&($-S{i-+5DA|o4% znB9uGk;UEJ*3FfEvw;1%s(5#2-8O#S#kl=BZZ1wOKmPp^2PL>4_2B%k=l{8)eiaGDp1A$7^xrROvV;3^mkyBqw)n!-7w}Bc zU8KstxugN^r~kZ!`R^MhHC8ww331(kr850~DG%Ha`NLA?Z$ctvY>&gWpb9Bs3H~>q znx^ndS4kzwNH@^cEzX3Lhid)wH{SpU- zaWve#^jxPh2mkNenHKUA;q86Cnx4|8#5agPQy$mB_`A0Lmk$Qo3K?kmT_ydhK)TtY z<7K~J(!_4$dP(%ZQAq}nu8wP+?Z3J77~D_U^51OFSRH7qV#9yx-)Jix-0$O{rS$LG z%EtB1cbLD}CiVLzWpF>)vLXNDZUEE+*Exk}IN#3`2mAffM{vI|n~ICSsZ^o@Xtck` zNQCP5OS0g89B2og-?iaD0R(H-=EV8?rT;4GU(#>?ucH1H@BV-GsD?q=aIr{wm$|QN z6J6reE1~s)u^~NB%vj+VVGjL@;0;a&FDV!$1;4H{IyAiPBzt|uhRr}YbA{H0BLQ0P z8!n8BOCF``YOyo4=n<~#H2S)*;aYUE=teJdR{89wy9ntVb@CA2ZK~WKUxvDD+YZZC zR9_p0Hb}eGoIEG;&SN!tBzeHHf`dc5G`DoP-z+D#c+jS)u!V1+at?ZhjC{U$z|thE zsOKS-j-Apae#=4M_yiTscLVeoOir~}R&l>+?8{fyTeqjQ)+fd?9V=H(Ar#8#VmW~$+B`c%WAc46Aj-03oKl&qe<;j5O;@o24vA;HttyNG6#t;v0^q_ zd&G{ox{&gZjR7kz?|kWV)tKyxl#;4>ivW^7brwd}jFT4|CX<5V!|2_|{NHOQ5;UpB z@4bJbV=&j-VAB1Tr|Z=+h8VM_D{$Q>j^62qm&tIYvy^QR5GvEz=v#&lx$n$gdQN`UV6qf$1j z5BG_K`ufyCL`E6h(`q4TlwQN(imluz4DOmx9qICywIAZOEFJZ+`*!(FGPR44QESX? z_nkE#i^|njVHk>NoVTfxpmF1&bO;*ylJ{s_?3evf4Jwi@Bo%aUDZ!!l$s7F}2|oDq zbIgpam|E`q0EaV;i4-(hyF|=Qm+XuxbM}#39^A3dYtGEPI7woxm~^P)eM=H@SWO~x zH1XuRoziDI?2;Ge5ZzmNlQ#pGfHxGl@_UMmo2a$Gf73*HQ{=2-()kjJ{)a-WjYQ2B}mopNul2w9SxwnkTBif8zbTe|9%d2lzQVV((ebkyQm`FWSVM>OZLypkpd&`?$n~2S- zeS}>1wV)xjpv$ag`i_MvihLGDwOxhRW%%;!hpf}taw>1pIZwPtW`u|9x|sCqy(IP- z%oRywNBB8!jlM~Jc}`3K`Sk62(?z2grB@HvcMW#SG1;;OM*Igq?#67+s#gnD?ax~& zSUJ_wm_mElJ*`*755~nim1O8tE3DkcHp8p;4CmQG$P$tEi0u|D#N39`W;0LQBjCyN zO@YLAx`q7Gqja{-+}9E0vl-!B;{`8|?ddA%OIrQUwU^8?m7*OhvgmUI7^D?@zP6Hu z@RHeva8d-XPr+HelL$hKM?7{f@57k!4Fzdo&aF%me$UyY_1rfrM&!s4NE_hK$sEPK zi3)6p!~Mn7Hjj-0B!Zydq0cb9Tnk`Olw+k?IB zqVf2h@2Q=91Li9J`mQZzx+-%)xtNm-TN35yFfBjErLFNGt~d_F%Ec2pZg9phBCg7t zRcH>Y>y67nA7#T+JaH1v4;s}G%6RtHRnb-m!C0rUw|NyBi7npwnNQ@7l_f*h zK*gjVMA#VRE9e)#GtO`ru`y`d)=$T@w>>x|7OrnoyMhTUBIKfIld-#wCaYJj7un$HTQ80r9&94Fo#_kHNEsLe4)<2OQpNXYd~z(MU7xkaM8>&q^sNEe zm5#D~_WP-wQiDq{? z&w5&OlKBmn*$t;ll8_6#l8Qa|nkjW|=*s&4n4T+WdL|jrNiAo8oi1wWeM=9u&ONk;o!-h+(Ktsx&FTSx+Xp#pbNxT_)i(fA&cr z?&S`i8e5DF*S2}!cdiY2-ZljJ^k6xGuc;jm&+xA8C1noDzIPG*#mbK!AA;bK>SV!9 ze@oZXUjY+H!=LRmN$YJ&1#vQ~vyV5h8XmZZtKx^joaNJrKIfK-ORBQ?HtlK&9eRMAc>Uf};TbaXn}@Sa zJlJ0Smf@65OG!-bgcd?eT=y)xB}Tqfwdl@;4a_6Y>ZopxL-kZ&=8Ghn!v)(f4c*2! zLHO=gG;eiX zV_j>B`IGOG2qtg%>5J%)z`zE%_v{b%Hx)`oJY07g6g-qGnTMffKx&^;IF95%vWHy5f_;o$D+ca9?n9u zX-PZUTpQux1Y`Q0huf=D>LiUTPj|8DW_A%4gLXyR6!KnksKf@vbC)Jik5-o}1J!w} zL4MesH9Vbn)F33H&s1)W!H^@E1&~j~6eytxf5ApIZEK|1uElMD3h+8y?9r9%%k9;4 z=_He(eebcB#PHD|Q1IG(L7Nx|*bm$n4yTiXQdAT~i?$x#r}b4*!{*-EvyS&5G1?^g zjjM4KRJt2MTRW52Q)8564>8c!{+})34SVB4%bYHSY|`#J&%c~9>5}7b3FqqJ&gZyO zsAW~fi;c@gZ+CMLJF{yYK^}$Fa(tkkAzzIN4exba>yV+U(4T;O4?^ANI8rqMJU|z> zP5jVp*|8WKmaZR=P-F-@}S-1x8#LTj1BIzjRn zly;fx9d*j3q;D%WlaWR#Iu3nTttfMJ>wI&F`Fi0aIqH+!-^PL~*P&_t57x%_G(eSG zv9{n?T|qEAR#X>pfg^0Qa!PcjQMLx`ku1De$rB5T-s_X{8J;b-q(j|jRpK9p>o`EHhu?^;B@}{EI>jj7y|}ce z(s|Wy3R`tOxd*vC!EkiX#-3hV!ebHK2K|SU19N9i8OqI(f*8pyv#iW*ItQGcT`XG5 zGddy(lUqw7yXbYjS;&kCaWey5t2MQEV#LaEPT&D+lw8*_a#ZJr0VweQuj z7?sv5eQu%5%6rc@4i82S*%kzCCz}gFI!kSHo8&3FL6)pzjiiv$P!lK2R-5@)GgxK| z%h9Yei$GuPcUby@p9(sLCByhrfl~-zWiW^C_zOu5!=N6bU>?@L4H4PBk&&sKo$}~d z-o-1w18Ur_mY@kCD>xOdng8?wca7=T*S99iV@Tw;j4yZ6o{9DVg9{x~xU$EM=Wu(0 z#_LCKo&ih{rBAm>E$*@RLeBR|Irk+_?}9X8i~d5%wu?*NB2IT{YV#ptzhB#5|5HrLCy4$8i(6`$8I%Pm7F|86^|yZ9B$4?SAVq11@7(DLGJs4 zeKISMKSKYlV8$lsIo3dx>T%m@Kovy^o+1pi^7~UjFQy>AZzr_=U8Sq$HPLPikL6&g zKIg)Ek5*2b2TcILDFSqSiqsYP*!fug4$d%>Z?#x?1anrcb^56HISg2IWkL!r(H9it zfC!#b?^_(FYp3J#W3-RCT)IHs1AWQpqpJFF86@16?(droI0dS(_>UPmi1N`3mR0LL zGwzG7&{_kB4Sh;4FuEP%`Vp~591;6zE z6|nODz9hzWYuu7y7qg!YFC~|54BwDl*IG{rf*1MfAS?kS0H4WZ%A*a@&!s>EAVpM_^Y5bk-!SvHG{& zf+hKYB9ta7So5gI|6#{EoS->dA?XqMn>v9x{&!11#r0n;{b9KOHM~Dcu>b46RH&oa zgC34LUT9)XuYD3%B~_lT=R%;fb>FQ_9*lhBTb&`x=-<5N5$^T77hLz z#2kaS@?EdCB{fP+rtdjJGR8&vy0t4Yx^3uQ`Id35`gy zR*~#8PAfk?q$#X=L7F*V@$IC;dx_LnCLqA>beIqx3)pAb8EI*H>y>b`NR6l3A1U_u zL0`BYY0e~Ge73oec0N!wy<+gvL>*qgHvA!}+DA*aC=OP$*ZIfaD$#W6G*Q)Q;o%j0 zhr75s>^C(S`FfYtI>3b%%7CAQ!4I=GX2uu=b#*e=uX+=4V-`8_@OkBn*qP;Os+ z3(pMgUpSs6l5Vs^d%KN2liUO7Ez{O7#hNjASyEA(mUgGwImnjJ`|yfB!n$w=on;!C#?!sdZAjKGwa}a zPTMo~V75;IPIKzgDV>0R2o(HQyWk*3dedY>OcGKcrE@&VY2IjOExoab$)P|}IXJTXoP)vabpbq+qH#g;SOJ*Cq{yI$p05myp0v?DSDdp4 zN82{;hMpnaN|i{unNi6F?%LXnu3WH!I(vr5xRQkg6z5`&qTDY&rxARAqk*2+rZ=ZM zrv_yaHy@5K$vQ(i4TaM>No7^Wq5?M12J0A`A=dg2m^}ltwFA%qifXAJZH{ofl*n1} zApwof&~AGX8?n^tdWJbC&nY0sU|=8_jrF$9rI_c9Q$67_U5bi)QRUgk5hUzJ9;4^I zde-aJG)+D#IrC9nmH2_i1z?ML9?u(S9%uNtp69@}>9*4_eLxZ1{Pts=W577jA>$ie z>);)mVa^rBs-Y`0f6%zCfzba>(<1e6 zg4p%{R{qZGX2lMJD5R%WcCksk7 z#nhmdZmI9*DMA98+xm{Jsa@ZT_7&2?wyd%>L1Q05P~TX8O(AY@jKxtHw~B3PB3PkE zIzVbE^lkyIH~Iy8&fQOL>`iEQ=ZZeFe`E2|a*S`F)-Sa!3pw%il{nu#EfX&grPkx7U({*24&ScYu!f<~?n;&$ zOsrDX@0!r|Bn>MMJU~hdS2dm2@D><@vA9vbfj-mCTNh<%{B?rHesAdV*<`_%!pgWslts zn297L3G7op_HLeyApXe=Bre`1B9W~hFNvwY|nAXUTbT@QVL#j3OhzXnBRkVdPTy``>YI; z-|AQ$4i?58t@W!e-~0{`o=Z&$8cFlmu8hCE@Ph;m!Jy~iei4}=y5s5k6NoucW0-ve zJd@a?h~Deyr!6>dYA8~AY0%55F?^^3uv?M(t)$9PADUukGf{f41u~6XJ;_Vr9&Q}$ zY~f8$Ag`XHbJ_7KUHU|;PjXy7f*Rp?T{|=Jj-4|ctNd>((|HS` z&4vV|)Q^4)yDoA}UWIi$b-oAL7sAcoV+pze!}I`1%>Ct1$?Wobl8H+NbI^NSYE>pl zJIwCyq)~;(gMPUTd=J&89cT~CBA?bDtj4NdD2RQ)I4PhUUq+Uouj%*m8Mj4 zT)LYUp5ULrO=4ccHrbT#h_AA<1u?OOuXbS_6oPfoD>`qEO7mwZG_VfV=EOI2z75fx z`pn*g7PsEpo{Cohh!b`9l)W`B-of>oo(FqabcH;rQJ);Lt*~#Lzqex;V{xzVd-~zy z$A6U~qE7j{tA^vr^F`LR{He49$Uf5acXbT51x z)hHAWx4ln^p$!a00r!=J&}vmWS(AlW6!$%=l1{6_3yc0dUoxVLr+?wvqv_T4CXvRU zCPLDH4Qd^}Hf50kAT_Dj_7zczl)AbsY>TTSKILZK>ho0q<5K)iD==5K!$R<{iKr-1 zTCVd&U13_5k>K{xg|nYBHp*o7s1_kcv7sQu#|#5(Z&UEuk#fhYg9|w~s zeAX#-&Q+m1Jd%CWo58}Q##e4CDykjse1w}v{?bf^1sTS2xBsY#!m!LQU(=Hmc4TxDBtTgMK&rjmk0`ych8RG+= z>!??d4HC1KMuu%>(Ld>%4HoZooFXl$3yh6XixuFJqplt%ZJVw#T|Q)_`*U_Y{%dwj z<|Yav-pmdrMHmROw;l&o=-@QJtr0%oQu+F4jsP1!8Zj zV?Cf-o8D59ay7&Pu|3)1E}_mW0f%~tA8xl@pJXw+EfcBEMU#7`@eO2WYA`pZ$Bb&e^gP?guo$Hk0(7tO&`NnyW2KVR$JZEn8c;|cU zH2CIw==qen_M5&*HBkwqo$MQO?GIJgjSLi7`8L+wB+FG*=%i|smKC6ARx;$krdwY* zoe1+gyy>}B%OGF9h2*-V%Y=vmqxFM)f+m~SZ|GfE-A9R_tYW9%ZKCbnEO;iRGvW`~ z4+_ZI+(1A!OVvu8>%s$Wb74gC#V2ZyCJ)mU z+&^t`&4aC!wXx=vI=V6b07JV6;Nv>n>YB|a8-V*D8tb}HCgntFo2uinjYi(jEA>2! zKLYY_7e~pU@+(*9cB6VH7{WewYhjU&(6MQ_YEn<<_-N5%vjW3_;`^&t^vcFYv)k<9 zrwnyaEtkIk^a46I)(ir^`}TmsAmO<;&d>!G2+1HF{XQkOSyos}BD{8SUo~S%IYCJ= z4D+=e#A^M(e1ef#Xo>&fN}yne$9e|zW03ot!Hh3+U|Ln&MU?M2nK#lbVL8t$DM+lm zbZvig1p3O9EDZ~npA>_7P@4TJ$A)fz>d6?&Sub=5DYr9O_PjA=@2s1zy)kQ8av)Tg zF$8c^3fKF8iq^|ZKRXY`g%F5!TWN5=(HbWzjGe_G)3U_y!z|8{hY;JbXRlU_>}N;J ziA%rKv2Ec+PP|@61s$HP9H(1kon(&|cC?JTZK7Nb2JBtUkvxE*F+X7zwXRqE*ErKf z9yoBvl6LE5NT#hs7>N0>d2Py&^}#mjmjm}C6xH&W!J@vLPUmE$!JGbAyWBVdMiiZW zM)5kCs}L}X%?MfM4Xiv%?gLiS8YI}F&zXlE5dr(=#h~KBaHQ)sm2QMSXA!D$k{4Nz zyU}Y9WH;iz`SI>K(LyI;+gSUa>j(m6&!fY`A#9mxY{W^_SYCxH%FzPzLJC*qKjk9% z;u3A3U^QYjb}<>G>>L5?_EN##vbHYC%u%zRrJ2^)quMkQTa6@VIOlscyW;t1O=8R; z8FV{Bz*-+rpECS(mZQ*=TINb2%->+njVtGEGmvI6R)8(i1*RnH`6v-v(W8pHhFy<3 zc0F0)MX6dp^`!P|J*Nfsz_9N&on5=6Q~}`XH#N>8zWrdQjvt}q&)KwV;88@dIR=ZQJYp*UK?0`*X>G%S=pZw%F37V= zTS={Z)#Q2wB0a4=0m3f_hBw!x{juTr<)HhI+U3w@=;01(Mi#oGynL!9&3(QIm2#2i z*;%*5q+f-HkT%v7{DJoEol;%);>bW+n=_S!Naad?B5FK+;?l$tG5?^Vn|nTBY7EYb zgW)a=#RcLgSE@UhNxrK%H@~#nCLSLsez0ZNa5a4G%$kow@ex2(byL_0FqR8H^p5M;=Q+SkuC-tZPh_H*Ow}&fYfJ)E_#$#Pz)D|Hxhz=

gOoj58N7^gd#V3bWFer9+`E*=IcU?vfE{z$?Gt|@AQE9H0C^J7MYQm|4^w-{1;Yfmmxt? zpXgpTI0G`F)lQD*J_b7kOzHvXr&5yrC?U`gp@x#`pFVfs#gtnPIxSd-)_Rc|V43Jo zsQXWYac9vEE$Cv4d-Y-D%%x1ZH@KFI8VNdA&ZBnFT%LVXyiG=N&eyPm=JJ#C{DGqJ7FNe0vb^25-58bn4Oft<-HW>aPYxf*;#R^oKOX(gQxv za1g(Ov@L+8QnJm?0ZKOC}Q;WQ$R0ak-vBfxA%XP98O}+TkVR{kO}elVC>JHPH~P5;CsZygXiyQZM)gH^I%Y zbr5kgTK-()SS=Jg?1zcLs-tN^@R3`rj$kf>tX|>YAJxt^!iLQX%|AsZ`GWQc<^>Kr>^@o|c~T>4uJ)53;_m?R5|tDYNS;{dSN`SvHW7b`0LLp3n_5MjKs*%6rV)J} z1Sr@y94g_NOudZVrwm`>2p*a9O4MToMlTZXdX*K{aA2?#_KcG|tI3ZoySG`koYKn! z1k?S_+hTyQGx937E@*A$1 zELLqULXqaF^z5hj(X1XdYA#@!Dh2HFKW>7?$VO3*)S8-!45z~3{ zTw8YUN=N!ZBX8@&jO@zQY3)JPzw#n5&0Jcnh)P<~mL!c#)WX19u)#@M6|^iUd4}EI z`p#EpE=aG7B{?sH`MPMV$Ii?Q7zooX@v+1?>Gy+qzOq|$OQ$Aav`Q@kpG|BaqVMGp zE!o=e%d)aur(iJ;<8woIw^XHN97TZi1hG{jJ#%=4AZxU^r-u;majite;lXYy;M9J) zx@o#0$65Nr`yqp*hEc42=f`l}D18f)SWuTG+Lz!N{v;3YRC6V#Qt8BpA+{b%y?(FC zApEQ|U+F1NSCoo)Jm^P6@?pmj6bo#MbIR0Sn1s)zL|Z;o*L60`qQbKE$XES%4V*Xn zjJkpVC#3(QL%&HXIcl*GomtTOkR{&DCca*5GQyx!Yj`DW4NK<*(1GoYg6EFP4qz)r zF*!9ifw1x}8|2+F*(B%q^=YiR>^R7R+M@5%aWIz@YunwnWzjG5v897lM6k2i@>_-E zq8?2)t3cy@Yz%cG=H{|;9T@1$u2_iT7uI(N^s>~GBm(e_%!>J9Euop@V8B)hHr;J} z%>csWOmO_(Qw!AS8-_S+`P^Sz^T+cEfhnZRA8mi>e-@0wpkS=sC9`u;q=cRbD68{0 z+#R990kjDNzYfFk`XC0<2|(D(I`xWsYz`!l#i(-^&-O0y39y1(b_Scvj%^8EkF}we zR?v$rdEfzG+edlstGkTs4y)hx=vGyivz=;{%W*@q;Uj$=>djJuL{{!AZLTzNDQH=i zp_^J=0bj5a8x6N>OnB5Ncz9k53enwYzEXXvW> zAHe3ZoLXeK!1yawHONN+ab02^i=u8*6d-|9bpooPX3Xy1YFjFpu8YXU3Kcn2B1jpy zoB+#J*{z!=F7<+#Jjl(9NXg>AyE6^|9)LsMoXCfpJBj;&AQTAF;%z|LNnCzIYjfXk zK7q4j&_&C+rR#2(H1+jf7YfjcZRLc z_{z;EsThc-tpvyYc{+thwp+)Z?*)$Yc0%`O)sYU(1sm^!+>%Gr*OO-Svx^9N`rXMu zn7Rxc>}K~-*KIezb}i4QelF5mo}^LV`=Dy0pADJzN#iFSmA`V7xb`J$EXCzMY@KKa z>^yWMr4WD+-3zK>OMte=f@F(#E&~+_Y~JZ3k91~B1b5QL39nM=xhCem6~WXPn}_|b zi&e0e71puZrm(XhC5Xbyr$7z;nB@r6ClQ1V zi&3!v$Q|7$D8I^THYsAjy@LUDq#f~E``vSL_zZ5(qxdW|v9y?SEU~-ca23U4@U#yU zVefjhZCl1-XhXU=b2FaIX!0qc)9m;!_5;Xa z9p=!zF)A3SL-yAS>*-x5WQ*28hRAcpRtx{b0)+%wVcWH1p-Af3Zg7adBT)*;T14wD zrN`&GF&926w*2*i2`K8b0?2o09d5a!dC_ zz{kDy7HT@msqc$i4uD-4Qvs;N6b#(H#Zb`06p?bGOi)GeO#L z_5nNAex;sJ_T@B9GM0A^ieFw$efqqJm+WB?KMp}u=9mq8ng8WZCLnWV@ttSSw#K46 z!MoxBa52HQuh~P>f(rmqD+Jtd%6fxBO@DdVnSJ3WSo^yApY5yhiE@E=K6Ru$pnOq8 zoRmvupwM6I1Ekup1;8>DWA1O1g!l^ygV?k~oVP=Bk+OO!f`!8q@5cvO&IecujajT4 zpb>ur&Ro`e@a3GxyW(LNOn;sO7m&fmJCIrfEgk*&uuUX3)SNDt(xSTn#6j|(#W6c| zK^SC#E>OseKlSBl6=049X+vuNg1kV26M6+3-(=|QALr$GkgF#V)jI>0zlSwz(A*7t z!|n2b)&TeAiU2ZmG6$qGNn_(YTTldBb+%ydIt*6aCk`xC_#P-~9@+mY^6?1PBCrKy zALuP;hJ)b2FY~8Yv6OR@))+yl@$rlxGB;ww>}-J&T1E7`ti4&ZUeXsVK?tO^_;9&2 zC`sdKS9hMcq&+{wW+f~Z*)7BqhxvLzfxQ^a@a76ZcS*rKq+h7zuMgwW&j!Fx(N3%) zwnqB5#zDq8aTSYDvg?%J4n1Utf_dzAAHcZ=54t8Sf8IA}U zUe9)tV;|(}(^eUjVYG{K~+3i`dHP?hfDrhSvo##5Z16r=?+aVpB+CV6JKv zS#9<~QBPB}+T5f{(DWx|YvTu=Au`5ZQ;IFXL5$H@VJ+29dUD!AWa#aOGyHuyBzQ4fA@dw7rLuVBDnQ z=6tIMF!kT>P0NUD4ycl3&DItZlyU+hBlbKIYF1`6$aBx2AM{6NyVwj?2s*azV%r3f zbk8{$nJt#t$E|DuYK}6^`b;3aiiiKB@Q50H4qi_Cz}Yo-*K<5Y_W}9RHQomlvBNWT zi%v3{SVWwsO(fU@99>CKkr(`^5Q~LMsPj~Zok1h_5zAz)WOLu?ikG)?>5A?I&4P+Q zDGbie1;$i)Iby6$>wyAezGJ+NPO2+L;=7RL{-ie0noKd<=@kJ9qapFYHbY)D$&yP>{IY`R~}Z`Z3gQk#d0fOyKxyV~+!}>0vL5=iyy1|Rmf z9-8_~z<`K8(uVwbvWoRn9gpb2*7)^oDpZt^y{Vs~9jmOfJT~lPwGBSID_9*ni%kSR z{~-~SRJsUO_5`&;_CXO_rPU1TmrVpe5(6h|$HIdq{e>pARf9I-3LxbZ{fCr~XIN`X zGoASi-w>RIa`y`&`D%kLG_Z+*)o~UZhF#_V(a?Vy4d{nOO1xT4r4=2pH9FP+O#q0uk04uKlAmP=*jM$^cX&Za~6l2*fIr$>vC@&=p$4ld&qE zbB$~{>|z3n!wk@w7*SUTXLXq{tP{%peQg%gJL2FQA9k_d1#moF{A-;qpw{-|(w2|7 zdAVw*JBJhDBB;18T|e0p9saWk*&>kCHULGA95|||k zDtBF)8huro4SOci+4dghCk6pd#uS-hGm8lzf~Q-sks23cTe!4;R57+I0*3%n0UlLx zwW{)0LueB`48A5nby zAZVZ9c8LKN_pSJ!j2@H6;5F%x3G}Fs!eR~o)L@EkFt-l|0@AhWoX|fiEgzm)?|~OJ zkcXY$>9G8xZU9=}8zf;XtcH~y=AUiRJD+}+%-FL2r|@F`-xeMk44F)hb>EO`et$s9DTZJHC%byV{dD$4a>U0fCISS z8x86M<+c^(0RM*atAlPMx-usc%hMsj*cgQE!={l>Vj+$n;F%;}k5dxY$XE~8dBP2J z4wzXncb~nK7$5+V*x~g*%CC&}gVaw0By5?d{%L^!oI#Eopdc&Ff-s!ID)m@SB(TGl zwqtp=WwaroGQm=UZ8B<{^#~-4ipn+|3-Qxk`(b^?F8f8p9^1zM<7)k{Py7oF`fot_ z)x7;#P91lK|3>3~HTeHcWq;M)M?kaxZ>h{n_e|pfsQz#c4_Ra}$UnalYAzOkkQ}-H z<_(iCAt3?5Mz2I3Twku;cBNXUN&1%yqGBq`7#zO`#$5GWPiGMwT6>C+loh z2Ob_H&Itku99+^DI6q(BzT~xpNktbGqQIdp?X4(5+mvW-10Sw}$}liRP2yTaO_2*+1-$`t(cdcmlvxPiujHV@8_09M8?IZB=Ba;Y`O0>wzgNe{~ zUp~H033w|(1Z|gz*6@|cFyDNk3V4>t5SUt`7f$l>qO@(Lidao{0QZ6at+Jm5^X!X@ zIsUA$$`ho9??0!J9NV!3qXFKd!1RGInGnOdYg<;1o?D~%CEy5aIsb?o5B?8;>f3PF zn#csv&$kMU`wt$R#3!*csPkX0#kGC?v{4#IiSq4vCCW4Yvwz#yE$Pn_5#<(u6j^8K zedwT`XpYG$aR7*Y+X(@H@(p2$PFh?ckwW&LM#RZ2qAiLeX#{PO;~6sA5$0wWPuzoC z;RioAKi&PM9<0c|QJ)Alm@NjAdvwK_6ovQ&#QugBs>*e9g;z5ntn(gZakvWGl}v%t zq;ZKd;1s;k5a3ySPaejO2f*QHrhAYJH_%#=AyWDGLZon$gpM15mp|D}!4yj^dL^~E zXbA<}s=558LAd10!TcsptvG46-iJ}FU8C8hV}vEGLKt$9{DnwBRO-MU{g<1)+!*zP zb(b)a{rq+CL;ZKPJ@tRlz->RU0=Zxa8kbmrS8oo2#(z4g`t~cu_j<8H_ABon17M>> z3rs|Z&daio3OUSabkZ?Bxb|hON6V@V^zBL6_ad)NoO`2SnTMpb{OU_~DyarwBSa-& zu3dp}-{rel{+5+(#=*q;DiB|}G?`(+GdYKNPu@YfI2)A)y#C_(Im!k5EKG00MwWX+ zY$DU&_J8XF*#9$*_)|*P$Tq-KLYSCp4}8OeY+`@5j&R90CRk~xnr4H^hnF6lxk@R_A-NqPYq@ukZlQ{d9a}*twZEIihCpxXo&)`J%Oo>Uv3^+ZFu{!`~O-+=m)zpE3tEVX4>)VYtpY(`0$oV#0 z5pT|)&wfdh$N`+x^*Mar!NrE1c0aIUbz$BE7O_vGC+gqb_67|Qyd|sefLT|JX-~L| zFfCh=o^i~+`}9bJn2p1#@9Rncdm}l=Iyik@UeDk;C>PC_g+%3m64>KDI?612229@q zwS{*)t~|hEe%cUGzkG128JTW{Pwxa@tOwjdsuD1Ynb;wJ2ELO9{n!&AeU=B?Q;vXT zSS}3cDU~l8SsE9r4?XzJdvkLmpE=Xn?#`FAx!1eRrl$@9kDSFk(0Dj}^;87k>_NA) zSw*KkN@of%Wq9LJ;$URuI{+kai)mi)<}hhb-hE&s8VZ&;V{Y+C!L6goaCE!by zwu(R8k=spcxq0;s%rtsKMTfW|3;ha2K%oG}#%u2G+0kn)&hJI7G%wr3x}V`CFjR<26@ zWbo>~d!T(qMbz)s1?}25=Qc-%zNfnBo32fFEco-ZE)5|Lb}+F%H)l_re%K>FP;9YZ zekJir*i~YC5rCWya(OHhL6Z|g{qAGGgCx_>Q{poqT%b|wcybo%Lf{a=5cq0}AFHF{ z=ft+)1CAr^?j6`!jP_cDk3rPut~!Gt(H@!18BGkL{ie259YmQ1`*k~6Jrf|DJ45~t zd+!+(Www0}E24r4B&nz%NN6%5qM!uHO>S}$L}?_WM9HFL1f&T{5F}@iCT9mkpaCT# zX%HnRl_>e$k9UICnLGDa^;Z2q-4D)KWz#&*3H$85_FC&8N5vs^!xx*U@>;G9QfGt> zE3!PkB^902%pc+oktbXJey@$B&J6>R9|zz=EgU9hJ&VCCghOaP(ld$-$?2-AQyukY z<|mu+ylgl$MlHX3HO6&1^=XwlY3YfUzCu*j@&($R40|97OinNqiuhp+D2#FH3GS;p zO0qsl3TqnQj1|z?m}Kcorz)}>H9iBy>TcjQwNAIY1W=JZHjtMN%FJ8sdHL?NO%*14 zp=NWzPM)hc;+@`yhnf+kMsXgWJaQyX6uwW`Xb@lACs*!N^s z>!PkXk!xi7QJ=!qJB^FuKqN=dw2S4;*GoV&y}|H^f-#k)tvE;UZM^eDbeuM4iH&d& z-;F*%X$M4`RT&jNqU)Ks*bZ5wKX+WrrWvIsq^U%hHO+$Sk5Q#Sn09&Ht_jWokX>t0 z=h}sl`MLHpYhS61;B1`B>Rfb13#0^}MBh)u+KB8<-Pz{*3Iwi=Ptyf&8dxSvJ)Y`C zOb@O6l0sx&`6)O~0BIFsWo{izC5dSMg2$z(E}08HD+i$;sSmT+U-8EwCRWoZz0 zf+Zol*f4euH`evVaYo!Ws?n6v5kaSYroml}G0aItkI?hCs(j4R&botPNxZ*4{1a^3;|i22%!@5vigBBm=PweuKao2P_tXO`4A zy;Sk{QGU-acxTgxas^gpzrmuJ-hE494Yj5G>66V&&S@w-&_dtabiQn_UN!GmS86Wd zCHHs~9(;M57e?Z7k(dw_V$;JD$mteez;memD=tV@I6)VwB0 z$UhaOkezb>#@e8jxHEO1)}s=dV(FLAr~XU`#3D(&@vk5^%{GvV_Mqw=dAH$pSz+TB zM;HgQ#qD!L2IdCyGnKEw(ko~|^>b2dja^2vo@Ig0=?k~K!^I9K*VHxd)NdrBTp^4P z0bhQ~8L_GJIBBwYRgz>0;*sA|EPEHZqOgJ@`a1O?Yn4NOhBNV(?xlZrpgmyjMM*1= zZ5OIIy56{;7rfz*mnFcTn^IZl37vbRdChZCT?gCXv>pan$u^WqQ#MEB8MRTG%*ITg zA1EZ!nghH;NqUWgD5P&xIy%_Ytf$dCahp;34w+BhJyU(j@%3?;E7j#r;A4iK%Cl1D z&K=p<(|h{mDo2#1g4=+^k+;Bq2O^)SXqou!-4%uxQylKkruvQuo9m!!d#A2(`Ou5A zccnzbKB)~AqkI&uB-9*qQ7UR$s}Ql&(~|LILT$_eO1oNBM|R4>umzm4+7Xs$jcn&v zM1Qk;(+$r3VIW;kw}jV@c{9A939U<@KARq(a!JNp{8>X{M7qz$zAt1y%!m{u{%W71 zE~C@1)q#B5VmYH>Mlok`3XSGLvsJ)28yRcWOy#QZ`%td4){1)fH7|~) zY#FtCFUV8g%CZ>AUmjLa9#Q9&KrO4w)MNE1PNjXu9YQsoSWhdtb4NTvs#6A%V-D4` zn5bh--WUt1emEV*_JUQ#sj&vB zszc!WKyxP+>UhOc$5M5l?k z*>6WIcb{I-x@Dc6Te67V+V^L9qvA@uT$;w*Vquo=LWQM0mRT!PU;FM-tE#dr=lDVE zPhlnMu|TX!jpa2GADHOIyPUwzMEIUZd<1Jeakm~FBy*JTJ<_~i$n==GVstW?(;Gs%c8F~pR4Y4I95mS3+_VGBQ85~%gEroMcui;yZ#xDheC7r9CqjFtbWep zb4x+3vD+NR)Zi4Pw3^bDJM2Y z^Y<@}j0%~@b4OCWby-gz!K#0oRrtoCU`yXDENsQXwmo-LbPLN`o-d-_t=ydVWglnG zouy;m%AOtcGPjb;$HY5ME~Hn@a~L7Aqz%!mxf66p^Uv_!6tg|i`$I8l?hPsJ^N?{x zoS9B&(j0{Lx4})ktrX`WYQ*K1m}b^CGdIu4OsSqWBgW7iV4J!cn}+STZQ&9o+UCvw zOeFBQvnJW}Hi|HJHG!}cY|1wb5+b4LcX~{c(93mop)grDTcXHmfur^)o`Y#i;`Mq>`tfGOoxgqk7t# zi;O49ci2-`7?To^MMbDXtDkKXteyulP z_DsFYFIZ~0eU{z^zL8S6oj`PNmxxWkb-km)`>WwgYGJ9 z3OcoQ2oE+s|E$HZL*Gh0FOn8Pt?tBOLi*=G@}4FIEQ3uO!7^4*1pdp>JJLNPGjcJp zSvDgzA|p7@<!LmrH>D>H5&&{1gmqb*T%a!Z3y_e)n!C+2Z;OU&7 z2gj4K?skGP-UX6C^>9?}mrc#G(BL9W^g}-W4Q9cd#d>F6apnHzNfiRbL)@cBXk?4~2^tue5s|J1gYfF!sZ) z%~F8u=a|L13k{Z`1_%$`(~XAPDuXf5MdvApOuw{2F{j`SZJW13(CO?CA)`(?MW0WM zI$jMfLa)!ede1NolJ29+IqEJt1kKRxHGd$;)@=j(p;&Q$dMNtXyKW^PUwd<^aK?eU z#KM>)>FXypjwPc?fCh2VY3?qQa^A}~e2`Hde)v7X5lZ4b`=q*q?R7a7nD6IpIHYTD z152k>G;;z7qHU+#4~G?hGM7#DH8h{Pt$^dt+K(~8=%q?VM7MVODe@(8uJ5J7za+~N zPvXo~YAyF^ly6av6=?H3H?4Ih++^j;FX6o>2!E8}V&@TjMntCuBdK%#M!NZOLrpf@ zNrtVr$LX$~iOR6u^q}c2_)Nnt4}jb|(KWI&hxeVY+vdu@NxJ_wXZaXTv)l5Nbb#6I zL=68x{Ns~qI=ZUo9>ve-v@C^BR~^TiY2}NZO3K+2M`I}-kt%VRHJJzd(eboM8OT(k zsJzmW*}Kkb`7cl&w&`mNs3 zYEB}9BB^yExa*`pG@nNSIVDpw)Gtt|Dm!NXSivrkPFgYO}dhmUO5zD zd98wormll=Ce(db#pA;(FOMl>TXh9(nI&Zo^A?tkJ`cGKhHc2IzMK!R^q+gD=dq(D z!L?Ff!P3POL3JrZFtf*3x=z-b`t;G{n}@gW=d&iWgb#qgk8(@DE#^)|FC{GeLkzzK zkQTD0coDYsRJWSTRPG<*!3SBBUGwtDHan%MeH;Yrh$~t15HjRcsxAaj-^j0@>Sr^*^(C zEX#}9bxs`vdDou7GuYk}Q7hNQ?9O>^uk`Kgy%j^LL!>C0!8)$T?2>$2{^hhmpF20( z`)sXz6V-f*MsBTG_%__{`QYL{-0OaDZ{3Q0%wj1z9-*e6AmSb~_hKp~h`XXmbRA>k z7N|1Qo2!=>^5*F*rUi5o4uu))Qr{&WO3JF;XS9K)nLP52F`g-u3Y%)k!5`-K3|tzg ze2<=<@Z=(4{gOkCNwe#TJ2+FSIuLI7S_^j*ED^DXHr$WONPjc-)ge;qXNSjVO(7FO`!n&}2!kn*>j%8a^pZ1#s0&;Wr@O|d1G z>7o}ofv*PUi?JD4@EaAlX7_Z1HypH zz^;W>M(YEuxGK2s^|sT{J--o?@Eumx50^)iMOiL!JnlZ?p(c_)RR$y1D{5*45b#&!$c}soaHEJAk%^QJITIaz z*MoJ(>yNUJJVOY9nO*`yuZ3zB7o?duj@78OJVQ;IUn8=(stMhsHB4E>>^`_I{)gI@kwu9D|Fm!<~MF4r*A6-spy2j zbQO2i7jd2gc0Rjpvcw2!sVxtUr~7ejM6yD3kil1>`M8c_BWn+w0gXKK15^-`-)})U zhvdc0LSH#^?GzTvZollPz=!M(apkMqzLQFDn{O}Xw!^1Fv> zIny~TPrK!7TOH=!cdUsDu8+^nJh*ZC>g5Z)f)nzNJf^=2`FwJkYG=@JoES{7{j*o% zMWBE%oU9Fdmw~|ElF-Z0P74cD*5&sN8Mx=x#Xrjym_ZdMz=oz@bJ^e&TC= zkst;P=EP}eALPhF`gdH+()Z7)hL+4s2$G$a0oL!}bV_jaF$K)8!TsNJXsJB~r~bs= zpf!+j70JjxLMx+Z7(3>DQ4X3D&ZEb_!#pw()O%l>{Q3Nle!N&fdME)1((m*%jPflC zdJbbgHpCbK?98_H#}oC8t_IOF?kc(G^=euN8;ML_9Y7?rMp&xj+ulD zf+YVo%zM1dkpuD*a*l9qoHMv?EP2R@uEONjzi0Nf}FR^B@%cX z1|J)hXpuX0?E?t%X^1&^^i}>Ba82UpZp<&|8JE3w?h86JN_3L{udR0 zJevQXMa4TwoVJ&LrVKm~lSV*OCocLxzVSP74Tx)7oM0Cy$m;uwtGG03-q2bYd!HHh zel^F+3;p)K8h6)S^S-Ue9wPG&gc)yw7M%)v2<*DJN=GS6#MwvpU5 z>xd6{PL3r#mm~h~JcS2hltiO_$}JYBYRIvQPYQ^Cl??M=(cL{ z!zp|xOdP7vyNu*UPY?Y!Y6Ve+Ug`HwzLnIGZ+sw47xFU^GU;bN?yA|XahC~Vz^v?50PwXEVA}=Z(T5v zA>}swGE-{N_x32=wf8Gvk#kd6K>UR+G6*S1uJ@lF-$or{vMq1$5peA8VMzR&KX$Ju zJr^nmAz}*`zKJn&aInZMTvv&KnEg7uA)5N{hyGlIOq7izW_4%tbLC;~vKL8Or63wz z0ER^V)CJQsL=2F?$tHVWOUfaZRsW%KK^R6)j9{9*UqQkcHB1iwxpzB1iV|{Kyu?2e zQF`&QFOEz0gXx^@+I3tVIEOqpp!FCixZOB5fzMZdF4R++Sw5O|uL|$<;?Pk>0wV*o z`n@n`f82rO55(Reo1m0y#6QUr)G-Sn!OffML444M5$lbP+v@nQ$|CEpb74T3&)x#S z&H<{|M_sDh+)g;AK|qRzK?C`r7t{w%9a1OCf$S8u$?Gse2Za{}{L+8=g`Bsa7E2Ag z1B+o8#K+{tpFwH#3FtGNr67ltp4ZA*Bop2G02(`s%N|?zOF{5e9(GvsyT0RhssW ztN#Qni=%(PEWVSS)}?8%;2-s@5>$%>k4SI^H0{gPE5(=UwH=V~>aKLMS%WU0z;Uc2 zcTD;mD2MJr+usQWJ%zdwP|2aQcVF!-U+Fa_$EJ2jL`1$}(>jcalDK~0-zRbpu_{uy zut3tTDn`v_&W{lQHB061>=f3|BB|CHDX2}L zt{{}AtxQv;a@Yxd#XueFR?E(W;;pF#X%qiLO25O>l!T&81viXd(N|*O3mic0@i2&A zkNiN7E(TUkfAHC>y=ZkdhxvgXL||bJ%1)bAu?MPB{h%!X#N^WuY~jx}TZ{4|c}b(o zPxiK5r#bWz`Y;Wd!vH?K-yS9N{Nix%$jJ{N5SR7*Jex?&kz0i0A=`BZ5NR0X7PG(J z|8#V>TRA)ZAie$PUxjmYSD-4P5d0^~l|TMl?78eDg%pIjC3-~7xo!QD%d#m%`K!4b zDGbk{TILFO{De4E#54E&V{0>sXk~5b&6u53)vw5my4fTK%M}~+Zz;Lpvz(hkc$j{dT0Z>vXcTMZc9Th#TOyifBdI_f1dEs<{@VgpOh}* zoj|8++hkJKmSOInmW1adY9)NG{47%1tt!9Xb1O+BHD9u`DwXC4U1@D8bNc!|T9)z_?n={eWdKd`yH=w4&2Y7iE9V|ENceuUqD^!D z6nuGOF<#hpB7R^UuCHlEE~qINI$`Kmpa*6L)skvgPw3zEs$3*+Y&!;s22_Gc%lmw- zC3?UBtl-Z-umitdz8)o|gL*BFafFUx8C;0aUOxmErVRNXKX1!OAVI?B(X&F`?+nxM zuwCE2)1xVgrotw^R`mdEw|K&~MI~)I&YoK!LAy*be0{cRpu|eAvqlrWE29JwLsqY} z6z8{q4VuJemjI72N%|im5ztLMDbEo+LU#Btz2$ay=zCI|H-n_~&2YQ0MF0jQ(0um9U}Ba+ln!=#Od(+Xv>O3OtApAqbInC@hD3O!{c9JvVF%dU2F z__JG>@DVZPW`)x(r{wYwW?m3)rA@9PmxG&Bn9l2`EaM}9+POu(4Cco;){(N7!6gO* zeZuoaT|;~=oS*DP%*_1GI(}(jAwh13D>A3%fFmyHKSXO1=0^bWe4nuIUFHKvX~zdOk%s9Yy3&@pq`TZ=7`ZvAyyH&#r zQ_lg@$GYnbR@h~^X?sMLuIa7bS&6Kp4-{50bR zVC_mBdZWf$0&)2Ets9iAO3P~_U}i90;W$5FybIgE{#yNF5r+U=#zEhoW(5)0Q0W#m zCH79-J>S#9E=4wY?TGiF7hho7&)ll;I`z4HDj?Hg#{c~(sIWHGD^Y`Y>yO&K#3?6s z6YsdNJqLP?h&ZQ~V3W6U^%*{6|Eq9E$5J4Eti1^W$UCm$Zq@4+yDbLb=4Sov%V-TW zL%HvQhBe@wUy_1yd$*vu(j|EWJ{|-{00=3eZiSXH8c(?Jy}nB#MPn zVFG*>&aDB)ym{-WgL;bg$*`!$XDUIo{GH)3yS6Yq$Tq`qs%-^QuL@YOz3#wEs)?Tv z2ya!DlTKxGY4uex--P3IaO^rUSh?T_u}^OlWug&hrD5>k9B<)2qP`|p3~d|SmH&3w zz37mPCYeG<8Kp!LnBqD+e?OI2V(saX`{ov)Z`2g|8IBH-Ly8g%E5t2GdyloSE+YpP z8lwdWbM1gJW0H3xpb#j#!wH{3COAJ>94s^uz#9K7=#bhVq!(E0T_DcBXQNe;kU%c? z+Yo?kO%vfO=~Bk~825`G<{AU06Q!tAKU@@JH^@xgBmIAT{^L?QY*hTaNV9bYacb(G zY4$JZmJ_9(F?$L`v_d`b8g!2Y$=F6>49=+8pHD+p`tdq&GQz4VfR|#o6rM?VeCpy5 z@PnRDXdPAq7GY$zA?*QO&S2V01goMB>4q!~;sZqpPOn+Hhd+mwDv3r3Vsu9u5%{fSl$q;R}G1vR zH*~qI@PA|f|CT?BMKoNz9omZ&K79Ygz(?|TAl6O20q>~Z>>O5!WAq}|9Jq7vbpCJ7 zJvsLPCBKKQ1Q@o`{_{Tou*hHWija<@wBZY)SssXjQ`GjB_ISmj`{t?x$oaL(W0KF3 zL@4aRX!2zxaQtKG(v+mI?FI%@Ltv{t3u=SB9?eupS1KS*H6m2#TywwY4DA$1=fnJ; z0?OqIl$znnas!g)@)Xm>4wTw_c3E4PKXByat0yhm_q%ycBZ>#Pf68eJ&k^_>qo=JO zeQ$$k|Igt!W$`@y>U6fP)_gG_KPdb*Qy`Hp=sCMR_i@&KqSH z_N~f96(2kA`tPESOLE9}yhFaDT04%0m;#D<(sK=(r_m8NzK(uch$yw@=^YQW6t!;V z8je3qmL)sLf9OvF38Ia;>4@~B?BME7OGks_AxFJBNzW1F?u=Uq;826pK8J^Q-M5vP zycX3Bt!fO*EDoMgiGM>|6p0kPqPotJ8k+Zpp*-tsfqeNFupekZ(4pLyb%)wYE@#Hw zk+M<%M#46PcIM)*a57hT?kpu(*Ljm#19#B+t>C2naD~Hn)-lp#y%9<$ym%&ar9tQ& zkl=@k0juCDY8Q7t9Vg;m5qqWJzV{eX|4t-$?o`d2)KgLXwLP$Mwq$ro;%Lz zjb?rj5|#1*lh_%shZ-zFxlGv5V67Lb;4uTYuTpE^aJOkbP^*=1u!9*!XkHdTEw33? zYjIeB#P|8tFR%6ugAGo!uAlfHQ{9e2L_(s_rn*GvNu>`~LLeX?55tuq{$c@A`l9OM-(Lvxd_iw3({jc*S zqj0s_Qr(;0aCy?}XP4lz*1NyUlW^QRJo-=HUqkw`(D6M*Gr0&+HDnO{DQ#y9PBk|p zf(LoR??rPt%dZ}rR-VFk``J!4{{jXd-Sbe=DG_mTO^24k{mH)?elD8V?1d%b1Vp1U zgs~GC$nEeJ3LV3lZGHPYe`+DTgpfvAI--1fenV2}a^ZJ)4oU!0PGx9v((zvZ3XYGg zPGC3Yj7jlN;q4cQWaFCw>)U`p_Hg5H%R;78k=J}n&>={9qSbY;=pFFDM=R{7KT=gQ z3o>1>2W8WS5C9=DCoXuTQtwWMk~Cip;0bp&SK9s+@}8v8KEgrf%2Q8u3bY|3<=|j3d|0;!a}~HsPLxKIPMlvt%gja5S1JBz zWttizh^P!;9JK3!U8T~D2zDBSgji=_|1Lft4OH|^MRN|C^xP(nWDIB0XL91VRF&ZE z3Ss!A5T@sw#2g3#7C?$)#y9jXBsbMpO75oFvnj;K4(IpH$I9FJ`6om?)DX_t1D73g zIDvAVh8p{39QeA9hzsX?3hC3M6pm}X%ECuIk6DztARW`q`ngvG6;LSig?J#@9a=!dVCC}`Ap@8 z3+%i50V}}!9!9Q|byn6`p^97so3V1B@L#hL7WhM1|Kv7A3enPME#@gY@0ySU3L+=y+D z)ZQN+usr08H1}aZ_PT zTKU~nBv@{D0qJ|2T%Pnbz+6p7Y5ALS!G>u8Y+wk3yE1gnujgTFdvN0cdn&cuR*rXN zOUij)K0vN074B1i8Nvmo6zVN!blRreHcu4Oul&2Tq<`XEF9d<-F>vcoem@3kva&;#I#rz5BjO zgTO$@IeNo0=s*|!ZCaB||FXijLM>K>Z352k5-**m!lXA<7^^=gP+vziXC0(6CCPX{ zd;QSHiuyQ((`cNf*<_+4e~}$Ptp<)WzwAR?!b9`q>CRhu{y=6EMB4AMQGJ~T{&?HY zG%k{er$A)Eu|h_w9Y5obzjpKCM^(w_q$Vc1UR?{WQedHNpeG@q9f?_1Rva=*e;((n zig2|It}#zu@A5-n>CaNStxw*5xibE?FALT6r3X@%!FQD!W{IY_?DqB+aaHBM*8@*b zuHcZqy>%O*Q-{(;P(^+Tf0iYQtLm0u<+tqiU7oq3=>fI7OLMC0MXqgdYrRLy7ZYWP zGPRA}NMW_gs=X$A4(;~`Nq`*1xFdk%t}XdZ zlSap+c!G5BnC`lvCVf-A@6jb91yvc0kife8NiXJTJYaAe&c85ybXlJIS}Sd$#;q9< zP>+L`QwOgB_T|FHJe_iTW-mzt zV^Uz^rRE-5jEVapKLc7l;f(8RGO4(;tf#0=#~~+N5tpwzCOAgE`(@vaO2md-WDzqN zIi!UJG_%}O`{5$3YK|ZK`{F(cDyoJwSK$$Tw}DXNKhh5Zl57qXgCa;gA~N>M{Ph=Z zNW|y-@pOF3PFOCIqZIIAiT4D^3nB1!8ryCZ-FAbPhKRW0k}?}1ohDwzl#f|4g1E`{ zxUG>6pC<(2a>OXQ`J>4!OXMLbvtc0E8_dK(@|g!Ms2!s{ZL}LUUXp1^JGwD)$FUVV zFkuEW#yf!?gHTXxeUX&1@9(;BX<1YGgrc-d@$$8$`KO<0b<0<~s_wg-l;mSqt#ojNpW(N8j%zDV+seQs4}sb*#gcn^TbIm1MKW3y6Z3kGuz2)xJ>z9;g-Y-ehaVd-X4`#y4h&uB(GsBNd#Iz)vMpziJ^6K05-O(1pLd?Jd!r~&2B2+Rd{;w;P0BZ9VAtRdt&-II_vP0j^*I;s zO?X!kO@qh5!y~j4S+l4-3X?#Z!o=63UpezGaLhSsay#Jb>j3VM&*?q16=F{MsY>cx z_-aBqapIQl+}8XCO-!=Fk}LZCv{{&3;J2uO*wgfzCl@`G4jeC!9H~2FGQtRQq!x^_S{LX#_qZ*Re9bVCaIG3xN-7T$u2 zTd^HfT;QYnel4Lfv( zDg?Ij&`1mGV#H0>My*#S$iB!Q561BLb86cR=Jf(WH}8m4hBgv8y%!;_Be-65+zTL#Fl8+qp)J0EV7X_w`INfT9&3+Cp#pav^-q85*0mFi7p4m!ZW z;?TKT%y*TZQpzkTr@dVFYV$Z;+%S`B-uhDK>eG~ExstPavE=d#x5pcR`M+@Owv~c> z0P6M>_C9md?=_^#QJ4yQPN2YOR?MR_h{(24X>_^c-Ed4uzVJN zEo^J1BUz?Q&)mSO=MhS+mTCntP^$zPJX!59Z#db6q`1y zOwH6lQ{Hf<2FcAlJF}UXk7G0aQQp51BVQ09m6#di#q4`xSQu3HA}^W&h5~_9n~oD} z``ONxjzw9&^Eo&^Gq+slv#?v^!CD$0bv+^#W2PIWd@EBk(F*F$asBtBKb-s&r#WsxA8R6qR`k(n`#)N1%1bU1!o1NqF|&htb(6ucR1m%8fa~&O}gO zM9d9F|_`rUp!A@?*vborN?+G zl44BMwSQ+=sF)!Weg+u>#pkOGDs;#ggnSVp`q7 zKkh4*HV~my^Y>eGIJQEW)PlHPmN$Q@C*jV{PDQhiGZ*sn^HCW=B~*PCbf`uBL9cli zry={dM=mfQ2AS#YOQLBGkzioZoSHUb)_NPtkPcd3tH30k(JzqCH-;Q*6<7K;X^~Uo}R1>Pg#Wdhn8VfmMbj*&b3bTp|M5a&6URB&Gnt0 zb&k3gWBK^E zV96M#?g39w3GnwDgblH`(0-5FJ$0!l#e+i#)8S1! zlQEhAB!-t(jtHEw33nL9>S=ib8lvV|%ak8VTHuzXK%ur))QOmAigId(Sx^*J)Y{u1 zeuUOgd%iuZe5x(=g!C(P$uv44##IsBYH#4PQ~NFO2T3DAR?JgR2T`Bj3gJtxrywep zL68_lJR_l#v7wG3k`^auGQMxC%6OfeCMN#~CMtAbm!KHI79&^3sDL}@GR+nRg@}Dw z^W@52&cvkob>G6wq=7QyTgEj(+E|VZasAvZ9nJUa3W30hBbGpbHTw zMMnNo|Cg>nVXv-<;Z8@XBJ@r6hwKV7U4YE1`JG_Lo5Pu|=+0>JUYgDM-qW$p>M)*Z zwk#L%@qCXJj=plcN&RAw!<%NOM5f+?re9Xl6w-m^F|-op@&jmLTqob4y6&UC!O{~% z5xuhlo+96Dk6!&1{GQ!jN58)Tket+HYRe_rKZz7YIG}EWkN)>^MVIv1FoVi8#p&IcJTo}A?o|D-b{pYXx zEf9bXnK>z^Q|rMhL%S_9f{wx51Zl2XzrnjZJ7MaFw3K6E8EQV$skZ4Mmp+O)GAY2( zn+|&PR^-aHhOC0>W295=cA)*Zr#sV}G0HpA8^|X-B~~9=>Gb*6$B!ps5d37zJ>wwJ z6vKX|KM={^5B>9mtn2Z&#a^r+f#}F-orw8@_WYr*@<&6MRCQOz+_3)m&axg0uC~Gz zn4@*0N2$x#DI0iRz9JHtNsrj*&Lks>DV>L?`c-*fB!5r+0qIb>;jtRiU{n`{jAvF2x8lHXUD- zh5z6~rEb!_@Ele-e&OiH{hc7qWNC`HeBDIe;UeO;5J#drn@)~p)7poLBJyGUV_Fa> zeh*PDl2NuHf=&Wc)1d%9t8gZXhyWT=q8?`QKs-M>iVBM}0g;&XaF%N-``scA5x1e| zi@o#Irsem;8@b9;2Mg;Ygo6_HU;0Td5s?7fw%Bq#1$7u3Ers)ur^M=l4N>V9D>?`m zZtPxgJG&)2Gli}xM7dt<;UtDC{} z#GjxOLg0L5iA*8u&2@f^37(V6*yz^@lte^ZiF~uyMcG%9(Y}UqzT>X_U*s7HJKGTB z?Jf3T(n4gT*zlHfeKuO-tA@90nBAC8;d0o^eo|)eo|GYo*r?1NYg+?y(#qsTmxH?H8!eNb4iU4y!3Pq4l-)l`&P= z9uM-0-*B4-a{l~c{3!U2%%D*h5sb-kEDbu%Apj2z;EL;P9b6>cbY7&CEcfAGj9FTW ztm}?oX!OA&Y|o>=d`$`k?}fBr!eB*IgJks4>Y`L*oo^e^b>DiT5b2|;xKe++zhItt z{*2{wW@6f~2fm^MMGZAWv%%znMvrLJRLhg@+28+B)wI7N0fWZd^+$ z68^s5QtzeF{5)h4USg;ePMemL_k3(74>|R9Uq6!yjYg@RrM%O;YQN!_^OA#Io`Y=m ziJzD-C9fIQo!5*ykZWA=G5P_sRJ6DDNwf*ZST`+zFOsdl!17eo`XTJjL5!x!3;u(D zU|hd#!^rdGhuB&M`PfPBjh}yiLafRa)#(RCw)<-qdO>ijp-abpTB6}`E9lFPT zoyO5pzCQTY#S(s4*L;KT21uVa-#&HqYEAA_J1{9@RUG*Dhy?1!KnfC{h;b{n%+#u8 zF3MZFEQVR>UUsEh6j3gx_m5NlQ>oL$X^iJuYbObb%@3tf!PLLx*{Q@0vfN;Q$269-B*FrE6# zoT$f%q0%_>Qw>;}IBoDPOwUUEoCEmuE}NyTyc8af%xUe-O>TDJxI^kC&3N-6fmpMQ z`xopuOAVExiFj*Lo24+7NmQvoQIXsIBe%`4B?b#{#tuoEk^SXmAOe&f$`;KkvYN^9* zY-5MZv(ou-eMSNS9bWQNycK)FPAq-_>m07jQm1b1%*91d;ET+RmyC|0Q8XFX)$Mew zmL+cz+S{C^qV4lgew^Z_E<4EktS+!e+mFMWvcLBg2oju z6>XhgC8N;X;RY;k)brf5t(^yDtTGhP&Kx}53|Bo8g)AS5RZ}*xW~y^%Vh0s*KI1Hn z>L$+f$xnMqQ;V_l{i<7aZmIVn{7FSQ{*F!k9_wD*BF5PgdKE4EJ0+h*v3GIgw$99Y zbJ!E}&C&h?KZ=r_i{3N;Z6-kuknAd*_5Sl$%nJ`%<2wU*0uKQgFx}ni*6b%4svM!6|^OGev&zFJFFv2rY=MBOqUF zy*}1i;v+vEsjk)ByM1UEBDo^TvsT;(RXOkwGt^D1Rv#f)8S42SRMojek(5IlA$Z{D zaG~xkrg|%Ss8e-t`Ovs_S$tF> zOs^QeOE*RE*k8Zv!E4QDI9#juGg4m4J7(j(QCzt<<|SZP$51q}7Ad%xotjV#NsaWw zj$+ge+PqQOELI`=e-0~H)+Z6Vx@3lCA6rY(t-44jEG~{Tv(8Rt%Lo$Bgo(xE@D)(6 zHqMwuKc*_&XeiM+-D_<-OyDS%jL-<=oc|pa_*d!ySwIhocM@TdT=;xRxTPQ|esISj`5*2Nxq*XA6#bxiCGU(rk8^4UZh`Od=HBz`~8Qg+k3G zmesltB8p}0&iw7dXS12b-Imjg(jN%Wan~CVDG?sw%Sp&THcpntN?!VTrUKj0?j&wzI|!9cXA$ye58}6Nt8wmTC%aW9{^ii3P_9Z^L%hj*rMa4J zKe1d&|KnPkeN4|bOp-WT^{U-k`Wry!TG?c$|Ci^2Q(QN7JeO1Paev8Jz&J;#OGAmC za1?ol3=vBqZqh)myywC_lUeZ2Szm1aq;dN!M)N4)%)XyPQD52=0s>ptP zcX&vyp?PKZBQY*=5-H8Zr2^7#tc3Gec}QL#711iAmR!Xm^}4SZ&e3|PbT zmE*N7N?8Yy6GrkJThZLmQsm?yT`$>ER)T)1Kvp#@huABPkNz#kg%c&~xGbf9YE(m< zv2N^zO|=t5#R@M{DLAZZRa;C>kV*E>F}}O^m#AS*ycm$2~3BtpPc z65B%><&&*IZ{Z`x)l%@}coJvIb-JI&^856jLx=>?)ywv0{{Ei6T7<=p<8t47VAaFfLoe>|CHxc zG~hY2K2F^HaaevoB=!&$gH~KKTg!Lp=Y-^6u_}YztDl>YHK2Fw_a4vBtBj8l1r`=q z5uTWz7vOKvPD}#^IV&*s(e=M90%Wke*{qQzF{51=i7mcAaNB(xrztDs+HD4jzHTe5k)j%GN-TFUFnhH{$7rS7u z{7h;4*Oz%^!J}zVUq1Nv6Pkf6DBWtlxD$W>V*i`&-w)&;w#xse`|sEBKkV)d8ZXc| zRzlma0+0@^*(Ybx-@>Y&*&?#t_?uPF&w38+2u)4|oUBI}IZgNpe_egX62y&04;!hW zU+FlnJEX+5;E&2~$gUIodDn_5Qb4Pheh8Z6qb9A-5C`fh8tt2V`+(pcbFGgvAp*^J zgCi9R+H)-gdkJsLhLy{;>xvT1e3ClR)>JXSNgmZ>Um)pGBOTKv$y`ju+?H*v)X9yXXctb}a4YPXPT+yt07np%}{6^77H@ zA>(kxAuzwTk>b>o{Q$V@Y63@zYcjlK^bMV;-vWft`MU@i@Tq}I=9G?2#dMlAFool- z4A}$Y&ru__EcuhM3J_;)wLdG`w>&@CHxG10gRFF`-AU2i>7B2ko+(zgaD8b0FfcB> z{gqS0tLvZ>(l-p62y5UCS$}Of;e;>@vp)wTs(>5z9a5RRE4SO>c^0CyZv}MEN3yFE z_amGQ#6}!p2wlGUYR_fp+<4N_4rp;A?c)V7sbB2!qBrI{g<>a#J@VoH0m3YEGQM9io`nph)%)1hji(7;FRS#6bnI z?fS?!)MpyHDozOFlxG0i2t&|@{k(*@CcDD5R&E~9BzJ_Cqe0o}^~cAbv{rz?ELJiq z2gq{PQ|*blIAO%ivl0w$uPF|@K00vJHn3s?(Dz~RVjo3}mTKpnYB!(j8HY(_NpH9C z)Y>DgQE(=07B+3aLMmf^YA=&cOIfjT zzH}4-SW!dA=YB(KGxid(e822_Y}-fO^Yv5}>W3G>q48V<^-_R5Mq!Cf84L-l78_WZHYI52)mBXKF zn_VG-iw8Z2fQq+(=p4UOzA~~94k{Q%nqB$0|AhXB@j;O6j(V(Q8(zB2s^i#r*6B*X zugJA@=AuLZ{TO!w6ZidG)grZjWYWdP;M0>EE3=c1An7#;C-@z=2MM%2S|WMrEKl~h zEPlptT{;rpb7n;T%<+H4ClwlaPtf_@ENvG*JZ`1t`OHFAVUB*)`Lr?c22_@a;r=u` zguyCUEy|SKFgK=n-^_G1O3ykvXb-}^83s}40-~$h?`n&)b)Vh^=I#X2W&Ks_h>7%5 zTJa3$S$>;mq`lvXHbDx%UQT6n0o$+bFQC`ct2hY3>K1FcdRqqHQ7&O1?j?KP=MxBI z>e@w1HKwK_3U0H7bhn4RR`di9mIq9+?oQ(834D;tS0-HH``3B=LW5Y2`VTd3Tul{9 zNYc=}v$J-0+h$iv#?#Wg&Ul+4pVTINWyPX)BBkB?!+H(LHV|b!#P78A;~pCq+_uO& zQJmTwRPR`n|5hqo+~Q=WZ!p68-*KyR=~b#p9q0&eE~@p7&E%5Whr&ru=G(fLtBD3O z&nLSF2Pd6emXm)YGavLkz9e;2TxbW{QgfTJB?*y{vsDh)nsJDPc1?>?F}oJWGE@6j z?b_0c;iRRqL)WElwPDL7v$p2s2phxVe4Yq%i9Vf8i*Ghhxo_mea#}oiFrl*no%VsT z>g#<z}<`Lc2Dj z-C3sG3BOL(IjU=+KW7GZ_IiJzrORCF7yq2x>s!D^V|7P7cOcBxF@B{&64$oF(PxT3 zf)UvK%=Y%T#I>D~2;9#RqC7$)+97jQeDz$xWiiSZgSKP}Hx8Y^=)h&kTP)jwq9&~; zcgelrB8m~^fw&==S&&R6!v%|*wGYFE^tuCCDEnTXWfqPTBV&`5-(WT{9FlidO;|1U zu&^$H>jBE3Rmq>LBg&~5cF_!tR|>l%K(C}N(<#67g~=yc*!cQV-&7Dn&y63Pf3=Tn zSy`ZkI>nf9@7KU(3_nJ90Gff@`WkTPn9QtT5~#hdfE~X{CC7{@L`5f{%Ef!u=?!=f z<9I4$Iu}@vZfl%Qyw-CGq-OwM~sog1TRna5qJ6|_wfL5ydWGvax?wAD z>ov*9ofSoW{v0jJdJ9{puM~&d&=EsgjfYu3AXkPCAL7XQu%Cb^BNA#dTp8CTuTegt zxJbdh?n|2GuDVVlt1`3GdkK+Fxv59%mhvo{^Y##S4FQHP6gRunNow_3xJ8MlPNl z+Ds79yXv$s7pp!NozzG*pOdaRv+GA^o49)r?4-Fi%8e5m8dBojJ!TsB5!)AJPrF5| z!BYQxeqU}0W7A51V;5Jjti#h_#ujpHPqobz+TQ|`B~0hE`~u?NFKRDIBxgvx+*so6 zKOuza|~i}L}Q5vAa7Y)^= zcsDFcim*JEP6B=js`3<6XOSJVP5gk#{oGv5G9}^KZq4bIn;~ls+a`72j)RgUB<6>Tp(utX}sRbDF3?m9BR5}RhF)ctz!frBbJMYw{ zeeq*^wQ=S7=9$C7b*}SV>v3x)-R79Ub31mcR&f!-3;I7Md@Q`Wn4Cb%sd`RNCJsw1 z>HutL(MsNy8>SXKJa|z0F0~x{3V=!Pgo>&Ha3A}Q14C}ygQpj;`u7iW--Mjd@!z=* z2IM|g1@Lrku6JCKk!0v~yN`J6vkFXZEi)9OHS(NCAw9uz2&VR78Nf0G0K<`dAeN7! zr0SS}dJ97&Q?%h$?pF%dn&Re6lok=zB-DI>1E$2rQH8I@(_iuIpb1pw#=Zo%&d%mV zP?RL!=CvxoPIKnN(%E22&AAN;Q?Y3vRcv6`(S~5tbv57KilPzxY7QhF95Z#L>-_?x-CtNtL{gj^m)o9vkL%fzRdD`!=GI3xl1Omd30j^d@sa4p-*glIjT8IVWenWRkBsz8%kyR>u?zai03{DZPl z?dQ>)@Ewm-zj&KLJTn}$XK`ss2B8vOFK>ZU?R=I*g*nK8qIS}E0A_1%vAz_V$9R-| z6enHan0Dp4a>)6rJ(s@As0#`pQxs!|%C57=4a(qr5i1(cqW*_s7+v017xK;eR9zyy zEm(*RbF^kUlVa1a4gqT`&fJp!z zwOD0lbrcK%xN2YYx$2FaJA7l`SG$xGy>q9KY3V*IcmJjVj>pxyw>(j_tDVilrnfQ5 z<@YkK+pv{XP!xM%FRr+Yx>?$omnSa$>c#U7v<^2T!tSpDbC2R;4eiuaHp;I44)hf3 zNx^P+i>t6zyC3Mb_RIX23TBp+2+SHn(BV2Cltv3a%C|@@R_be5dCy-~vR4b02|(q| z#+a%imquLR5TA_1aamBYOi9wb*-#r(nzn^g=W+5YO#Ix9gVFU7h4%qQ@lyz4Ig`Nj z5C@8)P>9D?YWOgoc-c8t!ZLGF)j8ToqVLfrj=TS^invue^|%3y^ZxEZrs|XZ7J`@0 zVso}v)!4Eu;LwqfoxoL4N*Qn0!$5i3*s~i1xo^NC^=+?&$J~xX|IOQua^rn*J%e{I zZIB$m={v&3urIL$_@AyAV;tW_?|PF1pA8+HdP`fumWc_rAE+KXI3j?l6$+kx&>Phf zO}l>}a@1E3x0l@crCT9RoLd8Um28Mt`n?@ZOb2G{IaN~A^6x0V5rwzxK(x*fe`b+!kz$;&z-ex=&S z17#rxMv{&?wCCDwwO_Cz->(#G$=#^@SLojJMR9Nk8VY^vTiQ2aVB-A$pq@-@5s||=yRR4OSBW8ZvS35Lpi|!LW*C| zhTlju{WAUieSROfZsx~l(i1S2S%dj#ggAfHm!J9P+BT2&u8kwigS@PwCsI9uXNIo zU(c=W%-5#)Ki-RVYj^SbYZS`nmsQe>lcfPcusip|9$X7#{61?nZnmT0sZ(^L5n{p* z<|-OFjbiPBif1|wj7WdYW}Xy8PA(nP1#MMWp1*qJ^$-hhqz!MlgUZY9lOP5NNcSBQ zQp2J9jHRLO>QF+3C!X*s595I-U+yPhDll9~Xob%vky+933aGTtL4TlcDyl z3V@^?>SeCqO5XsL%KN9pl^amhcnw;;-&{A!B`dvC>R=whzg=jlezuj@ zBi|B)ZL&kDzrKAfA;=%Vt#9}l!&*fL>3JKZe8)VFp&i#v*zN&%l)@=7{ki&E!2)?) z8Mf{&MK9ovD;bNaQ*PNXk^C~Vo3edbeQxJD76{EyNqgnHp25}b0!9tK<+Az1a|O$V zV+VeFj(k#bhA>JMr&hu4gbd~MZc82W+oADBp_>N><@;g0TS`>L3I=4jMm+D(^J4If zC4INjg`DN;BJb61Faso zE3nXpYL4nB%cpR*wbWJ{dL|E(p_=%qGCDMd`p3)o27exswOAh6;YzN=R4}kd6(=xF zh;$sdejk$#5&jf{OlyVTX5W^rVCsJJ!+;$$;Tn6(q>4n%cKvP{35vJQ?YoO+?E2`y zGF}@iY8j4Ntd0JDxg~77GLLo#PdmOGBbUyxgTSw2VqYoLw8k}6I%XytBIf?G2dLghIZO4E2LcjU+Y2i49)Rg= zcAJCO=a&FNj1r-57f}UWe8pnCcoVpgz)6e5PmJnmX@ zZKNOXuYCb*bcY_5T-8ydRzIS$KG=|rm_@q8hXl6oG3GIT~s2`O-!GKCjuhx z2haL&CckuJSlz4?4Bg&ewSoBK3Cg*NvuFD$YY`Ew%GvXINeCtiFrgd!PRlRS!Hr$;VV5M5*?=Q zyXu!|>hwkndW}8JBnXp%Jjwtv*TkYZr`UoL@)gdCw&6Q69#!n}sD&#Rb65*KPUBc3 zI&0sHBr+|-4cHR=atFIc4Z^NEHx|hz=Fub;$+A7pIcd>E9&9mCnpp6y$Nk$TAV)sH zo;K4E*%AIpmd@0A!^QbX!=oD?Dhu<_Ah~N60%Bm@ts$tUj$UF#0)32~A!6b&$Z`UJ zf){QAE1j~p50&Lu!5zM59^upK=UWUX6(_fQqN+bp0Lg}nipFD_5fKb1$xGlyQ43gP zG`+o@Qt>VP9(9iVX6f@le%Fak{z<7DyR??w(RyKJKk=H`HYyMhXX{_p-qySMz&{Ki zaJyB$sSrOy`;nvR-F-@uGKG0p%^?F}+FCeO+$hJkKm}@o7eC(l{^f(a<2X&S`SYDp z{fIuidoF>G(8so-9PqLztg&cez$7J`nW;LX~G=kq!TDez! zYrZOim+Xr=({H9($o}1g8%*0?cMAXn?$RLN`@|K)c)y+2>Zxo3L57!vY{(5zyIOz( zZE0<~&82hA0RkJsrLJ<*<6Hy?<=9H4D)n?Kl)4XVlb_Zi z=pQNx%b}?VbqJn{o+M$;9s#1iA#C%ra=9CG<%3!WnU|@43+W{%Mbry$wm04)UYPA? z>yb)sf0MxZ&QR~Q3M8fBy>ZrD$s!urJ}KGU)>pY0&Xrn=mTatyH`a-PV_4Fgp>KFq zrbF^BThpI$QA?)O`Ite1sp}a`0T&z_Hf-6FRh#=LEFA2_xrxqXk;@Xq!7D+3aQq0P z&cX@GijxDts}iZaFB+mLD&}flao*$oNW!){|CwYF^LnN^w)Y}0lK}R}g;Eu@g{lZz zNcH{1_FaDMh=fq|I2X3EXk;kBgBn23E36)t5$@IX-e2`KM*+`MvKNDx-D~49#x7Sk za?nxaFn7H$@;y^-sZ>L;i~mm!j)2I?r1o|-*<@sm&uX0k^SFMK10Zmtz=p4tVlME1MUf3Uk>MM|;T&){5jY)X zU{8Zg!R5%mvK3gy-bsS#;p@3@<#iKsF2MP=CmVBTHXSv)XbQJgZFp4s2qQm8dwe*# zA2uZw8G)_TQ$oyJ{G3*fGF)Vna%(N|cdeo)XRc<9VKqnh_h>_-*KQR%nXmA-KPrRX z1y^Akex(P%f)2NgIjmaldhqWKiLx|dXtfQYTi%3$6oFHGX#2NeclLG^Oz2ugKL)TJ zGnKm_kb1uU|E>oC*SA+)&-{Hoap&8NLC2S5K}Bz4Zf+^oE~7V!+`=+LLdQ0t8L(sZ zL)~6ijyXzqzkvSE&tMtVqsP!~D#bX%-?#AF(og>oqk;Pqc9*pH`R$({{Mo><=|@(G zg1^1--(InT`*m71?N7?5{?AXph6Xs7-K(^t!$9j_da@|D)Xv4jJ>2W4+?P2lBtI9rmE@(92E!*JJ<9Y6vqwcp2-;^><%Gj>i&zv zoo)liqJm5z5B|lf=1E|v)cTF{{&C~K+Wr3+#wipg-$PXQq5vF_ls*F2Gu5roc8dHD Daa`X+ literal 0 HcmV?d00001 diff --git a/ng2-components/ng2-alfresco-documentlist/docs/assets/document-action-copymovedialog.png b/ng2-components/ng2-alfresco-documentlist/docs/assets/document-action-copymovedialog.png new file mode 100644 index 0000000000000000000000000000000000000000..6963fd7327519f3c57fc2e9a99806e6bbb8864a4 GIT binary patch literal 78744 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 { let folderActions: FolderActionsService; let contentService: AlfrescoContentService; + let translateService: AlfrescoTranslationService; + let notificationService: NotificationService; + let nodeActionsService: NodeActionsService; beforeEach(async(() => { TestBed.configureTestingModule({ @@ -49,9 +53,12 @@ describe('ContentAction', () => { beforeEach(() => { contentService = TestBed.get(AlfrescoContentService); + translateService = { addTranslationFolder: () => {}}; + nodeActionsService = new NodeActionsService(null, translateService, null, null); + notificationService = new NotificationService(null); let documentServiceMock = new DocumentListServiceMock(); - documentActions = new DocumentActionsService(null, null); - folderActions = new FolderActionsService(null, contentService); + documentActions = new DocumentActionsService(translateService, notificationService, nodeActionsService); + folderActions = new FolderActionsService(translateService, notificationService, nodeActionsService, null, contentService); documentList = new DocumentListComponent(documentServiceMock, null, null, null); actionList = new ContentActionListComponent(documentList); diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.html b/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.html new file mode 100644 index 0000000000..3b36275ba2 --- /dev/null +++ b/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.html @@ -0,0 +1,73 @@ +

{{title}}
+ +
+ + + + + clear + + search + + + + + +
+ + + + + +
+ +
+ +
+ + + + + +
\ No newline at end of file diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.scss b/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.scss new file mode 100644 index 0000000000..7a759813c0 --- /dev/null +++ b/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.scss @@ -0,0 +1,116 @@ +@import 'theming'; + +.#{$ADF}-content-node-selector-dialog { + + .mat-dialog-container { + padding: 0; + } + + .#{$ADF}-content-node-selector { + &-title, + &-content, + &-actions { + padding: 16px; + margin: 0; + } + + &-title { + text-transform: capitalize; + } + + &-content { + padding-top: 0; + + &-input { + width: 100%; + + &-icon { + color: rgba(0, 0, 0, 0.38); + cursor: pointer; + + &:hover { + color: rgba(0, 0, 0, 1); + } + } + } + + & /deep/ .mat-input-underline .mat-input-ripple { + height: 1px; + transition: none; + } + + & /deep/ .adf-site-dropdown-list-element { + width: 100%; + margin-bottom: 20px; + + .mat-select-trigger { + font-size: 14px; + } + + .mat-select-placeholder, + &.mat-select { + font-family: 'Muli', "Helvetica", "Arial", sans-serif; + } + } + + &-list { + height: 200px; + overflow: auto; + border: 1px solid rgba(0, 0, 0, 0.07); + + & /deep/ .adf-data-table { + border: none; + + .adf-no-content-container { + text-align: center; + } + + thead { + display: none; + } + + .adf-data-table-cell { + padding-top: 8px; + padding-bottom: 8px; + border-top: none; + height: 30px; + } + + tbody tr { + height: auto !important; + + &:last-child { + .adf-data-table-cell { + border-bottom: none; + } + } + } + } + } + } + + &-actions { + padding: 8px; + background-color: rgb(250, 250, 250); + display: flex; + justify-content: flex-end; + color: rgb(121, 121, 121); + + &:last-child { + margin-bottom: 0px; + } + + &-cancel { + font-weight: normal; + } + + &-choose { + font-weight: normal; + + &[disabled] { + opacity: 0.6; + } + } + } + } +} \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.spec.ts b/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.spec.ts new file mode 100644 index 0000000000..4b7fd8be25 --- /dev/null +++ b/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.spec.ts @@ -0,0 +1,377 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DebugElement, EventEmitter } from '@angular/core'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { MD_DIALOG_DATA, MdDialogRef } from '@angular/material'; +import { By } from '@angular/platform-browser'; +import { MinimalNodeEntryEntity, NodePaging } from 'alfresco-js-api'; +import { AlfrescoTranslationService, CoreModule, SearchService, SiteModel } from 'ng2-alfresco-core'; +import { DataTableModule } from 'ng2-alfresco-datatable'; +import { MaterialModule } from '../../material.module'; +import { DocumentListService } from '../../services/document-list.service'; +import { DocumentListComponent } from '../document-list.component'; +import { DocumentMenuActionComponent } from '../document-menu-action.component'; +import { EmptyFolderContentDirective } from '../empty-folder/empty-folder-content.directive'; +import { DropdownSitesComponent } from '../site-dropdown/sites-dropdown.component'; +import { ContentNodeSelectorComponent } from './content-node-selector.component'; + +const ONE_FOLDER_RESULT = { + list: { + entries: [ + { + entry: { + id: '123', name: 'MyFolder', isFile: false, isFolder: true, + createdByUser: { displayName: 'John Doe' }, + modifiedByUser: { displayName: 'John Doe' } + } + } + ] + } +}; + +const NO_RESULT = { + list: { + entries: [] + } +}; + +describe('ContentNodeSelectorComponent', () => { + + let component: ContentNodeSelectorComponent; + let fixture: ComponentFixture; + let element: DebugElement; + let data: any; + let searchService: SearchService; + let searchSpy: jasmine.Spy; + + let _resolve: Function; + let _reject: Function; + + function typeToSearchBox(searchTerm = 'string-to-search') { + let searchInput = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-search-input"]')); + searchInput.nativeElement.value = searchTerm; + searchInput.triggerEventHandler('keyup', {}); + fixture.detectChanges(); + } + + function respondWithSearchResults(result) { + _resolve(result); + } + + function setupTestbed(plusProviders) { + TestBed.configureTestingModule({ + imports: [ + CoreModule.forRoot(), + DataTableModule.forRoot(), + MaterialModule + ], + declarations: [ + DocumentListComponent, + DocumentMenuActionComponent, + EmptyFolderContentDirective, + DropdownSitesComponent, + ContentNodeSelectorComponent + ], + providers: [ + AlfrescoTranslationService, + DocumentListService, + SearchService, + ...plusProviders + ] + }); + } + + afterEach(() => { + fixture.destroy(); + TestBed.resetTestingModule(); + }); + + describe('Dialog features', () => { + + beforeEach(async(() => { + data = { + title: 'Move along citizen...', + select: new EventEmitter() + }; + + setupTestbed([{ provide: MD_DIALOG_DATA, useValue: data }]); + TestBed.compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ContentNodeSelectorComponent); + element = fixture.debugElement; + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + describe('Data injecting with the "Material dialog way"', () => { + + it('should show the INJECTED title', () => { + const titleElement = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-title"]')); + expect(titleElement).not.toBeNull(); + expect(titleElement.nativeElement.innerText).toBe('Move along citizen...'); + }); + + it('should trigger the INJECTED select event when selection has been made', (done) => { + const expectedNode = {}; + data.select.subscribe((node) => { + expect(node).toBe(expectedNode); + done(); + }); + + component.chosenNode = expectedNode; + component.choose(); + }); + }); + + describe('Cancel button', () => { + + let dummyMdDialogRef; + + beforeEach(() => { + dummyMdDialogRef = > { close: () => {} }; + }); + + it('should be shown if dialogRef is injected', () => { + const componentInstance = new ContentNodeSelectorComponent(null, null, data, dummyMdDialogRef); + expect(componentInstance.inDialog).toBeTruthy(); + }); + + it('should should call the close method in the injected dialogRef', () => { + spyOn(dummyMdDialogRef, 'close'); + const componentInstance = new ContentNodeSelectorComponent(null, null, data, dummyMdDialogRef); + + componentInstance.close(); + + expect(dummyMdDialogRef.close).toHaveBeenCalled(); + }); + }); + }); + + describe('General component features', () => { + + beforeEach(async(() => { + setupTestbed([]); + TestBed.compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ContentNodeSelectorComponent); + element = fixture.debugElement; + component = fixture.componentInstance; + + searchService = TestBed.get(SearchService); + searchSpy = spyOn(searchService, 'getQueryNodesPromise').and.callFake(() => { + return new Promise((resolve, reject) => { + _resolve = resolve; + _reject = reject; + }); + }); + }); + + describe('Parameters', () => { + + it('should show the title', () => { + component.title = 'Move along citizen...'; + fixture.detectChanges(); + + const titleElement = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-title"]')); + expect(titleElement).not.toBeNull(); + expect(titleElement.nativeElement.innerText).toBe('Move along citizen...'); + }); + + it('should trigger the select event when selection has been made', (done) => { + const expectedNode = {}; + component.select.subscribe((node) => { + expect(node).toBe(expectedNode); + done(); + }); + + component.chosenNode = expectedNode; + component.choose(); + }); + }); + + describe('Search functionality', () => { + + it('should load the results by calling the search api on search change', () => { + typeToSearchBox('kakarot'); + + expect(searchSpy).toHaveBeenCalledWith('kakarot*', { + include: ['path'], + skipCount: 0, + rootNodeId: undefined, + nodeType: 'cm:folder', + maxItems: 40, + orderBy: null + }); + }); + + it('should NOT call the search api if the searchTerm length is less than 4 characters', () => { + typeToSearchBox('1'); + typeToSearchBox('12'); + typeToSearchBox('123'); + + expect(searchSpy).not.toHaveBeenCalled(); + }); + + xit('should debounce the search call by 500 ms', () => { + + }); + + it('should call the search api on changing the site selectbox\'s value', () => { + typeToSearchBox('vegeta'); + expect(searchSpy.calls.count()).toBe(1, 'Search count should be one after only one search'); + + component.siteChanged( { guid: 'namek' }); + + expect(searchSpy.calls.count()).toBe(2, 'Search count should be two after the site change'); + expect(searchSpy.calls.argsFor(1)).toEqual(['vegeta*', { + include: ['path'], + skipCount: 0, + rootNodeId: 'namek', + nodeType: 'cm:folder', + maxItems: 40, + orderBy: null + }]); + }); + + it('should show the search icon by default without the X (clear) icon', () => { + fixture.detectChanges(); + let searchIcon = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-search-icon"]')); + let clearIcon = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-search-clear"]')); + + expect(searchIcon).not.toBeNull('Search icon should be in the DOM'); + expect(clearIcon).toBeNull('Clear icon should NOT be in the DOM'); + }); + + it('should show the X (clear) icon without the search icon when the search contains at least one character', () => { + fixture.detectChanges(); + typeToSearchBox('123'); + + let searchIcon = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-search-icon"]')); + let clearIcon = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-search-clear"]')); + + expect(searchIcon).toBeNull('Search icon should NOT be in the DOM'); + expect(clearIcon).not.toBeNull('Clear icon should be in the DOM'); + }); + + it('should clear the search field, nodes and chosenNode when clicking on the X (clear) icon', () => { + component.chosenNode = {}; + component.nodes = [ component.chosenNode ]; + component.searchTerm = 'whatever'; + component.searched = true; + + component.clear(); + + expect(component.searched).toBe(false); + expect(component.searchTerm).toBe(''); + expect(component.nodes).toEqual([]); + expect(component.chosenNode).toBeNull(); + }); + + it('should show the default text instead of result list if search was not performed', () => { + let documentList = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-document-list"]')); + expect(documentList).toBeNull('Document list should not be shown by default'); + }); + + it('should show the result list when search was performed', async(() => { + typeToSearchBox(); + respondWithSearchResults(ONE_FOLDER_RESULT); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + let documentList = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-document-list"]')); + expect(documentList).not.toBeNull('Document list should be shown after search'); + }); + })); + + it('should show the default text instead of result list if search was cleared', async(() => { + typeToSearchBox(); + respondWithSearchResults(ONE_FOLDER_RESULT); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + let clearButton = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-search-clear"]')); + expect(clearButton).not.toBeNull('Clear button should be in DOM'); + clearButton.triggerEventHandler('click', {}); + fixture.detectChanges(); + + let documentList = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-document-list"]')); + expect(documentList).toBeNull('Document list should NOT be shown after clearing the search'); + }); + })); + + xit('should do something with pagination or with many results', () => { + + }); + + xit('should trigger some kind of error when error happened during search', () => { + + }); + }); + + describe('Cancel button', () => { + + it('should not be shown if dialogRef is NOT injected', () => { + const closeButton = fixture.debugElement.query(By.css('[content-node-selector-actions-cancel]')); + expect(closeButton).toBeNull(); + }); + }); + + describe('Choose button', () => { + + it('should be disabled by default', () => { + fixture.detectChanges(); + + let chooseButton = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-actions-choose"]')); + expect(chooseButton.nativeElement.disabled).toBe(true); + }); + + it('should be enabled when clicking on one element in the list (onNodeSelect)', () => { + fixture.detectChanges(); + + component.onNodeSelect({ detail: { node: { entry: {} } } }); + fixture.detectChanges(); + + let chooseButton = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-actions-choose"]')); + expect(chooseButton.nativeElement.disabled).toBe(false); + }); + + it('should be disabled when deselecting the previously selected element in the list (onNodeUnselect)', () => { + component.onNodeSelect({ detail: { node: { entry: {} } } }); + fixture.detectChanges(); + + component.onNodeUnselect(); + fixture.detectChanges(); + + let chooseButton = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-actions-choose"]')); + expect(chooseButton.nativeElement.disabled).toBe(true); + }); + }); + + describe('Mini integration test', () => { + + xit('should trigger the select event properly when search results are loaded, one element is selected and choose button is clicked', () => { + + }); + }); + + }); +}); diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.ts b/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.ts new file mode 100644 index 0000000000..ced2dc90a7 --- /dev/null +++ b/ng2-components/ng2-alfresco-documentlist/src/components/content-node-selector/content-node-selector.component.ts @@ -0,0 +1,152 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation } from '@angular/core'; +import { MD_DIALOG_DATA, MdDialogRef } from '@angular/material'; +import { MinimalNodeEntryEntity, NodePaging } from 'alfresco-js-api'; +import { AlfrescoTranslationService, SearchOptions, SearchService, SiteModel } from 'ng2-alfresco-core'; + +export interface ContentNodeSelectorComponentData { + title: string; + select: EventEmitter; +} + +@Component({ + selector: 'adf-content-node-selector', + styleUrls: ['./content-node-selector.component.scss'], + templateUrl: './content-node-selector.component.html', + encapsulation: ViewEncapsulation.None +}) +export class ContentNodeSelectorComponent { + + nodes: NodePaging|Array; + siteId: null|string; + searchTerm: string = ''; + searched: boolean = false; + inDialog: boolean = false; + chosenNode: MinimalNodeEntryEntity | null = null; + + @Input() + title: string; + + @Output() + select: EventEmitter = new EventEmitter(); + + constructor(private searchService: SearchService, + @Optional() private translateService: AlfrescoTranslationService, + @Optional() @Inject(MD_DIALOG_DATA) public data?: ContentNodeSelectorComponentData, + @Optional() private containingDialog?: MdDialogRef) { + + if (translateService) { + translateService.addTranslationFolder('ng2-alfresco-documentlist', 'assets/ng2-alfresco-documentlist'); + } + + if (data) { + this.title = data.title; + this.select = data.select; + } + + if (containingDialog) { + this.inDialog = true; + } + } + + /** + * Updates the site attribute and starts a new search + * + * @param chosenSite Sitemodel to search within + */ + siteChanged(chosenSite: SiteModel): void { + this.siteId = chosenSite.guid; + this.querySearch(); + } + + /** + * Updates the searchTerm attribute and starts a new search + * + * @param searchTerm string value to search against + */ + search(searchTerm: string): void { + this.searchTerm = searchTerm; + this.querySearch(); + } + + /** + * Clear the search input + */ + clear(): void { + this.searched = false; + this.searchTerm = ''; + this.nodes = []; + this.chosenNode = null; + } + + /** + * Perform the call to searchService with the proper parameters + */ + private querySearch(): void { + if (this.searchTerm.length > 3) { + const searchTerm = this.searchTerm + '*'; + let searchOpts: SearchOptions = { + include: ['path'], + skipCount: 0, + rootNodeId: this.siteId, + nodeType: 'cm:folder', + maxItems: 40, + orderBy: null + }; + this.searchService + .getNodeQueryResults(searchTerm, searchOpts) + .subscribe( + results => { + this.searched = true; + this.nodes = results; + } + ); + } + } + + /** + * Invoked when user selects a node + * + * @param event CustomEvent for node-select + */ + onNodeSelect(event: any): void { + this.chosenNode = event.detail.node.entry; + } + + /** + * * Invoked when user unselects a node + */ + onNodeUnselect(): void { + this.chosenNode = null; + } + + /** + * Emit event with the chosen node + */ + choose(): void { + this.select.next(this.chosenNode); + } + + /** + * Close the dialog + */ + close(): void { + this.containingDialog.close(); + } +} diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/site-dropdown/sites-dropdown.component.html b/ng2-components/ng2-alfresco-documentlist/src/components/site-dropdown/sites-dropdown.component.html index 9b6adea48d..8f3baed3e0 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/site-dropdown/sites-dropdown.component.html +++ b/ng2-components/ng2-alfresco-documentlist/src/components/site-dropdown/sites-dropdown.component.html @@ -1,6 +1,7 @@