From 31fc4ad6c9cde7afd7088bab7695294d448e0eb5 Mon Sep 17 00:00:00 2001 From: lijuncheng Date: Tue, 2 Apr 2024 13:51:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=82=B9=E6=A3=80=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- password.txt | 2 +- src/manifest.json | 4 +- src/mycomponents/form/customerFrom.vue | 464 +++++++----------- src/pages.json | 2 +- src/pages/foam/check.vue | 31 +- src/pages/foam/input.vue | 44 +- src/pages/index/index.vue | 25 +- src/pages/setter/index.vue | 36 +- src/store/modules/user.js | 4 +- .../components/wz-select-popup/wz-list.vue | 8 +- test.keystore | Bin 2260 -> 2189 bytes 11 files changed, 266 insertions(+), 354 deletions(-) diff --git a/password.txt b/password.txt index b79b823..00707ed 100644 --- a/password.txt +++ b/password.txt @@ -1,2 +1,2 @@ 别名:testalias -密码: wms3.0 \ No newline at end of file +密码: putandin \ No newline at end of file diff --git a/src/manifest.json b/src/manifest.json index 949117c..be23fe5 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,6 +1,6 @@ { - "name" : "wms", - "appid" : "__UNI__43932FE", + "name" : "投入产出", + "appid" : "__UNI__37328FF", "description" : "", "versionName" : "1.0.0", "versionCode" : 1, diff --git a/src/mycomponents/form/customerFrom.vue b/src/mycomponents/form/customerFrom.vue index eabd529..32fb2a8 100644 --- a/src/mycomponents/form/customerFrom.vue +++ b/src/mycomponents/form/customerFrom.vue @@ -36,147 +36,150 @@ - - - + + + - - - - * - {{ index + 1 }}. + + + + * + {{ index + 1 }}. + + + + 点检部位 : {{ item.Position }} - - - 点检部位 : {{ item.Position }} - - - 点检内容 : {{ item.Content }} - - - 点检方法 : {{item.Methond}} - + + 点检内容 : {{ item.Content }} + + + 点检方法 : {{item.Methond}} + - - - - 点检状态 - (单选) - - - - - - {{radio.name}} - - - - + + + + 点检状态 + (单选) - + + + + + {{radio.name}} + + + + - + + - - - - * - {{ index + 1 }}. + + + + + * + {{ index + 1 }}. + + + + 点检部位 : {{ item.Position }} - - - 点检部位 : {{ item.Position }} - - - 点检内容 : {{ item.Content }} - - - 点检方法 : {{item.Methond}} - + + 点检内容 : {{ item.Content }} + + 点检方法 : {{item.Methond}} + + + + + + + 点检状态 + (单选) + + + + + + {{radio.name}} + + + + - + + - - 点检状态 - (单选) - - - - - - {{radio.name}} - - - - + {{item.putMachine[0].Name}}({{item.putMachine[0].Limit}}~{{item.putMachine[0].Floor}}) + - - - - {{item.putMachine[0].Name}} - - - - {{item.putMachine[1].Name}} - - + + {{item.putMachine[1].Name}}({{item.putMachine[1].Limit}}~{{item.putMachine[1].Floor}}) + - + + - - - - * - {{ index + 1 }}. - - - - {{ item.Content }} - + + + + + + * + {{ index + 1 }}. + + + + {{ item.Content }} + - - - (单选) - - - - - {{radio.name}} - - + + + (单选) + + + + + {{radio.name}} + - - - + + - + + - + + @@ -240,6 +243,7 @@ current: 0, isRefresh: true, isRefreshType3: true, + isRefreshType2: true, }; @@ -273,6 +277,13 @@ } this.reload3() }, + + inputType2(item){ + // if(item.length==0){ + + // } + this.reload2() + }, submit(callBack) { @@ -303,176 +314,64 @@ } } else if (item.Type == 3) { if (item.SelectName == "") { - if(item.putMachine[0].SelectName==""){ + if (item.putMachine[0].SelectName == "") { var hint = hintIndex + ".点检内容 : " + item.Content; throw new Error(hint) - }else { - if (!this.isWithinInterval(item.putMachine[0].SelectName, item.putMachine[0].Limit, item + } else { + if (!this.isWithinInterval(item.putMachine[0].SelectName, item.putMachine[0].Limit, + item .putMachine[0] .Floor)) { - var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName + + var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.putMachine[0].SelectName + "】不在【" + item.putMachine[0].Limit + "】和【" + item.putMachine[0].Floor + "】之间" throw new Error(hint) } } - - if(item.putMachine[1].SelectName==""){ + + if (item.putMachine[1].SelectName == "") { var hint = hintIndex + ".点检内容 : " + item.Content; throw new Error(hint) - }else { - if (!this.isWithinInterval(item.putMachine[1].SelectName, item.putMachine[1].Limit, item + } else { + if (!this.isWithinInterval(item.putMachine[1].SelectName, item.putMachine[1].Limit, + item .putMachine[1] .Floor)) { - var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName + + var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.putMachine[1].SelectName + "】不在【" + item.putMachine[1].Limit + "】和【" + item.putMachine[1].Floor + "】之间" throw new Error(hint) } } - - - }else {if (!this.isExitList(item.SelectName)) { - if (!this.isWithinInterval(item.putMachine[0].SelectName, item.putMachine[0].Limit, item - .putMachine[0] - .Floor)) { - var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName + - "】不在【" + item.putMachine[0].Limit + "】和【" + item.putMachine[0].Floor + "】之间" - throw new Error(hint) - } - if (!this.isWithinInterval(item.putMachine[1].SelectName, item.putMachine[1].Limit, item - .putMachine[1] - .Floor)) { - var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName + - "】不在【" + item.putMachine[1].Limit + "】和【" + item.putMachine[1].Floor + "】之间" - throw new Error(hint) - } - }} - - } - } - - this.formData.forEach(res => { - if (res.SelectName.includes("班")) { - var value = this.dataClassList.filter(item => item.name == res.SelectName) - if (value.length > 0) { - res.SelectValue = value[0].value } else { - res.SelectValue = "" - } - } else { - var value = this.dataList.filter(item => item.name == res.SelectName) - if (value.length > 0) { - res.SelectValue = value[0].value - } else { - res.SelectValue = res.SelectName - } - } - }) - - callBack(this.formData) - } catch (error) { - this.showHint("", error.message) - } - - }, - - - - submitss(callBack) { - var isCheckPass = true - for (var i = 0; i < this.formData.length; i++) { - var item = this.formData[i]; - var hintIndex = i + 1 - - if (item.Type == 1) { - if (item.SelectName == "") { - this.showHint(hintIndex + ".点检内容 : " + item.Content, item.placeholder) - isCheckPass = false; - break - } - } else if (item.Type == 2) { - - } else - - if (item.Type == 3) { - if (item.SelectName == "") { - this.showHint(hintIndex + ".点检内容 : " + item.Content, item.inputLow.placeholder) - isCheckPass = false; - break - } else { - if (!this.isWithinInterval(item.inputLow.name, item.inputLow.lower, item.inputLow - .upper)) { - this.showHint(hintIndex + ".点检内容 : " + item.Content, "最低压 : 输入数量【" + item.inputLow - .name + - "】不在【" + item.inputLow.lower + "】和【" + item.inputLow.upper + "】之间") - isCheckPass = false; - break - } - } - - if (item.inputHigh.name == "") { - this.showHint(hintIndex + ".点检内容 : " + item.Content, item.inputHigh.placeholder) - isCheckPass = false; - break - } else { - if (!this.isWithinInterval(item.inputHigh.name, item.inputHigh.lower, item.inputHigh - .upper)) { - this.showHint(hintIndex + ".点检内容 : " + item.Content, "最高压 : 输入数量【" + item.inputHigh - .name + - "】不在【" + item.inputHigh.lower + "】和【" + item.inputHigh.upper + "】之间") - isCheckPass = false; - break - } - } - - } else if (item.Type == 2) { - if (item.SelectName == "") { - this.showHint(hintIndex + ".点检内容 : " + item.Content, item.placeholder) - isCheckPass = false; - break - } else { - if (!this.isExitList(item.SelectName)) { - if (item.putMachine.length > 0) { - for (var i = 0; i < item.putMachine.length; i++) { - var temp = item.putMachine[i] - if (item.SelectName == "") { - this.showHint(hintIndex + ".点检内容 : " + item.Content, temp.Name) - isCheckPass = false; - break - } - - if (!this.isWithinInterval(item.SelectName, temp.Limit, temp.Floor)) { - this.showHint(hintIndex + ".点检内容 : " + item.Content, "输入数量【" + item - .SelectName + - "】不在【" + temp.Limit + "】和【" + temp.Floor + "】之间") - isCheckPass = false; - break - } - + if (!this.isExitList(item.SelectName)) { + if (!this.isWithinInterval(item.putMachine[0].SelectName, item.putMachine[0].Limit, + item + .putMachine[0] + .Floor)) { + var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName + + "】不在【" + item.putMachine[0].Limit + "】和【" + item.putMachine[0].Floor + "】之间" + throw new Error(hint) } - } else { - if (!this.isWithinInterval(item.SelectName, item.Limit, item.Floor)) { - this.showHint(hintIndex + ".点检内容 : " + item.Content, "输入数量【" + item - .SelectName + - "】不在【" + item.Limit + "】和【" + item.Floor + "】之间") - isCheckPass = false; - break + if (!this.isWithinInterval(item.putMachine[1].SelectName, item.putMachine[1].Limit, + item + .putMachine[1] + .Floor)) { + var hint = hintIndex + ".点检内容 : " + item.Content + "输入数量【" + item.SelectName + + "】不在【" + item.putMachine[1].Limit + "】和【" + item.putMachine[1].Floor + "】之间" + throw new Error(hint) } } } - - } - } else if (item.type == "groupSelect") { - if (item.SelectName == "") { - this.showHint(hintIndex + ".点检内容 : " + item.Content, item.placeholder) - isCheckPass = false; - break + }else if(item.Type == 4){ + if (item.SelectName == "") { + var hint = hintIndex + ".点检内容 : " + item.Content; + throw new Error(hint) + } } } - } - if (isCheckPass) { + this.formData.forEach(res => { if (res.SelectName.includes("班")) { var value = this.dataClassList.filter(item => item.name == res.SelectName) @@ -486,22 +385,25 @@ if (value.length > 0) { res.SelectValue = value[0].value } else { - res.SelectValue = "" + res.SelectValue = res.SelectName } } }) - callBack(this.formData) - // this.$emit("submit",this.formData) - console.log("通过", this.formData) - } else { - console.log("失败") + callBack(this.formData) + } catch (error) { + this.showHint("", error.message) } + }, + + + + isWithinInterval(num, lower, upper) { - var num =Number(num); - var lower =Number(lower); - var upper =Number(upper); + var num = Number(num); + var lower = Number(lower); + var upper = Number(upper); if (!this.isNumber(num)) { return true; } @@ -528,23 +430,20 @@ reset() { for (var i = 0; i < this.formData.length; i++) { var item = this.formData[i]; - if (item.type == "inputRange") { - item.inputLow.name = ""; - item.inputHigh.name = "" - } else if (item.type == "inputAndSelect") { - if (item.putMachine) { - item.putMachine.name = "" - item.putMachine.value = "" - } - if (item.minor) { - item.minor.name = "" - item.minor.value = "" - } + if(item.Type == "1"){ + item.SelectName = "" + item.SelectValue= "" + }else if(item.Type == "2"){ item.SelectName = "" - item.value = "" - } else { + item.SelectValue= "" + }else if(item.Type == "3"){ + item.putMachine.forEach(res=>{ + res.SelectName="" + res.SelectValue="" + }) + }else if(item.Type == "4"){ item.SelectName = "" - item.value = "" + item.SelectValue= "" } } // var testList =deepCopyData(this.dataList) @@ -563,12 +462,19 @@ this.isRefresh = true this.isRefreshType3 = true }) + this.$forceUpdate() }, reload3() { this.isRefreshType3 = false this.$nextTick(() => { this.isRefreshType3 = true }) + }, + reload2() { + this.isRefreshType2 = false + this.$nextTick(() => { + this.isRefreshType2 = true + }) } diff --git a/src/pages.json b/src/pages.json index b741089..1271ca8 100644 --- a/src/pages.json +++ b/src/pages.json @@ -3,7 +3,7 @@ "pages": [{ "path": "pages/index/index", "style": { - "navigationBarTitleText": "WMS仓库管理系统-移动端", + "navigationBarTitleText": "投入产出管理系统-移动端", "titleNView": { // "autoBackButton": "true", "buttons": [{}] diff --git a/src/pages/foam/check.vue b/src/pages/foam/check.vue index 93981ec..de18a08 100644 --- a/src/pages/foam/check.vue +++ b/src/pages/foam/check.vue @@ -4,10 +4,10 @@ style="font-size: 32rpx; padding-left: 10rpx; padding-top: 10rpx; flex-direction: column;"> - + 设备编号 : {{deviceCode}} - + 设备名称 : {{deviceName}} @@ -77,7 +77,7 @@ dateTime: "", deviceCode: "", deviceName: "", - worker: "admin", + worker: this.$store.state.user.id, dataList: [], formData: [{ type: "stateSelect", @@ -219,20 +219,24 @@ this.reset(); this.closeScanPopup(); var groupSelect = { - Type: "5", + Type: "4", Content: "选择班组", - placeholder: "请选择班组", - name: '', - value: "", + SelectName: "", + SelectValue: "", } // this.dataList = this.formData this.dataList = res.Result; this.dataList.push(groupSelect) this.dataList.forEach(res=>{ res.SelectName="" - res.putMachine.forEach(item=>{ - item.SelectName="" - }) + res.SelectValue="" + if(res.putMachine){ + res.putMachine.forEach(item=>{ + item.SelectName="" + item.SelectValue="" + }) + } + }) this.deviceName=this.dataList[0].Name; this.dateTime = getCurrDateTime() @@ -256,9 +260,9 @@ return } this.$refs.customerFrom.submit(data => { - data.worker ="admin"; var commitData={ - worker:"admin", + LoginUserID:this.$store.state.user.id, + UserName:this.$store.state.user.name, createTime:getCurrDateTime(), dataList:data } @@ -293,6 +297,9 @@ closeScanPopup() { this.$refs.scanPopup.closeScanPopup(); }, + showMessage(hint){ + this.$refs.comMessage.showMessage("提示", hint) + }, } } diff --git a/src/pages/foam/input.vue b/src/pages/foam/input.vue index 7878db0..c0bf4e2 100644 --- a/src/pages/foam/input.vue +++ b/src/pages/foam/input.vue @@ -26,11 +26,11 @@ - + - - + + @@ -40,11 +40,11 @@ - + - - + + @@ -206,22 +206,22 @@ uni.hideLoading() this.showMessage(error) }) - this.$refs.selectPopup.open({ - mode: 'radio', //radio checkbox 单选、多选 - dataList: getDataList(), //如果dataList传入了数组则直接使用传入的数组渲染,无需再配置proxyConfig - // selected: this.userForm.values, //已选中的数据 - // proxyConfig: { //组件内部代理请求数据配置 - // reqFun: this.reqGetList, //请求方法 - // localPaging: false //前端本地分页 - // }, - search: { - type: 'local', //local本地数据搜索 | remote请求接口 - }, - fields: { - label: 'name', - value: 'code' - } - }) + // this.$refs.selectPopup.open({ + // mode: 'radio', //radio checkbox 单选、多选 + // dataList: getDataList(), //如果dataList传入了数组则直接使用传入的数组渲染,无需再配置proxyConfig + // // selected: this.userForm.values, //已选中的数据 + // // proxyConfig: { //组件内部代理请求数据配置 + // // reqFun: this.reqGetList, //请求方法 + // // localPaging: false //前端本地分页 + // // }, + // search: { + // type: 'local', //local本地数据搜索 | remote请求接口 + // }, + // fields: { + // label: 'name', + // value: 'code' + // } + // }) }, diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index cca63cc..514a9b0 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -91,7 +91,8 @@ position: [-10, -10], menusCount: {}, filterList: [], - serchval: "" + serchval: "", + backButtonPress: 0 } }, onLoad() { @@ -108,8 +109,7 @@ }, - onHide() { - }, + onHide() {}, onShow() { if (uni.getStorageSync("hasLogin") == null || uni.getStorageSync("hasLogin") == false) { uni.showModal({ @@ -131,11 +131,22 @@ } } }) - } + } }, - onUnload() { + onUnload() {}, + onBackPress(e) { + // 此处一定要return为true,否则页面不会返回到指定路径 + this.backButtonPress++; + if (this.backButtonPress > 1) { + plus.runtime.quit(); + } else { + plus.nativeUI.toast('再滑一次退出应用11'); + } + setTimeout(function() { + this.backButtonPress = 0; + }, 1000); + return true; }, - mounted() {}, methods: { findList(tab) { @@ -258,7 +269,7 @@ openCheck(url) { uni.navigateTo({ - url: url + url: url }); this.filterList = [] }, diff --git a/src/pages/setter/index.vue b/src/pages/setter/index.vue index 832807d..35cbbd6 100644 --- a/src/pages/setter/index.vue +++ b/src/pages/setter/index.vue @@ -57,7 +57,7 @@ const app = createApp({}); // app.component({ // }); - const userName = ref(store.state.user.name); + const userName = ref(store.state.user.id); let test = ref("123"); let version = ref(); let userInfo = ref(null); @@ -79,30 +79,18 @@ function handlerlogout() { - store.dispatch('LogOut', {}).then(() => { - clearStorage(); - // #ifdef H5 - uni.reLaunch({ - url: '../login/index' - }) - // #endif - - // #ifdef APP - plus.runtime.quit() - // #endif - - }).catch(error=>{ - clearStorage(); - // #ifdef H5 - uni.reLaunch({ - url: '../login/index' - }) - // #endif - - // #ifdef APP - plus.runtime.quit() - // #endif + clearStorage(); + // #ifdef H5 + uni.reLaunch({ + url: '../login/index' }) + // #endif + + // #ifdef APP + plus.runtime.quit() + // #endif + + }; function clearStorage() { diff --git a/src/store/modules/user.js b/src/store/modules/user.js index c62b59f..0f4fc23 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -52,8 +52,8 @@ const user = { return new Promise((resolve, reject) => { login(username, password).then(res => { if(res){ - - // 设置 token + commit('SET_ID',res.Result.LoginUserID) + commit('SET_NAME',res.Result.UserName) resolve(res) }else { uni.showToast({ diff --git a/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-list.vue b/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-list.vue index 2a2422c..b5d8bf2 100644 --- a/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-list.vue +++ b/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-list.vue @@ -4,8 +4,9 @@ @click="$emit('checkList',item)"> - {{index+1}}. - {{item[fields.label]}} + {{index+1}}. + + {{item[fields.label]}} @@ -76,10 +77,9 @@ .list-item { display: flex; align-items: center; - color: $uni-text-color-grey; + color: gray; padding: $uni-spacing-col-base; margin-bottom: $uni-spacing-col-sm; - background-color: #fff; .list-item-text { @include wz-line(2); diff --git a/test.keystore b/test.keystore index 982d16eb6c410d16ecacae8739f65f23d5d9dfc8..769beff2f17bd4134e895336aa1a3920a6d57495 100644 GIT binary patch literal 2189 zcmb`H`9G8k8^)h!W=zI5#uDkxQeli!Ju^nuFmbXklR1=;r8FXG!q}5WNY%Q-6Yi4T(007udf&VU)-$h?P zS1%7&-yJ0({j2>p0Pw*eCSnT`K?znUbaTpxmdoKGL|9;XfYY0GXM*J1R`b$I5^a%s_8 ztXFFX3vF|#l?8?L(wFRq_@-_5?++#Q(N0Ca%Ca3vzXfpB9?dfoyS+pMd8xgl{H>G5 zLrGcmxqIWived#0D}D3h09~K#5c=M2-Mob*)MI}#cR~1uRNGxDCXk|WM53;meGm- z;4yrCsm#bSSvrfCf74b^pQkGUyjp&DcGkPcXY_kV;ZOSsO+))A^ZPC;gSwgay5dpN zd)!PW<+uBM7}XBEG-0aad>vLg>KWr(x_@4U4m~V%8=o~(=XR(SzLj_9+EKOUw~kDv{Hb<>*MN zdPs0WDmMSU1^%1{GY()GaK2dray`Y4#Ps{trmriQ$=24 zk!;uf<`lavCBkJD>k>SqpjePVfHc?xwhV<2*f}wb6-DEncjNAnfbErgW z(T_(P$K8~hJb7}L^ApoHepz+3k3FfewoB#538m}e=#c`t8E*oGr5!vfZ_CP;Q?MnU zv{LzHxwnt;;;z!kYc_z1ZH8rp&)&f!T4N8kRf|OH6friHn^k)>LGV44pK09 z3z-nPo`&uC(t2i6mgZ6EDQS4;6lZHKGUgVRg}SKWmSB^k+Qmqf*h0LttQkzjn^7VZ{S`h=thaN z`URI^7OE+<645mOfxT(mJBz-Gsg?f0jpBL%Cj~Rd?tEUts+CNL#NBpo$vEuy^L#M5 z9nDETBFElud2(TiJ18588i_+~p9)3}<~ifX!X5)S(XqE>milcY)x6M-OkGdP3&fSX zVaRbKJ(kO_p9*_$v@Ym@meol?&ST|pk!%Aq7iQvFBh*lDz9$=YKeo5Z< zYQr$m%s}f+)bv<6yF?wa$gM9vyfC~PQEV+W;tVb)_O_=g(f8ObuMJ#GmC+TI2og4s z|EJS7$tiC`*<1TwTyI~&H0}AH>N2@bu+yy^Jnhswc=cxV{_`UK#{UUNzB5PFAuRxa zlOQJi1jK|XX2D?~42A%qG*3tviNZyhMEw*7K|wwMvcd~OC?xz31X3L4SAxnvuKooH?gs}0A@0X-N2?_ray%dyd{0f zGF>}QNl|1(@^YWUDT-wVGfDgOs)YZE z22B=P&}p1{c|O~m&5|!NXkaa7+c?< z(>-TvzpF=(I&upGe2=K55N4X_l|2hCq-xdLyAy!sHy8DaAX}TT$xYOyfwDBefM&m#JiD#S}I72*y5agb$O@>?Ar!(_Fva*+Q~0 zi6z^tu7Rt4S2?OtKy91i`6cLSND3}|)Kka7y7k5QYaJ)NbeoAc(%=^*(yk(aiK~X@6A?CRUyo*ge3QvS-j^HiyEC7x9gc zW?{vlC-SC}(vI;<_MgG6?(_E&v3c~#tT_J?rqeGb!_=?DQ4ShL29g+F@comM1znPS LvuCBf*PH(as-Lr~ literal 2260 zcmc(g`8U*k8^`B63&t2jW6yq@yOQN=?A(?X%h-~bL`{|yZu>Sy7{sI`VJxLE_9aBf zR+OGh*4sL^5ZSVaHsaQOI?uV!dH#UshwF#;>-{=~754-eueM5ix z`tfqBj$*!3+AHF6Wjk&wx`5vWW&hy_@>o_&*Wo$07C(wRk$jeasRz@lc>C%cd`mh- zTs!|zlXFPnnQPM!or0d>LH)a^5Ig5A!OXsV^(E{p41mBMe|iy4{nasdRTd6uqcYH;j{l+ueyVSPm|o83-7D@!Ix6A}#e^!I$#G z>~HHc|GKP{@|%6KP6t%UweSrOV9)o>un8Q6qiR?+@`Qxl@FLk>lGJ61t}XA^oHqk9 z_}&bfV6u))oog1<(G*kPkj%^=OBDVw(%{Lb?5SRpLz3UWm@f8?zpeSO@tG|h_awx? zknt5G^xn2-R*q0)1N~wD*_T{=PRxq1ZnT`4;b&4Bj=^fn)`Wl3j4;1SLXaGHbGhc(HqGc3+Oq1{!N3fbQydHEd z;)Zq|;!(PD9hPWegKhtCh9iAVXktt2!^nE?Y-*C8#5)tSsH}N#s(2_ew6TX8E!Ohg z=Rc932CI3}^LmspSG5NMrlLC?7Sgy@9(?r|en9QBZ-ugX4+52Nu-m<)K~t!ePbR^J zMGdzb;VI*=dgbV`B_HxxHO|F|s0mZ_TqP|qslSF&wXD`$5Nww+SSktVh+(Vm#)z&n7-Gs)6 z8bpG31{P)zvb*5ajcM**sG=DoNe{m`-}`M9LzPw*18BZswi_dNCCu z(ZVL1!-4!|G$!=fh`~Kf`al>+Ibt~yeqa|Y8^A* z6D!?SaJ=)TKEc`6d5>NW+;`CILFkn}_?>!v17=O^(yKvgCz;pYA0~J*k!wi=kxceE zjPM=5GZ7=!Ca8e=oAxDXt}?bRBEV2rWf4^+*i}Mx=HsPt`6JIQH%&2Y%R@l~ZqnYG zgz@EVaof1WS2E%yk<>rwlhuy5s$va!foE4)Un;pCp!KW`(#RzVfi zgg{`oz$jP@7zOprhCu-+6i%f0R)T0Yq%6&t_5}?9CW;_#x<%(c^al&tQkG&NyUqvmr;;&x7-b@Jd4~1LyK3aR~E@#>g%(!XiHb#sS!_d zY$xRs$;--~C)BZikjtW65l1F7CSIeBhe!&g_Q8z6NSt@?*Gb`CGwhRrl=uDbTI|iM z62%i4(a6X~JGBbdi9sJ^6R5NKWi?U&l7cwqglkuPo?qW^DmOp-1=EEdLvv-JtFSDXsO418Gg9%NFv$5<}JZoSS*QlX6Yw@%s#b=}s|Gf6mlGX~v-2$erOLNz3 z|M=>>JUdg|&_!)wLbybFc5OV?RHtp{eM#@DL!jtn7@$X9zKkfa1qMt|22dCP0dl24 z2~g}{{bJm30XQG+YJU331xg0ame=SMSTrtVtqtB^ zda+d-DIh2wWyH}Ai4}H2psTeU?*4Y~{#&C9T5&nm8Z_SQoF5QY_LXGWxIZSK1Mlg? z63o)APSmw|`b=|bms;tLYE}SNE-de6Odftl3Qb{17z~upY^br0}u(vBuhOp!&=+4_EL_GLHnjE-0g7N>*2O3eS~>N*TczC*_qm z)bw<$hUOHDf`)7-UKB81Sv16h)ka(e{%p3vPtpq(=gzc57MU?lkG6k}iLY+r&28K( IRsgsD1^~_6SpWb4