forked from Vitens/DBM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
55 lines (50 loc) · 69.6 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Dynamic Bandwidth Monitor
# Leak detection method implemented in a real-time data historian
# Copyright (C) 2014-2022 J.H. Fitié, Vitens N.V.
#
# This file is part of DBM.
#
# DBM is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# DBM is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with DBM. If not, see <http://www.gnu.org/licenses/>.
stages:
- build
- test
- deploy
cache:
paths:
- build
build:
stage: build
before_script:
- (Get-Content src\dbm\DBMInfo.vb) -replace 'Const GITHASH As String = ".*?"', ('Const GITHASH As String = "' + $Env:CI_COMMIT_SHA.SubString(0, 8) + '"') | Set-Content src\dbm\DBMInfo.vb
# Encrypt certificate file and password using:
# [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes((Get-Content -Raw certificate.pfx))) | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString
# Get-Content password.txt | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString
- ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((('01000000d08c9ddf0115d1118c7a00c04fc297eb01000000bdd8a8b578d4474dbde5e93fcefc511e0000000002000000000003660000c00000001000000000f9e957061ff0846e05f659a0ff7b240000000004800000a0000000100000003092b0a13b41fd1b05ae54d3289f97a17085000031ff437a63f018531ed183632c9bf4ddb9b7cd4628e5b092912a584cb0bb27a12c04b98983a7a0960025528e44f8aab4f04e55a0ee52f7118bc62690f58a6fca288864a9cf92b638be8f09aa02042a5820a123607c2c8454435d4f27a34f1e17e616bbbc581d56c58223f8445ee8df2ea059cf775145dfabb0d6b895ac20863aad92f1ed3e0b0fd7c284f32932356f21a515f5e13cb0e7ef0219172e2470b9f91bf12a1026366bf6ac7ec83874874c21c88c608ce95570deb0ae6df52fb08ffee4de72ea15da645a9d98e2dc15f5c49f7a967f52d3bd3e91697e5a64e0e7daa9d01a9f23d0fe18b47094f18487e98250e918570bd5f27e0d020e2a261fb65bf4bd30d8774d7f876a35c4f38da9017524c0f77d2e5b8ed1decb62d25634ffa6a08442e958d4735872cd15436d2e7707252917042f7dc6bb07b4042ca4f9ed4b392ceca665209cd64cf65899e3275ae3d5a9fce2abe4bbd4157bd26a800cf8af52c35cf6b7d0806a9d73468e8b291a70292c2cb913b108ce3421c51b8fd41240f9d67ae2a9ba73559dfc71fcac917ed053472b8b9c01faca739e6d90699ea04802ccf44f401f44b64933a72671d4d5e7b9870b135cc81656641774abd590a2924b4586692ab30e7ad3d54bde70625f720b888a13d293babc58d381683f80b93d7f3683867135a4d1e6e5d94bfff4602bf3c018b11fadae7df9c18ad1329a743ce08ca393cf4f8104825dcc008d833c5d4d511c264e1cabd09111dfc8f75ad2f84c15ec04151b8824068349f0eca1ae806a7dd802f5b7423c1348d0462d339020d42c902e446d1c3717ea4dcacf349644f91a4a1535a65eb1f3b6f155fd554af4a11c3ce7fd2d973a824bf49d426ba62c5bd74f27f27c1360243ed508b7d48b3399cc0ced752c1df24c0c0e069e5748c5c70101f927dc00cf22d10bafcc00cb05a29f9430ef3f45ca3d6c9714d031924889037c859e027283dad9e88704207943253755b27d0a911e29cd3c030a6c875dd54fceb639db662ef4a189b5f41a39dda017d67bae727dd4d677f7cc4cff50ec09a8891ffced30ed9524a31ccb7e1d1dad7c5ca0b3750b96f99330a1fc48761e6414f0723de944e0d17d47f766880c9226f41d88d76b4059489fd19e02791eadb52de7c1d69095f98dc1651a0e90ebd51c9661fa09f88e80e7cf1484dfcee31f34387773fa94b5932b81e81db7bb8354142dde85ddaf7df102aedf5864014fc6c14079ca3fdb8e70e4375cb698c3cbaac52c39aa0026946f35cac388fd332df21e4afda0c539d8da6a0b02b93a1ee775fb9cd82edd93721d9fb382dfadbbed542dd50be0e223a69b0555494a6e76df50904b9990428914def79066a340aa2505f9ebff12b8718cae6d95b39a9830008d430914fc2d149591fae364b4bce05abc67d5c57968e33e23ae580c8122c7a7506e5badf2c59e1ce345309270ed6679250fb2bbab6d64d7132632554d1cc13268fbb0d1aad2d07a36ce7a0d226317a6ce44721e99b61a011dbf6578f81b518f53c377e4cfa90ca02f56f64f7f67b210998948ceae12f6ca91e2f494e149dbef26c497b30f208aa7003fd9075242a6de1ad6ca9bd08adfa4bef3d20904537117bd217466b392e66664763c2284eab9c5e4acd5b96eb2261d590c476e63322387cd44e12eea85d5d6d4e5fd60c4d0c7f58bc40184a822a07337ab076695f3942d3e7bffc37797f90f79a63bfa6edae68ccf8ffb42668b8b0be80046985c7910e1e6742f3b079fc3616b4410410b14923330a8d543c1f00862669320211b2f9a0f65771fff7022bc59bf03467e09ff95f0d3871ef6a1184944a9e0d3793eb25b8f6524c356572a081ed9b46df5c1a2d8a6d27fceafe9630d3599692b275c520a735b3d0bc46030f0483e079055b34d2ecc64b53d0cf8c0657504255b32e4c5faf99f6923285d64df103f5d28926448c15911b72c61e38e5687acdd9aaeba5b5d32b13a022f9e485b3f3fd20fa37999c49bfc49aa7c1bf1728bc0c52e448c26b1ba7e6d069da44ce991734400a7796d57ae13589e227d327b54bb29db039d37a392ca8ea69eeec94a483832fff1f23c615eddfe2d722b7f2c47b0e4cb6437e8f6cbc0cc2b521cd82e2ad86ef0f0bc058406927c7831fe4bf7e6f9aa0adbdb543fb585ff4918679c31e350ea3f9496a0ee7482949457fd2979b9769abbab6b337efe57b713ded1cbc0137e9177575340eb5bbf9e5f7ed5c4bf619322e12830ce53bd5f093bfe8ae8b77ada6526b8d45cdfa024ded35c04f6c447335480e1e3329426c82b5d39d65fc11ee76cdfe5591fbf7942cded64519144ce6acda910c1cf2123a76af6603aeaf8735e620fe2a3cf344a6797d127e6c37e667029691c83c417a95cb2b733826abb14934c453261c929ac0148d653c4e6eb6d8efdd09b82d2146ddeab0a51e43cd406fccfd00aa2e032289b6b8d6fdd225688b69c9aa3ffed8526441118d4feb302d5f32f64d901ad91fbfa46ee5d1340d3440742e3fd0c4f1d59adc685dae1f48cf461fde5003604867df7974f440cfb117224f9349d0dcfef837e96ecf8949cc6b82ac8b685a26c71c2790db60d06ac178bf70bc9cc10280445b886cca66d25d02224186f1cf8eb71038ea837a6495c6121795bc9962b13257c58ebb9f726cabb89c5089e7808fc4e4550fced729f92a41fc7f0016446c132a9cab8a1eafaf4b427c7973ff0d91d5745a9243e16d847f3441a4249a584b5a43df4b43e2c352531c2fa2267e3af76deda183d457ab729a947b2ffddb93a2a5792153337630dfae6bcc2fb5082fad2e7e42a6a3d6300faade2fc4dee481e27dcc487584817e1c71acc907009b15ebdfd006a1a7b2e1ddef6e798f995d6f5b8d3617a231b7db3b618215a8a2c200e25c5cedc47d1830c379afcd3928cd1070244ee3628c4a1c379be93373835dc4cd6e34b0415f9867c36369d93ead4766c1f696014177fd12ca5c6f1d1691e07e1ddd94f1ca71eb3e6a8a215adca0251bb363280d36267bbd783b0b26968cfcd2365e5f33014c07cc71e03467bb9f93c4c069eb29c215e5cd58f2bb0f414350bc1f627fbbfac095a972739d33ff84746e7a9a551b44773709ac0013d5cf4a258f14b2a84e5fecd708ce340fc5bd91ed152f7aebf904097f0c68f75a0d698556d3387a4f0d8443e1b94a472957cf6dd0ec24be8192dc967e7b06de2a1bf56742140aecacb92e9a89a976e434e5548634080ebe236c2e0ea6ad9f48498c3c3525025b8d242b2b30b362bd73d05b96c223bf8ac18f1b5d32355cfe7d4059cf9293d6b98c79e3619903971388921919ada412bc6e2ab346733dfe6d46c1a4214219e4fe941b80d67ef6d4567f62706ad7a4919d3a1fd1d79293dded13fe68c1b97156b587e2ce401220d67d713f2200dfa9924562674ec8f73b8f1a82f7744a6f5f48356688b7816c76ae4527402bb4038cd45cc974dcd532b0e78f50d1ee849be05000d80db71d439a33e562e17e64973381f64bc161baf49ae0c3da9e760cdd927c85a875ebf53bd114e037b7463662419556a1f68f98cbb077341c833c5a9a3377a33f00c653f69a96a3afe0182c4e3f164c08a93c9203c51a071660592763098dad3f2dd241c6fed2eabbae222bb3ccb86acc395d66351811befc421dc87c94afef4494c4b68f2b4cf60cd3726f34feed1a620d824487264f51f1a85fd78687b4f6e1abfbaa2ce2305fac7c2b187b0929a5aa1cfbfd81ec55c0cb5b3522ad844d7d8d43fbceaf5caf2f16b3b11886091b152496489def7cf150522b183dc71fa9d3758f924152cb50b4a1a4d258a95d81da21dc48c502eba5f2ee9e352c5ab9ba6ccf9598c973d8537c4c204a76916e1d913ee41e8357c21d069208c19b75c1e303623e5633aac953c4389a21f9b6fbf625c000cdc823fadc030927cd3ecf053d89c53ca61bea103301e8f4e7b9fde0440b096fb5f3f23caed4ca9ad35c963063a3b7e18dc52b500d37773011c8cecd6b2b6f95fc48b490d05b9f655eeeba3eedf98cf906289e4c4c41138464254c88192767ea81a3ba6fbb6a67606e794fdaec1cd42e8ad44daa615f7600b043b9541884820fa168e3e0e64fddc91a4eb1d6f0608ec0cb5a72619f22a90f8e8973e3e454adac9fb143971fbc7bf0d8b3ab15b8933671d11e7b2d1d4cc0bc4d6fe29fb86f717834172f9992160a693531c8ca8c955dfa2040a66f99f01e435e7e9ca65fe0cc022b97ae8f1b6bff4bc8691722d641baf981e1b515a94d88c4911d6c0d14c54d72bf70cd8294ab7b1d520245dbbf5be24a80e0cb7a8d23d9ba89029496753874f84009f927c6392191d0feabeae6ecf00b1ee490b9f26618bf166174257630e494c70662ab39f9206239a3b9a771a0eb1ebc76837af86da3bdeb818f63ab152dcaf64b06d4397d62ea1559f56100b709b216556fc9b2c02d6aa3dd667bbe1eaec6d5fbd539264ae39360fd8e3b67ca2071bc75bc68f2c4a563158fd72b2ae25205e6250ad2c09467a99c4c8d43d3553c32034b16c8f70f9f0d4b6bda5f96440d0584f63ad6af09ccbdeeb9ae0e045386c4f20b0ac4cd6936cf0f24f446320bce09d1c12d7f64d413280504a5e31b05eb4308bd8df6183770c1ea06fbb0db24b0f5403058cd51b8b3985d5880d966e92e76d32d2868ed525048a1a6a1ae9345e9487f7863614bf478275914402ff24fd710b77ff2832109fa933c01e9040054ef1026cc0eb07c28f4bd9ac71dbbb12d14eef1d84c709a5078148fbcb8d06335109bd22aea76d4b3a046e2780312a4e4cb9e483c4384e8abb598bfc35dd2a7e6418acc79cfb514a015fc3426d088eee38680e6a3ddd7247bce699516bc9b27b7e24793f6343517ee45251ce8fc0c01d7b7282af043d92b8865250ca988314f949931e2b9062e394a34c9ee93c8df38e5fbc761ae9f05fde16146f487594863da5b3d5908743f32df6ed5f1650dda9fdf19a5a8c52aa7db685260038a3b9d2efe7e11561173efbde2be59f2755ff88ab5654e3367328fb8dc388c99d73038c939a1262effbdb56cd3376e9967243ec6cf643ea467f1a0c18409ca7ac5b5eb460cd7ef46f18b1b61d7aba2156717daf56c5fcfb282f583fc1187f8cf1d7a1565c6e5f96de5ca6d7501cade5de2d20809cc5a176de9156b5ee0356612c675673ae254624a0c3c301c1e4bd617d7f196b989c370849489967188eeb23fabc6115f364fd6a2fbe3f1f9168e1e6c6e307b49649ff224599e32e44756a2cb2dc86b60fa49623d90b7527e6c6d99754e468176a327cd3a01f28d7f6b1fc2b0d4bc8d2da9b3c4422174a35453f4eb58bda756b000c2bd5f86fa1beb3648ff947a8b1a66c4b441fb322fb80b12d7a38ff1038fdc157758243105f629bf58b98c400c3fcc779df97c1ff7a56d38ac44b164454fe09c90109b165273651da59032c134293ad5561e09660870ec55e6b6babcd9400dd2801b28950e82d1addf88a88dd245c6f7ca59fb5f7facb76f771505fc9cd4e328054283f99d3135c19ab17a8e9f15e09ed89b9fb0a43bf2c31e62f9e48ac673ce93118bd69be7ccca15e3bb7b6bc56ff303cad7077a48b94cd50f67e8c45cc31c5d9f447e1e35bbae020acae626301abb8d7456c4562551816574e3065c97dc808726f7f0a30f917fa4deaa0ef29d8efc356ecc3910910419b69c7ee961a75a49ec0c830e68369b1ffcb5b838d281436aaef347d89245c3c608dbf439c172652740c281c46ff16e146d27502f2b8c1cb8d7523fa120beb86aecf352d19b389449297bc558fa182c4036adf1a64b9e48dfecb61a5f10bbe30d25dbb0d819a53684f0d0362a222de6c100557ba1e33170609fabcbcfa58b664ca937a22ab9180bd201bcd155314b7f20999ccab8cc4e46bb510b8f157b3f3b297742a8a4c734153bfee90f1d4c55c78fb4174681edaecb7a026b4b40fe671a378f919c611c4f9a4d74bf7c34e8507c9dddd917a4866a47c1938417e6710186fca10b0e364189733c1f4a3bbe795debb01f9e0f649c9ad4d7ada6ec2e2e6d7339f143671634832dc9a6f3a7ffcee9dde79c9e82ffa7cf970f57dfa219fe6d26ac0643a68f1301f4c138359256489292ca4fabb19b300c667b693080ec93ac778cbc5b5b1eb500779762bc4a3815b828dcee68a6955019644f7ad09d2174fb7300c05821aee2fba1aec3d0cc7f1397d6de88b0621211fed5a21f8c424122db8f23355f16c66c1fe745df08894987dc58b007385af71017a1cbba74b97b82a3e35beba69a25d8d3e1d87b6dc867fb3bbf063d109c49fa89231032da42296ee35c7140d9c4625b9519e1233f38b2ff9cdaa54aaa02fc48237463c3c0e1e6b06b58bee4fea3079f8f7457e73d6265fbd2f04d5984116f93b4bb2c3395c79b54780674fd9ba406ff47fb1362b26f9ab286497c96ad17dbf5229ad2266c735c3f1697d915e23a7be03c63b584ed70625988c41e6761e7523a230bc359fe8642da5351f08b952bba609f3f6b1e1fde18e1d53a15b46282cedac4d9d977f7a79c4b8c2f86f9241db756d06650ba4a2a84a6bc3fd6ae31c83b21246c19323df7c0c46ef8525bda1b258b1edaeb54e5954bea5e244450bd897c971ec6ee8dcb83b0a93a9258a850af4960324764f48e0ae37e0c837f6a4715aa534218d75255ea833c759beea720d012ee82fc887867a9f8eb981d4648d20fae66dce87bb8ec10aeb896b7a0e01af473109a3108508da4825a8a7b87299011acb305b55454dbf4080ff1e66fb6fd5d5e50b41a98a6206fabd7748617a88e5d7937e67b4fb54943a7023f3ce3834dfb5b7c7829bfea8d86d6a854c2ced6a91036a0e830404bc79898b699037bdca801ef4da0e4ed48c49a77b915a6d2f6bdf6c6199f4b772b682826b0c80e64eedf92b9b15762b4a325f296ef1e9b683b339fd1817a01c6b6ececa16f86c4d9fb64bab4979d4c11593eec64fcd4ce2b34588316ac30f36378e3b68be126cd7d9dff1e4243a85dd79041ae342b10e2294c64254021d8745e2172e898521f7aa73505eb77498e64e1694d9371b5f0ce19de29c80a6357a603d1ef1f2baad660f3b9ef583142f8a8295ef761b31ea92be1e7609fd8a7e81c76e1aa2329dd45d06451fad3b11fbe426af9a24cf29e9724a7e92c930e9d121089bf4c4eb0bb5ad5954ba33600ab44684666d135fe004f5f11df66731288d5da99d2ee422f33ac8ca84347e60f8c6d1c44f29400d72e927d63edd583dd83db9c404794d6c529b3ba0e34aff3fe10da5233ff7a4a23d93be3a261a925e4657336ec2631677d2f0884429201d30e51dd27c71059cabd8edc5c415a520c22c40a0d4553368e73f4c51f8f2edcdffffdbb46bd9a3fc239dcbd6af1391a5b8029224d23a18767f30d591157ad38e117ff6e57fc6b3d9dbbf1ed67c93897756e12ea1ce60c5f6a8b114eadd1df014bc5fc7bb256a863fcd22e78f5924625b84a3bbc2b21124355ebb9d94a53ad3f44a87c90d47ccf956794548ef953911f7e9a738ff5272e4142d3353df612d7dc23079ec22cda5b508b03d425afe98d83d2c422be2716000f55b30e23e247b6396ce8a7a160c6748cdfd83e6a15410bf60485af62cbda9bbcf9a9bfd93bf4322f5415b4a2cb653b6a5ccfaf43f357f45adab9a6e3bd9c20fe6ebca8ba49d44cade93b3d89757ff0faf1d96d599c6ff9a89f508b3bb934d5bb7a48fb86cd53162fca74b643699a536aaed1d1e376051ace54e5deeb5b520b6d1379e816645290761907ea3e23692a4d915a1a07c32110c59547c62191a827104e6b1fa7e66bd525a5762d022f73edc7a9bc3b05b41e1e71e8abd984e415cf2f91102aae350bcb310af4aa0cd88c55e7749ccbb541018609a76883f169ccb4dd78eff346e4c224ee490b64a91c25a4a738802d759b2bc92d2f95f503a1b9ea87ad088864cd607f469fabb9200f43b03721efca311d8f76f1332b175c68aa485177a2c0cfe94f007752ac35e66b22e421ceeea81d0145a5bd3e5ce40f6d9b01d6b9b5972ed81c1affdb6ed1a644c1e7633d11c94b9ef11ad90c837005d4debea977c706ee63e520803aea8411e45ccd42c2f746ce84233c81f7f3bf9c443e274430e1d17c42b0d86001439312aac6652ab84016807c87ebeb06a5b1ccb645f72dc9aacec395218b6ee6e6c31d158f630fc46329d4d29cf0ca84034ad844aa5c0a7abdca8c6148545864ce0b9c2d99416febaad9c0f50ee2d6a8d086b22008e01b0f82a98917f3302da07b76850c5a029475a0a764ceb1ab8c00f72b24d98c48cdd83f19b3f03b9dfa1482cb9af72f8aece6e17146afaf3d0331898c243d702f633bb5259a30f8c480285353c41dc244910f71f652764330ba72cd60a293ce77203db43b0c752fa42938bed97060a5c91740d4d24badadc6eb03098b0b5797fb2e5642f20931a239f0b6df022884c7b5c06c84c068a0d562a2a987e24a4cf1031148b3548a835bf8040f2ebf6b291ddde6042c860fe2a735a90542b21e39c7a3bb96d193cbe241053e70774148ba95419de192286c5e5a61942104e47e062e03990b0fdd5e151681cacf0b53a87887250ef13bba0df59ee64434c17aaef85e2c9c99a2e35db53563112642434a8bcc9e08d9cd4eaae4a3bddc6378db43832c2eb7a559d35a6ddbd63a05391ccb98cae446d2e55f2f65e3fadd803046761cd9b1046a76ed431dc121dc4f146995637040ba0a36d8f508db7d25ffde2ac0807322040e4af1e35f75e80fe2d379688fa81ae903b413dd82abec2ea2cd63514e50af6ae0e64bf2f31606f1e488fd19beac33d37c7029a66189d6ea0f6a1286f03050dc5ae2cf4fc9af8f13cf77a159064329da949f3998e2005343a43ce2df1ae671e0e79134e201fa9b217eea3eb96259db2190e95613fd03b0323c164fe37cb1c6a833aade2915ae113923a900e79f0ad332db9e10adacd78edd72943c5ea7cc1b1bdd4de73d8e90a2ca50a7571c1a81d7cd6919538e1c8a2e6ea37c6da1970c543305a815ab675804cb2462e5d84e2529bd87c28a2cd6c22c6ad6a87ac683de04a6b363fe06e87cad12ca5d799263d8872d322eaf37cb9849d85f52064c484e05ab341ed03c98eb4acd78092126b6142afd1749c2669c2d03f738053a17e7ec9eafd624ece18e432f3ce95bef311b21a92f0fb06f384573dbd37a1a73f01995cdfa82ed3542cf1b924688d2971d35d0a6e1ca03afc705ad206f65f826292c16d1ef4ba9c4fe3059c599c2bc6201b58c8157098aa5ac6e3b4012ec4c57c3c59e960960802cb4c4a67c6b524b4311a9b9762d34b619acb17af64a0455e381d36cf91fd60bf57a121f100b7ef345578ca383d4d1801a96834f2bce98bfbf7a10e0c4ca21f90f9c581c089ba779ee735ccb636e9ccc1383d7841630df5c7c6ba1d52aadd008bfcc5f220985d0ec8cafc855e70d74fbd39dd37ff3af8c8e3069a39b9a2ea73bbef56e5ea7db23e97aa63bb580f32f86ffda2952ffb559fe078d784ca1f85d54bb89631983c2fde95fdf07a3c28ae0c6245913c17bc9a2db08ffcfe57251337b1ca2f0ecd448542b6a812beabba1a53eeb8c18c8e82426d22c0d4af5fe4bd6b9a946b69c86f301f9369a5497f1c0d34baf1e9abf808637ddf3850778132c80ba5288715b260a13c3164035ec356e8b8e3c0325e6bd3b243b09fe478a9eac89b6554b638961bffd460e2a324b98a16ccdd9b904a527fab7573b1a2b21ae2558fd9f40649cc980b503685aa3c3e479054ca31135b65792b91d715e54ee002962bcf12226c54810346a41f04183e29612a654c1e834a7297280f495f9b80b75531f93de04ef2046eb4c5c08e616280c4dcdc05f161fe60763f1df940796b23e20dbae6fb5c85e1d3358c4424e64ec634af33d851bf4055257eff26a94787ad25663401b4f8d4bb16ad86168cbe067f11c20ae31480ea6dba3befb5c3920965fb1e3dfde5edcc278164fefd136e64239be4c03d6408188dd76abbea6bb3827c6427bd4941947e94983d48f0866b6b3deb9736670897d81675c2a9960647311b02f22fedd18df55545fc0c649269f1c920b0325160aaab0d5cc193f3d9f75ade4690dcb8f9e8ab3538dc34ed31daee0cdbb97adaf49d1e688ad25a9db05d428b914c0be00baf72b1211a3c1010657381d63f6126c64d7cf87c5bbacadf80fa2cf26a1698db8ecb7b509f5bb319e97eca718eee4c1b59724d9ffd065d1374b97e75c4f9de7a55502a7ea7142354ac0a930fee91fe0b1e783c460d0374ff0dd39fdfce8b06d172e43a6db96236a203794b26cffbca710d57273c8a9bef6f361d0f70c3a24dc441bff9b24c86510ed5ef1a0a283e8677ed3fdde7aff684136cdc290b13ad076949d9a72959e4de9b713568f53251d12de7cf5dc1cdfaf8c0e59ac3360b4eda27b81a1d76e91dbf16d9dfa6b1bc98b84cde17ca9a0a9a62cd3ea320ac940c3e2a90c346235b66b1010a8cf0a98f57883d460ea82c5b134ee06a5e9a5959c541ae4b7fbc47919cec37ab6cda2f56f933e0f29eada29d945faffcd44d71b6f96d6445f0ed6d56690ab931ca6d1d02692acc59c1aefffcff8c28fd111159806e1b04f475d1cefb50cadc94b7b226c3cf9e4312397bee05cd2cc0f877c3d9c19a448a05253db6c47549f4cfc16bb3608aadb2295fc21f7d52dc0912c2185aa95731ba45ae439602443d4c87496d7237bff2e856e7226f0ffe728f544f3a9c270db3301776c701c066b84c4db0aa7d1d8cd032fbd9b4c3957b1401d60d2ee3d706706a287ee963c340fe13d998c48c4b400db543d0c9433989690522efda8c2e0a8db4ac0ad5ba8e4f59c8acfaf698fe7a697cfa7cd1e9d3ef70948e94b0d02ac805af22ba4f3c15bd6bd27fda7a4c5a049ff9bb4f35cc52ce65e74867fc905ac8ebd25424c61d951a37c1664ff27884669bb4856db1a11e4a5813d6dedcf751aac2d46872398460c8eda3afe9b612c13e590a55c2385fbd0ba283b3df2f7dd2b68ad007af2a8b5135b8768c0f94905924786755da0192da5f90b0fc66cdd5316eca01a3354178de2e581eb81e3a5eeb67f2e455d53fd4f4527a2278475cff49473e3a4930544643dfa65a2ff8c03d2ec8b3dcfcf3dcf3f61d0a2125f1d1fd17a9dedd1a50aee7e39a72ddcece6461e77cfb800e33d5ac11d2c55d2b7a24154dd1e695b87867afd71feb2ef6b3bb7da9fdc55e2164b5705c018ab9dfff3c714aeeaf38312775c4f0edece3d8df47552e015bd3b8a7d0161e66d3a0a4de620693a41a12f1ee61d29c32885b6447f7873b7fe4838a835d1c9eff84646b40257cf700d8c21af3ed6a0c675fa200dacff1e0f14f24133150e89802d9657540a04ba3a40d03863835614d50afe8bfb0b7ea47e9e93e0f22a6a60a18d6ab4d8dd4118e04e75172819eb5c719825e09649aed1e513f38a74124d10d522e111d0f28167f6519fd04f8d2155f08e6e345625bf40e0557fe6b31b215ca3b28ae68040db8281339b69930de6f9ce684d96650fb3bba28107b0cd6f9ec1f2c06025ad5118b50b6933123a024d667e2823387c01bc92f7456cb178687d3944b3d2a97de41a9eafda48b38d8e291c1684daa7c18665afc6e7888c4214f00c5d5cdbf8588ea46eb85a0a048adb0ff8c1feae2e51f920a161de57c15d949de8de9c4ecc1546bb46dc4da149d026661d49dcc0bd4e56fa29dad65f4b95482c334b0eb3e8a03436ddf41eecf7cf52374e2a2bf4c4fce014cfa04f7e7d08726ac239beb9519dbdec740cc57cefbf8b66534ac657dc738bf60ecf9aadd3b3a72b8d5e65acd5bc6eb8278e24aebf2936fb61cff6fdfcaf1fb125e007d86ed47ceb98f9c0782e88cf9c8b52f4d2a5f8269d7ad9739e8f6723b88bf280e08ca191e1df43bc77dc20e34f5751c0e5455d638d23939f0b5de9f2e278c2cefc01a67ab53afec334501bbb721fb09082997441056b33c4abb21ca7bc97e7b0b29385947f28bfca6d244a23cc37f4be4f66f66e8bc9b3166cc9f1f44f2cdfe37a8d699570dfe610e403c5f4ed39041140a45067c603b9580317bb954a41abcd0a30c7a47989a51e0106bbf20cb1c01a18076fccdc3cf4ac01f1442dd51546be759f1f9ae408f5912b1c2f607e72fcc8b82370bf452ec238854e7bb9c1afa648e4bb664c158dab57c07546c1df071154380864c97fd9886ba52ff3c612159fb24cd9a1af99cc3773f0a3ebe9c8b298f641768152d15244565efdc07d112f25619bfd1ab7a6c5d7496326419ab965fbe5adbe7f098733200e4d3574abc5002badda55827a99c9f0d33b9e56979212e2b911568c694d5212e90f3ab8632a2b0d7f839529d808337b83c2336758a2c2cc16b71dee104af0a6845a08111b139de88576acfb4324d62e4d4b6066c3265ddf8f7df7d7862e5a5b0c68edcfd76a8e55fa806b0f1f6a0df2c890581f13c6d9b5487b4eb43842bc0493e6201808231b33f224bb1f5b5a5a18d484cc329e0e450b736f9d23ffeed1116d8c5725a1860dddefe9962050402ede6f08b6133fa0b64f2fb24d8b690cf1ccdad655d45bfd67ef0d2871b206dd5c5158dd7f00a639ea2fcef90877404d98b3f84da7b1d864d1cb67c9ae0b7b3547708b64f82a5c286d29d51f1467c6f86f31d54e86345de0a926a018848a4fd199aee258b6ae0182f7731007b7c5f43133be4fd14ff35f5bf1dd84db140e609764cffde6fd5f06413c1bb3d983d403296251c5d1b96bf10b118b67530413aab53c63502109c9e28ede9babd3661be683cfd6e9c8a392875d2b8462ce72a8b748f99aa812687ccb323e38f46408e9f29a493683c182801a3dde431d1a12be6c2bf5b5ccb52ad56dd62caac5bc31003f20e05c0c458faaf29f9f428d8eac06ca72e74fd7ecb617e27d5434648e91f57ffe06b53ca0f7453c8c7251eb4210522b507d7a5e99e14dd76dc3c19a78ad65a0ea50089d6f2ffd62214a1fb0b7a3c45eba327747c1a7f3ad38795a54c145936c7f129bf86122845ebf1205e2aa8d28878b222c6d53af0d719dba2fe21d935234a6e71365f01e252ab7b95c1226fa56cba4b9e46d6de5356f092f72ba693f9a301861221afb801d7b43d528ec920d8834e727048144dae22ee1255c9264b64decd54ec0d020aacab2de47929c6faf5894fb8f21d73f89c230ac4b867ce91e10449c15e7e4f3ea43a08fb34f74e24205670d7563a5f3e0253e5015f218d8f9674bef2e8d2928f79f3f8a975e3ee485c3c10627838c882074ebb87125c81d2ff8b55fe0b0e812a53071a15ff27be8bc92c78d0e5264e9833512761a624301d86df4333f297ea31cc04687ccb720a9c9dac135a765940ac49b1457fce30f18d5c196baf9736497ec0fc6715a5f96e27fcb8e97d9a8eb4e00a0cea18f71531852b3a63a241afe498ccf3ce24f3b3b32df39016133f505db444dbcc8e9f9df5b6c8b01336702a85656d1dcd5aa66fdbf327c5ddf6a66f43318b2073af18c95ef57edd50295681c17b9c4557c9a65b2c937b13ece6f601a1e88b0e5050fdfa60da3491c6c9a03714d37c16d11d2bff200f28cb01bfa008364155e9fde9627ccdf8a9427091da740c3c62cadfdc8e275c2e1ac15f9be5fda3b7f1603e79f62a004b4b8467b87152bbf2b2f4226414003939302d9c78c810bde285db882c298dd97692b49845a54f9143d7381b02cbc790744a0c8af584be01d5a039f708287e86aa0db4988fe58172637316801dbb8d2a16c5916f62821f1417916e26c26427bbf802ebddd23421fe6cb610e04d80e4797de4567aeb78086dd007ceb727ea5685ec072721212c1a17d619f990d0a84c67de51ab1b2868fa080aea7a808e91b1065149c7f90c4f4d65d64ec3364f1913aa42afa22a0d111e0d570e63b43ec747af4ddccb3891cfae668e1f930657657825590d8e36edc8074e916f49a9d564d168e50b443cec6ecd1f0542bb7995fd8d4e8a33b99cb8517a7e2e3f9840989820e7b8e0ca6ffa17ff3c00e355aa8ec4a9973b960534d913a917e1a212afcc04305c3bb2ea138e5fa8d922c2d3fbcb263ae4cdc8e2f68da6e6dd4746ce5ece2e4aa4c4dab394d544b8de4246e621f2057b8e70cb20c691d6780db275d6b94bf0827114dcaf94eb1d0a028197d89fec3a20875d94f620b9c4551df0fe46deaa873a28fd7b2138e586e6af0b20828dbc27292ac4b0e09b32cc8d9cad5460c8845b3690395b1fb5d3bbe11130d4c9f5d40f80e33978e93a3c2a1f3f7f0218584dbaa5dfcacfec473ccb060bbb5c657205536c1a6e6a4854d43e49588e8f1f29b277d8472054b6056404260a3fc89df5cec1bfa52f2a5b4f1efb344e11f50202861114f538a40048e719d2f795327349152b09e3baccf7939fdc679b2116d4a94d38bcafbd0d00d77667ab635a09fa10e46d9538a728d7f4958935ce15edbc8e782463a523e9d99b63eda351283ed06734d9e9795bbeb2f6c530d85c0f4968bccc5289119917c303fe56eff5de78d76838698c789c2e15baa40f7fd5003513297b5171a161fb3a759c5b6a923042d80408b0463c5c6bc4a6cdb035f694a25e351076679d1883ca920e6243c57c30834e9ac86825e6221344ba6e7aab79a5f187d05eee8b3c611157e6e0726cbf7c82172a4f8a3c33d6052929fbdc84bd70d2b4e2c7c483fc03240b44dc4eb93acd6f611d633b56e396e56a16cbf504db10cf707195fa75c54d65411332dd8d966ca9e1f8c53fde78d48988705a8f231c683976138f46bbbc5f5bf9ea8f7cb2a90e251030a9af2d8fdc9047048cd187df092b1f40af35666b0d3e4c3288b075f968fac9979fcc08a5622fdfbfdf9bcec5a482ae8b8c4109bd4c3b92f4a9829eea851706fdfa9194033460114d9217db0899007d54fdab9e9fff4a3d71b1ab89d65db68fbcb6c32c8db00b36c3c9b9e18ad683b06ea1c4dc6232cf398b19d9b17fe3941cd3584087bd0ddd30461398db94bcbf99bdd038657c90625897982f9b090e84023d9f9771e27cc9b28793d56d9566bd26438bfd99035f1682c35a77ca2ad7e6576acd444e6559227a5e9aa710baa6a0c188709ed85ad4b0f7ddc108000607b5a499efa8f20ef25d4c2c5db86b80a50d6f4f6a21572714ae0e03b31f094bad97197019460feb3c5cb30158e0e9063af67c3a3223ffca389692af42eace2b78a40e4593b679c24345e559f6c979bd22f98d57faa404637ec8d3acdf1755e113fae64f095affa88589ee114dadd91f0b59e42c67066befd7b70c5742a6555c1f02d033690e503916195e2ba4fdf6396d0956a5e3aae948236a98e7379e6c4a72a548ddb30ef24f3b7fe60764ec75971bce977dda827898822f880a11db1356fb62d46610938f1a90e427061b4c4da8e5ecf9e517c1d301e6f993db45ae498ded28a8aa10e72110b7093b67966312ea8d6cbe2a87365d0dd376f0e671f5d2f8cefc5efa815714bd6e118ccda684423b30fa9fca1cba4a87812696ba82cbf04bc0f8f9287d2a97851396ce7e82c86f0b713f5bd834659475eec602b99e4266aea61fcacc954216ecefc6916e11aabae19bf82ddff19c4987421d1ebb45a758fc80dad3aaa9b6ef4b108976f331898c0f6516ab675fc2dd21cf89931d54ed0e853c44f5af094c590046e88fad5dfaa37054d7a068a1ec5115e754ec21424542985c21aaca2aa5283edb55c53417e34a6bdaca94646dcc91d35bece3dd64e6ad0174a82f7561c4cf438888acfef8f1536e08e63e91d1d3fc116e92a9a53e12e6ad3f9d5a124c7ef18c4361497b2bd7be81e425ab503e1a8c7bc4856562dc2d3afe92326dd6ddf56b8c267a5a7f1c6fe59b7e94b2839d784caffb19172787b5adac467c7e015363e59e57e7afdbdbd5a88cb4cc4a853b1041bb3235e52970394ab4c0bd1834a05f10aa2131351e58d26f32d9755dbb24c6acfa9b91c7ac65356e7a624ef8bdbc09e3a43911ef2f02c32727c7f5fb3658f3cc34a42f6d4f96048b090fcaf37759148d64997b8f3e23e309782a706fab36df239b4c19156397f05d2d9478ba5bc2fc38d33cabd772155171db1bbe9cc2bd0242b4ba1a64fadf9abc7c4e6525d09eeb90e8233a129d5a0cca12b731831a9b0b7f3af992b8b10b1d05be6db25939095b2ace4548e37d5eb4b0d89b64b0f602ff0d7932f5f7b24c7684e53d7ebfa1492dfcda3291432befab707cc644bb8a8f977fb3e34705807782a85d9a929ef5d3b7e471e906c59d3f068e96d57726b6c3c71f246f6efe09ec21d750d38f4e3bbedf93170122ec197f6358e6552d79fef6dc7a2678a85860ed4d78ec21692130465a7bba3fdd7e52461a9af54b508bf50892dc9a1741eee4bc732f58bc82c9b3e87be3c546938688076c077f728ec9912e7009691a70a30a851df05495996edb41d5d9a1e6214ffdd4f399fc7b74bac1edf186e3f39e03942769ea7ee5d4d8d60df4c4c160f49671e54933fffed01b6d4a2cd200c29b0e080ea39e00b0da528c19f5442830d026c51e8f8d48215d7df4cdaf96f00cf5f065ada1336fc3715680bc5f86ae8a1562a1a15ac1f993243a524ec2d6c55fe54ad23d59c7f773a45a83eba557b7abfa8f695807b8548a225db7aa9e23f4d016c8ae92bf71dab3aa4ffde2ccd4c84b5ff400d1575fccde428001c147d72aa4049d616628805a20aac13a41b81f6aa4690170e951ae168f22ca9f847b5335c7e5777072f26d50adc0ceb2a3c3784815e47ca41f44fb77624ca05eede5a5409d7a536eda8ad788e432e2e5342fecf7d5be86f42eadc30601896c0480cb5d8cc18fc116002d7e24ab792d209c11809152cdb48918a94bda299d0efb8684c4238c4bfebd181a600c4d11b0750b840e41ebbd55cb1b04af0ae849ed5f044dc51c096352c2882e1ef807eb3f1e073bfe700e487222079b8551bf7ffaf3b95c2952446ef2e5f7fbbcf223998dd98ed155723bb5eb6f6a4626d3c61a90a4710f687f4c7e4e89a226b884f06d278549b41b77a051ad91cd26a98101db56a76bbfe1d996b653a85aa44998eae4b4eeebb2b084fa7f0fb4f35fe4ebda26f7817f339f7fe6f35bf8c4a716beef29f51c02b520eca02236eb2b396305a2ef2c6f931c71947ff75dff20c81b8e11c5a7a599d0c4a0f39e8a895048d3e41dec3d43aabd62d394244816ea4e49b573a30bb9a4833f0533f84efed1f0afa2f3a5ea9950b40db14ac988d5b9f71df71e74cffaca1d449aaba67edc38b0069d398c143de6d741ea3ba2a5a2b9c3324f0b606363b3cdfe5e017f637ff923c04f0d495a2a76b046dcfc1fc36dea62a01d5c3f602ce12916816e1d2eeca5ea2fa27fccfdcc54705cf0c86dc0ff82853162ae6e6305af344050944eeb1c910ffba6bbce060c64ddf5fc39c40d13cfe640c17e85342539219ef86bd0d6f9096eb2a67524e18740b18f398200bcf6e8831438eb77c5b8f2bf7e95c8c87b6168a69d358564513e64b4a66d8e2951be44811b31c8e7bbbe0d14a70371a80a6cbe8fd0787d7ba147000d0edef92cd8c4eb578320bf2e8cd6b25e5b035b133a77ed8ea04754bf39539323fef4b6089b9642cc49466d13a82c8c2663ddca70176b590b607a850c3f0b44b4aca2370e658895cdcce38c5dc9d9dff8f1cadefe4c21723a9ae3c11ac6231ac4d72a484d7674058a839586ba3098e79ea29d3d68c8d8a62742a9a3845c514538ba84fe29a723503faef253b057f5010127eff136b247fdc66cd569476e35a693708b4737c279942c0cdf4c0a26b9064baea02500ce34e2478e5471d3947b6d8d533a02fa84f9703ddb24df4bd8b8914187e0e950455f16e2f0abef704b780550535ca6427e17940132e50e14918ef475972247c26d9c756d6fc7adb471dcfafe6cee8bbd1cbe2bdbc9ddba25104149b969348dff3ab1096d1d9869331dcb168f019373919d2eb34a8bc84c580fb32c5f923d69aeab3e528bbdd27e84c8cabc679a5374af9ab1f4f849129d24b3b0eea988afb65eba47144e1ff4c2b1114111b037711f65d898df5157c8af7c3c42bb479ade5f29ca06708f6b69c04ebc823162d7958fda6dc0b61f0e453d9eb4427366e2c5f3341c7fec9c47b4d862f350209af3eb8eec73ac3f9b8e3a9a5148f0fa3cbe9615a895217b597e94d58fe2cf010217abadbf3d11680698a0c540a3de69f544def34da35922dd7fa9223fe7842f80f9bc675618bcb913362e91ecce268304b5777ade306baedab85b1e8b34a38953d42b4ec86c084768e54073b85a7614c6a2419ff856b752f2b815ff53839374a9e2fd0d3b6e687183034d35b2d975648e2a72e92301cfc5972c9e787b744fe2a63009dd718683be5a8aba14342279d1c0be469518fceb7f0756744ce0c8cc1b5c4a7019d7a72ebb249c51aba70a8be6b91e404368466dd86a08fc3eb91f130502f07fdb58d6b81fa352b1c4b9f7a651218b367f7f740baddc0b5806575949d35e314f4d124043c4baa2d5abc099f3c8a8e690514648b1344d4eccaa6ab2d8ddc601a7892a240e18e32c5d657b0252dc8c0b4ace161da1f69a532c4c040395e4bdbe80df6cebf8c9f6b71268d421b9fbffe46d3438ced19afef9abbf0fb46df244b526720bdf1797ba2276f6ea40c6f792400869e9e33a07e548892e17572d468365b52ab7e4d430a5ab5027b0706ba0cad9dbfabf92691943ce3030e98f809b0946392939c7fc4e14d426c2eafd981a93785e12210830c5dbb7ed257cae507955c83b44a3a03c6706051f816c67a3df45d33c78172652073c49fdb0b182c73f8e3d90af0e9e7e69873aa05cc912fbf22c63ba952ff9b7393a196d99e16b6624745160a11a9cc083d5d91dc0ee728a7d67cf049212211bb48ab8f1422258c396323139ca79cdce4bc25d392b13e850fc780e5a9276aebef28b1263036040d3d4920fab40b6af4ee974ad7ea8a4c69567c6193ea5f25d03711e17abfa15055fff900d6af334baadb2becafc76f819512464a2ef8fc013120ddc776df6d85ef31b9664ea9c2c3f6278466ab40f5816b8dd33b7b7a72ad16c74cdb3b30d18b16485b48b4971a36e134e9dcddd5751c7932fe406737858d701ec263395763c908ff9a2061e08af6b957138ca600460fae9fe2177022a8f88e2eb83c0d5f2fbe8ceaeb183e1f7a3da2ebd4bb3f6881d9f437af02a31b6e6fb51a0dab1f279cd0c77c48aea120eabb299f41a919a37ad077aa066c86e93a76e4643627dcb53284bb2b4e691a928794c7f981c7458c8c20ee316eacc165f19221ebbd403d33e2c4430bae6bdcb59990bbbd32ae7d53184585ddb4f09a4003799d310ea8bbc130e85bd0c4412f96f329cf46945f3aa8e00002c3c6e41804d47cc6c5ab112eee7230a2e9943f76b1fede1174110886ffa9c8fbb727253073892f8b06b896f69d9b0f2b8488e74e01031f1ecbb62f2375d3725e77b0890ec3a425bb6b05e99616268ea43a1c52836e96e3f885939abad80cb896982c73aa248fbdd6ed4fe59aca09ee47c9075eb82dda3c81e33b506f9fbae41f772cbaf59545199330fc7f909c31c62ad1d75669134e69d09b92d8dc43b3d146fd90a2adae1409698772b060dba4776f3480b67b02f24b5b25a4fe5412994ede831e8b2d6d8588bbe369f5ce70369171055f49c58b1219807ab114128a9628bee4bc3c3ae1379c85d84ab754688dded9e7146dfd6b85344f1f3478807715d82c1e666a778c9f1e31fe71d28d40bd8e07d4d83836768bcc16587cf07ae250906e7fa9f262fa43156f67319d8953755e92f49b101a55327dbd72559de5459e9a934b3b42c0043bb0227293b90e00c5d75bf02203e3136a77911d540f5b462600d3e222852f4b78813801625887bed6617527fc074a84f89b2c9bc54242d054bdd1481728c6e2c4bdd254c114dda5ad0073338e2378245d8375828e8a93b7b907223f6d71ff397d8d0dffe444c72d8c2dfea65e72c1e9de10a24e566f8fa10edb25e1fbc938e35116f2d328eacd75a5d1ccf3959c256488634598e4bf8d9681edfe191cee4e58aa9b851f3e64ca62e1828ba6868dc3b4cfdef89e43b6e07a90260a40028ecc5612aa338b24ba4d7bb2c206d904566ff632c58d112bddb61f65b0f4cb499aff68e2fad4435a495c51e825ff3ee0512fa50fcb1f782e9dd438e669bf7bc76b49814150e41965aa7828c5c21d9c02e80b88af56e7546fa53b3563ee707b51c68cd5da12e54017d00624047daeb1ed86ff49b766db60cbc464a7ae696f5db62f0a11bb804cab7383eaacbc60b9bf38395a0a3f70842e7f3cbb99999258a15e982a8dc621d914f50b22e823cbcf5c96a5393c2e59874b96a3e4ec5ef6c4c9ced9e4fbe87ac2eb0ce11e04a6a584ceb09dc3194e5687cdc17bdd0909808e191dae7377e9fd491a96c5ec1501caa2ffcfb601a025b4b000e9eccb0e1e5f092b0eddea717c2660a933adcef4ad991017f0bc47244ccc904c809ad6fb954acead7a4d64c5cbf51f3654030659d938349a6b152a710caaa8e83cc9fa29b1c1f9c301971765e14eb2a9093c430bdb15b4812fcdaa2c79c91fe45c496656b92de5257eff80cc17a0841792ef0e8798c2dae7cc6bd6f4243c5fe6bce7c95b4b9fd9f25a7bbdb3dd0f277f91a16aaa6f2ba6ce5a0b549776ec96320ca8ef9f12f9271a622a0d0e2511448f344af50ebe81fd14d9c8d5198a44f0b9afe57c087fd00d71e29c9480d815409d1130e29857a457cb8881d214768496fa012a04c053cbddda224613553623a978cab1ec4026f23be735d9670f10b6f5b436c1950aba51a4d8a4a70b29c9550b345dbbc56176f241fc4cb102904b4ca85d83ff12376f508effd1982175752c19f66f21b1a7f0ff96cd62cab2e33c079845cd24ce9a44ed35b59cee5993f2b591dbc23e3e71437242eb78da2e8787782c4322d55bd3a87df3c12a8aafe11631f83e9b62ed35508c3a843d37ca6c095ede87716b7e514fdc65b39b8eb4dcd5792749394581413dfd249e15579ef331075607aea840494664528a52304f2d94e7f2cc0ccf2e637e741dfa6b466a91e95dfea6844d441c599f853ae66d578c64eeb30c1e1bcfafeb5ec9a98c276ffb675e6d191c36371e5804199b1466e5491acf62dedf6379b3e4effcd9273dbd94056448e053eca9d7d2b751d87d85b37450f0226d4eb690b7beaa4e7968f9b7e50768535bde093a06b9078313bdfcf403216b7e02e7c263e0daf562d2e9c0f95462e3941d5c17f2ec5ba5545bfc865b724082c9c0c328bc27906074f46995e42b61b18e88dcaf36759e7a1c73618216900eee278931d38354e2e241c938136fc23432fe5dcca20a12e16c1ae031037f6283d87958c3e053eb8951a4b4c0296bfd70a1bc89d5782e2f546360fa63286cb25636a97b82ab89b08fe2572c878a739ce77b82006ebbf31ea263472db7da4924159cc720b199b3a854d5cf8330aaea7642a4bb84108cefa3fcaa0ec895471984f6a003ad99c557a0f03fefa11a1e5fbbfff20fa7c1452ee03d3d9c5bf008683b9e714f1a70ca33ce69754f94f42a35ef02f6c8e9dd9cd28c06407c96c6880f6c05cdf431fb739288e578418e88c4ddb82085e100e76931cada3a0bd726053cb68ec988912a5119880193dad35b62d9614dd86217498e4f9b71436b1d821123925b4966937a7d7dce02c20caa51c621a12a29f25fdca32e8c6aedbba85628fe56877d7ff47c221002c8a6c4c5a75150c30fdde74ce2d53832be0d75dc5c218f296319df9112e6ccf5baaedcec62bf5d7b3232cffcc3d7b28cf407a2071b191d124cb3592d4a8ef565a2a3980cfd95506c199841b4293b390b4bc9b207def7f84e559676243dece54f45f45afa3ec286af67034e17b6740bbf98e01ad08bcaa458fe190a131a776018b2ca191728b29022cbe007a25c6d62fbe88141545807f79fdb14a7b68965e9033c925927cc0db7ec0b5dd94b634b4badbe5aa23d505acc38ebe30ad904906d5731e063aee25d550a8c1c7a2fb85a0076556f84eb5528bce858774be126194d31c6011cc0878982476d3d7250f6474570b2b66c09089301085ce4d6ceb58f49985adee6b74cff51083e0e269a26652c23ee03deb7327f6174e2913ec6f57daadb944ffdbd71bc8f5972b05862c3e3938108a9b4f42f08cf0f0653ae3dd63b18d2cd220920352a18f8265d3c5308dcad48f2cdc0004df1e37787775534d82b30e3570be32d2120bf55ab534aa176d76c493f81e8053c3cbae47e646b10b884901236f3c83c32974db5f71978ca550a2b70253e4c0a98c1d279b3560803a71f20e88b3f1dac2f901dfb8d94eeae2e920ca31a37f706bce4a840bde465c23d7e96a3c7eeeeef7f9c9b642313d95740d37ddc930a481545fc2d0165654573f256294466e20f550e968914c2ffeda1129745b9fbdd616aa61e7501de9c44d77c965528a1b0d05227ab8d9dbc5e52bb9293d3a4e16ba2538adca4d5110e288efb98e1b8fa905e89226a661bd3d694f7553e6170a3e1f8fb5ebcffb26b91a9cc3fe589cfb75a31e5c15a0573f1b48318238449e95b2bfa2103ad633eae99b65c0664bc57549c2d6479adfdb5e5f67a342b23d2887f51b9944151855a4e222e21db5445378404c10cfab6df4309d01cb11a24d91ce00a231788d08264b033afb5f7883b5609eeb4be4e290b4e05adcee68271c59c185a9315ca95c9eb22adffe7a3022c4ebdfa3ca7e7f3f699a0bdaed466672a62eabe356f121ddfb7d405a13d01a8872d2dab3525ea1891750ce4e1aafaad0c7ea3a05da0f71d055e5acca3ce77eca8752f16fb09361cd7e435eb572e8c3b50e0ec4515aa4edf8ded9842b1ca7a1dd780df055136c4888e5070f7f288dfdf895a1883119531345aac72c5362f846c8bf0b5999172c90aef40ee4abf68ec4f092381bd0b7e17dded225d4b1407106bf42669c1564c35d70c06e8f0e43721072564ef61e63445e78e8126ca40cd0ca38bc2cebe6924ecce89f0a49de7f94dce731ab5b719444dd46a7d712de48b7aa2a9f824b8aa75682985e87505bb7e80d6bd12ececf5ac25b201811e014b66a46fce027d1fac3dba7018e7a7b596f230f10b1a45f562b7f85176dc5289012744e96906bff822a89fa67fe795f32d8025812d03f3e46ade598e28bddb70d109ac92c5ea59ae0b2616c0952ffdc7e5799068886535f2d3187fa693d76397fbb139a81f010f7937f1aa29ba6e102686c8367e3fe4415b0c706409be646c570359ad04f1663f7f45cf1e200bcb3856d2de27684831c586fc2e27223a31b236b658cccddd85f7858db7de0ffcfd8d30e945e065fd03712b8197b9bf73b3ed238bcb46acc287c3d19d3eb54d0896d149cced1b47fdf402ad625fed96cac0fd4ec271434a616ef646f1d514e994aff21dcba7ac36dcc894571be7b7382df3d9c57a2fee726b05c975cef158890a08b1bb08ba927dfcebd359103af1adcdb1b77b28ffd5db64cb837cbb4644b7137d9131f9555899653ce6ec2fe12496aca0cf21f550e2cf467b7cd9c0229a4320fbde9d999a3fb47513239b1fd4b065bfd6d0cf4e3a13eb171f670e029c520b806816306ccd717827c4ee142643b010afc278f83537a0d018b9441d199a21448320a9b2a85bfa2790d0eae948ac84df4efcc56bf7db99862cfa432ffbcfbfb521cae10ed3c659dac864b0471d94ee09f8abb502f2cb92a34961932d78e613b2177159dd9ed6f379ea69aee851076faf02f479b7abf72d90badb650d07c3feeeba7605a1bbc563a22dfb53a8674e132ac36b33b9c9b9d6f761117aab8ed7b2af30e7761337ecb099215606bd7d4f9c14ea0834c9fb41ea675e09f0defe2696ae894612e792b9c6c90ce436212be9842934b7b8841d974382fa2fa1a71ccf580c5f9a5d74168130448a6e469753f9c79236a346df536b519f13826d978f8d9729a4ad08446361716e7b3cd74cb611ef12dfdb52635df960bd59c762b7a3b8205fc859c9d4e42f467777ef6989f4ccdf83cdad527f2e5dde54ee242319a66053c3162103ec0d1ad2b2cce77df2a316690d8a94cc81a185066554855ca159f9c8e1f32e4bace2ef290ba7b0c7593e62d1c6a8adb025b3ae789e15a810f831d3b5e4a6a57103088f29785ef674ad3b584b1bdbbc596b23cb12bd5ea10c8f8cc4fd161304f319db1758728739962a02dc8745fee13b11d07da5be98757dbab710072212a98915670a06d17cc5cbd0155bd249cebe1477afc98de678b55f8fe44913ddeddb40147914d87e583599989fea40ef9c3b5e8f42108905e390fde7c069c109a53426fd325054bcacb3a56a652d7bc8ce0e10e9ba618a58ab28ecde18822062f691d9c3a69e93d950b93d20c0f7cba94c4852438da5e7f447847013450cb550ab40f6c6de3631dda6c015e2d89ccd60feee0e294cd0dd3ea991692b887948f3595231aaae0547fe285b922fada37d041f12c53394f302ec3fc36640b77ec7e4cb1a2fe0e40efca966e9bcedd82843b3a45c33f66cdcb3c6cbc11e3b5bbce4a6e4524e3bf00c7d7ca2083aad5b4677650b40de78f391dc6f5570e26e212a7c3b740f3f08836d4631f2d2475cc0eda2ca10761d47c2ea556f5915af2006f5270b82d7b56aa91f3274bd2f5308c661c25fcfa7a46a4c87ab61584429af75f45eff994e24325f7a77b2c4cef5b9705fb239884b10b88b89ea87074ce8d429af5a3d1d4c1bdafce8ad0f6191fd75b76a751f65ded3ee6cec18c760b77782f0b75bdb4552a19485808acb92874110d1dbd56e64703a396b3f7627f71c7c52d3d4221ae003b0670e35ecff59cce289fcd197c288cde22119a30f9f939c7d9da53268d17412dd2e3db3d4eabdab8b2e00f9d9826b4a7dba5a7b486fa1f0904b6212747e4c7f9b8964ee632c637851a9dbf36a5be77b7c76afdc3cf5ca73332120f0b81551c9a9b3bbd5d6d330aaad3cce7da0bce99c8341cb49a9aa9275cde28915429d7265ed2d8692797db93845509e7666872294726df87a71d1e58a1bfd9c09b33eb2d8939c9e8043130fa5ef4187fd5beeeb964b43d859353a9fbc38c8b4f23a369b7a9ad730849c8fd25e22750c64f7067572d8e14f0660440edcf944f02da626b99e7fa0ca29d93dd47814bfe948b9e15ee740a1b16c8e2880b4045a0aa3c603b8496c066e64f5508d5329f6a8b65d0d9a698533f83bbe6fa59ab5e7d285c87b8636335704b61a8f2d62a77b2994be56a1815024386845ed58879eec3c2a512d524c6c0ad2f74e85dd9cdc85a143f39167b376781c9d0bc3317c39f7d52375e2d76ffb490d638e32744b96334ec24e693f9bc5a70b66d44e746eeeb99f89daa782fdd312e87bf76a892bbde270b64b18fb1c6b48859587f9755eaa5e5facb343ba2b6b5411b3b85aa1ab8995c6dc3646a5427a88b8516c52b274807d68fc1bb2960a3ab5f549dab24766b96558942442047723a8f5e5a2dda90a414015e246252f77fedffe6604393ca7600340fae644c2e89fccf2657e9581d6f1be8d0b5764bf9af362279ff463f9858121d944202e89df6035b31b349e36a6b058eb18a7044e8a08433790e05a92de1ef2ff78cad7c1087c05f369b8aa36e52df57772e0f3a654b06adefc0101b49ec14cd36fcd667bc1250a9b474d68c41469bf02bab0a4381866237e74dcc7d0e66b84994474a4c521e85bb45e75da1aa84a451b2141e4f3846462d5375a13087f7b9d146fc752a38dc475040ea0c39c96ad157bb45efac49ba87d2907d286b54f566c91317534c16d29ee7d3e7caafda9396d8b36f00f8680b300d526a7f37de6aced6d4c08d97e7546ad03768a25566326b2a7d496daefaaced09eb2b0dfd63c4ceefb72517da2bcda709a4cc886cedb9cc1859aa474068c6a14557f96fab36c5b50aa77e6e2b0870629b4921896ae697b69c768cbb53eb8f1ed1980170fca0a2b712345927f55c01292e5a0775b93a7793ae6365e8a7bd84414dbf08d25a475cf3bf3e85e1a174dfec4e9d30096df7275f054b2fe9609d4afaebf017405cba35f22e4cf607bb230918c407ada5c5c32c5b1b056fd2e02171e528f8c04d9f92242860910900f452bdcaf755a690c39bd7362aa94cc8bc8314562d3ff75464537bf278378a3b6559683fcebcec62d6f886003feea15c706ce9906458fe5f7216cff509afeec5df1bb7fbadfdf64a36c56599ea806f1aa0bf8b1aa1bf96741ce9ef4cbac7bf3539749c65e69ae852c381cb8f25a699a1d301e5eb6b869fc9f25f5842428d62cece9e5c3109f09fc189b1b07ab84954f4d48e30332adc74352a3440e0b84361dc247259c149a47a8f07e78dd898386fc0590c4de12f086757bbff64a0a874a5535d1d889f97c9f92a9ab7111c2ac2e74e67920e1950835c1062ae58aa544df11c601db0304224e5aaf197abf8824a4d06c48b62d2b92578804b9d66b0ac0ad219b7b0dd1bb8d7f932b3f3d119aae8141fc8cb3c6187f9585272ccbdd3761219b8e65e617b5313457abdc461a26e6489384e5937cb68a7c9c3dbea7e89ceea8949e22455b58f133956895f56fc21475311e5ce58ed5adf31d3f83c3e0f3d4befcfca5bb6322abded6fefaaa54b6b5d4fcd5cc4ef115b262bd9a2ef72eb5d34a4f2ee672f18b97ef4c9ee838e2e36bdc9b17f13f06e2f3e521f17a79ee4ce3db61f74a8149141cab68165d5a42dab260f1c5b956c94c9552dcd0eb74512916567c6b5316ca739af3ac1b34f073b5be2f02151870adb04a1294541bcfadda6bc0e70fb6ecf64560c740383f7e50f30a5e9205a5d2e1c1d06238ca6288a15f464a136c227422c557e94e7c02592c812483cd25252529ce68e2135f767d3b92fae433a11b372e4be5c94cc94b1085279bbe14a78403a64b2c96c6f84947891c4c46d9a277ad32bdb3c24f09a6205a35a68fa9d4bd719e2495d59989392681cd9b6f6a5587cd0b478af7cb5f10c79e06438aeadf53c4310a44fc8188f32528ef199c8128d2d619e1f9bb261d0528a183c4a5bef15bdd3b246172a745287da5c9e2e35073044eac59f0bfbd537371290404607e769a52a134746f3d809b8c566f2f81916dbc0e873a717fa4d905a56837cd2aa549b907a9c6769226d70a24bba01f7c5455af6f608ffcdd382bd6d9fd152d85f3fb61cc18e9f3c16aaa78534f1717138a4ac83d2bedf5c6e021c15cb0ba87ed83b71a85aaa5aac1b14b12d04e2dfb38bdf262227cec634e9b204c20501e085a03173b745a92a997afcb8f8b1453658ee72dfe8a1790469d4c77e469cee1fe29ae80adf370789fc3d1a91f53f34b9f215686ad645ce52c228b155a669e0ec8dc710bd9f400fafb2373146c0de0cf44c2d262ad00261652cc07df35cb32566833c1e49f33ab38b1f6519b88c1767a4dbbc9714a2451cf43d33ce275b02ae282b695a189cc8dac2fa4d82316b0be0f16b8000a58aaade1b96921acf08536293f8c994721dbea387c621af97d510ee63a9ddb8584feec59346720441a604ddfad8f56f92be930fedf71ae8b858fb005d993664ccd603a2702cabf5cd7d8a55c44aafcbc16b0400b13b986c031a812b852d7a17a74a504bbea8e1afc1a19fa8caa3ec64d23368c34ebde509df281cf7531592df4ab34cc85acf8b35c24cbb1ef037c20116faacb9b7efc5dc1481cf19365bbcdab70d46702adaeb758a19116cfb45ca59b2423f8f142454053e500fa165ce55d26df9350838def987eee1672f33450fbda90996a86aa09c1b722823f9f997f53072ab8a1d20f1d99acaf454020ced30905df81816a48d18782813b4d2b5616cd22cc8de307ba23d2f939fcc94c0cac2d490d77e20857cdaef3b9a8ae1e65701b50d556d5d43df09556628a1a0ec1a7390e4ccfa022d9a5b0997e40dcb89680c8354129d7a24395f0861c77db26db8a1c224f4216597645cb741f3ff1142e8edfbac5adc9d5dd1350d390416fac82e9452cdf93a51e2e07bf5201cc4bfbd6d43e6dcdce0455857a4c444460d9d243826e9202a2f2c158195dd975fad168bfd53dbb42f7de569047fc34a5a9a250f83ea68eb2b6e13212aee8170aae9663191fcbb4d880277620384c86c66ad07788ba17077cfff4807fcd8057a3d6747655c961b95f3ceed19089b25a5027950687f1253409213934db033ed03350a8a54216d43738e0e2e02697ae37b8f428539d28700ce782f1159a4c606411b8ce4207bfc14f52df5276827ea207601a2d3127acd9e512607a786172fd5c5ce8bb430c7b31473bc64cb79711719bad1c608cdc9bc09994e0a9962402cb435ced5d9c9fc9d7fee0b3873798baa780beb62a245f9bba4ce436a394f24d289e6c4eaf232745acb83b93b8b898a5f2e3a0ef9985f3d0f440f66d98e8d733bb6f5865ab18a9acdd6a027c66ecd507e0250357bdd60a183944998fe9c7de8327ce9c2769446a1c5b22d7ff2efd09a4f8962d0e933e1f8612ad09b47fa21423ecb9eef386543e7c9e274d4c425578b0f6a8599cac07f3c95d423b7cea676e6e38049300e734232383353b6ec9e8b5da8ee41daef75f6d1fbebbba9e8039600e12b1e4b819919af4b4a0093ec12fe86ec1c8d2d5a13a56538c4a44f365eede3da4f3394bebd4a61b88223a0c6b48607b6c5997e239387ad82953c72b76ad12be483a6566aad41ab901a8b47da86611db23ff1565a00cd0903074795fde83dd227d952fec884d0812acfa0a663b20adef3929b09d2c46fa366ffd7f1f682a36baa70562f8b5e68930f2b8fd9a0bab68a54428c8170265292f8e61c244a98b01423f6fa8e2153292cbfa4c6406394ea211ef8ab07c53cf57da22dc87fce0561b745d2d0a4db2807a5da6431d8497de490fdfcbdd458031b4bf2c1b6d827b9d5696c08c501c01dc1c511ab92faf42aa2e0726ffce1bb0ee4eae1a9f874fab792c969c6d805ca8ffee1d4faceb33995dd9aa52da76bc1bd8ebbd4667d90f1b4f9bab4d07d4344fc7bf816f4efb13a5f211d310771d43fbe9a9d26c094482d33aeb08f0284963e694121c8d20127c8930a51ddf8c904d232e17ee3b375622a93bc016f22c7df394bd2346ea9026f3c1594d008aff859505c8a98f36085c8dc030b84d50dc687f27c0fa95368ed7400e0275ace3bc94b893b4737ddf9c2b5e7b337cc55c6cb357f4981cd4e78243757bbc84dfc434663a0aa0cfba4016cb18661fabca923a1f1098c810a3a2efaa3157177abfd52b3197034cf388c886c50e485634acaada153c32053cf9483986a2fe8e0043c980945f0e5c4cee6a1dd1664187934ee6af21fe56763a0c59234e632f85138b00b72a22da42854552108da02d2610b451ac81cbbad3ba2db4b50e966936706af988b58882e510484dcaa9e7222100919273c9cb13305913311b32502c9b43ba06e3964424382f5c3f1e376c5e8bed7269d9553c1a70d3b89f8d18c0a3b552cf79692d38b3d8c97dc6cae5694aa4d0039e09a4499b94e136dc32c6bad23891fa3aa4a6a9fb39cbed7cfea457495c0ae40d2288b2294c164f20f9d8979e645f295b76ecee56445f7736896591482682328087d417dfb58cf781885981cf1884094dea60e3507b290085ed0bf75e049ea579e2313038d4d4f0771d34b5cb2fa0bd93eb41dee1e0df209af62caac55209047c774218068f275b7fb0b820b442e2339ad4d28eb9255a7a30378730ddd64182ead4f835334dc9e76534d8f63982dad3baff5b9cd66002b95003f0459a739cd8acf748d9826dfe15d971d5f463d554306085703d14a3fb4da433766ee8f45921132b2d3437f51e2a7a0c53998f409e4607c4e0fb4b7b1be68fc46ebcc45863e75a3026eb2463911ad55b436a220a6dcc52820410ffd116818f7d69971988f9f07c3f35cc1904b15de6d1ee38751cc387320789a86e2147eec8ef7d92fd089c2dc1078489b98b5f929afbfa3c0aecad33b85e845b4e05244a65b2802e3ff54d54104420adbf45a4eff0245b4c1759e8c2f27d4e3b5d327d8f8a3fcbd604424e49e2dbe3c813042e03a664273ca1d8c30f62a70a82ae07128237fd87e6456cfd75dffe7b64a2d72b715528167bf2bb30631dde727d5afc62e767a4886db21dadf4e6d5930ffc1ece33f5bbb2e48e5415b644c795d11816f60e0684ccb7d52f117f8f9e1405d973bdc1c5f35c8018b4989513a2d02866a955f81f0621cb341e5f83ad00c45f206d86c9401bdabfa6441cdf2835bec06ea210f0ad25160f797867d4b1894c60b1e6dac6cd0d169c93ff504bd3617e1d5cbcbc0ffbd11dcbecd22bcca6738b76cd55a467ca438cee513a0b111868607dbdc2778c4fbf6c4b61d1797609f715d56ab0aa84769d6d06a4e67f905a3d5e354f832ff9cf18bd2e03e757592093029fc5d396cb8a4001bb8a4a79ddb926ba3d4bcc0f09e6fe387e9e6fa979f31753a083bb8bfb1d03c6dc50d2a4b879364da55002e62ea038f4bcebf39a4ff5becaeabc7656da21ba5a6296e376be75dc96cf94efaa16c210ec92afa672ccccb04c0112ece1ea3e39aae374dbb10a3c6a82bd894233696ecdf9c91bbe39d9c0451f04da1e1052b2547ef33fad42ce5129d218fcab7c4d0e581d6eaaff28b1d1fb0853a205bf1ccc8cffbbfdfff624421c77e6440e3aeb448ef84287a11591f3d11b28dbb2b6e16156ef78b009845c82842099a0121f25fa987d3cb1aa04c03d74a8ffc6e691f01cf8cb1c9cb97398b817b7034fff6412144963a92be0c76709719320d3eaaa25e957ca04251db01aeb181a83fe21e9214350080f8ab5d1b425a121775471e5fc392179e77a37520ea4345d246aeea9df9dc10607fdd16fe3ef3ceb32e65e934417e050e4132ad0d777f6cf58dfa912aa8fa9d358a18fb694476bc4f140cdb034afb1b6bfbc9731d3eb79a6ebd38d105e053ecbd349ffbfac40413f08345726094c40f66cb7950aec4a48f2f882edb4880ebf38b6629fa44bb356a6fae875816096008aee10139895edcecfbce971f0fed7abfaa4ec4aaf7803cfae7cc1febda18cce8d269ed857f5a7a6262b2f640087ea7ed9c707eb9bcfccf7a1e52de6fe05cccb42fdcdc225466c64a7491e6c86d2850b9c65acb8ae73209e0041edf847c0a93ad308666331f95c378e84530155067ccf1bb03294bcac68ec090d2cd10cf78b5e1f34b74db2822497d114ce9ae6a037398a187f085501a4045125e4fee26a44b15e291f763d9844bee49f09eb5c4e85e84473145885b3c9611bbc43ca0106e8632508620d86d29b8565b62a357ac6c35de5232430cab2c106b6aef9b069eb63f698dd8953192bec4d72db816093df6719bd5ae333574b21504bf0d22036880e44a62b49c2f2d95e28456ff701367e67ed32315f8bd111d30142d8e0a03c2e9c9e961c146eef5944121cdc7fbbbc8b73e593ed74e053ca03a401e21d49e1c408692504a316c35b840ca52d4f3a578fdd0e8cbe8cee2bd4907621a5df649fcd9605e3f3a4f21bd793932c8ec092fbafe450e7bc20e6cd9419ff5b4d8335ef65e280d38e721b8a56ffb78b3e97ba87834d8a420aa23606e9dc795762aafff9ba502e27a853ee972b9b9cca9798825a62c3ced268ba4126c93912e5b7d16d945eecd726b51fe6b7b742ae656d8b38a818b2956838175cb224c6807ecbe3f7ec46e50fb8f09329d0ba29adb06d36deb006723c0d6411533f388ddd6bff478b97c1ca06ec9e1d0cb12ffe65f82902dd4a4c02639ba3f08e1f322936e98c4b9b3154006a3861532f27ad7d30bf9c3e6a1a5c2dd02a7b9485005bf969622f20c5f3cac09f82bbcefce0f224418b11cd2d59e898f90f5a68b8043c3136a104e200142e3a3eca6797cbf7031a7438e3b66e0e5f29c02e6b16c30555f290cecb58709e7cc947a2101bb4365896c32727b3e924b6d4b1071ad36ac718923f56368624ae3b10c817bbbfb7d5b2e706f048a36abd8ddc9af1952dc78ec1a3942f1ccc033f971df9a3b0544e9fb7cd07e03d1e2c747548e2d6805d19f8e38b21741b9671bde77fd6efc71e3658c1e8645cd8e4fbf232aa8ad29b50a4ac4914a771e183a556d334bcaaea2a3febf74404f4e22f352d91c59f7533f446181a6359219e84031eb840cacf5159bc6fe857be9082aa4399e349e0a61b5ad7c48a3572a4b413a50f6729d8d4ebc2751da8a294275d0292623df859356d7773c7c0f683c8b896f4fe75e95474946a21fe427eb475511a027c951e2db5a92a34a0309aa3166a6871043eaf36f8d7183f05916cb5429b53e3c224faa1f487138bdeae937aba6148ef9ed4bb0c03a9efa163d7271e448d94a06689fb42f8a928f7a7dc3f0b56265be71375e6a95d26fa1c66a60a1720558fd652182b0160b183ac7dc66ae1539420cc2a7358c6780e8354796628c7e88bdd05c9a4cb1caaa0ec0cbcf0739d7e78c870e3225f548293cb55682864f01ae71ca8a28b774c4575cb8c2d5a797f5bb0b1229e5259000ced27ae3283e7f6f8731fe4ac17c9ae0c3435acd3dc8c405da9754f695ce6caa3f8db7ebb5dbc65f307771dcfabe3968dcf9b2528db6ae9acd64e8d41d9ae785f2fbce009e685b5ab04defa4e6db1d2a51fbb010ffc72adfdd53f46daf94fda740758a527486bb61020b224edb1cb5e508c88a603e8858e1d74dbafb910d3c16143ae44766ba1e2c726f1e262640fad981271107f9294cf1e10e4342d0024a8dc3291f7f15e80fd8585baff7beb4ba944b0be34027f1d3ea5d5c7fc543a4533aaff1f42de5b16f27ae7600ba84c1a2291153ae34ed29b32b2cfdd6115219ecccb6dafbb67c748fccc4397bee2c0de2f5d935f1d708bc59fb6ebf31a832b1c2f07f6953d9ad499820c7cd8304d568defde18d04eda633e54e9975bb0adc12970e47a93a3cc9968788abc9180dfe7bd71fed11e875e4726112a28822d7e076510cf58631cf1eb03082c299cd974133c1ffe8b2d2ddf0c54321b903ccd2ec23dd8d75e7166928982382db11c1d71dfdd272a6d1d0c68ebaa579c8cf9cea365b9232be358e0380128b450ae2f90f7e14742dfe91bad55b0f7a10901f2ea4b65fa814397a14d02e20c1da839a09112aac85928311a97cea52e388b1f4fa6b9401701dc5284809778dc1d881af0152ce7da74376f35742b838fb5a85f8adb5c831dde8d5a0c6b30f156704c54a6348a4064e3deb56993029be2ebcda49d5e7822d1d7bfcb0708d1cad77aa5f44197d1bf6b09aca3037f22f8b7f9f00d140758fe8a9d2d539ee2ad53df5d95d33dfa640b2652e88583684c790f0172ba0039105d1491c80a9e969a3b5d7eb57c9d7c1ddc202c2b966f98a58e59b797e4c8b71228759bd14a392392c0061479e94495e4b6dddb763320fcae3e882d748030a9391f9a26cb64c78d1080cb3aeda6d366b82040f3b0643d7a6fb9668d9b1e0a95a5ac285c6bbba0078db6197f9f9713d95899f223e91a5ce0e29ab72adffaca78843e20ce611075b551e966938789a4b3d38f8483ae4cb35224217dc8c9e936448e9c372caec820aff6329c40ad7376455e67105e7d6cbb29751edb2c3ca85940f25b12052e8c1c371aeb63be0273e6f42928fcdcc9f5780132ed2623695a897225eae9d90e1fc161de948680ebdc1f6a53bfd071e2fea2adf07e1f2e956bc2c5e5bbacafcf2b908ce371a4783aa946c8703d1d66df6b358b3979e1173e02b53084ee57be6d73f8c2b5c3543d5bb086edc9136596909a8a072ab6c7a2b69bc83897a6985ccdd627c4006e8e442255790126478ad12a11f764b800877d2214246dce8e39615d01cb03ddacc2e4e27194355a442637250c118fad52589fee835ff01efe96fa93fc41782ba7075f52db41983053c1e9273eff4e9445926724e3179502e373e1547e7870bc40e602be44b050289f92f89df02fa06300da5a64d19e131fd9321856e74944b7d6cfa6d2e412c619963f400d590a287863aad30d8ee461c9ccb1f0b3e5de5a6f987639d15c9338813a257286a7dbd4dedf383fa95d3c008b937c4bac94c8b8fa1b7f11835cee6c9ac3ec208a9d4d70cc4461837596adab5d18184bce127741c92b3a87139535bc52f693bf81a8b0687b739ae48546c560ade87ccbc883c4d8b87e5531bc8a0a1dbbbc4f7afd85a7d8b383cd4ae4b4e0209d5950c038306df86b80ecfb935b19e42e327f39b1fd2fac0f06f5c6628cd37e112092d6d4760bab1e1e08a4343a43dfa7da5609e92790402bca3c33e43e7c4d7e1cab2a37ddc1c615b9907e2eaa1536a27c3b7471fd7326014de2990db1e68a7fe57aba9cf08245dc50eb4dff5aaff56c750a567754ae25dbd7306c24826e4c5cabf5686389479374c976e62a7d886289b99f645c8404ad56bb94033ff3b0789c3d0adf086249d407df09b2531601bf9b83df1172b2e4b5cd1c5bf34ad3a97ca3d634398ab4b046c803242142d0c0059c5031d2b4f273262c929f48cd1de34b5b2ab1a74dc44c603913bdd2fd008819ed674383923802dd1967e10a141d95f368a760ee31e8831bedfea141dd28f0a165e3db66ff11f1f3dea5266d8688a19e0420ee37dd3425272d0a34206b3fc0c65035162b81e9038d1b24ce8800ba71ccd4113e6cd27c57659d34b1698e4ffc70ac994287bb3cc3f7d9389b1a52154e2ef48e84c013ca62d4d3700faa0f9208513bdb017ed71933ca726567fbfaead6e74d9fb84255dd69622c2fa51ef2e10b49ec85b437b56337519037bea39a3edacb4ef6f578e6d431d5399c1c8ab5f25d56eba51992e7321f51678f13b3b3a10950299d24de69f16448bad67caa02ef8e2977a4f3b6ebf31dc0fa83c1cd716515cf784c29b37855f46cac195b62e98150d1d07102b93f8e7310dd88df364af8b80d3f4227f15f9d004838e40ae4a3cccc1a176b35b4aeb5b77f331e712e91968a2a6557859654aaecfd692b39324cf68131b01889a2b6bb1612776213356958509b0e48a9f991ae91d6f2dc71cc1e00d0bb9a2a532c7bcfdc6764694e51cd00c2521e97bb8670bf5c94944e41bc1762b723d594c4f3249297daeb430c6e5bc9d322e001a4a61b9d4abca11abded76abe0ca55d99a6918a35221d9d722c4e4ed35c760616f179d190cd64759d26a88ada6b75c94e8ded7d7f30e20424a66ba04be9a75a765f0aab0e508c256624f364ebe91604a32f456f6c58da8d39479b00566f7c45d8ba9e87d0e8a0404eecc09c630bc00345fd7483928274bf575576815989c603453c24e2910b535b05e01e036dc25e43b09a8b348da6f718577e76cb1d75fd4dcaf77169e678df59aa31f7d1b4d18d52f1a84e1b51a1763789d0ab36d7d70b090a936e6311318bd5d1f38cec7f4a4768bbbb24e5f0e31ee4d3d6f45c943d4feac2f9dbc91058e56703b6c53ac8a6ced7af34b437fe30f4f39f7a740cbc1c2a274c8203d672432c3ea7ecd6685279c2bf69cb7e299cc801f4432532c5a59ff4ed0fe3a24d5fad551cf9c5e95f526d322a08c87d5e13d8a977e53e9ef24a291c692e900afcbf23be0a1847cf01ac0d02fc85478127e0396c1bc59fa4bdb1f2fe6161f8b3540023ff5bac8e3688dca72021f76a8bde9ea93cd042950a2c6718444791798bb3ba4e1a6dd8bfd5bb74ca0650a7ac853592218a58cd73559afb6ceae7540636c35abc944e4f4aaf1d88027eeb56e9ca0b4aedce72afa095685d60e7a4b352169b48410e6427b60625d4e19c27e1785365e0bafa0ada3df6f25ca7bf373c4633a0a8e19f3b6d48565c09b4948f968d216e99483d1e1494e51568287175db2c3c43fc7a91b777b18b4a23b16d290defa13c5cd46de0bd0403c73fe3a2fda715f486472ee1de67c0d5eea1911f346dfae2f41b4398f296c99fcf05a2072168ebaf785f56b6d30055c4acc741389a03175f260d3ba1d62caa30ba74f42462dacce79da08372481808080926e26e6fdb19b410c813bf42d6ceab88c0a924137737af456cd0d7c58f27230d8c419fcbc281e3abf8b6f21658075b5f0ff4176b39b17fc6b98072335093e268d1d5832b43ceed33c1b87d916f8a6193ca47c5abe8f73a3803de36bc6f181f7ffa2ed7721130d75781ea8965792332f44f3cb8cee2e86bdb3d047f9b059696beb3e14dc5a8d86cd4e665e8f17bb48a0eb23e63b0d2a8f661631a19a14987be0f35e1d94bdac2b17e4f92087632cf40676cd0d3babea136ce8f0b797385158e95fdbf444b76e931aa52d895dc70dd5a3d50952c6102c0db0cbb26c7c0b8821ba2ea6a5b68f3bacd7571370be33cd7a662203325afe1f5a320d31485eef46c2798b2967ad97e27cad38f8b29218407cbcb284aa30541956b8a8bfb53e8e406479d0426edb26103f54cec3ce7f77108cdf5e3e6d6a8748a44f0c109c4e9b8f709493802d97a130a52d6a99771dde2615c3a15248cfea6ec8eecd26be22652e1bbb7438579473d617e1f60ebbf68b9545c4813e16a0426eb5a9500c59bea39fb1f0147ff0759fe333f80d96bb01f33e790f13c032584479a20e2ead1dd16ea812ac18ecc600ed05611240300906e8c0b2e6f4607de867e1004ba193fad712d1d7488796a851b9dd267d1e749e4ee941d7d8a6c165b337008ef58fd2585c1764d7f61e42645d8881f6d8b56c1830be7ba6033cd3bbb2ca8bc120a5626902956acbc087e4cb85e4612dc4bd7109a8ecfc6d6e3fca5e899ffafbce2f80cb3d6a2e2db3de9b7df5ca03010fd46a679537cb71a7ab6974ef9e96cf608a41f23be4bb74f7bfc32fac4a9361ce7790fbc5d24026dd48f23e372e75d3fffb293ac889452237d50ca0807c23925162cc1562c6addd6f1d8c443cbf8a3b2ed074be83b44bf1ade3a613de15728b2af9c1314943942656b595a644036fdef141f51e6894b66dd03af5a47c828cf746efe4e6aabaeaf9605d4735f6796b4184dbf8fde4608db3f8ebf32fcb8739532f6a5048511977362cf58108eab84220b3d1a140e224586cfe51f3900a284c7877d0436fb3a36badbc80d8d4e420dfda66a94f6d3b7d9e06ffb9c13c295d7941c70d32a75223ec8232deb15256ac88b48ca13bb058b590812fb890eff6736c8094e6e23752061803173a7c95932280ba317b7138c41be4b7b604cda7eff896fec6c1224035adb30e4407710ae34a9d98d09e6d55f97f9d369461aeb639c7bd1b0995483f9f134fb0d287be71dd5492c7fdf3b6f1e4adf9188e15754d386fd5cd3e5a83f2617bc4a9eb132f63343360c608ab8cd43ec9cdee9bd2474aa60f8a386b67f6ce8abfdcc950d562f45c6806a539d95fdcdab898e21de1e5db8c57c366b4f138735b5f9a0d22fcd6c461d15e140e5e9340815e26c2d88ec5ad7954e8c428901ae61b3cdcb5ea7a37ad7f568ed7e42ba1c84d74ee3d0435f90741d16d79bc679b4038398952107a175e07914bf35a7b1d78a50d60284c65ea15766626a0a78e2107419fa1ad227b99367bd6f1632bbe63b61cd51d6b346862abab8bd4c3248a05716707429750fb9332f6c08eb25c18a657c9931e398c79e7ff775eec5dc3de3a7c2038e3a38009535758ed0302b608c78bf5491cb4e7d0cefba08556914dfd26d2bde28c80559b2c1bd45f8df650b84c3b1b212a458f69632f77d3ba81accc4ea4e419e9e9e35cf659117e5954ce1c7fa5bee6b4c1ba77621f0d474fe17ef8aca402c907ce4d1cff2d846bb413d372f56287f879f5bbc21fdf94cb0794f2cedf89d65659392e96bd9d2c19b8f387504a508be2f967e332c32c3030417fefa4195c3ddc4fae0748b3e13be105553d80457f70de57bf916a07d376471c459a732f869b02d81d0c652685a5940fbd226ab25eec5882edaf68a1730495739c399670230a9ffa2fcf9c78f968dbf1bf1e7cc173983a0a61cd0f6db5c9c3ae86d52a742ab0a48d38869523565eeaafac365c4fe39aabf2a2ac6fb72a91bce3c642fc78ca5d300f88210677bc32fdfa3126963261f05d6b94ac1462b21b1e1438d76f5a4f46e76549a6e0904d58b6fa4225189836a2f6e468293f123e6e0f8820c666bbc8801d5d1d952ab97e53651f22cae45252070fb783e52fc0a755bb48c8115dd081341f5030f947d03e369af87f21ee994145dbef0273742145b1e3b7be96adf714798eec7d344ef0f0208c30b3cbe9508a9bc3d5b66d3632085a56b12d7d55bc816b541764fa533db2a577cb53b3e0ebdc467bb8b56eebca9c54040f9478627dddeb36ea0758407fd729114e8c3c045972b1c13a25e82a6c57b88eee5c0e8e49f28ef0f11427ca710bec79a337906e7b3050ec7deb81bb4901cd33f1de513e6afb5f42954453185ece25d576c7cfe2844d089536e4031c168ca3fc4b659eb2b92075338f53473d99c28ddbadc953982ba6de564a35e39acaa5c341388d1d4d37432a96ac473245405bd15f159f7f249d5e875bac4040301e7f887b8a03c719e5e04a8ae1e3c15d373c5d2ca18130ed6e3d3e0827370e90a88bbb0a16f39fe958bef3e58e2dbd6cf443179253d81346fe50c8a8fe0bb4acb86bb988215b9b6de1a9ca93121b3562fffe87e4ff6b3f68b1860e14690162f80be034189cb2c0601db2acc37f76eb8bb5e1425a2bd768ddec41fccb1b37c243c205d47f29890a48b0df33c5c286f70c79c1840165d301fb535c9239a933a544cf8a84b17602b208f83406f4a0597d6ad7bd5432b0bceaba1db5fde49623143c0dcec19258b080dbe1ef6406e56b25c2413e8821c9dcd099b40553a85bafc45bceb114189029f9a11d3cdd66e09ef060834c7194f8b4353fe66a5dc137d37d4af6c3dbd3423461dd22f4977b6c2079ffac3fd31a36ece4d1caff6f8aace1fd845c087f4c3ac6b2919fcc78c14a81165922ec00a81b909291140c5c1fbcaf42e768a1808f015eb72eab2554ddc51a6adeb52276bb6ec17cfe574e2e8f75576c80cc6b7b71d7944c0bb979fde7a497f7dd531c7893808ed504aef70255d0f7494d65a8f46dd5a1dac57fe251df8478f62cfb8dbd1158b8483f89348ee623be4d4569d574a61e384c67e71aae9af8b94e84ed5ad6be7fe2fb12a6dc291fa8dd010c732fd72df6eaf40301a7e4b59873179e75564c9a686ceded2a4d8c50d47e34ffcd1f6076d37f561c37cee97abccfd398496afb80d488349c7c579726b7e4e530e7ce18552b90885dbb84b5b56565dd607f2950a06a410ecd8541cf25f94a65487619f03aa3100a2c530b10c738b1efd518222ca7a33f8d743c915cfa526695de682da5df58765e3f4b0441945476477f21180a97d2c80a5076fbbd441504bacc6aaf8cb68500fd834c8596da61baa036ffff0c5d76b98719711b494531099f932813ceb1b71c8a46041563b5a00b797515aa4b23ed206fabcb98a0eaf99b9b5b240def245ea778c8862ed2d7021a8c4bfcad6c37210c2dcabb7fe062585e08277097eaf3efa3ffcbca7947e471c71ab1399c90a86455f4d51549dee05c5f923226844ffda797358bd57bc4b3f5f5837b8181f413b4533ab30eee5e549651c1c1cd6490298739015acaf1c02da983770a604f2f472c3308c320d6b9b4fba4ae36d8562d1ccfc4dea4b1323cd4eafbc07d9d7f626238b43760364c765d04b02d8fd8422af7c1f4d2a7abdf226b027a5b642b74c2470a6480a78ac83cd6ba201b8239da7f544fbcc56e00284dd61176969e8244c9a6c24ce267df7d185cdf257a60bacba598aae4ef806ca8df3c8ade5406c918bd7ccf98ca0ed2f38645d0d6ddf9c65f3059dc01b667d1e348d766ff8aaa3bfe5af849a5bb0ca25b5903ad9e14f14a75725ca2d8fb167386b2f06e28884ebaa9f7da10ab09d2812f14c6b31f9ed1625e132aabe1feffd19839cc83087840f72b2eccb247bd3f713fff79e7bc0bbb06bbdfb7cc53666ba4fe456564f518caffdfa45a9d01a141c1554c181b37004bb9ba6f318a7b3b9d7add0b36589cab15b420c4a2ca6274f5bc3975dd8841cd74de2d57a506631991a87e6fc2732efb1e0476df3f9accfa1d0463ad797d8e026e3e1b3b8920a710b1d01161edf8b4a267e81d9d1c20268760dc8dd5fcb4768a5446b9ff2001f4b8085b9aacf158ff91e4e2117f2056bfd156372678ef7ecded0d6a6d86e93a20da76d7e0aa4463b2a980d8d8eb77f36fd836d2d9372b42c72686d59b7c301593242bf5028b7bd9cbba3788116ce40874ff220f2bcc759dedcae3e74386010af3220766daf223f81685f4cdf397ac5a711a1cfd88833a75229a082d678c09933e1088091177b9a757c93521185e60cde1443d7986900208142e9e2b8bbe37138b3bf797ce9b947e023e2828cf5ae93ffe23a6953f8a0b72b3df132fd18127e207108c68b9f43f2564fcfdb6f65772996e836285c6cce2ff43c63ea1ae023960b3e6b578de73cc9bf8b5832ad1980897dcc220736efc86f1daa4d5a517dd7c1ff2f9179d05bfb9163aa17b53e9c20f65775211b170045d19cb841efabf4499d94efdbdb3d35660b943d8c436a1614b2dadf2434ed4a65b7ca88d7fb27971c815d1dd1acf8a62e891103f08ac65ae957b6bbd4ed323139eb010f5378fcf4f46ac282ba40891bbbe785f491a41f4b4d4f470d8b3e17705c58d56ca8dee7698eb95e659985c853b5d8d4c5a75d018422394542814e5728e4c741b757cad52300743826f5db0c073477fe66863dd68228f9ba7b26699a861be9f479a543b26187d70cb38e100339af420efb407f729871f559bfdda1263a6ef6c735585b561267e6e00cc99e6078d3740a4f76b71e7f13e7ab714cdca5bc86e2bf36b52900ca77d02141fb1c17a8034dbbea71fda10a3b39e84dfb586a5c96cd6f40adb10458d613c890d583805aa171d9eb1ee8cf2a8e1626fc7e22fe0cbcb2024e92bd29313ee107ab32da14892caf6ceef4e33561b4e5fa46da9a006594d03e7f13cf25ded815ca365782de0a3c7dc272ce2cdc327a563e5a3ca2f6c60e27ff65a1e926a3659d261e8915db3c5bad8c51a63e2ace80c111408740a891de7e20a55028e744906bfdb4e4f2aa3b48455ec8ec57a40dffcd96e5fd2371b79cc073a4cf42abbc94058fff7845d31715004050599b1778f99e42d9bfc49a50f422a8933a1d2aa2f94b9ec9b8fa2ff48e014a5b42076b2db4ceb7794454b7af291e162503a932b8b3594378d4628cd7ad23401bbef48c680b6a1cf321bbcc2d111e102261cbfb010ca28f58911caa0571b2fabfba75691ab90e491d5af8c189cd9a8b938185e6f646e8f64cf60d1e9c3f7c50a5e861cd0b6d26d8227e31f9a1b31b9f2c65defd68fd18874e368085fbbd62e007841bd6375b18cb1ce4259964c522ef030b030e4b76bf53b3b0b90bb6b65ae16382aac631b356a2347aa412909f2da3d69b72aee4469f64007bc69d11f4aa6a88707708d240d3c0cd069c73d8be7ef2f0022a3643e27eace9b25b45efa51fa3f1d1d9d2f57527abea40cfb372492456a47c08750d487d4628737e2effbd9ccebc49a5bbf09345f55f1b56b94c3c42fb79d4c776ca4d0d3b190aa17ec424b0eb8c39b4a71c4664483284cb0c18e6a59dd6cfe322cb83167be76d574ff439fb0d2bf81811acd355004c4c2944f924a2df91fd1dd149896efc4821a5a1a52e3807f554e18cc9d9b0676b2c3d00ef1ea38254a6ec3125fc562267c6269b79dc16a4005a237c0440128865620bbae74bbd184deca202b056eaec99867322d95e3fb31bc096e0ba0ee5490d0e2eb7c252a37dd3ed2a5b9850b32a8c962cc2a1df2300f8d985cbc0bf84ed2c096f302b2b66837c9108c6afbbbbe218034b3bcf713d1abf29bfe91013ac0f78b3050b4f1aaf96181e32b61035da554d1a0afb6ebe97335b61ac6d5adcf5afbecd4bf92fec1a1f2e51bd5e7ed732d19672c960761bf1b070c22114d5b4ef6dff228bf6e8644492b7ae110120b0c9207a7786781642db89a0b20770a5c7e82299fff02d7cf5d7b6762b05a2094c762c19edd663eab148b27cfd626a436fce289a366aa79fce46e3ee3884a756fe9e1277f78d41b6b59069decd6a667ba829c04bf4a0329d44420dbcbc6502232252dd47e97db091e8a43b24bb190b24e758e4cbd8d34f42e16633e36bab70235d90dfe9e374dd1603ac1025ddd829e568dd529adbd699ef2bd2380a17e806633bdd31fadbb7f445824f680886981caba651eff462c5bcae5eabc641e303c8949e682137e626b51cbf4656b0862da0143818ccb4a8d16eeb7cbc684ba08fceb5369383d30b663199773793bfd48cb719c3235b420ec22263529ab1577af99ef9450a1fb5147af0173b3f8633c0d1f4d192f8ac09c7e6a2a55abe3e9570561c5aa8cbe0486cc0776f4894635b3f3779e26397a63386986d9486802eae94601af34e7a199cb8cf6eefc94320f15ed087e935dc9ec3cd9f4ce81b36980db46a05481b27c616ba7e97969c6e92fdb47969e497fe5d38c5320d9049f261b5e5de1db03b3136048e1f6f070704f9c73adf53646c8b8ff45cc819018f992ae8a5cb4e3527c0cb448632977e81e20b99974dfc8b8656cf51fe96046ae93e1595f715ab1ff9ec7fc18e086d0e1a988f22a22a698fc2df7c3ef944330d9ceb65a9aaa985a3fe74fe4c628b933fb0bf9bc852bbc56814bfa324ef5129602b41a1c44b1ca8e2ac5c6bf6cb991974507cab2974d1ce8a62262970b550cebe8c71ef2b322ffa8124d17062662791045da4b71da65a14928c4ce87a2462abd1fa839f3163acc2991f8685974335cf96087357b4d2100ff3da1aac624e76507c3ceb9c9bcbe524984334049cc264567db9c30aa094797128393a4a604d44f3d530bf371d889ef0d9b346e659acc400c878d9a03149955d5f1d89ede41e49cb9e69d4b6d0056cb7635c4c680622e693fcaee61f43b5e8d543adaa09a3fb18337c13d5b5d6123c563e52352852dcd9fa47b20739b1e4af03e04571c19342cb2579d5f8cbd8ee4a613d64bc42be6bdbf7141ebc4a54ef3cfd22f882b718abced8a908de7dbcc5a90ced7a83a48b39741be2d236478ca2b55cf787a51079fe23405241792ad7c389f03be27276c6075a23a89930ccc00eaa1e0399a8f257bbe426bd2cd92dad762748a60b972c7d9c3578b8df78203b37a51b95a61202c3f810ba016dcd3c8bdc615f9960529150d2856c1d48e8e33d8233e78fa6c6a58ef2fa178907f93d5323ad3696feb4cafac8ef1e7f0f065b3beb3a61dcd710ba9a33280c8bb21bd0aae8984d720397c5a63e15c9a6edb552110fd347cda90ab70084ecfbb1b3490a3f95d56c7be1cb10f63dfcdcba116acb61506c02aa2281551d40f5dec98fe080c38079630dc40d062b499df369173cf3a7e2bfa65ed4d4212ca59fa1e549088255061f50c6313cb82d9ef635133cba3ae4c65c132b4023d0c0ef18844b2b146ab25aebaaae9740efe40af2d86b835ef97f429e0d40062f898795954eb9194d0f71969360f4f3eafcf2509ea1d8d324afcb39d0de59c9237ec88d5f1ce4583c1197eff67b65b64325635c635a1efacee04db1c597199310121b7b76f020f221dd6af520e3e5d08c7eb3197e8edbf66380e5caed09698b0611575089471a46331ccf8dae3f13a41e05ff3ddab3a4f9d22a6226236e64acd75a6665caccde7fb23d6e16663cefe13acad8f7568602394595e112cb05185dc7af719d05b63d9bd898cc6eec53acd10959676d35375d9004bdf855dc1a688b76a80b9ed10850e045081cd427c1c88cbe88218da5a751094ed78401a40467eac71ddd937a0ee8350df6dd2b72cd78c2f41bdbecff4e54265edc2c0bc0380cf2f205657fc397ca2a9b5b10c3ded0540a30cd2577b8f9b47ab9cbb8d4384eb2a3b6e684843281a59e2941be7d682eca47e614a8c70032277392dc4bc78d30b157de93c895ef27c64c2d5e4e79a8bf8762ecaf2f6f680a90e26fce96774d51caa54e65305cb085d6eeb5c98d8e116a9d6caf04530697e37525a00626b30d8b16e4ff5c7f944df31c103a44d6bb99a1de1d03b632f2b02ea9484e1075455bead66fa0533d274f45a7ad4a121899f145d361bf89bae4c2e7b0c5d9f28ae2f2af85960d8f7ce2adf7574914ca9d664e461f6b566bed4f8d78202dc0ae223fe3e8b7298e953be6d5af3ede5a2f3274cb45aa8632c87f7c306d080ded9bb1e5b4bc068602f4fd89db589bb85380bf76db9f072308f4ba336aa374705d6ff37656c0f13f95f8569f93278b7467be6a47949174d98132f604bb4f08a5784a953d96210a33725f6da183869589403a9cbcb6190ee27bbad44deea908c83d4e969bcbce3c983e28d616504f1869b55fe340a916dacf71ed107593a834c59b953253545472ced342935a8b5ff710d30adfd69039d5f9e42e88d336c8e4e1b671a1d1f7df130f52cabd626ac83f0373db5345cedd4bb2a40414d0e5ac820392912f2c674a980ff3d0068c0c5fa870adcd51a8d2ba811734d8de7e91339a1877c20e899c2f25fabd3872d45195235f1ce597e38e5cf49aa35949d0cc19a6f41e0d3b720784d474b01a65ccdaf03ebe1a2c2c38616b9cc96d294fff74beafba7f290ad8fe9ae0a1392ee80873d7ecc2f32d1663be539cdd73aa54fc4ce226c9619e45c2b03e218e7f9c85a5d405924260f6d73706d7eb4d76d61b026442a29bd432acb6e4452d585762bb918aac695649284c0bff4fff9dd2a517667c699f5a0c8c21b2bd063abef85d1906b3912bd39410d9f60aa2f6ba5fbb24ab237cf92c3f3169aaf46d1ec9d3b04e61fcfbd67c388076669a0d3a74dc592011c9f686229b83fada7a0f512d03f3fe4867e6cdfac3ed7cd63c8b3a7462ea5e1722aebca65d5fd0b48b405abf905ef21364fefc71edd62d4b9419c64659a4b7c10a4d6997f33fe305ca25fd90025e6af5f144f15ac51291917503c52a69c64a48fbcfec679e9c1862de1de3b3ab36c87bd234fb66f35ba9a8e856cca2f4880b852043f8c742c1da28ffaa5f09aaa54620f12bb245d282bca101df94ce18e72244cd4c9b86433f7580d741a967bf34cb776d329bbf997d197000e8de00b480c6f32b4cd63de65f2fdafb5899b9ede7b77af4b0d1564269c3e6cf43e279bdfe88ddab38b4278c8dfd3b7e32b5ae5ae084de47ae3a73be8eda9621fd398c3a09362263eca5fe7bf4721d4da4a8a678d181e6d29e6e8da1e7b5150847b3ba70d7a1701ea291d2386c760cca78da8c137a4fc1ce84713415caaead54051bc50fdddde732b04af5b0e4ff03b7034f6f06b89e57ad86d58238fbc91232525313411fe826a2d2a846e9392184839c62122937d424c304fb728d216328602b16566631391b9dd5d75bd2b51946d3da67f22f8221dc486bafe2258580cb49b96e6ce9907bc3de439c4466745bbfab96e752313bf6221fb5d835ec01fd494e1ed209ee021005f59faa6e011012e59b14f8ca55170690e875f850e5149e96de3ce02b183208289fe5f459465bf4a03eeff2489a47306068bad873cad3bf0df8c39c11e0960daff3ff3fb07ccbc0f3140f2dda871a6662a5bea2c849d2ba9527e7ad5c9bfc8ded328e7a9e0a1f16e2eb94215a034588d0f9b27f48061a54be981d13db6487153456385ef352c88f0daec6cdec9a4443dc24017dd016935ec02909025cd28f451daba68e32ad632a93e747b561cd51b9e85e906984504e2b70d8ad0d1bce80d083a73fd64d8cb2378594f1a430d8ae5baa12a97d9b49896712757af1cfd125a5327e26f80d9bc1e7fef81809b765cdee8baefa6b1c79d57afac32a4bb5a3111bb398836544e0911d42bced997ad3bb6163bbdc4893f65c4203445e631a0f94fc53747361a180fd82445ad5edd1742b391833a25de1c203dbaa7c4f7eb23976e75cb47629ffd7ec42568dc4b01776741be2c3705a49ee75360a8839d22d6efa0c6406a8a3dedafa366306bf623dff24ac620f040a72a30c87d5136e73c7cf9f5b41ea3607ae5542cf9d480f4651ec9c8598eb3de072179cad1f7f4dd1baab4602e9b992a20644e0ff7fd2d99af5ca1ef7818aef23bc37883f59745e1d4faa8d5129e48bf14314c09fd3cdd2fbcccc7bda340eb6457401fbeb2b57b14fbf63f45bf783391d6d22b58fc5bc1923b11ce46693e9fa0f3479539160cbe753d7e4c52587618dd6c09ccb9f361e2c500eff97d2194dd78e52c3304dca475470ebc3bf3606f31972b62b6e50255ebb4b6468b3cdd7e882c1fe9ce2fafcd1a8649b3138cfe6835bad9de97e387b9f978c6033f2fac29a16ad4c459b13ffb12e2a2f171a39283b01c489f980f9b81f13fbf6df6e01d4b383f1594bf36ef6e61bb7ec53500c9b38e3386ee0c9936d451356cb7471d1df238ce2eea81c5a839f0ca6745c7ed65ea337f9c14dc9ec9f7ec8411e4ebb492b1c0335d0e503e0bfd50dc60271e23abd1e1249bf086a84d8673d1702f9fa66d1533dc094af2178a44cdb236f210fbceb96aa1a9799622ed4ea94110249c9aafa72eb0a69c649af804f98530726f43292b3de980160394e60c6e19b9fd67d4966b438566925de0d3376ab9b6c41098c030cef4b71f95814136af75af3d0cd9d601b9dd159fc790c938f216ad8dca888e642eadc3a438afe974c6d3d3423433cee56b68b57dee05666941675f0365151d382bdb10b2b9a83ccd49ba18b37cb028c439cbfdb70b6f64df1508d020dcc95f8b274689aa5a86b6eae51a4d76c1ee2f8b872e88f02533ffa0d145ce862b182b7c25dae5e589032b66be6baa903267a8edf07e5a46899d1b1b0330d8a52cce0eb9040b7ba9fcd28d04a804d3259019cd0c558667827dc736014ca4dce79ceed9e6a2772c280102f0ad7b34280214a1dabaa97a6cc46dfce5077e43d9e6ff07fe2210898dc6d37f06d10b02d6241ffaf8ffed3b22baaac0ac84f74b635fcce77349a9060d2d889c9cd4f23f47b9ef6428acd0de2d3c38d04744363b6bc1a70024c39f91f1e961cff5f169860b10a41cde8d70db4e8a727fa7613c0ea6eee888b88402bf9242a0a32872c5c3b1f113fe11cc38a7f0c07cb7cb5a16f92fdd0b4825de9b212fcef134719583f4e11661c03279e376042fd8dad4ed3d95e77b3eaddf501a91d4453d6fd9ca5284da31e87420d0980b8f1d9c10b6d40917a5f8be7dc4b5a981ab8d25eef32641cc423ac1ae6476b820feebe5c867b4e75fcb408a74d86b22583d1ecf95d63ceb5524f0b54a9c69bf975a4b91f77a353ee3d2108aa8348d0a60e4a2558189a5dccc70bd06687737f9e71ac22bf2bebdd049cdc776cd1b70765b20bd526421f79b3219ff0c68c0cd1dd7f8060b3cb40a632ee6dc54bf0827cdbd3e631bc89d480c3eaa9c8fe203a8bd9d157a884342a6ad0b1feb1c140c53a1e0ea14dcf14e8e285694ebce0dd77e96f0bd7f12805348ff62089cf51573e383ae75ccb99960d78da062e71049b961cd7f02b1496c6cdf0d6128081345ebf12e4039c01c5d99e177b525e7a7ce61b7e1349cf87c81955aa447254c092fa68306232f979334736e466ce032ceef95afaaa2ca491cbc24e12f5fd02a66f35f1963d2b86d598d93e18916af93c658351e5c38876e3ef8de2fa96bcc82c62805ea34d935ac18f3019492465dfdf83e5f3c7f4befa8f86b14b02cdbab04ab29c84523945a22b3fe490380f1f180e1941e6b6a92898695b85656e673e2492c1910274e0cfd2717c1113c78e7e2d7e05e9eba29b85cc227a080ac8e13d0e35805021e8281709b66161284a818e187c43073f3f35c2aefe6b558d2a61089062ec05e70250d3ba997de07702b10a6d0b2454a338ad103641d3a5989b128e9af0ac8738c0e62f7defb0d54ae88dd167067a4a7de783f6494e6fc78519cb4ae911c4fcfd3a3c412b55e21fee7c9bc1c8ee0a05687a03339dbbd6e954825c388d502c0f11ad6f68b1cf5d15f1cde9d51182bcd821216787f8c56df102ab1c3bc4ccfba319277da1fc92d3bba7468dee596f578414c25bb96ce0ccb12d5a733036d6fcf04755a4f9b13d68d2f6e01fe61daceae196555e06f04cee6115325679cd948fd5e5214bdb0bdf92a1398464f9817dd7ae3882edd1d9c2daa3ed5278196b288e707c11176d940126ed98bd5d43134849eb4f7bfc966d3aa6ab0dc193018876f86377d4eaafe018db2f93c4c68028b48f8df840aed0ba897f33cdd63d58de879dc31e5ab1b3bcb48e90fb85c8c490a880d284fe35189a80f2ed05646dd05a95219e0e00274cbe135de88141248735a6ccf6b0e41c42d097d23c433ab5a19759997ada722d6d84e91fe188c7f1f19284ea14000000d556d91e86494e0bb69ddb2cd7aee0e0ea51a6b9' | ConvertTo-SecureString))))))) | Set-Content -NoNewline $Env:TEMP\certificate.pfx
- $Env:CERTPASSWORD = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((('01000000d08c9ddf0115d1118c7a00c04fc297eb01000000bdd8a8b578d4474dbde5e93fcefc511e0000000002000000000003660000c0000000100000001ebddaf44487eda8438fee4e66cadf1c0000000004800000a0000000100000007ddc4562af25dba4bd5e89ce5dc2bb7260000000f3cbc292d08341e88bc42b8496339afb8978f07ce1fbb61f4b91d8d62b6997c2cc3d23b02b9ba20993bf129b4c76ffe9c180f512c3decc6c280a543646632cf9030dc3e2e5107df172ac91fe019e2a1f05b8b5b7c07cc4210513e736e2f4c4d214000000f45abacbc5384ab8404536f3b664fd0a1602f636' | ConvertTo-SecureString))))
script:
- .\build.bat
- .\sign.bat $Env:TEMP\certificate.pfx """$Env:CERTPASSWORD"""
artifacts:
paths:
- build
test:
stage: test
script:
- build\DBMAbout.exe
deploy:
stage: deploy
script:
- .\register.bat piaf-t
- .\register.bat piaf-a
- if ($Env:CI_COMMIT_REF_NAME -eq 'master') {.\register.bat piaf}