From 112c3bdf43f1f0d9f379784a92b7602567d65a4c Mon Sep 17 00:00:00 2001 From: User Date: Fri, 17 Mar 2017 19:36:44 +0300 Subject: [PATCH] working script.fsx --- .gitignore | 395 ++++++++++++++++++++++++++++++++++ .paket/paket.bootstrapper.exe | Bin 0 -> 49664 bytes .paket/paket.targets | 62 ++++++ TcsBalance/App.config | 6 + TcsBalance/TcsBalance.fs | 6 + TcsBalance/TcsBalance.fsproj | 73 +++++++ TcsBalance/paket.references | 1 + build.cmd | 1 + paket.dependencies | 3 + paket.lock | 10 + script.fsx | 42 ++++ 11 files changed, 599 insertions(+) create mode 100644 .gitignore create mode 100644 .paket/paket.bootstrapper.exe create mode 100644 .paket/paket.targets create mode 100644 TcsBalance/App.config create mode 100644 TcsBalance/TcsBalance.fs create mode 100644 TcsBalance/TcsBalance.fsproj create mode 100644 TcsBalance/paket.references create mode 100644 build.cmd create mode 100644 paket.dependencies create mode 100644 paket.lock create mode 100644 script.fsx diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..63395c4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,395 @@ +# Created by https://www.gitignore.io/api/f#,linux,windows,macos,vim,emacs,visualstudio,visualstudiocode + +debug/ +tmp/ + +### F# ### +lib/debug +lib/release +Debug +*.suo +*.user +obj +bin + + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + + +### Windows ### +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + +### Vim ### +# swap +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +# session +Session.vim +# temporary +.netrwhist +*~ +# auto-generated tag files +tags + + +### Emacs ### +# -*- mode: gitignore; -*- +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +dist/ + +# Flycheck +flycheck_*.el + +# server auth directory +/server/ + +# projectiles files +.projectile + +### VisualStudioCode ### +.vscode + + + +### VisualStudio ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +build/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +project.fragment.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml diff --git a/.paket/paket.bootstrapper.exe b/.paket/paket.bootstrapper.exe new file mode 100644 index 0000000000000000000000000000000000000000..19b7fcbbc4a518fb6c194316ae32395a3c21fe7f GIT binary patch literal 49664 zcmdSC37lM2u|Hn--tODWba$qE_Q@D-94M)`#pdE z&u?I=Pt~bYr%s(Zb?TgZr?cvU>&YM@4}RZ%o9ID&^3P&{e;Z^_9jX0FgdPYyRrjE_ z@~OJ^JzeQ|pKa~7lRfc{WN)w4AK#gZ+XKDvuHN|4HS6O&R%fau91c!#M7J#?TB#XS zdD9b{-QG^nBr4FR6MY$!prYRK0zTvTJ%L}=E{+df>5USZ4EQIm37v}u?YM%dQ2x(- zIw&*Xrwww~aNz_|C@X{s?vF+x6w99{s&Yy1&*Sq0KQ9k&=}#T(2Y&aL08l4m z#dz|6;zT=I?6lnhqUd%41s3W~5{mq@82`7}scs95tSgaYgJXhZ!D6CwvWQc-ob8Gq z)=eibUEW6Yq088II$e-wR$+PvplG_z`mhF3k99XBBqEr^`et*g4O(B&Xbzh;JgzS> z0rW=GlfVp{1-j3ggHPQj?A9!l8;YiT$W%j#rb|Hy>ItBY1>OX#V21ong+99sqO2%H zm7LNVwNldp!Ss8X(KL+&dNR$3N7^MYza~0_ubWM_S#MRKP`1UYWOA7`i9dYl7-U&+ zPt#`=p{N8}3qWXE=^$qUNfe{9=}d=$A)DctkthMNxn2?D&*(&~chG7@bz{WzCA=u$ zLlhBBMR0S?NWsk^MJcluN(*Z$e>4!WeYe5B7+2J=C$k+3P}Stq%d8p{4EwBMH25rN zYncYuFoR}ONSBUH3yi4Rmt}V}fyv9+Dr{uKbg4WWLC7-b8|agN4Er|p$$xK}R-s9KW2HW9jt%?YncrzEWtQFi!yMygaR$TwNgkt=6{BJQJli8{6c-Z;O{6N* z8VMih4X~dNCAUjmaJv}zfgAF>ck>^)Zn#FeDeyJT^V#(f zl)wOkWmX+v$p8MX@>%8nvRmQin9?8|DUkDS!{^vl=D2L;IYy}k?+n`0SPW)5*i@`5 z*D{2r*c)_*PkEz@h{_EY=_-KKvm7{K-^2u#L9k&W?8-44t0=arU6=T z-Qbb-;lq5DhuMgV`V7}_SZGW%11~rZqnf7Gg7Qng2GX!y=#ac{iQ0L1y`g`JXG)!* zeKv+;;%a``cwaTzkM z~OOnP|&(aF@)u#}m=5KW!;$3|Xt zZV~IoY^c!>VOl*6lXT;-6hOfE6hR6gU}hCT3Ls$HPy{J}fIUDFqyPduT@j=J!UUHf z1rRXlibD##rZ91Y9-_Ln1w#ln&OH(Zk7->1tiWeoh>xa;K5HvJ?Rx{5+HELV7ctll z0DqNsX7jg;VM`BThB)_$>h@Q_o$oKrp5lVzv&@RJvcwLw4EfVZe1roWIn09N6@ex* zpq9VC$@HtzR5XFJLZ*hmqSG`A%vA9}M{ZiVz|BgDmMms2Ln* z%wT#Cn$}xgfV#CeTQ;qI*>b7XE#)4-sr6PbJ}e8M;T(Grx)C)ptOk#b=K+EV^B6Un zwFXaf#3N-MSdH z1}7lF&6drarD$jrc}k1CjdP-&sMkt^T4b70vo?N8+Y#hKfD1kpCZSNkg{@qOddoH! zd81zBk1TNJF|(;aubrecXbkz91G-`Lb0-a@q0(?;o8ec|eNkWS)>&qtY;(Br43sC$ zs?h^w9Oli^+!*wz&k1+-Fs0sX3SUicKMX34}BV#JG4GWQ+xD@KTx9d7lNho}E~K zbA+e1#n1EFqL+pI^RECy%!6r7Ovk932Lnxud9G)j&J(PJo?Z(HWt(OCP!m;Ck0#Cx zEyMJ-=Fqv)g}BbFveFQYHy4^&hX8!mrGQf#i=+!rS-3HfZRa|a>htV#-+udTe^VKJ z1s*2G$`>SIvVvC#he;_QfFZytf)qeNELH?5fPhp@5u^Y@wM&o!2(Y5!kOBy`Eu8l8;tn!g!w14fKGh%` z!UkT#7LFBx7-d}srmVO#Z!5Ph2O(&3W;(?zy;U5wbVh{-XqKtZ^p!x?mNj^a z*TUJ^*D>#eI2g4rg5HK2BVu9D83LlAS%&@oDv+Ai+cubd*403K)_Va}X7WCiBsGvt zKBW7Q86)+;Vay+p&EBszd%wrJ2CVv_Nf;f1)wMt{G|>YNEMwCX*Rizs0~}^HXYLZn zXmIScuZIF=0){Yk`_^o^;i4mT;1#*L^#Qastm|2LOZq&pX1KDU^2lWVsL?a>IWzGt zR8^evl%CQW&cPOQ0~*wZ$`UZW+0dY8i`lwJdA80iu6EibZbW0Jdaj<2Epj+&DpcdC zx?4Iwzina*_c~KGRmgHt&~v(mvw@;qB!Z2^2ho|H_z<8J;eRHDG@@e6WBN}J6g)Bo zL$z)KNAW2Wxr3R$nYljS z@Mbn`QYTYuHV~COtx`Q>00Oam}f@KAcKE);{ZDz>66^;CfJHb|3;FI2Y zt?-yO8$=j#H2nq`gQn;31w2#6;S2dgKaBbIz!?9H%Jf}mUSJ;L8g;|sw}T<-3pGx6 zh-ZQ;@kwws`R&>Y`AK=Y93r8;M_ zg{i?zzM0o3pjgX_;Ax^H>%&QpitKRXVABqJQ5g2)2~T_q1Y}Q#WQ@6CS)WtQOzYEN zu&)Pyx#N0K?;Z7J*huf@mcE!TaSsaD!ap?CHFj~Q>v@pTRAv8_J6n&k>IFOd7l6z= z1>*-KqBr{ki8M%!-gG}ciu_T(wFiZ!Vn@&dMtp9iSD1?eQGYbR+qqd3j0Q_j=~2)2 zW`5UI$X6vCt9FJyE4CN!MFpp-=D{)0>oH0;dyN= zwja-9#w0OSwGjg&<;(iQ_@dYeyw+!6@1LM2Dhibqg-1KZt>9|DSPjzp7a&cYc}P*j z-i*%N*>q|k)8uK5uynW^s~3$Z1F0Uo5(38V4H3U691S=5ebEs27(5;-n&690P-SXp zg|qTc0>4)w6n+7}A43`I08utae;3vvf*r4MtalGxf^s>p%gdmS#M$&QlypA+n~CiJ z!CaNjHyNm#3z&XMidnV-Pg8*}mUg_h5<37ImK#mF z-k__#zs!^)6EwMu#jTT2J-|PUA*WArt&SZMODCA&{esWM2+k@ulL81+U4j%qIL#$U z0R&h{HIV`c(_DfSKxl9YQUC$*R5g);?EhbcWwDz?jR6Ek9k(Zi_BRS~oe_=Vv<7bv zUZUeTyc0^B0$WNH7Q%gw5E59W!3H0nGQq--S@=^}xZtwv5*CKc!k@yz1(&5)SQsYm zh1{lvK0ZU5&Xu335RcsdakSdr6pR^B&*;|HeM+l6B9GxLblEK!LvU{pkL@}H-OHbq(2-i?~ z=AXjmkLihA$6}8L$zOH43H|bq>MMR7+~@+;Q_@Aai!8$ZG#jOj1*%Kyix8i!+?%W9 z;_ymVz-h_F;gzhgQ^`eD33rEYn-qXj$Yi2=xqAX=zOBBjw(&OWe)JwhlAg`wTNJIp z_x`RB()qF(2wU%@54FZ0rbUB#!OJl6cwie zp{5kITv5v%>TaR37SnyQ9go=?Bp>1tcPSYau4aa>;#R(LL3aVGM?Q7FpaG6RBPTKr zI8AOSkOBzJE{b`6+rkyGY@>x*bn{|LK zcW)-QvT9Y=#k4V55(u5a#J>Wh4@2X6xzRB3IBP3N_Qk`*@g;^?@3Rp6O}UrW>3h(x zTGqmZzY)t0pn=IZBuM^%<$jFe4wc z;co6o$nZ=uuD%|jtV1z!#)lrQntR%tvUDAXew-5 z!?sPtSnfAa(~td6!}G~wD35%M;oKudDNw2Ik@k)u-(x+(9n`4%=Z2|<$D8=3Ls{Z{ ze#`m9jG7IT3=e05s_-b+%rw%E;WP0#BkZGyg@jX6RMG1b8L-y}t#6~=i|#O0zkRHt;R8z&;8w z?$N@hvN>PyxPGeAbk0?{W1K*Za46(iUc$De?u8Grf`&RpJqyJU2N2J&s%~ZZ8|(!| zIk|?C>*(T<4BEbQI72&{IU>~K_dBx$T%}ka1=e6cIK0g|5bZZW%ciJEOg$=rcVv0W zR8!mxC_{XK1*v-v-Z$g0QTi>=_&FHTMA)2%q08_r*1?p3et5^oy1P(^^J_iEE*D2~ zWrVZeDbUmZ1}Z);WS5N8NmNqHxO8H0WCe zed{w^!zbWIj4KT}Y8Zte9KlAO-$>_1FGwS<;fT@5QGuVmIZyLUemuacNRGKMt24rt zX;)#4)(}cT-ArKhnn$qX<#%A@wBj0mIL23TvVJh_&iF;v{;Vw1w2w3L?@+9IvuVHT zA~itrYPMKE07rIfkE@Np>{js$51kMBb+B7$P%fVf8k^19g3Uq0#%)HQY5fpwLx$-$ zm6)(EAg>2B`%pN9I>Yv4`Raouv%bj>ad_>lhg@Ehb`|R7c}g&7e-dSP{W+&8`^TUq zV0OHclHeiY(D5F8=m`XG)91LfgION~O|ALQL;fVl&jmLuN^YV~|AzG=XxCI=|B}T+ z87!!UrLHCg_6d|-O`J$z&nV) zUo7)z+V8aQRqcD6hR89UhI_INxgFLs@0rnbP}&)XEi_21f?T{>bBGZ+pf|AY1uTPg zm))&#D$F8r9Ge!M1{tcE&#+zsPlJ5~9l1eImz%j<MMNL!uuwwKb?W##D7E%9&Y>uVwIp%l>zrz@(fya zgwA#5`V1IC0-_W!`SV=H(#76=SWv$PE%$C8qUBfToMnh2RJW>`Tz}@Bwh;^VnB|T55d? zoJTG}ojgq#MB$WK#RHn>A=qYCk^P(OSfjr5E2y{xm!HCLJu_6= zcm<=+0PUBkOS}&t%cmYv$~E|@N=IWH4R2@r*n80|m&X-(oqBI}pAj>baR6|0!XHuL zZ)osz#A=?q8_|6u$Ec&|Q<7@zJKSjeeTUza$#ZjDFYzpg?ETOs?9MWx9nW&e{xT0t za%@cM@L6_e6lT2>J>tNtCd(N`{%UR;Z=!SJRa^hC>5DoS?v7dfQLmcl#!182vRu4C z!Q^a?YzBFafNdT1C}aNt1uRvC_lgp~g09VRdr?&`;m{AUYe9qsi)tdu&~;C&EvQ5Uz*s?N#8!V^wi^ho>~tM1>s2U?)nJ87U4;I))Z(p>8%_kTt}4+dH)^`;L%|DMZWHk(bBB{mw(b z{G<9Zcx9T$r@?#jI#RY#CO;mYYR{{MYf8?B=W5uh_$LyfDwZkb1`4wuwWNOwX_>V= z_?d>h1}f=g!(79@1TreE-$2ENxf3+|Ru&0vV1_O)5~^E7#x|n8!dlX=vA|6%@MimV zv@sIDLnHex6z$IdSpUK3y)5ljmNrwDhnk5C(XQc?E>FDlyeD3_g5GSFC4SG%9$sN&6qnwo+QDsw}Ybz&$N(q@+&!q zb^tFp9>H5&!Kp4r?mLFaJE!0oqSy=eGc$bTYG_d5o*#Y(4YuBQcyxc{KF`+=b%8}c z1o0m0Y1V9~eu(o`{m@>4`?%u!TmfEAMD;_Qhg#1tX}O+DEA8(=D!+9Ilj2Rp!+p$) z&ADQ#JZ`pMcRd40d#)w?^*9K2?pkAt>hJ^dAw zLeM6kyJ5vre1`gouATt=oNj(xB0oBOVpHuMfj|W4o7yaSkcA>9S>8oGj89}w@@|0- zWei2;1&A>0mmMDICaeDDv;*`tqi6>{sU-`$R=@V90nDh;Sp+YYIE>coa zL`aHJd#BK8f~Ul!p9;KE;1Yp51eQ&Bu@J3l-iVp>Lw%JeNRvul^_bK%`I}WHoo1{; z`DvYNpEpjMY|^t4?q!X^luwkr5ergJJW?B^mj%w9!sY*ta_vybG)Vhk-DQyTW+|6f zN4b1kY#L<#2Ph_W6*K3=B8H)|v+7K$kRCSz2B|8>(pEsGNpDPGp8LwV#{Y_^W7mI^+bYzl8aB2f6m!LT?Ol`F`{pq<;%@?FG;c?x|obit{jIw+m+x;YVy?gWfBgUBWqoZWZh=bq}N6 z4El^<&rMR;z0z(9uujz7Co;o=&8COZMdv6&1=}RpLOMzB!T5G! z6tQhIXeQYYuIo-wTF6pa8a!{+P$PiT+FK zILnxWIP@pMaApK{0lksOxsBe;ld_%O5?zi~GiMTSeCB%ZWDLFIuNzRehddf%?Sk#a z-(fM}&Ecr~K-zVjr0$(vtLjG_4zY5k-wDNbssAx5V_C)^#{s+zDfZrGRM=zIe z^8N+TFLI`cma`5&@D+nH&tDF>#b1>z|3&Ee z6s13FzBcn|*miB^3cx!0Ughy%9c`)Q@*PuH&Tl3a7i`SjQ(9?k%zPa5jhTLdUkG#g z7TA1arZK|s2rR!b^QzDTK`!4LVE88HYk1oz=5Av~Noa$FxfJrm3rgvTHU;n!ouNie z1t$F&wF)xNY|tO1`Je}?TLD=^lP;O~t)NLaLr>;e2A(S1MwoO{_({;;S9(75e@~2i zyjb93Xv>_d!FiOpuMT}Z;J>5nw)*kJZ78pYp4eY7UX$`Es{B@Q5|;m(*zGiobZzEE z@xWp!--=$=W-b-D70{&5%UD<|?tK^ci?IM23_okI4nH>b6|}{%DCh=SUE2@)e@w8O z>5i(y1s=M$PSr&x-dGTzs!0l)QF&`Y0WEc~@|rse!gRfZ%?37swoX=@f3E&qL6kl= zMPUa54;B>B0}l4VXeFX^99a|hetPZK3rc9MgB>b-6xww=*dOYiEGVaYv)I2CRMII2 zy9JLDtEdo{sze{8`->{^tT*Fewcx9vuR7SS_zw$e=@kciE`9>mEXPGEw`(hZrC<^r zbg*j+>-EWWuV6Qn2P=M8P)}bK?8GVbfw>zLZPV?aj<0VUhG+=4%S!ul6D%^I@tSAm!Q)e>{iqzXu5-asB|yx#O68J z(bAW+Y1Haqua@k^&bPwB{#5c3ve5S+MZ64h&*bQ`T#q!X6@;9kEEz%ZRKt-JD!k&}L zGTK6#=wQudg|v{SI9Nq(Mq5Np4mPE>kQUJ#2Ybz*(axrY4(179XQAZ|=8Np5#kAVN z$|Emni)oXC)f8v6R@&}h(~AqSgYI##ec`?M6Xre#%Y5v=p$&9Oun*Et%kKm>VLJD~*pu2Os&ueF6y6!yOpRIWN$mof>tN-j zcZM#c^Rw8K+BVwkU?=={hAyH#S?oz|2iXqx`IZH3I z?D^0Gq22UV2U}S5)le5b&j%z}aM1J3&|Yfe^bgoiJl_fJqq_yWncgaVCe%ZV=W^Z6 zbmpX=gf6DX1-pT6^t^(j+YcP2~|7T3#hw{3)C=qk2RkeLm(Znjwu7A?rtqb7o`cPaWwgW8 z=3wW<3h}IWi-Wx%K7WLg4t9sX5IO2z2fGAy?}EO@J}rDDowtDdQ+i%CtoN%a zzL4u~_Fr7r9KM>`9PHA%dB8S1SXbR#^S#W5pU1t4=r%2fJr{gYdmnWQry9|}b##|%M|a28gx^oUa_U&-2gtw`C~G}Xlkwg_1rD~R zU}N}3Dsiyi1`F{nUA2Rq2(Ag=O!W?Sf6+GW!_@3xe}c@9&|C+*Yx0ZQt#r17Z4PY< ze~eZ-*if{PZX?^l9*btQkJAwcyHl_$9PIMRh4gWHzk{8u=nQ{?Zg#K?w7#7_?qDC9 z+!H=ZpLVbdD%0URht0#Mc&PY!+{>fQVLaMTt18s-Xg`z1c(nhL#dx%z&0;*-&t)+l z?H95bkM_PS#-sgW7UL1!pT&4Y4`eYO(U-CqkKxN%jK}v-7Gs+|oWzCG$VLT_&fAlh55fX<<9VT>AxK8#FV>%{nf#^_b15HO86P_ zbMH@3STHq)C#hI4UR9qDKS@o3DP5kTcGZqPP&eItnoc;_r@|TS8EQI5WYRT3#;$d+ z165xRKSRF|>`~$|JWETLFz2JhV|b2>_<3CB=y@t!%GfIbo}=ff+`)K`o~J1a(|C?v zpsfzZbMzv8%)xk$@We@e9`&*Xf0)I%_a9|3?)@ctUfK=O2TH#Y{t1;Y<7&pf9sa4a zR@BaXlK!gd#JVTRvs^g+Y~7O-b}+W?(~*t$QX8VBQ?=;t)m!8j-SIi2ococH{K z&Tuf!dwxNS1><>mA^b9>1XFYLYw8wE&C0KxFNsms{SAF}1#70P`#b7>7h^2tr{Vvg zV}hx6f27Px#mRR0PrBK`*eEb^4ZI%CBFimjoN4Pa>E46Sc2m znL~6A^146K1A?ji<xTtz-Si84qsZ;k; z?bYyGba`G6r-pH!qU#;bdOGGAS@#jA?q2P+@G1I5o|LzTNqL+8;Bfv6WxQ|GUmUDQ ze=|(lDF-`=I!(*p-*v5E4UhdY!n>uKKBBJ1sq^a^jjTJvse2k@A6a+4Q#VIsZWW9@ z>qYc%y;GO0x+d(=9(AyX0~yV$z2so;#ctspri-b)?$mu2vuSFR+LYF_jcuB57^h#G zJ^>RyIS{;NQZUarRT zH@Y&wPg7otF=by3Q<^3+WmP4fR0!QmvkJI2ApBhGmYK&b_vX=6S;<%BJEkyaQyoL6 z41OK=974}458}k`(gzB;_5wUq(Wp4Y@IahvZxLSE5#@+bY;Hk43mvQO=hhUzD+PtxkKvY0y3o^C+9v*i?RlLkw({*vJQ`m-EN-5|B zm7{ConQm>NcxbRu$uFy{3~;yv#ko>!sNiw&I)*yEN7jfc zw}8i>-RKL?2!{2}Gm_tXqx7YC-bwGd9yQ99b;|ECUms;L_F)aTiL9qu#ate4Z8eW7 zCXC0g==rnr8oWz)B8jT~3i{INqv9K9$?6-g-@o0<=vHru{;!F}_CT^us+_M+emSR` zyMB4i;)Z)1Yve4TJlR7}$+{koU-hNz`Jk+E1<#dH=TlyiIChWtLq1)VRqfZr-;{=1 zL_@VAM)QwFi6E<(fZrINSrt(m{{DC~o^7?`@0vE_*%;qZMghH`ak&lA6}UxUQs7ZQjaoH^_i1nA7WF>uu23yKq`elOgJO6lll{} zbM-ELNg&;-4A#t*MeS%zn)tYJFGv1(Osoa)47*v z`nJ;B^jq}r;`Zhi{a>mXHWcD!TK`5Ix7GTi__{an;J&Cr`?CLTy+UTZLi^t2ujr3x zRn^}B<;(s@0oh}l=uhRx_1Sb!{P+4%eP-QWY4w`U{>I;V`F>9?D36tfj7KoKN{{-L_p(nMq z+Bf1F-h<%YpVj-SzhvB_|Lf$3wUfFw@vA6TR6b&`?>!C)n~R5pZmssLr^$1%mZ+HNNop&C zcn(P`g1uOSOA3FluZ3id{s?_AUfkuewSS3q1dElf@^lg3;IUeI4 zYG(&tN7+;H7w=K+{*sJ#gLb&G%)CL17uA?7KVhyl&VV&e(q}{LjgR@KgMPe5_uixL z4V*A;(D=p?vtO0*4kFrYL+>xwEHUrXzg+t+^FD1Go?b~u)E-)@U=g~5sAM>*pa5J6``)Mon1MZ+faQ;pt{6RQ9+7VFv+BJY7?QXzA?OTAw z+7AHBwLb$^X&!%s;#vT33JyRKN@zuZP1;Pr>DofT*;+f`Jgp0Gf%YE2#oC7fFW0^Z zc(qo6mzS>9?0}zc(fT3tJKCF|d{2u8BlL`RKH&4(A;2GKw+40kB%)~xzHiO)wO|+9 z6KTQzbur*%x*o8RZULM{{|a~(eIIZM{Rr?~G;2Z&{&I%lg|uiwhe)Wya{$ZNDsYF! zGLuryNO?%gw@dk`l<$=CF@cW=<)lDOXE`SXlELM;z&e481-1&@AuuU0BXCII?E;Sq zJSOlFfhPo>6!>$20|ht+!Bi8U9L&UU?(HCO-05!4YiGk1k-U*^ISE8 z2;Srh0ruBM0Y5JAlcijKvxMOd6H5R$3EWy%jqfd?w%z1@4S;d3AU$;PM!^{gj{Ky#m)3ak(JG@RicD05f$<0I#WA z4cHfN2UNACleeJ!gGme(MU`)yauF!Mn9>2L%BnWMRer4+ml{z%Cri^|I|CLj2h?Fd zwss{Tf0HM_Lstc;!`cCqYXEgvy#VDnppLTvuK8g9Fv^oLGa5|+@_ay@&P2}|V)jIo7ocYi&*rO9UWA@CJa4Z> zc`3!){Jr&AZ~x~ z-W~4I0Cl{VI|Jn&K%IJ_HQt*7)bWU02FYw-0mP#%QV8lJ$;NBIb}*6;-M zER-|QTF3Lqvq8B65O*TbSEqlWC7^s3P{-dsF9W;}-vy`RY10bO?+4WB0gOqbF9GU! zKW`PvUj@WX8NMM{qpt(%c+RsH@H^PabY%G(Kz{;I$2)tQP<{bWrx)=SorX7swxIk2 z>~_d60d@KjzHM8h9|P+26WR{=G9>|Dfz34fCEyC!?GqH%exUzKuQqlYHJ*c>n>-V| ztGw5E@Ap3JeZlL=@EsT5ZMi>h$*q@*;alj<#mpdFF15{6?{7+lLu@m@gIkZ`d|S+u zIKL04wVBW17Kgtr!hk;*@J0i^V89a%_<;d0EPxM$;elazK_R@a3?5L9w_(aL`xSV* zr2;cwfinWX$I0)aRAR;}5h-wR$ImCVw`%J!BWK}v3-Xo@e0It2XS74~8SOrlzb|!D z46n9~&cN@dwdvkNpxuM=7Mkw;w6+oWHt*+v--X|Mv~9>8H+sK?Pjs zofe#%>OU`;-m_?@OOPtA*`4a&j@s4M0jXrtqK@s`mv*K5x|4%Tx|8X&NEk(&DXi#W zrj#IKWwJk&?%$ZQ(_L2Y63b4pL{&SowL@k7X0e=A$%E3pAgr4dAoHBTK4`GAE8Wla z+3FdyxmC8$Hamqc?@uMu(xs{#+2z<&ku!>Q&RAxcI~MVbv5518h*8Yv!t$=}?xog& z-fk<|xu&llwn;Cyt)5nU_drjow?EAT6UOXt922hSU6SnBBSV6i^{MV%8~Qq7V{X8N z{-oXCmfQy;Syq3#-%j@R;eCFmc2%;g*D1Q4J7OK`$le_CCWy&#yel>6AR}#r8JyvG z*eovPX3!zeXX-l}I~Yf5`)AD@UyqqekD0WzOGGE_!5v^{SA`{J z{f&lP3*mETkI#cDN6?({nb6G~T7O>a%sF$j>?nxbka)rIIZbjKhV*UN~d=XWF4PcJ3Fa0Ee_qOxYO-+ zvLm&um*)|6eSN9k&SmM2WFKSc_Eb-wWhd>f?!gtidl5`jt7Y9ud$^MQ#qs6YVyLNZ=CcDS0 z8BHG+$wybO8|WQPT))RUa9*mrZ*$E^3dmetXh}tBme@ zxdq=5HyT}sx!#qs$EjS>-G%*ObfaavcJUhApTZw-VLRA8IGSa7vb%dH9DRHaYz8~6 zGy>xojbTo;oZ4*b;1~>>QajhBE*`*UKQ;r09a&D4&X$;#^Zi`yNScZRw88FrS66Q* ztxF*d=}6IvG;aWF>`i;R`cv!sn6$}8QDO*n^``qdAV^@zTd~rAKE5=yD>=~JpHJ$| zEpR$lrAbThFD!{DY_a_VX+h8H@9)b)c{s}scJ)ggk1~ru#)|Z+10WJ~O& zLTa~GS_e}0`s6Mi*BV{~?R%2F*g+jfWh<9x15^;r8;>yo{o zp@Ax}UU^YT43Lj^Ni3C!MN1G=;a~`n3eWaBJpaJ%wcpw&eJtzU-(_39oVIL4Xy(XG zE7Z=a%DGLLR&WYwrG=iA3=49bZpjoKWT`d4G%UUTuAWr;U|;GytWQwTiZM=>9E!UN z*-orJ#7J=|Lby|01)B(M7n(_--;$3Dy87hv66cepV~u|%E?yrE=}=%liKm-* zFzfdqSEEgPkl5vRcBb%}cWlooBIUM2L0t!NJXmO=?}(EL@`t|u0kmgZAc5rV(Oo8K zMa=~!u|Xc%)!WfM(3t|oIdq5=)jW^LW*J3P>o1Qht6d(gZ@A=jDJ-O3sKqfzVy}av zZMIIu^Az$^UUeyIw+GvjwlkLev_VEQjL?~vRB$`Bu$1dAJD759y20+|1;cBXm!@P_ zySh4fd5Zgvs8<1OyjsWCoq5X2RSTK0hV279)wDCU3)8%Iz(Sb=4Sd6v#1mR{w)W#M zn0I2wr=_W#1G{%~Y{}7vEzKNRZPUx~&+DZQSoXeL#j=C_sa`(1=18sxc1cIo(UmKD zp<+*x4;;zvak-YJ(j9h}9RG46a4tyMXqDdBmF|M_?N+W%jaI}WLror(QaV@f>V_@2 zbD*O?SAl6y;&f>z2XizhxJsz*@7meLC!$;}d+LTX7G0{l8x!8a7CmPWfLF&xJ`?bS zBlsieE0im6p`Z}B460Rmzi_WWZjVNYJ_EQ6*ssR z>hIsl^=}7lx17TIft_jj3wgq}K&v>n7K2EZtzv@Epg1gs+217S`hKhLfRx&;0W@Ko z!=QZq!d8?|B)*U$IJ>@ERtd3Sy{Q8(Rm}(nm7Q^J+Q)#WVP&d!H;OXg^rkKpkvq`< zeyyE*MNM^wBB|P%-j!BIvYS??`q}w&833(jAMO^3?s-8PXA!G!`?<2?O0u%XUd9J& zj868!6^IKeU^u6#G@`+9f{F)B9>A{z`F_ajVWYTF43=jKRONsE5?`F5K6#ic`cpmb zR>elUBB$dWTG?c%*d71_|O-McM>kv%;KYh683%K-`AG|)rC2SmJYA+hYG zHQ4wu-CezT#>g`Too}HEN^`fov9isrf&Ogx$U2nco6PG5%i&>9I$$w*oH9T8G2SMZ5o$_YirU8WHcD1}I7>I8ZuW*R+nFn1zquw597*1z`g8XM@quH`1oq8 zf4Mb)i;XN5xsT+SIZ7&9$CHAEj59~xc9FGnK260aiRX4#8sp}s2#R86{@ew(YPTf% zAeBOi{fDim;-r+Aq*hB7%`-Dke?H1RV3)9k*U{AO7YqxQ57!cdgpkcV1-m3=bGOMp z(bByr5LL4XhfNaWyOV|l@nTwnTV0!$ARR=i*8_D#gt}1>0Zvgx4o*A4(vE)^)+r*M zFh!Y5PMyGZ@?DT4O2u3eN3~&fqc>Q` z2Fhj7hwF!uCEDyS$VJFGo6>d>Am>8NC3WH#mT->G@N(HrUmMamO0wNAvuzOF3t=2}SWD*+%2*2@ ze*onp-491lcb!YSk~j#b5sA{`Q0-QKvU@#(Qg3G($z)z|T9ra{2XRE+!DhtjvDc^U z{ax^VG~x^tyEGs1(|p~@7maB=KiLCRjGRy4%b8pylA-+brgDv8liiY+r636J#;H^$ z#5v(HI@&{8l<)B5Fhig7DJB|qkWX`j=+1jUq4GUBM3{VgLNKD)p}K%eA(I z2_dIAU`PqGA)iT>ykODn?c4kDFNI?}%U+jy&;_ z@ufM;^&>kHL&NC9QyQT3x_O(kDljT_=hDitA#W?sHqY(6 z>0y!4@l_|Vt?$F3#wDRM93<4kHY9qS8L0V?9Yz&-Q&AJ+#4tH!Jj`gbn(MOGfV zD_6sexZZJZ`h_ze$BM|-tw=A$(;Dc@?o6AKUC1A?XqbW^)}2~oJFArV5-x`=@3QmJ zb{wg2(T)9l10Jj)XWP&BwY^M`%jX=yS^IYDZuqj=MDn8(XMC!PN1+}`s6Zo6Cva9v zVcDcGqfT9iqOZpSf;@yR_r@5rGcxYU!k77Q){-hCO~7zrWi?lA779x++Pu!3=MT9n zF?k%pql52>ez`XXcxv;oo!M6kq_^{s2H*h#&gjH96sr-dTxa39MZAYfLAD(yv|(6E z!PTh)A_ebH$S1nuA{*5yZin5Nge?%a9|%h-*;9`cv4q$Wx(=!v5vS~2e_%9nje}2) zRjMqRqSH9LI?`AYJWBr9hu;-$06^Z$*#auN`p+BKIf|?jJST?an2|%d&zMFv;R}ml z4`$U%3F%RcqUk7V=g7`rp6%J*vMR6vM^jgvm)xHkP2QezwavC?sUshP$*hbbI*A>U zKirx054J3^2mAW@-l1=g*mTtO3rW(MUent>NUgnt2;+Th@$7p6NS57K1e|9S*+_^i zksnm#@MQ-vK^^_=R*uA)JF6i_T-KW&uyKg!OLjm%Rzh)KB^w= z$$)cMPgidaaUZBH>*<3)HaDW>K@7xA?%AJ|ZL$<3wTj7oUf?w0%~G){f*5}Uje8i$ zw`&9sddw-2|AbM71vQ4zSmH?9fe}1dr%Ga<437WAs;CcdpY5X*-XCoNJcwT^XvRBQ zHr~4HC9SLtr4-)Y!~G@xjp6~k!NV8*8>K}WZ*f_WLnTTM%j(8& zl8{8>Mb9?8m-jBb!_|)7H{x?0-lb%0drnR0~A{xQvC+UgN<9KnwLcpiu`vn=COIk(>so^mxPsg z&bnoOcrEZ6OX7DI=7K{UYr=D)?9&76ApFv;b%Vh|jCutu6vs=({J8;E!aHb=ZCI}^ zS()xC&L5u&*GdZxP3#doZ%k*e<$%%zoONYiVIN`0w(f;B8T&uAk%h5#qDLFDSVv`- z@yEm#>jrO!tf&rbJ*>?EXr<`Nj%m=lU_lOpod~MRhHl^ynzK3%H}pqEZy zDmLavxbY(`>%;N#fBGNm(~B3Rc?R57#xa}yN?9lASm-R#v>O&mVs2UQ(PLq4xaNQQ zAMXO}u`1@_QIO0i_ssKZ1LvJ07a3Ym=DmSEzF+2!(}3I_!M?@Z1E}p2$Qtek?SJ~8 ziu}BfaIdUc8vet3T^xTd!1{6j9JN*4{qUWWX^nU_|7?ufmAD8NX~3)cQ}8bosnm++ zy$AC)-tMi1XQ9nZ{DB7lsULr5&Kkt`HpKQd_>;yh_~v<)5)GqO@4?8~E6&90|ED`i z)0z03f#it-ZY>qKC5&SG3fO~vO6|*R8`tJz*^SfIeZtR~kUN(-J0>vtY3M)h^iE!m zkyOVX?b_Z=#5gAG#=2u}TDT6r+>8HQuG}2(3?@Nm&*E8kXE?8y=5sKDv64J@H{mtJ zKEM*lT8dBZy+a_&%tiIl{kv&r9J8vdJ`J-H$1clJ&Xw%8Q?}$a!u<_`lctT8bH!y{ zU5rtytWh+ZHPX*rsl)eSwqO#z!{edG;r{1ZeoXmiFUjr_zIhGuUe7jT z|H|!m?x<9r#TZ8;(S6@aXrcBY)_r*2`7%_*U~gp4a5Zwr!mH^_97p)iaVKM4akONO zxW`U-2>U(kM_btEU-ls$eQ`e&>EU5(CQ32cqr zIR1Vs%=rAAf8^GInrD{8I~R{h>BIY{vN2k2%C(G-c?fey`wxy}D0Q0SB&VU}h0&wb=*deKTaC|x9(#!l`~~Z>i<~X87jk$LUWB7*5*y+rxU*=+ zx8iTZCOR$4!y61IuQvF$q93)HYGFPYxiu7UWl@Fepv|JWo9=azR(f*-6 zReHvA&OYeQ5FZaXs3|>0&-}t~!Rclf zT+7;~z(<*@{&{MS+!5SF_;iV0BW`2o@QUV`#;U8M!N~UPB<@73sigvrgGv%@7(ey= zTiatC*AX09`3g++tM(i29S)p1`v13q#ygp~SpeamZ~FVDQyas0vc@oNt-A9V&!|+( z8{mO4^9ha^v}rx+`2t$yC2l_AZc*cF!gl~1lhRnB9r%y8tTg0snB{C{Jh}O26W)N= zNlV^faxOJquaH}(HlzI9ba?Ee+L4>ki24#&vkh=?cf3?_p_3%>t*?qfPA<87bd8&Y zsBCiP-_0g@i&5Dzujqc*$Of(wlS4SK@>Mo&V0-k70%8ch*wf(;)e1hr_tJ zHAi4R;NzJfriC|ocC37d#ycLM<{y?g{QOgLvCL)v_f%6R;3S#XAe%wWyq5VOkJojb zTvEnP#0iTEgCkQYPQ6qZ;|XR*9?9Vz+T27+g9qpGq#++vk-(2L#pZW0rJ+I-|qYf9#FbTsC7bBO2wro6O=3GSGO6MP9)f2zG z8@4XaibozfIF7nIPA=!?eUFcH?0$T>>qCim#@wxtYi!pEbCX|(srWzbiR95UALz$^ zCZu^c<7SnNi|{SRTXB>mFW=6Rf!kToFz^_ z8?E`~5r5wTo$!~R;{Ln@I2-4MpTd{)aCnr5;L4-Z{&qd{&4exRQ}MY+zx77w z!^@A>JsQ94!K?O>5hu+P*EGKuAX>u3h{vZ#A|BEr5q#NFBodk6^TdivV#~CMUJ_lQ z`6m==8lyE-5}OZb1ht4)>LJ8mL;(olnj(C`j;5oE8=)he`zRvAr$z9~6n`+TbHgI? zLjhf5sOd%I^LZkX>WJSgiEYp$Xs2sc|RKl}VRplW}9rrU- z!S=!o!rEf;SjuE^)jUouI#lQP8L_TdD%J%Yg)V%Jmd>ASmlP}lq6nVG{IQ{FkPmSI z`~$0MzM*g=HVDSppz3f23mR&U1bEtFhhv!`eA{E}a3nf3KRUE9I@BtHGEezfujtS+ zQD;R2U)iO{GFRaL64*}3&WAFXRq#f?pF7B0X9RtI9azL~7#N)&Q?D6LT_l82Wv(lU zWo}@{l{pH;p)v3x!qhSy69wmrqu1*U{{){;oE8WRHDr#i^Z7LKSKW*#?~7pGBN3ju zYS;80pH>}#81^`S0R|20Wp0aQZV9rZMTfQ(!nR~YFe_|MI5N7w2}Vn?1&Z+RGKzhZ zK~$E+hEnXQaUFhNSfrV}2QA`xhoxhI-=C^j!P&yQj(^EExz z9@_%@2nRRK+ync72Ob+{2kPYi!oGmC@%v#w_IE#mhZdU`^m$<$bQ+t7nPW3S5kLGx zj}5YQgAx;hAOiwKln4x#xhUw)C>(V%sd6dVuE!qY49-7 z>AP5C;ASV|4^#}@gyEuJKzN)UB18OvW55fj#}wV-Bls$QWS+pt3;81$Fyc*YUb%#T zq1&>H&5Z$G_(E)6=_q%VXav1C=xh%&C?C9J=V2{I{QjWNgIYvT%tKs<1Dm{5WQ`&~ za^H8ci#~=G%*fpWKP&Lwh|de_*Rb&sIAl^DgJOtDguL1ZK3C>bEi*|W=`#%@$nZ^g6+=i`g zfYq^BUFWGsa4dtL1@Iw_PdS_z;iZe&0Q?kbE=|clIE~g^weaxv>(LnK3=qBv{{&&~ zU92ib@?U_;fBUXdJ#}UU_+}%&s(7r2lQqoGS*FTdM!vi!9dnYw7cCyH1=!DE7fI9c zldm94R!{d!RoXK0?Z@KfVkp)#mur>hW_b8vyLhbJr*ix^A9sz+)Bd+^UWeb0ZvJO= zlezMrCHZu$n&Btxzjbq3nwy*aJb2zn?cQk`JbmmObo?y1X6y!TQakl;SGzf_Mur(n z7-lrCo4Sb@iqs60i#;aN3f=UBB-y7KYYK3Lm0g%C?*Z2WRU4EV*>OPJhTnGlw&8av zelPW@JU~~U-Uzq8+97gZ#Z34R3iG&dI}20W07#uox{tvzmCPb6BOBFX2|db?stTomqMI>WdtT?vN`D_geE_;U*6H>(P1_6MPSQ|11J+=@V8MY?pqm?l&wvBhe zSW;jrf{25plVS<%5>NoeXq=1DxR3KBsNn}D1ra=euTB+A_)Go?aRc4g5To1+bk`Zp(E^XVF0;eVz^k=Q&1ykm`T)T}yJA*a`Oa1t#xUu08j!~phyI#tF z;f+5Y%l=_|`yLyAET(~vcSpS6j_>^)&zg-)~? z|4>Y8ywm+=roniR`XlQ&{?;nqvU*v2`~dzII-VZr!(XWM3w8AX{-_|1KbzohQ%cA2 z%}H_mbyXaHw8US2hA)RmrE#~#eavo|-ZGbH1-_7&MP*5~z0*S}f&-1eJ(^o7+QpMTS> z-+AA>8##|ydgfMq&q->l40vnW?og#+e+s-6-|Ml}`I?QbeWSlfrLS`*clrP9&%qaR zs^7@vcn;4mU7p8>cjoY2PxwrW6}%BiRGbEz>KrHy!{dOKkL zUzlu{7p|A%bw&R9n&l^!y#` z$8aLh@RA?D_mX=}l<5 z(=ZG~v#!)TShFSxg-un(bd6Nt3=t$%q}HY1q-ggAy~2D3cP10O@gRYu?<;7 zN@c(KIPG{ko_B%u>hZ?AaN_g{4P}!7ojzvefW<-nM}LnyJ?YuZsY~ik7pdA(5ym5` z0B?i2TZ_~k(cr3XQA5Xp1gr|*M9O`zR&rzS zpcS-iR$9Q$>n}wa^npLcc~vG_4vCTV&3rbWMRCh6r~pwKExWp0S<1fH_(k?uSEfoE zAJhY@*c8EjA&iJw+H>?cc>q)D2zF~pADhESCj>v}MS4IjcL(%c=b0nm2|$e?p+jhD z&^(aQc&D|C*==-Vujk`itH1 KP1FYyHv1d-9#la9 literal 0 HcmV?d00001 diff --git a/.paket/paket.targets b/.paket/paket.targets new file mode 100644 index 0000000..30d74f7 --- /dev/null +++ b/.paket/paket.targets @@ -0,0 +1,62 @@ + + + + + + true + $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)..\ + /Library/Frameworks/Mono.framework/Commands/mono + mono + + + + + $(PaketRootPath)paket.exe + $(PaketToolsPath)paket.exe + "$(PaketExePath)" + $(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" + + + + + + $(MSBuildProjectFullPath).paket.references + + + + + $(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references + + + + + $(MSBuildProjectDirectory)\paket.references + + + + + + + + + + + + $(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references + $(MSBuildProjectDirectory)\paket.references + $(MSBuildStartupDirectory)\paket.references + $(MSBuildProjectFullPath).paket.references + $(PaketCommand) restore --references-files "$(PaketReferences)" + + RestorePackages; $(BuildDependsOn); + + + + + diff --git a/TcsBalance/App.config b/TcsBalance/App.config new file mode 100644 index 0000000..6c301d3 --- /dev/null +++ b/TcsBalance/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TcsBalance/TcsBalance.fs b/TcsBalance/TcsBalance.fs new file mode 100644 index 0000000..589eb6e --- /dev/null +++ b/TcsBalance/TcsBalance.fs @@ -0,0 +1,6 @@ +module TcsBalance + +[] +let main argv = + printfn "%A" argv + 0 // return an integer exit code diff --git a/TcsBalance/TcsBalance.fsproj b/TcsBalance/TcsBalance.fsproj new file mode 100644 index 0000000..a4880cb --- /dev/null +++ b/TcsBalance/TcsBalance.fsproj @@ -0,0 +1,73 @@ + + + + + Debug + AnyCPU + 2.0 + 0b8c9c38-1db2-4b14-b771-b99858c18f5c + Exe + TcsBalance + TcsBalance + v4.0 + true + 4.4.0.0 + TcsBalance + + + + true + full + false + false + bin\$(Configuration)\ + DEBUG;TRACE + 3 + $(Platform) + bin\$(Configuration)\$(AssemblyName).XML + + + pdbonly + true + true + bin\$(Configuration)\ + TRACE + 3 + $(Platform) + bin\$(Configuration)\$(AssemblyName).XML + + + + + + + + + + + + + + 14 + + + + + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets + + + + + $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\4.0\Framework\v4.0\Microsoft.FSharp.Targets + + + + + + \ No newline at end of file diff --git a/TcsBalance/paket.references b/TcsBalance/paket.references new file mode 100644 index 0000000..d70be29 --- /dev/null +++ b/TcsBalance/paket.references @@ -0,0 +1 @@ +canopy \ No newline at end of file diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000..c1744fc --- /dev/null +++ b/build.cmd @@ -0,0 +1 @@ +msbuild TcsBalance\TcsBalance.fsproj \ No newline at end of file diff --git a/paket.dependencies b/paket.dependencies new file mode 100644 index 0000000..6f0d268 --- /dev/null +++ b/paket.dependencies @@ -0,0 +1,3 @@ +source https://www.nuget.org/api/v2 +framework >= net462 +nuget canopy \ No newline at end of file diff --git a/paket.lock b/paket.lock new file mode 100644 index 0000000..cbb6362 --- /dev/null +++ b/paket.lock @@ -0,0 +1,10 @@ +FRAMEWORK: >= NET462 +NUGET + remote: https://www.nuget.org/api/v2 + canopy (1.2) + FSharp.Core (>= 3.0.2) + Selenium.WebDriver (>= 3.3) + FSharp.Core (4.1.0.2) + System.ValueTuple (>= 4.3) + Selenium.WebDriver (3.3) + System.ValueTuple (4.3) diff --git a/script.fsx b/script.fsx new file mode 100644 index 0000000..eb9fc7c --- /dev/null +++ b/script.fsx @@ -0,0 +1,42 @@ +#r @"packages\Selenium.WebDriver\lib\net40\WebDriver.dll" +#r @"packages\canopy\lib\canopy.dll" +open canopy +open canopy.core +open System +open OpenQA.Selenium + +phantomJSDir <- @"d:\Portable\phantomjs\bin\" + +let exists selector = + let someEle = someElement selector + match someEle with + | Some(_) -> true + | None -> false + +let shot () = + let path = __SOURCE_DIRECTORY__ + @"\debug\" + let filename = DateTime.Now.ToString("MMM-d_HH-mm-ss-fff") + screenshot path filename + +let (login, password) = "login", "pasword" + +// Definitions +let btnCards = ".ui-sidebar__group-title-edit_cards" + +start phantomJS +resize (1200, 900) +url "https://www.tinkoff.ru/" +shot() +browser.FindElement(By.XPath("//button")).Click(); +shot() +if exists "[name=login]" then "[name=login]" << login +shot() +"[name=password]" << password +shot() +click ".ui-auth__form-submit" +shot() +waitForElement btnCards +shot() +let amount = List.head (fastTextFromCSS ".ui-money__amount.ui-sidebar__money-amount") + +printfn "%s" amount