From c2d67dffb1f5c7f2b62c019a81cc6ad2de2cb4a3 Mon Sep 17 00:00:00 2001 From: lipnggao Date: Wed, 27 Sep 2023 15:09:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .hbuilderx/launch.json | 16 + App.vue | 40 + index.html | 20 + main.js | 27 + manifest.json | 72 + pages.json | 43 + pages/firing/firing.vue | 39 + pages/logon/logon.vue | 254 + pages/novel/performance/performance.vue | 269 + static/firing/firing_logo.png | Bin 0 -> 16747 bytes static/logo.png | Bin 0 -> 4023 bytes static/logon/logon_nav_bg.png | Bin 0 -> 142421 bytes static/logon/logon_password.png | Bin 0 -> 1265 bytes static/logon/logon_password_hide.png | Bin 0 -> 1144 bytes static/logon/logon_password_open.png | Bin 0 -> 1240 bytes static/logon/logon_usersName.png | Bin 0 -> 1474 bytes static/novel/performance/per_body_tabs.png | Bin 0 -> 2328 bytes static/novel/performance/per_bubble.png | Bin 0 -> 391 bytes static/novel/performance/per_bubble_modal.png | Bin 0 -> 27397 bytes .../novel/performance/per_head_sculpture.png | Bin 0 -> 6834 bytes static/novel/performance/per_nav_bar_bg.png | Bin 0 -> 74152 bytes static/novel/performance/per_order.png | Bin 0 -> 551 bytes static/novel/performance/per_sequence.png | Bin 0 -> 541 bytes uni.promisify.adaptor.js | 10 + uni.scss | 77 + uni_modules/uview-ui/LICENSE | 21 + uni_modules/uview-ui/README.md | 66 + uni_modules/uview-ui/changelog.md | 362 + .../uview-ui/components/u--form/u--form.vue | 78 + .../uview-ui/components/u--image/u--image.vue | 47 + .../uview-ui/components/u--input/u--input.vue | 73 + .../uview-ui/components/u--text/u--text.vue | 44 + .../components/u--textarea/u--textarea.vue | 48 + .../components/u-action-sheet/props.js | 54 + .../u-action-sheet/u-action-sheet.vue | 278 + .../uview-ui/components/u-album/props.js | 59 + .../uview-ui/components/u-album/u-album.vue | 259 + .../uview-ui/components/u-alert/props.js | 44 + .../uview-ui/components/u-alert/u-alert.vue | 243 + .../components/u-avatar-group/props.js | 52 + .../u-avatar-group/u-avatar-group.vue | 103 + .../uview-ui/components/u-avatar/props.js | 78 + .../uview-ui/components/u-avatar/u-avatar.vue | 172 + .../uview-ui/components/u-back-top/props.js | 54 + .../components/u-back-top/u-back-top.vue | 129 + .../uview-ui/components/u-badge/props.js | 72 + .../uview-ui/components/u-badge/u-badge.vue | 171 + .../uview-ui/components/u-button/nvue.scss | 46 + .../uview-ui/components/u-button/props.js | 161 + .../uview-ui/components/u-button/u-button.vue | 490 + .../uview-ui/components/u-button/vue.scss | 80 + .../uview-ui/components/u-calendar/header.vue | 99 + .../uview-ui/components/u-calendar/month.vue | 579 + .../uview-ui/components/u-calendar/props.js | 144 + .../components/u-calendar/u-calendar.vue | 384 + .../uview-ui/components/u-calendar/util.js | 85 + .../components/u-car-keyboard/props.js | 14 + .../u-car-keyboard/u-car-keyboard.vue | 311 + .../uview-ui/components/u-cell-group/props.js | 14 + .../components/u-cell-group/u-cell-group.vue | 61 + .../uview-ui/components/u-cell/props.js | 110 + .../uview-ui/components/u-cell/u-cell.vue | 229 + .../components/u-checkbox-group/props.js | 82 + .../u-checkbox-group/u-checkbox-group.vue | 103 + .../uview-ui/components/u-checkbox/props.js | 69 + .../components/u-checkbox/u-checkbox.vue | 344 + .../components/u-circle-progress/props.js | 8 + .../u-circle-progress/u-circle-progress.vue | 198 + .../uview-ui/components/u-code-input/props.js | 79 + .../components/u-code-input/u-code-input.vue | 252 + .../uview-ui/components/u-code/props.js | 34 + .../uview-ui/components/u-code/u-code.vue | 129 + .../uview-ui/components/u-col/props.js | 29 + .../uview-ui/components/u-col/u-col.vue | 162 + .../components/u-collapse-item/props.js | 59 + .../u-collapse-item/u-collapse-item.vue | 225 + .../uview-ui/components/u-collapse/props.js | 19 + .../components/u-collapse/u-collapse.vue | 90 + .../components/u-column-notice/props.js | 55 + .../u-column-notice/u-column-notice.vue | 160 + .../uview-ui/components/u-count-down/props.js | 24 + .../components/u-count-down/u-count-down.vue | 163 + .../uview-ui/components/u-count-down/utils.js | 62 + .../uview-ui/components/u-count-to/props.js | 59 + .../components/u-count-to/u-count-to.vue | 184 + .../components/u-datetime-picker/props.js | 116 + .../u-datetime-picker/u-datetime-picker.vue | 360 + .../uview-ui/components/u-divider/props.js | 44 + .../components/u-divider/u-divider.vue | 116 + .../components/u-dropdown-item/props.js | 36 + .../u-dropdown-item/u-dropdown-item.vue | 127 + .../uview-ui/components/u-dropdown/props.js | 65 + .../components/u-dropdown/u-dropdown.vue | 127 + .../uview-ui/components/u-empty/props.js | 59 + .../uview-ui/components/u-empty/u-empty.vue | 128 + .../uview-ui/components/u-form-item/props.js | 48 + .../components/u-form-item/u-form-item.vue | 235 + .../uview-ui/components/u-form/props.js | 45 + .../uview-ui/components/u-form/u-form.vue | 214 + .../uview-ui/components/u-gap/props.js | 24 + .../uview-ui/components/u-gap/u-gap.vue | 38 + .../uview-ui/components/u-grid-item/props.js | 14 + .../components/u-grid-item/u-grid-item.vue | 209 + .../uview-ui/components/u-grid/props.js | 19 + .../uview-ui/components/u-grid/u-grid.vue | 97 + .../uview-ui/components/u-icon/icons.js | 214 + .../uview-ui/components/u-icon/props.js | 89 + .../uview-ui/components/u-icon/u-icon.vue | 234 + .../uview-ui/components/u-image/props.js | 84 + .../uview-ui/components/u-image/u-image.vue | 232 + .../components/u-index-anchor/props.js | 29 + .../u-index-anchor/u-index-anchor.vue | 91 + .../uview-ui/components/u-index-item/props.js | 5 + .../components/u-index-item/u-index-item.vue | 87 + .../uview-ui/components/u-index-list/props.js | 29 + .../components/u-index-list/u-index-list.vue | 440 + .../uview-ui/components/u-input/props.js | 187 + .../uview-ui/components/u-input/u-input.vue | 354 + .../uview-ui/components/u-keyboard/props.js | 84 + .../components/u-keyboard/u-keyboard.vue | 164 + .../components/u-line-progress/props.js | 28 + .../u-line-progress/u-line-progress.vue | 144 + .../uview-ui/components/u-line/props.js | 33 + .../uview-ui/components/u-line/u-line.vue | 62 + .../uview-ui/components/u-link/props.js | 39 + .../uview-ui/components/u-link/u-link.vue | 83 + .../uview-ui/components/u-list-item/props.js | 9 + .../components/u-list-item/u-list-item.vue | 116 + .../uview-ui/components/u-list/props.js | 76 + .../uview-ui/components/u-list/u-list.vue | 157 + .../components/u-loading-icon/props.js | 59 + .../u-loading-icon/u-loading-icon.vue | 343 + .../components/u-loading-page/props.js | 49 + .../u-loading-page/u-loading-page.vue | 115 + .../uview-ui/components/u-loadmore/props.js | 94 + .../components/u-loadmore/u-loadmore.vue | 150 + .../uview-ui/components/u-modal/props.js | 84 + .../uview-ui/components/u-modal/u-modal.vue | 227 + .../uview-ui/components/u-navbar/props.js | 84 + .../uview-ui/components/u-navbar/u-navbar.vue | 186 + .../uview-ui/components/u-no-network/props.js | 19 + .../components/u-no-network/u-no-network.vue | 220 + .../uview-ui/components/u-notice-bar/props.js | 70 + .../components/u-notice-bar/u-notice-bar.vue | 101 + .../uview-ui/components/u-notify/props.js | 49 + .../uview-ui/components/u-notify/u-notify.vue | 211 + .../uview-ui/components/u-number-box/props.js | 109 + .../components/u-number-box/u-number-box.vue | 416 + .../components/u-number-keyboard/props.js | 19 + .../u-number-keyboard/u-number-keyboard.vue | 196 + .../uview-ui/components/u-overlay/props.js | 24 + .../components/u-overlay/u-overlay.vue | 68 + .../uview-ui/components/u-parse/node/node.vue | 499 + .../uview-ui/components/u-parse/parser.js | 1075 + .../uview-ui/components/u-parse/props.js | 45 + .../uview-ui/components/u-parse/u-parse.vue | 366 + .../components/u-picker-column/props.js | 5 + .../u-picker-column/u-picker-column.vue | 27 + .../uview-ui/components/u-picker/props.js | 79 + .../uview-ui/components/u-picker/u-picker.vue | 283 + .../uview-ui/components/u-popup/props.js | 79 + .../uview-ui/components/u-popup/u-popup.vue | 304 + .../components/u-radio-group/props.js | 85 + .../u-radio-group/u-radio-group.vue | 108 + .../uview-ui/components/u-radio/props.js | 64 + .../uview-ui/components/u-radio/u-radio.vue | 339 + .../uview-ui/components/u-rate/props.js | 69 + .../uview-ui/components/u-rate/u-rate.vue | 306 + .../uview-ui/components/u-read-more/props.js | 61 + .../components/u-read-more/u-read-more.vue | 157 + .../uview-ui/components/u-row-notice/props.js | 39 + .../components/u-row-notice/u-row-notice.vue | 330 + .../uview-ui/components/u-row/props.js | 19 + .../uview-ui/components/u-row/u-row.vue | 93 + .../components/u-safe-bottom/props.js | 5 + .../u-safe-bottom/u-safe-bottom.vue | 56 + .../uview-ui/components/u-scroll-list/nvue.js | 28 + .../components/u-scroll-list/other.js | 0 .../components/u-scroll-list/props.js | 34 + .../components/u-scroll-list/scrollWxs.wxs | 50 + .../u-scroll-list/u-scroll-list.vue | 224 + .../uview-ui/components/u-search/props.js | 118 + .../uview-ui/components/u-search/u-search.vue | 303 + .../uview-ui/components/u-skeleton/props.js | 59 + .../components/u-skeleton/u-skeleton.vue | 244 + .../uview-ui/components/u-slider/mpother.js | 113 + .../uview-ui/components/u-slider/mpwxs.js | 42 + .../uview-ui/components/u-slider/mpwxs.wxs | 121 + .../components/u-slider/nvue - 副本.js | 180 + .../uview-ui/components/u-slider/nvue.js | 193 + .../uview-ui/components/u-slider/props.js | 54 + .../uview-ui/components/u-slider/u-slider.vue | 55 + .../uview-ui/components/u-status-bar/props.js | 8 + .../components/u-status-bar/u-status-bar.vue | 46 + .../uview-ui/components/u-steps-item/props.js | 24 + .../components/u-steps-item/u-steps-item.vue | 316 + .../uview-ui/components/u-steps/props.js | 39 + .../uview-ui/components/u-steps/u-steps.vue | 80 + .../uview-ui/components/u-sticky/props.js | 40 + .../uview-ui/components/u-sticky/u-sticky.vue | 212 + .../uview-ui/components/u-subsection/props.js | 49 + .../components/u-subsection/u-subsection.vue | 299 + .../u-swipe-action-item/index - backup.wxs | 256 + .../components/u-swipe-action-item/index.wxs | 225 + .../u-swipe-action-item/nvue - backup.js | 270 + .../components/u-swipe-action-item/nvue.js | 174 + .../components/u-swipe-action-item/props.js | 41 + .../u-swipe-action-item.vue | 190 + .../components/u-swipe-action-item/wxs.js | 15 + .../components/u-swipe-action/props.js | 9 + .../u-swipe-action/u-swipe-action.vue | 67 + .../components/u-swiper-indicator/props.js | 29 + .../u-swiper-indicator/u-swiper-indicator.vue | 110 + .../uview-ui/components/u-swiper/props.js | 125 + .../uview-ui/components/u-swiper/u-swiper.vue | 255 + .../uview-ui/components/u-switch/props.js | 54 + .../uview-ui/components/u-switch/u-switch.vue | 177 + .../components/u-tabbar-item/props.js | 35 + .../u-tabbar-item/u-tabbar-item.vue | 142 + .../uview-ui/components/u-tabbar/props.js | 44 + .../uview-ui/components/u-tabbar/u-tabbar.vue | 141 + .../uview-ui/components/u-table/props.js | 5 + .../uview-ui/components/u-table/u-table.vue | 29 + .../uview-ui/components/u-tabs-item/props.js | 5 + .../components/u-tabs-item/u-tabs-item.vue | 29 + .../uview-ui/components/u-tabs/props.js | 64 + .../uview-ui/components/u-tabs/u-tabs.vue | 354 + .../uview-ui/components/u-tag/props.js | 84 + .../uview-ui/components/u-tag/u-tag.vue | 358 + uni_modules/uview-ui/components/u-td/props.js | 5 + uni_modules/uview-ui/components/u-td/u-td.vue | 31 + .../uview-ui/components/u-text/props.js | 110 + .../uview-ui/components/u-text/u-text.vue | 223 + .../uview-ui/components/u-text/value.js | 85 + .../uview-ui/components/u-textarea/props.js | 119 + .../components/u-textarea/u-textarea.vue | 239 + .../uview-ui/components/u-toast/u-toast.vue | 291 + .../uview-ui/components/u-toolbar/props.js | 34 + .../components/u-toolbar/u-toolbar.vue | 102 + .../components/u-tooltip/clipboard.min.js | 58 + .../uview-ui/components/u-tooltip/props.js | 59 + .../components/u-tooltip/u-tooltip.vue | 365 + uni_modules/uview-ui/components/u-tr/props.js | 5 + uni_modules/uview-ui/components/u-tr/u-tr.vue | 31 + .../components/u-transition/nvue.ani-map.js | 68 + .../uview-ui/components/u-transition/props.js | 24 + .../components/u-transition/transition.js | 157 + .../components/u-transition/u-transition.vue | 92 + .../u-transition/vue.ani-style.scss | 113 + .../uview-ui/components/u-upload/mixin.js | 21 + .../uview-ui/components/u-upload/props.js | 124 + .../uview-ui/components/u-upload/u-upload.vue | 558 + .../uview-ui/components/u-upload/utils.js | 151 + .../uview-ui/components/uview-ui/uview-ui.vue | 15 + uni_modules/uview-ui/index.js | 79 + uni_modules/uview-ui/index.scss | 23 + uni_modules/uview-ui/libs/config/color.js | 17 + uni_modules/uview-ui/libs/config/config.js | 34 + uni_modules/uview-ui/libs/config/props.js | 190 + .../uview-ui/libs/config/props/actionSheet.js | 25 + .../uview-ui/libs/config/props/album.js | 25 + .../uview-ui/libs/config/props/alert.js | 22 + .../uview-ui/libs/config/props/avatar.js | 28 + .../uview-ui/libs/config/props/avatarGroup.js | 23 + .../uview-ui/libs/config/props/backtop.js | 27 + .../uview-ui/libs/config/props/badge.js | 27 + .../uview-ui/libs/config/props/button.js | 42 + .../uview-ui/libs/config/props/calendar.js | 42 + .../uview-ui/libs/config/props/carKeyboard.js | 15 + .../uview-ui/libs/config/props/cell.js | 35 + .../uview-ui/libs/config/props/cellGroup.js | 17 + .../uview-ui/libs/config/props/checkbox.js | 27 + .../libs/config/props/checkboxGroup.js | 29 + .../libs/config/props/circleProgress.js | 15 + .../uview-ui/libs/config/props/code.js | 21 + .../uview-ui/libs/config/props/codeInput.js | 29 + uni_modules/uview-ui/libs/config/props/col.js | 19 + .../uview-ui/libs/config/props/collapse.js | 17 + .../libs/config/props/collapseItem.js | 25 + .../libs/config/props/columnNotice.js | 24 + .../uview-ui/libs/config/props/countDown.js | 18 + .../uview-ui/libs/config/props/countTo.js | 25 + .../libs/config/props/datetimePicker.js | 36 + .../uview-ui/libs/config/props/divider.js | 23 + .../uview-ui/libs/config/props/empty.js | 26 + .../uview-ui/libs/config/props/form.js | 22 + .../uview-ui/libs/config/props/formItem.js | 23 + uni_modules/uview-ui/libs/config/props/gap.js | 19 + .../uview-ui/libs/config/props/grid.js | 17 + .../uview-ui/libs/config/props/gridItem.js | 16 + .../uview-ui/libs/config/props/icon.js | 36 + .../uview-ui/libs/config/props/image.js | 30 + .../uview-ui/libs/config/props/indexAnchor.js | 19 + .../uview-ui/libs/config/props/indexList.js | 19 + .../uview-ui/libs/config/props/input.js | 48 + .../uview-ui/libs/config/props/keyboard.js | 30 + .../uview-ui/libs/config/props/line.js | 20 + .../libs/config/props/lineProgress.js | 19 + .../uview-ui/libs/config/props/link.js | 26 + .../uview-ui/libs/config/props/list.js | 28 + .../uview-ui/libs/config/props/listItem.js | 15 + .../uview-ui/libs/config/props/loadingIcon.js | 30 + .../uview-ui/libs/config/props/loadingPage.js | 23 + .../uview-ui/libs/config/props/loadmore.js | 32 + .../uview-ui/libs/config/props/modal.js | 30 + .../uview-ui/libs/config/props/navbar.js | 32 + .../uview-ui/libs/config/props/noNetwork.js | 18 + .../uview-ui/libs/config/props/noticeBar.js | 27 + .../uview-ui/libs/config/props/notify.js | 22 + .../uview-ui/libs/config/props/numberBox.js | 35 + .../libs/config/props/numberKeyboard.js | 17 + .../uview-ui/libs/config/props/overlay.js | 18 + .../uview-ui/libs/config/props/parse.js | 22 + .../uview-ui/libs/config/props/picker.js | 29 + .../uview-ui/libs/config/props/popup.js | 29 + .../uview-ui/libs/config/props/radio.js | 27 + .../uview-ui/libs/config/props/radioGroup.js | 30 + .../uview-ui/libs/config/props/rate.js | 26 + .../uview-ui/libs/config/props/readMore.js | 22 + uni_modules/uview-ui/libs/config/props/row.js | 17 + .../uview-ui/libs/config/props/rowNotice.js | 21 + .../uview-ui/libs/config/props/scrollList.js | 20 + .../uview-ui/libs/config/props/search.js | 37 + .../uview-ui/libs/config/props/section.js | 24 + .../uview-ui/libs/config/props/skeleton.js | 25 + .../uview-ui/libs/config/props/slider.js | 25 + .../uview-ui/libs/config/props/statusBar.js | 15 + .../uview-ui/libs/config/props/steps.js | 21 + .../uview-ui/libs/config/props/stepsItem.js | 18 + .../uview-ui/libs/config/props/sticky.js | 20 + .../uview-ui/libs/config/props/subsection.js | 23 + .../uview-ui/libs/config/props/swipeAction.js | 15 + .../libs/config/props/swipeActionItem.js | 21 + .../uview-ui/libs/config/props/swiper.js | 39 + .../libs/config/props/swipterIndicator.js | 19 + .../uview-ui/libs/config/props/switch.js | 24 + .../uview-ui/libs/config/props/tabbar.js | 22 + .../uview-ui/libs/config/props/tabbarItem.js | 20 + .../uview-ui/libs/config/props/tabs.js | 32 + uni_modules/uview-ui/libs/config/props/tag.js | 29 + .../uview-ui/libs/config/props/text.js | 38 + .../uview-ui/libs/config/props/textarea.js | 36 + .../uview-ui/libs/config/props/toast.js | 30 + .../uview-ui/libs/config/props/toolbar.js | 21 + .../uview-ui/libs/config/props/tooltip.js | 25 + .../uview-ui/libs/config/props/transition.js | 18 + .../uview-ui/libs/config/props/upload.js | 36 + uni_modules/uview-ui/libs/config/zIndex.js | 20 + uni_modules/uview-ui/libs/css/color.scss | 155 + uni_modules/uview-ui/libs/css/common.scss | 97 + uni_modules/uview-ui/libs/css/components.scss | 15 + uni_modules/uview-ui/libs/css/flex.scss | 257 + uni_modules/uview-ui/libs/css/h5.scss | 0 uni_modules/uview-ui/libs/css/mixin.scss | 8 + uni_modules/uview-ui/libs/css/mp.scss | 0 uni_modules/uview-ui/libs/css/nvue.scss | 0 uni_modules/uview-ui/libs/css/vue.scss | 27 + .../uview-ui/libs/function/colorGradient.js | 134 + .../uview-ui/libs/function/debounce.js | 29 + uni_modules/uview-ui/libs/function/digit.js | 167 + uni_modules/uview-ui/libs/function/index.js | 731 + .../uview-ui/libs/function/platform.js | 75 + uni_modules/uview-ui/libs/function/test.js | 288 + .../uview-ui/libs/function/throttle.js | 30 + .../libs/luch-request/adapters/index.js | 97 + .../luch-request/core/InterceptorManager.js | 50 + .../libs/luch-request/core/Request.js | 198 + .../libs/luch-request/core/buildFullPath.js | 20 + .../libs/luch-request/core/defaults.js | 29 + .../libs/luch-request/core/dispatchRequest.js | 3 + .../libs/luch-request/core/mergeConfig.js | 103 + .../uview-ui/libs/luch-request/core/settle.js | 16 + .../libs/luch-request/helpers/buildURL.js | 69 + .../libs/luch-request/helpers/combineURLs.js | 14 + .../luch-request/helpers/isAbsoluteURL.js | 14 + .../uview-ui/libs/luch-request/index.d.ts | 116 + .../uview-ui/libs/luch-request/index.js | 3 + .../uview-ui/libs/luch-request/utils.js | 131 + .../uview-ui/libs/luch-request/utils/clone.js | 264 + uni_modules/uview-ui/libs/mixin/button.js | 13 + uni_modules/uview-ui/libs/mixin/mixin.js | 160 + uni_modules/uview-ui/libs/mixin/mpMixin.js | 8 + uni_modules/uview-ui/libs/mixin/mpShare.js | 13 + uni_modules/uview-ui/libs/mixin/openType.js | 25 + uni_modules/uview-ui/libs/mixin/style.js | 228 + uni_modules/uview-ui/libs/mixin/touch.js | 59 + .../uview-ui/libs/util/async-validator.js | 1343 + uni_modules/uview-ui/libs/util/calendar.js | 546 + uni_modules/uview-ui/libs/util/dayjs.js | 308 + uni_modules/uview-ui/libs/util/emitter.js | 51 + uni_modules/uview-ui/libs/util/route.js | 124 + uni_modules/uview-ui/package.json | 84 + uni_modules/uview-ui/theme.scss | 44 + .../dev/.automator/mp-weixin/.automator.json | 0 .../.sourcemap/mp-weixin/common/main.js.map | 1 + .../mp-weixin/common/runtime.js.map | 1 + .../.sourcemap/mp-weixin/common/vendor.js.map | 1 + .../mp-weixin/pages/firing/firing.js.map | 1 + .../mp-weixin/pages/logon/logon.js.map | 1 + .../novel/performance/performance.js.map | 1 + .../liu-bubble-menu/liu-bubble-menu.js.map | 1 + .../components/u--input/u--input.js.map | 1 + .../components/u-badge/u-badge.js.map | 1 + .../uview-ui/components/u-icon/u-icon.js.map | 1 + .../components/u-input/u-input.js.map | 1 + .../components/u-navbar/u-navbar.js.map | 1 + .../u-radio-group/u-radio-group.js.map | 1 + .../components/u-radio/u-radio.js.map | 1 + .../u-status-bar/u-status-bar.js.map | 1 + .../uview-ui/components/u-tabs/u-tabs.js.map | 1 + unpackage/dist/dev/mp-weixin/app.js | 4 + unpackage/dist/dev/mp-weixin/app.json | 15 + unpackage/dist/dev/mp-weixin/app.wxss | 3 + unpackage/dist/dev/mp-weixin/common/main.js | 150 + unpackage/dist/dev/mp-weixin/common/main.wxss | 45 + .../dist/dev/mp-weixin/common/runtime.js | 273 + unpackage/dist/dev/mp-weixin/common/vendor.js | 20520 ++++++++++++++++ .../dist/dev/mp-weixin/pages/firing/firing.js | 195 + .../dev/mp-weixin/pages/firing/firing.json | 6 + .../dev/mp-weixin/pages/firing/firing.wxml | 1 + .../dev/mp-weixin/pages/firing/firing.wxss | 43 + .../dist/dev/mp-weixin/pages/logon/logon.js | 345 + .../dist/dev/mp-weixin/pages/logon/logon.json | 11 + .../dist/dev/mp-weixin/pages/logon/logon.wxml | 1 + .../dist/dev/mp-weixin/pages/logon/logon.wxss | 123 + .../pages/novel/performance/performance.js | 313 + .../pages/novel/performance/performance.json | 10 + .../pages/novel/performance/performance.wxml | 1 + .../pages/novel/performance/performance.wxss | 154 + .../dist/dev/mp-weixin/project.config.json | 47 + .../dev/mp-weixin/project.private.config.json | 27 + .../mp-weixin/static/firing/firing_logo.png | Bin 0 -> 16747 bytes unpackage/dist/dev/mp-weixin/static/logo.png | Bin 0 -> 4023 bytes .../mp-weixin/static/logon/logon_nav_bg.png | Bin 0 -> 142421 bytes .../mp-weixin/static/logon/logon_password.png | Bin 0 -> 1265 bytes .../static/logon/logon_password_hide.png | Bin 0 -> 1144 bytes .../static/logon/logon_password_open.png | Bin 0 -> 1240 bytes .../static/logon/logon_usersName.png | Bin 0 -> 1474 bytes .../B基础组件-02-图标/箭头/升序@2x.png | Bin 0 -> 391 bytes .../novel/performance/Frame 1024@2x.png | Bin 0 -> 2328 bytes .../static/novel/performance/Union@2x.png | Bin 0 -> 27397 bytes .../novel/performance/per_body_tabs.png | Bin 0 -> 2328 bytes .../static/novel/performance/per_bubble.png | Bin 0 -> 391 bytes .../novel/performance/per_bubble_modal.png | Bin 0 -> 27397 bytes .../novel/performance/per_head_sculpture.png | Bin 0 -> 6834 bytes .../novel/performance/per_nav_bar_bg.png | Bin 0 -> 74152 bytes .../static/novel/performance/per_order.png | Bin 0 -> 551 bytes .../static/novel/performance/per_sequence.png | Bin 0 -> 541 bytes .../static/novel/performance/头像@2x.png | Bin 0 -> 6834 bytes .../liu-bubble-menu/liu-bubble-menu.js | 1 + .../liu-bubble-menu/liu-bubble-menu.json | 4 + .../liu-bubble-menu/liu-bubble-menu.wxml | 1 + .../liu-bubble-menu/liu-bubble-menu.wxss | 35 + .../uview-ui/components/u-badge/u-badge.js | 261 + .../uview-ui/components/u-badge/u-badge.json | 4 + .../uview-ui/components/u-badge/u-badge.wxml | 1 + .../uview-ui/components/u-badge/u-badge.wxss | 91 + .../uview-ui/components/u-icon/u-icon.js | 333 + .../uview-ui/components/u-icon/u-icon.json | 4 + .../uview-ui/components/u-icon/u-icon.wxml | 1 + .../uview-ui/components/u-icon/u-icon.wxss | 89 + .../uview-ui/components/u-input/u-input.js | 477 + .../uview-ui/components/u-input/u-input.json | 6 + .../uview-ui/components/u-input/u-input.wxml | 1 + .../uview-ui/components/u-input/u-input.wxss | 93 + .../uview-ui/components/u-navbar/u-navbar.js | 338 + .../components/u-navbar/u-navbar.json | 7 + .../components/u-navbar/u-navbar.wxml | 1 + .../components/u-navbar/u-navbar.wxss | 83 + .../components/u-radio-group/u-radio-group.js | 251 + .../u-radio-group/u-radio-group.json | 4 + .../u-radio-group/u-radio-group.wxml | 1 + .../u-radio-group/u-radio-group.wxss | 47 + .../uview-ui/components/u-radio/u-radio.js | 430 + .../uview-ui/components/u-radio/u-radio.json | 6 + .../uview-ui/components/u-radio/u-radio.wxml | 1 + .../uview-ui/components/u-radio/u-radio.wxss | 94 + .../components/u-status-bar/u-status-bar.js | 211 + .../components/u-status-bar/u-status-bar.json | 4 + .../components/u-status-bar/u-status-bar.wxml | 1 + .../components/u-status-bar/u-status-bar.wxss | 30 + .../uview-ui/components/u-tabs/u-tabs.js | 429 + .../uview-ui/components/u-tabs/u-tabs.json | 6 + .../uview-ui/components/u-tabs/u-tabs.wxml | 1 + .../uview-ui/components/u-tabs/u-tabs.wxss | 84 + utils/myStorage.js | 22 + 486 files changed, 65119 insertions(+) create mode 100644 .hbuilderx/launch.json create mode 100644 App.vue create mode 100644 index.html create mode 100644 main.js create mode 100644 manifest.json create mode 100644 pages.json create mode 100644 pages/firing/firing.vue create mode 100644 pages/logon/logon.vue create mode 100644 pages/novel/performance/performance.vue create mode 100644 static/firing/firing_logo.png create mode 100644 static/logo.png create mode 100644 static/logon/logon_nav_bg.png create mode 100644 static/logon/logon_password.png create mode 100644 static/logon/logon_password_hide.png create mode 100644 static/logon/logon_password_open.png create mode 100644 static/logon/logon_usersName.png create mode 100644 static/novel/performance/per_body_tabs.png create mode 100644 static/novel/performance/per_bubble.png create mode 100644 static/novel/performance/per_bubble_modal.png create mode 100644 static/novel/performance/per_head_sculpture.png create mode 100644 static/novel/performance/per_nav_bar_bg.png create mode 100644 static/novel/performance/per_order.png create mode 100644 static/novel/performance/per_sequence.png create mode 100644 uni.promisify.adaptor.js create mode 100644 uni.scss create mode 100644 uni_modules/uview-ui/LICENSE create mode 100644 uni_modules/uview-ui/README.md create mode 100644 uni_modules/uview-ui/changelog.md create mode 100644 uni_modules/uview-ui/components/u--form/u--form.vue create mode 100644 uni_modules/uview-ui/components/u--image/u--image.vue create mode 100644 uni_modules/uview-ui/components/u--input/u--input.vue create mode 100644 uni_modules/uview-ui/components/u--text/u--text.vue create mode 100644 uni_modules/uview-ui/components/u--textarea/u--textarea.vue create mode 100644 uni_modules/uview-ui/components/u-action-sheet/props.js create mode 100644 uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue create mode 100644 uni_modules/uview-ui/components/u-album/props.js create mode 100644 uni_modules/uview-ui/components/u-album/u-album.vue create mode 100644 uni_modules/uview-ui/components/u-alert/props.js create mode 100644 uni_modules/uview-ui/components/u-alert/u-alert.vue create mode 100644 uni_modules/uview-ui/components/u-avatar-group/props.js create mode 100644 uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue create mode 100644 uni_modules/uview-ui/components/u-avatar/props.js create mode 100644 uni_modules/uview-ui/components/u-avatar/u-avatar.vue create mode 100644 uni_modules/uview-ui/components/u-back-top/props.js create mode 100644 uni_modules/uview-ui/components/u-back-top/u-back-top.vue create mode 100644 uni_modules/uview-ui/components/u-badge/props.js create mode 100644 uni_modules/uview-ui/components/u-badge/u-badge.vue create mode 100644 uni_modules/uview-ui/components/u-button/nvue.scss create mode 100644 uni_modules/uview-ui/components/u-button/props.js create mode 100644 uni_modules/uview-ui/components/u-button/u-button.vue create mode 100644 uni_modules/uview-ui/components/u-button/vue.scss create mode 100644 uni_modules/uview-ui/components/u-calendar/header.vue create mode 100644 uni_modules/uview-ui/components/u-calendar/month.vue create mode 100644 uni_modules/uview-ui/components/u-calendar/props.js create mode 100644 uni_modules/uview-ui/components/u-calendar/u-calendar.vue create mode 100644 uni_modules/uview-ui/components/u-calendar/util.js create mode 100644 uni_modules/uview-ui/components/u-car-keyboard/props.js create mode 100644 uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue create mode 100644 uni_modules/uview-ui/components/u-cell-group/props.js create mode 100644 uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue create mode 100644 uni_modules/uview-ui/components/u-cell/props.js create mode 100644 uni_modules/uview-ui/components/u-cell/u-cell.vue create mode 100644 uni_modules/uview-ui/components/u-checkbox-group/props.js create mode 100644 uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue create mode 100644 uni_modules/uview-ui/components/u-checkbox/props.js create mode 100644 uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue create mode 100644 uni_modules/uview-ui/components/u-circle-progress/props.js create mode 100644 uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue create mode 100644 uni_modules/uview-ui/components/u-code-input/props.js create mode 100644 uni_modules/uview-ui/components/u-code-input/u-code-input.vue create mode 100644 uni_modules/uview-ui/components/u-code/props.js create mode 100644 uni_modules/uview-ui/components/u-code/u-code.vue create mode 100644 uni_modules/uview-ui/components/u-col/props.js create mode 100644 uni_modules/uview-ui/components/u-col/u-col.vue create mode 100644 uni_modules/uview-ui/components/u-collapse-item/props.js create mode 100644 uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue create mode 100644 uni_modules/uview-ui/components/u-collapse/props.js create mode 100644 uni_modules/uview-ui/components/u-collapse/u-collapse.vue create mode 100644 uni_modules/uview-ui/components/u-column-notice/props.js create mode 100644 uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue create mode 100644 uni_modules/uview-ui/components/u-count-down/props.js create mode 100644 uni_modules/uview-ui/components/u-count-down/u-count-down.vue create mode 100644 uni_modules/uview-ui/components/u-count-down/utils.js create mode 100644 uni_modules/uview-ui/components/u-count-to/props.js create mode 100644 uni_modules/uview-ui/components/u-count-to/u-count-to.vue create mode 100644 uni_modules/uview-ui/components/u-datetime-picker/props.js create mode 100644 uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue create mode 100644 uni_modules/uview-ui/components/u-divider/props.js create mode 100644 uni_modules/uview-ui/components/u-divider/u-divider.vue create mode 100644 uni_modules/uview-ui/components/u-dropdown-item/props.js create mode 100644 uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue create mode 100644 uni_modules/uview-ui/components/u-dropdown/props.js create mode 100644 uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue create mode 100644 uni_modules/uview-ui/components/u-empty/props.js create mode 100644 uni_modules/uview-ui/components/u-empty/u-empty.vue create mode 100644 uni_modules/uview-ui/components/u-form-item/props.js create mode 100644 uni_modules/uview-ui/components/u-form-item/u-form-item.vue create mode 100644 uni_modules/uview-ui/components/u-form/props.js create mode 100644 uni_modules/uview-ui/components/u-form/u-form.vue create mode 100644 uni_modules/uview-ui/components/u-gap/props.js create mode 100644 uni_modules/uview-ui/components/u-gap/u-gap.vue create mode 100644 uni_modules/uview-ui/components/u-grid-item/props.js create mode 100644 uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue create mode 100644 uni_modules/uview-ui/components/u-grid/props.js create mode 100644 uni_modules/uview-ui/components/u-grid/u-grid.vue create mode 100644 uni_modules/uview-ui/components/u-icon/icons.js create mode 100644 uni_modules/uview-ui/components/u-icon/props.js create mode 100644 uni_modules/uview-ui/components/u-icon/u-icon.vue create mode 100644 uni_modules/uview-ui/components/u-image/props.js create mode 100644 uni_modules/uview-ui/components/u-image/u-image.vue create mode 100644 uni_modules/uview-ui/components/u-index-anchor/props.js create mode 100644 uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue create mode 100644 uni_modules/uview-ui/components/u-index-item/props.js create mode 100644 uni_modules/uview-ui/components/u-index-item/u-index-item.vue create mode 100644 uni_modules/uview-ui/components/u-index-list/props.js create mode 100644 uni_modules/uview-ui/components/u-index-list/u-index-list.vue create mode 100644 uni_modules/uview-ui/components/u-input/props.js create mode 100644 uni_modules/uview-ui/components/u-input/u-input.vue create mode 100644 uni_modules/uview-ui/components/u-keyboard/props.js create mode 100644 uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue create mode 100644 uni_modules/uview-ui/components/u-line-progress/props.js create mode 100644 uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue create mode 100644 uni_modules/uview-ui/components/u-line/props.js create mode 100644 uni_modules/uview-ui/components/u-line/u-line.vue create mode 100644 uni_modules/uview-ui/components/u-link/props.js create mode 100644 uni_modules/uview-ui/components/u-link/u-link.vue create mode 100644 uni_modules/uview-ui/components/u-list-item/props.js create mode 100644 uni_modules/uview-ui/components/u-list-item/u-list-item.vue create mode 100644 uni_modules/uview-ui/components/u-list/props.js create mode 100644 uni_modules/uview-ui/components/u-list/u-list.vue create mode 100644 uni_modules/uview-ui/components/u-loading-icon/props.js create mode 100644 uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue create mode 100644 uni_modules/uview-ui/components/u-loading-page/props.js create mode 100644 uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue create mode 100644 uni_modules/uview-ui/components/u-loadmore/props.js create mode 100644 uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue create mode 100644 uni_modules/uview-ui/components/u-modal/props.js create mode 100644 uni_modules/uview-ui/components/u-modal/u-modal.vue create mode 100644 uni_modules/uview-ui/components/u-navbar/props.js create mode 100644 uni_modules/uview-ui/components/u-navbar/u-navbar.vue create mode 100644 uni_modules/uview-ui/components/u-no-network/props.js create mode 100644 uni_modules/uview-ui/components/u-no-network/u-no-network.vue create mode 100644 uni_modules/uview-ui/components/u-notice-bar/props.js create mode 100644 uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue create mode 100644 uni_modules/uview-ui/components/u-notify/props.js create mode 100644 uni_modules/uview-ui/components/u-notify/u-notify.vue create mode 100644 uni_modules/uview-ui/components/u-number-box/props.js create mode 100644 uni_modules/uview-ui/components/u-number-box/u-number-box.vue create mode 100644 uni_modules/uview-ui/components/u-number-keyboard/props.js create mode 100644 uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue create mode 100644 uni_modules/uview-ui/components/u-overlay/props.js create mode 100644 uni_modules/uview-ui/components/u-overlay/u-overlay.vue create mode 100644 uni_modules/uview-ui/components/u-parse/node/node.vue create mode 100644 uni_modules/uview-ui/components/u-parse/parser.js create mode 100644 uni_modules/uview-ui/components/u-parse/props.js create mode 100644 uni_modules/uview-ui/components/u-parse/u-parse.vue create mode 100644 uni_modules/uview-ui/components/u-picker-column/props.js create mode 100644 uni_modules/uview-ui/components/u-picker-column/u-picker-column.vue create mode 100644 uni_modules/uview-ui/components/u-picker/props.js create mode 100644 uni_modules/uview-ui/components/u-picker/u-picker.vue create mode 100644 uni_modules/uview-ui/components/u-popup/props.js create mode 100644 uni_modules/uview-ui/components/u-popup/u-popup.vue create mode 100644 uni_modules/uview-ui/components/u-radio-group/props.js create mode 100644 uni_modules/uview-ui/components/u-radio-group/u-radio-group.vue create mode 100644 uni_modules/uview-ui/components/u-radio/props.js create mode 100644 uni_modules/uview-ui/components/u-radio/u-radio.vue create mode 100644 uni_modules/uview-ui/components/u-rate/props.js create mode 100644 uni_modules/uview-ui/components/u-rate/u-rate.vue create mode 100644 uni_modules/uview-ui/components/u-read-more/props.js create mode 100644 uni_modules/uview-ui/components/u-read-more/u-read-more.vue create mode 100644 uni_modules/uview-ui/components/u-row-notice/props.js create mode 100644 uni_modules/uview-ui/components/u-row-notice/u-row-notice.vue create mode 100644 uni_modules/uview-ui/components/u-row/props.js create mode 100644 uni_modules/uview-ui/components/u-row/u-row.vue create mode 100644 uni_modules/uview-ui/components/u-safe-bottom/props.js create mode 100644 uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.vue create mode 100644 uni_modules/uview-ui/components/u-scroll-list/nvue.js create mode 100644 uni_modules/uview-ui/components/u-scroll-list/other.js create mode 100644 uni_modules/uview-ui/components/u-scroll-list/props.js create mode 100644 uni_modules/uview-ui/components/u-scroll-list/scrollWxs.wxs create mode 100644 uni_modules/uview-ui/components/u-scroll-list/u-scroll-list.vue create mode 100644 uni_modules/uview-ui/components/u-search/props.js create mode 100644 uni_modules/uview-ui/components/u-search/u-search.vue create mode 100644 uni_modules/uview-ui/components/u-skeleton/props.js create mode 100644 uni_modules/uview-ui/components/u-skeleton/u-skeleton.vue create mode 100644 uni_modules/uview-ui/components/u-slider/mpother.js create mode 100644 uni_modules/uview-ui/components/u-slider/mpwxs.js create mode 100644 uni_modules/uview-ui/components/u-slider/mpwxs.wxs create mode 100644 uni_modules/uview-ui/components/u-slider/nvue - 副本.js create mode 100644 uni_modules/uview-ui/components/u-slider/nvue.js create mode 100644 uni_modules/uview-ui/components/u-slider/props.js create mode 100644 uni_modules/uview-ui/components/u-slider/u-slider.vue create mode 100644 uni_modules/uview-ui/components/u-status-bar/props.js create mode 100644 uni_modules/uview-ui/components/u-status-bar/u-status-bar.vue create mode 100644 uni_modules/uview-ui/components/u-steps-item/props.js create mode 100644 uni_modules/uview-ui/components/u-steps-item/u-steps-item.vue create mode 100644 uni_modules/uview-ui/components/u-steps/props.js create mode 100644 uni_modules/uview-ui/components/u-steps/u-steps.vue create mode 100644 uni_modules/uview-ui/components/u-sticky/props.js create mode 100644 uni_modules/uview-ui/components/u-sticky/u-sticky.vue create mode 100644 uni_modules/uview-ui/components/u-subsection/props.js create mode 100644 uni_modules/uview-ui/components/u-subsection/u-subsection.vue create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/index - backup.wxs create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/index.wxs create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/nvue - backup.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/nvue.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/props.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/u-swipe-action-item.vue create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/wxs.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action/props.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action/u-swipe-action.vue create mode 100644 uni_modules/uview-ui/components/u-swiper-indicator/props.js create mode 100644 uni_modules/uview-ui/components/u-swiper-indicator/u-swiper-indicator.vue create mode 100644 uni_modules/uview-ui/components/u-swiper/props.js create mode 100644 uni_modules/uview-ui/components/u-swiper/u-swiper.vue create mode 100644 uni_modules/uview-ui/components/u-switch/props.js create mode 100644 uni_modules/uview-ui/components/u-switch/u-switch.vue create mode 100644 uni_modules/uview-ui/components/u-tabbar-item/props.js create mode 100644 uni_modules/uview-ui/components/u-tabbar-item/u-tabbar-item.vue create mode 100644 uni_modules/uview-ui/components/u-tabbar/props.js create mode 100644 uni_modules/uview-ui/components/u-tabbar/u-tabbar.vue create mode 100644 uni_modules/uview-ui/components/u-table/props.js create mode 100644 uni_modules/uview-ui/components/u-table/u-table.vue create mode 100644 uni_modules/uview-ui/components/u-tabs-item/props.js create mode 100644 uni_modules/uview-ui/components/u-tabs-item/u-tabs-item.vue create mode 100644 uni_modules/uview-ui/components/u-tabs/props.js create mode 100644 uni_modules/uview-ui/components/u-tabs/u-tabs.vue create mode 100644 uni_modules/uview-ui/components/u-tag/props.js create mode 100644 uni_modules/uview-ui/components/u-tag/u-tag.vue create mode 100644 uni_modules/uview-ui/components/u-td/props.js create mode 100644 uni_modules/uview-ui/components/u-td/u-td.vue create mode 100644 uni_modules/uview-ui/components/u-text/props.js create mode 100644 uni_modules/uview-ui/components/u-text/u-text.vue create mode 100644 uni_modules/uview-ui/components/u-text/value.js create mode 100644 uni_modules/uview-ui/components/u-textarea/props.js create mode 100644 uni_modules/uview-ui/components/u-textarea/u-textarea.vue create mode 100644 uni_modules/uview-ui/components/u-toast/u-toast.vue create mode 100644 uni_modules/uview-ui/components/u-toolbar/props.js create mode 100644 uni_modules/uview-ui/components/u-toolbar/u-toolbar.vue create mode 100644 uni_modules/uview-ui/components/u-tooltip/clipboard.min.js create mode 100644 uni_modules/uview-ui/components/u-tooltip/props.js create mode 100644 uni_modules/uview-ui/components/u-tooltip/u-tooltip.vue create mode 100644 uni_modules/uview-ui/components/u-tr/props.js create mode 100644 uni_modules/uview-ui/components/u-tr/u-tr.vue create mode 100644 uni_modules/uview-ui/components/u-transition/nvue.ani-map.js create mode 100644 uni_modules/uview-ui/components/u-transition/props.js create mode 100644 uni_modules/uview-ui/components/u-transition/transition.js create mode 100644 uni_modules/uview-ui/components/u-transition/u-transition.vue create mode 100644 uni_modules/uview-ui/components/u-transition/vue.ani-style.scss create mode 100644 uni_modules/uview-ui/components/u-upload/mixin.js create mode 100644 uni_modules/uview-ui/components/u-upload/props.js create mode 100644 uni_modules/uview-ui/components/u-upload/u-upload.vue create mode 100644 uni_modules/uview-ui/components/u-upload/utils.js create mode 100644 uni_modules/uview-ui/components/uview-ui/uview-ui.vue create mode 100644 uni_modules/uview-ui/index.js create mode 100644 uni_modules/uview-ui/index.scss create mode 100644 uni_modules/uview-ui/libs/config/color.js create mode 100644 uni_modules/uview-ui/libs/config/config.js create mode 100644 uni_modules/uview-ui/libs/config/props.js create mode 100644 uni_modules/uview-ui/libs/config/props/actionSheet.js create mode 100644 uni_modules/uview-ui/libs/config/props/album.js create mode 100644 uni_modules/uview-ui/libs/config/props/alert.js create mode 100644 uni_modules/uview-ui/libs/config/props/avatar.js create mode 100644 uni_modules/uview-ui/libs/config/props/avatarGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/backtop.js create mode 100644 uni_modules/uview-ui/libs/config/props/badge.js create mode 100644 uni_modules/uview-ui/libs/config/props/button.js create mode 100644 uni_modules/uview-ui/libs/config/props/calendar.js create mode 100644 uni_modules/uview-ui/libs/config/props/carKeyboard.js create mode 100644 uni_modules/uview-ui/libs/config/props/cell.js create mode 100644 uni_modules/uview-ui/libs/config/props/cellGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/checkbox.js create mode 100644 uni_modules/uview-ui/libs/config/props/checkboxGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/circleProgress.js create mode 100644 uni_modules/uview-ui/libs/config/props/code.js create mode 100644 uni_modules/uview-ui/libs/config/props/codeInput.js create mode 100644 uni_modules/uview-ui/libs/config/props/col.js create mode 100644 uni_modules/uview-ui/libs/config/props/collapse.js create mode 100644 uni_modules/uview-ui/libs/config/props/collapseItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/columnNotice.js create mode 100644 uni_modules/uview-ui/libs/config/props/countDown.js create mode 100644 uni_modules/uview-ui/libs/config/props/countTo.js create mode 100644 uni_modules/uview-ui/libs/config/props/datetimePicker.js create mode 100644 uni_modules/uview-ui/libs/config/props/divider.js create mode 100644 uni_modules/uview-ui/libs/config/props/empty.js create mode 100644 uni_modules/uview-ui/libs/config/props/form.js create mode 100644 uni_modules/uview-ui/libs/config/props/formItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/gap.js create mode 100644 uni_modules/uview-ui/libs/config/props/grid.js create mode 100644 uni_modules/uview-ui/libs/config/props/gridItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/icon.js create mode 100644 uni_modules/uview-ui/libs/config/props/image.js create mode 100644 uni_modules/uview-ui/libs/config/props/indexAnchor.js create mode 100644 uni_modules/uview-ui/libs/config/props/indexList.js create mode 100644 uni_modules/uview-ui/libs/config/props/input.js create mode 100644 uni_modules/uview-ui/libs/config/props/keyboard.js create mode 100644 uni_modules/uview-ui/libs/config/props/line.js create mode 100644 uni_modules/uview-ui/libs/config/props/lineProgress.js create mode 100644 uni_modules/uview-ui/libs/config/props/link.js create mode 100644 uni_modules/uview-ui/libs/config/props/list.js create mode 100644 uni_modules/uview-ui/libs/config/props/listItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/loadingIcon.js create mode 100644 uni_modules/uview-ui/libs/config/props/loadingPage.js create mode 100644 uni_modules/uview-ui/libs/config/props/loadmore.js create mode 100644 uni_modules/uview-ui/libs/config/props/modal.js create mode 100644 uni_modules/uview-ui/libs/config/props/navbar.js create mode 100644 uni_modules/uview-ui/libs/config/props/noNetwork.js create mode 100644 uni_modules/uview-ui/libs/config/props/noticeBar.js create mode 100644 uni_modules/uview-ui/libs/config/props/notify.js create mode 100644 uni_modules/uview-ui/libs/config/props/numberBox.js create mode 100644 uni_modules/uview-ui/libs/config/props/numberKeyboard.js create mode 100644 uni_modules/uview-ui/libs/config/props/overlay.js create mode 100644 uni_modules/uview-ui/libs/config/props/parse.js create mode 100644 uni_modules/uview-ui/libs/config/props/picker.js create mode 100644 uni_modules/uview-ui/libs/config/props/popup.js create mode 100644 uni_modules/uview-ui/libs/config/props/radio.js create mode 100644 uni_modules/uview-ui/libs/config/props/radioGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/rate.js create mode 100644 uni_modules/uview-ui/libs/config/props/readMore.js create mode 100644 uni_modules/uview-ui/libs/config/props/row.js create mode 100644 uni_modules/uview-ui/libs/config/props/rowNotice.js create mode 100644 uni_modules/uview-ui/libs/config/props/scrollList.js create mode 100644 uni_modules/uview-ui/libs/config/props/search.js create mode 100644 uni_modules/uview-ui/libs/config/props/section.js create mode 100644 uni_modules/uview-ui/libs/config/props/skeleton.js create mode 100644 uni_modules/uview-ui/libs/config/props/slider.js create mode 100644 uni_modules/uview-ui/libs/config/props/statusBar.js create mode 100644 uni_modules/uview-ui/libs/config/props/steps.js create mode 100644 uni_modules/uview-ui/libs/config/props/stepsItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/sticky.js create mode 100644 uni_modules/uview-ui/libs/config/props/subsection.js create mode 100644 uni_modules/uview-ui/libs/config/props/swipeAction.js create mode 100644 uni_modules/uview-ui/libs/config/props/swipeActionItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/swiper.js create mode 100644 uni_modules/uview-ui/libs/config/props/swipterIndicator.js create mode 100644 uni_modules/uview-ui/libs/config/props/switch.js create mode 100644 uni_modules/uview-ui/libs/config/props/tabbar.js create mode 100644 uni_modules/uview-ui/libs/config/props/tabbarItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/tabs.js create mode 100644 uni_modules/uview-ui/libs/config/props/tag.js create mode 100644 uni_modules/uview-ui/libs/config/props/text.js create mode 100644 uni_modules/uview-ui/libs/config/props/textarea.js create mode 100644 uni_modules/uview-ui/libs/config/props/toast.js create mode 100644 uni_modules/uview-ui/libs/config/props/toolbar.js create mode 100644 uni_modules/uview-ui/libs/config/props/tooltip.js create mode 100644 uni_modules/uview-ui/libs/config/props/transition.js create mode 100644 uni_modules/uview-ui/libs/config/props/upload.js create mode 100644 uni_modules/uview-ui/libs/config/zIndex.js create mode 100644 uni_modules/uview-ui/libs/css/color.scss create mode 100644 uni_modules/uview-ui/libs/css/common.scss create mode 100644 uni_modules/uview-ui/libs/css/components.scss create mode 100644 uni_modules/uview-ui/libs/css/flex.scss create mode 100644 uni_modules/uview-ui/libs/css/h5.scss create mode 100644 uni_modules/uview-ui/libs/css/mixin.scss create mode 100644 uni_modules/uview-ui/libs/css/mp.scss create mode 100644 uni_modules/uview-ui/libs/css/nvue.scss create mode 100644 uni_modules/uview-ui/libs/css/vue.scss create mode 100644 uni_modules/uview-ui/libs/function/colorGradient.js create mode 100644 uni_modules/uview-ui/libs/function/debounce.js create mode 100644 uni_modules/uview-ui/libs/function/digit.js create mode 100644 uni_modules/uview-ui/libs/function/index.js create mode 100644 uni_modules/uview-ui/libs/function/platform.js create mode 100644 uni_modules/uview-ui/libs/function/test.js create mode 100644 uni_modules/uview-ui/libs/function/throttle.js create mode 100644 uni_modules/uview-ui/libs/luch-request/adapters/index.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/InterceptorManager.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/Request.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/buildFullPath.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/defaults.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/dispatchRequest.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/mergeConfig.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/settle.js create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/buildURL.js create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/combineURLs.js create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/isAbsoluteURL.js create mode 100644 uni_modules/uview-ui/libs/luch-request/index.d.ts create mode 100644 uni_modules/uview-ui/libs/luch-request/index.js create mode 100644 uni_modules/uview-ui/libs/luch-request/utils.js create mode 100644 uni_modules/uview-ui/libs/luch-request/utils/clone.js create mode 100644 uni_modules/uview-ui/libs/mixin/button.js create mode 100644 uni_modules/uview-ui/libs/mixin/mixin.js create mode 100644 uni_modules/uview-ui/libs/mixin/mpMixin.js create mode 100644 uni_modules/uview-ui/libs/mixin/mpShare.js create mode 100644 uni_modules/uview-ui/libs/mixin/openType.js create mode 100644 uni_modules/uview-ui/libs/mixin/style.js create mode 100644 uni_modules/uview-ui/libs/mixin/touch.js create mode 100644 uni_modules/uview-ui/libs/util/async-validator.js create mode 100644 uni_modules/uview-ui/libs/util/calendar.js create mode 100644 uni_modules/uview-ui/libs/util/dayjs.js create mode 100644 uni_modules/uview-ui/libs/util/emitter.js create mode 100644 uni_modules/uview-ui/libs/util/route.js create mode 100644 uni_modules/uview-ui/package.json create mode 100644 uni_modules/uview-ui/theme.scss create mode 100644 unpackage/dist/dev/.automator/mp-weixin/.automator.json create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/firing/firing.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/logon/logon.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/novel/performance/performance.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/liu-bubble-menu/components/liu-bubble-menu/liu-bubble-menu.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u--input/u--input.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-badge/u-badge.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-icon/u-icon.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-input/u-input.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-navbar/u-navbar.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-radio-group/u-radio-group.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-radio/u-radio.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.js.map create mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-tabs/u-tabs.js.map create mode 100644 unpackage/dist/dev/mp-weixin/app.js create mode 100644 unpackage/dist/dev/mp-weixin/app.json create mode 100644 unpackage/dist/dev/mp-weixin/app.wxss create mode 100644 unpackage/dist/dev/mp-weixin/common/main.js create mode 100644 unpackage/dist/dev/mp-weixin/common/main.wxss create mode 100644 unpackage/dist/dev/mp-weixin/common/runtime.js create mode 100644 unpackage/dist/dev/mp-weixin/common/vendor.js create mode 100644 unpackage/dist/dev/mp-weixin/pages/firing/firing.js create mode 100644 unpackage/dist/dev/mp-weixin/pages/firing/firing.json create mode 100644 unpackage/dist/dev/mp-weixin/pages/firing/firing.wxml create mode 100644 unpackage/dist/dev/mp-weixin/pages/firing/firing.wxss create mode 100644 unpackage/dist/dev/mp-weixin/pages/logon/logon.js create mode 100644 unpackage/dist/dev/mp-weixin/pages/logon/logon.json create mode 100644 unpackage/dist/dev/mp-weixin/pages/logon/logon.wxml create mode 100644 unpackage/dist/dev/mp-weixin/pages/logon/logon.wxss create mode 100644 unpackage/dist/dev/mp-weixin/pages/novel/performance/performance.js create mode 100644 unpackage/dist/dev/mp-weixin/pages/novel/performance/performance.json create mode 100644 unpackage/dist/dev/mp-weixin/pages/novel/performance/performance.wxml create mode 100644 unpackage/dist/dev/mp-weixin/pages/novel/performance/performance.wxss create mode 100644 unpackage/dist/dev/mp-weixin/project.config.json create mode 100644 unpackage/dist/dev/mp-weixin/project.private.config.json create mode 100644 unpackage/dist/dev/mp-weixin/static/firing/firing_logo.png create mode 100644 unpackage/dist/dev/mp-weixin/static/logo.png create mode 100644 unpackage/dist/dev/mp-weixin/static/logon/logon_nav_bg.png create mode 100644 unpackage/dist/dev/mp-weixin/static/logon/logon_password.png create mode 100644 unpackage/dist/dev/mp-weixin/static/logon/logon_password_hide.png create mode 100644 unpackage/dist/dev/mp-weixin/static/logon/logon_password_open.png create mode 100644 unpackage/dist/dev/mp-weixin/static/logon/logon_usersName.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/B基础组件-02-图标/箭头/升序@2x.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/Frame 1024@2x.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/Union@2x.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/per_body_tabs.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/per_bubble.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/per_bubble_modal.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/per_head_sculpture.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/per_nav_bar_bg.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/per_order.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/per_sequence.png create mode 100644 unpackage/dist/dev/mp-weixin/static/novel/performance/头像@2x.png create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/liu-bubble-menu/components/liu-bubble-menu/liu-bubble-menu.js create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/liu-bubble-menu/components/liu-bubble-menu/liu-bubble-menu.json create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/liu-bubble-menu/components/liu-bubble-menu/liu-bubble-menu.wxml create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/liu-bubble-menu/components/liu-bubble-menu/liu-bubble-menu.wxss create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-badge/u-badge.js create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-badge/u-badge.json create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-badge/u-badge.wxml create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-badge/u-badge.wxss create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-icon/u-icon.js create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-icon/u-icon.json create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-icon/u-icon.wxml create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-icon/u-icon.wxss create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-input/u-input.js create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-input/u-input.json create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-input/u-input.wxml create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-input/u-input.wxss create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-navbar/u-navbar.js create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-navbar/u-navbar.json create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-navbar/u-navbar.wxml create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-navbar/u-navbar.wxss create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-radio-group/u-radio-group.js create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-radio-group/u-radio-group.json create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-radio-group/u-radio-group.wxml create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-radio-group/u-radio-group.wxss create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-radio/u-radio.js create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-radio/u-radio.json create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-radio/u-radio.wxml create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-radio/u-radio.wxss create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.js create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.json create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.wxml create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.wxss create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-tabs/u-tabs.js create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-tabs/u-tabs.json create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-tabs/u-tabs.wxml create mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uview-ui/components/u-tabs/u-tabs.wxss create mode 100644 utils/myStorage.js diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..81f13f4 --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,16 @@ +{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version": "0.0", + "configurations": [{ + "default" : + { + "launchtype" : "local" + }, + "mp-weixin" : + { + "launchtype" : "local" + }, + "type" : "uniCloud" + } + ] +} diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..b7b6c13 --- /dev/null +++ b/App.vue @@ -0,0 +1,40 @@ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..c3ff205 --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..00fb40a --- /dev/null +++ b/main.js @@ -0,0 +1,27 @@ +import App from './App' +import uView from '@/uni_modules/uview-ui' +Vue.use(uView); +import myStorage from '@/utils/myStorage.js' +Vue.prototype.$myStorage = myStorage; + + +// #ifndef VUE3 +import Vue from 'vue' +import './uni.promisify.adaptor' +Vue.config.productionTip = false +App.mpType = 'app' +const app = new Vue({ + ...App +}) +app.$mount() +// #endif + +// #ifdef VUE3 +import { createSSRApp } from 'vue' +export function createApp() { + const app = createSSRApp(App) + return { + app + } +} +// #endif \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..39fafa4 --- /dev/null +++ b/manifest.json @@ -0,0 +1,72 @@ +{ + "name" : "novel_backstage", + "appid" : "__UNI__D6DC57D", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "2" +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..800e365 --- /dev/null +++ b/pages.json @@ -0,0 +1,43 @@ +{ + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + // 启动页面 + "path": "pages/firing/firing", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "navigationBarTextStyle": "white" + } + }, + { + "path": "pages/logon/logon", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "navigationBarTextStyle": "white", + "app-plus": { + "bounce": "none" + } + } + }, + // 小说 + { + "path": "pages/novel/performance/performance", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "disableScroll": true, + "app-plus": { + "bounce": "none" + } + } + } + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + }, + "uniIdRouter": {} +} \ No newline at end of file diff --git a/pages/firing/firing.vue b/pages/firing/firing.vue new file mode 100644 index 0000000..ea5cf29 --- /dev/null +++ b/pages/firing/firing.vue @@ -0,0 +1,39 @@ + + + + + \ No newline at end of file diff --git a/pages/logon/logon.vue b/pages/logon/logon.vue new file mode 100644 index 0000000..82a7ca3 --- /dev/null +++ b/pages/logon/logon.vue @@ -0,0 +1,254 @@ + + + + + \ No newline at end of file diff --git a/pages/novel/performance/performance.vue b/pages/novel/performance/performance.vue new file mode 100644 index 0000000..a328477 --- /dev/null +++ b/pages/novel/performance/performance.vue @@ -0,0 +1,269 @@ + + + + + \ No newline at end of file diff --git a/static/firing/firing_logo.png b/static/firing/firing_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9521a2c2a380d526d8fd169783c92b6d7aa450a0 GIT binary patch literal 16747 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%0Db|FrWbHbos!? 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 literal 0 HcmV?d00001 diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b5771e209bb677e2ebd5ff766ad5ee11790f305a GIT binary patch literal 4023 zcmaJ^c|25Y`#+XyC`+5OUafkYqmlSEl)+V zC53EJB$S8m@9Vz4*Y&-Yb3W(3Y;(d~fM1#)0003Cvn<7K1}HtM`$d{YenwQ;C^-S(Bw!dKGPRQ{5d$=<+Bb^=&62=9 zyT3g7ffNAnXPh^N0JjBz*>4v5+kn2(URc+5KlGCVF`&OikMw zfqqB8XK2+;V}LL3B>(G>)mVo1y5YXue4A!H*}eQbcg`t##g9HFply&`y$2%Ui`qzhj;o^=JbnXrW48s;xu1fDr z0))La)fp=QkX*N#V0eTJXiqO11AyvJlBY^iBrIQo0Kg>g;^BKnJ9a%2Wz`F2Ka;Jl zm*B>3H!<9`zg|z+c>6eWFMqydnvs-!J))2I(LEmNyxo~2!VjOpv<0SyMNVCup-60Z zm&|RDtd8R2HEIU!!OA0Ic6-G4K{`MZ8S%UjEL!s#vj{vLBWeqI(M&DkE;aT|aziV8 zRiTRN#GNwykvPx{R==`-rP>^pa`AyJ&s**Q!zU$j(pO&Q(YolGLT=2o0>3Wlhx?Gs z#|6b*$3F$ofzT`QIA#}2(Cg}Z?5V5KrtX)WrInh*aTCsP#{@V|*7<0lm`r^xmJQm^ z9n0J^3p#yCxWPX>G11)F(iv5vIIHkbqzdH37jX&JZ~&5AV*OAtL}axw*aLAt(b-!Vf)wRw=S8((e`~WLqlDBobRbj)NXB zS>W`fibSDA>uYN*&&Ml75iep!E%^%eV~SElj=}K;6TCNXs2gYG-L`En&3y~H9fP=W z(t?;5Xalv2F5ROUkg3?7C5~z>QYq|tok{Q}toT5u=~a9mBKDc4zfSM=`?OF-lS(V+pE1(m&x$HE_9vj;Cy)b@OiPMS0bs1 zRL9h?)T!I{4m1aY9>(pR_IDhF?wocEy=CU`m(5ry-&^rJJ*Bb^PfNARJ1{|*1e;FV zGljKhHo|}41Rg|1n&m~I3+-_gFQww-#b2u97o3fIsg67|%6`|aJX{~F&RPa;TayWd zp0l(=(QbROypp_fCeOBW3BJ5PJg@UU`&fs3hd{?U6&@7>mHWNEWnN`rWk>r%`fK|= z=BRVxb2I(y07{Nwj&jZtf{0iN;H%QAvaO1&8VKn8tp5f#! zN#ZlRm)#|IR8144l_=#8)5guWCE`B$T_;p_&0iWR+1=_>mDK1{*kw_8pi=2ewD%Z1 zSVG^6Mc(Vd()@@Y^wYz75Yz{X8jD_x*B)w5@yqn8>U#Kw-qzNvJjm)}wamur^knR_o)EvaGVkz%1gB=%{GIq3%OVcBFpT?D{PKZ079tIh|$fvf?svxl^`nuZV1~ zE?xILl^)O*=ufGhDH_pyUfNjteA>xd#yg*uvj~^Cbv&_EBt0-)!j4#crI>Uhq&0Oy z`b$;!qc=;1Sx>VD%ia^;erQ9!2)(mrrJ5zv;`SWLHu^Td;yik`Z7ioatGHn?aSD1m z@U+Y6wVHj_e`PD>_Noz^2O3?6Yg*5_BlMB@A05*?`Y-jlZ-m^4uDw+Y8A8@7g!P7H zgzZ?*UDN&1x{>g`ZiMkweBs14cdln#6I?YHr7!-)nyY$73 zckv0h$WfEY^%7rYR&g4G-pZL>Vy{3sVkc#OsI@6s?(5whAJqvO5)LEZTD6>Rdkl&h zHusOIlp{!GNUVm69y+XkTlKT;Lp%Ce`igQdYushcyC!}iq4eq#-2van)Ie{RuRq2g zH=9+-th`-$F*y3W=|Z{)eb0Wrxy$2?eT~S=V>Iq5|4fbS@l5+PI<90O)5aZFv- z{-7I*`r#90Z5HrSgU=dsgpnk5?TNyom7_`TM^@+iv+q@OQnFLB3o!zOw1-FDsZ|`T zu=YA~Bw1jbF-d$SlN|kOWn5vEwm2Z>A8FZD_z+WWBPebOEjbeGD(MZ=TPSr~@YnLZU)h_#alQiZu;syu@U^WCAXKCKVZHf%!^8wGMR7*MP@UWP13nuk#~M$mU% z$uszs);TA=a{4!`8Qm`Sn+rdD>w9SLzQ0p-yTPboznqn+ASr#=Td7#J^gVESP9li^ zi{+qONJ8-4_1gZ8&pUnyeZKH;^FF?wIQ-qc-o5j=ix69oFFJQK<>#B|k#6%g^Bx5= zg}8(qIXM{t>6)*e9mylb4~qA6z6x{v$(W(tnHt&{T|3_Cyxupzb2YZJuAEW2NM+wC zy^Cm4Xp*b$U?3N6t(SESgt9ByRYOfRav2BL4L5BTyMExBieFo==ue&BT!*e)T3lo5 zDDLL`TT0PQo#}RDFM1G`iU*85$sTyH1rh6w$KbJ^jI%9xJpkZ2Ot5#RJ6l;IaAcw? zc1uS!m`LHE0YJ|nn1aRm;pt!xyf=Y_gs`91LBIr0B*Y1BrDjDz;e80`5Gvj-jfh?28eh%7933UC(#hWNXRd{2+nv*426JysnGq9kiSVeTiJk7WGWsE zSJhI%!8FvtM|D(Ta2<7RO=YmU8cYkSrU`}VsK7K3oKsT`{QH1#yiq;95Ev7)-@Z6A zB*ceKry!uvpr9btAPrSA)tiIW(SfR|L)Fz)I2tN628oUhRw2<8{#Y=<({NM*g-#%o zz*`ov9^?Qz62f8ncL+p^mDN9nNwnXI;-m~3jHN(fs%lUoaVxH0+B7-_|6dyas!g+J zQ1DO;o<-jJ7|Hhj9zgQ@T40Nl&|EJ)8M4T?#8vfJ1oXI~g0G`C@dMc;A zjqo=rI2*RN7A8ja!Tlbd0QX!*+E1x@K*^ZD{)%J_pe^QRp=+j?jCO1cZN?ryPlN&29$7&Ac>xMM*DwQ*NxtIV%NlmI`lJr2JVZ!|SUM)s{m5-r-hrCim zGEunpTX?76P{|0K32-Ym!wnJFjcNAROWZ-AL8+J1F_-(QHNzMCON{8s2|iO0D*vNr zQhflINtwvCi<$Z|n(_I*HbSmD?h6-!bQZ5=hQ8L&m)|I~)%u)gyCW_QRg`w5P~OC1 z%uCbu%`2nB5zR=>{took!+yKEDi`b>pzAf)^KDGtUM8R*t#G@mH2=PKe4(Ipz-y*c zc~Kzl;GA)s+53_RGg-}F1`$4QjX29!BLu$pn{&KmMu86HO}Y2@q{Jb7v=N}{+PQWx zHF2LIb9qiO+DI~r+eb9ubK7oh6KFdUL6e;9wKv_RvXh$HuqHw)inh2kQGM>}%G4V% zmjkEYsw}?{m%gW>#P7wTXwk}cZO--qydYul`!3w~l(JgX@=yG7|6z{6kO^>c^P;zI zAmO}-iEA~6%U7@PbJN4EXW!v;|5owjl2$w4ZZqafWPCshmRxS}7Zwlg(*rDz;hg}s SYs}WS&%*SCNx89m_wP+ma<>AeL+1*9rU5fG$`^xg@*3kuRpP*7B=^d3T$8j1oT zK|xq3t#=a=vEn4WVCpyZ7%0 zxg9<|nrZpIPc-!EJZnFlxJZs_X~1~936D|vX+h5g4leeCI_0g#FLF@XsKu3{5%$PI zxp&UF0vFSZgZuVYM{1y0SkqPz%#NLWc3H!7fzB3~6z=TdDPl1cX2U>~$|LNDwRaUH zzWkhATPI;nOazp^9zN3zugm$}dkPIF5@A=!bLK6LRVVHaz>qMK_HL&`5f`zMgfa-8)qlTy z>NgC0EWe}nFLM>BCZVrFEVX72-Ls>2RRbPipcooRn&50BSz}~$fB%im(uXaV3x`Oq z4EF|;o|sU*tsXc~56rpzx=L~qsKw?TG7!J<%WeO`0GxO`ue{c=qD9+RMU!s$<;~h? zF}qH6jvloV1VEu;&FQ{%Cm>J$;_{*j#GOzqJRHf zk9u$V@qL4`q%z?F?i2TR@m=aQzf&vm=#@2lKXbvnY-*NY*3H6s`wvvEJ@fKDU|)px zfBneHL65a}y+ZdAM`3tQGUMZ!`Ul_;9}cHNs?y+LH2uBo^laN%O~&Fa zwOa#*85uAheN&=7R+I4q>rtyBGrlq`M5tF=mFj$^U{ki1w-{UYvAa%ZNmJ{H%&y&8 z%6KG7oG3+R9NX7)3)>vM#6jZ0$)i^^+{MR^bTHsCWtuhy!@MG8wFa0O&U-S2j`1E_ z{<;Ze$A;7oyFQrDR19F`%BJJ68XLvj<(~)$NHf2##KHPtSnWwZ{?&!DFT7n~4?q{M zW9LdV34^Ni#)Y$vkCWYIzV2jhuwHMdTT;4~Uo(D>;7W$Bp%V?nq@R1ujil^?V#f~3 z)vRCnWzs27XNc+LptCdgocI2-S_K|z#S7g~+;c8sMqIE*wP-i(Wrw~frKiWCv98Ow zkUPfTwOIN9&((DO=Pkg0ek@b0=TN%8TubH3CG-vWOj=1tPg^rh;v=Kt$@uvpdr#6)`UOV8n+By z(Fk+lN)Jwb^1b?k`F0w0+Iy`J9M7^G+UBkKcoR6|blPvkKNkyd?roQPZmV!QbglC` zgN^PzWH~x`^yk0LMtc%Hsst_5*s}|8K;#CZ`v;U2{(4cK#o;aDTrM&qqIayQ(p+|E ziK3HimPgT8dUQFu6^k%-o9+=vw?I^55>UJs58=-lwUF8qvHvRfL6!vRF2SkC5C*!= zECPodU;G{KZycFzcsC-Wj{0}GRfA*X^xGs1aE<6WYDgw z3q~>0;8otK9y8M4|Io?=q6DJ*XYHtgHV9gHh)zG3y$xO1DIGD??ZuP3xKd~u1_VV@AFEmWsu(&H$6EeS>{FSFgX zqB#ypT0!|{JVji~)#t8iiJ&KQ|F$bEUWus9&m)u&$B_T=N1t!N{n@IUDri+LUf#7SS^CfUt;ZIdwHYaDS+qTTR(sgg`PD9CW3Xj=(wt$%1 zM6igNc}xU>`K?>=PaK4!LJ)ae3%C+%VB`H|sisT9_;PPP{>CPRM){!$=P?=w^n%1o z^)+v@g#Skt#{d_5hX5MD&i&!B4^rG$;u4|DroYqv=tD+#F2CN_*Op1PyG`F}q9$rBCFiypBJoqGa!RrDfL}N8Y0p z1Wt^h0lw2ojv5)!M2gcZ@{{|Pt4h?y%f%Ejd2j1QCXl=L!3z)Vaw9vJ4!i*7S6A;o z?QLy<_%?|3#?Af#Tm@YYq7ngrk}I}V&SVB+{~!MK#`>EQBl^EmxOiII(ckB1BJ75@ z-l>D&cIGc`5E0tkv^7%@H)K3uT_2`IM3Ni(!D9d?*;DrRPZkCWl@z6C1t}~zcrX^= zAFv<;Ok`I)l-g>B6Aq>+6l4rBd`CCcN|@MO`%~zGlM1{>uCDw#FW_Cg5Vyn+D6*AL zXEA+^fouV=NPaNM_@ z2jXVED@@R6h1PDM@UXk&M%-X;38ya2(oYy9O~{H`>Abtd?ijf)UaafG-Oa?%@OjE6 z>e&+h<Hdkb0i zI!N>vn-c)vYV+bAR?5XS5(SP;vLzt!?(ZIVwoL$L(eqS1(+q3S_#~DuPFW8D=jsrX zzO-{_sIP)SP(U zz_rDJ->9vMfhzhnmy8(*bbll#R-z>EHi1YCEETxk+7*9!7x4g2T4@jX%hukdNc}X8 z-iKYwUle2Ayf&2tus*sghX^$-%Sxk8xKL9!Ye^bwfjv3kPR0dM|N4%36D=cN^)y2Q zicN2srqhx@5YJwJZNBRV@`&DI-9~@Ec<@qsGPoDkH^Hj(!|MmG8ge6WJobrlHx3Y^9LBw@n22=WB>I>e$h_&WZWdcr@x{HsZ$A4OAJ4M6^INdl?KHgkqej#3MU46* z&q!}#Ba8WdEL-2^6<&kM|4d%mt37ZALU9eBxv!9&i>j~XY&b6G3kGRLLsMc(g8kCp zY3xb}2y>Ls&V*9%QX!@m1b@0%4>^)G=%WK;IR+oI4 z(WJIs^k({7d*%eFwb+by&{Hhanyf=UkQZm5I1b}mr{+U{<^Bw~cz&B(JC3l!vqfMH5+983}*B~Yij&A$v& ze4q#5Z2v8^2o51@q}g-=SE|aK{9i;e?s^X@h6MA`k;_I{FZ*aF70wF z4Gm)vljIA&MgON62X6BaXSKH+(y!|~!PiytFo#agO~ zY()K+U%^#cqHr&X<@Y(mFoI!(g4sQlsv`Nic{Yx;yT-=aDmQ}*RLM2`MMimc-_q}{ znpaJCBtZu6YKQj>fSI*SEmB|>@>f@Gm*l=ExuQ7O>w+SuQJNZknENVU9~Ml!4V+vh zCKd3=`7b~WR)@Y_U8Ati=8|w|e(Gu7UTI2k@mN61{f$}9qqL*Y{%?^c_;yc@&vi2c z@x6~I4T4?o+%8}6h^qy~F}r~hQ?7F~#X)$vs{@x94>o&I?*qWj6M(Z;F?E~~@uTZ4 zU2N)zg9|V?UW$UPRrAkwaBc14yjRRh#~kaBtM{6l`xxC;KHD5Cy$kx2G%iz7xg>JZ z@8n+yd`xRR+6wT|AxfQj*=zlYHOkG#wq8&H7BL<}=uiH9aiWv+Lk_R5-5a6HD?bw1m1HV0uMt5DZ)@>anN4d9q-|Wtb@cDqs=`L zDTRcqfG9NeIq(^%!`M*;%NGhH3CwHjEU~?9YwQnNH)f!ESWA5PjDmTzC|N$fJ+89&uTY#dk!Fw5xpZ!FU&Ev`_Qiwg zs1GFE55gA6W>b`+t(yQS1xDi(szqZ9Q31@#7N4rLe8{i{8nP>FV=V(6qxeNcz6!?x zSL;$mTNfX(n|k7wBbCo*#mK=W#T!QK^p@8Ka>&4MqKW&tHSzNLOcTHI=NnL2OjPT5 z4z0`hoJR&Ny^YbIF8d5f(Gt{D%d95?q!Do$It26}lz7b{PL>=8K(A0ZYi0aS9tB*N z^!~26&YV9rKO6vV`XC;h&iU~#dpup;k7~bJpxErg^})f~pfjf|%sc5$X`mO9o)TBR zl=>iuDfFGSs)Mgc8CvFpD^z6{mOYj^1QSws;|sQ*JwGZt_zLL4T+bmYL{Yy}IT?{^ zrJ~$l`ir@bL%O6ew);TUx=CJca_uu7huvacL}AbpEv2>o=Y!o=EU@)P%}s=e;I@J< z^v&{z?nQi7vL*tLiSHQ)52D!6nmmU4qpn=>=Y*=*pd;7HljI<$b?aYhSj(d7u0jBY zmTGMg$_q>hTy~O(OHm}|U9F%Y)5Wa+0>Gny{KDyS(k7UN1eu=4WPC@M0pQugyFSRl zo?gOFyFdsuGqI2~woEU2)Vi~!L$EXC=$0qTwd1G1-!HvQPKe?kneF>RUQokAR5lI- z>cLLu_q~mA?o)`r@6*3Nq#(dy>XCV~pXSSZVb`6knLN!9{^dNVr$^cfA=yGA%nrw$ z9hGXhCGbV7nhIq7 zQ2%P74iD>q$t<_ktVSH#@UQ19K%8iuz29UwNSPz-(B}*&(TbO|Gall^>jF2z(j5M4 zy+|ZU6|2zAH~?XvTiX)s0e#6z8H17B0A~ZvXm-J5o3`5ZuMeg^vuA^?i4a<#N#RkO zrDV|IU$1`<_{MEODe0W#*G>NPq?+(nzjLfClVkd*RV41u%M7p!+{gt^{#W*Fxq~b| zsb_Rl3ED*54`v|&!bI;=b4!UMQPMXe{udwzcpEw-HlD@_oN0ya0Ek7%Eut9_;ZEqp z%e8;`&u6^ZQ+SO;pgw{gt@ox>IL3ao!PeJ9e0*bcGB&8ls{j{pRl%Cr+7F~zPKeGF zerv9gT@dZN?}%j!smg9s@V+}qkI>PoDK@-yM@?L9-s(4)ai~3_*890q9<;==mf+QH ze0%CHQ_UOkl@ZTu4RNlne-uJa1er3er(rDGik*5>Qc!hlB~x2Pv7A*#q*=rZY4{(3 zODj)B@BRCZouZO=vR0>&F8R2RLS#`gJJDAr|2@hc;N=e@RKBC5Y%r|*1{`o(QfMrI zY33S^yXYG<^tzv%`?CxQ4i=-zkLieJ%fS=+_aeW>628}jBoS(>b~>hQ zF>mQT4>mnb+{c*jW^=g!Mwtnj4zV|R*rqgDuXNVDJV%|Nw_f40P-cse!V*ked@S&- z2Tm)R%~g30@DS*REL%h*9`U%<5|CPI;5xq{5`EwA7SG;#O7ay|I#;|kDPHhS?ovGu zr1KeT*niq;__sb>?WKdTdN9+25;}RRZzP}`-+Ja`x_~MsX=<{@{km-2?C-7Mx5<9W z&Git4s66jh@qW8N`E|$~fTGuP(MOUk@Y#@XdPpw70>HWxZXRX<7B~nkBrUEq6$m;? zBKZ?t;RG>a0*ibIcoQN={aftGtx!Znsxi^j6hb;}^#*LCx|StnOB?_{=}Fqb6suL` zJSub zXIZo1jaDPiJqnV3t<(xuE9-T82o^`Rva}i6NL{*=vFGY4x6#>xEI4o2)%h9>l#16a z&30e-@FopCieXp1A5b589Op8OCTo>sx!!1504;7nY{p*U7$mtoGBMztud4>|8^zKl z6v;i)6&$FzRXH^+otFysZgBn1kguK;L*7aFR*Iv}5+6mT&z`>r6pxDe!?yIBg^4l? zJ)_apC>YYU#WNey3N+#!=Niw23I*6Cn&Q6S_?0vR9Io0O!A6oiU-g1&%8;9>e`pCN zr|q>bAjSkpi^W`^rld|Ie0>kG&Po8UL;CIxKsbR*(^@s1z<7t;h_9**Afw*`L0H5N z_q`tVbl@(r6Uu(=9r~&YtP#|A<=S9Pen5^GQLv3&rZ2psv3Yi)!}SNi=du_cq@(do z3z0_|rCz77p#9@`CM6+7Jx4ef?C*u+(<>kCY5A_CEGm3-H!v*7;TWkWPXFY?eWhQ| z+p_M}GMq%UgENRQBYu~Ve^E1n=Yea91&Q~; z@w$J*hoOh!4d}@4Ido#*#%BQ74RRwz1Sb#!WUhl-fEHf&Z+Dj>3;0y0^dSV}+`5E)54>tI`-IUDUSmbGywJjGm8!FPn|_Eb!Z{$l6m$Ap$> zO?cHYpIP~ePnqs8i8xI!`cXUgTfMW+P1AgACbad(n0%8$a{Q+APxs5cz8Yc|O;r+Exh4=U2%{M7^w;>1i z(>wgt|9ZoRMYalbkGy3)@cxfJIH1)~9tXyO@NYk<;>ra8Fb`(1F1wo=GVIu;_fi?l zNrs&SjsUPeasgoCV}`vU6omx_dO3vqpgEpT&kWYVv(J?hCOTg9akc{EbouF4Nbsrm zs0PM6^nr)XyrlibVOYd-bsa<8wp?B~b0%q2wZB&W@c>By2ZFWa_G$#9NWn|eYJ78a>hTjPIY+@AH+3+?4JW0;Pp7ra}S4T;c zb)ttA`GBYbQsX_R+7&q1@F@qe?r)se2g~nfJ@9hWmmJq~yP&Lmk^u%m-n>fwqnS{E z9@x<{rAPu%O~eAoH63Hg4t9KAz84nE?+^JfBic1}*%_o{U*aLGpSBf0g}Pr_hd3#6 zQ$6H-h6q8o3&e*m0@l(u9I5X;r0RLw(@y%sar>jk!h4StmOTm$?#MpC-?VV=q4di^ zh;mj6_BMSVN`E*(7a@^!3N@K>w-ykjmg{}`OT-6*N)Z}@0C=JWd> z!%gNHttFiKh2=NA-brCRXS=hSP}dOK0(y8uSUCE#m3(rv`uO{wdPTV@0jx32h|NTe z;1QF;+^mS{%-n75EU)+L+Qt%fLTZonc)WWLs@4$V^0LuRenS+_F)-SS$UP)loa`m( zv{52|V)2*OXu_@bn-PIdw`-BC{iVTsCgUXBr@Td_8FC`Nz;Z&5yFYt1a{=b}!@$yo zYr4l`5e7<9P`u{VUtw745b}fcCugQsyacdIfz(^?p@ebZ4agkGkX9c3`vPlwsuNc~ zxzRJM{0|VvCPl1WYOK}^73^0$8sWlDzW+WE(z1MM%*OE!fi9xrVay%_|J~#KW;@Iq zSA_wfKOjS(C@rV)HABmOX}XOJOADS&SsK0vO)axd3p!-G(Sfg%4x(vD`OUjTKn`~( zi=nG1F@W249zkhqzu4csfueJ`e;cx=%j@x*`3Uq6FTMd@W%i2r07SBRiLQVK(U`^7 z?|!B`s5=j~LgqH3NT+Asz&*1Iw&>Y=ZpT4Ap&sTG`~l?dNGZC=*PmQ)5?2feTYW;p ztlSl8VF}|W?cXKS^Oe7r$*R|Hf7W8U|I8#13|i*hjw|@ygA9J>&Gg}7Jel?BU-M=w zJAVOnxnHAePu3|DjlPWXK`9_Z-xpq-vXKQ3XUiJ;z{ZPMd-M4cb9~ZBx%}Vp5EvcV z`S*9n<%kGMp8pc96;vo*5tCq`Uoo8IbhT6jJbaK71E|;+duG=Vxg$IWfleHF zJZt8^Qj_i1!$c;nZOHgsxj-Ej(A1M7ctgQ6WJab+GI*GcC@J!Q?sp?zYKbx0UXuVS z{5!E_sO{QR^{HxEP;M?^)2DqZPe#HxuN!@M`m`E5E&Nhdnr=dmRJ5i3oulHH0uxEp^o}v zAGU=GtG6$(N_eJ#Uqu#hrw;^;?=nzE`o`A2xgqsYOy#8G*jsq5K>QP^4YK}4`Z42M zIiUIavm?}-G8@ijcYp`N%AcvFanb$y7Z2f&>#Ss!&d9z`%;aliVD;*w^_?yA!KR$s zN`J4BU0rSWzSq{fgjdtPopSzb@7BM$X%_uC^9DXqKkX{H9keCr9^QI18C(=`Ju)G) z%=m{yrqiZoTAG8o zF3k(P5IvHhf%aq6M?(``Sr%pg0jr6ehtG(rTh(P2}v`>e#n155Gwr>fkG-J^%eA#GASG)MbV!V@~xA ze!oJ<9FUEj&Bss|jI#SrM0=9y&gr6l#a_29?T_e|e1#H#A zTG|rKUph zW-Sb2w>ZHl-kizVg=o ziw2l)p@IDTB5aOqkX7^ZL;Tu)>ur+-s}|-KaLbWL`OA~^DYz~B@JThPv)Z4eO?jf@ zGne8mZtRGRM|+lmVrdWl475yDRL>$;Lf$cFFn*B}pj?|aXv~zrUtbho2gS3DAW1z`4se0k_%j)h&UUJAsD}J=)8M&H5OWR~2eR6FywO@W;?(p}&9^`d8 zr$%8DK_da0#T? zN58+>-e;Fu?%tS%z8k2FwPrXuPq1PW%sZLsF=QElzkS4&Yi}E=wMgBadKS>2Ga%PI zvYTX>eDfXTBZ=;hx%?GtmP7vF_4Sx@^hBksfcjb%J*r`Jxqa?%gja zuvf+{Mi*#0xwCTHT_(yTT%I)dO+t(1)@PRR>rbe1b*8w&V02bZtP+QEMf*CNK}?i} zi;YcTTw2fLC(z9{-7R!>FGon*K}FRXa7rgrbz$c%Qhl|$?oh$m>qv8An&x^2Lx*D$ zi|prKdAg;#Ay`8$O+w!vE1sqXA#bg?-3xBdA z*Emg{bQi*h$pT17E=d@Fqv!YRPs5FC9+hgZfQg!VkGuTA>)^ThQIX(v*xQ)IiJXTL zvWa(e*B=@z=3wV}f`b=w7oQk=&Q|cM?7kzV3ACxWd~_4bq+jGMgN;Z;ALcN$Z>s+r zX{aNf-t=Ju-C$H>5L&?vyS?s~J#orKER6t;vIs-V~BnCm4N17pVCkduPE zzY_CVXp!N(XP@3KiR>xFR+K6wPI_6-ezuF3)1+gW|Dzai`o_`#gTk4a@=AZ9G|?rMesExn@U0t-)#e2U6Vl z2A$k5g-3ghazXL$@pX8+=UGH`oQHK`TYX6_RQSa)qy@6@_DZ#?lFS0^$`?tsim!Yw z&L#xFbsv1?u_hK?+Sd%^b&LQYBrpnCNBMKU!u=Mg74`DOn90UMDTx z&LS#CuH3-WX+}7MCNANxxp;=zSNN$Bj(UZIG#l;ps`C@yu<;Yu6x+7uz z4u+Q8e|)A-^yK2u*XZw^ZCObs39ccM%(;~e{*AugL-XPJXfq%`i;7P*O70!~^BR(A zGIH7(9wiNH{0x*7cPYxl&t|d`fF{n}n*=3^Yx$?86B{4zT|#xO`_hUFgM{<}E;8*8 z=zGb!x}zB8b_tIg6E9qSv*`w|Ja#*jS;<<($zfsVhCh{xNw-|Aj$z1|Qz;l}3>-Mh zO>JXtehqZH&Yop2RsOm|i17+Y_ZbZ+v6oj+R+RC_AzUm@>B!$?<4N9XK$ZHLoX&)2 z$*IQdl3wf+b0YDv;B%5Bg~3WDwHy!Fo7#(yDK0}Q8O8wFHM%913C{y2Es{+FoD)YX z`_TS3`H;8Q+RE_ePr%WSuFxGD`N5xWs^r{}<~#8%zseow5%R#%_ zM9_na%A)>G^K%dFA+{r1*rd#*EDzyH`lXAORx z^?@?1Mct0)amJf5*B&-9hfs2{|8edUi%1vl#^E^4R_DQb=zXd2HS6>5Fjv)g`cI_v z+ij{Y{=G6GV<;Kv5E0pqs&^IzLcEcyA&h?Ss`j@^nS{e^xD`G9Z`L6_D)zNSivHqE zc*I-iM(EjAnNYynllUoR#>7*)87($}W4AG`2-^T>bu^^QNDKJ=DS9xPa<5 z_uKDs5}|SY_yh(>V{^F>tU=1g9kk6OR_{x6n^Rh~d*w4n&aQoy(be=Bkq)!@>lmk| z(f_6jFP}zfC?0yb^XOg7jdRwSt|$wBfRn{c??1Wu*WJ!M=Fo}&J_g*L4xC@oJR;fE zo$74AiyR3nr_xhRQ3p(yum=xh8@TT>{#No2GQPI?{dL{YY{3>l{)agWCc7uuTR9HA z^8ibeP;0mk+K&goagfMrORr^5e%F|A)<>?CRmwR%Nl%>0hDbr(Hr~&L&~@dCEuQ03 z%G$~~xh76>6>xp($Q=>7ktM}n2#c3zHGYoom~YLDJ@OQ8%7KmrIyZ?c{Bu=@0*E$K zs-`JA_g3TAuc3L=lwPRQpmvy;cE==Q@zbfJuqE1{pUHF=kC#0{oAkw_G0XANh>gPtQMAj0LxhuG9AO zkQIxBPS3~tl(`XMN77^~MSe!3fVu&+Q*biu%;bZ$3$4vr8kt2g^PedVAR|ggMh}9N zdRkGskoKRip8U|>t3Ub_)s&Wb*QzbDCG6gm578Bu>Fm-Nx-(WwGI;d1zG^PiQ4y=t z>1?V;>B!Xc<{)&GY!?HODdW_TEs7y715mgfOET`?o3QLQB+OT(VeTk8%q24hNCC;! zIrA;FK-`yB-6w*o@Hf#PN*&^Qeq45K-sA?at3WmpsY~Ofng%JYh$U4BH4gyCbAE6^ z!-$=R>;cFs{_(q$EL(*Rf^ArJi4kRi)OC3^u|GSmT$^sY4|{9uRcc)Rah9d zR+S!lw{S@8zcFfz&ZXX7s+(i!N+N%h5c`6+P4B0bI4@8SNy@s}n|mwJ#q>*)4rnJ_ zFk-djvGMcB_9ddGxEZ;~cPs?*hIo6@A6<(#W6O1YwpL6>w6+OZs_Jh(P9O8G#GvCtc_D#FO~`+E^vpozUp;l%n_c2~Zt@r1Gfr|v(m16x&ijwj z0GQh}&i1};a=4`+{jF8|k5H2}la}KBjx+Ja@b+@iL+2^Z>ze!OQ6ixoB(tQ@GECgX ziE;mBz$uJlC0>)02ma?YL-Bhz36+g%l}D{YW)580!R{+=#PigGUGK)5JlOwW>s>`9 z-Px~|Hg(8#*rY~g{i7y<97KpRd9SmfQ=;gV)%}?yB4p!Cm}~-LWJN~*j=X|_4fab@ z6*?ss2evQ4z;Iyoq0fJ`)ckE0+IIdP6P9-qUc*xSigL|=Q2nF@{v0=W!F!SIIwp^0 z8>k$#_)9KR(k-;S&)yYF8lBM925a1}d=Jz9xD?D%qoFHI?pwCx7Pom}*9T{Y3r!7j z_0)B?d|$6CwUt;Ys=Q0EMjI{9(mUb!k#WQnS&X7u zxq-JWk?)qpBZZA6VPYC3{sRz<&AYR?>ZK`oGJvF8p;hL>zAm`T#6lL z&j`P1jACEVpkDvk<++MI3@)CXMn3tTJ=Qzp#rL^^s%654+tWZze@Zvz&0lDGS(5}0 zb7jz~6+*^wzxE=y_xFtM318&W%`zJcKDa{crncO$?g~gatm{z74Ey`41)U>Lnp7HO z&C;^Y1_oI_4CBG()lj@)AJ?6_!L;IN zhZj!z52!EGopI0C5J7$?fk+kL-*>n}to_Jk9!=M?vI$xD$1AO!$>CiIe^v#kr1Z*u zT^naPxBz-UFD8FBNQEf@mp*elGoOU4uDtp<89BPmzyh- z@cCB4X;kNubEgmqya4m$`&IsEzkU1mVtClJDLS@_SZgi30w;Su{kRFqZk7o)c`?%_ zv1vhfsQwcGIRo{=C*nKjHvt175BwQp<&3Wy9(n@{^9F%?q3sl=yW>|m+z^%L| zDV^V(52dFC4ZxB`zmTDOUMhg6!AdSLU#-?MsJBsQ_CHiOiZRhu6MP7WvHh-*VJFmK zTk+p@In~#u&pxPg00L`ux?qpIhC!#Gf&T_VxCW}gVZ8t~1f5-LM!Ng8>fqxCicYEL z=Ul?5j?YJ*O2h`1;s!f)h{2cHab6W3L3QRM?<921cQ-UyhrreCdmA5V;%0bL$;$fJ zZEN=|9~8ryd-XkDJ|IFe@e_T-g#Pv_4T*p9`_{xKH|yvz;k%imlFhn{p-V6dRqsM^ z)KK@h^M;)5QFXtdrbwPoWz3RmKYB4vBPz7+rD31^Cp2R4zfd1AAc5DJR|m`P2t(!v zHeH|SNeb0yr&l{xqxAtdg#FSB>@9+B0Pj=E7kpo4UpcY9>WgiALkCFD!=1D0@0TKN zG$9Anei9nc7Ra{o0pVT0#ztT-kp3}v{|b4l`UJibyJ~0Z2ESym<;Bdb05cryv)Qvf zY31#n;$F05{dDa;55oZ2%Efi!LUq#sAXlo~06BA3#Di!Z+cU96gEPhydkbLAEkNdp z?;JU%{{!m{GWhT0C&)okuOs$1k|m^mEd2A#%Qk^amRLtp7jM8WxC#9B8yqDknC+(z zHR2HX+4Edq)6n|i^bK&SdEL6f`<)+Ab@=~F%sa>(bi7Q*yj@GRF`sdpDxgOC!m8*1 z`A=tYTAnAdaW@6kMfcvh6$Qz@r@hXmMZdWJl+Mn5B16@>#ACL>hCxUuJaLTqbWT#c zXTtNF;Hj%i?cnCMQO6{qD>WhQN8I{?9|TZ8wTEu>!4#}d{_|ciqP=z!$R%+(mcu$A zhvI0PvWDIK<)vPtp=u-8c*p;g{hn0I(rhILk_h?Tg51(sQIz?3sX!gyK}pt(QGVmk zP7xdSGp)CxtWrdltjv&&wJEv;JJmks^dLOgpZTBJ51X#)oQvlx)7f^k03G;<5+~Ks zqRjmcWo4w96PMQ>z_Rs`vg5YAjNoS3@oSrByZ4R&Cr}txVX3k_vRn@I8l6T0?HtOH z!6r}Rae5pJhutGMsdbI_;Y6!T){gN{e?eh%-K*?Z^-;Y5XJ!56i3QUZOTq#4LJw)_xha@{)2zA=-Vqx+u&0Y<(+wF0|vklnC^ahgEf>2(9Cw(I=Bjja}q+QweK z*zcqEbkQA8wx?a2*hhbEv9d@qo0=v`iM{{si}s8}#bTn9n0!_>D)FM^!~g6BI;^s@ zbWSTS;&^5ETe^eaLyTS4c=$&}8rRky{)w-DdZBv277n;W_K?aN&ZYA`>)h0IWbr!1 zW7db5(85H!10`n~ycWR~n0J~DQ9%uO^fvSX z^s7$@d1oR&EK&r10}|w75Bs^qX5GKAQaJdWxud`4>;8X$BLx?}aD$qc7?vK;-WA!3 z&uq`x2R+0B?ai6%2w#z$;7bk&Oy1*uSEr7>@@>c0YK0%YGBIv4bSp9MKWXv2xWC_y zx%=^rV!`&|nI$Q|0{I8r1I5mzTR-OTxY(t-j@d)G71HjB2Js)4yT#0e9n>|s-;s#S zqi&Fj2Bw9cJ~$6f1)_ud>~aQvZyO5%&aIDUJ*Q(O3eZREUin28=&H8}C5;Y%5<4{oy82kE9T{h#jc>dc zL(SuTMe*GWLvc86x@zhOmqKkeOD`_;IXy*(VpksS(tJdIw&!@3iy80jW5M^p!zY#+Fau0LzDgw8s;cx_w2* zayw1Cb2kR;DlyNv47Z(h&x)3#h`71hvi;U`TI)SZ7=}4ij*wR^nn0qnZZ49xw#Ibl zDt!K|@(U;;g{xgU!NEA=`LzsCLoGcy(g;<5i>R@nEe*ur4qM63L&rXR29J}knTGlh z=M+7-4|xGKI)5S0hNhy&t(TKdA1$yzW)lQnUk|W(m>c@}cb}+@Y3KnIZz@>q|L?Uu|59#*8C%uP2eqfWf?eJG7qLqOoX)U^2Fig+Z@nG$t1c+ z;R6v))bZtj+?l0Mx|lSZ8Q7h8C{v;!!FnOa6P65QV3n*{@fJ7}B!dPy+ev%m5{+bK z2kBnZ^7q>Y`ai2EM!#4Idws}I*^~JHux7}bNGnAbO#~D2;LymEuRuwALqO0~s7?1g zqMUnoP_8B&R~t14kKt9Mqn|)FuReqAL8{C$onNP!2Gf{{C!r=0o0M#^ec$Wu(pC6k zMrUVLh8C^1|9ZPaez&fO-UBJ03N`0Vkdlu7$Tsr#@RQH1$C~Q!t*|1={A;A;4Tub1 zM^|%~`F*GPv57d$UJXj@q>Sb_zNawUk|Y@h;DS73AZ`Fxad|}h6Z{vY)K4}{6fb!2 zFEMt+FPg)usL{UQ8Kv%6>wOSObQ1p&hbZt~IKTdfF+PVXzL<#EH8_G5G4qH_=z1Ih!uTQ&;|;VI`9nD>!nKJ0IDRg~**pAY{Vu zP1k)u<0z?GJ=(kNttKK8dai#yZtYg6`>_j@HBHNI^srj38Mqv_Q@#=8OB%bB5R7#h z$KPMSyy-mn)42PE(LZ~onl8ks)m%~v^j0YID9UQ{>u!F{omUEi)X9&+s#IwUOevsm z-i`v+4zCxd88!C1Rg z{Pe(m#QV1l@sL~O)g*kf;;ftpifUAjcn2hWigp%f$g^H;m#91^{)T6$5+P5^Jd^ks zs&5Bv04i=&VxX~zuIn`?fd%2gtw}rh1 zU@3UOqSo8$(THG|=)06qnX_&{Pb5D;Js0A|WDMu#-*U%{<>Im+4`n|o-uyo_orybC|NH+#)@(&2 zYb8V|WM_CwQkEnndzPW>WXUp?5Xq8kSw;z!ecz3JXDnFDw$=OtF%~hC z4{nKmL!V%iK8J_pA?}R4R=@MQIc{3Jja#1FpRrJrD0QWO^7~5qr`C$=HOwKGibc;m zPCoApL?%pWK!wD2`tRZ(ol8xn9P7MIJ#OP+~a}>*5uMKO~5-i?Ba42Z)7v zK9`!y#pU0+uP2~~6SiKAJNAn7@B^|V?Qia95x6_nZUFk#6;U}~Ub~_w2gXB2^CKu1 zUgzj(tUeS8+lbHXO5HC&aDi$O;16UZiyqz5#B@9?*%z~Tfc^-U!OpNK*rPB@x*`2S zPK|t@3peOz6wov;nKbhrsa+wBBmM}OU3^Qkw2kz8*qFDsl(gFNozr(c5NFWq zLJp#{oT=*%Qo2fPQsZ@a{CFx`8b5dC^?JTOb5M#=pE$C)0%HqifZZYr1S96Q%(1?BfL*BB>3Mp4J^GltfQgjU=h0uGou&}H>4jUnV$^T|KR{Y-h!pDF>RlwEkXOcz*Z|xR4I_X zwi8Y5JX|es4pZscL_(z=BE(5V`OIYSowtaAjJIWVCn6*713Y?xCx$6y??~Hhbj9Xk zX=GVuF^k{P6G|he5Ymm|lZW27{|LUSlbC$^PvOhE08;uvQR=fmHaO%8_&RKdz?~f< z{{-W%`T6<$3HID6C^9(gO}*yU{>EOQ?yydb+{%yrjAJv{CxTMg=u@p1{-IJF7E?u* z^{g`2560DNe@I)VP3Oz}$dmTCnhJe}e;u}|zXEj{3Zn_Er_YiZ{JeQCJ^Wb1`fy=( zgRA$uU`W`pHqKD<*TQ4H@X~=nDRM}2+tnbHgSF14fpVHJ@=5Q{A;mPa?D&H!P$B;!0>q$s1h&{i2GR{rG0=C4 z;kQw|=FnbkUS6?CW5I6y8A8WaC!Lypc;rxcoLTgpEy~v7*=%_3G7N*%Tn}1C*8Mfh ziwGK5TIE{fB5ZD-we)<{U3lVXvqv>`8H7Y2PDYkHg^Y?+<%EKzNl``4-ZxM^`2b{j z9d9TfcV9!%|K(5bXMz?u*tg89l#=B;Jx)5}ryEf;}?x^&m4rEUbAeCfFY>eAQYW-wZ-b!&#-6SX3Qs>63}z%vw#i+1wi zrEmHX_*|2!&2|~Etpj=EWkH=`iu`91yo;0b_mCN_w3J`3PU%X40DOp_?nbLXXwZ_s zq>C7eW>YsXrNdB)o+`*MR|OwI{$|4jQy(wybyr~6#b0gHs2R#b4wtVzUx8SDBitk{ zQt1t5SxyHqfv(KDx-@{~+XP3B-){Ynqc1AXg0WOV35K0{DfNy&Z@;|zJ3*=D9r0D5 zC(Ng-H)b9|&lwH5l)~ZMSaguXsU--F)QgFmg6{+>0c+ihXL`*4>`0561$S6crUY-2 z58Rdbs%^_>5S-4-v$*onR%7l&o{&N*tdhybc{8K0KaxdJL$Unnxf9i3tX%!j~xIU$bg3%HETQj<0iSrPi ze_S9E*9Q>7_u~lrx|BA0y&mG)Yei!{u#~rZP&IXthyN8FgPY;su-pMEgT=uEPG9l0 zT=IANif_Hx5x?WtxXY!w=*bZl($lBJY34umPf<(ir^lX)@p5_lZaRV4Po#>TJVc*2 zR|?*r)Q$;eE_p>SN7Uwfi6MHyG9(YPm~4?2b?T+D_rqFb3^G2=C|onkdH1NfjT86= zjHinwbJY~lFSf&<>#`6~x-_FWc)&LXb0u{fX z8LVy)g76|$pys2+b?>yeJe}N#;XU};Mjh0}q0;OnTo3PYN1vX!@1OgAXEuFR@E$Mm zvaA(9M$ng0BIS!IwA)6+;5BEttc(lOL?LzWo-u!O`&`FCk6atus$r7?X8-Br{neSL zxO%K}?#7G0fBQ&K(#I%s+cg}tK(dR_JcYoc_7(Qfrxy~tEReks!>{ImknQ|kD}&WN z0)4X#WPDGqi2i|v)jZ|)2>RgK=H>*37rht~tOB+FJUn*8fN4f+?>R!=o_LGoy@^PW z?WP6%TW8yCOe@sClZ{Og>9ep`%ACw?yK|519;(QWO{l-YfA0jJzJKB=)K{QQsy_sE zNNg70^_+}JlB;uF1W{soyVXQ>GCT>T_1xX*Vhmqc9dtfO<|%rj+}v}1veo5{lEDp8 zSUs&moV$;>;>GjVoR4qB_!Cr~(2DNQrqL@=x!&1sa1SgjD3-`wMZfw}r0VU*Q=ltg zVAvCIfKl+b1i&EB_#9jU7*9epD?*W5J*dMKOMZ_AI>QSLW zLxHBatO;}?E{tH&?>sv}F1@cV`qkv2O?}cF$jePJ?GKly{WxWZ30x4d80C9VNHK1w z+m;=@uS*RFU50kQlZ%EmBFV@KJD}+NB@63;f@|_2L9EnGI*0@IW_XfB5x!h5gng}f z%r;2QSxJ0v{C=^ckCL`iU-{Sh1<%v`o|N9$847hD=JfoCXvKsQX3%ZqTPov8+rJE1 zj^QC5!Q?=j8afn{O!->JqM@44RRN!-D+51E9fVT`^ zif!*8YAx$GzH+#56fujICd)m&G9j=Meez$d*j0UcQQB{w-gb|2BYsJT!=l_ytfpgi za4{UVft%jyvVgJqRDPSxcCJn+AwPQ+^iYORa*e!vUMDgQ$bn+mMX^ zO+-={Rr7_y5S?NS@^{}RPF!E3;xz5^a zvmhSNF%i+IxyGOqX(W14RWL1L@*gQXuX%yombA3PRV+U*?h#m861s34u^{|~VIb#c zWv!~g^%uE{k9lY40@udbYpK@LL-O!JDz5n@KPP@#bW_)*7)_h?*!=aV96#Tu0`=J6 z2hY`U8VRedF=Zzl-pl{})b$XVtNltb!+zG*wW-z~4D|h07w3F1EGdDv41lhgAFMD1 zrKrCY?4q+ECJ_13{MhyoZvY-*y8O^z@3o2*ry-0`ZU>yOX9sw2JD;fN59fFph_nrG zHTC3X+@Fta5om`HYWFT((fPLm+4B8fZEbr0`fI6G#++LK<>kK9+XE{;uTg}vu}(np zYK^G{0oDsA@(MYPjuOTl(%_16=B8ArYLawj-%GZ4hEfLtQ4X~3tUl@;aM7J^vEzWi z2NHL*eVAYWe9$F`tOh;GDaah>^fG6)MA(K(qW#gf-jfQO9@vlunTiNKlLfmraa>aS zG}#PiU3>MNEX^737*)s4lE{Bp-kcX)cA&w^^iUvatAbCt`v>n6gVt55y$`&Do5;Se zmXB)Y6GI6^2BJDnfp!D6W))ds3_}l$~BQJPry}b$7j^&Bukasj2L;QNf z4#%Y(2~48-D`EBQZTi!p%J0~RFjJD|IfJPWMCs$mquJ0D3unokAC9{0t#~1!)^3Nm zP26H)6{y-Ve*Tp>5~7{%9cFVv-_$KHoiM?%`&(<&z^M=Tj*<;I@e@(MmerS`;A965V>m9cy<740@oCrSn zW$j(tK-?|On|7x*Yge+z$By#isWdkM=A z4g7#V{Qx(m15YwV*J%wD?Lf@+nF2oc2HXyF zkJIG!7Zeza^&3Y6U9&bpUANF*&i5GtZv$aI|vAzRf%ajjY2M?;R`2#EP!;{&^^6qTD$KoFeGQYat(omoF?fTIU*0Yl3FvX5Sq?)0_- z=frw&jaY>e5E*hEQ+dqXb)g0!QM$VCt@qJiCh1PKc7L2vkG-&=L%6ec9RdYmn5^CKCkN>e=YO08g!|1Pk(iA$7Q=nZMW!OAaCbgA$a$^ zPT^h^)A_ZW$@F%(vNA@Rhw<2Ua*|L)wHAY6%dxevvz1LB&XxEY?s%1PnDb8+c&p$& z-oJR>5KyoID2chKQ-alTgmCp14yC0^B6W$xzd$}iv@ zm9Zh50w{xn^%gTJXM)(X>_^GfWqTR|xpO@TubUp1ufQq8+P#@kdDnH&*u4Md%|E7R ze{~nBU|A+1aUgeyE2G@2UZudF>o?p0wAB2UeXeu0b z)*ermys^~pSrJj}LC9O)`P9i(P3ya8=_tgzyeF}@L&&j+*?oDSj#{=BHg2C|Hcugt zwG9B;-_cSt`y50C>aUi=b;ozJZ$-u`Uw}f{zOWH^?`+igjlonUNYpt@cUUeF6+(^7 z#fn>t$@Ox{Hw{uPh!%UWFW8IQY_u?44)wy-leW6ougt%66pxqK`7|%SyZVAw?0(#c zgnB$E1sYqsohbE!e0##sbTR{pWh2-+4sswRMg7M7KAqLq;|ysG>?h-ctY?U(4)Dt@ z%UyrKBl5>R^S|rOYoHaeUYFyfl0O44iqP%*I~TJsQ}_5kGEcQfZs>3!Yb2Pf6|JV?SSG* zLG^s(QlJ5M|94+QI&avAMIuw8sPi!`-9;CRpW@USW-v^4Dv10VruBWzHj%RNPvUU} z&d}}Gud?Jz{U)+m7HdLjbw3x?M}d!`yqpWyQ4hxO40MXcjEdHIj!LIg)cNiGYkt1| zsiOI~PoXx_u}`=^A^YK%nGivr|-zpRi|-a$k_3J zV4|Ddk2U3t&omzdI23^>eJ_u5B0Yilbd|Ga6@E{X&t%0g@_vHM9~Rc2COwKRA95T? zKua0FX$$xS+JUSdl#4zb;?~7z=@=qTvHV~J|5DQIz`6$-h=e9S#&>8s$q}#BK>xe0 z&i2UNV(b^Sx}kBV3o}>Kp{YX#I=!yGR9ss=zN-!u)Iq{l7?>WqCaFzLib-G7a_qiA z!#~vTv0za&rIVz5>sVvjuOnCBb?MPzi-Tor)^iWH*TkIBb>I*-G=J!Q#;L6QL3JDV zBEpGQu^TR*L4oM#-|E+I?B%VyC>^rCubalU%0`rae5$pFzBqIk;tz;+{mFRj=h4yR z`q2AekymdWSoAA!o%{OS>5<>{Zom_OmKnC44K2f_0h=gL7)aqcE&M3?>z$Un?Ba|c z{TKcCTE}vHraOisq|@KO^@|@v23C!Y^9br|K>b!fchzz10glhsg|}AiP;I`~pL^WD zRL`Tx^2LH~Br)>vzs$cLcOrM?i#2!})l%<94C{s7xThI%_RCZK@yF1MO2^@`HM#|J z>km6J>ddJ)77$l}LfJ2_zwKhzLhs6+8{lRxM&G=etF-5zt9w(LZRd_%Ufa`#3Oyr4 z|NUBMJG#u7OHD>?Q#o?Uk>r(>QN^eWDe*Y}M@bg+THxw6S?Cl$AAjGsOsvVeS#o#g zH`#x4p$_>@sh;~T;sc46XvT%p8;m6TARKo;&Wq4ezUWoyQ^M@j9C^cYGpp`XU*Mng zSnv0NcwUGE!6FFNefhNVy@59y8u*xoAtA z>W4ms#df8vyt?=6-;5M@gGpsnO0WHDII=UX}K!{279En|50 zK>aqrm3K*=Vfy#?8!nfR^J$+2Ade+>dDV~JRI|PKOvqy$qes4&dmQ1FpB%|{GaT_x zVEh7SlR>OSfM*yzJ?S^w$CH4H_WfAr_w2<9{BzJ{)yIVeWP6d$=Qra%ck#T0Y%%Nc zKHkxjDdW>jdc(VOS2M%lve4Im$Qs)#2|hKjcV*9G`lZ){7-WCCU251nn7+_NmIQU4 zmA+qfWXA7D)iSbGfePf|2G3_U^N@Ldv#_xlb<-am-&L|}F1=Rj_%D^-yu!^GZ&!C~ zpKau;z#+n`ZWZlIquVGF91-rl#OMRl;65y!x+|Rk-t)5Su&txOIH3P1ok}Kn^l+8pCF)Ztd+7ikE_Q?V8mX?&2ns|> zne5`&dzKd$B%Tu{87xe>o~jAuV^e#HJ#f0A(}=Vz&pC90HffXW|n_7=+}^HYIqTRv1v;a82z>{>7{$@Um68rixcxb zZT{5H8||4&@0^Nn*WXnXI|^(^i)S9p$%BH+f{$pdDpa?uDT*NmuECdJ!6~opTiG(J zq?%5raPu2y3HDsu<%&lKPyJv}v)Jx}(2kstn%><$)hahoPpEtDy@(UJ9GlEVEQ*dJ zqgW$&Sewsp*B)hZ%(vB5)l->GfA3y=N-V-wJ>M8;xcxQfL+n7Ix~QGn&D)po@RgoB zAWfGQ02&d@00i}kIZ;O~#kS;d-25Mfl;yT2qzJY$wV|rTE@d()(qS+;@T*xBTE=9x z5%;juqa#c8`pYt!V@o>^=PcQP-0|=vmXjD_YRbqD=RJ=#{?7J`Dfd8w#IhjFYwgW_}6^;!!j?%+cgH zNbP$O>ke{>)ltz1_NO7-9!b%kyV5Yo)46w>{>M}%e2bO;yc1n2z0mfXY&@13={#^A z-d2eDysK?BYWzZE=(?N5$zo)lFiMqO++p%eP_~kj28Us}rU>}88{^X3g$^iRK5BV; zk{~*fs&S9j2+jpVuKgt+asj&jc@i;%Nxk~5yR-{R0q~Xmrci3wMQl55q~Fl6>0F`b z+v{8DczDD~@7p$S=XvWD4?hXK2aoZ+@UD&)0+?6juD{$Upx35*US%@Z?8e}@cBlP?=G9sLTDvQo{H^%E``3Ol)5NO&x9)O{ zr2pXPf(ZSg4h!i8LE1?&;rue4m{JA$g8zBH-VCd+XHly$$=^DZjWQs)+w|y9=f=XT z^Uh33?{CWbH&8OFZWNSaaxWF1*|UMhH_+_l6xVA?lM_!$Py{IdNR+_#rPf3t=PjZ+ z(U9jhdrN>V+-W7Ev|>-RD(!2qWMXI(#|TDlmXmbv3{rJ|2ij~s6q`}zyO(o-C>VANj=HO5&D94>YdW(df?}jhi@kj}qK&A` z*8h0{$_cQJa)~L-*Cc_4bZPbh0~pd+3)=yW{93awK2w_iHJ~Qs)^r>T%5~Mc@sd}O zA1jmUCGmv#W?CsXk=yheUk7aCw1Vh{VvFCas{nt`ZYL|de5qigQ(zxz#vr{HQ@wic z*ncd$54e7^G>ihDutD8|KPdVnF}gOuQpv_vPrg-lgcb@N877?+jvHGDbV3xd;sso@ zAO_PvC~rn6Dy8lMC|(Mk>=alz4mrfQckJ|(MZ1v-`Ll074)#1b47|l!ze36H?oS&n zqt_m0>J@rACHxW?_Isswp-0R86Z!Q(-Q{0Vr4hf;Ls%UgI1Kho!@pbPj#f74F|!qY z>ZJx^jN?onZw+bQlcl-i`S@Ur84Bd0I{1}7fd;((vEGG5!Eo>{*U-6c6Y!h}={&v& zzQH71=Br8_`|XP~oS=zJdX7}-9ZZUR5I|U3j%qQw&Wh92RGF9P0!QK_hQ_KIe>zW>E~b6~{>xN)_DJ-z-`bDwLgu2rWHjq(-F}9iV_;&L z(dZ$Bsk;Gd!wBA;R6Tk_#@}W4^i;CHyp}ppYFEh=7iQ8$f1WLSlWJy=aT7m3k;_@E zI2#Zlth zJglnEjc8{53I*F#UFV%S(uL-|?LlVK_6L4bN+sW(EftI||Hn8@5qr+>{(FM;(m!3- z+OgXVaF^a~tr_r+;y-{K|CcKZ=$Kc)P42aJ!bAbtpoLz+`;-UpIG{21c+LpyUhtTdyWr4|=d&gje|RLzx~ihrYC>%UVDhSI z_ajnniQ?nXHYPL0gPF%JX|>x|Z+b$T?WO1Z{31rGKT{4Nv?&$k?NHzB2Cr38;r63z zc9gF2OV!@PlOK}T^ObNRQ^POP)?H;*^&k>_?6x?eA3I$MhCv=ApSsdDK~_VUfE}5^ zZ>l|JHFG=VHl2!0Sx&rd#_mM>)K&p!-Mo0^R6~=EM}d*RJ$XFPMezc(bg6w23p=dc)RPgYD2n{8iKu+_liv1Z z{(U#yOPAjwD3M-YXE2F87n>4qe!0d21qLnK%)a25{7sOaH5yh85C?+Ti0Es$d%(>9 zlum@o&BdI_hR}*w1DBy#FD2g(yGSC{J@u*4eWq(YGP1b?j!_uKr-$_XhcX%%ysCug zOggwB?-^9=KgRjb!&rXSRO;GvC) zyJ3pIytlM=qe-j#q=vj17R(J}+Oq7E9AaEOuOOG>&@a9EGc}z2GL*by!AI>RcM==P z7!B_fjIPMI?*Obd6_Sumknzi#_SJniEaLb94)xpv@NQC_y4$j$I!h$-3djcS_6dOy2_c3r3J0%0kVm#~jRxFsun0Wsh}U6N!0*@gf)dC;d}qL8o?!}r2Zq%BJnerv%<395#j|_CDZI@Y$P(mB$}&9PMc?&ArZfZ|Pyc)tAEB)n_@NJe z^xX1`hs`7g!E{Jbf$8Vyf^DEJb31ZG}`S z;EsZsm={1SYUj0NiI7iV!maX#wA}%i4}{68WUHiRxtd@&|KdPfy}Hg3yj!fRzAMQ9 z1?+bnJ0Y3ZP*amAn+8c)QsTTyEI;c34d__b6E+39UQXTVD+2`BcyMwV_HTd~zZ z*{De6mc?*IK{-ZIiUm!NF*qMMb}-qd!S>Qq06flI(GoR ziiUo4(J2}(49evpxu*~4wjA+b1yP=^V|xpiluQ6vVLgNi%pvSg5fC>4mA7C;trf9| z(Ts6n?%+j=CP9tuuv_sX=V5>G_1KZNNn1bF{GauOJJ;)Ndi0uo*z-3!p6C88p@TJ| zi^D7GgT~Q2A>An^K>>aN^3L25W{ell)_@mPk$UEjQnL|!K%i+(+I6$TvbASBzEo@J zU1;5({)J!kr<;rR1RGvz!^DZ3LUA;Nt1ds~urv?@MK^}RZ{&LDCw`q0L^zFL2V}AT zmAC1}k{J#`pCAc=?Td;iT91OikQK$pa$S_a9e2o(x`fYI%!;ABM99zJt)c_iU%>p) z+GZhvyZBELC6Y@x#meQLdzpDuA<66{{ole)H`N755TCJXJmm|n=QuzowhOlS%L74w z0e;Hq-ck<3kDSaPLWnVblUA%to~x+>e;RbYgWw}{-4=&{2T;l8hk?0J4_puB0rhQwb{^_m+ zgV~xr+=q9}BaMFOzrhNLsIzlF_hK6_kDLfe?@TRB;@i07tSt2H+Zrf@93cM*#{r|| zNw8tX1q%apCZ)CCr#@#bbpz$SHyk!?1_8;uzZOqD(k1G0bZu%qGHo(W4dx*9T%Rii^V!_`yOf zf)aB#pZ^NuhtQg%MrK&@M^rN=QuZ!K^0b-Lkrs+N(Ai}+jQdMAnY$E7J5|Ull4I8R zC0tQ4)`DFa&sN+0O}66u`i%5ju!pPqY79k79{5^*&1`PzUlZVj!m4)ym-gt03YLZk z5L4sQ3eTLT6QoDKI?kx{Vi-;o9CPm2h*3i5^DOm=+d({lt9htenFF6^<(o7ax|vtatYS z1tAm*vEHv)@TdHd!(bf<=|sz{e`En3129ey=?scYnv*CA9S;~u%e3xIW3aoFmy_)Y zA6V$+#dbZ|JmC?~ka8erqtD`j1CM8YYxQRI{hrcA&v{ePov@F@#$#>MQNPxn$QHfm zOx_d1e6Pz~&lNCc+2d+y%$Go=R-}x@!!COskM|Fba7Dckp6p#z5C$GGm*27g=>`mU zP7>VjnZ1E4U?D?qg_a%i2j+rWFKJOo38m`4`--OD#^Q!?3Bz);;~-x1v7Ra?U8uHT zq~!h~MG21tu;({6roVub-lxyYn&q21|5v?!0*m+1Uss*8O?$;!^o+NMnZcds6u=iN z9=#O!wm!F>pE=}{G*Nh~ba!9z)agNeR+U2Vu@q2Y?>1~b7nmednc~7N)D=rU{CQ(Y zyE}mWLJKFXx9N}ng+|1^(L2SiY^#vE^s4f=@$WH9A8-0%u;K;`0u8k91Dv>y&yJKk zmXT(U!VbL~E$L@qfz1m`zJc;Jx2EnyxaO~#BEEzHivU`y;qOiJTXmbINK%_cuJa4# z0L_ZurKPGJyeF@Cf3hu!_>7vD#cL;}j3zzh-O905WZ=^X8+p7Q*x%t)RSbLoWb3?0MSQ9~FVQ(TP>CoIAU*i|me%tUTavh#vbv4&qX`Spw#w z2dY~;fd}s&C_QPdvrXLpnz%Fq@FSCb1{*eb0Je|^xgifg6;&4&Yvi+5L9ketA=F!V z>fK=&cq2ui8{TC@Leh`~PgsfX@Fa-WLChRwoTu_&Jo-)eBld0j)-Gr_i<4t;fZ4O! z$Yn{}&AGU&Gf*K26d6#NC-X}lnXi78hzLFdrPGJjRT`oKQ}%2I-?(|8s&IN$uuFqE z9Iis+J9y<<3(o?J5~X61P@1?1u!u_W=+*wy86I#khRsPu9w+3!N6h;R77zDD z_Lz`1WiNgsTCa=S91?x2ioT#`O~>N}KK1_-uLqgHuz`!P6>zs40Umffy|VFeO*y3| zqkPc5tn2oBI6((3-<_%|5B!dp+{PzlXo= z%PYXa=`e`BvhWO4YG5HP3XZwdWS_N*Y)3x*NLBq}e;8ofeSaBL@qZO18#qb;TMwXT z7tOEATP+Ko$7o$STTHD;B#rGY(x1U%zKDbIZ7_tTT)#V59~uhVMVpMcA!|3+(GM|K z;`?Ozx|+Oa_gvTaW)Ud=6_|SM;0qC$$I5PxpMDlaOv;ItKPig?=~`d*G|MhY zw8Q6M8Grh0_b$K$uhn(^{@-gwQAL^FW}Vf@4c?k~H|iiu>diWyM9YM^#rSM7VRp#) zY`zawk+~#h!3&WAB>(qp=+ynf$cK}1EUxxyAOHRkmU90hgdvHn}^=c>n&+yC9B z@AUbb{huz)(sZt11T3r7_KaGP7}}l=RdEosg>W)7u2CMSao9Q*!v7dJCU7eY2V|*c z1rw@wg|-94sH+rIXu)cCC$$lJgdt^t8}GUGcHb4yH_6v$*LCaM=xjLUDKVYqlLP1? zQeJbk01O+OjCneMP8<~T<4%>bbth$^jm#9!aqI!oO>qU*GDLblAP(!J`L=c%0i$9o zz{H%S*mF+bh+m`zH~pS7A9w>$lES-ZiVs$k=Yt0U-BG}LCF2=f4KYH&J|i{X?;cCH zqL)VZ-QJw|A-J2_6WTlwPtDpa_O$VQYyNcL=kQn@#jK?qWZ4VT!P^j`J4BNH{bfDr zC7&$%SI?z7avuD2Fjm_Ijql!T&GzhIxeapHVX*dsE{b%-)1RVVB9ujqlr0%p6k>q2 z1gpZl$};RwCs#hQ{L(3P8WK_`tyYUve3(fr->*}%RmSnLgT+_uQ}&9<;5A&@>YG6f7_E+Wd;wY*ljsm_g8x#IqcXeo%;P?nSQ-Tu9T0F zH{l4KuAAkmbxI90G(Qz7)J4TZhEIlRpiJ|k%SL(3^ zJ2sYHnQ}oK=KD%r)AL)atO8ogt0)yc*TrKkoG3w16~33+XhlFfg!ermD%f;{ZrlMB z61GX2BxLosL>vsS-BrT0EZtU6HAG=|1cBU+17WmG+*~N6C`TU@optuWjT*1!Ad=GCQ|eVNw`)bBMNAw&vYh_`s}-dAfXa zaMEh-c$mT}tmFXi!)M#`;<)9ObV(kwH(0SW>AECQl>0AOs=EdvcNvVogzGy^`qZO+ zvz|hx>_g}-zj--4F#3%3>mbW}x&Oqf+qRbD?|qL8D=836u`+FfloUttZ#68vKEsz- zAO7|E=7T!yehx0=PrQk`=!kRsc9?U*!To$|$4K>ZF{|93>!g{H^OsL(jX@+cb%GQO zUrqN@SxiIac&-VNR9i1y|JmQmyg>WozW13YX}zww&hYNCP3g76d!Nq(nJCkn$K|tI zE`a(iz>gu$jp6GM*{z;-FiP6@-aUs~^F4?u(R!9cW~$Gm1s>nlW5!x2)&~FGeI8M? zfvSNu>0kEydmj7LJIS%zi7#UDpnLBr7Ir@f{~a&rl#9*;d5azZMRUprhASKf7@MuL z34jNdObjQdEV`{G@;;WVb^dtg(hq;arwh9-q)AsROx!SqE1CY(Owbif`dv$|0V)5V z4OouXapcrfkgai6KC=T1%CinSvjubqD0#sW=*CcIjnl%gY@KT-*j1Nt6X?pDomJ9b+NnK~)c{&z<|AQ$BepO6LysM(PBQK6_q*oS4?Qz_y;i-|B>=fk>s0ouhLg2$LSo$xL80o+ zsYDpFTSfd^M3m})QBb^)*}|j;sgc$sl%K}okNWL>eD0!D$RbJ8zR zlvqlV_)qfeGZvx$O%%PG(Fq84pxH9zrS>>@JxFS)S*Ro;MtPoqHzLLQbo;-m2p$Ae z*u2as0V^uJ6sQHs?V;>7#SS09dzf#Cbmm2^BDyE%=v5uSIf&W-$kk9>dowB-K(`D? zE-n5JmkP|3`#kQGHqVy_rMybA^W<=Q@89U-&=AI-^##b16K^I;zFCOKz%*nv zU#x06(?n8uDAv{VFqdl_-`^a}Ao<|VzvqlMe%bvPdSJv%GPQKY8qV8HTL->rkGOvp zPOt#wqOREA8`QEOaexO&9D9H7u_)UkqPjkpeB>Y&jhJL?3hcqgpg##+*EMc_tXUw` zklA8RJw5)jBf6vi-As|9OnK^`NPHmvzPrQsdZ@%5p&qxD{K}H>Z5DFmW{wyPz+5R3 z?u4T-8y*Dv6RA17zKAE{<8Fqe1df5f1 z>B?Uo-%B#d6v|-6yEpS;uu7AU(?9j0nJ@+#b%)WaeC(w~gvIpI`{|TfCTTIoFV~(|K(A{p{-rjlqCJlVH~U?8ur6_An6eeEqrSRE zgh0PUgA@TFtKfL+WjjfNp!yY+9}CgnDS!eKL;=CjI$u45{L3}x=&7r`(et$Na?X8YsItb|1!7RDQbE={y?B=hX?D7WZ8@1 zer$b)(?W!l?<4v`WtJ{QRaL;BxU+sGw~+6Z_V1-1VCd@~2>$A_*6+9R5Pl)tM`OD< zT&%@M6D{JAc5=uwuRyv%m<->VT7I5P>z-H5Q{7_t`Hpx$8@;VASFqS-%&K9~zgoC- zC!9}QP~D3E;Z>DFp8LJRAl>}bQ`O_v;PL)F&%z^p<)Y{Fx}75@+{71?X-uPV3x3=H zy|Y&bbaLrZwT}M$13>SPG^}!6u|1EN{1| zQ~i1A>L;3>t*6r_y)%Jf4MFV?tTFr$HanrCKIIWK^C_Y5e+U;I`Faqq!msBRG(&4l zWTk&W2D2%-Cl&yGvoRTAfI+OllrxkunvAz7D?ThGlvw@GAS}2l!Pj7@GO!w`zh$f3 zvO{)gZd^K!D2|4VvLEt@O;q0fgwM?#kB@OJjzkO*5_fz+L?l>FQ83VAxvU(IBDNK<6a>M=mf?vmZDJHa`g>Bs>y=?rK6rs#z!h(9ex^m@v-IyA^#} zn1P=E&C~-|XjlWOi#n00Z&1BYBV*75Hd$)bFV?)Xew2w&=FRM_wa=;@1FI9K<(y@HW!}Ty>J{GO@9>GC^xUGID#-1q$ zc52$EBt%DTSed6H-DV-gIjhV=pQrrd4(koszxKqI%&*>d5f1v(?*<}&T&l7vutOt}JA`f0 zGr?A*=gpVl)X`-<@QdL0#o-4NqAJc=*pBy|n&w;2?ZDj2;VqBqKvVtV>XnFl?Ta-q z$=}r)dC5`a^chK~{YQM~CFCRF&Y%N`1J$rA9ij%-zpX|!^r7!mcObs^0 z!{Jbi;3#r^*n+!WDqv#nuyhHe)-nQ(gB6!ynJ=FrZU8}aAkrP|ANF%H>y|wbM8PJe zt~G3~YyGqyrhnzk?(2rK$RZ}k#??(tl_luYp>iiio^#)S)8K;zWVK33{Plwi>T{d74F}a;UOIzOR+`02P^%wr*dxJz2Zr7)=y{{B z+!(_j?oiA5){86tj^$h3l<2NBste}8dPp1u6lkvXAu<@mrnXb@9%supvSLQT;=%v( z0@Pn?nE>_=uC!3a*xim!6oz`6d{+jx_IXGOUd-q1BZ`<09e{3;X*uPNYiy^yvFnzu zJc(*w=f6s823>`vSwKmmw7agR-X9w-j=Sm|i< zI%68};fAp-SR}=E?o<4(C*CPxd>x7r&s0Sb<0?z{hW7@<^_j2yOaJsUuB$oT>XMjn zMTIv?78?kZyzB4RKsiN5FNpk=Kul`<2lsIK=4^9$u)%6=jAuwAX6U+S4UF%2qb5I`ePOqB#bi|(YOM01XX-+-_|3Y`g+Sk~Cw)f$v zaUN@B%oT$F>r?{5^Xn&=VhgCcCzC2J{eF)U1M;^bx@HUUD|+dacm}GvNgD2-87t)i zNZTMapou?yydB?&OnJ1TLoU(QBPI97wLx?+*Ga0~S_v^ODnI|L}QnHqzv;XsELnkO}l@N5LN%*Ee_ue31copo_ zx?Czg2%Gy|d}3-vrZ~UWf9V{U4||fSSF16k~uTTmQIdoi`h1g zH;Xo?Il;1w+|hi8O7s9q__j-DL+qIh2a+~feLVJK{Q%(srF_A!#Hu|!;dKsqmx^C? zOmVg9So6rgD$UB5b~%&I>+$ESHL5I9)W8o~avD$Hr@z>GmvjpH?7Gn;Y$}g6*-nTl ztn^d?`#(lsF27RJ9b&Q^MGy?*FW!T*=gG3HK|GPr-x@&*(*cLQqR4$DvCVKEp_s;#dqa0uXX5l_}hH&63Ex~5lHh$Y2t|jg+=dN zCVRBpAx{0KEYBBK?jx9cX6y<)bAKF&gZ>?$D)+0kvfDP-E9u_`@PUr;R{`RhD^$<* zdgyOv`5Gnr*7uAZ_8AhF*t@0SYOcNEJJwZF_oGGkIYqw?uXS2FyAGw-mSD12v&y}4 zxUXI1@=27gv7N~hZVE)-KrqG)1qaKhI~TOAD&dvBoIdqUt3?2 z9L(OdkyeCDGP+qWrny{o0%VBqEZrSS0wAv@)y#jkZ5m=%hh&bthIqcB?87WCdDQhe zC&Kpe8?l#vl#Cx;j6kpms39F z#H+66V8-4dRKmUIym&dh6r33Q&jzOTv2&7I+4;Z7=8qwnYvn@;MR65x^<3(S9*zht`tJ) z$H!%9Pv3FA`?qG#wc;HA;(s;^Z2=n-A=GlW!&9r;_uxHDoFGb$u3s@UK794($R-)G zL8_vjoLCSM`)Hb3Gy$lyG4Zu8BLR;DfANa9gzA{W-;OPv!8xTnA)F##a#@5UUAtjJ6(S5Q_98O57ZE^Y3sp;SO zGsydp4ZHk8rD5SopuHW2RXMoJO1RCet zF`t5y&=yBuT-q-H-9Kv7xt&GrI`q;NR(-laA+r5Lo1yT_K#j<2E3Z*Q>AY_>@Ojbq zv!;udM5@h~zn&rqqMIjean;j4Kba%+!F;;Nr{u6d;RMeah`+3638k`)a5dGEf4f>9 zuCY!(x+FDk*#)dn#XI6oG%z3&(sx2PrT5P^vrFnNC8>Pg-Mp~{zq!cr_n-B4FF7jJ z>G`Wg#^Gcyl^-&yE9t|JFH5G|im5jlMg^#!I|qxg8rJBKFHSZui<>Iu5<$PQzxXU9 z_ESwkQ4ZOrHln)T^mjn`MH(jYMa#2^=PImn?(>$xSK9cS$iIbtS;~#C2!{ddiX~h5 zOk5uEJaEoE<$dofyQgECaHAJTh`v6%r=HT|q?H$0Ul;oqT;({=R#DSKHcUxf5BLm* znd>ig?8{6oK8@41hi*tx=?(=fTsE+ng6r?_ch|83yae^5P+z-W`$KKlbNtrEzSwl3 zfBN&}-oyTCOj24CD?@-)COvlYwOu#$5*!6o7}W-e1*&D9;q%MNebB(tzi}q6)2vbZ zhx@kW!pN2meeeRWxmi(Xd6GNg`?4P`T`1VEJALF~xYOjCo)Um_} zCe|q1cw7q?_;AkRlVSZppO}!_K{T-Pq2pKa_H5Eg6WPV{Z=bY-q_>QVvof(Rt8i|I zeZw`@(k1CTz}9M-Tvt4M@#O_$iTReJ(FL)vo^@WqI}EKnwUcLZLaH=i`_W!E_GG3u z-bnb1_JaLW0PpSLJ5GrqnJF$;PF!V#>nYkETNc|qp0O>-C$5oeve74vAM7|%eoDb9Qo#WvEtinw=J_-sE;_Lk6rN53Ai_8&4`y`-&@d z9}G&}m$6Wa1Qz9KKz@vWAE+6nFv)5e%v~d*#GNwik+-kC?A0Nm4pJdWH=!gDF4=OI zJo7JU2~$u;J(ve^6!$82>M-uZ1cKMU&2dMh91MZsVdnu%_)usA7i0q={wTH^{O{Po zzNTOUb=(OVTs}~Dg!x3srg!lT7BQpFFwoBWdi_Q_9XN3fOTM_JP%m+#{O%9JdQXEk zop-z~7H=2$U}WtYz1_x3t>JOIw*$eG8}=L+k8gYIG+9l337@aMRU+yts(etb)ME27 z4k7(Eh&vZ=l(o?o%j6soc=>zsTm^mCcnskRoJLeJXDa0@?W&}z=uolIqV^q^OtEKM ze=7tY?YBSj82&@HgJDZEaf}iu0t9=akXC+ zUmi9(ICU}{OKvM|_uSzO>M(J&l@N`$)5t&3rfCZ>yeS3L_}$PhDiaz>;}T0P?seA7 zSu_v?ZOeePNU_YYA>N2p$>lIY8wQ-;x_nw56_o| zo!s<**YS}D7~fxAp0Tocu@_a2`%`a;c_&){}>E?JUq%pzY8^gYL zo6tVdpt0moTnL}=O@7=OF}e7o2y|!?d{|6Pf|?Ndi+Am)=Oftp@2BEuK`98gW7+|5 z-s!VSClnaaRMUF+4D!6NU)$#gU1bVDZP6Kzgalf3@Wn`=IYTgR8j_V&gg5`^U(J5o zx0F25D8`_hYxm1Scb4Ln?D5N4wp)oLVJwM+Wo3Too>eT z{_VLWtP%Y9*83+iuO{8gO;=-Yasx9pHLX0PtF8v_-DInKkig9yw^79 zvS`9+HCYdh6S`kae}bKcAC=@RYh#E%VtZ~7ruX2Bb8`fYR_#meE`nW{%bw?=d{?qj za7)c+~GRFdF6V2=u{AY6aswXO&%YlW*CCs1dqkjOWNIQ_QGgCxwd&V zPUEBCg0SCn6)!!P(9@#ZC4K#uLEJbrp5@vLG+{>DpMqA0_3-^jN-NN2Hw65_8yuk4 z_7DtE^_n2elTh(#HUwG;EM$@=PYrkS5mH5G9ieu3j&imf1+zyN7HMGg5jCem1wR}# zD0HNw~Z zw^+oSZ#?BQC*QT*X6NA63?%ya%)Q=veGq$K@|&6K$th}c{s&~&1t*oy`Vw8J)=S=A z)Z3SjM>cJ(GLlzOeOeEygJElO?nRu~=#Q*BZ=?KiWl-lJ%n8aw4RSX%%z&=FkU#Y) zn=uK6%s^^~R|SGf4`pm^v06ksGM)hV?*N<40CfrKjeHkDngW}OxJBZApOU2x zis8dES$5bq$}jwc(m(uiP@Q(6(7JWq_Y3%33F7l0+ketsw5LCCl|il+-8i!Akfn56 zR<&0q*7mxs=XYkIX4J`I}WhZE7r5-a)Gyu#%@8J!yc7236b~T&vI{QC~q{fz*bLMtw zr_Dm)?}R88u?{e@e;zvuA;Y=o*NCI0ZU+YePiqj%_ZXX4>mAo^>tw3;@0lz|+J z(+FTcdd5@ey2c2*0Ce#&D3_Zb48x}`6{swp{;rOSwX!6c`Ia0QjzFP%~BTfPq$eT^abCBRk2V{@$oaWKqY6a$E)E5t%=%Wf}Ov%~zBoae=A zIDqJm3F%0j(Vlmf3l?AmhinX>_}Ng=>_~hGIbM{}&+jf1#vocZi}V!a=l`Lk3D)i* zPZ39dUN@M5sfJP%fKL|C2Zg|uTyKA}DFqcQ6cD0G!7N69r>RALgVM;_od50p-SJS& z5({g8p1nLVs@c4CM?d_&MZw9@DGLarY=}Xvw&z3QbcB4b&6S<@>2OSOdAidx*8da$ zTPAI4BwT)^KEjPft%<*M*9tq7n~&GRMcnx&pt~i-dB>0^HC#I5qF+U>eCLRf@1|~d z*h@wgUtXzicREKttql;j%`t1$h1H%%5?BM@`wH~5r=PiRqY}Cj*?LK3DXqT1tJcTv z`omo`ON-(O1d#D@W|ux~!ma zZNvBp{%NHkJxSuqaO>cWotF`J?m|DT+UQbkRx{|=Y#RA{fnLWFtBOnchp<3yXJg`{@qs8aK@?>2WO_Gso$<<@ATe~6xP8jqiRQ4mG^oD;Xuoa@}2Tj202&6YF>-z{Ad zWA^2ZY$H6}bB$yV*_C>4iX-^tO5m83F%07;-_uzKuIG@hG+qfg%scI|0u474S4 zDBAfqvl;O!_3M~hmTK^kr@)BsMOHmNvWd5$YdV%%eN^1=a5*IEN9f_pJk-nz~-3F;Om?e z*~{63%+GPhUK-_CDcQJK{#Bx@+%wof>?~_U#Y_Eg{tNP_)$4+BBQ|=8DtEI7B)cBv z=9?pj?VFGr9C*};m4x)qiMJJTq(@uPBf<=0y@-N8`=1L%1%TfKqbvum&mYP+OT};0 zGp~EawZEV2&L@TB-z%J6LhlIg%w`vefCk$HjOzi)?$TR*`2bugSTNw8TD(+=4OhS--5Pk83HHz zM*a8sxhI_=d>_z>aAw}95NWCrfc!lL=429~CPKs@-k|*^Dt1EQGa$o|##ZC8`K~?> zIu;lCmWy$Oguqcn9M zzRPLPeNs%x4BWU`bm97()bBV5@qmzo+@HOLelW!9LML)X>|sHdxzEF#zvkPTHD|?7 zovf4*gEaO}b`!SP66c~ZFHqviX9Bx4?1q#M7k#|GKa9SByV+1BnN?_YV{Mq{`&Lmq zCK>;QsT3=EQB2nGTn>(aTmsyQFa%>*KlZ&mcXap64j-iU{PRrg3L+@sto3c^?)C=@ zn_!Lu=@)4O&%onUUTC1&fH=`i_>cDd0eL!iAYF-h zXeIbAG>?n{3bf;(KV3H$wy*65pW8YU5kzvmO+$T&zdf%9R_fwf~c+?0L- zHM9PnL4NF@0jSrp6n+X1=A}Tgd*0ktm+mei3n*;-_sCn<3F9j!ShyRJYXPMKVuXDz zvb$g*_ay`$FFc$~x;!OHl#8-WUz zhjp#LySG99c_6fm1`crzw0-lA?a!x!ckmLl##?+*fm zy?cT1r5$dWP|V2z(1W7+=G_ml!>uAaN7mA z%rj9|l}LX^jiayU7Hs~o`M%SaWz}{x2FhvDOC+E@>M;zp{rm3~NNm-N#<%g_|H_}k zP<&(wmn&!d28&iL>pvZGe#jl~Z4P~3hVmra6jz9xukaNE>%*|`G`QBC;4{o#KJ8NRtKagP$MXez6UQe0w7Mu8lk<)>~17=5(12R@tm( zACxjsv?oN9<@b}bg`c8bsg@dAHs$Y?d%r+vH{_{_H{=M$^YunF56Nr^FFC<$ zf3j;Kcsf}b@iw4XJrnsnI`@;xxJrUuEg9v%m#lvj-&>_0I*guN-V0p^+-KG69Ul!3 zc#hW<94@N$mp!~vF%@NPb}lWTH{mi?J?NpLVDqS@(&Zqrv^mcA{4T)7`hxQoShe?=zWsUwO3GW_C{5S9mDk zC8AwwKsAWD1BJR}WkZZ>=PsWu0;-R5)vChGh?o#a18j2beKBP6y%Blfqlk$r=pU{W ze(-`Zqmfko%d6p1wLKJ$yjY{fbK!&A;8=1v?A^?wHl4={k}Z`B;j#%W@w;pSj7|LH z=TY($Kpqp-&A$$Lp90;8AaDoMdTl(sUuT4kaWTaZ+eOch&}0#)01W|U1ko6Vz`dt{=oW58N&iFK-jy$kK`mgz_FWPcgXsjJE)w}O z-zd?otUZBTqsi)TZX>68jo;e*4X9^^T=^i&GwT+FcIXbGWV&=&`+o)4Oyk;?MJ4W< zm*sqn`lQaK;>xUn8*0(wQ5C)%TnBg1osak2UJ?c7t!w5i)0(MR+eZ%TJe8rM9sS6X zs%4yz2e!A>GG+VMh14gf4|JP77E}EKw=N*N5bANkrSVF%CQWQCDa0%*1q$6fCfb)bhu-Rz${|L4gM#oq1XthD!a6%%LU zL+r)+tkn%)Y8+9*wD3R5MViJp%DR3pEOaRokQ>l^xCBv~<3nBLzz4LY5@V(o2c`jQ zP=&t)&L)czlY-Dy&KGso?+C5PeHL)uy?uVp%$a8+R=?0y6Er#^j)5|#YJ9IGb*Aq@ zLxJ8~ie~#mFjE8HuYQiw&8KIv7pPow3g-!=-T{0HUa)Ts3j`W=V6NPCR$@jU8E%&L zLd~MEfaE2fs0J;!yYkbOxzWj10o|?#g5*I2Hq9mbQGf7OmW}g7)fMvX4}YWTYnJgo z@~0N_X!=WUwx+GFKf50_-O=|Sif89_#>mBJcISVpp|&ypm=&p0lkTfl`TPA%H@$M! z_A)p6mQyWM;K%TYzt5m8{}fxomB}$2f&=IberG-*3=v0&-iSaKYsZmUh^$t(V|~`I1SJ3RD}MdzT;-PILG-1jDt<(s>zP2bzIZ)7S#c06idDmG5Tl{^7Qg7|uXhAPlA)!)Z4RZS+{&l7S z1-2^{{qq!XBo90?pj^s$%i+E9|6YK8YcgRJ0g!-XKUWrp`a8l8+<%Q6@0?g)jQkqA zbQ`0`(LaNBX7ra=geJ zDf9vhKU$v#WZj3#c@{&kJi}G?9u8q-7#$Rw@ICV8pmsBXEfy7*VtH60{}4Y+5Xwq2 zLshwRoT6U1Z(WWUX>|)Phv|TNpQ~F@#pk!!aEUAHUJT zDC{~iM8~A9wM`iMK*bL`RpjSd?|1EYk1__e=+$^B{=MtK7bnY%>iB{a*T7j)^ z9{`OTtr8oLb2=tPsTRrOdBzTSO(JO${sr0zOW)SjFW&8hB^_q+Rs7taI>2=Yhs{2P z{55S$SQ(my$mi3h-aJ_g8H)nsK+t8`6ZZY_=EKn^Z~EG)J&cDN1y>P}ecE3_rg|)s zxpF$0jv4(1tlzcH_g?x?CRth`T|HQnUqaFL7Nez9S;p}{v^2Lir?P`8d;iwXhXP$9Q zsW#p%&OVL#rntgF{X*cfH;$1g!-*#G?jc))ZzDHePd)SB%X2j8gcFYa6f=nT*J+tr zd{^s-mrX-}(bY!*UX7Liq-$_wQX^0;rbeaqD2Nh^2@Zj_bQ~8zP>GVspkzBCy@>OW z3SBxt9{(&s@Y#YUCIjlwIq{*999I*`x2Z>G*TmiFsmVF)r49$LyjS=8E2M-#?t z=ICbKlYHFUs8t<-b^V4)eMRxFCFf-F7Tm_**P(Zglb`P%Mv6`*0AmRSiOfB3*Ip0K z*YYvSJ*x}WH3}&;fL!-(oF?qyy}GNjp>gOInbKtqidvP#_JmEZ>&dH59c`w90|l}JxG1&XD6 zP`d6Wnt{CBbmbT2elGD+t4T!byvbpFmst*{4~X?s8-C>FrC%n{Zv3*OMtxA;r& zpL0(HZnn1*8rHgt-niH4wkHFZXUQg$)i22>+(d}yl- z`4uXdr(Ua!!9rP%PVy%-(lvN(yq5VbmKjB}{05{E5w~3yF})VZ2b%I{9-(sKzeH;! za*%?Ms8n&-Z6+`0Fwl(D3FE0=}0fnnM4`LgJ_J}4Rnow^nx^zc>( zILE>LmzNL2_wRen5_J=veF^u_{MKRhkSQ=VRmnHlGArL$l)J*qD(p6|9pnxl z4VR!ctp;^fLknpJWTS*-nLCiu3${;GPm9ST8h9Dm9~kdd$U3_Er;tOg5>2Q%J67UiB2w?le32Wj8HSue2Rl74kH!@QFR5Bw%X_%?D-kfp#5K5_1`c(tj>_)<$3pp4)U>x6s;ez!atqZe@4XKF zSfkt1e!ERL^py&EGk^#tPpqX~lH6<$=}1K4+E9J4dCX9kkMk$!tgGN#bm`xf{T3iZ zy9MLSt-BgQR2jc^$TK=uD7$+vb~p(HLst8RGTba5>#H^ zy@GnStvlG72D&O==QzdK++DFpMA6m&I?pZg(y-wPW>%4(UUMe3b#$QZ!W4Q30QpO`mHmas=oeduU zHIx5JmeLFKduxRev;tMhw>WG>$7Gt3lk{F*<+(JNt}g}tri3o!u2BNX+#5pk z%pOAnip{ZY$%0#rs$IG0Eay)l;S5P_`IEU{N`s91j9);n$QG6%h6&j%0#`Y|F8h0a zFa6=+n@;%3)jTuv^4i;aeWkfj6wgXd)P;GP#-oqS+STvdiIQXtC#3xuHow8l^||DCS*~#u`fg{}pH9u0+3gY8hAFlS59KA? zWvP2<*?k^ZUygGydLG;jcb;v_(g)$~s68t`Mlzz4v#tlGc{UX#PvShq$gCT(7cINY zOtzuep)_HB3jAH-5j9w75X=WrX{fP27`a?!UkofdeIrER0ZtE*5ZYKhdlvninh1wA zXR>E@>&I8Xyf2Om_S_og%QSzN*sTahM(7XbPtGTO$g5VQFr5{hZykM*C6a77l9Iyr z0pX6S61(NVD*g0qwV0%1+`P`91E+DYf5;2XnTqWl1CdX=DzfGyg#q7(-yPI8(d?MA z&AGbWJa5u`mE4dg@fQl*pq^Y>{CXAz!8GPwNu!*{RS}{es9oTAYi19MGcGr_kr(QY zKfk2`R%g@pqLdDQkhhfnW3KZgvZ}n_kIFnibbSVuOU=PL%Ja+5X|aK-2gs`S!nfnW zMnz}O1~Mo!W(NPtP|8o2`V#bp+{u1}9EuU8K6WD{O4fnNv!yK=cMHu zsA)vC0`ftpQS8WfkpBE&COGi}$~;Atp8trPEBJ1`X+&Md`?(2)YH|AKjv@TUAf~Bs zZ?^sAS0$Ms=6^GXQzUct``s8u-{U+h^rdnamn>_8xxa%Y)md>;v^3`OI};qy3MHTa zTAYB%iCzt@Lt}@iC8@)@>P%L<_qb2cSoF(vagZ#9ZC@JMb04;Zy{7^l1JLR2QyH|#Fy&1S1xbm?`$_a;C*`|(Ssu~0# z{eQAt9lG3pg=9U;(sgCgrr#HHz@1nCKaNcC_TdpQCID&os|3X;2)ljK%Tp5wJ>I&RAiTUqQ?FD=n`lySTA7ETn6z% z&EEZM_SbX$N+_5jXiBN#$rh*2(54QF(G)8wO!p#n37y)t`lMu2`j}mg#8?mzO_q^J zN|UG=f-rfzFKeS96owkHNu^NC`rD~x6 zfcS%)A?SYs;W1p@|vvF;6&)b*9_tT%K8u8(a zqX!M|w?**%)5*o3oyWv$V&FVNbYG8zj%i;ET=+Wk3%?|fkH?|WrtQ@jveR_`Laf^^ zN3C7m_7~Ngc2YA#j|a|5ZS}JT!(^{dYe(BIPC5oKf^iQ&I}@ZVE@yUK%wX)|x!gj6 z9*{$AIk`MdI$;_{=J7K!`x7^A#d)jhEZ}&d-E|rzqy7@R`Hs~)<`X<(yW75F@WGM= zZ%r)x8~ym{>npJ0KA3a1M&MboQ{40y72M*`k^w>VD8}&vVx$YVhV~r!E2qk+l%&QJ zG`t-WSV{kqw0!beD{k`@lD{8!r4PoqjNAx#4j~w8mph49PBEnL0KX$M=TQCfn0pUmk_C`=oGp}_7;B}0b4wyNOB?KRZE6G z+qWZ*&6O9lYt(mje3iJO+!&qz+01-CiGqQ|3CN6NltaC}@fz~k)^6$_VO#G6vwH6~ z^9#B&M@q`Zj}uA=PlHd4)e1IyxUz3lNN97%`?tZGn-jP{<>v*Om&#kmCoz8CRcq&ZX0GAN$SxyFdE;%ej1 z&6NS4%0RJuu6b+Uh7N*qk9>LA3`+lfLVh>O<4_TqzXx%Fky#^)#f#c6a!wlh{*dR( zH_phhts5U_6R;NAD{WcRku$~k(>`>f~fW}0!1 zfAXzXUd;1%9T;}kO>61=H@hlIL=1g$Ml~a(M-0=4H-UUO`{M!Ok$tU;zR6^HO_hb) zOkp#oGwDV)LDJ>Vwx)hh!b|RPfyVCxl0k0`&x+3@!OxacgSI?IsrDEwj}jA6`yHz9 z!J$8M{%2V98)X?qO-QDwe0(+NJ~-Dh>CzzX_gI&|-vG@|LK%UoN<{@HBSc$1Ip}H`za+rk1dy-ojJe`S96#|2LuE|E1aUt+Zr)+)e!k%lK0@(ZlhvVm&Jwl2rR%)5?`Ko7_6^bUW;kE=XZa^r-~A$wV}LcDNuS^QB?sCbm$Qz?>I!BcJoR7Ij>VNNQNw#V zBnV-7ME^598FNd9Nk9G*eo(Lf_-B>FL*n&RB=*R`<9DFZ#<}bl5%GT=F)RK+?!P6u zf~1a=pB1`y$*o zj0+ZZRf>y;957aVRqaB~Nr={Qrax)uv+c}}GhvRhclELtBaZd60$LUZPxDC=PQ|C+ z{GU?s#1$dnEh5g(>CVCjBeS1}_p6JghnCQ2ay+}b{zm15@HT8qzY#eK#gP1u?w9;2*@>Lu zRmJ-+pz@)6k(c8m6e(Fdl#hx@52CpIIl0-j6_gv5%x(v2lY#+$D4u!hcN8{mSSr1) zvz?LQ#a=Qe9%4e9+28L^-v$#&duD-lO;LgZJ*^2R^+5;jmHw>GGL+G)51bv8&3yRh zF~+6bEaVh-hW^-Z>PlAToT`YFe^&zmdZl}!y-d_ ze~|S^?Ds^PI#_*Fr74x>@s(kXZ$TMrV|5{i8{P}i2XE%HMta@jiIydTA0>L5I^RS} zevTh-F0r&so#Z#+lY7S#z1)jDpIR@?{*<2PgLMPpaxK z)JyvO#bWF)`UOV|QiK?v*06YZWri(OF5w!LMtv)53LeES_rPbhu7344*tHDhGdIY*+wfjYR~`M+an3J2z_GXz8NQyVeJ$#9I|B zBaWN?bRXJz=3JG#TW9j<)^8_*@}T+E$b(K6o47qKbor=Vo}oyxQQ^}$&WpWxnt?x6 zI+{k0*Zw8FQ$%^|2!5{%X7432VEby6-nHpSH~-u!TC%RLH28hU_mWuRH1wUi6|ghG zQbn94s22zTb4B^4B}>fCLmMz#CQ4&v)yC1o7Qoe{@SyoKltspf%1pZ7GMMgDtKBdr z(V0GE;EP6f!VM++vaU5T=G_h?Dy+ca8U3<+Jm>1#UwwP$Z|I<*e&IBT0~IC|wj@k*fY)sr%}Xg_8b)>;pp2XM9Dd_+toRAg52#|V_^y6II> z3FW`iXRSIw+)#}L;_^I_LIn8bdz>}F&alS|XHQU4|7nexHX~1Qz1>7kLe4i94{5>U z@dwsN&bCE0d)}>Pm5H>{3AYmPI^5or;-g$eyE0gNLI1r7s_(@@WRnaNU;%|m(c?cO zKa`0?%;rD_M)G0u5+3w>Q*6*>mMj}0GOD3Bf851_Y_K-ibd>vX{imtnB~1AtNBO z3B%PZDwkPliu_^6Mmw26x4-RC);Q;t%#Q~#t*_u`K>eh_sIN8HJ;@pEVqGIhEVICT=5Iuv6vS%9@}0Z`{khf;@v zUnl#87x&lvlF6=*_~^*LbM5;2J^j8*xGum1xY&#d6+y4(7BLA(Pem8(v3YG6h&X?5 zDbwr};2Rw*=)GMWe7z^0o2WDlJqRDG@Ud${Y)PN1jBQ@Yd!SO^`4lqp6~fp##i(CG zPC{?dKPcj=rSVu3+AhI}Zz%bSm!X_CM#=Z?8|@?LKm3GxgR&JiHKIF7RSDHbDoeCa ztH+t4`!e!{CsSGRG{-3U+9E=Zer zUCWC)mi-5P;!ot#3NV-Ov@kpl4B%g_3#_QJIA0M5SAAk56k$n5X#uf2`atL&4BTIX zL*9>SUVqs2e-su!+wdTV_lye1!~05lyt6pDFD5_O{zK0j+=(6czINv7>icZtAi?KF z4ygijXWm63ZWj9HncIDE_ph?}p2L{+zg0yVR{ZFb*ozU^=PLg9k*s9xd$aFhYS?n!cl)lK z4W9u$ZqdQZ3kG6<&d_K#GeIU+u_}afd*KNWn`;2}dSKB3=F*YrMvY5OTywL~gh}?m z?-!5gVkXR4!k*Y`eN)`Sr)?Yh2iylJO{%f4f}ZN%%xjrk_q?~9Myld!%TB*rb%0rC zvLR;wS3iRIBu4L81cfWnDXvt#te@vXo6b8GLh7;>E=mx@2xR+<`JG@khxurB}#<84qLLXZ-80nAcq{sx-?Hiw>qTY~<} zOdix6g5YSuZ20IQN`4k6+DI}?)|FT-m(ZbFy<5u8Y z-U&e(kq2}4hpoCs)E=L%8GD^z_3yD1v^+LhkmFiPXv@tL=ADntkbWxv`9F0H&)(Q1 z{v2KgFB3icUcwdUQOWn$tKu-poU5iI%pA+T&gb);}jKBU!Se zXjuO%;nRv_%(P5b)pC;25~GsUOSP?sJ4PW%Th4(}IFHgU%HHKyc z7s!$G7$4p5?w%S}7Gm~DdOj_D@1|be3(LMd-MDFH(dteQT$iQV)FM}y!wz^T&5S8!zCg6Umdsf{uQ8htR_>wqmoxM59vNj(|54r#*=4+llzbTd+AcWoi zWS7axg!9Z(zCFVe3UfM_%yq%Ju()oPPu3&IhYgr`BNhvYJ^w{H*8Qw-rck&{5E@c! zrmao{Cd}xF1rK7-pMYALb6jT_=W`$v1|8m;a*RQ0c2Md9*?;(gz(6l!Cw;@wFR;K{ z_y|ZX6LxYCq1pJYSVrsxVS-S=i?9nX=pXi&?{noh*4xmqO4YwSXzD$q0hyUKyQ$Qr zADJsg`8vj{i3HydNpZH`x;RO_Ly;XEbDLcXL1DG$es--YO#R9Mzy@>pcKaUZ(EZGC zw?$cQJEDjt@4J9$Mz&m$`oZsF8J8}JESte(hC6CZf_4=NOqw$F&`+wOK96dFRkmhp z`}b9Qo-<*)_PWOKn`iAP&pM=$gOg%W|lwRM)py62-!N5cLb^HT%hz6-9^(&G4W*sGj*#{ZPweF-7g z-AmeXi=2jv3CP~cXY0?Q!>rUz&fKqKTG<xB5rqP zP9V(WXm{tm*#aYlx@C~4J;fS(Vhl#`JgB7GdH-m8ezt63z@kA^rZ2SLzmS4a-&veA^XVJGpet$&Bumv#?UU@AUUGvq*^FtRUrPtQ3GISP3IoLwQt?AL; zdgefpo5raLdSN-4Rb(Dl3v&h)p$Ganm*)I&h~$I@?mF|=T<$v)r6V4RO3!4vtV;-J^6P-HZVu zlF~h*Al)UcbPwGyASEE(In>ZFFw`(J%z5VXto8i|&JX9Tv+sNFeO<5XLDJrAV9x1K zMZw4V?s^AKSIgEH8WgC&s{2&V=h!13IVRgFQGD|q`jo>>eRqweMEP&gFD=hIF;M@OZh9;j3yyd?-snFXjhIq8Ep`iTPIHh^l~NJ>U?P5RF8Oz)?i>)pr}0|cUflq< zBI)WY7NpxT${}ag`55^aAQosQRIsnZWu6=}&!YM|41J9_euZ0~6D8qOyc{d=2IYPdbl zTyZf-(EG3M@Zf{)8}Qnz-@q*Jd$OTJ{*}jEa`ncOFF*aot7u7PMo2L6 zTw|TW--0_&Wj^M@C(@Kjsva|19jc!Mao`+a<5!EbOn%T6gFU$jHx;p%#aVuo<;CD3 z)*l0A15eK8l;Fxw(`rMrb^MBOA}h07_EDXg*WlT%yoWXo9W(vT9apPxyYiP;jddnf z@EX5b3D@>V91C30cq41;si+z9c6W|;w$hC;`v(6l#~&jdUI&!XORv#=G)q5?a0_<4 z!c=(h4pd`~Z$;c#G)Gz7R#~0)Og*$wGf*mWvx@vSvP=k3zBoEv`>r3yMp2)fpy`Bm zcI()_;_!ck*mfOL2ot^fW%G2kaLfbI_!(}t`>E8gF|x-?wm)>zXA_a1%tRLCX`6w0 z8n{zFV{yLnhlTol(x$ z&`jwzw@eNpkhUfFpP)3HzqCQcxb9GMjmgrHEneRRO?5^5;Zf-k$mFV@Qh1As`nC)FHqp zX(g~3wMF3R<`C+5hwj4buam}OQ!V=Cr=DX&IN{=^Glz*xUvfeYt|3I(+nu2x^4uU@%SQC{znGjL|@7teDMOWF&g%+rC0V zuYW2RHCLF<=_CSG=h;nR8pP)J{-qcuLQFa_OYG8fI%QnaYo#cH#-weC!SHo)YK_J2 zrhcm6p^-tAPPF+N_=^Be*q~5rK>G&9YEkkgZ_}O2vkbT<)=%|b7rOVTKOO-IRb`?2 zrTmvOCCw<))Z=`AtL3p*zVNUhj=p84)4fIGFKC8(r^+z!R1l|$D6ep>!y|;h8eHdk zsGLI4Gp-df3JuY2cJ5OSYE90BX~5GY;AxKe!%)sJ6#d!H0GHEZ?w*HD6jJ~d+&K+U zwWV8dF46KWGd=*MiU{5U9t;1po2!?{ses*v&<*}{42Bo_7s6nBdn)84xmHVWsH`-2 zSmEoXo;6>JOlJMwLpqM3H=kAAR+M-?|EDnw&32w=5k2td+T11W|MlUbU6vk-ScuEI<&XS-x6mdb`Lu2oZpp-QnBHrQplY3fg@pTjYf8 zAjMgAxy~wj{)aZ35h;vD9GVL+YV%rUxLzamwkwlO?gWO!ww-vtH)b>#22Ov@X*{Zx z*Tuk6&;L;+R{(NXlK-o_+Gejm-Wq4wg9t?xW5B7Ud$+bL%{e7~3f5bGf!FIA9%ma3 z@OcrmnxWP+sSO15jd_jEd#h0WO!LO+nu+Bv2@p6-K-x{3*Y1h*UplwH7S~suI;Tht zGkvoz9q}IBPXXW90na>MM4Z&xzD5}1+pB_vm+Hbhya>B)=g_> z&7?n690K;sn3{3cK;&d_2lEVx`Q)g$iaE1fVad42!~}9iaH4>Pma52CKyfa)(7mc9 zJJv+*>wj?ACUnw9(;of+&#h_38X-LD@&IDR(CFyOm=-W+aMv>oH*HpR~~K zYTrcmV5}IKjT?4vDragnjxoyc@W+;d^j2dQf05O@L2GR)Nd;*xl*~33Oon0RH{4#* zpB`p-oD&5`;MD>5g}!a3p79IF+t0qaiPXR5Jm3enb?G|N3;>C=gI)(O3rW#wb=${rga z&nVcMUy&SKk!jMwywkJiN;%bRN29SX1N$j&AT!ZO-`nhv!20U_8?5p`iR!gV{m#)} z|HH&M#mxHaVCQ&69=>4NiQLk_=q_9SNJ&;l#4Z2 z&>)<95JHw#92V|{50K^Cb3c6IYD90crjB>8xr0=Jm#q5e)+&-WWygYn{7%5833>{Md#!isvBZq!)zk%;7idZ>D zLC=MEcZYk0EPjeG&;6l{d35CB-(pC;S+djre6I6kLGcnkP^U>)0LS3?R$3qRP`_r5 z2gn?+rj{{{et?YA>m@HMh5wF*YCo@ml7PIk$9Q_4lHjK&#i*qHW{ZedL_1z7wPs$) zXo5;~#Ad5?xtPPlxi~Y~JPMys7mM=u6Us6idp9}W(m9-?Dsurp-nBX>MIPlu_@59W zK5w+fFh5&#HAs0`o&`EC*3_zGys$lgEyeS`@utUOu_(_nAJ1zrp6oi#2m<+!&zTVxG z4VVl?F8UKAOK`|;`1kd$g(02C+TvRPdWvwMjA?G1R2(MInyViB9r+#&p_=)V#_WX18vzB^|Gj{f$Vhd-)ci82Z6`;K<#EmUg1 z3jff$!`BNYBJp6=Ft^XhN`CwSAGyU$$$V}VgV4xBugoVM-x4|<+EqLfqZrW<^7|Dy z14!T6P;y&6nQ-JaJ&~dE$b%TL(@<*fFix`}!f}q#ZT<2IfXiK=@~;qd)zmwYj z{f`}9kJB4StabJHY4`)1?l(C<8xG^@J=Dz`#^YU<^AjGR$5m)PUr$OTrh+v8?Rp*0W$EZUa-hBJ+X-@8jFm z@_>w!+($g;u(YA_Fqfl#_>rXQZpy4}iYZhe4`l-4AIgKJP&0PCcbtc<)tX?jFYtoy z|AdA&VJxV-5Fx3bCqfC`R+k`sm613zhS;6@+ejn)Cws&DPf$?Xr^D<1ZQaZgoHy{@ zMd)pSZx1q2KJr^BEApT8Gs@%gDzA88hmT<&e6k-m{HF({+iDjHLqo)#M&j7^2xV~l zq|)E)?F@eE!6WGNPh>;$uaGDte94IO5*T_H+yEn(39jcL-Ch>rvTFHS6y+3tazlX% z4=ZETEo$_o>(OYpu~S#koi;!*6D`&;XD726IREpr@0YB5E;oakpJ$oRd|Fo4>&@@< z-`0?t(_u6Mv@xlZ{r225bF`aZbTdCX{t9C(SxdOpF;a0G^A0YM1}nmNTO_0(@6t`> zV;PTxZ(y4sV`DmfuL7~YEY~p!}JSZ6-&Ix zoAzD$X-UE0iloM8)XCre5)8;)!VNg1K`~xKF0V}nVB?&FFnWi-4S!7>fYO@`_(Rxh z`~FSdhwaq_#4n&QFIp~|c?lz=DKL!U;};?DUi))8`c-5ZliwdM|3UcJ zxXZD&ka*W0H3#!{|J5lankC*RzgH3|L;i5L>}9y(7g>U30#`hCe{I8OoT4t&IfbC2 zI)?^bd7WQH{urBmf918XVqyPM(>Z>hc<5i<5S6_3Q6xQD+Id{@%Pl9_fYg5754+zk zNHfF(^`EMzNY(rGc;f~Owv_0K+*RQe18^~NpVlOb6O(}?uqb{*Ni?1183oj%9QOg? zUU<0d`m`*SjyTiE@8yd4>A?CYk!w}Y3c|e32;Zi2a7vrgw_afTnNrM2|Id>0pb;)G zW%4}1#3dM~Yn*7eAg#Aoyzd6?urIF}_eo-UBK-ibO)}91?=T$Svi29NGZ4T#YH}jD z8kilM=A$k@zxxeFNO+$R)b#YXCc%by7qHyPpA9WB{667W;egne;vh7E zdkV>GCvDL1pDyAx+4UbGnH*<=E+h!M)9*9avlo!~>|*|&bEMMM@V?ySufv>KdrCL8 z&-RMf$Ja$}76O{yGH~)acq~RRXI4cpo}TsL6&Vgez|7L_G_@#6H zfVhgI;o0fi06Nj(;E(NNoU06jkhQ{bSx3+5 z>|)NOm4pdTW%=e))4!yy4=Urpdu}ptoq?#AUtL(`mxIQGUIt;TUo3m$NWOPBfd%k$ zQE7~QpP#Nnar*&;*ru2R!!7VnMe)^Y+yLb=I}i|AIBR?wu$hj72g&TW8G5*~Qs`t$ z?QJ|3eRv**r$@H*pP8+j=W5MB zSKW36fNm9VK$QVZ0CzVD+TH|s^~ zv(2!-pmUfC^Wa814dLeoRdTl2-tC|+Od2WTSW?C@qnNpZ6Li9BBdM-czvyi&jguX! zw;YRNtq%d!&A2I#29c_sKD-Gou8Lp)2$SQ+GoQ>Ene&#@%Zx|i!p7dAe&g9Rg7{vp z085F0>Pd0Lp;+wukD1lK0p@NP24a#1k$&~!H2x&&?Uyzm61~3_X)Q|rbT4QdNe+oU z{wM7^%3Wt26O8x&ELFJzraZwH$v{`T=~Si7TD8JSk>Wu^SF^IsQBrRt(g z2|x3yiyayKRbEXXVAlh3%A&i$6`e2#Z&Tm5KC%cW!CoxAkPjHB3JmwIXRXhBQ47z>Ugvq;-D0FckC(i0;q@OGptX%56kCX86c-<-py?agtD^~hiTmTWn zTc~c;7T1J<&U3Oa;l4a4NH-PsH3XlizmIK0)Utr}wkq|j z60K@Z|8nuT*w0BLzK&2Yn;hG3zd8_UvP05Av~Ch`wjOJ^Hx5@mn02o@J9h#dz}&RU69v3 z1}DQDD_o`z)wkh8zNL<^M}_RK~d5z^o$Y$YCV0nRc)mw&Y^%VvM2J=#Mz`FeIjHE9mG@ z&V4LmixI-S89*Yf4%bwfVVleWH!~Zs7bwK-{fsl-#hotZHXOnEKiSWf2uyxlT#@@t zYVzQfGN*Mz?hwGW)Ww{l@o~a`4j}=*Q*={_ziYz(-tvt$X-ZwjPj!=+4=Hz7qd?gm zzr~4Wr01!9h~L12jDXEm^%#%c`tk3UBMA3Rpb@68H&5FQ>q!`8dy6B0`BO-XhEsQY zj@vZ>QhdN@_f{S1hq0tP7QEs2Qt(Q`&aU9CmR6W8f~l>%(8w;65bhpu%hNJ*NTead zDmsc+f&&{zo@SI}p1^+nAJc*{R%pWc7;HioYFwpn^pkETI|S4AGUiLn8AGziyyf9t z*#cL^UG=w?Wrue^TEjb20CSFbhN~)!!GOCbL){kvUe1?+rQ0A*3UxdkX72L~|E;P% zX0KQ0xVv_~TZgH8KSNA{FiDcfPe!^Tz+pY>M}BfaDDE188t}zWCmy5`8;aqUHB%5f zl@jH9xMfOS`!i`(tdpVSq`%?Q_=680Ka>+mzP0`LRqs;g>|c~YjNN(d4o_7BQQ_N; zdU=%OqZkXN!N6L!^EzzIJ+_UUy5p8Wkw|foolnh&8nYaZ(WElSso0OMN^)5w$l?dG z@^~bA?0Pq|3vLpwQZQtDeDw`vKNk-Hb?A{5sk)AQWj?Ha9{0JsBs74@3ZI{tqWa1~ zv@d3*m|LCG_MKFQSONs}<*A-f><=?SU61@xHFcwHb-TfwL5WikPn_6i2iaCqNZcAE9H%K-ovM}UR=wY=dlKeEcI}Eq9&MFmfE z7^)G%EaFtcG#+#h-wJUb%*{w~3Hq&^hNp4n+^Mya`%81cr?kx&oB&&^bkd#^LKi z+PtG)WBp=e*u-eSVLCpoOcm^4=IIbK5S}XDy(nu?u4L^nr@73~_3YtmsP8j7>AGY8ujq zqB)BuVA03>EWpImiX@;HelV z2KU<#u!lA*Y~Vbc#JO1t5Z9HshJ0mlh`9+0Z*wuJJkKN>FX!A{e7QQW9`2uz6Y7A zr3eui@l%TzQB82C{*?=<&)ic#^N#tQm=Ya?r%Dk%<3ZjXM7NRjH?_+xO`ER|lJ{9e zZKw1DIm`Z`*}o06DjQG>k4wF*iA%D-V1y(EyO2ZDSe~h#1Xtj8_Y*`kSL#29amK*Y z$H2V6G+GgbOprT_hc4)#TATfO{bKH2{2s@{N#^ae-Qvy^`x#7~Ls`Yidh27`i%Nghnz zUoe?J0zBL4Xz%B1JRTK#10Y8burr`QG77rElWi4uA~yap>-QU*--Jv;(174Ve390{ zKN4M2{Vmy(s}uu{2zr}6&{=f$_18LP;VK2Tg)EG&Yf0i(y?5p_OvJpT(MXN~s?W5{ z-5%a1P{(r?q(a*2d^J`s_GVGn-0vWBRFmq0$-#mDi_p@W*Zj!WnQm96v&ZGn|8~5U z-adLQlyARN0o979BJXF`bUckkqV2No4Z$Db8~$0GB-1`!?}lpNi=P%ACqo>qV@3}6 zH)BDxKg(_z;)jv*kBU*cM_$7GSAX_=N^#J21Y0VWErQ{c4s15{G%Nxb2)r;nNZWuS>3;`k zl5M$_YSIOY17r627`TDo@x=e^Bth5#tJ12zZgq(62-C)j z=2_=6dbhQY#IK#wBdh|~uBs}AcPoaT-raf8dy$=O=4j51{3qsGGC})8I~TSIyRA|< zmlgtSJ^yJm`+56-6xXypcX1_n@6Ck_JYR2y5d~gCh-Z4g7fDh1!EWa@^>Udd#QzlP z7V&BI5EE;%Wb=#A{oqU}xECE8lOP~b-kiWxe6BJ}z>J5xQC+@V)8J*O_&7(9Ao&Sr zpdY+u6nW&oZZEh^>DPI(rvTLPi)FWw0xe-}(uej76R{Mln!3$r)o~7T7Bx_-gz##> zaNm^*DUji`CgQ-H0PMT;dCHm|soT3g1ro)wnN}PCB#(?47RN0lyAP}fQvGB41BrSq zO_m-rX$PMIdmuc58LVTcy&`ETq{F+`y%Ekad9mlf64I&VHSfOLAypFrqsRF#xTrx8(_U@b<4AyY zUG$qcWhdT;2V3!5#Ik~81KT^pEH>KF^5oA%=u>U0hhR*o_fg$mFP?5u*Q(diq%Ooe zA#<62%&$R(Jx_@|2-fLwZg%o^C68LA9=TcMw^W%3+w{=}3BiEG?>^4&!Z-)0rWVEaK1#W4i1PyVdW zkjWsh1~zrk1gPj2?rO?tTRXnnbfTZZgv-gsYJ-2G}d#Of~*i?FNJuYT-stTyV zkyZu{1ff4H&ykR<+m&_G;8s$d7lCi@4tGwy7svR}$UlrRDOSHltETqc+TYhU%v}x# zI-oV-TUXP^j06_V4Fy0Mm^)s00aT^+EX2jQ+`!B&qewr*pw4^v60WknNI)Ywdg|p_zFoN(ixd1Be*PSpCKHK2YrlpI#OrCqsFDs>g zH*F%guMS==u^O7s&E=%P_*g?$Z%Ni-vfx5vc@Q`4Ao>8eSu(liAKqUeh`Po?&8k`I z#qMWYZMYvhXz#tIdT49+Kq6xxU7N(G;$d@tlq^IQ?#u6K`K+y84=F-t&Q4_dHh_03 zJQ5w%+V~ngPS#99R-paP2A7(hjzo)q=$zyU5h>5+bxzaX#t%E3WJ7ii;0`1uNObN z_M*CLDZkk^bbaJjakb!?20>;n69rs6rE#xUs63+*Pur z@deuXKjXmKL?o=}F|Eu0mjE4VeT4+Wh6j$0^60;$Ak{uTIaos6_a#l2vx=oGxb&uw zk~#RHbKWpi)7k55y>!)R%?dpEN{aLBsi`#o#$3i^tW_4v3ATR+G@XO&q&%F)&S6;9 zat!Qm|4*BRArrK_yxIkL9&qne_)WRXIIeW+-SG^a)M=Y-+wOZA7*eGg#YAD=7NmvF zwFG1!CHSkmvfFV4p{5yyEOlR|O%zNuw`*AB2I+M2^L0`v;egHEWX7LgQm7NV$D{}! z#ixfWv45;^oq^j5#_xP`;Ul|% z9+(u$Ov{3>j1X?xHwXkesYM&jRx1{9JE#s#b4A2wZ|@}NzuEGFcQ3X=GnJ)?a2JRQ z2iq*bJtwSCLZy0`LnS<-Rb}u~e&3)d>#F_7XN!+84>99Q+HEh&HLt(o!6E;CKKJBL zc^%Nc%r&AUYNtQkKjFfh2XJVwG2MVqy(?jw0Fkp1(ivzuSN$oxP3ot{-FF!zgukWv z9R`gbelbr|G8JcxFNE=^`f}j~MV=QbCCuOtitrIP6mpI-QHrXWig)rg+G3-Ali!T! zOBdLkEcTg1I`aRC+ozXR1gI*~b5cqpZz$3&hOh*`-Fhy1e5?A3qa4;c?Lpq9AdT|e zM!eR)Lsjo6ISd-?@A|z4+yRj2FwhNxdB{Od zveRFECo*3oYrWcC)G z4;$jHYJ8R&^wR$!Q>cE5ac<*6s=cWrK(RSF7OV?ghH=MRFFRfE##Uwq52CW*{ z76p|T@Xa>iHigZ|%y~?=ZRP5llwrGt|F&N~x%Td{Dvw{2J9Un8i@6`CJnD4!)wy3j zAZHFekH(Ht`YKqkXnKHh)TQYrmJrK-7mLGF_Tk~u3HV&Y*!lgaOGRTw-Ag7k*py}B z%J)fJe#b6|bs#%6W-zk2O6#=vDV^2bV7w}O9BaF2sZRv{YG$scwP^}po;yAd2_r5a z?53zsWV)tW^|a&d{pZ@8djmxBl+OcR~waA^USLqu)Qh<1`G*T6v5TxwBRw`+Q7)piW*s zPPEsi?9wW;t7CW>+iNfl-2bV1K79PJRpzBw*?*(#=H`q6OYybM1NjP^z3EKi@(v;h zkJL57W&!pbM`Jy2rrXjJ@?J^N^malUZ29s#7N&t)FvxKH!R62BEd-4znU-JyLRI@$ zvx!f3&iVA0GE^Rq&M5(k%;M5~$s%t^M7k;ea1QnD%iZM+TeTgLnE`OtwNjCw%DeON z5g^Mr;e$TAm^F>gkP1=9T}YYQAL2QUJ2cYP7lKkA7>fw>kVS>oOMR=z7}F`BT7vSf zv+C15V_bQGWO&`DIXYZY<<-{iFR84q{$W=0I)m9Oex9$0eb14>%Ox5Vv-r{x;l?v} z2&ucOqIbG9mUTNsO)f%gKk0nq#(-*BateUVb4^cnIS$Sfr0h1k%)>F_bu_p5@Lyu^fxqh|C%&yFk(@P&lMqtG6?90(mC3??}Hv~x+JXB=n+|dLx{#c zdpg~Zf@WSEz$ORfy-mJ+Q$&P z>#GuWRTeQnUP|pTsoX`#1D{fXD{ev@3)_Q=Fm&_HT>Hl!8YBsp+4qk#&;bfJ|3jP* zUe~C~!_B#CEPoEx5+yhC#lXdZkqJ(NO4gTJtuM7$(<#KQRT zu-DiIZ6M#(@A{TqsKeJ?U5-z_b{Wm$$OL@-DKpGFaN7uDJ)pmBFN-()3|$RF-py2Q zVTn%JZRMvCr?X2XY46+wu21dO-~FJHdLLAUD3X`J3-07<<3pX{2uQNdSt5k{#(YMD z4=Am7BsrgOsl;EAdF$&)>_K2TLnNAZB@q2@FR96zDN0yX=uOLmK4!)bT@F!L{%L0V zNW-z+E>s4M!iTvW2Chs4p+O>xeALZN@>6|aSHPu|yp4*16+Q?(qLjVO)l@K4j~-TBBMnf=r2JhVMOxJzIi%4xme#KvY|>q6~<=qd**e+w=ruV?$ZJWqBGUn$M(7(t@xvSWSjUaXhMur z$yeS+*VkeoxA)7H8Gn<6cpiG@4SQk$XKZ7(WD%r$5YK5j2OlLC+qigU7Fe{bt7$@d z@lBk=?bpB8LJ?*W;17kxEVrTFbQvWJ^g}!n%MhmArgAH;^4hh6ZB36h2|D z+;k9inu`0Ru0Nn#Kj1y>VM~WX(S3R&u`ey>`#rS#M~oW$RM($Lj}^#2p}6HD+5GuyserJ^$Wt(tq=`36e9&WHhPqTgM_ zJKoE^&Ox`gswBIu-*jjKn-Ak04TmI}l(XGumIu>P&aMM!oi6hz2y<`5D2ZLFO9$~KBpHe*_@9D6pl+) z@Vq#=DBJKHnwW66>;}ax>@VG`dB|nqTZ%t|9tMkfV9C%UCagAA0ITt_QjuorgnVR_8v#o~EV#3`7 z+eS=NiTQ^!hC53LxTuwTN~^L%=bJ4Lbg+tL%Fa#xpow@NqQC|IZ?C9|lvD*Y#bU>m zLD82wL>i~v+tWz&QtcJZcc3hI5EN8{rdjYSCFmDC*Bc$w)pQ*m1u70_eyCe$UUhmk z+|sYl*teTY{d$?Z1UJAbP;UWvGA=rn)Mwes8IJIRJs`Lx^>Z=C0|Bm4|H7#8IOi=} zqBN#kRe;~i+q~UBUbA?zb}V|<2#|sMPfzjyxtZIlVFxOGcggy(q7VZEQPh_$F{sF@ zZlM5T+Fspit<&EARoq4c25$dg5v5`|6L*UJ%cr}?p5$mDEYP4QIPbq zvrBEoXg!RfBC8mX+T6&oUwlEa92l&mIswd=s5zA#@*st5e+~V+O`MVP3?A?T-^sEt z>C1`E?{(N@j(G`sjkiN%3p{4JjRAA8mN<}NPC;lZe=f8wxSfQ{L63Qx!hP!J?6&(({I1ZjfE0GF^E z5Pp3Oa*a%*{NA2Usl$AbK7vq~R1a{`9$cCj*b}gVG26R%vK`pu^R3pYgo(Z@=+UCT z$@GvER~Oim6Q@^LrE=m5T}(yN*Rk$xdJ}SNu7CL&tkiB+7H=Y3{0LBqk;%r0Q9Q4+ z|5o?$_0XxeL(l6@)veAROx-5e0y;Q}uhX`$tbet@r6_cH)Mns~Y0rXnGl1)69|%F8-5O~A6x2>Gg2er;&)>H{>M7pTom?RvLqlEC6Q86*CRqc zpu76<2sZOabcY1lCpZ77*XjL7)}#HQk&9m(rzg?Q+yXbyKtxS}o1eVDLgpvU0a_8Y z$c+gt>gR6YEh$)CqgNYZbKq}sr9}-o$HY}M0!WS4j6xjop=-W3JK#o-U7h!qx)8d z`0TI^@Z<6!|^VEwg=)G5G{1%%#Hg{RKZjk2V0`20n&* z27|Pz8wuvnBSJ3(BV}z#3`=|mg9tpT^<)l$Q)#VJSxDU#)X}_9QHtn((HBx?SWLHu zeOQ*fz5cgw*#aw(sh!>v?=UwcOgc$?pyVy?EK=sR!5?xz(Aq-0+r_HwqNTxW>l&Pt zAj$@etmihd_lD=jf*!sY8>Qa>sKyJkc{fL@5@lec@_`59kD}G zr{2N13e;G@W^k}+suLO&l?vH)5Ymsv5x8pyJx znXOq2L)HkbGYLeu;oDR*V(wHjk(@9nwO&O46A>MQK#zUt3Gk`5eh*mr08ACsNbGLx z?$oP+eq$+bfamxD80K0CIQlmDSA87*k*;Ev!sX{fE(;bg#3>M#Q!^vl)IQB`W!RIx zI;b!0UhRXE_u_o*Ybz)tlRsngLJ#6Uv0F7UplwQNYSs2VHBY{*_BjP-@@uXJPe(>P zsq7mz7{jBmoT-~&NTKrHhoPspAQ-ucqu4MzbKj!{|I=LiLlW>-5?oEs5bE}w@irjl zdvt=dS(8HnlxXO9o*22OEEQctySoscnFCPfjPIet`2D`)pEt8aeQq(O>3;#r=9pMa ziU;}2WPP=wbB)6b#rFOys+6Ku2R?|rKUyP_CNONEe&yX>O?aU|9qrRC@3^!E8i)XV zmmKvV=C~1X9KJa#!zltCCWI;uVPYLYk?(`s>imR*chp2Q??sa@9 zIybyVo^;Vlijw4Bb9-;X$3HaT;n)gz(>@^9sU->@XK%T$9djw?M`-O~L0Ih1M)y0K z60Gs}Vpa*Ckn?k<};RU ze$$G&PBU+Uy;`c>{NrL`(w2SHbtOX3?(IBxZglBYh9a`jBhgVcn$wk`X_e=08N52P zJ9-vO=KmH1`js3RohY38DJudL1jL(SM+S$JJQrl%L#I|Fw1*f|iA+w^tH8MuAo{U_ zPsHMFJ`eO(lnf+Bw>s-=YCft$_aA;#v;PCC?DFw^zSG?rEP7HLvlI!Iu9>&}ekvp~ zK99a(!bR*bCj!d-ffB=hxA2`Bp--h_MS1ZqABfiej>#SG zCJI8QS^xg)2lu3U z(kFV7>`U2Zx!gAyOZ}+km@p45L&AnhTakb_Ztc}Bu2u1_RewmVB(&u6MZtmlL62Ui zTjuGS@W`5YqDE-wz_flFi9-Tg^QR2IK1htg*SWqnZU~ z_2}X+a|#S>jO97=m5n@xpFRLQ6=U-0L+Vd*elFA(3W(6Spea~@FDkbPP-Ui?pxIyw!wp@Nmu1T1!=*Q&sORhjt843k`BbKZjif0SA z&8J^ATW8LEx67tatt|~)nQ5CfQ>Ze3G@{%w)1y5Qm5~$leY!KPHVubqRylV-PSG`Z zy$MboRno>{pi>5Y>8qYKx6MwS19OnS8)=6Pq0F9_r^^-cl2g+l=*HLu)}d1WWI*Hu zxtOy)cC{g*q4lMK_@2mqTYjZ;j3DUD%(nC*D^Tz@i8lg!AEF*dgfBkR{+z~jJs{=>6t?M} zq$Nh9pvj|W{?vfRCMpxBiELHdXS%?;$t-o!F0*B*AF|D1sB>FqH7LrD7(%c92Ih=X zdS#HiNgps3`qkze+$MijDMGIBo8m<(S}<^($oU1eb6kYgOKWUpEPY_o%kiA55YT>y zW=2Rfjo8Xd7s?C*=-QrM?D%R8jAU8e$Uu?eUaoO}*pm&ZIm^nb*7I|X=+^Mx&gady zs2vP+!_R3pFir>R{-UHn-G~r!$v~UPi&Y~4Mhv0M{tUb$o@aLTzmC80UP^SNoTDMI zbD^HwO*rv+vl*~QSAy)oT;t-NqxTMl$7Sw^_zPM>l=3<7NHu+Z4FBH(K(N~pLU>Ze z5+*FBwxSptQSPP{oV$}G6v*kyVcYY-JFk4a!r2Smv||Hfvqp#4{mug3k#A^Wz71Q} zC`y1Lz9Iv2Fflm``T4nvTw|e85tdTRiKUeqT}udOHJLB%fl7^sgtbJ+Z_}Wee%XPs zdB(MFo+OtK3MHPM!3Be%)-qK1G)?(f-^n1`u$L`z zODej?Cl6n7{hNNaqo<;e7-ITS<l7%TV0$f!i7- zE*mz$6TEt1A0H?Fc}Jiy8SOcpbX%bb=&KKUO7N_6$YM+b3()J3)tGS(srZv@^VZ~Z zCMMV8Dr0YJq)CKcrU7s?2}>9s$!?uw#W4Gh%h*yk&K|BWXxgU|eJjg*d->r;w?OkU z*Zn7t5us}&K+N{;=y?b^QWaM6pSak2730Qum5;XKCW3l631>XAm|?VK>gWz=lc53qqU^dd>y7_{qPN$iRGeRa$!HkJeYc#cG3g z*Npi8(*n?BDe*Oqo@`1UyyWUS-E998#a5vBI{9)S0ihT$?$v~SGFr{8vTFH9(WAxs z`2D+jy5QIulkLB;l>5UtAD6u;oz8b)J!X={Bd4#aHrHx<)PQ;>-&sxH?7jFq>`%hX z;;6Yc<640VnF~n|rQ{N3AM&y4+?d8T=O*;k*`y4&ebaH4O#RXOEX=0XY4ticJ<@Aa zH#=k*WP~?K_6nOIu$?DN*O0XZd+wya8xiVz8wz-PH~Q9(aXach0w>JY_HjJx3mdtC zvrk+~k^0hq?bE4L^Oqb7ntPfReV;PYNOw%w3#CBfv^Z{beSY8^7MI7_+yV*gKwtAy zuI$=5J?&bv8qXz~t=#qhl=Ysl_DdN_X9?X5dXibyCCB#%Ot%eSr>KF#&AX7{q=|}xwu(l=%44h zI2w;JyKg(OUuPmy)2Tf8BGU5fM9Xwq%pW|(j#Kir@V)AqXw=((YrfPe5K0c>)>9VU z02;Snt$*-txlFu|D1B+ulxHeCUY?Elx>8#u!!nq|yw5x>KfG=ngJ@peavjtypME~` zg#m)JAPDoRzLEZyYj-(SK-`9IV3JX4b<%NlY@vy@#;#N2+9c;lAQ5Fsop=t7pv4?AY+WQsw>Ni4 zGw3I-jjHn5cqGACyHRI!-85~R;^N=AhFqi?&D^p(?uQ85C7RVflSsBT^1ZO^Z$mH} z6|(#FVm&VjfLav=uv(+)X0U zXm^EyUN{-!P#YQjJ_gPxEpS$ZfG@xB8$K;Y{t(6k-Fu(X+%xwox^nt({fd_c3( z{esVuKy-t-yf-4WO~da#evwRHf`GR8&tXu(k{cl`+hf?8=E+FkWsjP8HDQOcQV=~^ zYm}dXFV;=f{G@XT8lkfZfjkh9FB7!su0@B?vQ2`~T8$=rE?kPw~OG!?oyE{gY z?ydo&L)fSR+n(P(zvKA+0r#HmIQHE4eO=dizRo^38XS{O@L(xp;GR-{**Q6TCi4`A z8y+(Iviqg)^%MV$ExS^dWBvdhpHm z@yXyx6n(w^ulhos@Pxv=(M&xGj`I4ui#`gu67=`ncGXU1pOFGt-lfx1WI=IC^jijn z=TFx7L#NvV?(qi;Yl}{L`8u@*pyTdy zYPb3<%PUv2uF87ANyXLh1W$dqfffTgVLxLl=r(d_;67*9Qs=_7>cS z0^x&WB)4@GXYzlq4&QTf@Zm7aHUDSq>K7po=GpaspBvb)GdUFc&z|?RCO1%FmMm&- z{t0~X6Y3=w!gvs_5=D462cuXVAQ_fq0^qv zaUPZO)`UQxGyN)K2AO;8wZ7rJfe=sa{GJjvYo8n9YrL=y3(u}Hb~*U1>h(2d^C1}Y zLwP#>t%d~dL*>i0=n|04FR+@BD-&z}rm%9oQIqr!z?o6xMwt1i^aMF`_r2Ga>8%Rd ze@1brp2PV?`q33dz?Ss{rRbKr6PI-rh2! z*K_vA6!+A@V|*p(n*#)*#Abn4?rnwk<^aoa5T3-7CFI|I z9)91=p0cVX4gB61g5j&LE;qULu_)w2bgAVILiP{~*U_x zMIi5j%Q@pAWSDx|h{@My*iPkY%KNZc_TU{hzNwCfe@ZYl(M7Co&38#kzF10Db9=aH zWb0f%&wYWVy#Gh)CU76J&7^SW>J!uK8yD6)zKo7Tfve~a-D~fl$JcQ~Y}(ro7Jix< z_rQHUDZvwQ$8zD|a!I#1TzJ{0NfxG-;?Zh13V4i-D|u!13-??$72~-F*1o&J>5Oki zmn7(5&HhCyx#|E>Z7+FX!;ZX|zeN?>esBMUSm<#PBxi1hVjB%@Q*IiqfgG^SrJ2v; zo05aVlGHT|z(CB6lCI>QNIg*Wtic*!a86s#ZTVftuA`!jCpt)#{JOHolnUWY0W$r; z&Tr5KFpBOM_GAmRFINNPXbpgTAL6>ep}WO`FH7z|#A&B#fDcc1hoXbX?uq&+u{gnWlEgWmt3zQsaP=5NmYg8Zcpw1*)&+}eZGOR(iaaoM$s4Ub?~ zPPq!G^g$M{I_5}CEWUBZ3r6@T#h)9yqeafI)+$>vHSv3J|5^IpXAG_V!Y)f0!SSbD zt)yeR3st`ti7CtVIk~&~?`jffA>#`KO|(8*xbn$}w7c&xE!Ly$jh6Lc(Q`!!I1 z9op0o4Bhz#A_r`p?*rl-4P+D#aB52&xOsKM)i+4JJ|nyl&W`}Ms~)bN`mZc@1Rw;1 zy+vv?T<_`=*a(pR0OMoZ{QRZpWdj8bDg#Pq=`$Oge?TQSc>({^!bDk{mKQ#rt}TNh zDDdqwzn5EP-SVmnw%WFvx}?E*eO5Z5iG?tJ;E44K#AgvnZsNhDB`>Nt2I%q+$q?hxctNc$Oucb=^a2X$ z6hHcKsl8=7M*KF*cP3hF(hXDm@cJ!I9#8~F#LB8A&i)0o^mI?jR&-AZz~e`(_)9YZ zFE^@EaPtz{13AVA9MouDElh?*3ng0j0n6P0N!u~@w(b?i>Gni0A|0uP9Y^;l zMjD>*0&Z;)Q<1e~T@cYrL>#mY`<%8MVdbqvPAsv(FJ3u)L&O{2*kjOhe^}c{DUiV~ zJ}NeOg^}tL2=;F5ECPfvoxY)-=G;m$?R;O&y4BdTNaL6AvzOea4&DwON>|W?$3BO2 z=0O_!@7)YQF%?Q?1uR#!H2y(Qp>8wdFbSdbEn2|}?@_BQ7hiXb#Ly;0>r`euhw9bG zlU%dhm_@ghDxrz|VXY%$y_e;88wUUQNM-7{xED0x>N1_9vtuM|8?bATv;AYA<`&d$ zwVr90w-cGLBGbWw@5rii>A20iiRxI>!!-?NyZ+!(NYs-nt!Vc%4fb0p1cIkJLF-FOBG~w4BX9}Iv^g?778GCh{r_llszNs z{KLj#X!f23$8r-QHbuRbQ1kK&_QXH>&ipgHHBK=%{}mvV36BCTKlSjb9ra#^4>s+A zCn069h1eOJhAIv}n^X+DVj7JnI}kVb4YP07lcmt%%`@FJ>Rqjx`B5S5%MwQm<=pjWEbKh&3%sSPb{zk|zM)+b8jjGC|BAqzhso`K`O)Y9uNxoTs0 zF_Fzo-H>N@P?!SNM?@gx?OG_fcu$Z&;10M_@YEay4Fe~=@d(_KRNDU4FRlCCLFD8e zl0Aem@!#UsjSd?04hKrb0ftEDdoxDWf9=)r#Pk;R&10YTz?P2}R8r+DNx<+nyfl3l ziSO%bv`ie4>C)-|aeWbwm?HzV0)O0zS8Q5);W7BF6_ zf~^0Oth-h1U5|q_(&2;yZI+nhLv`rRA0(G|#}-sa%W{rmX2E{9ts;M-o-ecUE>0w? zQ`Fa(*Sz{iE&+Z+v@qR%(Moc8>>?4MNpnAUGjP>Evtp9KPD{-A#vwa(-a@mhRFIc? zYJRC>C2m(hqQ_0O@W*)&Z7zX*U5um?C6#*C`Y0QNs;qoVn1f$!!xyVW-MS>}u9f=~ z`Gb+MT#9s$B%e%M5VO6&F%tX{%yrzXuhHe+GfdY=?N!Wqd2KR$G}(S}dk+x*xnOv* zM$xu$yt&$0*asncF_{3X56lmZV?8ZA(P`cYs=E)-St>$U@7gD`X_mcXGm(w_Z`7Wg z-QmL_zj?X~(>q4Y{W$V-wG$5VI1{w;yS1tT_st6w)(#zok-EPU0}}9EKRMP3S_p*} zlC%*6Pwz5z#dr@v4=+k=eEPnY044s)>DM$ejI(CyPlJ+>v>?C>^_Pz-!<0c^(oB!n;q0 z!Ffm2JokW_52FZGu4AY12kcuq>c`OGoX!0@GJFW|45?(`#z5sJ-(tjHpncR58000u zk*{#0Er@&LGUao|VG3s5P%0wJz_nA_egc1;i@rJiamX5JYNL9~FCs}*EU1vhCmG&u zkB@#if>q(zaWon0qm2e=a3{n^`qUY-RyY9l4i6)e$B<;o+FZ zAXL0=sAG<+z;d@Hwt90pi?sg!3P<8&ntCay&R?x6E5EHpK7|x^c{svIY|3fUGdCpF z)D|Olhvew~=&7FEc_*Oz$w6AJU4eXhUmxwFQ{u>Y;>(8Hev$J&wSehs+pQC(7+JVk znNh5F%JdJ< zJgWonC=%amG|X%bHzrU2@j6kBo=kC2PiA1sd~}e~hT_W9!{VN(Q#ys8?8;bbkHAuC ziXpWcbK&H}KvAxz$K26vP@`qVyoSs1%PH5{`bpx#b8~tT5Y6P5zu^VPXTLuShpIJI z(%Fn|7o6Ct1Iad4(xX^`IRht;?%W(aJateV1o(;D=QA~Keg}zeqZU4ODOP->rTF)q z!cTI=Qp>4s-q*gEr1H^^+oG(#TwG=Y8RoEVL0Pqt>q2;1w~&T_w`%(V?mbzI$NwJo z0KB3nHGC56{XS6M|Az0h(o}pcign%JmL@qRqGN^q#u%2e1)XZ_F?$!l+t}En3gP48 zC_cpJK&B==zp<;txHEBrhp&PUg9`)Ckk5cj+03gj+hh(z7T(M^xj?AVkd!R;Q*zYu zZKbzIR!kyo`X;_fiAQ7p8En5X>*pDNWFpz3c0PU&yxLlqvrAp}mkiI5Stm0{_hl3^ zIM{+tGxbK@2%!yA3(pEhSmQ))@T^HkRM~8TfPW7JX@cuJS+RlY9ddXsNW|oMNDk$z zhhsp1$KJ0a2-RT5rJ$i1g0ktT}WTL4E5{*w8*&7vL}Ngp6?(|6Z+{bX#dXwH1JKQJaF{l=I<<+@rj zz77);crSPAyN;K^XTzS8m2n;ndl;U>YFGrt6a=bLD&45+D2LQh088F}AU)*96FDwm zo#5N{aa~>iQ{jBFADQJUw)OjxU6$B4(NC|lE*P>y#HaOU7sr#m_pr{rwG?0DPi?SG z^>)84+mZnVLbYx9w#fdAoocn5mgw?Lbsu&{9`googc&kW1Q*I!i>sBjON|S3)?5gf zN+tT`t!$z*KNqf4=f??*6%vAXpqyIgGK(GdK-akTbzb5)2d?-pxejp#55*TuEk7@y zRtI+kq$F(5pY1NcXFOK{5<^l;N0L%?poE}zuq5rRKSCn4_CVlfWnGb6uE@2b{PTwD zZ2KO>;PrZQS19frf@m3b_ctSPndxx*oNUV`DSZx@0?vH6zW(_ae^Yz0U&w5BJnAtO)57h3tM{X6>%5yTR}VT;Ev;3z9q#TPvWjg| z>4kY4>3)ffaodw@(SnmT%}*jI&v9k3f2+MfJ8dgeK1vb&IDSuW+{et0WeZTFNwyZ%LskCfk75>mZZ-eSYD$t}AQD znyn9Bzx}P>ueFV)`lj}7lq5e>B;s%tU)9oCr9U9hr1jFfhz{C}hZML)4iE=gS6PVj zi#7SbS8!@%HWTc=PfC5%Nkx6_ZStA-rky zgS{7xpkrKRk9ce@eO$Z>&$xxeetLUhJ<>x zO0kue`J_g_PWFP__i~T3q-}p#Pkg&Nr`f9y|08xu7C2sGekyhBFCWtHl}6T%R94O>`$2p?)H5#z3k^0}{}U9xq}?b=Vml z@`!D7koZZq_1PPCoGROq{pN(q(Md$#94+>9okIWmIehw>rCDJS@dN(>Nj&4kz(m*- z3-)97{eG@e3eTLfP3N{h+OT}zL%O{|TZL8>2+%GxSg(gf!Y^Yj~Gir4kG*kT;Ea|e)2YI-_jGM&0gZ!%O^z*65 zB&u1o2mQjuNjmnMwzpu|9q%j5A}z(z^e8ZhgS`EPr>;(pbZ5{>KtXw{xYFU_?eZSb zQ)F;r3@9=VpL_u+o&mx4_XI7sKczUU>a-lU2l>`4&rwB%b^yBQ%4$4|SfzARJpj>x z5ZkcP0}v*zEB*>xqDA56-3~RWAOFnrgHp$9X4qz#8R%{DBRu*V)*rD-abRXY5X^T$ z>&Fk1J87Jm8LDF}nE4DK`U4j5P9aeB+Tu=^$JLUHq)m!jw+Z*fo$nmUrffOq9dYrB z?Oi}gUWg{9HmxdaZeHuK?!2k@kO;@>uf?XP+?Fu_7HpO<#BFF#a0Dg;8V(7QX^tlw zW%79;Q?e7cCYb$ykN4RdvFDa3cw~HADQ23Aanzb}o7I71rbDh`i%8;rO!Q`B5z$dA z3Q3K5*UvF;$MgVjfqu*duEM|#Up_DLOZzK4-98h5VZN|O|2KSL(|zUOP&$^U>@VE& zG1~26Pm$wi4hZqktGB;tG!sSgStARSQs@fq!dowyXyDP#P5@j9aMyi7n>)rbOGJcX zsu^e-z_}~@s!}bBf;v9Hlh|C=|HgP3yy9ll`On~FLt^lijbw2Yc;HJe`m4+QImmhN zfrcn=dpUl3l$Evz#8Wb zz?`oKso;%hxGP)C_wX|>Q_EO4cO|=~{-BVl{HG(8Mc;xDx8e+(s)LiJm*BVKy9Wx( zhI)J6?#=Xc?ev493!53)Y9DA~3+ArbU6_x|{~&T2n37xNDr1 z2axr=R%<;3&ru{zJqt9P0R*#0yv7c|EuREufi`GnV1)R0R$~8S&us|JU`q-zj-nt> z=CmLRROl@Vx!(~P(B9%l3xPPYE>E?)jUj6XfK0p!g58O3>&Vk(W>zexu8>>d(H8ds zV1X=Dc~^=7{c7gLsfbUqw20ON8o0rrDqv<>?w}3$N7f2-29x9pDTPtT{uoqwRJ(O3 z_vJb_Y4YxwaP;`4gS!mL__VmG8CRgohy`>@?12)qq+3-udRQ8P zSLAp9cs&(y^E)+~$;ERQ3 z8KD?hY-&fn66oj%vc!LV_j})UYW{v3Ldf=au?U82gjb7vIAP)+wDd!NOT|>6!-qMv zt%F}`VM0P64BB(Jg$;>5zO8#sTM(3y`WEExmI@R4#rT$5a66LvO6K*k$G69Ucgb{c zF$EEKLA&>ho7C^(Blk#fbxJ)K^f91qv^4_>jCgYXqv<9wSg1*0zIIn$)O2Li`P;q> zvBHz9k8D{1>k_fM2AD~`!6(ly00|`7l|~yOu7#&_3$Dw{@1+AQA8fzJvEX*jRkuKv z1SM`74G&8&bf%+C1wH5S$=)z%?Nd_h#`$8X)r3LmHeigNKDfWDs#x`SQX{1?aU0a^ z{exv}V!!qVpvE{4g{n~3N)qPHq%@s82nsoGE(IJN_zu9dhmWet4FgsDsaHaLrvn>2#9bHj z?lRTjy3s#mMpot*W?JpR9=-af&uXB5+Z#C1OEVYTMqDfOi-qvDO6}c_%x@1u_yD__ zw;!wqyQIBj>t(nQP zXiyYIP^MHdBQM*BLn88@1!O5Ek7@&q|91Afki@8x1{wYub~~#qR;PR}fylI5?^%x{ zv~3z0sy#WEY}x$$^{iwaAH_RCIvf(PQ?zP-y*pg;$Ff_f{OiW2O#@_O1Lm(3SHS;i z0o-UTYaekrPz1_x>9}r>4QGps)(XH9#}o?QUd9ko8R&c5ZDX5Oe6%6VB`LG9NBn4} z^)+x32|C|@ii;!`K6(`XCUB%e+$AH~@f@_j;G~cVf)r}I9 z`g^}-z1+fA)BdsRh6Aq~@Ei1LNHR-%=C=KbT+$FoBC8FGvBcOMg-Qii6Pu~f^j}T6 zXqol-MB%#9dVhG7tEQd8JTgIX$^l#vh~a#3mN8C@K$!K>7d^4w^2p5jtfO%CqPLgT z&1GQ}QoR@0ThKq;Pv?Os4VJu~@0)4V+dobTA&y_8gU2-@Y1qj3Y{I%5gEZmha5!2hoB=cR4R>yA7>_aggQJIG0 zoBrl$nuMQ6-~JRIu9}Qln@&clW|5O|!nmXo0}BO&C3{8+vePbioPGDiIs?`lYPV08WA zgBlaKf$JVv!%pcnh}3*TppLr<2Wx#ezDds53i)d@PCc4}pw?>nE2K;xDD6`dpQjA5 zUTclWPQFJ0N*(ng@f)%cTzi{k8qnM5d-LFIH;#OZp=k$Gcoe8;4K*0UdQmx=Ol zF&d1?T`fsjI+{(chg^iv#bV;&J2wf)*Bw3Z`5DR^mehBH57bN?K0z_5ZksNr544#- zv22W|zVE}KT4U-PB;|}MjW1&j9shD5##f#(H72q)CfT`v&4x*$rKU3(p6uNCJIYIb zX)YuCx<~clI2hstnry)A5*elMsv}<5ux-jSRzqdddlxDCqVSy%HC(d_HwXsP-<3F3 zyhSld$K!g5-mEWfGU3w=3P6Y{ z#zyJ|g2dCR)JOwjEy{c#Uhq-u)h(s`MZtDG3V4cf?OL3j79YsAi}qES6F+G>eKDmy ztkWE6QC4_AHUWGJlKPL{Dg|j+3b5d$vllNd2{^wqxE!%2>@5j%?^G7@uU^4()jOcr9FRfs z?>>Bt)JKD2XHuZ3sCM=qqIiy>;w$9rf(qJSD;|CBi`S6wz0{W%z7vJ31mMUFb?w{o=HWQwqh4TIqp!(vitPRDH z!`FwypazTcA5spQE>Kq~3l*^V@cv#d@^&ftq9J%K5GS zrMVc`KwBjDa0LZbko`T;T;xMr*$u(9&XiluCq;YiB4L6HpxSGelDaaGNLuo)lk@sU@) zBLmf2OQ@+aesU~IdiqhOT~P9Fb;A~vI*Tg`$4@e@*Aua;5+yyqoSwM-IE#9z?78rs zer}EG@}<#?L|ZgDjC`6JR@xTcu(|T~R;lir?rFj;7sN_}&QUDj?nwlQ0vxjR6LHbA zp)Ngm!-0?fNcZnDLGp>Krl!qm@d!+G4;LRAn_J@?igT zOKm3)!L#9G&^76#x6(0ah@FD%GC{Ts2WBLlOsPZx_@11ju{>jQy4e&!4o(5kbbZ;r zZ4$T!PerTXwd8TP&)%3T&~cDdT6}!<)SD7Z>Ud(Rl;ih&cdBeA2_4z0bRUj?Qulb` z`X&xg_MbczygzIE)KQfwB50zxF0N;Qg3~ulv`I!h1c^_`4*WIl17{dq7l1{I?AhN? zqe-8n@wGS9;1q*|Mi*K~FfO6BKcH4A39`yyE9u^kDsg%wka9Wtf*HIh2_cUu7g~7w z490)s*#%8zSw}Hr3~+EFpfLr^=$vA%?8~uC_e#+6#vTwRZhzMKrS9UuuYJ8@Z$<&P z?@ju_Ya6m;-w%~B;{l4;#VLy@mMgY^jq3ljx5|Dw^ra<(9p>+xbbG6Wx%?(2s26T@ z*I#oAc%m{F3j7Hn&N+0H(h4;q6giyiXS;348o2;DTK%2{K0>tF>Do=O&JXV#7Y2@; zg9nx?9cjwb#eF{dc7cQ;~7R^%oat9)VKz?(bLSq2RXa=Uto0u zqL93Q=le4+KY_~?^wjN1EO@U_>Y<8-pu(n)Rv>ZVN>H@J)7%RDh4fmiL(D>S4zivQ zdmF2g?As2)8cZ1&CI{sTSw8;=GPCBvH z<41+E&2W`#-w^3-i=8(HIk|i0nhAi#4l+TW3FPa-f=p zBSBxGor#7_XV0!hCFVuYuz(w3^fEO{MNz{)t;e;C3DFVV?)(s7y`Fc_cm<>o(cD-k zV-BU{39Jy@JB!w9RL$JS;K$cuFcp@fGQf^*uy77=N1sIf!-KNRYzoxzT4;amwk4J5 zckkmtKX7`IA=s;=%vu*44cO38VjG4*!328J zTa81R7o3ilaOv@<@?fjm6D;WsbTH8D!qPyl*i_Kw=}fZdEn+5Y5B3)*B)6j*9+g}D z1}z+|6OiXpJL2QDnm61A48U=hKy;-*Wx%5_=6+&*apH;jU+ zR?Lodzc4CNXQ}C*Z5JQ|JdL)hY;=`Y}MOk zh@6ynYiAls9r1;LG1kks@f#)kkt2UeKxzJv(X4qTr0{#9*W+H#I=O-+d?fhyG2y|q z;LYRzo>v59X;S_iaxW;}W}Q(uR_*Zz31~=^okX#Gmoc3q4aX^`F|YEBFL|v|0)Yl! zwyXJN_`SNI#4FBEz>uo(0T6_GYIc>AA>hp?Sj!EGeAn}GL#yfm^VPgXDdR^P=|q}p zp4!Q04Si&n@I!Y$@m4qz5R(v^LIMjo|12VOqA6$*$PGDcfA`x2 zW5+Cn&($IO8K-5L@Asz}GR$aCBaeR%)&j+rHnb!n!n%Zl7U@aJo<{Pl9r>7$7WvS) z(PVFljh0pM6-MV{Qb#v#2ASK#M>k$TMCd{pJaPu3F<~fFN2aNPTRHQu854boe?$I-u0zF>j z|Ej^KvpPU!7t;;&qTehQIt#OyJ-$ErfLLD-_4`7=wm}7&$Rk;b$xywLRNYy@5lB(1 zO58m5l{5f`Niy6_orQ>bGkg?w)t1_~lW9}IAn!RG8`tu2TGb0cmwtB+uUxs7QO^iD z^4Bw=g`$Ly)E7F z4s^tsy(oj78DJ7!yRi2jn!>KYO}E3DF9mSR7Dl&ij19(mrfFrxY*rI&rY@FB%-Z>n zM*llv7_pt3?)B`w8M=9rlX1o}jA)O1Wf?U;1aGNbRpr3p_S&b%ewFpwP z37aM8W?D<&O;|EtBb2`UCS6Q~)8O?(oQELPw=S$C62MV7^zXY;pWv?oeholV1+M3} z4VMjfzjSCQ=7?7v4b8vXdwo;91i{AdTvo)?uO3uL-DLt|Xq6Dnl9AiBpOC{erslb)9voEBa=+Bn-iq@ zmxGv}@6pc$VuAS{=p=#x>l{8_ZPFw$?Ole8^VF&2*)3%iU2pj6Ms=vY-hRW~-z0&7 zF$FDQ3sBWF!FXd%Wuw3|b~_mn>R(1*vV&C~FVN|JJ)RAxe=B{zBJB=bsLR-$go4TyGK9P^dYIuw2ARnGdj%wn|u z$MxBHU@}D_c+~!rZFVxagyL34Mlsz{{dNLHW_n;cQv*=k%9(E!-l+LpM_z!n*}otx zEB~pceJjQRw&+8&NH&4i@9W@+Gv@*z5D-}eGpaKy%Qo})OS;B(TWMPfRs;K&5kKY~=9D6rdc}Wo;tT>DHycmN9iTQ2UVvu=n zI{edm-TS2${Vlh?LXS3P#y#5?20$A+7k531V&v(<<>&Ed1U+t0=|gUA#<3&OC7_K} zUzISx*$oq+=h5KNl;T*dxfr|W1SbyR3|_(d)nu`B{Ma^I`WIZzXF7AxD@xuNSGF9& zedCo}wVIzsX>h+|Mhww|bbH}#UXy9-X}N55%Gfwx$6)87UZdVG>u;_WVehhPd(Lp4T>bOAqH2?) z`$2lq?~VV$ooOAbLq0$VffrmSKk-8an``z=>uqRavVF2~n+T5E%+{ZyRJUMvj1{Ol zjz4=L#vpJ3EA=71g`3z_mY<)eB2G9=ho$U1#2dsKhv+VTIH;3LkEG2VbI#wAlS+0d zdq`NnLmZ3PpODOtF#Z{Y(4_QPH&<8x>s?iaL5Z;;IZwklq#tLQduS`R=2Z~l&#uH{h zs^|xbuzcQ6gU9^vf+0avQK1@~5F91BmqQh)^m~dcKq!FQFlU_m%XfH2hqE$+>&zEQ zLIZ2giszU!0c_+poXpf{+(SI+b&chsZT~~kH-~qNShnEKeN~Nnw_+^7;(_VH!}H>E zsFT&+9@vD06{Cv1@wL%~Nq)1fJ1zFD1<9ATh2Y{6y>fN*ZvE`x5NIM!EZwyTX?yFu z&=rpC*;_Fi_WLyiW$1OnyD>Dog|RV8{^xBTTb9?(qyp@hW~Jj;V&^lKb!Sx765wvY zMIaK_4+-cu0OGdc*Or&SvujA%qpS!JgJuOGRSKQ~bc^`M$1j~vCj}MHJ6fD-H%j5t zn%*6dl}O)KrVuphWaP`U>K!4GKGIKQUxTi1Y_hE!_YK!yMJ#?0zKXf+I{D6c`jhLlL!T)*yg}PUplJSEE{QMS zu*Demj_f+!-?+_zQ)hmWlQ3w0WQo|tF@eEP4@{+UiSltc!{a3Qxq^~V(t=I&Z1eya z_C{Cw=yQ!R5xA;!*EiJCUuMCy*UMa_RO`|PCC8nk%=VK5r%h$iiENZrGHKdj^gO$` zKoJKZlj&$bt&sICq`23cN`2rh6~$yAoUMMRw!F%4ZQu8FxnAg)7?R$sjtk0B zw+ePdfyUOIrM3=Yet1HV%s3KL%3ZQhyou6w`|!{#8mKVlon41=C2nS|^W99IyOhrJ z1THDg04Z}Zp00X0{~HMNHzTOj&Llk?E--G%^?qgBJ92W8Lukl6 zr9(@jhn#TFMhN@b^K6&jiW)Xwtemp5ERgdK)|??ml8KI~)8Cyr$Yo^y%2=fT5w|~J z%zc_o!Lpvk!*qaYs`$@^e^rQDI5}8|pXn)BYmUDlyW@;!8jS%_P*8I-~0$xOl!1 zfr>Zxv_G_u9ilu@9rgG|b4!S`Jnz%cP0tT1tJP@d1q}7{6PRf)0?V}fu+=R}@?08A z1^RnMmS5S$4=A;18?Fv4<7*?@h;W%5G4mWkSSC;R8NkjjB$jl%%n4?lC6D9CvQrvAZaey6YIHYi_v0zxhdPlg2mwnMzF}~sqi`fJ{y=AR#3jf?izz2Pp7x^d zKLOud!>cJJrDG62fv=01j@_^0v?EZ<4M)udb?;FIYo#a8iC)3ezH9E>*yY)(*9$xP z^N{4f%QvahTI$`1mnBFmNFS@7c-Yb$G_#yHe^0$%L+c}o@RuDnl&tEvihkDsS^85myDFR5xQa)3ID`#?k5pM*?M9nC zz6KQ=%VeZ6RlV<-R2>GVY^(yx+sORx;Sz7sWSzvO+V252iIj&zdl48HOje5K-}Ckm z&}0nK*f-RhXw;L;^mzO|j*eCp2MNL8#W?e8g_&_QBvI&6Pgd0rw5MgLN(7QF6$pv( zob?Rv>GELoIN{R-@Ism|{N_aA42wMT8WVg>pKwuEizDJXV|iw;#BPpu{t)oL43{TB zeDmgr6ApjmkbEXq&?>L@Q_n$ij-9SVPZfuq;6qNHYp?*YJ@7?u9}D{iJE-7>Og<>C z27nNPb7pbhO#JUPoMs+xwjO|c4&N;U?1|t7trXzUm44g%iqF&xH|pw4&=No)q1QtU zic{n3QP?bRdiCv!{6Ttv7&w1yPFdC1S+|gv$&QoNb)hl5XLgJ%NX5Sj^L{DOuOdHt zLUwJ3Rmt(WaPRaACM*3?HuMn7hRS?^~wQ%2BDf zF%53m8F4AfzHKDM#n-Ub%Wc zpsF`GC%y1Tq{k`dQ3XeBLAkXwiio>MAbqj8sUlC6=)IrTEmI@ms}|2-aKsVII>BR? zQdbGI>J9LEXQo?m5lja^3gND3ah+zEvnWWM^cIx0R>oZAKd*a*QtFUFt_ zs0;jvgvy2h`19~!{~BB)FW;akhqEKP@ZZFDXTu=?{TRzbW#a~pd4Fdze;;?@lA$Tp z7>|t>eMTw$wFH{TnaOFE4ApCysp^EQx3PH+b{x5hsVR9uX$&gQ!bD!5h!N<&syS`T zIG1V2n(QtmHt;<)4zkE@t`RilS8cKm{Hq<(RaDae6=v;;}jSx zb&$GG9{CdE#?Uz1iU!|Tqxmop(t{l6)JvH(=gP?C`DrmPs(w>Su^eonhr2&kzoK+K ze_p>Fa`@P?>_MfOGVXaw1*jbpQi-P{LViNuPgHmz&?*+3lQOY$flFZN9JE*;iG7YS2eIJN)w4;fqOjq>^MlL*<=@;Q z)G$}IinZSelCyT3T+4|Ms-+^)&yPApuLa~Aae|Fi&Vfg6HFty2c{83SYi&Y3CkG4}!@L!jcy zt#XvEe?qrLKuR)#<_V(TAE5gKN}$M;T(=@VoU6gaciBL3%t!Js(x#_;Zf8-QkcTIn z7&0Ae&<_lO6?T6MXg<}_WvM-`V#MYRa5|(a^kkPZ_Fw%%ES>{rW6nQ}^MP_T@Baq( z4$)Pg|7#qU)YqHKF6H@p4xKgGud99~+|8(YTZ^AgTV7*=mwNe@Lwtz)B)CfhWXY89 zoRk|gr~m3@JFin)9?Ni@gOYg&?h&aenXU7o2c<3iQ7@76$1)7JKstJwSLT%U-x60> z&FYDD|rdzZa4?-4T0|Yv@*k~OOK*U1DwJ)_KSxc zN&qtou*!}nYZ1Nu<$H@cm^}{37=DZ^)ih!m<_JO%Kau zCH^ye=924-=2KV!7x7?qRU+@{~YVZK~s znG_YuKS5cWB)?wR6H4P?W?rfz#JnxKBl>MnN(}eejNT^k`$D#CdPUnO{YCDwO)&NO z(qZ>EwFqLzzEdeE3pH%NdHVM{lW_dh@X4WOl?7^ud17uCLe7AN(+wBO7FJIT1kZ`}6^bkT0Pj$i6<9sMal(C@ zspXvd-|tHIC+#lUYelP!4S)^-mu2-X_Xnp6GvVD#%0%Xr5xF}tm|ETlmFz_Dwpr7w zkHZ<5udf7W4dWCa%wlkZ*%M zaX7Ica|6Tk)wnporT~W4BySh_l-fBgH{sV=+qTHK=}@_EGL>)~6Q-Phcyi%Y z@-wU;vc@AWd2CK?kBP#7bzZI$FFEr zk7~26-si-jyY3!P8r%ns1qNOo{+@KU(bi+O^|2M+9XK6{nmE@lJRcg_O#~WDgb&|CEP6_tAOd5wi;ocoV4>{3D9jt9keACD>zSzhfM4H>9Ckk*L6NXSveW}% zWcd%dk=^>5%F9L1+XNKZg^5`yA(8E`#@9dWz1#a8s z6>b-72@bP(9@dzGoKtv68~Ld}}NtCY!V&o0&(pc>x3;`KvvBLsc%kIO68 z#++gy$ihbs$=5On&xJn{?8KF&O7(k@QX1nr}w)sW-A(o-x zH?O##4!d{6Hr`=~;IvmV=P32;SicVc(IKVeI`B5DI@+BOamlrY#mKVHoPK_-i2JA! zU&~5wNy^T)7l=UnqO|{{Nd~pXOq{?w%vJPH;MeX*goOGMp&#%0=G?hqkS+5(w)q24 zP&RpiS)DCVO3*~WUcb^aX51ETF}s zjKAKxPyYveuvG4|bVeZVUo{xyvT#{gIcj4H4T--?{%8oGQAr}|yC1sx>o@4(mZKhC z(`W6%!`ujQL_S=sZ;EnOCCGEN_@ z!LA~khm)-r33WLo*RAH3Ut)Y;y1lWkVQKe^vU#zdYLh4Kf!}tM=6P);^}W6uWlwwZ z)2|Zo)Fade6vpdsbLY+rhYECm3dg1&zY%QASz|WMdZt|h@zUPA*jV|M^l@;(m3O$v zQu<@UqC2ENthTBx!bsLC2^D%7Hs_m3Z6eIONx4iusZb8tw@(dIl7x8nB$wfyIvTl? zn}yHW7o}f_1Z=$g0L4t1*AJy@C|FtHQq3lUA)^F>frb|ZCLR}g2u z51!61`qYfUi#twwgJasxxEiYX!5YJ(VhkWi>MS-TW8n~mtu|ea z?;h`5y)21Us4d&0w=$ejDqwdGG9kbs4N`4B!*|ac%Wr)>te#}(D^H}2owYs$uVUem zgjSuIDYm!(Tw*`@aH1~0U@DBFb#~H)&zVMWeERow`-MR`8(GE2@WU8KLl+QZs&#Us z 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 literal 0 HcmV?d00001 diff --git a/static/logon/logon_password.png b/static/logon/logon_password.png new file mode 100644 index 0000000000000000000000000000000000000000..0d797a05ca74b01283513e64ca7dd83dd3cb1dc3 GIT binary patch literal 1265 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 KMNUMnLSTXym>>xN literal 0 HcmV?d00001 diff --git a/static/logon/logon_password_open.png b/static/logon/logon_password_open.png new file mode 100644 index 0000000000000000000000000000000000000000..e7aff93f8b2dc12d4c7ecd8d4663fef5ca98e2f0 GIT binary patch literal 1240 zcmV;}1Sk86P)Px(l1W5CRA@u(SU-pyWfcFtx!WU!yL*B{iijyvSQx_Ye1}2~%wk~#iwi0SqG)kK zM2izF6fGht3|MHPaG;V15iKG{qIjY*N)qlo_nSR2g@qCei$DZ(J6Bw>%nR?Bk-1IW zd9#0EZw9v7-}ips@BQAqdEZCaVGr#vy~qWRyW_dTxx-_YfxM*0%+Oop&#UKb??nkNjEZFnBJIdwqX=Z*x zsZdJx4*-)yv?oJ?{vx8eUfu3V@bdEV-a?^pfr#!`h+QJ0Q|s&Nmut0JE5HvpQ?&lWE;uNh-1@g}6vO-)T* zz1^mmd7m-n&qVWD2JoOpK*Y5zxt-Q!5&R;6_q3Y;u&t!!AW-7hS zXhq8*W2Z6Z1uZ_4;OMv~pN+#xf+g2=A5CIcS66pCj&qENHko-TS;~U5)_$Rxx}um% z&1UmRmKi&fU?GuDOQ}?nO{ql7G0_-CdF^oAyBGIaqs)qbeA*17=X z@NiTU2fzu}b>CECZ-MnBSfZ`1tv%9ewayTcT-|7%e*nnwP#!sesJgLCRYW9}()CHH z>ymC)C5>oeV&ZK8Piqu+fjPs>3&xoBF4k^a(zCW`Iv|nvz~-B1OpKq6Gx}3gUmb|&Bk&~EAMQa1QEA& zO$*?P<2c{9--u{LWWfwnaF&e>3!4ibR;EYAlRG@B%nyq4&MZoRnANR_~oPk0000Px)d`Uz>RA@u(Sx;!3MHGK;Hk&4}`E#g{L&XX$DkP+SGrY`2aVQ9aE3E*M7{J8DL`P3g&v7E!?`Y6?sZ@G1 zo6S}o`R*c51b~h2?(Y5u0Cv|&ogt!Ahf`~hb=pZ8YMYM=`E(n5` zRt}?krOzY)= zFbrQKqSIE{xRmk@SH(=Pwf+JC#ug1hd@%@uuU+MM0nl213;+j{C}!SGn6soz~dgkdkAPP{ZuZOvvCcuEyZMA=jxS#yz77kun`e| z<3eOZ;9Rj-e6?9YTc!b=EtN`-HRD^!yWSqKS>)MTt#%#}+iWNlI6Fxx^>PZsFx<|a zDu3zyj^V+=qxfA8cL@1sjftCrhQ$=e{w2Up&w# z^!oMdkEBwmej@54BA&=*Ib{Yx@Mlx^I1;qX1CDxIM!pW9WmoAbD3J$vGVAE*;Fe$u z$2$P_JY&wRizaF=5?F_*kPWhsL_?OjfW*SxhWJv zoDG6t+J!$h0IfCOGS2}!Toky{64AM8wR(7Xcz7-jZ!7@$eEvye3{Os(2BGr+Fa-d7 zgR_XpN^jdxSsKtel_Fxs7?VN7UM_gXn9a7C>u;1xM04qMdS{$fOH%;Xu3hUBLgb^3 z8gCE~@eF^(V)07c4s@m4w9Vai0N@o1FNLEsQ!14PniagJ0CKrp{q!{_gcx;=(>S3J zwIuu&>O68#O8LpX_?rUIT2BJNu+1i3tB<$|VMOCBJiQKi%cSEF3$wbriyz!}SPNlN)lQUD(Tz!58C_RgI< z*^!Zv#Xi5)hf_5G@Sq=cvqzrZsafMIai_JWStzo0dV2bag@pzF=jERNfh7$q zBD#TyV=K+ojq+myh#2isYd;a~SjHn>_H$Sw;w59u>G}Ej3ogac89-#A9U%u1QE>0Ds(SaQ8XGpAe#u$z*a{w{HE{2fa4{A7%H0XC1)(xK$UK cYu*F@0jFq^Pycnyb^rhX07*qoM6N<$f(wAE3jhEB literal 0 HcmV?d00001 diff --git a/static/novel/performance/per_body_tabs.png b/static/novel/performance/per_body_tabs.png new file mode 100644 index 0000000000000000000000000000000000000000..053bbafef3d03f5153fbf9edee79dcf686d42ee4 GIT binary patch literal 2328 zcmV+z3Fr2SP)Px-(n&-?RCr$PT1|{xM-l$&&F**sg;)s)oC^`i>}*1ucm~8zkl0lYIRH|O5FsLn z1421Q;eeDwelC%W1j;c1E*!Y{6rvzVB&1y~29o^|mdx%ZL^d225)#ELS@GK5d4;OG zt6z1`n;)-tV-9aF`(D55>aMS=zN%`Q(EJ<%)ZpL|Xn+Ww&;Zc@k&;5=5sgRuA9=*$ zBF`K?jF}5<>@M6%7jI++`#?kE%sTh_1-`*0z6!$UK=_1ifPu@*_y+-hDF}ajZwoIj zEYQve1s?^(VHwSNEWx5WqSB>@eZ6-e>6-2MNZ30kO8pKVaZF05cHdy_Hk^=!^ZIhp3#?xYyGsd2<8Y^C4pM#h^_2?7|B(O2v#{5Bq z%Dw}!w!x2r@T?jcjB!|qk#hRMSeCP=0`k}WEHL&xdW=`FvfanRetX8g0vO7zU?*|yy4aC|y-_C?ZB792YI`M>X>H~%hxdU*X<4GYgJbH!E z7X%*fcIcmASvx9@aB7M3M^B$Jr$=aiTXzuk00! zJpmzQ^UX)_5)tmt7mg?F>j%gDdfJBcs&raYSJ*U|cg0 zS~bQ7L9;{V;zP29TThFt0A!#=<3S2qR!hXB60%ZF$`xJbr`!0_wN{_k1cX$LOn5fy zlOp&g`?<%wp2&KK7#8-M6z5hkQ00fgB22?AZ@{VsHmg0fkOT1Y_7=W1Y4te~5P#d``})931k9*mv7yo` z(gtN7F6M;eDFy@b#>+vR)(W;ysT!56p2!Umy$t-O*P-uE!WUzKSU$s@qK(&x@Db~Z z?pgbYnwT{wQ-wfv?~u0LH9NK0$Cp@D1jYug>SMeep%6zE0eUx_RY`x>HyFh&z!~YO+e=!Y2OhrHvLGdC!q~pT{TV zs^}~>p*Vevi&HHezw0QynR~_n5G(8aNKxRqc%2j=&Xwjpkv2>dl9EtIx^}QI0N^iW zg0fNl*MPA~$fov=BE1#AjOISgTzvBl{G5P8WeFa#ptVCAk8W)$z{Y+=M>*ORH*sUjCSb(Ek&@10sQmKk+qeCLYEniecR05vg zvp2!Yly1!1C%-;Ub?4|$5s0&A`Iem)eryrU(Nw!5KH;Gj^^9UHl}z%iM$|cuu4nh7 za`s#FY@;OqUY0ohg*)i?5s1|dz734;=9AsOLdj_bgo9Va1D^^fnryi6g{8Y+$Tp$# zBN#%EVbQqBY)m~*)QVRm{2XNSL$d4Cfhl&0O$@x=n5 zE@5`zkca$!7~7uI%q1}xLGk*#3DGuM^x#eL6Qf(ZY*r$dVoh|_2J zmO};Zt+S=o0{8pX>B_qcFBuEZI#0&hM&8O=J@Hwtc;xm$_2+Z5b^AW9(^M#Xko33< zh~6vN9^4-Lptu)rwUY<1rI)=<>A7<}b72SF2*k91x_T9m$6Z-`$`vrI?^7-CRrv2t zHvDz(c2J+KP#xl7Ox6A>U%CLI@@8Lp!15z0BFmamjQ0O#?9|Teqk^A9>424 zR>qEnwVd%+@bCHV6KiB9SzlyC zv+OrtVPSzhQ#AhHJKa74oq4M$AS%{FA&kYz)b4Oxz&ivIyv*ld6AiF*tH0000Px$K}keGR7gwhlrc)gKoo}GOQx{!2!a=|v(au6CLpZdM6gl3f`wao5y3_w$xI>G z>J9W3TfE7W!Cl!bvy;tcOd*>p1m6E;-u(ZMF!F;V^I!*zzVY2k|H(?Fl>0)6D*zDD zkMtu*L^L(V%zjN%6vZtw-~9!UnXjv=nmX;4OO;X&0B{)@dS901%|f#Ulv0W`O`j0) zEC!UBpRKhQ#u)Mf-N*TTz5&3|Kd_}~AZJ^Bj$;`5@>#x=M zwM~;{*>RF24!YL|%FMH-X->4(AHKO@wJD`00Pxr&E@Z7e*IK`<`^nBO?Gu+}`)>_& zgB!-BW&c6IuDJN@KM2?n7q9&X1D(KXTtfDb0(2saxVZO_{i6ZrCYo4lDP;esz&=H= lanlSD4b652KQ?%D;5V4GkR7NnV+#NP002ovPDHLkV1fb)v3>vm literal 0 HcmV?d00001 diff --git a/static/novel/performance/per_bubble_modal.png b/static/novel/performance/per_bubble_modal.png new file mode 100644 index 0000000000000000000000000000000000000000..575a7837404c4e1c68d37fc4a36e8726789d9788 GIT binary patch literal 27397 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 literal 0 HcmV?d00001 diff --git a/static/novel/performance/per_nav_bar_bg.png b/static/novel/performance/per_nav_bar_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..99eece722893f7c2e3e2ee1dd2c7eb4159308adc GIT binary patch literal 74152 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

_)=( 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�KP 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 literal 0 HcmV?d00001 diff --git a/static/novel/performance/per_order.png b/static/novel/performance/per_order.png new file mode 100644 index 0000000000000000000000000000000000000000..3accbe88a017eb728dc18ab2e13e9454e242b433 GIT binary patch literal 551 zcmV+?0@(eDP)Px$;Ymb6R7gwhma$F(K@f&#a#v7T@BkJz)L3ew31IFpsEHQv1aMcXQJ+GL*m8mJ z2AZfrxp+sSiI&<@Y2pJ=P>`_8m{UlI;n-a?#KLQLX1>|k|KB}?8Gkrq9!v#nG#Up0 zz)aITQ*Bro=y_h6bAB}dZ5xJhtpZg7dY%{OoIe3TWB}=CnzoWkrCwyA(!hGXzMyHE zkBAGS#fj*hF}9q^WZq?}09YJXl!%_&?e=Oem+Oe2LZI*aI%Dh-0M-S? zu5?}BNhXtQQk)Rzy6!Om9Ev(0td|VK*q<60$R81llCaM(BHEi|m(U%K$X{0h2L1$q zP`iWzUDr*I$X|&`L><#K@5Utw&rpdZ5&RF77?N5@=tynbUITzRwQ^t4{eHjeIL@t- zXe`Ux0DubsP__jTZ7KtU?h1v%E+Uo`cX?PYmrufSgetWx>l6U?WS~S;bR6es>Z>hC zOe7L|EEYRQ#7zP8rqya~HJiPx$*GWV{R7gwhmcdE`F%X7lx`Fo42k60rZ=gp7g_JHRsG#pq+U?1Tde2=&EfjY9 z5(-vOx}^aHJ?a}M2>Sv(^pJKW+CmTRW>ZBxnA?(>`I5>1CyVgQ1AmzZGXYDb(mnvF zZnt}GyI^ae>$+n-f!!W$Ifm#8J#o~hFIFA63(-0!+k4B@FUa$9@7MdE!IiGhN zr-z91)5VGCZ8#h*ODW&dKvMxZ=Q+mM0{|?>6n#=ktx75TCa4j}IcJQqD*#wG6l*J` zcBGUlDb5IVUH1q84ooW_&!2^1xHmIU%O4SsQ^G#Nh^U@qm)IRn$)DK(wLbwM)-ERC zhx}~^BKA9-PWP)k;~Cn*O!5CfQ-`eQV_WL`ehC2b))hakF{ssQw^pJFf?$J)E)mhn z7DS{nnapOTQn3T-)wNo!T_QTO+~q;FT0M!&F{(5Of>Qvfr-2gDvFCY*Ghb~wQ3$~b zg~A0QZW^FBQ50$19h { + res.then((res) => res[0] ? reject(res[0]) : resolve(res[1])); + }); + }, +}); \ No newline at end of file diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..b27d1e3 --- /dev/null +++ b/uni.scss @@ -0,0 +1,77 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ +@import '@/uni_modules/uview-ui/theme.scss'; + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:12px; +$uni-font-size-base:14px; +$uni-font-size-lg:16; + +/* 图片尺寸 */ +$uni-img-size-sm:20px; +$uni-img-size-base:26px; +$uni-img-size-lg:40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:20px; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:26px; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:15px; diff --git a/uni_modules/uview-ui/LICENSE b/uni_modules/uview-ui/LICENSE new file mode 100644 index 0000000..4db40ef --- /dev/null +++ b/uni_modules/uview-ui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 www.uviewui.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/uni_modules/uview-ui/README.md b/uni_modules/uview-ui/README.md new file mode 100644 index 0000000..c78ff47 --- /dev/null +++ b/uni_modules/uview-ui/README.md @@ -0,0 +1,66 @@ +

+ logo +

+

uView 2.0

+

多平台快速开发的UI框架

+ +[![stars](https://img.shields.io/github/stars/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![forks](https://img.shields.io/github/forks/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![issues](https://img.shields.io/github/issues/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0/issues) +[![Website](https://img.shields.io/badge/uView-up-blue?style=flat-square)](https://uviewui.com) +[![release](https://img.shields.io/github/v/release/umicro/uView2.0?style=flat-square)](https://gitee.com/umicro/uView2.0/releases) +[![license](https://img.shields.io/github/license/umicro/uView2.0?style=flat-square)](https://en.wikipedia.org/wiki/MIT_License) + +## 说明 + +uView UI,是[uni-app](https://uniapp.dcloud.io/)全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水 + +## [官方文档:https://uviewui.com](https://uviewui.com) + + +## 预览 + +您可以通过**微信**扫码,查看最佳的演示效果。 +
+
+ + + +## 链接 + +- [官方文档](https://www.uviewui.com/) +- [更新日志](https://www.uviewui.com/components/changelog.html) +- [升级指南](https://www.uviewui.com/components/changeGuide.html) +- [关于我们](https://www.uviewui.com/cooperation/about.html) + +## 交流反馈 + +欢迎加入我们的QQ群交流反馈:[点此跳转](https://www.uviewui.com/components/addQQGroup.html) + +## 关于PR + +> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uView2.0是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。 +> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢! + +## 安装 + +#### **uni-app插件市场链接** —— [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593) + +请通过[官网安装文档](https://www.uviewui.com/components/install.html)了解更详细的内容 + +## 快速上手 + +请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容 + +## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` + +## 版权信息 +uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。 + diff --git a/uni_modules/uview-ui/changelog.md b/uni_modules/uview-ui/changelog.md new file mode 100644 index 0000000..f2bae72 --- /dev/null +++ b/uni_modules/uview-ui/changelog.md @@ -0,0 +1,362 @@ +## 2.0.36(2023-03-27) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 重构`deepClone` & `deepMerge`方法 +2. 其他优化 +## 2.0.34(2022-09-24) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. `u-input`、`u-textarea`增加`ignoreCompositionEvent`属性 +2. 修复`route`方法调用可能报错的问题 +3. 修复`u-no-network`组件`z-index`无效的问题 +4. 修复`textarea`组件在h5上confirmType=""报错的问题 +5. `u-rate`适配`nvue` +6. 优化验证手机号码的正则表达式(根据工信部发布的《电信网编号计划(2017年版)》进行修改。) +7. `form-item`添加`labelPosition`属性 +8. `u-calendar`修复`maxDate`设置为当前日期,并且当前时间大于08:00时无法显示日期列表的问题 (#724) +9. `u-radio`增加一个默认插槽用于自定义修改label内容 (#680) +10. 修复`timeFormat`函数在safari重的兼容性问题 (#664) +## 2.0.33(2022-06-17) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`loadmore`组件`lineColor`类型错误问题 +2. 修复`u-parse`组件`imgtap`、`linktap`不生效问题 +## 2.0.32(2022-06-16) +# uView2.0重磅发布,利剑出鞘,一统江湖 +1. `u-loadmore`新增自定义颜色、虚/实线 +2. 修复`u-swiper-action`组件部分平台不能上下滑动的问题 +3. 修复`u-list`回弹问题 +4. 修复`notice-bar`组件动画在低端安卓机可能会抖动的问题 +5. `u-loading-page`添加控制图标大小的属性`iconSize` +6. 修复`u-tooltip`组件`color`参数不生效的问题 +7. 修复`u--input`组件使用`blur`事件输出为`undefined`的bug +8. `u-code-input`组件新增键盘弹起时,是否自动上推页面参数`adjustPosition` +9. 修复`image`组件`load`事件无回调对象问题 +10. 修复`button`组件`loadingSize`设置无效问题 +10. 其他修复 +## 2.0.31(2022-04-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`upload`在`vue`页面上传成功后没有成功标志的问题 +2. 解决演示项目中微信小程序模拟上传图片一直出于上传中问题 +3. 修复`u-code-input`组件在`nvue`页面编译到`app`平台上光标异常问题(`app`去除此功能) +4. 修复`actionSheet`组件标题关闭按钮点击事件名称错误的问题 +5. 其他修复 +## 2.0.30(2022-04-04) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. `u-rate`增加`readonly`属性 +2. `tabs`滑块支持设置背景图片 +3. 修复`u-subsection` `mode`为`subsection`时,滑块样式不正确的问题 +4. `u-code-input`添加光标效果动画 +5. 修复`popup`的`open`事件不触发 +6. 修复`u-flex-column`无效的问题 +7. 修复`u-datetime-picker`索引在特定场合异常问题 +8. 修复`u-datetime-picker`最小时间字符串模板错误问题 +9. `u-swiper`添加`m3u8`验证 +10. `u-swiper`修改判断image和video逻辑 +11. 修复`swiper`无法使用本地图片问题,增加`type`参数 +12. 修复`u-row-notice`格式错误问题 +13. 修复`u-switch`组件当`unit`为`rpx`时,`nodeStyle`消失的问题 +14. 修复`datetime-picker`组件`showToolbar`与`visibleItemCount`属性无效的问题 +15. 修复`upload`组件条件编译位置判断错误,导致`previewImage`属性设置为`false`时,整个组件都会被隐藏的问题 +16. 修复`u-checkbox-group`设置`shape`属性无效的问题 +17. 修复`u-upload`的`capture`传入字符串的时候不生效的问题 +18. 修复`u-action-sheet`组件,关闭事件逻辑错误的问题 +19. 修复`u-list`触顶事件的触发错误的问题 +20. 修复`u-text`只有手机号可拨打的问题 +21. 修复`u-textarea`不能换行的问题 +22. 其他修复 +## 2.0.29(2022-03-13) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`u--text`组件设置`decoration`属性未生效的问题 +2. 修复`u-datetime-picker`使用`formatter`后返回值不正确 +3. 修复`u-datetime-picker` `intercept` 可能为undefined +4. 修复已设置单位 uni..config.unit = 'rpx'时,线型指示器 `transform` 的位置翻倍,导致指示器超出宽度 +5. 修复mixin中bem方法生成的类名在支付宝和字节小程序中失效 +6. 修复默认值传值为空的时候,打开`u-datetime-picker`报错,不能选中第一列时间的bug +7. 修复`u-datetime-picker`使用`formatter`后返回值不正确 +8. 修复`u-image`组件`loading`无效果的问题 +9. 修复`config.unit`属性设为`rpx`时,导航栏占用高度不足导致塌陷的问题 +10. 修复`u-datetime-picker`组件`itemHeight`无效问题 +11. 其他修复 +## 2.0.28(2022-02-22) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. search组件新增searchIconSize属性 +2. 兼容Safari/Webkit中传入时间格式如2022-02-17 12:00:56 +3. 修复text value.js 判断日期出format错误问题 +4. priceFormat格式化金额出现精度错误 +5. priceFormat在部分情况下出现精度损失问题 +6. 优化表单rules提示 +7. 修复avatar组件src为空时,展示状态不对 +8. 其他修复 +## 2.0.27(2022-01-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1.样式修复 +## 2.0.26(2022-01-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1.样式修复 +## 2.0.25(2022-01-27) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复text组件mode=price时,可能会导致精度错误的问题 +2. 添加$u.setConfig()方法,可设置uView内置的config, props, zIndex, color属性,详见:[修改uView内置配置方案](https://uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +3. 优化form组件在errorType=toast时,如果输入错误页面会有抖动的问题 +4. 修复$u.addUnit()对配置默认单位可能无效的问题 +## 2.0.24(2022-01-25) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复swiper在current指定非0时缩放有误 +2. 修复u-icon添加stop属性的时候报错 +3. 优化遗留的通过正则判断rpx单位的问题 +4. 优化Layout布局 vue使用gutter时,会超出固定区域 +5. 优化search组件高度单位问题(rpx -> px) +6. 修复u-image slot 加载和错误的图片失去了高度 +7. 修复u-index-list中footer插槽与header插槽存在性判断错误 +8. 修复部分机型下u-popup关闭时会闪烁 +9. 修复u-image在nvue-app下失去宽高 +10. 修复u-popup运行报错 +11. 修复u-tooltip报错 +12. 修复box-sizing在app下的警告 +13. 修复u-navbar在小程序中报运行时错误 +14. 其他修复 +## 2.0.23(2022-01-24) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复image组件在hx3.3.9的nvue下可能会显示异常的问题 +2. 修复col组件gutter参数带rpx单位处理不正确的问题 +3. 修复text组件单行时无法显示省略号的问题 +4. navbar添加titleStyle参数 +5. 升级到hx3.3.9可消除nvue下控制台样式警告的问题 +## 2.0.22(2022-01-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. $u.page()方法优化,避免在特殊场景可能报错的问题 +2. picker组件添加immediateChange参数 +3. 新增$u.pages()方法 +## 2.0.21(2022-01-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化:form组件在用户设置rules的时候提示用户model必传 +2. 优化遗留的通过正则判断rpx单位的问题 +3. 修复微信小程序环境中tabbar组件开启safeAreaInsetBottom属性后,placeholder高度填充不正确 +4. 修复swiper在current指定非0时缩放有误 +5. 修复u-icon添加stop属性的时候报错 +6. 修复upload组件在accept=all的时候没有作用 +7. 修复在text组件mode为phone时call属性无效的问题 +8. 处理u-form clearValidate方法 +9. 其他修复 +## 2.0.20(2022-01-14) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复calendar默认会选择一个日期,如果直接点确定的话,无法取到值的问题 +2. 修复Slider缺少disabled props 还有注释 +3. 修复u-notice-bar点击事件无法拿到index索引值的问题 +4. 修复u-collapse-item在vue文件下,app端自定义插槽不生效的问题 +5. 优化头像为空时显示默认头像 +6. 修复图片地址赋值后判断加载状态为完成问题 +7. 修复日历滚动到默认日期月份区域 +8. search组件暴露点击左边icon事件 +9. 修复u-form clearValidate方法不生效 +10. upload h5端增加返回文件参数(文件的name参数) +11. 处理upload选择文件后url为blob类型无法预览的问题 +12. u-code-input 修复输入框没有往左移出一半屏幕 +13. 修复Upload上传 disabled为true时,控制台报hoverClass类型错误 +14. 临时处理ios app下grid点击坍塌问题 +15. 其他修复 +## 2.0.19(2021-12-29) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化微信小程序包体积可在微信中预览,请升级HbuilderX3.3.4,同时在“运行->运行到小程序模拟器”中勾选“运行时是否压缩代码” +2. 优化微信小程序setData性能,处理某些方法如$u.route()无法在模板中使用的问题 +3. navbar添加autoBack参数 +4. 允许avatar组件的事件冒泡 +5. 修复cell组件报错问题 +6. 其他修复 +## 2.0.18(2021-12-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复app端编译报错问题 +2. 重新处理微信小程序端setData过大的性能问题 +3. 修复边框问题 +4. 修复最大最小月份不大于0则没有数据出现的问题 +5. 修复SwipeAction微信小程序端无法上下滑动问题 +6. 修复input的placeholder在小程序端默认显示为true问题 +7. 修复divider组件click事件无效问题 +8. 修复u-code-input maxlength 属性值为 String 类型时显示异常 +9. 修复当 grid只有 1到2时 在小程序端algin设置无效的问题 +10. 处理form-item的label为top时,取消错误提示的左边距 +11. 其他修复 +## 2.0.17(2021-12-26) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 解决HBuilderX3.3.3.20211225版本导致的样式问题 +2. calendar日历添加monthNum参数 +3. navbar添加center slot +## 2.0.16(2021-12-25) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 解决微信小程序setData性能问题 +2. 修复count-down组件change事件不触发问题 +## 2.0.15(2021-12-21) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复Cell单元格titleWidth无效 +2. 修复cheakbox组件ischecked不更新 +3. 修复keyboard是否显示"."按键默认值问题 +4. 修复number-keyboard是否显示键盘的"."符号问题 +5. 修复Input输入框 readonly无效 +6. 修复u-avatar 导致打包app、H5时候报错问题 +7. 修复Upload上传deletable无效 +8. 修复upload当设置maxSize时无效的问题 +9. 修复tabs lineWidth传入带单位的字符串的时候偏移量计算错误问题 +10. 修复rate组件在有padding的view内,显示的星星位置和可触摸区域不匹配,无法正常选中星星 +## 2.0.13(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复配置默认单位为rpx可能会导致自定义导航栏高度异常的问题 +## 2.0.12(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复tabs组件在vue环境下划线消失的问题 +2. 修复upload组件在安卓小程序无法选择视频的问题 +3. 添加uni.$u.config.unit配置,用于配置参数默认单位,详见:[默认单位配置](https://www.uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +4. 修复textarea组件在没绑定v-model时,字符统计不生效问题 +5. 修复nvue下控制是否出现滚动条失效问题 +## 2.0.11(2021-12-13) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. text组件align参数无效的问题 +2. subsection组件添加keyName参数 +3. upload组件无法判断[Object file]类型的问题 +4. 处理notify层级过低问题 +5. codeInput组件添加disabledDot参数 +6. 处理actionSheet组件round参数无效的问题 +7. calendar组件添加round参数用于控制圆角值 +8. 处理swipeAction组件在vue环境下默认被打开的问题 +9. button组件的throttleTime节流参数无效的问题 +10. 解决u-notify手动关闭方法close()无效的问题 +11. input组件readonly不生效问题 +12. tag组件type参数为info不生效问题 +## 2.0.10(2021-12-08) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复button sendMessagePath属性不生效 +2. 修复DatetimePicker选择器title无效 +3. 修复u-toast设置loading=true不生效 +4. 修复u-text金额模式传0报错 +5. 修复u-toast组件的icon属性配置不生效 +6. button的icon在特殊场景下的颜色优化 +7. IndexList优化,增加# +## 2.0.9(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化swiper的height支持100%值(仅vue有效),修复嵌入视频时click事件无法触发的问题 +2. 优化tabs组件对list值为空的判断,或者动态变化list时重新计算相关尺寸的问题 +3. 优化datetime-picker组件逻辑,让其后续打开的默认值为上一次的选中值,需要通过v-model绑定值才有效 +4. 修复upload内嵌在其他组件中,选择图片可能不会换行的问题 +## 2.0.8(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复toast的position参数无效问题 +2. 处理input在ios nvue上无法获得焦点的问题 +3. avatar-group组件添加extraValue参数,让剩余展示数量可手动控制 +4. tabs组件添加keyName参数用于配置从对象中读取的键名 +5. 处理text组件名字脱敏默认配置无效的问题 +6. 处理picker组件item文本太长换行问题 +## 2.0.7(2021-11-30) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复radio和checkbox动态改变v-model无效的问题。 +2. 优化form规则validator在微信小程序用法 +3. 修复backtop组件mode参数在微信小程序无效的问题 +4. 处理Album的previewFullImage属性无效的问题 +5. 处理u-datetime-picker组件mode='time'在选择改变时间时,控制台报错的问题 +## 2.0.6(2021-11-27) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 处理tag组件在vue下边框无效的问题。 +2. 处理popup组件圆角参数可能无效的问题。 +3. 处理tabs组件lineColor参数可能无效的问题。 +4. propgress组件在值很小时,显示异常的问题。 +## 2.0.5(2021-11-25) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. calendar在vue下显示异常问题。 +2. form组件labelPosition和errorType参数无效的问题 +3. input组件inputAlign无效的问题 +4. 其他一些修复 +## 2.0.4(2021-11-23) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +0. input组件缺失@confirm事件,以及subfix和prefix无效问题 +1. component.scss文件样式在vue下干扰全局布局问题 +2. 修复subsection在vue环境下表现异常的问题 +3. tag组件的bgColor等参数无效的问题 +4. upload组件不换行的问题 +5. 其他的一些修复处理 +## 2.0.3(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 处理modal的confirm回调事件拼写错误问题 +6. 处理input组件@input事件参数错误问题 +7. 其他一些修复 +## 2.0.2(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 +6. 优化loading-icon组件的scss写法问题,防止不兼容新版本scss +## 2.0.0(2020-11-15) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 + + diff --git a/uni_modules/uview-ui/components/u--form/u--form.vue b/uni_modules/uview-ui/components/u--form/u--form.vue new file mode 100644 index 0000000..fdfc212 --- /dev/null +++ b/uni_modules/uview-ui/components/u--form/u--form.vue @@ -0,0 +1,78 @@ + + + diff --git a/uni_modules/uview-ui/components/u--image/u--image.vue b/uni_modules/uview-ui/components/u--image/u--image.vue new file mode 100644 index 0000000..21b7ab1 --- /dev/null +++ b/uni_modules/uview-ui/components/u--image/u--image.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--input/u--input.vue b/uni_modules/uview-ui/components/u--input/u--input.vue new file mode 100644 index 0000000..1e58b01 --- /dev/null +++ b/uni_modules/uview-ui/components/u--input/u--input.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--text/u--text.vue b/uni_modules/uview-ui/components/u--text/u--text.vue new file mode 100644 index 0000000..44ee52a --- /dev/null +++ b/uni_modules/uview-ui/components/u--text/u--text.vue @@ -0,0 +1,44 @@ + + + diff --git a/uni_modules/uview-ui/components/u--textarea/u--textarea.vue b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue new file mode 100644 index 0000000..f4df0b9 --- /dev/null +++ b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue @@ -0,0 +1,48 @@ + + + diff --git a/uni_modules/uview-ui/components/u-action-sheet/props.js b/uni_modules/uview-ui/components/u-action-sheet/props.js new file mode 100644 index 0000000..e96e04f --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 操作菜单是否展示 (默认false) + show: { + type: Boolean, + default: uni.$u.props.actionSheet.show + }, + // 标题 + title: { + type: String, + default: uni.$u.props.actionSheet.title + }, + // 选项上方的描述信息 + description: { + type: String, + default: uni.$u.props.actionSheet.description + }, + // 数据 + actions: { + type: Array, + default: uni.$u.props.actionSheet.actions + }, + // 取消按钮的文字,不为空时显示按钮 + cancelText: { + type: String, + default: uni.$u.props.actionSheet.cancelText + }, + // 点击某个菜单项时是否关闭弹窗 + closeOnClickAction: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickAction + }, + // 处理底部安全区(默认true) + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.actionSheet.safeAreaInsetBottom + }, + // 小程序的打开方式 + openType: { + type: String, + default: uni.$u.props.actionSheet.openType + }, + // 点击遮罩是否允许关闭 (默认true) + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickOverlay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.actionSheet.round + } + } +} diff --git a/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..26d5d8d --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,278 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-album/props.js b/uni_modules/uview-ui/components/u-album/props.js new file mode 100644 index 0000000..75cdb37 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 图片地址,Array|Array形式 + urls: { + type: Array, + default: uni.$u.props.album.urls + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.album.keyName + }, + // 单图时,图片长边的长度 + singleSize: { + type: [String, Number], + default: uni.$u.props.album.singleSize + }, + // 多图时,图片边长 + multipleSize: { + type: [String, Number], + default: uni.$u.props.album.multipleSize + }, + // 多图时,图片水平和垂直之间的间隔 + space: { + type: [String, Number], + default: uni.$u.props.album.space + }, + // 单图时,图片缩放裁剪的模式 + singleMode: { + type: String, + default: uni.$u.props.album.singleMode + }, + // 多图时,图片缩放裁剪的模式 + multipleMode: { + type: String, + default: uni.$u.props.album.multipleMode + }, + // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.album.maxCount + }, + // 是否可以预览图片 + previewFullImage: { + type: Boolean, + default: uni.$u.props.album.previewFullImage + }, + // 每行展示图片数量,如设置,singleSize和multipleSize将会无效 + rowCount: { + type: [String, Number], + default: uni.$u.props.album.rowCount + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.album.showMore + } + } +} diff --git a/uni_modules/uview-ui/components/u-album/u-album.vue b/uni_modules/uview-ui/components/u-album/u-album.vue new file mode 100644 index 0000000..687e2d5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/u-album.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-alert/props.js b/uni_modules/uview-ui/components/u-alert/props.js new file mode 100644 index 0000000..4297e2c --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 显示文字 + title: { + type: String, + default: uni.$u.props.alert.title + }, + // 主题,success/warning/info/error + type: { + type: String, + default: uni.$u.props.alert.type + }, + // 辅助性文字 + description: { + type: String, + default: uni.$u.props.alert.description + }, + // 是否可关闭 + closable: { + type: Boolean, + default: uni.$u.props.alert.closable + }, + // 是否显示图标 + showIcon: { + type: Boolean, + default: uni.$u.props.alert.showIcon + }, + // 浅或深色调,light-浅色,dark-深色 + effect: { + type: String, + default: uni.$u.props.alert.effect + }, + // 文字是否居中 + center: { + type: Boolean, + default: uni.$u.props.alert.center + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.alert.fontSize + } + } +} diff --git a/uni_modules/uview-ui/components/u-alert/u-alert.vue b/uni_modules/uview-ui/components/u-alert/u-alert.vue new file mode 100644 index 0000000..81f7d43 --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/u-alert.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar-group/props.js b/uni_modules/uview-ui/components/u-avatar-group/props.js new file mode 100644 index 0000000..58b42ac --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/props.js @@ -0,0 +1,52 @@ +export default { + props: { + // 头像图片组 + urls: { + type: Array, + default: uni.$u.props.avatarGroup.urls + }, + // 最多展示的头像数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.avatarGroup.maxCount + }, + // 头像形状 + shape: { + type: String, + default: uni.$u.props.avatarGroup.shape + }, + // 图片裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatarGroup.mode + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.avatarGroup.showMore + }, + // 头像大小 + size: { + type: [String, Number], + default: uni.$u.props.avatarGroup.size + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.avatarGroup.keyName + }, + // 头像之间的遮挡比例 + gap: { + type: [String, Number], + validator(value) { + return value >= 0 && value <= 1 + }, + default: uni.$u.props.avatarGroup.gap + }, + // 需额外显示的值 + extraValue: { + type: [Number, String], + default: uni.$u.props.avatarGroup.extraValue + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 0000000..7e996d7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar/props.js b/uni_modules/uview-ui/components/u-avatar/props.js new file mode 100644 index 0000000..34ca0f2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/props.js @@ -0,0 +1,78 @@ +export default { + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: uni.$u.props.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: uni.$u.props.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: uni.$u.props.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: uni.$u.props.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: uni.$u.props.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: uni.$u.props.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: uni.$u.props.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return uni.$u.test.range(n, [0, 19]) || n === '' + }, + default: uni.$u.props.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: uni.$u.props.avatar.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar/u-avatar.vue b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..3319be5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-back-top/props.js b/uni_modules/uview-ui/components/u-back-top/props.js new file mode 100644 index 0000000..6c702c2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 返回顶部的形状,circle-圆形,square-方形 + mode: { + type: String, + default: uni.$u.props.backtop.mode + }, + // 自定义图标 + icon: { + type: String, + default: uni.$u.props.backtop.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.backtop.text + }, + // 返回顶部滚动时间 + duration: { + type: [String, Number], + default: uni.$u.props.backtop.duration + }, + // 滚动距离 + scrollTop: { + type: [String, Number], + default: uni.$u.props.backtop.scrollTop + }, + // 距离顶部多少距离显示,单位px + top: { + type: [String, Number], + default: uni.$u.props.backtop.top + }, + // 返回顶部按钮到底部的距离,单位px + bottom: { + type: [String, Number], + default: uni.$u.props.backtop.bottom + }, + // 返回顶部按钮到右边的距离,单位px + right: { + type: [String, Number], + default: uni.$u.props.backtop.right + }, + // 层级 + zIndex: { + type: [String, Number], + default: uni.$u.props.backtop.zIndex + }, + // 图标的样式,对象形式 + iconStyle: { + type: Object, + default: uni.$u.props.backtop.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-back-top/u-back-top.vue b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..2d07566 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-badge/props.js b/uni_modules/uview-ui/components/u-badge/props.js new file mode 100644 index 0000000..74c032c --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/props.js @@ -0,0 +1,72 @@ +export default { + props: { + // 是否显示圆点 + isDot: { + type: Boolean, + default: uni.$u.props.badge.isDot + }, + // 显示的内容 + value: { + type: [Number, String], + default: uni.$u.props.badge.value + }, + // 是否显示 + show: { + type: Boolean, + default: uni.$u.props.badge.show + }, + // 最大值,超过最大值会显示 '{max}+' + max: { + type: [Number, String], + default: uni.$u.props.badge.max + }, + // 主题类型,error|warning|success|primary + type: { + type: String, + default: uni.$u.props.badge.type + }, + // 当数值为 0 时,是否展示 Badge + showZero: { + type: Boolean, + default: uni.$u.props.badge.showZero + }, + // 背景颜色,优先级比type高,如设置,type参数会失效 + bgColor: { + type: [String, null], + default: uni.$u.props.badge.bgColor + }, + // 字体颜色 + color: { + type: [String, null], + default: uni.$u.props.badge.color + }, + // 徽标形状,circle-四角均为圆角,horn-左下角为直角 + shape: { + type: String, + default: uni.$u.props.badge.shape + }, + // 设置数字的显示方式,overflow|ellipsis|limit + // overflow会根据max字段判断,超出显示`${max}+` + // ellipsis会根据max判断,超出显示`${max}...` + // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数 + numberType: { + type: String, + default: uni.$u.props.badge.numberType + }, + // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效 + offset: { + type: Array, + default: uni.$u.props.badge.offset + }, + // 是否反转背景和字体颜色 + inverted: { + type: Boolean, + default: uni.$u.props.badge.inverted + }, + // 是否绝对定位 + absolute: { + type: Boolean, + default: uni.$u.props.badge.absolute + } + } +} diff --git a/uni_modules/uview-ui/components/u-badge/u-badge.vue b/uni_modules/uview-ui/components/u-badge/u-badge.vue new file mode 100644 index 0000000..53cfc81 --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/u-badge.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/nvue.scss b/uni_modules/uview-ui/components/u-button/nvue.scss new file mode 100644 index 0000000..490db7d --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/nvue.scss @@ -0,0 +1,46 @@ +$u-button-active-opacity:0.75 !default; +$u-button-loading-text-margin-left:4px !default; +$u-button-text-color: #FFFFFF !default; +$u-button-text-plain-error-color:$u-error !default; +$u-button-text-plain-warning-color:$u-warning !default; +$u-button-text-plain-success-color:$u-success !default; +$u-button-text-plain-info-color:$u-info !default; +$u-button-text-plain-primary-color:$u-primary !default; +.u-button { + &--active { + opacity: $u-button-active-opacity; + } + + &--active--plain { + background-color: rgb(217, 217, 217); + } + + &__loading-text { + margin-left:$u-button-loading-text-margin-left; + } + + &__text, + &__loading-text { + color:$u-button-text-color; + } + + &__text--plain--error { + color:$u-button-text-plain-error-color; + } + + &__text--plain--warning { + color:$u-button-text-plain-warning-color; + } + + &__text--plain--success{ + color:$u-button-text-plain-success-color; + } + + &__text--plain--info { + color:$u-button-text-plain-info-color; + } + + &__text--plain--primary { + color:$u-button-text-plain-primary-color; + } +} \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-button/props.js b/uni_modules/uview-ui/components/u-button/props.js new file mode 100644 index 0000000..07fd844 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/props.js @@ -0,0 +1,161 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-16 10:04:04 + * @LastAuthor : LQ + * @lastTime : 2021-08-16 10:04:24 + * @FilePath : /u-view2.0/uview-ui/components/u-button/props.js + */ +export default { + props: { + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.button.hairline + }, + // 按钮的预置样式,info,primary,error,warning,success + type: { + type: String, + default: uni.$u.props.button.type + }, + // 按钮尺寸,large,normal,small,mini + size: { + type: String, + default: uni.$u.props.button.size + }, + // 按钮形状,circle(两边为半圆),square(带圆角) + shape: { + type: String, + default: uni.$u.props.button.shape + }, + // 按钮是否镂空 + plain: { + type: Boolean, + default: uni.$u.props.button.plain + }, + // 是否禁止状态 + disabled: { + type: Boolean, + default: uni.$u.props.button.disabled + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.button.loading + }, + // 加载中提示文字 + loadingText: { + type: [String, Number], + default: uni.$u.props.button.loadingText + }, + // 加载状态图标类型 + loadingMode: { + type: String, + default: uni.$u.props.button.loadingMode + }, + // 加载图标大小 + loadingSize: { + type: [String, Number], + default: uni.$u.props.button.loadingSize + }, + // 开放能力,具体请看uniapp稳定关于button组件部分说明 + // https://uniapp.dcloud.io/component/button + openType: { + type: String, + default: uni.$u.props.button.openType + }, + // 用于
组件,点击分别会触发 组件的 submit/reset 事件 + // 取值为submit(提交表单),reset(重置表单) + formType: { + type: String, + default: uni.$u.props.button.formType + }, + // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + // 只微信小程序、QQ小程序有效 + appParameter: { + type: String, + default: uni.$u.props.button.appParameter + }, + // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效 + hoverStopPropagation: { + type: Boolean, + default: uni.$u.props.button.hoverStopPropagation + }, + // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效 + lang: { + type: String, + default: uni.$u.props.button.lang + }, + // 会话来源,open-type="contact"时有效。只微信小程序有效 + sessionFrom: { + type: String, + default: uni.$u.props.button.sessionFrom + }, + // 会话内消息卡片标题,open-type="contact"时有效 + // 默认当前标题,只微信小程序有效 + sendMessageTitle: { + type: String, + default: uni.$u.props.button.sendMessageTitle + }, + // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + // 默认当前分享路径,只微信小程序有效 + sendMessagePath: { + type: String, + default: uni.$u.props.button.sendMessagePath + }, + // 会话内消息卡片图片,open-type="contact"时有效 + // 默认当前页面截图,只微信小程序有效 + sendMessageImg: { + type: String, + default: uni.$u.props.button.sendMessageImg + }, + // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示, + // 用户点击后可以快速发送小程序消息,open-type="contact"时有效 + showMessageCard: { + type: Boolean, + default: uni.$u.props.button.showMessageCard + }, + // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取 + dataName: { + type: String, + default: uni.$u.props.button.dataName + }, + // 节流,一定时间内只能触发一次 + throttleTime: { + type: [String, Number], + default: uni.$u.props.button.throttleTime + }, + // 按住后多久出现点击态,单位毫秒 + hoverStartTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStartTime + }, + // 手指松开后点击态保留时间,单位毫秒 + hoverStayTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStayTime + }, + // 按钮文字,之所以通过props传入,是因为slot传入的话 + // nvue中无法控制文字的样式 + text: { + type: [String, Number], + default: uni.$u.props.button.text + }, + // 按钮图标 + icon: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮图标 + iconColor: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮颜色,支持传入linear-gradient渐变色 + color: { + type: String, + default: uni.$u.props.button.color + } + } +} diff --git a/uni_modules/uview-ui/components/u-button/u-button.vue b/uni_modules/uview-ui/components/u-button/u-button.vue new file mode 100644 index 0000000..5494351 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/u-button.vue @@ -0,0 +1,490 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/vue.scss b/uni_modules/uview-ui/components/u-button/vue.scss new file mode 100644 index 0000000..32019b2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/vue.scss @@ -0,0 +1,80 @@ +// nvue下hover-class无效 +$u-button-before-top:50% !default; +$u-button-before-left:50% !default; +$u-button-before-width:100% !default; +$u-button-before-height:100% !default; +$u-button-before-transform:translate(-50%, -50%) !default; +$u-button-before-opacity:0 !default; +$u-button-before-background-color:#000 !default; +$u-button-before-border-color:#000 !default; +$u-button-active-before-opacity:.15 !default; +$u-button-icon-margin-left:4px !default; +$u-button-plain-u-button-info-color:$u-info; +$u-button-plain-u-button-success-color:$u-success; +$u-button-plain-u-button-error-color:$u-error; +$u-button-plain-u-button-warning-color:$u-error; + +.u-button { + width: 100%; + + &__text { + white-space: nowrap; + line-height: 1; + } + + &:before { + position: absolute; + top:$u-button-before-top; + left:$u-button-before-left; + width:$u-button-before-width; + height:$u-button-before-height; + border: inherit; + border-radius: inherit; + transform:$u-button-before-transform; + opacity:$u-button-before-opacity; + content: " "; + background-color:$u-button-before-background-color; + border-color:$u-button-before-border-color; + } + + &--active { + &:before { + opacity: .15 + } + } + + &__icon+&__text:not(:empty), + &__loading-text { + margin-left:$u-button-icon-margin-left; + } + + &--plain { + &.u-button--primary { + color: $u-primary; + } + } + + &--plain { + &.u-button--info { + color:$u-button-plain-u-button-info-color; + } + } + + &--plain { + &.u-button--success { + color:$u-button-plain-u-button-success-color; + } + } + + &--plain { + &.u-button--error { + color:$u-button-plain-u-button-error-color; + } + } + + &--plain { + &.u-button--warning { + color:$u-button-plain-u-button-warning-color; + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/header.vue b/uni_modules/uview-ui/components/u-calendar/header.vue new file mode 100644 index 0000000..dc4f7d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/header.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/month.vue b/uni_modules/uview-ui/components/u-calendar/month.vue new file mode 100644 index 0000000..c20937f --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/month.vue @@ -0,0 +1,579 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/props.js b/uni_modules/uview-ui/components/u-calendar/props.js new file mode 100644 index 0000000..2ad7bc7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/props.js @@ -0,0 +1,144 @@ +export default { + props: { + // 日历顶部标题 + title: { + type: String, + default: uni.$u.props.calendar.title + }, + // 是否显示标题 + showTitle: { + type: Boolean, + default: uni.$u.props.calendar.showTitle + }, + // 是否显示副标题 + showSubtitle: { + type: Boolean, + default: uni.$u.props.calendar.showSubtitle + }, + // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 + mode: { + type: String, + default: uni.$u.props.calendar.mode + }, + // mode=range时,第一个日期底部的提示文字 + startText: { + type: String, + default: uni.$u.props.calendar.startText + }, + // mode=range时,最后一个日期底部的提示文字 + endText: { + type: String, + default: uni.$u.props.calendar.endText + }, + // 自定义列表 + customList: { + type: Array, + default: uni.$u.props.calendar.customList + }, + // 主题色,对底部按钮和选中日期有效 + color: { + type: String, + default: uni.$u.props.calendar.color + }, + // 最小的可选日期 + minDate: { + type: [String, Number], + default: uni.$u.props.calendar.minDate + }, + // 最大可选日期 + maxDate: { + type: [String, Number], + default: uni.$u.props.calendar.maxDate + }, + // 默认选中的日期,mode为multiple或range是必须为数组格式 + defaultDate: { + type: [Array, String, Date, null], + default: uni.$u.props.calendar.defaultDate + }, + // mode=multiple时,最多可选多少个日期 + maxCount: { + type: [String, Number], + default: uni.$u.props.calendar.maxCount + }, + // 日期行高 + rowHeight: { + type: [String, Number], + default: uni.$u.props.calendar.rowHeight + }, + // 日期格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.calendar.formatter + }, + // 是否显示农历 + showLunar: { + type: Boolean, + default: uni.$u.props.calendar.showLunar + }, + // 是否显示月份背景色 + showMark: { + type: Boolean, + default: uni.$u.props.calendar.showMark + }, + // 确定按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.calendar.confirmText + }, + // 确认按钮处于禁用状态时的文字 + confirmDisabledText: { + type: String, + default: uni.$u.props.calendar.confirmDisabledText + }, + // 是否显示日历弹窗 + show: { + type: Boolean, + default: uni.$u.props.calendar.show + }, + // 是否允许点击遮罩关闭日历 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.calendar.closeOnClickOverlay + }, + // 是否为只读状态,只读状态下禁止选择日期 + readonly: { + type: Boolean, + default: uni.$u.props.calendar.readonly + }, + // 是否展示确认按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.calendar.showConfirm + }, + // 日期区间最多可选天数,默认无限制,mode = range时有效 + maxRange: { + type: [Number, String], + default: uni.$u.props.calendar.maxRange + }, + // 范围选择超过最多可选天数时的提示文案,mode = range时有效 + rangePrompt: { + type: String, + default: uni.$u.props.calendar.rangePrompt + }, + // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 + showRangePrompt: { + type: Boolean, + default: uni.$u.props.calendar.showRangePrompt + }, + // 是否允许日期范围的起止时间为同一天,mode = range时有效 + allowSameDay: { + type: Boolean, + default: uni.$u.props.calendar.allowSameDay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.calendar.round + }, + // 最多展示月份数量 + monthNum: { + type: [Number, String], + default: 3 + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/u-calendar.vue b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..511f993 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/util.js b/uni_modules/uview-ui/components/u-calendar/util.js new file mode 100644 index 0000000..ca4736b --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/util.js @@ -0,0 +1,85 @@ +export default { + methods: { + // 设置月份数据 + setMonth() { + // 月初是周几 + const day = dayjs(this.date).date(1).day() + const start = day == 0 ? 6 : day - 1 + + // 本月天数 + const days = dayjs(this.date).endOf('month').format('D') + + // 上个月天数 + const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') + + // 日期数据 + const arr = [] + // 清空表格 + this.month = [] + + // 添加上月数据 + arr.push( + ...new Array(start).fill(1).map((e, i) => { + const day = prevDays - start + i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加本月数据 + arr.push( + ...new Array(days - 0).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + date: dayjs(this.date).date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加下个月 + arr.push( + ...new Array(42 - days - start).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 分割数组 + for (let n = 0; n < arr.length; n += 7) { + this.month.push( + arr.slice(n, n + 7).map((e, i) => { + e.index = i + n + + // 自定义信息 + const custom = this.customList.find((c) => c.date == e.date) + + // 农历 + if (this.lunar) { + const { + IDayCn, + IMonthCn + } = this.getLunar(e.date) + e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn + } + + return { + ...e, + ...custom + } + }) + ) + } + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/props.js b/uni_modules/uview-ui/components/u-car-keyboard/props.js new file mode 100644 index 0000000..3553647 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: false + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: false + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..51175b5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-cell-group/props.js b/uni_modules/uview-ui/components/u-cell-group/props.js new file mode 100644 index 0000000..350ef40 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 分组标题 + title: { + type: String, + default: uni.$u.props.cellGroup.title + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.cellGroup.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..a9508c0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,61 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-cell/props.js b/uni_modules/uview-ui/components/u-cell/props.js new file mode 100644 index 0000000..da03330 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/props.js @@ -0,0 +1,110 @@ +export default { + props: { + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.cell.title + }, + // 标题下方的描述信息 + label: { + type: [String, Number], + default: uni.$u.props.cell.label + }, + // 右侧的内容 + value: { + type: [String, Number], + default: uni.$u.props.cell.value + }, + // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址) + icon: { + type: String, + default: uni.$u.props.cell.icon + }, + // 是否禁用cell + disabled: { + type: Boolean, + default: uni.$u.props.cell.disabled + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.cell.border + }, + // 内容是否垂直居中(主要是针对右侧的value部分) + center: { + type: Boolean, + default: uni.$u.props.cell.center + }, + // 点击后跳转的URL地址 + url: { + type: String, + default: uni.$u.props.cell.url + }, + // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 + linkType: { + type: String, + default: uni.$u.props.cell.linkType + }, + // 是否开启点击反馈(表现为点击时加上灰色背景) + clickable: { + type: Boolean, + default: uni.$u.props.cell.clickable + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.cell.isLink + }, + // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) + required: { + type: Boolean, + default: uni.$u.props.cell.required + }, + // 右侧的图标箭头 + rightIcon: { + type: String, + default: uni.$u.props.cell.rightIcon + }, + // 右侧箭头的方向,可选值为:left,up,down + arrowDirection: { + type: String, + default: uni.$u.props.cell.arrowDirection + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.rightIconStyle + } + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.titleStyle + } + }, + // 单位元的大小,可选值为large + size: { + type: String, + default: uni.$u.props.cell.size + }, + // 点击cell是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.cell.stop + }, + // 标识符,cell被点击时返回 + name: { + type: [Number, String], + default: uni.$u.props.cell.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell/u-cell.vue b/uni_modules/uview-ui/components/u-cell/u-cell.vue new file mode 100644 index 0000000..b099c90 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/u-cell.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox-group/props.js b/uni_modules/uview-ui/components/u-checkbox-group/props.js new file mode 100644 index 0000000..2f818a1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/props.js @@ -0,0 +1,82 @@ +export default { + props: { + // 标识符 + name: { + type: String, + default: uni.$u.props.checkboxGroup.name + }, + // 绑定的值 + value: { + type: Array, + default: uni.$u.props.checkboxGroup.value + }, + // 形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.checkboxGroup.shape + }, + // 是否禁用全部checkbox + disabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.disabled + }, + + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkboxGroup.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkboxGroup.inactiveColor + }, + + // 整个组件的尺寸,默认px + size: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.size + }, + // 布局方式,row-横向,column-纵向 + placement: { + type: String, + default: uni.$u.props.checkboxGroup.placement + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.labelSize + }, + // label的字体颜色 + labelColor: { + type: [String], + default: uni.$u.props.checkboxGroup.labelColor + }, + // 是否禁止点击文本操作 + labelDisabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.labelDisabled + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkboxGroup.iconColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.iconSize + }, + // 勾选图标的对齐方式,left-左边,right-右边 + iconPlacement: { + type: String, + default: uni.$u.props.checkboxGroup.iconPlacement + }, + // 竖向配列时,是否显示下划线 + borderBottom: { + type: Boolean, + default: uni.$u.props.checkboxGroup.borderBottom + } + + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..7a6b4fa --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox/props.js b/uni_modules/uview-ui/components/u-checkbox/props.js new file mode 100644 index 0000000..93f4fd9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/props.js @@ -0,0 +1,69 @@ +export default { + props: { + // checkbox的名称 + name: { + type: [String, Number, Boolean], + default: uni.$u.props.checkbox.name + }, + // 形状,square为方形,circle为圆型 + shape: { + type: String, + default: uni.$u.props.checkbox.shape + }, + // 整体的大小 + size: { + type: [String, Number], + default: uni.$u.props.checkbox.size + }, + // 是否默认选中 + checked: { + type: Boolean, + default: uni.$u.props.checkbox.checked + }, + // 是否禁用 + disabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.disabled + }, + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkbox.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkbox.inactiveColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkbox.iconSize + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkbox.iconColor + }, + // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式 + label: { + type: [String, Number], + default: uni.$u.props.checkbox.label + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkbox.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.checkbox.labelColor + }, + // 是否禁止点击提示语选中复选框 + labelDisabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.labelDisabled + } + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..6429cca --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-circle-progress/props.js b/uni_modules/uview-ui/components/u-circle-progress/props.js new file mode 100644 index 0000000..d776cfb --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/props.js @@ -0,0 +1,8 @@ +export default { + props: { + percentage: { + type: [String, Number], + default: uni.$u.props.circleProgress.percentage + } + } +} diff --git a/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..d1ee286 --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code-input/props.js b/uni_modules/uview-ui/components/u-code-input/props.js new file mode 100644 index 0000000..0f016ee --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/props.js @@ -0,0 +1,79 @@ +export default { + props: { + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.codeInput.adjustPosition + }, + // 最大输入长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.codeInput.maxlength + }, + // 是否用圆点填充 + dot: { + type: Boolean, + default: uni.$u.props.codeInput.dot + }, + // 显示模式,box-盒子模式,line-底部横线模式 + mode: { + type: String, + default: uni.$u.props.codeInput.mode + }, + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.codeInput.hairline + }, + // 字符间的距离 + space: { + type: [String, Number], + default: uni.$u.props.codeInput.space + }, + // 预置值 + value: { + type: [String, Number], + default: uni.$u.props.codeInput.value + }, + // 是否自动获取焦点 + focus: { + type: Boolean, + default: uni.$u.props.codeInput.focus + }, + // 字体是否加粗 + bold: { + type: Boolean, + default: uni.$u.props.codeInput.bold + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.codeInput.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.codeInput.fontSize + }, + // 输入框的大小,宽等于高 + size: { + type: [String, Number], + default: uni.$u.props.codeInput.size + }, + // 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true + disabledKeyboard: { + type: Boolean, + default: uni.$u.props.codeInput.disabledKeyboard + }, + // 边框和线条颜色 + borderColor: { + type: String, + default: uni.$u.props.codeInput.borderColor + }, + // 是否禁止输入"."符号 + disabledDot: { + type: Boolean, + default: uni.$u.props.codeInput.disabledDot + } + } +} diff --git a/uni_modules/uview-ui/components/u-code-input/u-code-input.vue b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue new file mode 100644 index 0000000..96241cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code/props.js b/uni_modules/uview-ui/components/u-code/props.js new file mode 100644 index 0000000..eaf80d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/props.js @@ -0,0 +1,34 @@ +export default { + props: { + // 倒计时总秒数 + seconds: { + type: [String, Number], + default: uni.$u.props.code.seconds + }, + // 尚未开始时提示 + startText: { + type: String, + default: uni.$u.props.code.startText + }, + // 正在倒计时中的提示 + changeText: { + type: String, + default: uni.$u.props.code.changeText + }, + // 倒计时结束时的提示 + endText: { + type: String, + default: uni.$u.props.code.endText + }, + // 是否在H5刷新或各端返回再进入时继续倒计时 + keepRunning: { + type: Boolean, + default: uni.$u.props.code.keepRunning + }, + // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了 + uniqueKey: { + type: String, + default: uni.$u.props.code.uniqueKey + } + } +} diff --git a/uni_modules/uview-ui/components/u-code/u-code.vue b/uni_modules/uview-ui/components/u-code/u-code.vue new file mode 100644 index 0000000..f79a09a --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/u-code.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-col/props.js b/uni_modules/uview-ui/components/u-col/props.js new file mode 100644 index 0000000..0622251 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 占父容器宽度的多少等分,总分为12份 + span: { + type: [String, Number], + default: uni.$u.props.col.span + }, + // 指定栅格左侧的间隔数(总12栏) + offset: { + type: [String, Number], + default: uni.$u.props.col.offset + }, + // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`) + justify: { + type: String, + default: uni.$u.props.col.justify + }, + // 垂直对齐方式,可选值为top、center、bottom、stretch + align: { + type: String, + default: uni.$u.props.col.align + }, + // 文字对齐方式 + textAlign: { + type: String, + default: uni.$u.props.col.textAlign + } + } +} diff --git a/uni_modules/uview-ui/components/u-col/u-col.vue b/uni_modules/uview-ui/components/u-col/u-col.vue new file mode 100644 index 0000000..8be1517 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/u-col.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse-item/props.js b/uni_modules/uview-ui/components/u-collapse-item/props.js new file mode 100644 index 0000000..bd5749b --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 标题 + title: { + type: String, + default: uni.$u.props.collapseItem.title + }, + // 标题右侧内容 + value: { + type: String, + default: uni.$u.props.collapseItem.value + }, + // 标题下方的描述信息 + label: { + type: String, + default: uni.$u.props.collapseItem.label + }, + // 是否禁用折叠面板 + disabled: { + type: Boolean, + default: uni.$u.props.collapseItem.disabled + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.collapseItem.isLink + }, + // 是否开启点击反馈 + clickable: { + type: Boolean, + default: uni.$u.props.collapseItem.clickable + }, + // 是否显示内边框 + border: { + type: Boolean, + default: uni.$u.props.collapseItem.border + }, + // 标题的对齐方式 + align: { + type: String, + default: uni.$u.props.collapseItem.align + }, + // 唯一标识符 + name: { + type: [String, Number], + default: uni.$u.props.collapseItem.name + }, + // 标题左侧图片,可为绝对路径的图片或内置图标 + icon: { + type: String, + default: uni.$u.props.collapseItem.icon + }, + // 面板展开收起的过渡时间,单位ms + duration: { + type: Number, + default: uni.$u.props.collapseItem.duration + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..0e1b703 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse/props.js b/uni_modules/uview-ui/components/u-collapse/props.js new file mode 100644 index 0000000..7ee6d31 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 当前展开面板的name,非手风琴模式:[],手风琴模式:string | number + value: { + type: [String, Number, Array, null], + default: uni.$u.props.collapse.value + }, + // 是否手风琴模式 + accordion: { + type: Boolean, + default: uni.$u.props.collapse.accordion + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.collapse.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse/u-collapse.vue b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..fc188a2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-column-notice/props.js b/uni_modules/uview-ui/components/u-column-notice/props.js new file mode 100644 index 0000000..4809154 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/props.js @@ -0,0 +1,55 @@ +export default { + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: uni.$u.props.columnNotice.text + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.columnNotice.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.columnNotice.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.columnNotice.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.columnNotice.bgColor + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.columnNotice.fontSize + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.columnNotice.speed + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.columnNotice.step + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.columnNotice.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.columnNotice.disableTouch + } + } +} diff --git a/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..fc39532 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/props.js b/uni_modules/uview-ui/components/u-count-down/props.js new file mode 100644 index 0000000..d62f025 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 倒计时时长,单位ms + time: { + type: [String, Number], + default: uni.$u.props.countDown.time + }, + // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 + format: { + type: String, + default: uni.$u.props.countDown.format + }, + // 是否自动开始倒计时 + autoStart: { + type: Boolean, + default: uni.$u.props.countDown.autoStart + }, + // 是否展示毫秒倒计时 + millisecond: { + type: Boolean, + default: uni.$u.props.countDown.millisecond + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-down/u-count-down.vue b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..b5e85a6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/utils.js b/uni_modules/uview-ui/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/uni_modules/uview-ui/components/u-count-to/props.js b/uni_modules/uview-ui/components/u-count-to/props.js new file mode 100644 index 0000000..86873c1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 开始的数值,默认从0增长到某一个数 + startVal: { + type: [String, Number], + default: uni.$u.props.countTo.startVal + }, + // 要滚动的目标数值,必须 + endVal: { + type: [String, Number], + default: uni.$u.props.countTo.endVal + }, + // 滚动到目标数值的动画持续时间,单位为毫秒(ms) + duration: { + type: [String, Number], + default: uni.$u.props.countTo.duration + }, + // 设置数值后是否自动开始滚动 + autoplay: { + type: Boolean, + default: uni.$u.props.countTo.autoplay + }, + // 要显示的小数位数 + decimals: { + type: [String, Number], + default: uni.$u.props.countTo.decimals + }, + // 是否在即将到达目标数值的时候,使用缓慢滚动的效果 + useEasing: { + type: Boolean, + default: uni.$u.props.countTo.useEasing + }, + // 十进制分割 + decimal: { + type: [String, Number], + default: uni.$u.props.countTo.decimal + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.countTo.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.countTo.fontSize + }, + // 是否加粗字体 + bold: { + type: Boolean, + default: uni.$u.props.countTo.bold + }, + // 千位分隔符,类似金额的分割(¥23,321.05中的",") + separator: { + type: String, + default: uni.$u.props.countTo.separator + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-to/u-count-to.vue b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..417b732 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-datetime-picker/props.js b/uni_modules/uview-ui/components/u-datetime-picker/props.js new file mode 100644 index 0000000..f44c0f9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/props.js @@ -0,0 +1,116 @@ +export default { + props: { + // 是否打开组件 + show: { + type: Boolean, + default: uni.$u.props.datetimePicker.show + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: uni.$u.props.datetimePicker.showToolbar + }, + // 绑定值 + value: { + type: [String, Number], + default: uni.$u.props.datetimePicker.value + }, + // 顶部标题 + title: { + type: String, + default: uni.$u.props.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: uni.$u.props.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: uni.$u.props.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: uni.$u.props.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: uni.$u.props.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: uni.$u.props.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: uni.$u.props.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: uni.$u.props.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: uni.$u.props.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: uni.$u.props.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: uni.$u.props.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: uni.$u.props.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: uni.$u.props.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: uni.$u.props.datetimePicker.defaultIndex + } + } +} diff --git a/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 0000000..18d8dcc --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-divider/props.js b/uni_modules/uview-ui/components/u-divider/props.js new file mode 100644 index 0000000..1fa8359 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 是否虚线 + dashed: { + type: Boolean, + default: uni.$u.props.divider.dashed + }, + // 是否细线 + hairline: { + type: Boolean, + default: uni.$u.props.divider.hairline + }, + // 是否以点替代文字,优先于text字段起作用 + dot: { + type: Boolean, + default: uni.$u.props.divider.dot + }, + // 内容文本的位置,left-左边,center-中间,right-右边 + textPosition: { + type: String, + default: uni.$u.props.divider.textPosition + }, + // 文本内容 + text: { + type: [String, Number], + default: uni.$u.props.divider.text + }, + // 文本大小 + textSize: { + type: [String, Number], + default: uni.$u.props.divider.textSize + }, + // 文本颜色 + textColor: { + type: String, + default: uni.$u.props.divider.textColor + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.divider.lineColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-divider/u-divider.vue b/uni_modules/uview-ui/components/u-divider/u-divider.vue new file mode 100644 index 0000000..b629da6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/u-divider.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown-item/props.js b/uni_modules/uview-ui/components/u-dropdown-item/props.js new file mode 100644 index 0000000..501a1f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/props.js @@ -0,0 +1,36 @@ +export default { + props: { + // 当前选中项的value值 + value: { + type: [Number, String, Array], + default: '' + }, + // 菜单项标题 + title: { + type: [String, Number], + default: '' + }, + // 选项数据,如果传入了默认slot,此参数无效 + options: { + type: Array, + default() { + return [] + } + }, + // 是否禁用此菜单项 + disabled: { + type: Boolean, + default: false + }, + // 下拉弹窗的高度 + height: { + type: [Number, String], + default: 'auto' + }, + // 点击遮罩是否可以收起弹窗 + closeOnClickOverlay: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown/props.js b/uni_modules/uview-ui/components/u-dropdown/props.js new file mode 100644 index 0000000..5f8465e --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/props.js @@ -0,0 +1,65 @@ +export default { + props: { + // 标题选中时的样式 + activeStyle: { + type: [String, Object], + default: () => ({ + color: '#2979ff', + fontSize: '14px' + }) + }, + // 标题未选中时的样式 + inactiveStyle: { + type: [String, Object], + default: () => ({ + color: '#606266', + fontSize: '14px' + }) + }, + // 点击遮罩是否关闭菜单 + closeOnClickMask: { + type: Boolean, + default: true + }, + // 点击当前激活项标题是否关闭菜单 + closeOnClickSelf: { + type: Boolean, + default: true + }, + // 过渡时间 + duration: { + type: [Number, String], + default: 300 + }, + // 标题菜单的高度 + height: { + type: [Number, String], + default: 40 + }, + // 是否显示下边框 + borderBottom: { + type: Boolean, + default: false + }, + // 标题的字体大小 + titleSize: { + type: [Number, String], + default: 14 + }, + // 下拉出来的内容部分的圆角值 + borderRadius: { + type: [Number, String], + default: 0 + }, + // 菜单右侧的icon图标 + menuIcon: { + type: String, + default: 'arrow-down' + }, + // 菜单右侧图标的大小 + menuIconSize: { + type: [Number, String], + default: 14 + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-empty/props.js b/uni_modules/uview-ui/components/u-empty/props.js new file mode 100644 index 0000000..78662f8 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 内置图标名称,或图片路径,建议绝对路径 + icon: { + type: String, + default: uni.$u.props.empty.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.empty.text + }, + // 文字颜色 + textColor: { + type: String, + default: uni.$u.props.empty.textColor + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.empty.textSize + }, + // 图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.empty.iconColor + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.empty.iconSize + }, + // 选择预置的图标类型 + mode: { + type: String, + default: uni.$u.props.empty.mode + }, + // 图标宽度,单位px + width: { + type: [String, Number], + default: uni.$u.props.empty.width + }, + // 图标高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.empty.height + }, + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.empty.show + }, + // 组件距离上一个元素之间的距离,默认px单位 + marginTop: { + type: [String, Number], + default: uni.$u.props.empty.marginTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-empty/u-empty.vue b/uni_modules/uview-ui/components/u-empty/u-empty.vue new file mode 100644 index 0000000..03d6a27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/u-empty.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form-item/props.js b/uni_modules/uview-ui/components/u-form-item/props.js new file mode 100644 index 0000000..7b16655 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/props.js @@ -0,0 +1,48 @@ +export default { + props: { + // input的label提示语 + label: { + type: String, + default: uni.$u.props.formItem.label + }, + // 绑定的值 + prop: { + type: String, + default: uni.$u.props.formItem.prop + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: [String, Boolean], + default: uni.$u.props.formItem.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.formItem.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.formItem.labelWidth + }, + // 右侧图标 + rightIcon: { + type: String, + default: uni.$u.props.formItem.rightIcon + }, + // 左侧图标 + leftIcon: { + type: String, + default: uni.$u.props.formItem.leftIcon + }, + // 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置 + required: { + type: Boolean, + default: uni.$u.props.formItem.required + }, + leftIconStyle: { + type: [String, Object], + default: uni.$u.props.formItem.leftIconStyle, + } + } +} diff --git a/uni_modules/uview-ui/components/u-form-item/u-form-item.vue b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue new file mode 100644 index 0000000..6aa8d69 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form/props.js b/uni_modules/uview-ui/components/u-form/props.js new file mode 100644 index 0000000..f2a629c --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/props.js @@ -0,0 +1,45 @@ +export default { + props: { + // 当前form的需要验证字段的集合 + model: { + type: Object, + default: uni.$u.props.form.model + }, + // 验证规则 + rules: { + type: [Object, Function, Array], + default: uni.$u.props.form.rules + }, + // 有错误时的提示方式,message-提示信息,toast-进行toast提示 + // border-bottom-下边框呈现红色,none-无提示 + errorType: { + type: String, + default: uni.$u.props.form.errorType + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: Boolean, + default: uni.$u.props.form.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.form.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.form.labelWidth + }, + // lable字体的对齐方式 + labelAlign: { + type: String, + default: uni.$u.props.form.labelAlign + }, + // lable的样式,对象形式 + labelStyle: { + type: Object, + default: uni.$u.props.form.labelStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-form/u-form.vue b/uni_modules/uview-ui/components/u-form/u-form.vue new file mode 100644 index 0000000..fe2dde2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/u-form.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-gap/props.js b/uni_modules/uview-ui/components/u-gap/props.js new file mode 100644 index 0000000..89953e3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 背景颜色(默认transparent) + bgColor: { + type: String, + default: uni.$u.props.gap.bgColor + }, + // 分割槽高度,单位px(默认30) + height: { + type: [String, Number], + default: uni.$u.props.gap.height + }, + // 与上一个组件的距离 + marginTop: { + type: [String, Number], + default: uni.$u.props.gap.marginTop + }, + // 与下一个组件的距离 + marginBottom: { + type: [String, Number], + default: uni.$u.props.gap.marginBottom + } + } +} diff --git a/uni_modules/uview-ui/components/u-gap/u-gap.vue b/uni_modules/uview-ui/components/u-gap/u-gap.vue new file mode 100644 index 0000000..e4429f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/u-gap.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid-item/props.js b/uni_modules/uview-ui/components/u-grid-item/props.js new file mode 100644 index 0000000..06c3c66 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 宫格的name + name: { + type: [String, Number, null], + default: uni.$u.props.gridItem.name + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.gridItem.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue new file mode 100644 index 0000000..fc0c7cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid/props.js b/uni_modules/uview-ui/components/u-grid/props.js new file mode 100644 index 0000000..87b0f6a --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 分成几列 + col: { + type: [String, Number], + default: uni.$u.props.grid.col + }, + // 是否显示边框 + border: { + type: Boolean, + default: uni.$u.props.grid.border + }, + // 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右 + align: { + type: String, + default: uni.$u.props.grid.align + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid/u-grid.vue b/uni_modules/uview-ui/components/u-grid/u-grid.vue new file mode 100644 index 0000000..b43cc27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/u-grid.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-icon/icons.js b/uni_modules/uview-ui/components/u-icon/icons.js new file mode 100644 index 0000000..f4d0fe2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/icons.js @@ -0,0 +1,214 @@ +export default { + 'uicon-level': '\ue693', + 'uicon-column-line': '\ue68e', + 'uicon-checkbox-mark': '\ue807', + 'uicon-folder': '\ue7f5', + 'uicon-movie': '\ue7f6', + 'uicon-star-fill': '\ue669', + 'uicon-star': '\ue65f', + 'uicon-phone-fill': '\ue64f', + 'uicon-phone': '\ue622', + 'uicon-apple-fill': '\ue881', + 'uicon-chrome-circle-fill': '\ue885', + 'uicon-backspace': '\ue67b', + 'uicon-attach': '\ue632', + 'uicon-cut': '\ue948', + 'uicon-empty-car': '\ue602', + 'uicon-empty-coupon': '\ue682', + 'uicon-empty-address': '\ue646', + 'uicon-empty-favor': '\ue67c', + 'uicon-empty-permission': '\ue686', + 'uicon-empty-news': '\ue687', + 'uicon-empty-search': '\ue664', + 'uicon-github-circle-fill': '\ue887', + 'uicon-rmb': '\ue608', + 'uicon-person-delete-fill': '\ue66a', + 'uicon-reload': '\ue788', + 'uicon-order': '\ue68f', + 'uicon-server-man': '\ue6bc', + 'uicon-search': '\ue62a', + 'uicon-fingerprint': '\ue955', + 'uicon-more-dot-fill': '\ue630', + 'uicon-scan': '\ue662', + 'uicon-share-square': '\ue60b', + 'uicon-map': '\ue61d', + 'uicon-map-fill': '\ue64e', + 'uicon-tags': '\ue629', + 'uicon-tags-fill': '\ue651', + 'uicon-bookmark-fill': '\ue63b', + 'uicon-bookmark': '\ue60a', + 'uicon-eye': '\ue613', + 'uicon-eye-fill': '\ue641', + 'uicon-mic': '\ue64a', + 'uicon-mic-off': '\ue649', + 'uicon-calendar': '\ue66e', + 'uicon-calendar-fill': '\ue634', + 'uicon-trash': '\ue623', + 'uicon-trash-fill': '\ue658', + 'uicon-play-left': '\ue66d', + 'uicon-play-right': '\ue610', + 'uicon-minus': '\ue618', + 'uicon-plus': '\ue62d', + 'uicon-info': '\ue653', + 'uicon-info-circle': '\ue7d2', + 'uicon-info-circle-fill': '\ue64b', + 'uicon-question': '\ue715', + 'uicon-error': '\ue6d3', + 'uicon-close': '\ue685', + 'uicon-checkmark': '\ue6a8', + 'uicon-android-circle-fill': '\ue67e', + 'uicon-android-fill': '\ue67d', + 'uicon-ie': '\ue87b', + 'uicon-IE-circle-fill': '\ue889', + 'uicon-google': '\ue87a', + 'uicon-google-circle-fill': '\ue88a', + 'uicon-setting-fill': '\ue872', + 'uicon-setting': '\ue61f', + 'uicon-minus-square-fill': '\ue855', + 'uicon-plus-square-fill': '\ue856', + 'uicon-heart': '\ue7df', + 'uicon-heart-fill': '\ue851', + 'uicon-camera': '\ue7d7', + 'uicon-camera-fill': '\ue870', + 'uicon-more-circle': '\ue63e', + 'uicon-more-circle-fill': '\ue645', + 'uicon-chat': '\ue620', + 'uicon-chat-fill': '\ue61e', + 'uicon-bag-fill': '\ue617', + 'uicon-bag': '\ue619', + 'uicon-error-circle-fill': '\ue62c', + 'uicon-error-circle': '\ue624', + 'uicon-close-circle': '\ue63f', + 'uicon-close-circle-fill': '\ue637', + 'uicon-checkmark-circle': '\ue63d', + 'uicon-checkmark-circle-fill': '\ue635', + 'uicon-question-circle-fill': '\ue666', + 'uicon-question-circle': '\ue625', + 'uicon-share': '\ue631', + 'uicon-share-fill': '\ue65e', + 'uicon-shopping-cart': '\ue621', + 'uicon-shopping-cart-fill': '\ue65d', + 'uicon-bell': '\ue609', + 'uicon-bell-fill': '\ue640', + 'uicon-list': '\ue650', + 'uicon-list-dot': '\ue616', + 'uicon-zhihu': '\ue6ba', + 'uicon-zhihu-circle-fill': '\ue709', + 'uicon-zhifubao': '\ue6b9', + 'uicon-zhifubao-circle-fill': '\ue6b8', + 'uicon-weixin-circle-fill': '\ue6b1', + 'uicon-weixin-fill': '\ue6b2', + 'uicon-twitter-circle-fill': '\ue6ab', + 'uicon-twitter': '\ue6aa', + 'uicon-taobao-circle-fill': '\ue6a7', + 'uicon-taobao': '\ue6a6', + 'uicon-weibo-circle-fill': '\ue6a5', + 'uicon-weibo': '\ue6a4', + 'uicon-qq-fill': '\ue6a1', + 'uicon-qq-circle-fill': '\ue6a0', + 'uicon-moments-circel-fill': '\ue69a', + 'uicon-moments': '\ue69b', + 'uicon-qzone': '\ue695', + 'uicon-qzone-circle-fill': '\ue696', + 'uicon-baidu-circle-fill': '\ue680', + 'uicon-baidu': '\ue681', + 'uicon-facebook-circle-fill': '\ue68a', + 'uicon-facebook': '\ue689', + 'uicon-car': '\ue60c', + 'uicon-car-fill': '\ue636', + 'uicon-warning-fill': '\ue64d', + 'uicon-warning': '\ue694', + 'uicon-clock-fill': '\ue638', + 'uicon-clock': '\ue60f', + 'uicon-edit-pen': '\ue612', + 'uicon-edit-pen-fill': '\ue66b', + 'uicon-email': '\ue611', + 'uicon-email-fill': '\ue642', + 'uicon-minus-circle': '\ue61b', + 'uicon-minus-circle-fill': '\ue652', + 'uicon-plus-circle': '\ue62e', + 'uicon-plus-circle-fill': '\ue661', + 'uicon-file-text': '\ue663', + 'uicon-file-text-fill': '\ue665', + 'uicon-pushpin': '\ue7e3', + 'uicon-pushpin-fill': '\ue86e', + 'uicon-grid': '\ue673', + 'uicon-grid-fill': '\ue678', + 'uicon-play-circle': '\ue647', + 'uicon-play-circle-fill': '\ue655', + 'uicon-pause-circle-fill': '\ue654', + 'uicon-pause': '\ue8fa', + 'uicon-pause-circle': '\ue643', + 'uicon-eye-off': '\ue648', + 'uicon-eye-off-outline': '\ue62b', + 'uicon-gift-fill': '\ue65c', + 'uicon-gift': '\ue65b', + 'uicon-rmb-circle-fill': '\ue657', + 'uicon-rmb-circle': '\ue677', + 'uicon-kefu-ermai': '\ue656', + 'uicon-server-fill': '\ue751', + 'uicon-coupon-fill': '\ue8c4', + 'uicon-coupon': '\ue8ae', + 'uicon-integral': '\ue704', + 'uicon-integral-fill': '\ue703', + 'uicon-home-fill': '\ue964', + 'uicon-home': '\ue965', + 'uicon-hourglass-half-fill': '\ue966', + 'uicon-hourglass': '\ue967', + 'uicon-account': '\ue628', + 'uicon-plus-people-fill': '\ue626', + 'uicon-minus-people-fill': '\ue615', + 'uicon-account-fill': '\ue614', + 'uicon-thumb-down-fill': '\ue726', + 'uicon-thumb-down': '\ue727', + 'uicon-thumb-up': '\ue733', + 'uicon-thumb-up-fill': '\ue72f', + 'uicon-lock-fill': '\ue979', + 'uicon-lock-open': '\ue973', + 'uicon-lock-opened-fill': '\ue974', + 'uicon-lock': '\ue97a', + 'uicon-red-packet-fill': '\ue690', + 'uicon-photo-fill': '\ue98b', + 'uicon-photo': '\ue98d', + 'uicon-volume-off-fill': '\ue659', + 'uicon-volume-off': '\ue644', + 'uicon-volume-fill': '\ue670', + 'uicon-volume': '\ue633', + 'uicon-red-packet': '\ue691', + 'uicon-download': '\ue63c', + 'uicon-arrow-up-fill': '\ue6b0', + 'uicon-arrow-down-fill': '\ue600', + 'uicon-play-left-fill': '\ue675', + 'uicon-play-right-fill': '\ue676', + 'uicon-rewind-left-fill': '\ue679', + 'uicon-rewind-right-fill': '\ue67a', + 'uicon-arrow-downward': '\ue604', + 'uicon-arrow-leftward': '\ue601', + 'uicon-arrow-rightward': '\ue603', + 'uicon-arrow-upward': '\ue607', + 'uicon-arrow-down': '\ue60d', + 'uicon-arrow-right': '\ue605', + 'uicon-arrow-left': '\ue60e', + 'uicon-arrow-up': '\ue606', + 'uicon-skip-back-left': '\ue674', + 'uicon-skip-forward-right': '\ue672', + 'uicon-rewind-right': '\ue66f', + 'uicon-rewind-left': '\ue671', + 'uicon-arrow-right-double': '\ue68d', + 'uicon-arrow-left-double': '\ue68c', + 'uicon-wifi-off': '\ue668', + 'uicon-wifi': '\ue667', + 'uicon-empty-data': '\ue62f', + 'uicon-empty-history': '\ue684', + 'uicon-empty-list': '\ue68b', + 'uicon-empty-page': '\ue627', + 'uicon-empty-order': '\ue639', + 'uicon-man': '\ue697', + 'uicon-woman': '\ue69c', + 'uicon-man-add': '\ue61c', + 'uicon-man-add-fill': '\ue64c', + 'uicon-man-delete': '\ue61a', + 'uicon-man-delete-fill': '\ue66a', + 'uicon-zh': '\ue70a', + 'uicon-en': '\ue692' +} diff --git a/uni_modules/uview-ui/components/u-icon/props.js b/uni_modules/uview-ui/components/u-icon/props.js new file mode 100644 index 0000000..71845b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/props.js @@ -0,0 +1,89 @@ +export default { + props: { + // 图标类名 + name: { + type: String, + default: uni.$u.props.icon.name + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: uni.$u.props.icon.color + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: uni.$u.props.icon.size + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: uni.$u.props.icon.bold + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: uni.$u.props.icon.index + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: uni.$u.props.icon.hoverClass + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: uni.$u.props.icon.customPrefix + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: uni.$u.props.icon.label + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: uni.$u.props.icon.labelPos + }, + // label的大小 + labelSize: { + type: [String, Number], + default: uni.$u.props.icon.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.icon.labelColor + }, + // label与图标的距离 + space: { + type: [String, Number], + default: uni.$u.props.icon.space + }, + // 图片的mode + imgMode: { + type: String, + default: uni.$u.props.icon.imgMode + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: uni.$u.props.icon.width + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: uni.$u.props.icon.height + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: uni.$u.props.icon.top + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.icon.stop + } + } +} diff --git a/uni_modules/uview-ui/components/u-icon/u-icon.vue b/uni_modules/uview-ui/components/u-icon/u-icon.vue new file mode 100644 index 0000000..9340328 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/u-icon.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-image/props.js b/uni_modules/uview-ui/components/u-image/props.js new file mode 100644 index 0000000..2eabb74 --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 图片地址 + src: { + type: String, + default: uni.$u.props.image.src + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.image.mode + }, + // 宽度,单位任意 + width: { + type: [String, Number], + default: uni.$u.props.image.width + }, + // 高度,单位任意 + height: { + type: [String, Number], + default: uni.$u.props.image.height + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: uni.$u.props.image.radius + }, + // 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序 + lazyLoad: { + type: Boolean, + default: uni.$u.props.image.lazyLoad + }, + // 开启长按图片显示识别微信小程序码菜单 + showMenuByLongpress: { + type: Boolean, + default: uni.$u.props.image.showMenuByLongpress + }, + // 加载中的图标,或者小图片 + loadingIcon: { + type: String, + default: uni.$u.props.image.loadingIcon + }, + // 加载失败的图标,或者小图片 + errorIcon: { + type: String, + default: uni.$u.props.image.errorIcon + }, + // 是否显示加载中的图标或者自定义的slot + showLoading: { + type: Boolean, + default: uni.$u.props.image.showLoading + }, + // 是否显示加载错误的图标或者自定义的slot + showError: { + type: Boolean, + default: uni.$u.props.image.showError + }, + // 是否需要淡入效果 + fade: { + type: Boolean, + default: uni.$u.props.image.fade + }, + // 只支持网络资源,只对微信小程序有效 + webp: { + type: Boolean, + default: uni.$u.props.image.webp + }, + // 过渡时间,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.image.duration + }, + // 背景颜色,用于深色页面加载图片时,为了和背景色融合 + bgColor: { + type: String, + default: uni.$u.props.image.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-image/u-image.vue b/uni_modules/uview-ui/components/u-image/u-image.vue new file mode 100644 index 0000000..473e35b --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/u-image.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-anchor/props.js b/uni_modules/uview-ui/components/u-index-anchor/props.js new file mode 100644 index 0000000..6d8b59a --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 列表锚点文本内容 + text: { + type: [String, Number], + default: uni.$u.props.indexAnchor.text + }, + // 列表锚点文字颜色 + color: { + type: String, + default: uni.$u.props.indexAnchor.color + }, + // 列表锚点文字大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.indexAnchor.size + }, + // 列表锚点背景颜色 + bgColor: { + type: String, + default: uni.$u.props.indexAnchor.bgColor + }, + // 列表锚点高度,单位默认px + height: { + type: [String, Number], + default: uni.$u.props.indexAnchor.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 0000000..b95ddef --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-item/props.js b/uni_modules/uview-ui/components/u-index-item/props.js new file mode 100644 index 0000000..7c11331 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/props.js @@ -0,0 +1,5 @@ +export default { + props: { + + } +} diff --git a/uni_modules/uview-ui/components/u-index-item/u-index-item.vue b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue new file mode 100644 index 0000000..0bc7fb3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-list/props.js b/uni_modules/uview-ui/components/u-index-list/props.js new file mode 100644 index 0000000..354d459 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 右边锚点非激活的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.indexList.inactiveColor + }, + // 右边锚点激活的颜色 + activeColor: { + type: String, + default: uni.$u.props.indexList.activeColor + }, + // 索引字符列表,数组形式 + indexList: { + type: Array, + default: uni.$u.props.indexList.indexList + }, + // 是否开启锚点自动吸顶 + sticky: { + type: Boolean, + default: uni.$u.props.indexList.sticky + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + default: uni.$u.props.indexList.customNavHeight + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-list/u-index-list.vue b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue new file mode 100644 index 0000000..d712618 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue @@ -0,0 +1,440 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-input/props.js b/uni_modules/uview-ui/components/u-input/props.js new file mode 100644 index 0000000..2c50870 --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/props.js @@ -0,0 +1,187 @@ +export default { + props: { + // 输入的值 + value: { + type: [String, Number], + default: uni.$u.props.input.value + }, + // 输入框类型 + // number-数字输入键盘,app-vue下可以输入浮点数,app-nvue和小程序平台下只能输入整数 + // idcard-身份证输入键盘,微信、支付宝、百度、QQ小程序 + // digit-带小数点的数字键盘,App的nvue页面、微信、支付宝、百度、头条、QQ小程序 + // text-文本输入键盘 + type: { + type: String, + default: uni.$u.props.input.type + }, + // 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true, + // 兼容性:微信小程序、百度小程序、字节跳动小程序、QQ小程序 + fixed: { + type: Boolean, + default: uni.$u.props.input.fixed + }, + // 是否禁用输入框 + disabled: { + type: Boolean, + default: uni.$u.props.input.disabled + }, + // 禁用状态时的背景色 + disabledColor: { + type: String, + default: uni.$u.props.input.disabledColor + }, + // 是否显示清除控件 + clearable: { + type: Boolean, + default: uni.$u.props.input.clearable + }, + // 是否密码类型 + password: { + type: Boolean, + default: uni.$u.props.input.password + }, + // 最大输入长度,设置为 -1 的时候不限制最大长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.input.maxlength + }, + // 输入框为空时的占位符 + placeholder: { + type: String, + default: uni.$u.props.input.placeholder + }, + // 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ + placeholderClass: { + type: String, + default: uni.$u.props.input.placeholderClass + }, + // 指定placeholder的样式 + placeholderStyle: { + type: [String, Object], + default: uni.$u.props.input.placeholderStyle + }, + // 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 + showWordLimit: { + type: Boolean, + default: uni.$u.props.input.showWordLimit + }, + // 设置右下角按钮的文字,有效值:send|search|next|go|done,兼容性详见uni-app文档 + // https://uniapp.dcloud.io/component/input + // https://uniapp.dcloud.io/component/textarea + confirmType: { + type: String, + default: uni.$u.props.input.confirmType + }, + // 点击键盘右下角按钮时是否保持键盘不收起,H5无效 + confirmHold: { + type: Boolean, + default: uni.$u.props.input.confirmHold + }, + // focus时,点击页面的时候不收起键盘,微信小程序有效 + holdKeyboard: { + type: Boolean, + default: uni.$u.props.input.holdKeyboard + }, + // 自动获取焦点 + // 在 H5 平台能否聚焦以及软键盘是否跟随弹出,取决于当前浏览器本身的实现。nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点 + focus: { + type: Boolean, + default: uni.$u.props.input.focus + }, + // 键盘收起时,是否自动失去焦点,目前仅App3.0.0+有效 + autoBlur: { + type: Boolean, + default: uni.$u.props.input.autoBlur + }, + // 是否去掉 iOS 下的默认内边距,仅微信小程序,且type=textarea时有效 + disableDefaultPadding: { + type: Boolean, + default: uni.$u.props.input.disableDefaultPadding + }, + // 指定focus时光标的位置 + cursor: { + type: [String, Number], + default: uni.$u.props.input.cursor + }, + // 输入框聚焦时底部与键盘的距离 + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.input.cursorSpacing + }, + // 光标起始位置,自动聚集时有效,需与selection-end搭配使用 + selectionStart: { + type: [String, Number], + default: uni.$u.props.input.selectionStart + }, + // 光标结束位置,自动聚集时有效,需与selection-start搭配使用 + selectionEnd: { + type: [String, Number], + default: uni.$u.props.input.selectionEnd + }, + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.input.adjustPosition + }, + // 输入框内容对齐方式,可选值为:left|center|right + inputAlign: { + type: String, + default: uni.$u.props.input.inputAlign + }, + // 输入框字体的大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.input.fontSize + }, + // 输入框字体颜色 + color: { + type: String, + default: uni.$u.props.input.color + }, + // 输入框前置图标 + prefixIcon: { + type: String, + default: uni.$u.props.input.prefixIcon + }, + // 前置图标样式,对象或字符串 + prefixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.prefixIconStyle + }, + // 输入框后置图标 + suffixIcon: { + type: String, + default: uni.$u.props.input.suffixIcon + }, + // 后置图标样式,对象或字符串 + suffixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.suffixIconStyle + }, + // 边框类型,surround-四周边框,bottom-底部边框,none-无边框 + border: { + type: String, + default: uni.$u.props.input.border + }, + // 是否只读,与disabled不同之处在于disabled会置灰组件,而readonly则不会 + readonly: { + type: Boolean, + default: uni.$u.props.input.readonly + }, + // 输入框形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.input.shape + }, + // 用于处理或者过滤输入框内容的方法 + formatter: { + type: [Function, null], + default: uni.$u.props.input.formatter + }, + // 是否忽略组件内对文本合成系统事件的处理 + ignoreCompositionEvent: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-input/u-input.vue b/uni_modules/uview-ui/components/u-input/u-input.vue new file mode 100644 index 0000000..30073eb --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/u-input.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-keyboard/props.js b/uni_modules/uview-ui/components/u-keyboard/props.js new file mode 100644 index 0000000..cfdb00a --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘 + mode: { + type: String, + default: uni.$u.props.keyboard.mode + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.keyboard.dotDisabled + }, + // 是否显示顶部工具条 + tooltip: { + type: Boolean, + default: uni.$u.props.keyboard.tooltip + }, + // 是否显示工具条中间的提示 + showTips: { + type: Boolean, + default: uni.$u.props.keyboard.showTips + }, + // 工具条中间的提示文字 + tips: { + type: String, + default: uni.$u.props.keyboard.tips + }, + // 是否显示工具条左边的"取消"按钮 + showCancel: { + type: Boolean, + default: uni.$u.props.keyboard.showCancel + }, + // 是否显示工具条右边的"完成"按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.keyboard.showConfirm + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.keyboard.random + }, + // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距 + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.keyboard.safeAreaInsetBottom + }, + // 是否允许通过点击遮罩关闭键盘 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.keyboard.closeOnClickOverlay + }, + // 控制键盘的弹出与收起 + show: { + type: Boolean, + default: uni.$u.props.keyboard.show + }, + // 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩 + overlay: { + type: Boolean, + default: uni.$u.props.keyboard.overlay + }, + // z-index值 + zIndex: { + type: [String, Number], + default: uni.$u.props.keyboard.zIndex + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.keyboard.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.keyboard.confirmText + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: uni.$u.props.keyboard.autoChange + } + } +} diff --git a/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue new file mode 100644 index 0000000..14228cb --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line-progress/props.js b/uni_modules/uview-ui/components/u-line-progress/props.js new file mode 100644 index 0000000..a4210bd --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/props.js @@ -0,0 +1,28 @@ +export default { + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: uni.$u.props.lineProgress.activeColor + }, + inactiveColor: { + type: String, + default: uni.$u.props.lineProgress.color + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: uni.$u.props.lineProgress.inactiveColor + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: uni.$u.props.lineProgress.showText + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.lineProgress.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue new file mode 100644 index 0000000..4e27931 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line/props.js b/uni_modules/uview-ui/components/u-line/props.js new file mode 100644 index 0000000..2308cc3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/props.js @@ -0,0 +1,33 @@ +export default { + props: { + color: { + type: String, + default: uni.$u.props.line.color + }, + // 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 + length: { + type: [String, Number], + default: uni.$u.props.line.length + }, + // 线条方向,col-竖向,row-横向 + direction: { + type: String, + default: uni.$u.props.line.direction + }, + // 是否显示细边框 + hairline: { + type: Boolean, + default: uni.$u.props.line.hairline + }, + // 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px" + margin: { + type: [String, Number], + default: uni.$u.props.line.margin + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: uni.$u.props.line.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-line/u-line.vue b/uni_modules/uview-ui/components/u-line/u-line.vue new file mode 100644 index 0000000..e0a6d92 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/u-line.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-link/props.js b/uni_modules/uview-ui/components/u-link/props.js new file mode 100644 index 0000000..d39353f --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/props.js @@ -0,0 +1,39 @@ +export default { + props: { + // 文字颜色 + color: { + type: String, + default: uni.$u.props.link.color + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.link.fontSize + }, + // 是否显示下划线 + underLine: { + type: Boolean, + default: uni.$u.props.link.underLine + }, + // 要跳转的链接 + href: { + type: String, + default: uni.$u.props.link.href + }, + // 小程序中复制到粘贴板的提示语 + mpTips: { + type: String, + default: uni.$u.props.link.mpTips + }, + // 下划线颜色 + lineColor: { + type: String, + default: uni.$u.props.link.lineColor + }, + // 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色 + text: { + type: String, + default: uni.$u.props.link.text + } + } +} diff --git a/uni_modules/uview-ui/components/u-link/u-link.vue b/uni_modules/uview-ui/components/u-link/u-link.vue new file mode 100644 index 0000000..c6802a5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/u-link.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list-item/props.js b/uni_modules/uview-ui/components/u-list-item/props.js new file mode 100644 index 0000000..58ddc49 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/props.js @@ -0,0 +1,9 @@ +export default { + props: { + // 用于滚动到指定item + anchor: { + type: [String, Number], + default: uni.$u.props.listItem.anchor + } + } +} diff --git a/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue new file mode 100644 index 0000000..1a25db6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list/props.js b/uni_modules/uview-ui/components/u-list/props.js new file mode 100644 index 0000000..25406f4 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/props.js @@ -0,0 +1,76 @@ +export default { + props: { + // 控制是否出现滚动条,仅nvue有效 + showScrollbar: { + type: Boolean, + default: uni.$u.props.list.showScrollbar + }, + // 距底部多少时触发scrolltolower事件 + lowerThreshold: { + type: [String, Number], + default: uni.$u.props.list.lowerThreshold + }, + // 距顶部多少时触发scrolltoupper事件,非nvue有效 + upperThreshold: { + type: [String, Number], + default: uni.$u.props.list.upperThreshold + }, + // 设置竖向滚动条位置 + scrollTop: { + type: [String, Number], + default: uni.$u.props.list.scrollTop + }, + // 控制 onscroll 事件触发的频率,仅nvue有效 + offsetAccuracy: { + type: [String, Number], + default: uni.$u.props.list.offsetAccuracy + }, + // 启用 flexbox 布局。开启后,当前节点声明了display: flex就会成为flex container,并作用于其孩子节点,仅微信小程序有效 + enableFlex: { + type: Boolean, + default: uni.$u.props.list.enableFlex + }, + // 是否按分页模式显示List,默认值false + pagingEnabled: { + type: Boolean, + default: uni.$u.props.list.pagingEnabled + }, + // 是否允许List滚动 + scrollable: { + type: Boolean, + default: uni.$u.props.list.scrollable + }, + // 值应为某子元素id(id不能以数字开头) + scrollIntoView: { + type: String, + default: uni.$u.props.list.scrollIntoView + }, + // 在设置滚动条位置时使用动画过渡 + scrollWithAnimation: { + type: Boolean, + default: uni.$u.props.list.scrollWithAnimation + }, + // iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只对微信小程序有效 + enableBackToTop: { + type: Boolean, + default: uni.$u.props.list.enableBackToTop + }, + // 列表的高度 + height: { + type: [String, Number], + default: uni.$u.props.list.height + }, + // 列表宽度 + width: { + type: [String, Number], + default: uni.$u.props.list.width + }, + // 列表前后预渲染的屏数,1代表一个屏幕的高度,1.5代表1个半屏幕高度 + preLoadScreen: { + type: [String, Number], + default: uni.$u.props.list.preLoadScreen + } + // vue下,是否开启虚拟列表 + + } +} diff --git a/uni_modules/uview-ui/components/u-list/u-list.vue b/uni_modules/uview-ui/components/u-list/u-list.vue new file mode 100644 index 0000000..4447cab --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/u-list.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-icon/props.js b/uni_modules/uview-ui/components/u-loading-icon/props.js new file mode 100644 index 0000000..c35524e --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.loadingIcon.show + }, + // 颜色 + color: { + type: String, + default: uni.$u.props.loadingIcon.color + }, + // 提示文字颜色 + textColor: { + type: String, + default: uni.$u.props.loadingIcon.textColor + }, + // 文字和图标是否垂直排列 + vertical: { + type: Boolean, + default: uni.$u.props.loadingIcon.vertical + }, + // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形 + mode: { + type: String, + default: uni.$u.props.loadingIcon.mode + }, + // 图标大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.loadingIcon.size + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.loadingIcon.textSize + }, + // 文字内容 + text: { + type: [String, Number], + default: uni.$u.props.loadingIcon.text + }, + // 动画模式 + timingFunction: { + type: String, + default: uni.$u.props.loadingIcon.timingFunction + }, + // 动画执行周期时间 + duration: { + type: [String, Number], + default: uni.$u.props.loadingIcon.duration + }, + // mode=circle时的暗边颜色 + inactiveColor: { + type: String, + default: uni.$u.props.loadingIcon.inactiveColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 0000000..2ede5c3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-page/props.js b/uni_modules/uview-ui/components/u-loading-page/props.js new file mode 100644 index 0000000..e239b61 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 提示内容 + loadingText: { + type: [String, Number], + default: uni.$u.props.loadingPage.loadingText + }, + // 文字上方用于替换loading动画的图片 + image: { + type: String, + default: uni.$u.props.loadingPage.image + }, + // 加载动画的模式,circle-圆形,spinner-花朵形,semicircle-半圆形 + loadingMode: { + type: String, + default: uni.$u.props.loadingPage.loadingMode + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.loadingPage.loading + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.loadingPage.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.loadingPage.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 加载中图标的颜色,只能rgb或者十六进制颜色值 + loadingColor: { + type: String, + default: uni.$u.props.loadingPage.loadingColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue new file mode 100644 index 0000000..03a78ad --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loadmore/props.js b/uni_modules/uview-ui/components/u-loadmore/props.js new file mode 100644 index 0000000..1e67d89 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/props.js @@ -0,0 +1,94 @@ +export default { + props: { + // 组件状态,loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态 + status: { + type: String, + default: uni.$u.props.loadmore.status + }, + // 组件背景色 + bgColor: { + type: String, + default: uni.$u.props.loadmore.bgColor + }, + // 是否显示加载中的图标 + icon: { + type: Boolean, + default: uni.$u.props.loadmore.icon + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadmore.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.loadmore.iconSize + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.loadmore.color + }, + // 加载中状态的图标,spinner-花朵状图标,circle-圆圈状,semicircle-半圆 + loadingIcon: { + type: String, + default: uni.$u.props.loadmore.loadingIcon + }, + // 加载前的提示语 + loadmoreText: { + type: String, + default: uni.$u.props.loadmore.loadmoreText + }, + // 加载中提示语 + loadingText: { + type: String, + default: uni.$u.props.loadmore.loadingText + }, + // 没有更多的提示语 + nomoreText: { + type: String, + default: uni.$u.props.loadmore.nomoreText + }, + // 在“没有更多”状态下,是否显示粗点 + isDot: { + type: Boolean, + default: uni.$u.props.loadmore.isDot + }, + // 加载中图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.loadmore.iconColor + }, + // 上边距 + marginTop: { + type: [String, Number], + default: uni.$u.props.loadmore.marginTop + }, + // 下边距 + marginBottom: { + type: [String, Number], + default: uni.$u.props.loadmore.marginBottom + }, + // 高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.loadmore.height + }, + // 是否显示左边分割线 + line: { + type: Boolean, + default: uni.$u.props.loadmore.line + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.loadmore.lineColor + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: uni.$u.props.loadmore.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue new file mode 100644 index 0000000..73c79fe --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-modal/props.js b/uni_modules/uview-ui/components/u-modal/props.js new file mode 100644 index 0000000..f76672c --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否展示modal + show: { + type: Boolean, + default: uni.$u.props.modal.show + }, + // 标题 + title: { + type: [String], + default: uni.$u.props.modal.title + }, + // 弹窗内容 + content: { + type: String, + default: uni.$u.props.modal.content + }, + // 确认文案 + confirmText: { + type: String, + default: uni.$u.props.modal.confirmText + }, + // 取消文案 + cancelText: { + type: String, + default: uni.$u.props.modal.cancelText + }, + // 是否显示确认按钮 + showConfirmButton: { + type: Boolean, + default: uni.$u.props.modal.showConfirmButton + }, + // 是否显示取消按钮 + showCancelButton: { + type: Boolean, + default: uni.$u.props.modal.showCancelButton + }, + // 确认按钮颜色 + confirmColor: { + type: String, + default: uni.$u.props.modal.confirmColor + }, + // 取消文字颜色 + cancelColor: { + type: String, + default: uni.$u.props.modal.cancelColor + }, + // 对调确认和取消的位置 + buttonReverse: { + type: Boolean, + default: uni.$u.props.modal.buttonReverse + }, + // 是否开启缩放效果 + zoom: { + type: Boolean, + default: uni.$u.props.modal.zoom + }, + // 是否异步关闭,只对确定按钮有效 + asyncClose: { + type: Boolean, + default: uni.$u.props.modal.asyncClose + }, + // 是否允许点击遮罩关闭modal + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.modal.closeOnClickOverlay + }, + // 给一个负的margin-top,往上偏移,避免和键盘重合的情况 + negativeTop: { + type: [String, Number], + default: uni.$u.props.modal.negativeTop + }, + // modal宽度,不支持百分比,可以数值,px,rpx单位 + width: { + type: [String, Number], + default: uni.$u.props.modal.width + }, + // 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮 + confirmButtonShape: { + type: String, + default: uni.$u.props.modal.confirmButtonShape + } + } +} diff --git a/uni_modules/uview-ui/components/u-modal/u-modal.vue b/uni_modules/uview-ui/components/u-modal/u-modal.vue new file mode 100644 index 0000000..2cbc737 --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/u-modal.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-navbar/props.js b/uni_modules/uview-ui/components/u-navbar/props.js new file mode 100644 index 0000000..5398de2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.navbar.safeAreaInsetTop + }, + // 固定在顶部时,是否生成一个等高元素,以防止塌陷 + placeholder: { + type: Boolean, + default: uni.$u.props.navbar.placeholder + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: uni.$u.props.navbar.fixed + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.navbar.border + }, + // 左边的图标 + leftIcon: { + type: String, + default: uni.$u.props.navbar.leftIcon + }, + // 左边的提示文字 + leftText: { + type: String, + default: uni.$u.props.navbar.leftText + }, + // 左右的提示文字 + rightText: { + type: String, + default: uni.$u.props.navbar.rightText + }, + // 右边的图标 + rightIcon: { + type: String, + default: uni.$u.props.navbar.rightIcon + }, + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.navbar.title + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.navbar.bgColor + }, + // 标题的宽度 + titleWidth: { + type: [String, Number], + default: uni.$u.props.navbar.titleWidth + }, + // 导航栏高度 + height: { + type: [String, Number], + default: uni.$u.props.navbar.height + }, + // 左侧返回图标的大小 + leftIconSize: { + type: [String, Number], + default: uni.$u.props.navbar.leftIconSize + }, + // 左侧返回图标的颜色 + leftIconColor: { + type: String, + default: uni.$u.props.navbar.leftIconColor + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: uni.$u.props.navbar.autoBack + }, + // 标题的样式,对象或字符串 + titleStyle: { + type: [String, Object], + default: uni.$u.props.navbar.titleStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-navbar/u-navbar.vue b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue new file mode 100644 index 0000000..2b206b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-no-network/props.js b/uni_modules/uview-ui/components/u-no-network/props.js new file mode 100644 index 0000000..9f3af62 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 页面文字提示 + tips: { + type: String, + default: uni.$u.props.noNetwork.tips + }, + // 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖 + zIndex: { + type: [String, Number], + default: uni.$u.props.noNetwork.zIndex + }, + // image 没有网络的图片提示 + image: { + type: String, + default: uni.$u.props.noNetwork.image + } + } +} diff --git a/uni_modules/uview-ui/components/u-no-network/u-no-network.vue b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue new file mode 100644 index 0000000..9710729 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-notice-bar/props.js b/uni_modules/uview-ui/components/u-notice-bar/props.js new file mode 100644 index 0000000..7040c29 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/props.js @@ -0,0 +1,70 @@ +export default { + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: uni.$u.props.noticeBar.text + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: uni.$u.props.noticeBar.direction + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.noticeBar.step + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.noticeBar.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.noticeBar.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.noticeBar.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.noticeBar.bgColor + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.noticeBar.speed + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.noticeBar.fontSize + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.noticeBar.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.noticeBar.disableTouch + }, + // 跳转的页面路径 + url: { + type: String, + default: uni.$u.props.noticeBar.url + }, + // 页面跳转的类型 + linkType: { + type: String, + default: uni.$u.props.noticeBar.linkType + } + } +} diff --git a/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 0000000..a06eb39 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,101 @@ + + + + diff --git a/uni_modules/uview-ui/components/u-notify/props.js b/uni_modules/uview-ui/components/u-notify/props.js new file mode 100644 index 0000000..57a9d71 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 到顶部的距离 + top: { + type: [String, Number], + default: uni.$u.props.notify.top + }, + // 是否展示组件 + // show: { + // type: Boolean, + // default: uni.$u.props.notify.show + // }, + // type主题,primary,success,warning,error + type: { + type: String, + default: uni.$u.props.notify.type + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.notify.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.notify.bgColor + }, + // 展示的文字内容 + message: { + type: String, + default: uni.$u.props.notify.message + }, + // 展示时长,为0时不消失,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.notify.duration + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.notify.fontSize + }, + // 是否留出顶部安全距离(状态栏高度) + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.notify.safeAreaInsetTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-notify/u-notify.vue b/uni_modules/uview-ui/components/u-notify/u-notify.vue new file mode 100644 index 0000000..30adb72 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/u-notify.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-box/props.js b/uni_modules/uview-ui/components/u-number-box/props.js new file mode 100644 index 0000000..fb0fa94 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/props.js @@ -0,0 +1,109 @@ +export default { + props: { + // 步进器标识符,在change回调返回 + name: { + type: [String, Number], + default: uni.$u.props.numberBox.name + }, + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + value: { + type: [String, Number], + default: uni.$u.props.numberBox.value + }, + // 最小值 + min: { + type: [String, Number], + default: uni.$u.props.numberBox.min + }, + // 最大值 + max: { + type: [String, Number], + default: uni.$u.props.numberBox.max + }, + // 加减的步长,可为小数 + step: { + type: [String, Number], + default: uni.$u.props.numberBox.step + }, + // 是否只允许输入整数 + integer: { + type: Boolean, + default: uni.$u.props.numberBox.integer + }, + // 是否禁用,包括输入框,加减按钮 + disabled: { + type: Boolean, + default: uni.$u.props.numberBox.disabled + }, + // 是否禁用输入框 + disabledInput: { + type: Boolean, + default: uni.$u.props.numberBox.disabledInput + }, + // 是否开启异步变更,开启后需要手动控制输入值 + asyncChange: { + type: Boolean, + default: uni.$u.props.numberBox.asyncChange + }, + // 输入框宽度,单位为px + inputWidth: { + type: [String, Number], + default: uni.$u.props.numberBox.inputWidth + }, + // 是否显示减少按钮 + showMinus: { + type: Boolean, + default: uni.$u.props.numberBox.showMinus + }, + // 是否显示增加按钮 + showPlus: { + type: Boolean, + default: uni.$u.props.numberBox.showPlus + }, + // 显示的小数位数 + decimalLength: { + type: [String, Number, null], + default: uni.$u.props.numberBox.decimalLength + }, + // 是否开启长按加减手势 + longPress: { + type: Boolean, + default: uni.$u.props.numberBox.longPress + }, + // 输入框文字和加减按钮图标的颜色 + color: { + type: String, + default: uni.$u.props.numberBox.color + }, + // 按钮大小,宽高等于此值,单位px,输入框高度和此值保持一致 + buttonSize: { + type: [String, Number], + default: uni.$u.props.numberBox.buttonSize + }, + // 输入框和按钮的背景颜色 + bgColor: { + type: String, + default: uni.$u.props.numberBox.bgColor + }, + // 指定光标于键盘的距离,避免键盘遮挡输入框,单位px + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.numberBox.cursorSpacing + }, + // 是否禁用增加按钮 + disablePlus: { + type: Boolean, + default: uni.$u.props.numberBox.disablePlus + }, + // 是否禁用减少按钮 + disableMinus: { + type: Boolean, + default: uni.$u.props.numberBox.disableMinus + }, + // 加减按钮图标的样式 + iconStyle: { + type: [Object, String], + default: uni.$u.props.numberBox.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-box/u-number-box.vue b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue new file mode 100644 index 0000000..69211c5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-keyboard/props.js b/uni_modules/uview-ui/components/u-number-keyboard/props.js new file mode 100644 index 0000000..5e3bf55 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘 + mode: { + type: String, + default: uni.$u.props.numberKeyboard.value + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.numberKeyboard.dotDisabled + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.numberKeyboard.random + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 0000000..4f505c6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-overlay/props.js b/uni_modules/uview-ui/components/u-overlay/props.js new file mode 100644 index 0000000..e6974df --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 是否显示遮罩 + show: { + type: Boolean, + default: uni.$u.props.overlay.show + }, + // 层级z-index + zIndex: { + type: [String, Number], + default: uni.$u.props.overlay.zIndex + }, + // 遮罩的过渡时间,单位为ms + duration: { + type: [String, Number], + default: uni.$u.props.overlay.duration + }, + // 不透明度值,当做rgba的第四个参数 + opacity: { + type: [String, Number], + default: uni.$u.props.overlay.opacity + } + } +} diff --git a/uni_modules/uview-ui/components/u-overlay/u-overlay.vue b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue new file mode 100644 index 0000000..92de4e9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-parse/node/node.vue b/uni_modules/uview-ui/components/u-parse/node/node.vue new file mode 100644 index 0000000..73e30fd --- /dev/null +++ b/uni_modules/uview-ui/components/u-parse/node/node.vue @@ -0,0 +1,499 @@ +