From 745f86f548cb32841643be1678963fd7005de209 Mon Sep 17 00:00:00 2001 From: guy Date: Sat, 6 Nov 2021 19:14:25 +0800 Subject: [PATCH] =?UTF-8?q?feature:=E9=80=82=E9=85=8Dfix=EF=BC=8C=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E7=AE=80=E5=8D=95=E7=89=88=E7=9A=84button=5Fgroup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tool/hg/fineui/swing/FineUIEngine.java | 16 +- .../fineui/swing/element/AbstractElement.java | 13 +- .../swing/element/AbstractSingleElement.java | 33 + .../fineui/swing/element/ButtonElement.java | 52 + .../tool/hg/fineui/swing/element/Element.java | 3 + .../hg/fineui/swing/element/LabelElement.java | 15 +- .../hg/fineui/swing/element/ListElement.java | 38 + .../hg/fineui/swing/element/TextElement.java | 3 +- .../swing/element/layout/CenterAdaptType.java | 3 +- .../element/layout/HorizontalAdaptType.java | 2 +- .../element/layout/VerticalAdaptType.java | 2 +- .../resources/com/fr/fineui/dist/README.md | 31 + .../com/fr/fineui/dist/fix/fix.compact.js | 199 + .../resources/com/fr/fineui/dist/fix/fix.js | 1526 ++++++++ .../com/fr/fineui/dist/fix/fix.proxy.js | 2035 +++++++++++ .../com/fr/fineui/dist/fix/worker.compact.js | 157 + .../com/fr/fineui/dist/font/iconfont.eot | Bin 0 -> 148516 bytes .../com/fr/fineui/dist/font/iconfont.svg | 1275 +++++++ .../com/fr/fineui/dist/font/iconfont.ttf | Bin 0 -> 148348 bytes .../com/fr/fineui/dist/font/iconfont.woff | Bin 0 -> 73736 bytes .../com/fr/fineui/dist/font/iconfont.woff2 | Bin 0 -> 58832 bytes .../dist/images/1x/background/auto_color.png | Bin 0 -> 771 bytes .../1x/background/auto_color_disable.png | Bin 0 -> 725 bytes .../1x/background/auto_color_normal.png | Bin 0 -> 637 bytes .../background/auto_color_normal_disable.png | Bin 0 -> 608 bytes .../background/auto_color_normal_select.png | Bin 0 -> 617 bytes .../1x/background/auto_color_select.png | Bin 0 -> 744 bytes .../dist/images/1x/background/line_conn.gif | Bin 0 -> 45 bytes .../dist/images/1x/background/marker.png | Bin 0 -> 652 bytes .../fineui/dist/images/1x/background/mask.png | Bin 0 -> 2020 bytes .../dist/images/1x/background/trans_color.png | Bin 0 -> 301 bytes .../images/1x/background/trans_disable.png | Bin 0 -> 200 bytes .../images/1x/background/trans_normal.png | Bin 0 -> 192 bytes .../images/1x/background/trans_select.png | Bin 0 -> 199 bytes .../dist/images/1x/background/wheel.png | Bin 0 -> 11733 bytes .../images/1x/icon/auto_no_square_normal.png | Bin 0 -> 707 bytes .../images/1x/icon/auto_square_normal.png | Bin 0 -> 508 bytes .../dist/images/1x/icon/check_box_active.png | Bin 0 -> 353 bytes .../dist/images/1x/icon/check_box_disable.png | Bin 0 -> 202 bytes .../images/1x/icon/check_box_disable2.png | Bin 0 -> 341 bytes .../dist/images/1x/icon/check_box_hover.png | Bin 0 -> 205 bytes .../dist/images/1x/icon/check_box_normal.png | Bin 0 -> 202 bytes .../1x/icon/dark/auto_square_normal.png | Bin 0 -> 500 bytes .../dist/images/1x/icon/dark/trans_normal.png | Bin 0 -> 448 bytes .../dist/images/1x/icon/dark/trans_select.png | Bin 0 -> 456 bytes .../images/1x/icon/dark/tree_collapse_1.png | Bin 0 -> 200 bytes .../images/1x/icon/dark/tree_collapse_2.png | Bin 0 -> 233 bytes .../images/1x/icon/dark/tree_collapse_3.png | Bin 0 -> 250 bytes .../images/1x/icon/dark/tree_collapse_4.png | Bin 0 -> 238 bytes .../images/1x/icon/dark/tree_expand_1.png | Bin 0 -> 179 bytes .../images/1x/icon/dark/tree_expand_2.png | Bin 0 -> 214 bytes .../images/1x/icon/dark/tree_expand_3.png | Bin 0 -> 231 bytes .../images/1x/icon/dark/tree_expand_4.png | Bin 0 -> 217 bytes .../1x/icon/dark/tree_vertical_line_1.png | Bin 0 -> 102 bytes .../1x/icon/dark/tree_vertical_line_2.png | Bin 0 -> 144 bytes .../1x/icon/dark/tree_vertical_line_3.png | Bin 0 -> 162 bytes .../1x/icon/dark/tree_vertical_line_4.png | Bin 0 -> 148 bytes .../1x/icon/dark/tree_vertical_line_5.png | Bin 0 -> 138 bytes .../fr/fineui/dist/images/1x/icon/dots.png | Bin 0 -> 2834 bytes .../dist/images/1x/icon/half_selected.png | Bin 0 -> 228 bytes .../images/1x/icon/half_selected_disable.png | Bin 0 -> 225 bytes .../dist/images/1x/icon/icon_down_arrow.png | Bin 0 -> 203 bytes .../fr/fineui/dist/images/1x/icon/loading.gif | Bin 0 -> 1810 bytes .../fineui/dist/images/1x/icon/push_down.png | Bin 0 -> 200 bytes .../fr/fineui/dist/images/1x/icon/push_up.png | Bin 0 -> 199 bytes .../dist/images/1x/icon/radio_active.png | Bin 0 -> 388 bytes .../dist/images/1x/icon/radio_disable.png | Bin 0 -> 371 bytes .../dist/images/1x/icon/radio_disable2.png | Bin 0 -> 398 bytes .../dist/images/1x/icon/radio_hover.png | Bin 0 -> 384 bytes .../dist/images/1x/icon/radio_normal.png | Bin 0 -> 382 bytes .../dist/images/1x/icon/slider_active.png | Bin 0 -> 416 bytes .../images/1x/icon/slider_active_small.png | Bin 0 -> 289 bytes .../dist/images/1x/icon/slider_normal.png | Bin 0 -> 425 bytes .../images/1x/icon/slider_normal_small.png | Bin 0 -> 233 bytes .../dist/images/1x/icon/trans_normal.png | Bin 0 -> 458 bytes .../dist/images/1x/icon/trans_select.png | Bin 0 -> 456 bytes .../dist/images/1x/icon/tree_collapse_1.png | Bin 0 -> 199 bytes .../dist/images/1x/icon/tree_collapse_2.png | Bin 0 -> 233 bytes .../dist/images/1x/icon/tree_collapse_3.png | Bin 0 -> 247 bytes .../dist/images/1x/icon/tree_collapse_4.png | Bin 0 -> 236 bytes .../dist/images/1x/icon/tree_expand_1.png | Bin 0 -> 179 bytes .../dist/images/1x/icon/tree_expand_2.png | Bin 0 -> 209 bytes .../dist/images/1x/icon/tree_expand_3.png | Bin 0 -> 226 bytes .../dist/images/1x/icon/tree_expand_4.png | Bin 0 -> 212 bytes .../images/1x/icon/tree_vertical_line_1.png | Bin 0 -> 102 bytes .../images/1x/icon/tree_vertical_line_2.png | Bin 0 -> 143 bytes .../images/1x/icon/tree_vertical_line_3.png | Bin 0 -> 162 bytes .../images/1x/icon/tree_vertical_line_4.png | Bin 0 -> 148 bytes .../images/1x/icon/tree_vertical_line_5.png | Bin 0 -> 138 bytes .../dist/images/1x/icon/wave_loading.gif | Bin 0 -> 5552 bytes .../2x/background/auto_color_disable.png | Bin 0 -> 1625 bytes .../2x/background/auto_color_normal.png | Bin 0 -> 1651 bytes .../2x/background/auto_color_select.png | Bin 0 -> 1633 bytes .../dist/images/2x/background/line_conn.gif | Bin 0 -> 45 bytes .../dist/images/2x/background/marker.png | Bin 0 -> 652 bytes .../fineui/dist/images/2x/background/mask.png | Bin 0 -> 2020 bytes .../images/2x/background/trans_normal.png | Bin 0 -> 534 bytes .../dist/images/2x/background/wheel.png | Bin 0 -> 11733 bytes .../images/2x/icon/auto_no_square_normal.png | Bin 0 -> 707 bytes .../dist/images/2x/icon/auto_normal.png | Bin 0 -> 1379 bytes .../dist/images/2x/icon/auto_select.png | Bin 0 -> 1361 bytes .../images/2x/icon/auto_square_normal.png | Bin 0 -> 996 bytes .../dist/images/2x/icon/check_box_active.png | Bin 0 -> 577 bytes .../dist/images/2x/icon/check_box_disable.png | Bin 0 -> 326 bytes .../images/2x/icon/check_box_disable2.png | Bin 0 -> 547 bytes .../dist/images/2x/icon/check_box_hover.png | Bin 0 -> 327 bytes .../dist/images/2x/icon/check_box_normal.png | Bin 0 -> 322 bytes .../2x/icon/dark/auto_square_normal.png | Bin 0 -> 980 bytes .../dist/images/2x/icon/dark/trans_normal.png | Bin 0 -> 957 bytes .../dist/images/2x/icon/dark/trans_select.png | Bin 0 -> 991 bytes .../images/2x/icon/dark/tree_collapse_1.png | Bin 0 -> 291 bytes .../images/2x/icon/dark/tree_collapse_2.png | Bin 0 -> 351 bytes .../images/2x/icon/dark/tree_collapse_3.png | Bin 0 -> 361 bytes .../images/2x/icon/dark/tree_collapse_4.png | Bin 0 -> 344 bytes .../images/2x/icon/dark/tree_expand_1.png | Bin 0 -> 273 bytes .../images/2x/icon/dark/tree_expand_2.png | Bin 0 -> 324 bytes .../images/2x/icon/dark/tree_expand_3.png | Bin 0 -> 335 bytes .../images/2x/icon/dark/tree_expand_4.png | Bin 0 -> 317 bytes .../2x/icon/dark/tree_vertical_line_1.png | Bin 0 -> 117 bytes .../2x/icon/dark/tree_vertical_line_2.png | Bin 0 -> 220 bytes .../2x/icon/dark/tree_vertical_line_3.png | Bin 0 -> 243 bytes .../2x/icon/dark/tree_vertical_line_4.png | Bin 0 -> 212 bytes .../2x/icon/dark/tree_vertical_line_5.png | Bin 0 -> 215 bytes .../fr/fineui/dist/images/2x/icon/dots.png | Bin 0 -> 135 bytes .../dist/images/2x/icon/half_selected.png | Bin 0 -> 368 bytes .../images/2x/icon/half_selected_disable.png | Bin 0 -> 369 bytes .../dist/images/2x/icon/icon_down_arrow.png | Bin 0 -> 288 bytes .../fr/fineui/dist/images/2x/icon/loading.gif | Bin 0 -> 1810 bytes .../fineui/dist/images/2x/icon/push_down.png | Bin 0 -> 249 bytes .../fr/fineui/dist/images/2x/icon/push_up.png | Bin 0 -> 209 bytes .../dist/images/2x/icon/radio_active.png | Bin 0 -> 719 bytes .../dist/images/2x/icon/radio_disable.png | Bin 0 -> 750 bytes .../dist/images/2x/icon/radio_disable2.png | Bin 0 -> 725 bytes .../dist/images/2x/icon/radio_hover.png | Bin 0 -> 789 bytes .../dist/images/2x/icon/radio_normal.png | Bin 0 -> 753 bytes .../dist/images/2x/icon/slider_active.png | Bin 0 -> 497 bytes .../images/2x/icon/slider_active_small.png | Bin 0 -> 289 bytes .../dist/images/2x/icon/slider_normal.png | Bin 0 -> 410 bytes .../images/2x/icon/slider_normal_small.png | Bin 0 -> 233 bytes .../dist/images/2x/icon/trans_normal.png | Bin 0 -> 985 bytes .../dist/images/2x/icon/trans_select.png | Bin 0 -> 991 bytes .../dist/images/2x/icon/tree_collapse_1.png | Bin 0 -> 289 bytes .../dist/images/2x/icon/tree_collapse_2.png | Bin 0 -> 345 bytes .../dist/images/2x/icon/tree_collapse_3.png | Bin 0 -> 351 bytes .../dist/images/2x/icon/tree_collapse_4.png | Bin 0 -> 334 bytes .../dist/images/2x/icon/tree_expand_1.png | Bin 0 -> 271 bytes .../dist/images/2x/icon/tree_expand_2.png | Bin 0 -> 319 bytes .../dist/images/2x/icon/tree_expand_3.png | Bin 0 -> 327 bytes .../dist/images/2x/icon/tree_expand_4.png | Bin 0 -> 309 bytes .../images/2x/icon/tree_vertical_line_1.png | Bin 0 -> 117 bytes .../images/2x/icon/tree_vertical_line_2.png | Bin 0 -> 219 bytes .../images/2x/icon/tree_vertical_line_3.png | Bin 0 -> 241 bytes .../images/2x/icon/tree_vertical_line_4.png | Bin 0 -> 210 bytes .../images/2x/icon/tree_vertical_line_5.png | Bin 0 -> 213 bytes .../dist/images/2x/icon/wave_loading.gif | Bin 0 -> 10956 bytes .../resources/com/fr/fineui/dist/router.js | 3200 +++++++++++++++++ .../hg/fineui/swing/base/single/button.js | 44 + .../fineui/swing/base/single/group.button.js | 45 + .../tool/hg/fineui/swing/base/single/label.js | 4 + .../tptj/tool/hg/fineui/swing/core/element.js | 9 +- .../tptj/tool/hg/fineui/swing/core/extra.js | 11 +- .../swing/core/wrapper/layout.horizontal.js | 12 +- .../swing/core/wrapper/layout.service.js | 30 + .../swing/core/wrapper/layout.vertical.js | 11 +- .../tool/hg/fineui/swing/demo/group.button.js | 75 + 165 files changed, 8797 insertions(+), 47 deletions(-) create mode 100644 src/main/java/com/tptj/tool/hg/fineui/swing/element/AbstractSingleElement.java create mode 100644 src/main/java/com/tptj/tool/hg/fineui/swing/element/ButtonElement.java create mode 100644 src/main/java/com/tptj/tool/hg/fineui/swing/element/ListElement.java create mode 100644 src/main/resources/com/fr/fineui/dist/README.md create mode 100644 src/main/resources/com/fr/fineui/dist/fix/fix.compact.js create mode 100644 src/main/resources/com/fr/fineui/dist/fix/fix.js create mode 100644 src/main/resources/com/fr/fineui/dist/fix/fix.proxy.js create mode 100644 src/main/resources/com/fr/fineui/dist/fix/worker.compact.js create mode 100644 src/main/resources/com/fr/fineui/dist/font/iconfont.eot create mode 100644 src/main/resources/com/fr/fineui/dist/font/iconfont.svg create mode 100644 src/main/resources/com/fr/fineui/dist/font/iconfont.ttf create mode 100644 src/main/resources/com/fr/fineui/dist/font/iconfont.woff create mode 100644 src/main/resources/com/fr/fineui/dist/font/iconfont.woff2 create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_disable.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_normal_disable.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_normal_select.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_select.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/line_conn.gif create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/marker.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/mask.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/trans_color.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/trans_disable.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/trans_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/trans_select.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/background/wheel.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/auto_no_square_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/auto_square_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/check_box_active.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/check_box_disable.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/check_box_disable2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/check_box_hover.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/check_box_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/auto_square_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/trans_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/trans_select.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_collapse_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_collapse_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_collapse_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_collapse_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_expand_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_expand_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_expand_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_expand_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_5.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/dots.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/half_selected.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/half_selected_disable.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/icon_down_arrow.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/loading.gif create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/push_down.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/push_up.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/radio_active.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/radio_disable.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/radio_disable2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/radio_hover.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/radio_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/slider_active.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/slider_active_small.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/slider_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/slider_normal_small.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/trans_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/trans_select.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_collapse_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_collapse_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_collapse_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_collapse_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_expand_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_expand_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_expand_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_expand_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_5.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/1x/icon/wave_loading.gif create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/background/auto_color_disable.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/background/auto_color_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/background/auto_color_select.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/background/line_conn.gif create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/background/marker.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/background/mask.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/background/trans_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/background/wheel.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/auto_no_square_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/auto_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/auto_select.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/auto_square_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_active.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_disable.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_disable2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_hover.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/auto_square_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/trans_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/trans_select.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_collapse_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_collapse_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_collapse_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_collapse_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_expand_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_expand_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_expand_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_expand_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_5.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/dots.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/half_selected.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/half_selected_disable.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/icon_down_arrow.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/loading.gif create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/push_down.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/push_up.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_active.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_disable.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_disable2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_hover.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/slider_active.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/slider_active_small.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/slider_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/slider_normal_small.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/trans_normal.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/trans_select.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_expand_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_expand_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_expand_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_expand_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_1.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_2.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_3.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_4.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_5.png create mode 100644 src/main/resources/com/fr/fineui/dist/images/2x/icon/wave_loading.gif create mode 100644 src/main/resources/com/fr/fineui/dist/router.js create mode 100644 src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/button.js create mode 100644 src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/group.button.js create mode 100644 src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.service.js create mode 100644 src/main/resources/com/tptj/tool/hg/fineui/swing/demo/group.button.js diff --git a/src/main/java/com/tptj/tool/hg/fineui/swing/FineUIEngine.java b/src/main/java/com/tptj/tool/hg/fineui/swing/FineUIEngine.java index 69b6de9..a86a7df 100644 --- a/src/main/java/com/tptj/tool/hg/fineui/swing/FineUIEngine.java +++ b/src/main/java/com/tptj/tool/hg/fineui/swing/FineUIEngine.java @@ -64,6 +64,8 @@ public class FineUIEngine { "com/fr/fineui/core/constant/events.js", "com/fr/fineui/core/constant/var.js", + "com/fr/fineui/core/controller/0.controller.js", + "com/fr/fineui/core/func/alias.js", "com/fr/fineui/core/func/array.js", "com/fr/fineui/core/func/date.js", @@ -109,8 +111,17 @@ public class FineUIEngine { "com/fr/fineui/core/wrapper/layout/flex/flex.vertical.center.js", "com/fr/fineui/core/wrapper/layout/flex/flex.leftrightvertical.center.js", + // fix代码 + "com/fr/fineui/dist/fix/fix.proxy.js", + "com/fr/fineui/dist/fix/fix.compact.js", + + // 通用组价 + "com/fr/fineui/base/combination/group.button.js", + + //com/tptj/tool/hg/fineui/swing 下的都是适配swing的js代码 // 自定义布局 + "com/tptj/tool/hg/fineui/swing/core/wrapper/layout.service.js", "com/tptj/tool/hg/fineui/swing/core/wrapper/layout.static.js", "com/tptj/tool/hg/fineui/swing/core/wrapper/layout.horizontal.js", "com/tptj/tool/hg/fineui/swing/core/wrapper/layout.vertical.js", @@ -129,6 +140,8 @@ public class FineUIEngine { //自定义的基础控件,最基本的控件需要由swing实现后,映射到fineui中,高级的组件就可以 //由开发者按照fineui的组件继承方式进行组合创建新的组件了 "com/tptj/tool/hg/fineui/swing/base/single/label.js", + "com/tptj/tool/hg/fineui/swing/base/single/button.js", + "com/tptj/tool/hg/fineui/swing/base/single/group.button.js", "com/tptj/tool/hg/fineui/swing/widget/editor/editor.text.js" ); @@ -228,7 +241,8 @@ public class FineUIEngine { // .importJs("com/tptj/tool/hg/fineui/swing/demo/layout.tape.js"); // .importJs("com/tptj/tool/hg/fineui/swing/demo/layout.grid.js"); // .importJs("com/tptj/tool/hg/fineui/swing/demo/layout.window.js"); - .importJs("com/tptj/tool/hg/fineui/swing/demo/layout.horizontal.js"); +// .importJs("com/tptj/tool/hg/fineui/swing/demo/layout.horizontal.js"); + .importJs("com/tptj/tool/hg/fineui/swing/demo/group.button.js"); return null; }).run(); diff --git a/src/main/java/com/tptj/tool/hg/fineui/swing/element/AbstractElement.java b/src/main/java/com/tptj/tool/hg/fineui/swing/element/AbstractElement.java index 27ff3f8..44e04ff 100644 --- a/src/main/java/com/tptj/tool/hg/fineui/swing/element/AbstractElement.java +++ b/src/main/java/com/tptj/tool/hg/fineui/swing/element/AbstractElement.java @@ -1,5 +1,6 @@ package com.tptj.tool.hg.fineui.swing.element; +import com.eclipsesource.v8.V8Array; import com.eclipsesource.v8.V8Object; import com.fr.general.GeneralUtils; import com.fr.log.FineLoggerFactory; @@ -20,7 +21,7 @@ import java.util.List; **/ public abstract class AbstractElement implements Element { - private T component; + protected T component; private JComponent wrapper; private V8Object ref; private String type; @@ -152,7 +153,8 @@ public abstract class AbstractElement implements Element implements Element implements Element extends AbstractElement { + protected AbstractSingleElement(T component) { + super(component); + } + + @Override + public void css(String name, String val) { + super.css(name, val); + Dimension dim = getComponent().getPreferredSize(); + if ("width".equals(name)) { + if (val.length() > 0) { + dim.width = Integer.parseInt(val); + getComponent().setPreferredSize(dim); + } + } + if ("height".equals(name)) { + if (val.length() > 0) { + dim.height = Integer.parseInt(val); + getComponent().setPreferredSize(dim); + } + } + } +} diff --git a/src/main/java/com/tptj/tool/hg/fineui/swing/element/ButtonElement.java b/src/main/java/com/tptj/tool/hg/fineui/swing/element/ButtonElement.java new file mode 100644 index 0000000..4597ae0 --- /dev/null +++ b/src/main/java/com/tptj/tool/hg/fineui/swing/element/ButtonElement.java @@ -0,0 +1,52 @@ +package com.tptj.tool.hg.fineui.swing.element; + +import com.fr.general.GeneralUtils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * @author 秃破天际 + * @version 10.0 + * Created by 秃破天际 on 2021/10/29 + **/ +public class ButtonElement extends AbstractSingleElement { + + public ButtonElement() { + super(new JButton()); + getComponent().addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + callJsMethod("fireEvent", "EVENT_CHANGE", getComponent().getText()); + } + }); + } + + @Override + public Object getVal() { + return getComponent().getText(); + } + + @Override + public void setVal(Object val) { + super.setVal(val); + getComponent().setText(GeneralUtils.objectToString(val)); + } + + @Override + public void css(String name, String val) { + super.css(name, val); + val = val.toUpperCase(); + if ("text-align".equals(name)) { + if ("LEFT".equals(val)) { + getComponent().setHorizontalAlignment(SwingConstants.LEFT); + } else if ("CENTER".equals(val)) { + getComponent().setHorizontalAlignment(SwingConstants.CENTER); + } else if ("RIGHT".equals(val)) { + getComponent().setHorizontalAlignment(SwingConstants.RIGHT); + } + } + } +} diff --git a/src/main/java/com/tptj/tool/hg/fineui/swing/element/Element.java b/src/main/java/com/tptj/tool/hg/fineui/swing/element/Element.java index 96505b8..598188f 100644 --- a/src/main/java/com/tptj/tool/hg/fineui/swing/element/Element.java +++ b/src/main/java/com/tptj/tool/hg/fineui/swing/element/Element.java @@ -1,5 +1,6 @@ package com.tptj.tool.hg.fineui.swing.element; +import com.eclipsesource.v8.V8Array; import com.eclipsesource.v8.V8Object; import javax.swing.*; @@ -60,4 +61,6 @@ public interface Element { void setVal(Object val); Object getVal(); + + void populate(V8Array items); } diff --git a/src/main/java/com/tptj/tool/hg/fineui/swing/element/LabelElement.java b/src/main/java/com/tptj/tool/hg/fineui/swing/element/LabelElement.java index ed6c4c4..c62b7e6 100644 --- a/src/main/java/com/tptj/tool/hg/fineui/swing/element/LabelElement.java +++ b/src/main/java/com/tptj/tool/hg/fineui/swing/element/LabelElement.java @@ -11,7 +11,7 @@ import java.awt.*; * @version 10.0 * Created by 秃破天际 on 2021/10/29 **/ -public class LabelElement extends AbstractElement { +public class LabelElement extends AbstractSingleElement { public LabelElement() { super(new UILabel()); @@ -41,18 +41,5 @@ public class LabelElement extends AbstractElement { getComponent().setHorizontalAlignment(SwingConstants.RIGHT); } } - Dimension dim = getComponent().getPreferredSize(); - if ("width".equals(name)) { - if (val.length() > 0) { - dim.width = Integer.parseInt(val); - getComponent().setPreferredSize(dim); - } - } - if ("height".equals(name)) { - if (val.length() > 0) { - dim.height = Integer.parseInt(val); - getComponent().setPreferredSize(dim); - } - } } } diff --git a/src/main/java/com/tptj/tool/hg/fineui/swing/element/ListElement.java b/src/main/java/com/tptj/tool/hg/fineui/swing/element/ListElement.java new file mode 100644 index 0000000..d3bb7c0 --- /dev/null +++ b/src/main/java/com/tptj/tool/hg/fineui/swing/element/ListElement.java @@ -0,0 +1,38 @@ +package com.tptj.tool.hg.fineui.swing.element; + + +import com.eclipsesource.v8.V8Array; + +import javax.swing.*; +import java.util.Vector; + +/** + * @author 秃破天际 + * @version 10.0 + * Created by 秃破天际 on 2021/10/29 + **/ +public class ListElement extends AbstractSingleElement { + + public ListElement() { + super(new JList()); + } + + @Override + public void populate(V8Array items) { + Vector vector = new Vector<>(); + for (int i = 0, len = items.length(); i < len; i++) { + vector.add(items.getString(i)); + } + component.setModel(new DefaultComboBoxModel<>(vector)); + } + + @Override + public void setVal(Object val) { + super.setVal(val); + } + + @Override + public void css(String name, String val) { + super.css(name, val); + } +} diff --git a/src/main/java/com/tptj/tool/hg/fineui/swing/element/TextElement.java b/src/main/java/com/tptj/tool/hg/fineui/swing/element/TextElement.java index 7aaf049..e75afea 100644 --- a/src/main/java/com/tptj/tool/hg/fineui/swing/element/TextElement.java +++ b/src/main/java/com/tptj/tool/hg/fineui/swing/element/TextElement.java @@ -19,7 +19,7 @@ import java.awt.event.KeyListener; * @version 10.0 * Created by 秃破天际 on 2021/11/2 **/ -public class TextElement extends AbstractElement{ +public class TextElement extends AbstractSingleElement{ public TextElement() { super(new UITextField()); init(); @@ -138,7 +138,6 @@ public class TextElement extends AbstractElement{ @Override public void css(String name, String val){ super.css(name, val); - } @Override diff --git a/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/CenterAdaptType.java b/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/CenterAdaptType.java index 9111424..d14bbc9 100644 --- a/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/CenterAdaptType.java +++ b/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/CenterAdaptType.java @@ -2,7 +2,6 @@ package com.tptj.tool.hg.fineui.swing.element.layout; import com.tptj.tool.hg.fineui.swing.element.Element; import com.tptj.tool.hg.fineui.swing.element.VerticalFlowLayout; -import com.tptj.tool.hg.fineui.swing.element.layout.impl.HorizontalLayout; import com.tptj.tool.hg.fineui.swing.element.layout.impl.VerticalLayout; import javax.swing.*; @@ -20,7 +19,7 @@ public class CenterAdaptType extends AbstractLayoutType { public LayoutManager init() { wrapComponent = new JPanel(); wrapComponent.setOpaque(false); - wrapComponent.setLayout(new HorizontalLayout(element, FlowLayout.CENTER, 0, 0)); + wrapComponent.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); element.getComponent().add(wrapComponent); return new VerticalLayout(element, VerticalFlowLayout.CENTER, 0, 0, true); } diff --git a/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/HorizontalAdaptType.java b/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/HorizontalAdaptType.java index a657dd2..555d499 100644 --- a/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/HorizontalAdaptType.java +++ b/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/HorizontalAdaptType.java @@ -27,7 +27,7 @@ public class HorizontalAdaptType extends AbstractLayoutType { if (w > 0) { JComponent wrapComponent = new JPanel(); wrapComponent.setOpaque(false); - wrapComponent.setLayout(new HorizontalLayout(element, FlowLayout.CENTER, 0, 0)); + wrapComponent.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); wrapComponent.add(child.getWrapper()); element.getComponent().add(wrapComponent); } else { diff --git a/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/VerticalAdaptType.java b/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/VerticalAdaptType.java index 2c569c4..c6b4a5c 100644 --- a/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/VerticalAdaptType.java +++ b/src/main/java/com/tptj/tool/hg/fineui/swing/element/layout/VerticalAdaptType.java @@ -17,7 +17,7 @@ public class VerticalAdaptType extends CenterAdaptType { public LayoutManager init() { wrapComponent = new JPanel(); wrapComponent.setOpaque(false); - wrapComponent.setLayout(new HorizontalLayout(element, FlowLayout.LEFT, 0, 0)); + wrapComponent.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); element.getComponent().add(wrapComponent); return new VerticalLayout(element, VerticalFlowLayout.CENTER, 0, 0, true); } diff --git a/src/main/resources/com/fr/fineui/dist/README.md b/src/main/resources/com/fr/fineui/dist/README.md new file mode 100644 index 0000000..f6a3a9e --- /dev/null +++ b/src/main/resources/com/fr/fineui/dist/README.md @@ -0,0 +1,31 @@ +#### fineui.js + +整个fineui打包文件,不包括配置文件 + +#### fineui.css + +整个fineui打包文件,不包括资源文件 + +#### config.js + +配置文件,这只是一个案例,集成进系统的时候需要进行配置 + +#### resource.css + +app.css background.css icon.css font.css的合并文件,集成进系统的时候需要进行配置 + +#### router.js + +#### 路由文件,使用fineui路由的时候才需要引入 + +#### bundle.js bundle.css + +所有文件的合并文件, 主要给在线demo和文档用的 + +#### core_without_normalize.css + +不带标准化的core.css文件,只引入通用css样式的时候才需要 + +#### chart.js + +封装好的一层图表api diff --git a/src/main/resources/com/fr/fineui/dist/fix/fix.compact.js b/src/main/resources/com/fr/fineui/dist/fix/fix.compact.js new file mode 100644 index 0000000..69a0a31 --- /dev/null +++ b/src/main/resources/com/fr/fineui/dist/fix/fix.compact.js @@ -0,0 +1,199 @@ +;(function () { + function initWatch (vm, watch) { + vm._watchers || (vm._watchers = []); + for (var key in watch) { + var handler = watch[key]; + if (BI.isArray(handler)) { + for (var i = 0; i < handler.length; i++) { + vm._watchers.push(createWatcher(vm, key, handler[i])); + } + } else { + vm._watchers.push(createWatcher(vm, key, handler)); + } + } + BI.each(vm.$watchDelayCallbacks, function (i, watchDelayCallback) { + var innerWatch = watchDelayCallback[0]; + var innerHandler = watchDelayCallback[1]; + if (BI.isKey(innerWatch)) { + var key = innerWatch; + innerWatch = {}; + innerWatch[key] = innerHandler; + } + for (var key in innerWatch) { + var handler = innerWatch[key]; + if (BI.isArray(handler)) { + for (var i = 0; i < handler.length; i++) { + vm._watchers.push(createWatcher(vm, key, handler[i])); + } + } else { + vm._watchers.push(createWatcher(vm, key, handler)); + } + } + }); + } + + function createWatcher (vm, keyOrFn, cb, options) { + if (BI.isPlainObject(cb)) { + options = cb; + cb = cb.handler; + } + options = options || {}; + return Fix.watch(vm.model, keyOrFn, _.bind(cb, vm), BI.extend(options, { + store: vm.store + })); + } + + var target = null; + var targetStack = []; + + function pushTarget (_target) { + if (target) targetStack.push(target); + Fix.Model.target = target = _target; + } + + function popTarget () { + Fix.Model.target = target = targetStack.pop(); + } + + var oldWatch = Fix.watch; + Fix.watch = function (model, expOrFn, cb, options) { + if (BI.isPlainObject(cb)) { + options = cb; + cb = cb.handler; + } + if (typeof cb === "string") { + cb = model[cb]; + } + return oldWatch.call(this, model, expOrFn, function () { + options && options.store && pushTarget(options.store); + try { + var res = cb.apply(this, arguments); + } catch (e) { + console.error(e); + } + options && options.store && popTarget(); + return res; + }, options); + }; + + function findStore (widget) { + if (target != null) { + return target; + } + widget = widget || BI.Widget.context; + var p = widget; + while (p) { + if (p instanceof Fix.Model || p.store || p.__cacheStore) { + break; + } + p = p._parent || (p.options && p.options.element) || p._context; + } + if (p) { + if (p instanceof Fix.Model) { + return widget.__cacheStore = p; + } + widget.__cacheStore = p.store || p.__cacheStore; + return p.__cacheStore || p.store; + } + } + + // _.each(["populate", "addItems", "prependItems"], function (name) { + // var old = BI.Loader.prototype[name]; + // BI.Loader.prototype[name] = function () { + // BI.Widget.pushContext(this); + // try { + // var result = old.apply(this, arguments); + // } catch (e) { + // console.error(e); + // } + // BI.Widget.popContext(); + // return result; + // }; + // }); + + function createStore () { + var needPop = false; + if (_global.Fix && this._store) { + var store = findStore(this.options.context || this._parent || this.options.element || this._context); + if (store) { + pushTarget(store); + needPop = true; + } + this.store = this._store(); + this.store && (this.store._widget = this); + needPop && popTarget(); + needPop = false; + pushTarget(this.store); + if (this.store instanceof Fix.Model) { + this.model = this.store.model; + } else { + this.model = this.store; + } + needPop = true; + } + return needPop; + } + + var _init = BI.Widget.prototype._init; + BI.Widget.prototype._init = function () { + var self = this; + var needPop = createStore.call(this); + try { + _init.apply(this, arguments); + } catch (e) { + console.error(e); + } + needPop && popTarget(); + }; + + var _render = BI.Widget.prototype._render; + BI.Widget.prototype._render = function () { + var needPop = false; + if (_global.Fix && this._store) { + needPop = true; + pushTarget(this.store); + } + _render.apply(this, arguments); + if (_global.Fix && this._store) { + initWatch(this, this.watch); + } + needPop && popTarget(); + }; + + var unMount = BI.Widget.prototype.__d; + BI.Widget.prototype.__d = function () { + try { + unMount.apply(this, arguments); + } catch (e) { + console.error(e); + } + this.store && BI.isFunction(this.store.destroy) && this.store.destroy(); + BI.each(this._watchers, function (i, unwatches) { + unwatches = BI.isArray(unwatches) ? unwatches : [unwatches]; + BI.each(unwatches, function (j, unwatch) { + unwatch(); + }); + }); + this._watchers && (this._watchers = []); + if (this.store) { + this.store._parent && (this.store._parent = null); + this.store._widget && (this.store._widget = null); + this.store = null; + } + delete this.__cacheStore; + }; + + _.each(["__afterRender", "_mount", "__afterMount"], function (name) { + var old = BI.Widget.prototype[name]; + old && (BI.Widget.prototype[name] = function () { + this.store && pushTarget(this.store); + try { + var res = old.apply(this, arguments); + } catch (e) { + console.error(e); + } + this.store && popTarget(); + return res; + }); + }); +}()); diff --git a/src/main/resources/com/fr/fineui/dist/fix/fix.js b/src/main/resources/com/fr/fineui/dist/fix/fix.js new file mode 100644 index 0000000..3e93f16 --- /dev/null +++ b/src/main/resources/com/fr/fineui/dist/fix/fix.js @@ -0,0 +1,1526 @@ +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.Fix = global.Fix || {}); +})(this, function (exports) { + 'use strict'; + + function noop(a, b, c) {} + + function isNative(Ctor) { + return typeof Ctor === 'function' && /native code/.test(Ctor.toString()); + } + + var rhashcode = /\d\.\d{4}/; + + //生成UUID http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript + function makeHashCode(prefix) { + /* istanbul ignore next*/ + prefix = prefix || 'bi'; + /* istanbul ignore next*/ + return String(Math.random() + Math.random()).replace(rhashcode, prefix); + } + + var hasProto = '__proto__' in {}; + + var isIE = function isIE() { + if (typeof navigator === "undefined") { + return false; + } + return (/(msie|trident)/i.test(navigator.userAgent.toLowerCase()) + ); + }; + + var getIEVersion = function getIEVersion() { + var version = 0; + if (typeof navigator === "undefined") { + return false; + } + var agent = navigator.userAgent.toLowerCase(); + var v1 = agent.match(/(?:msie\s([\w.]+))/); + var v2 = agent.match(/(?:trident.*rv:([\w.]+))/); + if (v1 && v2 && v1[1] && v2[1]) { + version = Math.max(v1[1] * 1, v2[1] * 1); + } else if (v1 && v1[1]) { + version = v1[1] * 1; + } else if (v2 && v2[1]) { + version = v2[1] * 1; + } else { + version = 0; + } + return version; + }; + var isIE9Below = isIE() && getIEVersion() < 9; + + var _toString = Object.prototype.toString; + + function isPlainObject(obj) { + return _toString.call(obj) === '[object Object]'; + } + + function isConfigurable(obj, key) { + var configurable = true; + var property = Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(obj, key); + if (property && property.configurable === false) { + configurable = false; + } + return configurable; + } + + function isExtensible(obj) { + if (Object.isExtensible) { + return Object.isExtensible(obj); + } + var name = ''; + while (obj.hasOwnProperty(name)) { + name += '?'; + } + obj[name] = true; + var returnValue = obj.hasOwnProperty(name); + delete obj[name]; + return returnValue; + } + + function remove(arr, item) { + if (arr && arr.length) { + var _index = arr.indexOf(item); + if (_index > -1) { + return arr.splice(_index, 1); + } + } + } + + var bailRE = /[^\w.$]/; + + function parsePath(path) { + if (bailRE.test(path)) { + return; + } + var segments = path.split('.'); + return function (obj) { + for (var i = 0; i < segments.length; i++) { + if (!obj) return; + obj = obj[segments[i]]; + } + return obj; + }; + } + + var nextTick = function () { + var callbacks = []; + var pending = false; + var timerFunc = void 0; + + function nextTickHandler() { + pending = false; + var copies = callbacks.slice(0); + callbacks.length = 0; + for (var i = 0; i < copies.length; i++) { + copies[i](); + } + } + + // An asynchronous deferring mechanism. + // In pre 2.4, we used to use microtasks (Promise/MutationObserver) + // but microtasks actually has too high a priority and fires in between + // supposedly sequential events (e.g. #4521, #6690) or even between + // bubbling of the same event (#6566). Technically setImmediate should be + // the ideal choice, but it's not available everywhere; and the only polyfill + // that consistently queues the callback after all DOM events triggered in the + // same loop is by using MessageChannel. + /* istanbul ignore if */ + if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) { + timerFunc = function timerFunc() { + setImmediate(nextTickHandler); + }; + } else if (typeof MessageChannel !== 'undefined' && (isNative(MessageChannel) || + // PhantomJS + MessageChannel.toString() === '[object MessageChannelConstructor]')) { + var channel = new MessageChannel(); + var port = channel.port2; + channel.port1.onmessage = nextTickHandler; + timerFunc = function timerFunc() { + port.postMessage(1); + }; + } else + /* istanbul ignore next */ + if (typeof Promise !== 'undefined' && isNative(Promise)) { + // use microtask in non-DOM environments, e.g. Weex + var p = Promise.resolve(); + timerFunc = function timerFunc() { + p.then(nextTickHandler); + }; + } else { + // fallback to setTimeout + timerFunc = function timerFunc() { + setTimeout(nextTickHandler, 0); + }; + } + + return function queueNextTick(cb, ctx) { + var _resolve = void 0; + callbacks.push(function () { + if (cb) { + try { + cb.call(ctx); + } catch (e) { + console.error(e); + } + } else if (_resolve) { + _resolve(ctx); + } + }); + if (!pending) { + pending = true; + timerFunc(); + } + // $flow-disable-line + if (!cb && typeof Promise !== 'undefined') { + return new Promise(function (resolve, reject) { + _resolve = resolve; + }); + } + }; + }(); + + var falsy; + var $$skipArray = { + __ob__: falsy, + $accessors: falsy, + $vbthis: falsy, + $vbsetter: falsy + }; + + var uid = 0; + + /** + * A dep is an observable that can have multiple + * directives subscribing to it. + */ + + var Dep = function () { + function Dep() { + _classCallCheck(this, Dep); + + this.id = uid++; + this.subs = []; + } + + Dep.prototype.addSub = function addSub(sub) { + this.subs.push(sub); + }; + + Dep.prototype.removeSub = function removeSub(sub) { + remove(this.subs, sub); + }; + + Dep.prototype.depend = function depend() { + if (Dep.target) { + Dep.target.addDep(this); + } + }; + + Dep.prototype.notify = function notify(options) { + // stabilize the subscriber list first + var subs = this.subs.slice(); + for (var i = 0, l = subs.length; i < l; i++) { + subs[i].update(options); + } + }; + + return Dep; + }(); + + // the current target watcher being evaluated. + // this is globally unique because there could be only one + // watcher being evaluated at any time. + + + Dep.target = null; + var targetStack = []; + + function pushTarget(_target) { + if (Dep.target) targetStack.push(Dep.target); + Dep.target = _target; + } + + function popTarget() { + Dep.target = targetStack.pop(); + } + + //如果浏览器不支持ecma262v5的Object.defineProperties或者存在BUG,比如IE8 + //标准浏览器使用__defineGetter__, __defineSetter__实现 + var canHideProperty = true; + try { + Object.defineProperty({}, '_', { + value: 'x' + }); + delete $$skipArray.$vbsetter; + delete $$skipArray.$vbthis; + } catch (e) { + /* istanbul ignore next*/ + canHideProperty = false; + } + + var createViewModel = Object.defineProperties; + var defineProperty = void 0; + + var timeBucket = new Date() - 0; + /* istanbul ignore if*/ + if (!canHideProperty) { + if ('__defineGetter__' in {}) { + defineProperty = function defineProperty(obj, prop, desc) { + if ('value' in desc) { + obj[prop] = desc.value; + } + if ('get' in desc) { + obj.__defineGetter__(prop, desc.get); + } + if ('set' in desc) { + obj.__defineSetter__(prop, desc.set); + } + return obj; + }; + createViewModel = function createViewModel(obj, descs) { + for (var prop in descs) { + if (descs.hasOwnProperty(prop)) { + defineProperty(obj, prop, descs[prop]); + } + } + return obj; + }; + } + /* istanbul ignore if*/ + if (isIE9Below) { + var VBClassPool = {}; + window.execScript([// jshint ignore:line + 'Function parseVB(code)', '\tExecuteGlobal(code)', 'End Function' //转换一段文本为VB代码 + ].join('\n'), 'VBScript'); + + var VBMediator = function VBMediator(instance, accessors, name, value) { + // jshint ignore:line + var accessor = accessors[name]; + if (arguments.length === 4) { + accessor.set.call(instance, value); + } else { + return accessor.get.call(instance); + } + }; + createViewModel = function createViewModel(name, accessors, properties) { + // jshint ignore:line + var buffer = []; + buffer.push('\tPrivate [$vbsetter]', '\tPublic [$accessors]', '\tPublic Default Function [$vbthis](ac' + timeBucket + ', s' + timeBucket + ')', '\t\tSet [$accessors] = ac' + timeBucket + ': set [$vbsetter] = s' + timeBucket, '\t\tSet [$vbthis] = Me', //链式调用 + '\tEnd Function'); + //添加普通属性,因为VBScript对象不能像JS那样随意增删属性,必须在这里预先定义好 + var uniq = { + $vbthis: true, + $vbsetter: true, + $accessors: true + }; + for (name in $$skipArray) { + if (!uniq[name]) { + buffer.push('\tPublic [' + name + ']'); + uniq[name] = true; + } + } + //添加访问器属性 + for (name in accessors) { + if (uniq[name]) { + continue; + } + uniq[name] = true; + buffer.push( + //由于不知对方会传入什么,因此set, let都用上 + '\tPublic Property Let [' + name + '](val' + timeBucket + ')', //setter + '\t\tCall [$vbsetter](Me, [$accessors], "' + name + '", val' + timeBucket + ')', '\tEnd Property', '\tPublic Property Set [' + name + '](val' + timeBucket + ')', //setter + '\t\tCall [$vbsetter](Me, [$accessors], "' + name + '", val' + timeBucket + ')', '\tEnd Property', '\tPublic Property Get [' + name + ']', //getter + '\tOn Error Resume Next', //必须优先使用set语句,否则它会误将数组当字符串返回 + '\t\tSet[' + name + '] = [$vbsetter](Me, [$accessors],"' + name + '")', '\tIf Err.Number <> 0 Then', '\t\t[' + name + '] = [$vbsetter](Me, [$accessors],"' + name + '")', '\tEnd If', '\tOn Error Goto 0', '\tEnd Property'); + } + + for (name in properties) { + if (!uniq[name]) { + uniq[name] = true; + buffer.push('\tPublic [' + name + ']'); + } + } + + buffer.push('\tPublic [hasOwnProperty]'); + buffer.push('End Class'); + var body = buffer.join('\r\n'); + var className = VBClassPool[body]; + if (!className) { + className = makeHashCode('VBClass'); + window.parseVB('Class ' + className + body); + window.parseVB(['Function ' + className + 'Factory(acc, vbm)', //创建实例并传入两个关键的参数 + '\tDim o', '\tSet o = (New ' + className + ')(acc, vbm)', '\tSet ' + className + 'Factory = o', 'End Function'].join('\r\n')); + VBClassPool[body] = className; + } + var ret = window[className + 'Factory'](accessors, VBMediator); //得到其产品 + return ret; //得到其产品 + }; + } + } + + var createViewModel$1 = createViewModel; + + var queue = []; + var activatedChildren = []; + var has = {}; + var waiting = false; + var flushing = false; + var index = 0; + + function resetSchedulerState() { + index = queue.length = activatedChildren.length = 0; + has = {}; + waiting = flushing = false; + } + + function flushSchedulerQueue() { + flushing = true; + var watcher = void 0, + id = void 0, + options = void 0; + + // Sort queue before flush. + // This ensures that: + // 1. Components are updated from parent to child. (because parent is always + // created before the child) + // 2. A component's user watchers are run before its render watcher (because + // user watchers are created before the render watcher) + // 3. If a component is destroyed during a parent component's watcher run, + // its watchers can be skipped. + queue.sort(function (a, b) { + return a.id - b.id; + }); + + // do not cache length because more watchers might be pushed + // as we run existing watchers + for (index = 0; index < queue.length; index++) { + watcher = queue[index].watcher; + options = queue[index].options; + id = watcher.id; + has[id] = null; + watcher.run(options); + } + + resetSchedulerState(); + } + + function queueWatcher(watcher, options) { + var id = watcher.id; + if (has[id] == null) { + has[id] = true; + if (!flushing) { + queue.push({ watcher: watcher, options: options }); + } else { + // if already flushing, splice the watcher based on its id + // if already past its id, it will be run next immediately. + var i = queue.length - 1; + while (i > index && queue[i].watcher.id > watcher.id) { + i--; + } + queue.splice(i + 1, 0, { watcher: watcher, options: options }); + } + // queue the flush + if (!waiting) { + waiting = true; + nextTick(flushSchedulerQueue); + } + } + } + + var uid$1 = 0; + + var Watcher = function () { + function Watcher(vm, expOrFn, cb, options) { + _classCallCheck(this, Watcher); + + this.vm = vm; + // vm._watchers || (vm._watchers = []) + // vm._watchers.push(this) + // options + if (options) { + this.deep = !!options.deep; + this.user = !!options.user; + this.lazy = !!options.lazy; + this.sync = !!options.sync; + } else { + this.deep = this.user = this.lazy = this.sync = false; + } + this.cb = cb; + this.id = ++uid$1; // uid for batching + this.active = true; + this.dirty = this.lazy; // for lazy watchers + this.deps = []; + this.newDeps = []; + this.depIds = new Set(); + this.newDepIds = new Set(); + this.expression = ''; + // parse expression for getter + if (typeof expOrFn === 'function') { + this.getter = expOrFn; + } else { + this.getter = parsePath(expOrFn); + if (!this.getter) { + this.getter = function () {}; + } + } + this.value = this.lazy ? undefined : this.get(); + } + + Watcher.prototype.get = function get() { + pushTarget(this); + var value = void 0; + var vm = this.vm; + try { + value = this.getter.call(vm, vm); + } catch (e) { + // if (this.user) { + // } else { + // console.error(e) + // } + } finally { + // "touch" every property so they are all tracked as + // dependencies for deep watching + if (this.deep) { + traverse(value); + } + popTarget(); + this.cleanupDeps(); + } + return value; + }; + + Watcher.prototype.addDep = function addDep(dep) { + var id = dep.id; + if (!this.newDepIds.has(id)) { + this.newDepIds.add(id); + this.newDeps.push(dep); + if (!this.depIds.has(id)) { + dep.addSub(this); + } + } + }; + + Watcher.prototype.cleanupDeps = function cleanupDeps() { + var i = this.deps.length; + while (i--) { + var dep = this.deps[i]; + if (!this.newDepIds.has(dep.id)) { + dep.removeSub(this); + } + } + var tmp = this.depIds; + this.depIds = this.newDepIds; + this.newDepIds = tmp; + this.newDepIds.clear(); + tmp = this.deps; + this.deps = this.newDeps; + this.newDeps = tmp; + this.newDeps.length = 0; + }; + + Watcher.prototype.update = function update(options) { + /* istanbul ignore else */ + if (this.lazy) { + this.dirty = true; + } else if (this.sync) { + this.run(options); + } else { + queueWatcher(this, options); + } + }; + + Watcher.prototype.run = function run(options) { + if (this.active) { + var value = this.get(); + if (value !== this.value || + // Deep watchers and watchers on Object/Arrays should fire even + // when the value is the same, because the value may + // have mutated. + _.isObject(value) && options && options.refresh || this.deep) { + // set new value + var oldValue = this.value; + this.value = value; + if (this.user) { + try { + this.cb.call(this.vm, value, oldValue, options); + } catch (e) { + console.error(e); + } + } else { + try { + this.cb.call(this.vm, value, oldValue, options); + } catch (e) { + console.error(e); + } + } + } + } + }; + + Watcher.prototype.evaluate = function evaluate() { + this.value = this.get(); + this.dirty = false; + }; + + Watcher.prototype.depend = function depend() { + var i = this.deps.length; + while (i--) { + this.deps[i].depend(); + } + }; + + Watcher.prototype.teardown = function teardown() { + if (this.active) { + // remove self from vm's watcher list + // this is a somewhat expensive operation so we skip it + // if the vm is being destroyed. + remove(this.vm._watchers, this); + var i = this.deps.length; + while (i--) { + this.deps[i].removeSub(this); + } + this.active = false; + } + }; + + return Watcher; + }(); + + var seenObjects = new Set(); + + function traverse(val) { + seenObjects.clear(); + _traverse(val, seenObjects); + } + + function _traverse(val, seen) { + var i = void 0, + keys = void 0; + var isA = _.isArray(val); + if (!isA && !_.isObject(val)) { + return; + } + if (val.__ob__) { + var depId = val.__ob__.dep.id; + if (seen.has(depId)) { + return; + } + seen.add(depId); + } + if (isA) { + i = val.length; + while (i--) { + _traverse(val[i], seen); + } + } else { + keys = _.keys(val); + i = keys.length; + while (i--) { + _traverse(val[keys[i]], seen); + } + } + } + + var arrayProto = Array.prototype; + var arrayMethods = []; + _.each(['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'], function (method) { + var original = arrayProto[method]; + arrayMethods[method] = function mutator() { + for (var _len = arguments.length, args = Array(_len), _key2 = 0; _key2 < _len; _key2++) { + args[_key2] = arguments[_key2]; + } + + var ob = this.__ob__; + var inserted = void 0; + switch (method) { + case 'push': + case 'unshift': + inserted = args; + break; + case 'splice': + inserted = args.slice(2); + break; + } + if (inserted) inserted = ob.observeArray(inserted); + switch (method) { + case 'push': + case 'unshift': + args = inserted; + break; + case 'splice': + if (args.length > 2) { + args = [args[0], args[1]].concat(inserted ? inserted : []); + } + break; + } + var result = original.apply(this, args); + notify(ob.parent, ob.parentKey, ob.dep, true); + return result; + }; + }); + + var arrayKeys = _.keys(arrayMethods); + + var observerState = { + shouldConvert: true + }; + + function def(obj, key, val, enumerable) { + Object.defineProperty(obj, key, { + value: val, + enumerable: !!enumerable, + writable: true, + configurable: true + }); + } + + /** + * Observer class that are attached to each observed + * object. Once attached, the observer converts target + * object's property keys into getter/setters that + * collect dependencies and dispatches updates. + */ + + var Observer = function () { + function Observer(value) { + _classCallCheck(this, Observer); + + this.value = value; + this.dep = new Dep(); + this.vmCount = 0; + if (_.isArray(value)) { + var augment = hasProto ? protoAugment : copyAugment; + augment(value, arrayMethods, arrayKeys); + this.model = this.observeArray(value); + } else { + this.model = this.walk(value); + } + if (isIE9Below) { + this.model['__ob__'] = this; + } else { + def(this.model, "__ob__", this); + } + } + + Observer.prototype.walk = function walk(obj) { + return defineReactive(obj, this); + }; + + Observer.prototype.observeArray = function observeArray(items) { + for (var i = 0, l = items.length; i < l; i++) { + var ob = observe(items[i], this, i); + items[i] = ob ? ob.model : items[i]; + } + return items; + }; + + return Observer; + }(); + + function protoAugment(target, src, keys) { + /* eslint-disable no-proto */ + target.__proto__ = src; + /* eslint-enable no-proto */ + } + + /* istanbul ignore next */ + function copyAugment(target, src, keys) { + for (var i = 0, l = keys.length; i < l; i++) { + var key = keys[i]; + target[key] = src[key]; + } + } + + function observe(value, parentObserver, parentKey) { + if (!_.isObject(value)) { + return; + } + var ob = void 0; + if (value.__ob__ instanceof Observer) { + ob = value.__ob__; + } else if (observerState.shouldConvert && isExtensible(value) && (_.isArray(value) || isPlainObject(value))) { + ob = new Observer(value); + } + if (ob) { + ob.parent = parentObserver || ob.parent; + ob.parentKey = parentKey; + } + return ob; + } + + function notify(observer, key, dep, refresh) { + dep.notify({ observer: observer, key: key, refresh: refresh }); + if (observer) { + //触发a.*绑定的依赖 + _.each(observer._deps, function (dep) { + dep.notify({ observer: observer, key: key }); + }); + //触发a.**绑定的依赖 + var parent = observer, + root = observer, + route = key || ""; + while (parent) { + _.each(parent._scopeDeps, function (dep) { + dep.notify({ observer: observer, key: key }); + }); + if (parent.parentKey != null) { + route = parent.parentKey + '.' + route; + } + root = parent; + parent = parent.parent; + } + for (var _key in root._globalDeps) { + var reg = new RegExp(_key); + if (reg.test(route)) { + for (var i = 0; i < root._globalDeps[_key].length; i++) { + root._globalDeps[_key][i].notify({ observer: observer, key: _key }); + } + } + } + } + } + + function defineReactive(obj, observer, shallow) { + var props = {}; + var model = void 0; + // if (typeof Proxy === 'function') { + // const deps = {}, childObs = {}, cache = {} + // _.each(obj, function (val, key) { + // if (key in $$skipArray) { + // return + // } + // cache[key] = val + // const dep = deps[key] = (observer && observer['__dep' + key]) || new Dep() + // observer && (observer['__dep' + key] = dep) + // childObs[key] = !shallow && observe(val, observer, key) + // }) + // return model = new Proxy(props, { + // has: function (target, key) { + // return key in obj; + // }, + // get: function (target, key) { + // if (key in $$skipArray) { + // return target[key] + // } + // const value = cache[key] + // if (Dep.target) { + // deps[key].depend() + // if (childObs[key]) { + // childObs[key].dep.depend() + // if (_.isArray(value)) { + // dependArray(value) + // } + // } + // } + // return value + // }, + // set: function (target, key, newVal) { + // if (key in $$skipArray) { + // return target[key] = newVal + // } + // const value = cache[key], dep = deps[key] + // if (newVal === value || (newVal !== newVal && value !== value)) { + // return newVal + // } + // cache[key] = newVal + // childObs[key] = !shallow && observe(newVal, observer, key) + // obj[key] = childObs[key] ? childObs[key].model : newVal + // notify(model, key, dep) + // return obj[key] + // } + // }) + // } + _.each(obj, function (val, key) { + if (key in $$skipArray) { + return; + } + var configurable = isConfigurable(obj, key); + var dep = observer && observer['__dep' + key] || new Dep(); + observer && (observer['__dep' + key] = dep); + var childOb = configurable && !shallow && observe(val, observer, key); + props[key] = { + enumerable: true, + configurable: true, + get: function reactiveGetter() { + var value = childOb ? childOb.model : val; + if (Dep.target) { + dep.depend(); + if (childOb) { + childOb.dep.depend(); + if (_.isArray(value)) { + dependArray(value); + } + } + } + return value; + }, + set: function reactiveSetter(newVal) { + var value = childOb ? childOb.model : val; + if (newVal === value || newVal !== newVal && value !== value) { + return; + } + val = newVal; + childOb = configurable && !shallow && observe(newVal, observer, key); + if (childOb && value && value.__ob__) { + childOb._scopeDeps = value.__ob__._scopeDeps; + childOb._deps = value.__ob__._deps; + } + obj[key] = childOb ? childOb.model : newVal; + notify(model.__ob__, key, dep); + } + }; + }); + return model = createViewModel$1(obj, props); + } + + /** + * Set a property on an object. Adds the new property and + * triggers change notification if the property doesn't + * already exist. + */ + function set(target, key, val) { + if (_.isArray(target)) { + target.length = Math.max(target.length, key); + target.splice(key, 1, val); + return val; + } + if (_.has(target, key)) { + target[key] = val; + return val; + } + var ob = target.__ob__; + if (!ob) { + target[key] = val; + return val; + } + ob.value[key] = val; + target = defineReactive(ob.value, ob); + notify(ob, key, ob.dep); + return target; + } + + /** + * Delete a property and trigger change if necessary. + */ + function del(target, key) { + if (_.isArray(target)) { + target.splice(key, 1); + return; + } + var ob = target.__ob__; + if (!_.has(target, key)) { + return; + } + if (!ob) { + delete target[key]; + return target; + } + delete ob.value[key]; + target = defineReactive(ob.value, ob); + notify(ob, key, ob.dep); + return target; + } + + /** + * Collect dependencies on array elements when the array is touched, since + * we cannot intercept array element access like property getters. + */ + function dependArray(value) { + for (var e, i = 0, l = value.length; i < l; i++) { + e = value[i]; + e && e.__ob__ && e.__ob__.dep.depend(); + if (_.isArray(e)) { + dependArray(e); + } + } + } + + var falsy$1; + var operators = { + '||': falsy$1, + '&&': falsy$1, + '(': falsy$1, + ')': falsy$1 + }; + + function runBinaryFunction(binarys) { + var expr = ''; + for (var i = 0, len = binarys.length; i < len; i++) { + if (_.isBoolean(binarys[i]) || _.has(operators, binarys[i])) { + expr += binarys[i]; + } else { + expr += 'false'; + } + } + return new Function('return ' + expr)(); + } + + function routeToRegExp(route) { + route = route.replace(/\*\*/g, '[a-zA-Z0-9_]+').replace(/\*./g, '[a-zA-Z0-9_]+.'); + return '^' + route + '$'; + } + + function watch(model, expOrFn, cb, options) { + if (isPlainObject(cb)) { + options = cb; + cb = cb.handler; + } + if (typeof cb === 'string') { + cb = model[cb]; + } + options = options || {}; + options.user = true; + var exps = void 0; + if (_.isFunction(expOrFn) || !(exps = expOrFn.match(/[a-zA-Z0-9_.*]+|[|][|]|[&][&]|[(]|[)]/g)) || exps.length === 1 && !/\*/.test(expOrFn)) { + var watcher = new Watcher(model, expOrFn, cb, options); + if (options.immediate) { + cb(watcher.value); + } + return function unwatchFn() { + watcher.teardown(); + }; + } + var watchers = []; + var fns = exps.slice(); + var complete = false, + running = false; + var callback = function callback(index, newValue, oldValue, attrs) { + if (complete === true) { + return; + } + fns[index] = true; + if (runBinaryFunction(fns)) { + complete = true; + cb(newValue, oldValue, attrs); + } + if (options && options.sync) { + complete = false; + running = false; + fns = exps.slice(); + } else { + if (!running) { + running = true; + nextTick(function () { + complete = false; + running = false; + fns = exps.slice(); + }); + } + } + }; + _.each(exps, function (exp, i) { + if (_.has(operators, exp)) { + return; + } + //a.**或a.*形式 + if (/^[1-9a-zA-Z.]+(\*\*$|\*$)/.test(exp) || exp === "**") { + var isGlobal = /\*\*$/.test(exp); + if (isGlobal) { + //a.**的形式 + exp = exp.replace(".**", ""); + } else { + //a.*的形式 + exp = exp.replace(".*", ""); + } + var getter = exp === "**" ? function (m) { + return m; + } : parsePath(exp); + var v = getter.call(model, model); + var dep = new Dep(); + if (isGlobal) { + (v.__ob__._scopeDeps || (v.__ob__._scopeDeps = [])).push(dep); + } else { + (v.__ob__._deps || (v.__ob__._deps = [])).push(dep); + } + var w = new Watcher(model, function () { + dep.depend(); + return NaN; + }, function (newValue, oldValue, attrs) { + callback(i, newValue, oldValue, _.extend({ index: i }, attrs)); + }, options); + watchers.push(function unwatchFn() { + w.teardown(); + v.__ob__._scopeDeps && remove(v.__ob__._scopeDeps, dep); + v.__ob__._deps && remove(v.__ob__._deps, dep); + }); + return; + } + // **.a.**的情况,场景:a.b.c, 如果用b.**监听, a被重新赋值b上的_scopeDes就不存在了 + if (/^(\*\*\.)+[1-9a-zA-Z]+(\.\*\*$)/.test(exp)) { + //先获取到能获取到的对象 + var paths = exp.split("."); + var currentModel = model[paths[1]]; + exp = paths[1] + ".**"; + //补全路径 + var parent = currentModel.__ob__.parent, + root = currentModel.__ob__; + while (parent) { + exp = '*.' + exp; + root = parent; + parent = parent.parent; + } + var regStr = routeToRegExp(exp); + var _dep = new Dep(); + root._globalDeps || (root._globalDeps = {}); + if (_.isArray(root._globalDeps[regStr])) { + root._globalDeps[regStr].push(_dep); + } else { + root._globalDeps[regStr] = [_dep]; + } + + var _w = new Watcher(currentModel, function () { + _dep.depend(); + return NaN; + }, function (newValue, oldValue, attrs) { + callback(i, newValue, oldValue, _.extend({ index: i }, attrs)); + }, options); + watchers.push(function unwatchFn() { + if (root._globalDeps) { + remove(root._globalDeps[regStr], _dep); + + if (root._globalDeps[regStr].length === 0) { + delete root._globalDeps[regStr]; + _w.teardown(); + } + } + }); + return; + } + if (/\*\*$|\*$/.test(exp)) { + throw new Error('not support'); + } + //其他含有*的情况,如*.a,*.*.a,a.*.a + if (/\*/.test(exp)) { + var _currentModel = model; + //先获取到能获取到的对象 + var _paths = exp.split("."); + for (var _i = 0, len = _paths.length; _i < len; _i++) { + if (_paths[_i] === "*") { + break; + } + _currentModel = model[_paths[_i]]; + } + exp = exp.substr(exp.indexOf("*")); + //补全路径 + var _parent = _currentModel.__ob__.parent, + _root = _currentModel.__ob__; + while (_parent) { + exp = '*.' + exp; + _root = _parent; + _parent = _parent.parent; + } + var _regStr = routeToRegExp(exp); + var _dep2 = new Dep(); + _root._globalDeps || (_root._globalDeps = {}); + if (_.isArray(_root._globalDeps[_regStr])) { + _root._globalDeps[_regStr].push(_dep2); + } else { + _root._globalDeps[_regStr] = [_dep2]; + } + + var _w2 = new Watcher(_currentModel, function () { + _dep2.depend(); + return NaN; + }, function (newValue, oldValue, attrs) { + callback(i, newValue, oldValue, _.extend({ index: i }, attrs)); + }, options); + watchers.push(function unwatchFn() { + if (_root._globalDeps) { + remove(_root._globalDeps[_regStr], _dep2); + + if (_root._globalDeps[_regStr].length === 0) { + delete _root._globalDeps[_regStr]; + _w2.teardown(); + } + } + }); + return; + } + var watcher = new Watcher(model, exp, function (newValue, oldValue, attrs) { + callback(i, newValue, oldValue, _.extend({ index: i }, attrs)); + }, options); + watchers.push(function unwatchFn() { + watcher.teardown(); + }); + }); + return watchers; + } + + var mixinInjection = {}; + + function getMixins(type) { + return mixinInjection[type]; + } + + function mixin(xtype, cls) { + mixinInjection[xtype] = _.cloneDeep(cls); + } + + var computedWatcherOptions = { lazy: true }; + var REACTIVE = true; + + function initState(vm, state) { + if (state) { + vm.$$state = REACTIVE ? observe(state).model : state; + } + } + + function initComputed(vm, computed) { + var watchers = vm._computedWatchers = {}; + defineComputed(vm, computed); + for (var key in computed) { + watchers[key] = defineComputedWatcher(vm, computed[key]); + } + } + + function defineComputedWatcher(vm, userDef) { + var context = vm.$$model ? vm.model : vm; + var getter = typeof userDef === "function" ? userDef : userDef.get; + + return new Watcher(context, getter || noop, noop, computedWatcherOptions); + } + + function defineOneComputedGetter(vm, key, userDef) { + var shouldCache = true; + var sharedPropertyDefinition = { + enumerable: true, + configurable: true, + get: noop, + set: noop + }; + if (typeof userDef === "function") { + sharedPropertyDefinition.get = createComputedGetter(vm, key); + sharedPropertyDefinition.set = noop; + } else { + sharedPropertyDefinition.get = userDef.get ? shouldCache && userDef.cache !== false ? createComputedGetter(vm, key) : userDef.get : noop; + sharedPropertyDefinition.set = userDef.set ? userDef.set : noop; + } + return sharedPropertyDefinition; + } + + function defineComputed(vm, computed) { + var props = {}; + for (var key in computed) { + if (!(key in vm)) { + props[key] = defineOneComputedGetter(vm, key, computed[key]); + } + } + vm.$$computed = createViewModel$1({}, props); + } + + function createComputedGetter(vm, key) { + return function computedGetter() { + var watcher = vm._computedWatchers && vm._computedWatchers[key]; + if (watcher) { + if (watcher.dirty) { + watcher.evaluate(); + } + if (REACTIVE && Dep.target) { + watcher.depend(); + } + return watcher.value; + } + }; + } + + function initWatch(vm, watch$$1) { + vm._watchers || (vm._watchers = []); + for (var key in watch$$1) { + var handler = watch$$1[key]; + if (_.isArray(handler)) { + for (var i = 0; i < handler.length; i++) { + vm._watchers.push(createWatcher(vm, key, handler[i])); + } + } else { + vm._watchers.push(createWatcher(vm, key, handler)); + } + } + } + + function createWatcher(vm, keyOrFn, cb, options) { + if (isPlainObject(cb)) { + options = cb; + cb = cb.handler; + } + if (typeof cb === 'string') { + cb = vm[cb]; + } + return watch(vm.model, keyOrFn, _.bind(cb, vm.$$model ? vm.model : vm), options); + } + + function initMethods(vm, methods) { + for (var key in methods) { + vm[key] = methods[key] == null ? noop : _.bind(methods[key], vm.$$model ? vm.model : vm); + } + } + + function initMixins(vm, mixins) { + mixins = (mixins || []).slice(0); + + _.each(mixins.reverse(), function (mixinType) { + var mixin$$1 = getMixins(mixinType); + + for (var key in mixin$$1) { + if (typeof mixin$$1[key] !== "function") continue; + + if (_.has(vm, key)) continue; + + vm[key] = _.bind(mixin$$1[key], vm.$$model ? vm.model : vm); + } + }); + } + + function defineProps(vm, keys) { + var props = {}; + // if (typeof Proxy === 'function') { + // return vm.model = new Proxy(props, { + // has: function (target, key) { + // return keys.indexOf(key) > -1; + // }, + // get: function (target, key) { + // if (key in $$skipArray) { + // return props[key] + // } + // if (vm.$$computed && key in vm.$$computed) { + // return vm.$$computed[key] + // } + // if (vm.$$state && key in vm.$$state) { + // return vm.$$state[key] + // } + // return vm.$$model[key] + // }, + // set: function (target, key, val) { + // if (key in $$skipArray) { + // return props[key] = val + // } + // if (vm.$$state && key in vm.$$state) { + // return vm.$$state[key] = val + // } + // if (vm.$$model && key in vm.$$model) { + // return vm.$$model[key] = val + // } + // } + // }) + // } + + var _loop = function _loop(i, len) { + var key = keys[i]; + if (!(key in $$skipArray)) { + props[key] = { + enumerable: true, + configurable: true, + get: function get() { + if (vm.$$computed && key in vm.$$computed) { + return vm.$$computed[key]; + } + if (vm.$$state && key in vm.$$state) { + return vm.$$state[key]; + } + if (vm.$$model && key in vm.$$model) { + return vm.$$model[key]; + } + var p = vm._parent; + while (p) { + if (p.$$context && key in p.$$context) { + return p.$$context[key]; + } + p = p._parent; + } + }, + set: function set(val) { + if (vm.$$state && key in vm.$$state) { + return vm.$$state[key] = val; + } + if (vm.$$model && key in vm.$$model) { + return vm.$$model[key] = val; + } + var p = vm._parent; + while (p) { + if (p.$$context && key in p.$$context) { + return p.$$context[key] = val; + } + p = p._parent; + } + } + }; + } + }; + + for (var i = 0, len = keys.length; i < len; i++) { + _loop(i, len); + } + vm.model = createViewModel$1({}, props); + } + + function defineContext(vm, keys) { + var props = {}; + + var _loop2 = function _loop2(i, len) { + var key = keys[i]; + if (!(key in $$skipArray)) { + props[key] = { + enumerable: true, + configurable: true, + get: function get() { + return vm.model[key]; + }, + set: function set(val) { + return vm.model[key] = val; + } + }; + } + }; + + for (var i = 0, len = keys.length; i < len; i++) { + _loop2(i, len); + } + vm.$$context = createViewModel$1({}, props); + } + + function getInjectValue(vm, key) { + var p = vm._parent; + while (p) { + if (p.$$context && key in p.$$context) { + return p.$$context[key]; + } + p = p._parent; + } + } + + function getInjectValues(vm) { + var inject = vm.inject || []; + var result = {}; + _.each(inject, function (key) { + result[key] = getInjectValue(vm, key); + }); + return result; + } + + var Model = function () { + function Model() { + _classCallCheck(this, Model); + } + + Model.prototype._constructor = function _constructor(model, destroyHandler) { + if (model instanceof Observer || model instanceof Model) { + model = model.model; + } + if (model && model.__ob__) { + this.$$model = model; + } else { + this.options = model || {}; + } + this._parent = Model.target; + var state = _.isFunction(this.state) ? this.state() : this.state; + var computed = this.computed; + var context = this.context; + var inject = this.inject; + var childContext = this.childContext; + var watch$$1 = this.watch; + var actions = this.actions; + var keys = _.keys(this.$$model).concat(_.keys(state)).concat(_.keys(computed)).concat(inject || []).concat(context || []); + var mixins = this.mixins; + defineProps(this, keys); + childContext && defineContext(this, childContext); + this.$$model && (this.model.__ob__ = this.$$model.__ob__); + initMixins(this, mixins); + this.init(); + initState(this, _.extend(getInjectValues(this), state)); + initComputed(this, computed); + REACTIVE && initWatch(this, watch$$1); + initMethods(this, actions); + this.created && this.created(); + this._destroyHandler = destroyHandler; + if (this.$$model) { + return this.model; + } + }; + + Model.prototype._init = function _init() {}; + + Model.prototype.init = function init() { + this._init(); + }; + + Model.prototype.destroy = function destroy() { + for (var _key3 in this._computedWatchers) { + this._computedWatchers[_key3].teardown(); + } + _.each(this._watchers, function (unwatches) { + unwatches = _.isArray(unwatches) ? unwatches : [unwatches]; + _.each(unwatches, function (unwatch) { + unwatch(); + }); + }); + this._watchers && (this._watchers = []); + this.destroyed && this.destroyed(); + this.$$model = null; + this.$$computed = null; + this.$$state = null; + this._destroyHandler && this._destroyHandler(); + }; + + return Model; + }(); + + function define(model) { + return REACTIVE ? new Observer(model).model : model; + } + + var reactive = define; + + function config(options) { + options || (options = {}); + if ("reactive" in options) { + REACTIVE = options.reactive; + } + } + + function toJSON(model) { + var result = void 0; + if (_.isArray(model)) { + result = []; + for (var i = 0, len = model.length; i < len; i++) { + result[i] = toJSON(model[i]); + } + } else if (model && isPlainObject(model)) { + result = {}; + for (var _key4 in model) { + if (!_.has($$skipArray, _key4)) { + result[_key4] = toJSON(model[_key4]); + } + } + } else { + result = model; + } + return result; + } + + var version = '2.0'; + + exports.version = version; + exports.$$skipArray = $$skipArray; + exports.mixin = mixin; + exports.Model = Model; + exports.define = define; + exports.reactive = reactive; + exports.config = config; + exports.observerState = observerState; + exports.Observer = Observer; + exports.observe = observe; + exports.notify = notify; + exports.defineReactive = defineReactive; + exports.set = set; + exports.del = del; + exports.Watcher = Watcher; + exports.pushTarget = pushTarget; + exports.popTarget = popTarget; + exports.watch = watch; + exports.toJSON = toJSON; + + exports.__esModule = true; +}); diff --git a/src/main/resources/com/fr/fineui/dist/fix/fix.proxy.js b/src/main/resources/com/fr/fineui/dist/fix/fix.proxy.js new file mode 100644 index 0000000..513db8d --- /dev/null +++ b/src/main/resources/com/fr/fineui/dist/fix/fix.proxy.js @@ -0,0 +1,2035 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Fix = {})); +}(this, (function (exports) { 'use strict'; + + function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + var EMPTY_OBJ = Object.freeze({}); + Object.freeze([]); + var extend = Object.assign; + var hasOwnProperty = Object.prototype.hasOwnProperty; + + var hasOwn = function hasOwn(val, key) { + return hasOwnProperty.call(val, key); + }; + + var isArray = Array.isArray; + + var isMap$1 = function isMap(val) { + return toTypeString$1(val) === "[object Map]"; + }; + + var isFunction = function isFunction(val) { + return typeof val === "function"; + }; + + var isString = function isString(val) { + return typeof val === "string"; + }; + + var isSymbol = function isSymbol(val) { + return _typeof(val) === "symbol"; + }; + + var isObject = function isObject(val) { + return val !== null && _typeof(val) === "object"; + }; + + var objectToString$1 = Object.prototype.toString; + + var toTypeString$1 = function toTypeString(value) { + return objectToString$1.call(value); + }; + + var toRawType = function toRawType(value) { + return (// extract "RawType" from strings like "[object RawType]" + toTypeString$1(value).slice(8, -1) + ); + }; + + var isIntegerKey = function isIntegerKey(key) { + return isString(key) && key !== "NaN" && key[0] !== "-" && "".concat(parseInt(key, 10)) === key; + }; + + var cacheStringFunction = function cacheStringFunction(fn) { + var cache = Object.create(null); + return function (str) { + var hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; + }; + /** + * @private + */ + + + var capitalize = cacheStringFunction(function (str) { + return str.charAt(0).toUpperCase() + str.slice(1); + }); // compare whether a value has changed, accounting for NaN. + + var hasChanged$1 = function hasChanged(value, oldValue) { + return value !== oldValue && (value === value || oldValue === oldValue); + }; + + var targetMap = new WeakMap(); + var effectStack = []; + var activeEffect; + var ITERATE_KEY = Symbol("iterate"); + var MAP_KEY_ITERATE_KEY = Symbol("Map key iterate"); + + function isEffect(fn) { + return fn && fn._isEffect === true; + } + + function effect(fn) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : EMPTY_OBJ; + + if (isEffect(fn)) { + fn = fn.raw; + } + + var effect = createReactiveEffect(fn, options); + + if (!options.lazy) { + effect(); + } + + return effect; + } + + function stop(effect) { + if (effect.active) { + cleanup(effect); + + if (effect.options.onStop) { + effect.options.onStop(); + } + + effect.active = false; + } + } + + var uid$1 = 0; + + function createReactiveEffect(fn, options) { + var effect = function reactiveEffect() { + if (!effect.active) { + return options.scheduler ? undefined : fn(); + } + + if (!effectStack.includes(effect)) { + cleanup(effect); + + try { + enableTracking(); + effectStack.push(effect); + activeEffect = effect; + return fn(); + } finally { + effectStack.pop(); + resetTracking(); + activeEffect = effectStack[effectStack.length - 1]; + } + } + }; + + effect.id = uid$1++; + effect.allowRecurse = !!options.allowRecurse; + effect._isEffect = true; + effect.active = true; + effect.raw = fn; + effect.deps = []; + effect.options = options; + return effect; + } + + function cleanup(effect) { + var deps = effect.deps; + + if (deps.length) { + for (var i = 0; i < deps.length; i++) { + deps[i].delete(effect); + } + + deps.length = 0; + } + } + + var shouldTrack = true; + var trackStack = []; + + function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; + } + + function enableTracking() { + trackStack.push(shouldTrack); + shouldTrack = true; + } + + function resetTracking() { + var last = trackStack.pop(); + shouldTrack = last === undefined ? true : last; + } + + function track(target, type, key) { + if (!shouldTrack || activeEffect === undefined) { + return; + } + + var depsMap = targetMap.get(target); + + if (!depsMap) { + targetMap.set(target, depsMap = new Map()); + } + + var dep = depsMap.get(key); + + if (!dep) { + depsMap.set(key, dep = new Set()); + } + + if (!dep.has(activeEffect)) { + dep.add(activeEffect); + activeEffect.deps.push(dep); + + if (activeEffect.options.onTrack) { + activeEffect.options.onTrack({ + effect: activeEffect, + target: target, + type: type, + key: key + }); + } + } + } + + function trigger(target, type, key, newValue, oldValue, oldTarget) { + var depsMap = targetMap.get(target); + + if (!depsMap) { + // never been tracked + return; + } + + var effects = new Set(); + + var add = function add(effectsToAdd) { + if (effectsToAdd) { + effectsToAdd.forEach(function (effect) { + if (effect !== activeEffect || effect.allowRecurse) { + effects.add(effect); + } + }); + } + }; + + if (type === "clear" + /* CLEAR */ + ) { + // collection being cleared + // trigger all effects for target + depsMap.forEach(add); + } else if (key === "length" && isArray(target)) { + depsMap.forEach(function (dep, key) { + if (key === "length" || key >= newValue) { + add(dep); + } + }); + } else { + // schedule runs for SET | ADD | DELETE + if (key !== void 0) { + add(depsMap.get(key)); + } // also run for iteration key on ADD | DELETE | Map.SET + + + switch (type) { + case "add" + /* ADD */ + : + if (!isArray(target)) { + add(depsMap.get(ITERATE_KEY)); + + if (isMap$1(target)) { + add(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isIntegerKey(key)) { + // new index added to array -> length changes + add(depsMap.get("length")); + } + + break; + + case "delete" + /* DELETE */ + : + if (!isArray(target)) { + add(depsMap.get(ITERATE_KEY)); + + if (isMap$1(target)) { + add(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + + break; + + case "set" + /* SET */ + : + if (isMap$1(target)) { + add(depsMap.get(ITERATE_KEY)); + } + + break; + } + } + + var run = function run(effect) { + if (effect.options.onTrigger) { + effect.options.onTrigger({ + effect: effect, + target: target, + key: key, + type: type, + newValue: newValue, + oldValue: oldValue, + oldTarget: oldTarget + }); + } + + if (effect.options.scheduler) { + effect.options.scheduler(effect); + } else { + effect(); + } + }; + + effects.forEach(run); + } + + var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map(function (key) { + return Symbol[key]; + }).filter(isSymbol)); + var get = /* #__PURE__*/createGetter(); + var shallowGet = /* #__PURE__*/createGetter(false, true); + var readonlyGet = /* #__PURE__*/createGetter(true); + var shallowReadonlyGet = /* #__PURE__*/createGetter(true, true); + var arrayInstrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach(function (key) { + var method = Array.prototype[key]; + + arrayInstrumentations[key] = function () { + var arr = toRaw(this); + + for (var i = 0, l = this.length; i < l; i++) { + track(arr, "get" + /* GET */ + , "".concat(i)); + } // we run the method using the original args first (which may be reactive) + + + for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) { + args[_key2] = arguments[_key2]; + } + + var res = method.apply(arr, args); + + if (res === -1 || res === false) { + // if that didn't work, run it again using raw values. + return method.apply(arr, args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach(function (key) { + var method = Array.prototype[key]; + + arrayInstrumentations[key] = function () { + pauseTracking(); + + for (var _len2 = arguments.length, args = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) { + args[_key3] = arguments[_key3]; + } + + var res = method.apply(this, args); + resetTracking(); + return res; + }; + }); + + function createGetter() { + var isReadonly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var shallow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + return function get(target, key, receiver) { + if (key === "__v_isReactive" + /* IS_REACTIVE */ + ) { + return !isReadonly; + } else if (key === "__v_isReadonly" + /* IS_READONLY */ + ) { + return isReadonly; + } else if (key === "__v_raw" + /* RAW */ + && receiver === (isReadonly ? readonlyMap : reactiveMap).get(target)) { + return target; + } + + var targetIsArray = isArray(target); + + if (targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + + var res = Reflect.get(target, key, receiver); + + if (isSymbol(key) ? builtInSymbols.has(key) : key === "__proto__" || key === "__v_isRef") { + return res; + } + + if (!isReadonly) { + track(target, "get" + /* GET */ + , key); + } + + if (shallow) { + return res; + } + + if (isRef(res)) { + // ref unwrapping - does not apply for Array + integer key. + var shouldUnwrap = !targetIsArray || !isIntegerKey(key); + return shouldUnwrap ? res.value : res; + } + + if (isObject(res)) { + // Convert returned value into a proxy as well. we do the isObject check + // here to avoid invalid value warning. Also need to lazy access readonly + // and reactive here to avoid circular dependency. + return isReadonly ? readonly(res) : reactive(res); + } + + return res; + }; + } + + var set$1 = /* #__PURE__*/createSetter(); + var shallowSet = /* #__PURE__*/createSetter(true); + + function createSetter() { + var shallow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + return function set(target, key, value, receiver) { + var oldValue = target[key]; + + if (!shallow) { + value = toRaw(value); + + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } + } + + var hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + var result = Reflect.set(target, key, value, receiver); // don't trigger if target is something up in the prototype chain of original + + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add" + /* ADD */ + , key, value); + } else if (hasChanged$1(value, oldValue) || key === "length") { + trigger(target, "set" + /* SET */ + , key, value, oldValue); + } + } + + return result; + }; + } + + function deleteProperty(target, key) { + var hadKey = hasOwn(target, key); + var oldValue = target[key]; + var result = Reflect.deleteProperty(target, key); + + if (result && hadKey) { + trigger(target, "delete" + /* DELETE */ + , key, undefined, oldValue); + } + + return result; + } + + function has$1(target, key) { + var result = Reflect.has(target, key); + + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has" + /* HAS */ + , key); + } + + return result; + } + + function ownKeys(target) { + track(target, "iterate" + /* ITERATE */ + , isArray(target) ? "length" : ITERATE_KEY); + return Reflect.ownKeys(target); + } + + var mutableHandlers = { + get: get, + set: set$1, + deleteProperty: deleteProperty, + has: has$1, + ownKeys: ownKeys + }; + var readonlyHandlers = { + get: readonlyGet, + set: function set(target, key) { + { + console.warn("Set operation on key \"".concat(String(key), "\" failed: target is readonly."), target); + } + return true; + }, + deleteProperty: function deleteProperty(target, key) { + { + console.warn("Delete operation on key \"".concat(String(key), "\" failed: target is readonly."), target); + } + return true; + } + }; + extend({}, mutableHandlers, { + get: shallowGet, + set: shallowSet + }); // Props handlers are special in the sense that it should not unwrap top-level + // refs (in order to allow refs to be explicitly passed down), but should + // retain the reactivity of the normal readonly object. + + extend({}, readonlyHandlers, { + get: shallowReadonlyGet + }); + + var toReactive = function toReactive(value) { + return isObject(value) ? reactive(value) : value; + }; + + var toReadonly = function toReadonly(value) { + return isObject(value) ? readonly(value) : value; + }; + + var toShallow = function toShallow(value) { + return value; + }; + + var getProto = function getProto(v) { + return Reflect.getPrototypeOf(v); + }; + + function get$1(target, key) { + var isReadonly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var isShallow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + // #1772: readonly(reactive(Map)) should return readonly + reactive version + // of the value + target = target["__v_raw" + /* RAW */ + ]; + var rawTarget = toRaw(target); + var rawKey = toRaw(key); + + if (key !== rawKey) { + !isReadonly && track(rawTarget, "get" + /* GET */ + , key); + } + + !isReadonly && track(rawTarget, "get" + /* GET */ + , rawKey); + + var _getProto = getProto(rawTarget), + has = _getProto.has; + + var wrap = isReadonly ? toReadonly : isShallow ? toShallow : toReactive; + + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } + } + + function has$1$1(key) { + var isReadonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var target = this["__v_raw" + /* RAW */ + ]; + var rawTarget = toRaw(target); + var rawKey = toRaw(key); + + if (key !== rawKey) { + !isReadonly && track(rawTarget, "has" + /* HAS */ + , key); + } + + !isReadonly && track(rawTarget, "has" + /* HAS */ + , rawKey); + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + } + + function size(target) { + var isReadonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + target = target["__v_raw" + /* RAW */ + ]; + !isReadonly && track(toRaw(target), "iterate" + /* ITERATE */ + , ITERATE_KEY); + return Reflect.get(target, "size", target); + } + + function add(value) { + value = toRaw(value); + var target = toRaw(this); + var proto = getProto(target); + var hadKey = proto.has.call(target, value); + var result = target.add(value); + + if (!hadKey) { + trigger(target, "add" + /* ADD */ + , value, value); + } + + return result; + } + + function set$1$1(key, value) { + value = toRaw(value); + var target = toRaw(this); + + var _getProto2 = getProto(target), + has = _getProto2.has, + get = _getProto2.get; + + var hadKey = has.call(target, key); + + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + + var oldValue = get.call(target, key); + var result = target.set(key, value); + + if (!hadKey) { + trigger(target, "add" + /* ADD */ + , key, value); + } else if (hasChanged$1(value, oldValue) || key === "length") { + trigger(target, "set" + /* SET */ + , key, value, oldValue); + } + + return result; + } + + function deleteEntry(key) { + var target = toRaw(this); + + var _getProto3 = getProto(target), + has = _getProto3.has, + get = _getProto3.get; + + var hadKey = has.call(target, key); + + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + + var oldValue = get ? get.call(target, key) : undefined; // forward the operation before queueing reactions + + var result = target.delete(key); + + if (hadKey) { + trigger(target, "delete" + /* DELETE */ + , key, undefined, oldValue); + } + + return result; + } + + function clear() { + var target = toRaw(this); + var hadItems = target.size !== 0; + var oldTarget = isMap$1(target) ? new Map(target) : new Set(target); // forward the operation before queueing reactions + + var result = target.clear(); + + if (hadItems) { + trigger(target, "clear" + /* CLEAR */ + , undefined, undefined, oldTarget); + } + + return result; + } + + function createForEach(isReadonly, isShallow) { + return function forEach(callback, thisArg) { + var observed = this; + var target = observed["__v_raw" + /* RAW */ + ]; + var rawTarget = toRaw(target); + var wrap = isReadonly ? toReadonly : isShallow ? toShallow : toReactive; + !isReadonly && track(rawTarget, "iterate" + /* ITERATE */ + , ITERATE_KEY); + return target.forEach(function (value, key) { + return (// important: make sure the callback is + // 1. invoked with the reactive map as `this` and 3rd arg + // 2. the value received should be a corresponding reactive/readonly. + callback.call(thisArg, wrap(value), wrap(key), observed) + ); + }); + }; + } + + function createIterableMethod(method, isReadonly, isShallow) { + return function () { + var target = this["__v_raw" + /* RAW */ + ]; + var rawTarget = toRaw(target); + var targetIsMap = isMap$1(rawTarget); + var isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + var isKeyOnly = method === "keys" && targetIsMap; + var innerIterator = target[method].apply(target, arguments); + var wrap = isReadonly ? toReadonly : isShallow ? toShallow : toReactive; + !isReadonly && track(rawTarget, "iterate" + /* ITERATE */ + , isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); // return a wrapped iterator which returns observed versions of the + // values emitted from the real iterator + + return _defineProperty({ + // iterator protocol + next: function next() { + var _innerIterator$next = innerIterator.next(), + value = _innerIterator$next.value, + done = _innerIterator$next.done; + + return done ? { + value: value, + done: done + } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done: done + }; + } + }, Symbol.iterator, function () { + return this; + }); + }; + } + + function createReadonlyMethod(type) { + return function () { + { + var key = (arguments.length <= 0 ? undefined : arguments[0]) ? "on key \"".concat(arguments.length <= 0 ? undefined : arguments[0], "\" ") : ""; + console.warn("".concat(capitalize(type), " operation ").concat(key, "failed: target is readonly."), toRaw(this)); + } + return type === "delete" + /* DELETE */ + ? false : this; + }; + } + + var mutableInstrumentations = { + get: function get(key) { + return get$1(this, key); + }, + + get size() { + return size(this); + }, + + has: has$1$1, + add: add, + set: set$1$1, + delete: deleteEntry, + clear: clear, + forEach: createForEach(false, false) + }; + var shallowInstrumentations = { + get: function get(key) { + return get$1(this, key, false, true); + }, + + get size() { + return size(this); + }, + + has: has$1$1, + add: add, + set: set$1$1, + delete: deleteEntry, + clear: clear, + forEach: createForEach(false, true) + }; + var readonlyInstrumentations = { + get: function get(key) { + return get$1(this, key, true); + }, + + get size() { + return size(this, true); + }, + + has: function has(key) { + return has$1$1.call(this, key, true); + }, + add: createReadonlyMethod("add" + /* ADD */ + ), + set: createReadonlyMethod("set" + /* SET */ + ), + delete: createReadonlyMethod("delete" + /* DELETE */ + ), + clear: createReadonlyMethod("clear" + /* CLEAR */ + ), + forEach: createForEach(true, false) + }; + var iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; + iteratorMethods.forEach(function (method) { + mutableInstrumentations[method] = createIterableMethod(method, false, false); + readonlyInstrumentations[method] = createIterableMethod(method, true, false); + shallowInstrumentations[method] = createIterableMethod(method, false, true); + }); + + function createInstrumentationGetter(isReadonly, shallow) { + var instrumentations = shallow ? shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; + return function (target, key, receiver) { + if (key === "__v_isReactive" + /* IS_REACTIVE */ + ) { + return !isReadonly; + } else if (key === "__v_isReadonly" + /* IS_READONLY */ + ) { + return isReadonly; + } else if (key === "__v_raw" + /* RAW */ + ) { + return target; + } + + return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver); + }; + } + + var mutableCollectionHandlers = { + get: createInstrumentationGetter(false, false) + }; + var readonlyCollectionHandlers = { + get: createInstrumentationGetter(true, false) + }; + + function checkIdentityKeys(target, has, key) { + var rawKey = toRaw(key); + + if (rawKey !== key && has.call(target, rawKey)) { + var type = toRawType(target); + console.warn("Reactive ".concat(type, " contains both the raw and reactive ") + "versions of the same object".concat(type === "Map" ? " as keys" : "", ", ") + "which can lead to inconsistencies. " + "Avoid differentiating between the raw and reactive versions " + "of an object and only use the reactive version if possible."); + } + } + + var reactiveMap = new WeakMap(); + var readonlyMap = new WeakMap(); + + function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1; + + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2; + + default: + return 0; + } + } + + function getTargetType(value) { + return value["__v_skip" + /* SKIP */ + ] || !Object.isExtensible(value) ? 0 + /* INVALID */ + : targetTypeMap(toRawType(value)); + } + + function reactive(target) { + // if trying to observe a readonly proxy, return the readonly version. + if (target && target["__v_isReadonly" + /* IS_READONLY */ + ]) { + return target; + } + + return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers); + } // Return a reactive-copy of the original object, where only the root level + + function readonly(target) { + return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers); + } // Return a reactive-copy of the original object, where only the root level + + function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers) { + if (!isObject(target)) { + { + console.warn("value cannot be made reactive: ".concat(String(target))); + } + return target; + } // target is already a Proxy, return it. + // exception: calling readonly() on a reactive object + + + if (target["__v_raw" + /* RAW */ + ] && !(isReadonly && target["__v_isReactive" + /* IS_REACTIVE */ + ])) { + return target; + } // target already has corresponding Proxy + + + var proxyMap = isReadonly ? readonlyMap : reactiveMap; + var existingProxy = proxyMap.get(target); + + if (existingProxy) { + return existingProxy; + } // only a whitelist of value types can be observed. + + + var targetType = getTargetType(target); + + if (targetType === 0 + /* INVALID */ + ) { + return target; + } + + var proxy = new Proxy(target, targetType === 2 + /* COLLECTION */ + ? collectionHandlers : baseHandlers); + proxyMap.set(target, proxy); + return proxy; + } + + function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw" + /* RAW */ + ]); + } + + return !!(value && value["__v_isReactive" + /* IS_REACTIVE */ + ]); + } + + function isReadonly(value) { + return !!(value && value["__v_isReadonly" + /* IS_READONLY */ + ]); + } + + function toRaw(observed) { + return observed && toRaw(observed["__v_raw" + /* RAW */ + ]) || observed; + } + + function isRef(r) { + return Boolean(r && r.__v_isRef === true); + } + + var ComputedRefImpl = /*#__PURE__*/function () { + function ComputedRefImpl(getter, _setter, isReadonly) { + var _this2 = this; + + _classCallCheck(this, ComputedRefImpl); + + this._setter = _setter; + this._dirty = true; + this.__v_isRef = true; + this.effect = effect(getter, { + lazy: true, + scheduler: function scheduler() { + if (!_this2._dirty) { + _this2._dirty = true; + trigger(toRaw(_this2), "set" + /* SET */ + , "value"); + } + } + }); + this["__v_isReadonly" + /* IS_READONLY */ + ] = isReadonly; + } + + _createClass(ComputedRefImpl, [{ + key: "value", + get: function get() { + if (this._dirty) { + this._value = this.effect(); + this._dirty = false; + } + + track(toRaw(this), "get" + /* GET */ + , "value"); + return this._value; + }, + set: function set(newValue) { + this._setter(newValue); + } + }]); + + return ComputedRefImpl; + }(); + + function computed(getterOrOptions) { + var getter; + var setter; + + if (isFunction(getterOrOptions)) { + getter = getterOrOptions; + + setter = function setter() { + console.warn("Write operation failed: computed value is readonly"); + }; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + + return new ComputedRefImpl(getter, setter, isFunction(getterOrOptions) || !getterOrOptions.set); + } + + function noop() {} + function isNative(Ctor) { + return typeof Ctor === "function" && /native code/.test(Ctor.toString()); + } + var isIE = function isIE() { + if (typeof navigator === "undefined") { + return false; + } + + return /(msie|trident)/i.test(navigator.userAgent.toLowerCase()); + }; + var getIEVersion = function getIEVersion() { + var version = 0; + + if (typeof navigator === "undefined") { + return false; + } + + var agent = navigator.userAgent.toLowerCase(); + var v1 = agent.match(/(?:msie\s([\w.]+))/); + var v2 = agent.match(/(?:trident.*rv:([\w.]+))/); + + if (v1 && v2 && v1[1] && v2[1]) { + version = Math.max(v1[1] * 1, v2[1] * 1); + } else if (v1 && v1[1]) { + version = v1[1] * 1; + } else if (v2 && v2[1]) { + version = v2[1] * 1; + } else { + version = 0; + } + + return version; + }; + isIE() && getIEVersion() < 9; + var _toString = Object.prototype.toString; + function isPlainObject(obj) { + return _toString.call(obj) === "[object Object]"; + } + var bailRE = /[^\w.$]/; + function parsePath(path) { + if (bailRE.test(path)) { + return; + } + + var segments = path.split("."); + return function (obj) { + for (var i = 0; i < segments.length; i++) { + if (!obj) return; + obj = obj[segments[i]]; + } + + return obj; + }; + } + var nextTick = function () { + var callbacks = []; + var pending = false; + var timerFunc; + + function nextTickHandler() { + pending = false; + var copies = callbacks.slice(0); + callbacks.length = 0; + + for (var i = 0; i < copies.length; i++) { + copies[i](); + } + } // An asynchronous deferring mechanism. + // In pre 2.4, we used to use microtasks (Promise/MutationObserver) + // but microtasks actually has too high a priority and fires in between + // supposedly sequential events (e.g. #4521, #6690) or even between + // bubbling of the same event (#6566). Technically setImmediate should be + // the ideal choice, but it's not available everywhere; and the only polyfill + // that consistently queues the callback after all DOM events triggered in the + // same loop is by using MessageChannel. + + /* istanbul ignore if */ + + + if (typeof setImmediate !== "undefined" && isNative(setImmediate)) { + timerFunc = function timerFunc() { + setImmediate(nextTickHandler); + }; + } else if (typeof MessageChannel !== "undefined" && (isNative(MessageChannel) || // PhantomJS + MessageChannel.toString() === "[object MessageChannelConstructor]")) { + var channel = new MessageChannel(); + var port = channel.port2; + channel.port1.onmessage = nextTickHandler; + + timerFunc = function timerFunc() { + port.postMessage(1); + }; + } else if (typeof Promise !== "undefined" && isNative(Promise)) { + /* istanbul ignore next */ + // use microtask in non-DOM environments, e.g. Weex + var p = Promise.resolve(); + + timerFunc = function timerFunc() { + p.then(nextTickHandler); + }; + } else { + // fallback to setTimeout + timerFunc = function timerFunc() { + setTimeout(nextTickHandler, 0); + }; + } + + return function queueNextTick(cb, ctx) { + var _resolve; + + callbacks.push(function () { + if (cb) { + try { + cb.call(ctx); + } catch (e) { + console.error(e); + } + } else if (_resolve) { + _resolve(ctx); + } + }); + + if (!pending) { + pending = true; + timerFunc(); + } // $flow-disable-line + + + if (!cb && typeof Promise !== "undefined") { + return new Promise(function (resolve) { + _resolve = resolve; + }); + } + }; + }(); + + var mixinInjection = {}; + function getMixins(type) { + return mixinInjection[type]; + } + function mixin(xtype, cls) { + mixinInjection[xtype] = _.cloneDeep(cls); + } + + var queue = []; + var activatedChildren = []; + var has = {}; + var waiting = false; + var flushing = false; + var index = 0; + + function resetSchedulerState() { + index = queue.length = activatedChildren.length = 0; + has = {}; + waiting = flushing = false; + } + + function flushSchedulerQueue() { + flushing = true; + var watcher; + var id; + var options; // Sort queue before flush. + // This ensures that: + // 1. Components are updated from parent to child. (because parent is always + // created before the child) + // 2. A component's user watchers are run before its render watcher (because + // user watchers are created before the render watcher) + // 3. If a component is destroyed during a parent component's watcher run, + // its watchers can be skipped. + + queue.sort(function (a, b) { + return a.id - b.id; + }); // do not cache length because more watchers might be pushed + // as we run existing watchers + + for (index = 0; index < queue.length; index++) { + watcher = queue[index].watcher; + options = queue[index].options; + id = watcher.id; + has[id] = null; + watcher(options); + } + + resetSchedulerState(); + } + + function queueWatcher(watcher, options) { + var id = watcher.id; + + if (has[id] == null) { + has[id] = true; + + if (!flushing) { + queue.push({ + watcher: watcher, + options: options + }); + } else { + // if already flushing, splice the watcher based on its id + // if already past its id, it will be run next immediately. + var i = queue.length - 1; + + while (i > index && queue[i].watcher.id > watcher.id) { + i--; + } + + queue.splice(i + 1, 0, { + watcher: watcher, + options: options + }); + } // queue the flush + + + if (!waiting) { + waiting = true; + nextTick(flushSchedulerQueue); + } + } + } + + function innerWatch(source, cb, options) { + if (!_.isFunction(cb)) { + console.warn("`watch(fn, options?)` signature has been moved to a separate API. " + "Use `watchEffect(fn, options?)` instead. `watch` now only " + "supports `watch(source, cb, options?) signature."); + } + + return doWatch(source, cb, options); + } + var INITIAL_WATCHER_VALUE = {}; + var objectToString = Object.prototype.toString; + + var toTypeString = function toTypeString(value) { + return objectToString.call(value); + }; + + var isMap = function isMap(val) { + return toTypeString(val) === "[object Map]"; + }; + + var isSet = function isSet(val) { + return toTypeString(val) === "[object Set]"; + }; + + var hasChanged = function hasChanged(value, oldValue) { + return value !== oldValue && (value === value || oldValue === oldValue); + }; + + var uid = 0; + + function doWatch(source, cb, options, instance) { + options = options || {}; + var _options = options, + immediate = _options.immediate, + deep = _options.deep, + sync = _options.sync, + onTrack = _options.onTrack, + onTrigger = _options.onTrigger; + + if (!cb) { + if (immediate !== undefined) { + console.warn("watch() \"immediate\" option is only respected when using the " + "watch(source, callback, options?) signature."); + } + + if (deep !== undefined) { + console.warn("watch() \"deep\" option is only respected when using the " + "watch(source, callback, options?) signature."); + } + } + + var warnInvalidSource = function warnInvalidSource(s) { + console.warn("Invalid watch source: ", s, "A watch source can only be a getter/effect function, a ref, " + "a reactive object, or an array of these types."); + }; + + var getter; + var forceTrigger = false; + + if (isRef(source)) { + getter = function getter() { + return source.value; + }; + + forceTrigger = !!source._shallow; + } else if (isReactive(source)) { + getter = function getter() { + return source; + }; + + deep = true; + } else if (_.isArray(source)) { + getter = function getter() { + return source.map(function (s) { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return traverse(s); + } else if (_.isFunction(s)) { + return s.call(instance); + } else { + warnInvalidSource(s); + } + }); + }; + } else if (_.isFunction(source)) { + if (cb) { + // getter with cb + getter = function getter() { + return source.call(instance); + }; + } else { + // no cb -> simple effect + getter = function getter() { + if (instance && instance.isUnmounted) { + return; + } + + if (cleanup) { + cleanup(); + } + + return source.call(instance, onInvalidate); + }; + } + } else { + getter = function getter() {}; + + warnInvalidSource(source); + } + + if (cb && deep) { + var baseGetter = getter; + + getter = function getter() { + return traverse(baseGetter()); + }; + } + + var cleanup; + + var onInvalidate = function onInvalidate(fn) { + cleanup = runner.options.onStop = function () { + fn.call(instance); + }; + }; + + var oldValue = _.isArray(source) ? [] : INITIAL_WATCHER_VALUE; + + var job = function job() { + if (!runner.active) { + return; + } + + if (cb) { + // watch(source, cb) + var newValue = runner(); + + if (deep || forceTrigger || hasChanged(newValue, oldValue)) { + // cleanup before running cb again + if (cleanup) { + cleanup(); + } + + cb.apply(instance, [newValue, // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue, onInvalidate]); + oldValue = newValue; + } + } else { + // watchEffect + runner(); + } + }; // important: mark the job as a watcher callback so that scheduler knows + // it is allowed to self-trigger (#1727) + + + job.allowRecurse = !!cb; + job.id = ++uid; + var scheduler; + + if (sync === true) { + scheduler = job; + } else { + scheduler = function scheduler() { + return queueWatcher(job); + }; + } + + var runner = effect(getter, { + lazy: true, + onTrack: onTrack, + onTrigger: onTrigger, + scheduler: scheduler + }); // initial run + + if (cb) { + if (immediate) { + job(); + } else { + oldValue = runner(); + } + } else { + runner(); + } + + return function () { + stop(runner); + }; + } + + function traverse(value) { + var seen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set(); + + if (!_.isObject(value) || seen.has(value)) { + return value; + } + + seen.add(value); + + if (isRef(value)) { + traverse(value.value, seen); + } else if (_.isArray(value)) { + for (var i = 0; i < value.length; i++) { + traverse(value[i], seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach(function (v) { + traverse(v, seen); + }); + } else { + for (var key in value) { + traverse(value[key], seen); + } + } + + return value; + } + + var falsy; + var operators = { + "||": falsy, + "&&": falsy, + "(": falsy, + ")": falsy + }; + + function runBinaryFunction(binarys) { + var expr = ""; + + for (var i = 0, len = binarys.length; i < len; i++) { + if (_.isBoolean(binarys[i]) || _.has(operators, binarys[i])) { + expr += binarys[i]; + } else { + expr += "false"; + } + } + + return new Function("return " + expr)(); + } + + function watchExp(model, exp) { + var getter = parsePath(exp); + var result = getter.call(model, model); + + if (_.isArray(result)) { + return result.concat(); + } + + return result; + } + + function watch(model, expOrFn, cb, options) { + if (isPlainObject(cb)) { + options = cb; + cb = cb.handler; + } + + if (typeof cb === "string") { + cb = model[cb]; + } + + options = options || {}; + options.user = true; + var exps; + + if (_.isFunction(expOrFn) || !(exps = expOrFn.match(/[a-zA-Z0-9_.*]+|[|][|]|[&][&]|[(]|[)]/g)) || exps.length === 1 && !/\*/.test(expOrFn)) { + var watcher = innerWatch(_.isFunction(expOrFn) ? expOrFn : function () { + return watchExp(model, expOrFn); + }, cb, options); + return function unwatchFn() { + watcher(); + }; + } + + var watchers = []; + var fns = exps.slice(); + var complete = false, + running = false; + + var callback = function callback(index, newValue, oldValue, attrs) { + if (complete === true) { + return; + } + + fns[index] = true; + + if (runBinaryFunction(fns)) { + complete = true; + cb(newValue, oldValue, attrs); + } + + if (options && options.sync) { + complete = false; + running = false; + fns = exps.slice(); + } else { + if (!running) { + running = true; + nextTick(function () { + complete = false; + running = false; + fns = exps.slice(); + }); + } + } + }; + + _.each(exps, function (exp, i) { + if (_.has(operators, exp)) { + return; + } //a.**形式 + + + if (/^[1-9a-zA-Z.]+\*\*$/.test(exp) || exp === "**") { + exp = exp.replace(".**", ""); + var getter = exp === "**" ? function (m) { + return m; + } : parsePath(exp); + var v = getter.call(model, model); + watchers.push(innerWatch(v, function (newValue, oldValue) { + callback(i, newValue, oldValue, _.extend({ + index: i + })); + })); + return; + } + + if (/^(\*\*\.)+[1-9a-zA-Z]+(\.\*\*$)/.test(exp)) { + throw new Error("not support"); + } //含有*的情况,如a.*,如*.a,*.*.a,a.*.a + + + if (/\*/.test(exp)) { + // eslint-disable-next-line no-inner-declarations + var travers = function travers(root, deps, parent, key, res) { + if (deps.length === paths.length) { + root !== undefined && res.push({ + parent: parent, + k: key + }); + return; + } + + if (root) { + if (paths[deps.length] === "*") { + // 遍历所有节点 + for (var k in root) { + travers(root[k], deps.concat([k]), root, k, res); + } + } else { + var nextKey = paths[deps.length]; + travers(root[nextKey], deps.concat([nextKey]), root, nextKey, res); + } + } + }; + + //先获取到能获取到的对象 + var paths = exp.split("."); + var prePaths = []; + + for (var _i = 0, len = paths.length; _i < len; _i++) { + if (paths[_i] === "*") { + break; + } + + prePaths[_i] = paths[_i]; + } + + var _v; + + if (prePaths.length > 0) { + var _getter = parsePath(prePaths.join(".")); + + _v = _getter.call(model, model); + } else { + _v = model; + } + + paths = paths.slice(prePaths.length); + var changes = []; + watchers.push(innerWatch(function () { + var routes = []; + travers(_v, [], _v, null, routes); + + for (var _i2 = 0, _len = routes.length; _i2 < _len; _i2++) { + var _routes$_i = routes[_i2], + parent = _routes$_i.parent, + k = _routes$_i.k; + + for (var j = 0, l = changes.length; j < l; j++) { + var _changes$j = changes[j], + target = _changes$j.target, + key = _changes$j.key; + + if (target === toRaw(parent) && key === k) { + return true; + } + } + } + }, function (newValue) { + changes = []; + + if (newValue === true) { + callback(i, undefined, undefined, _.extend({ + index: i + })); + } + }, { + deep: true, + onTrigger: function onTrigger(_ref) { + var target = _ref.target, + key = _ref.key; + changes.push({ + target: target, + key: key + }); + } + })); + return; + } + + watchers.push(innerWatch(function () { + return watchExp(model, exp); + }, function (newValue, oldValue) { + callback(i, newValue, oldValue, _.extend({ + index: i + })); + })); + }); + + return watchers; + } + + var REACTIVE = true; + + function initState(vm, state) { + if (state) { + vm.$$state = REACTIVE ? reactive(state) : state; + } + } + + function initComputed(vm, c) { + var $$computed = vm.$$computed = {}; + + for (var key in c) { + $$computed[key] = computed(_.bind(c[key], vm)); + } + } + + function initWatch(vm, watch) { + vm._watchers || (vm._watchers = []); + + for (var key in watch) { + var handler = watch[key]; + + if (_.isArray(handler)) { + for (var i = 0; i < handler.length; i++) { + vm._watchers.push(createWatcher(vm, key, handler[i])); + } + } else { + vm._watchers.push(createWatcher(vm, key, handler)); + } + } + } + + function createWatcher(vm, keyOrFn, cb, options) { + if (isPlainObject(cb)) { + options = cb; + cb = cb.handler; + } + + if (typeof cb === "string") { + cb = vm[cb]; + } + + return watch(vm.model, keyOrFn, _.bind(cb, vm), options); + } + + function initMethods(vm, methods) { + for (var key in methods) { + vm[key] = methods[key] == null ? noop : _.bind(methods[key], vm); + } + } + + function initMixins(vm, mixins) { + mixins = (mixins || []).slice(0); + + _.each(mixins.reverse(), function (mixinType) { + var mixin = getMixins(mixinType); + + for (var key in mixin) { + if (typeof mixin[key] !== "function") continue; + if (_.has(vm, key)) continue; + vm[key] = _.bind(mixin[key], vm); + } + }); + } + + function defineProps(vm) { + vm.model = new Proxy({}, { + get: function get(target, key) { + if (vm.$$computed && key in vm.$$computed) { + try { + return vm.$$computed[key].value; + } catch (e) {// 吞掉异常 + } + + return; + } + + if (vm.$$state && key in vm.$$state) { + return vm.$$state[key]; + } + + var p = vm._parent; + + while (p) { + if (p.$$context && key in p.$$context) { + return p.$$context[key]; + } + + p = p._parent; + } + }, + set: function set(target, key, value) { + if (vm.$$state && key in vm.$$state) { + vm.$$state[key] = value; + return true; + } + + var p = vm._parent; + + while (p) { + if (p.$$context && key in p.$$context) { + p.$$context[key] = value; + return true; + } + + p = p._parent; + } + + return true; + } + }); + } + + function defineContext(vm, keys) { + var props = {}; + + var _loop = function _loop(i, len) { + var key = keys[i]; + props[key] = { + enumerable: true, + configurable: true, + get: function get() { + return vm.model[key]; + }, + set: function set(val) { + return vm.model[key] = val; + } + }; + }; + + for (var i = 0, len = keys.length; i < len; i++) { + _loop(i); + } + + vm.$$context = Object.defineProperties({}, props); + } + + function getInjectValue(vm, key) { + var p = vm._parent; + + while (p) { + if (p.$$context && key in p.$$context) { + return p.$$context[key]; + } + + p = p._parent; + } + } + + function getInjectValues(vm) { + var inject = vm.inject || []; + var result = {}; + + _.each(inject, function (key) { + result[key] = getInjectValue(vm, key); + }); + + return result; + } + + var Model = /*#__PURE__*/function () { + function Model() { + _classCallCheck(this, Model); + } + + _createClass(Model, [{ + key: "_constructor", + value: function _constructor(options, destroyHandler) { + this.options = options || {}; + this._parent = Model.target; + var state = _.isFunction(this.state) ? this.state() : this.state; + var computed = this.computed; + var context = this.context; + var inject = this.inject; + var childContext = this.childContext; + var watch = this.watch; + var actions = this.actions; + + _.keys(state).concat(_.keys(computed)).concat(inject || []).concat(context || []); + + var mixins = this.mixins; + defineProps(this); + childContext && defineContext(this, childContext); + initMixins(this, mixins); + this.init(); + initState(this, _.extend(getInjectValues(this), state)); + initComputed(this, computed); + REACTIVE && initWatch(this, watch); + initMethods(this, actions); + this.created && this.created(); + this._destroyHandler = destroyHandler; + } + }, { + key: "_init", + value: function _init() {} + }, { + key: "init", + value: function init() { + this._init(); + } + }, { + key: "destroy", + value: function destroy() { + _.each(this._watchers, function (unwatches) { + unwatches = _.isArray(unwatches) ? unwatches : [unwatches]; + + _.each(unwatches, function (unwatch) { + unwatch(); + }); + }); + + this._watchers && (this._watchers = []); + this.destroyed && this.destroyed(); + this.$$computed = null; + this.$$state = null; + this._destroyHandler && this._destroyHandler(); + } + }]); + + return Model; + }(); + function set(target, key, val) { + if (_.isArray(target)) { + target.length = Math.max(target.length, key); + target.splice(key, 1, val); + return val; + } + + target[key] = val; + } + function del(target, key) { + if (_.isArray(target)) { + target.splice(key, 1); + return; + } + + if (!_.has(target, key)) { + return; + } + + delete target[key]; + } + function define(model) { + return REACTIVE ? reactive(model) : model; + } + function config(options) { + options || (options = {}); + + if ("reactive" in options) { + REACTIVE = options.reactive; + } + } + + function toJSON(model) { + var result; + + if (_.isArray(model)) { + result = []; + + for (var i = 0, len = model.length; i < len; i++) { + result[i] = toJSON(model[i]); + } + } else if (model && isPlainObject(model)) { + result = {}; + + for (var key in model) { + result[key] = toJSON(model[key]); + } + } else { + result = model; + } + + return result; + } + + var version = "3.0"; + + exports.Model = Model; + exports.config = config; + exports.define = define; + exports.del = del; + exports.mixin = mixin; + exports.set = set; + exports.toJSON = toJSON; + exports.version = version; + exports.watch = watch; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); diff --git a/src/main/resources/com/fr/fineui/dist/fix/worker.compact.js b/src/main/resources/com/fr/fineui/dist/fix/worker.compact.js new file mode 100644 index 0000000..63cfbe7 --- /dev/null +++ b/src/main/resources/com/fr/fineui/dist/fix/worker.compact.js @@ -0,0 +1,157 @@ +;(function () { + var contexts = {}; + + var WORKER; + BI.useWorker = function (wk) { + WORKER = wk; + + var _init = BI.Widget.prototype._init; + BI.Widget.prototype._init = function () { + this.$destroyWorker = createWorker.call(this); + try { + _init.apply(this, arguments); + } catch (e) { + console.error(e); + } + }; + + var _initRender = BI.Widget.prototype._initRender; + var postMessage = function (data) { + switch (data.eventType) { + case "create": + this.model = data.msg; + _initRender.call(this); + break; + case "watch": + var watchArgs = data.args; + this.watch[data.currentWatchType].apply(this, watchArgs); + break; + } + }; + BI.Widget.prototype._initRender = function () { + if (WORKER && this._worker) { + this.__asking = true; + this.__async = true; + } else { + _initRender.apply(this, arguments); + } + }; + + var unMount = BI.Widget.prototype.__d; + BI.Widget.prototype.__d = function () { + this.$destroyWorker && this.$destroyWorker(); + try { + unMount.apply(this, arguments); + } catch (e) { + console.error(e); + } + }; + + if (WORKER) { + WORKER.addEventListener("message", function (e) { + var data = e.data; + postMessage.apply(contexts[data.name], [data]); + }, false); + } + }; + + function createWorker () { + var self = this; + if (this._worker) { + var name = this.getName(); + var modelType = this._worker(); + var options; + if (BI.isArray(modelType)) { + options = modelType[1]; + modelType = modelType[0]; + } + if (WORKER) { + contexts[name] = this; + WORKER.postMessage({ + type: modelType, + name: name, + eventType: "create", + options: options, + watches: BI.map(this.watch, function (key) { + return key; + }) + }); + var store = {}; + this.store = new Proxy(store, { + get: function (target, key) { + return function () { + WORKER.postMessage({ + type: modelType, + name: name, + eventType: "action", + action: key, + args: [].slice.call(arguments) + }); + }; + }, + set: function (target, key, value) { + return Reflect.set(target, key, value); + } + }); + return function () { + delete contexts[name]; + WORKER.postMessage({ + type: modelType, + name: name, + eventType: "destroy" + }); + }; + } else { + this.store = BI.Models.getModel(modelType, options); + this.store && (this.store._widget = this); + if (this.store instanceof Fix.Model) { + this.model = this.store.model; + } else { + this.model = this.store; + } + initWatch(this, this.watch); + return function () { + this.store && BI.isFunction(this.store.destroy) && this.store.destroy(); + BI.each(this._watchers, function (i, unwatches) { + unwatches = BI.isArray(unwatches) ? unwatches : [unwatches]; + BI.each(unwatches, function (j, unwatch) { + unwatch(); + }); + }); + this._watchers && (this._watchers = []); + if (this.store) { + this.store._parent && (this.store._parent = null); + this.store._widget && (this.store._widget = null); + this.store = null; + } + }; + } + + } + } + + function initWatch (vm, watch) { + vm._watchers || (vm._watchers = []); + for (var key in watch) { + var handler = watch[key]; + if (BI.isArray(handler)) { + for (var i = 0; i < handler.length; i++) { + vm._watchers.push(createWatcher(vm, key, handler[i])); + } + } else { + vm._watchers.push(createWatcher(vm, key, handler)); + } + } + } + + function createWatcher (vm, keyOrFn, cb, options) { + if (BI.isPlainObject(cb)) { + options = cb; + cb = cb.handler; + } + options = options || {}; + return Fix.watch(vm.model, keyOrFn, _.bind(cb, vm), BI.extend(options, { + store: vm.store + })); + } +}()); diff --git a/src/main/resources/com/fr/fineui/dist/font/iconfont.eot b/src/main/resources/com/fr/fineui/dist/font/iconfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..9db044108bbe1213e2f16243295e1e6f008b5612 GIT binary patch literal 148516 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 Vmg<=!j2XV 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 YEiH_TSPe2MtN@TKI}VF@VaE0U0Qf!s6#xJL literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/font/iconfont.svg b/src/main/resources/com/fr/fineui/dist/font/iconfont.svg new file mode 100644 index 0000000..5a40b72 --- /dev/null +++ b/src/main/resources/com/fr/fineui/dist/font/iconfont.svg @@ -0,0 +1,1275 @@ + + + + Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/com/fr/fineui/dist/font/iconfont.ttf b/src/main/resources/com/fr/fineui/dist/font/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2200c297f89e5194573c2f0db7ef1671487c66ba GIT binary patch literal 148348 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 {Nq9cfRxd-2ls{I*aS68i+J%re%> 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/font/iconfont.woff b/src/main/resources/com/fr/fineui/dist/font/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..dfeba9b00012c4274831ca960f047d7e6a63345a GIT binary patch literal 73736 zcmZ6Rb8sZz+r?wswz08oZ*1GPZQI^t<7{l~#uMANZN2mT{rPs)=bU~{-)H9bRM$-3 zn)Xzblmr0<0RaIefdPRBI+&Q>|7zgw|KFrk)kT2=VSqUw5H*rmN*_g4CRSi34y^yf zh#y-{#?;=}37AEJfFPrTfRJ~7qz3t0+Id@mfS}}ofIJ0*fF9lCJ)VGBnH!sdfI^c1 z`&fW*lJ)IkTLD90rUtA@flwd_!v|a0yLkaKFJSEt0s`AV?(#ih=VtJke4$MA)^AQG~oFz&r{~squS2qw)Bz_PO)G-hc z%EgsSB0H}{R?Am5y8R5#G-7y7R)9GATg|eSlNsqL9Od( z5ugiLdTERuUbg%D`~4z|QE4WkN}^yvoPQx~dgWcNg}14jFGJq&VAF<>NYmDm$kIer z1WDt=%#kqCl4-4M{xWr!N1hr5QzuM{5c~xT7rQ67nsCj zSpH<{TeE~iTK@Fkw{8W0*}So)k9hbq-<=hI9wSU0FiaiMARUt+9f3GZ1#g6$H_|Wf zzg-MpUHmQB2*Pi~_H`wH+8w?aS7@i@G8OVLwyYa?y68{17;MpwwO>uJUrAwXhstdt z#dqf5v_P+$QrFIP*UB91d%^$SVfqOE{zK5W$Mumwe2X5?|6K7G`vrk`*VHdW@s`dY zn()?zVNcPE)FWo7fvq5#vVq+r`qGpxbEG+oi0#F2B2Jry&m)S5h3jbOLkk7IgS~t( zqe0z{aD8xeg;R3qWaY>3;0g}*zNx5uoD2)@^zaT2nwY5;LL%xcHD^L^gNz+su0-F- z^u39&9TB)`EY6@$gGUW|eyLmyzP@RXmQbg}^9ibeY3K^GkHqx~%=E4dfB5fPujT{} z(^@NZ#!_|hg_t#E>NCln3gT+}q}OgA1|fBC$zua7Xh zBcJaCx2BejNVTNbhp?y!uPX9jV$b@Y{u8#ECEANZKJ5za6p70%aqG zoI6g8JMFUrOV?GQ)kKwZhpuMY=LKD8AKNd|@rJQ?Q1b;35>s%*){D?_N1;2s?G|Zk z$k&UQct@-|4EvVfVTjQS1bNSxKkR!~a3j{&iR^OAqY$6Mp-w(kTm6s`>Pc<;3eNLF8|L={_j&(jCEE5ZdSB*Ry-jy zv?~kpeFF%5138v4HN)_fR!G?jWS0roMS{Q|1YZ-Ti+KM(Oiu$}+#tHfwsxV6EMNo7 z1Y#@@p&gh|#_$M(M>s)WCy|qXXgMVf?Lq`sV0vcZ@k^jNM-R>-9vg@{P4wL)vE9U} zYvSE!Krd&J>}R2BXTTU|@oY^PYl4rgA{J*c6lQR$i&61R7Ug@@m53jexLg}OsElde zwXnax6~#X1o>0E2GOV$1a?KHAJ+y7Lo2PZwOT?CVu?U-%T29hh3MAHR9vPdEIjV62 zr`Gyk_F=-`i7>d$lYoa+q3YOmu2POL3?2`_mJgEzHu1!T5_-WJsm z#&26*n(=d=uMO8X)|q~g+FI@}Yj@$?doR`4^0V7&?i*__vl*ni`|r1Ccj4BLuWfqy zFA)vnH$Jg%Wx0dzD`<1EZ{@XQHke)7*EBkqeX!aR?=xz1acLbynW4 z*5u+APOVM9=q-H>A2%T}3#Plf?(b_u;}wo}hTo3WgvLpk5!&&yo}=t5Ye(WGPVr87 z$uI2=n>Hmd3+A}X?K^9?u?nWR+wR|Lx3Lr?x&OKytXaoX1n>g9T$W~s8?@Wl3R2wT zZWn4y5KBceYqc=cYfG&C7SEJZrf!T6pIjsW@g^1~Of7%)ec6+}#gk21u#0K*MN7!OB=g zftH<`;sp=}mMZEDyhZdb93cNWE)e`hbYEaS9(NWk5Pufk1N0uC`vct{=$}CU1Uh&e zAQU_v5FHu^NDPe!6pO_H0r~*Y2Y^lm+mTs3j{wsd;}-Gas)5EWdt{UWCTBb zgc^qf`X{>$Ql8lY0rzSJk5i1Y>yBFKQNOk1WX61aj=m)hN7od)JvfIYE(iE@>&C6J zYk~;dp%7wnnEJZGj9Qt;u@a?QSHa9@WwM|c=JVcEI<`C zW1706HcfRwtCEI*DR96Na6q1N{jE3r;T1eq4mFdGRYA8|vG-kL_|X_WFsT18uqcl6 z-xR$+K!l%6iYy$&uV1SJ1vq`K?GcD9Q)BQOpdjF&f zKe;~5z>Y201`Pg*zG|Bme=uMHrU9a_uVvwP_w?|G$IHOlk)c`D&sMEI(6YGWz9;-> z3K=VhPe{k=>cgz~^|49W_m&9@FlWe^Hr59`hrl+ah;L)yf#2ar%Z6AvhJm_P0iUM8 zpdJ_m0)ufzmw?0dX3>KWy5`YW^?zi?nw93s_tgun!0HU=?joZz;v!gOI!Qq348IW? zKo@aQIM+}1eA-wgaW!97{GTLCOeHtw0A+54?D=kPQ1rR0GyJNp5=eIVl_w(nrlTtm zcp!2>=z-Y6Z(iqMb#AvXxb@lp2cuixCD1Q{P6%{DpyvbKR`(=exnbthqjkph+yv0j zSVs#kr)gRc+E~Cc?Ww(;b=>8~W|5eFHGI)9H;^Tu;e*#S0)QI6xNj_GdGCH;wJ6No z`maj0CU>u0go;43+Io4a9%W|!=GoRqmY~?)4qhH5y zok~w0&O0~PHJ$2a1!S?+$8jD_(68gV9;LGk=Xsmguvi-4T25qZ4&wtO*#Dvu7SAZw zu`E9EY`Y1<5_y&b;OpSKV$-T3@{o_Si%pHPZYH@lPcWYdTH?80(>BF*Jg2P=Z}#%V&gg#GxOs*Tr-D;H^#@O zB=udRm6!Ew7C1av&T_i&+$T5VI*+b^F>+~L$3%tgmGuJ0GwWH7Z|+lYW1{l%#xgLo z1ZG@kInX%nli=|_hRCdE{sJo%mcCKS(@#pJ1((K>`K1H#ytYy}?of&BXLdy93)+Hf z6-|C|q@Dnm8fD9G?oyvUuTs_zhGqDO{wu`L#lCS%c}8b%ky!7i1~QH zDO()ijx8Q=*AxeMZ;A&TxW)m#UE_1$k8wGernn}bU4luE-8yEHn)>w2Mpq4ga2^OM z|6rj>W#RzBcF?Qxg9|8i%>M~H;*Co>sb{`RiwJH&yhyfpEs%U5JwQT%lmbZ=;qh() z5(}hS#C4Z5^yuFu)MPjx0$`dC5wO^W(D9zph4^-V#d5;?jF;yAj0*%m%^Dde%^evp zEtpM^2^1{2N$f+73KYOmQ0Ti|L@(@l(s<$-$W)RZk$e#MiCwSx z%&Y%;(fxaZ$nmFs=+wI})Z_d+5NIHgK%{_-0HKC@Joydvcx4Io_;3vM_=XK-E*vlN zs)hjg4Jh(^n*;KnuK^hbvIJxb$QF>lKxToA6g0@*B@_!=nE z`y z#C9}WWs&VbzVZy;rChBV$3?RO??2JtIH*(NVE<28fl_OcmEY1pdaScJnB-ckvzgS? zWn(kCs?Wi8a8b9!43r#v7Y|KF1fH(yjEKBVb$YR>tEv`KOV5__|0Dw_i^KnQ*#f&- z{_9%%uYvHthJ^nbsKu_}7S|#+Fss}VfOF0NZ^HWj?VaNRr_=eLEV2DJ6Gz~*&n!j- zTFx9sJM|Mq$iI?y$H5P4#&;}LjDs|6!AnyTaDI~@!MihwsQ zE>iWJ90ykh_7B&?%fx0gkI?vTpQKQm*Gi!V zBg~-&+fJbd&oH4|iHwLo->s}C0_$rJsd$T=P(9D&h(1*7cn>v_xDNF;2;$j*aGek+Fau#fLHNmfV)v8tWa1~w34^2K3~r%~QlLCrMPxbtf*2dZS#CDe z<0M1qn?<^-a9r4l1Pz2j8LgWx1b7Z`X;5%x9X%OFzbfV|T-~0xjZNtS{SbU>pPyQ@r&HrsL z=ihyOXZ1D-$L;9Uqn8lQkPczGRb6!o8E2mAPMb2@Sw_#1!3r(2p2 z9w_mlTI}EpN8K@rp0ksMRoiK8kQTlMun{;TL=6_}X#y7U;dUYNcH#cPaxoiVWqORn z3$tW8&SutKU+VX%NkyLbD&E18S9pbt74*-U+qd|N#GWTLuehV@&86SC5g7(4oHKt#ly}_wNdIZiAoS%g$zRM5 zUR%oYvkcaY&(rz9eF!F2;Ntupt9!6mpz{)(43rq0wgQzmsdi|;j!>Tv*`~Sduv3iY zp+;a7nvMKG1veKNM4DB_{L7~-MT1SA+$i+2_g4Pa6JMsT)m z22sn%5dZC=Osi`5ucL;-OPLKWvBYF0C1i&_W5R?}O7PK68efo!ZAm?$qLi=6@TE25 z=Lm)bGSWfP7dh?brv1fy57?dUHp~1Lctjl~`AWi5tJS)BM}%MFG4NZ_v^5OEyYRR6 z3u-dvo$-WC1w=aK{e2b!fl|+adA`DevA6&x52_d3Pjl(n3Mw7I81S^R_~qFNMGn z?sW(Ll=9^j(KBzbBg3|k`zq{JBkfvYkrnk;zw57mknJd$2fQ8mGXUdp1UVBf_Fv14 z5x$A1ktRnDZ@HapgV&ati z917H?(@_rp#vx_{3!Xj^Ps(A}D~&5T4wL?pzMT-+iwzgF2^ zI?q@;j33XiaP7F5GsnMu7f-y5KPh><^7K`s{Z$&M%Kx+-@L2tfqueKC(>+FfKY%=f zO-yiZFb@aY0HM3=mPn{Kp(3oFfmfY~e(*lC5xRkNrE|r5#R;%xEOIddNz0r8Q+A+_ z2uczwg>m38KEV*ajf(~88+9+%3&zCdMtdSNBJWR^3hqlFX}<0~wA)%Gyy!Cn;trtLl9}~pUR}8O(5`EH!a4TE9uf*asJ9YUQ zGD(Tegg=2Y>^}EOAURKP zLP{N8^aGxfp28gNVh*jpklw6clTM4r1Hj`co8|km8#ycC8SpX1cS(A-_n7bLv1qY& zec|)vei}*qbKv%7;AQ9T>Gsy+y;?JoQK#ihtoq;8>bbXB+3i#Og1^_d(M`kcJrV1Y zpVfT1)W}Hogm=(K&c&hHP8d}i#=*76s4;p#+RgWk{r9Hm%L)Aw+tkc7kprG|qX z&4S45b~u%$l3C_xld-V1gq?9H=k=owvL}AsrQX5Qc(bJD#X>A=gI0moSzeRF`sjSq zKwZtpH_oWP{fo-AA;hs7I$R1~i>rA1jn=~m_ZD2aT%~02AzG``C!plZ^<$pb$aCh= zP{XAB?(jKhlsZ5MGcU6IF34L){wRibTG8|jb@gK|drM<3QkQAqr8gyt zW^ea(bt8!%)Y@DcEwZ{|9tcs)Xe~l21DH$)+|BCihTs*mC+^G`826qq26P<>R7X&_ z7vV7IGJ^SmB*8>-1C4>TBwCbuMY`ZoD4Ye05{>>SHfu3|-lP)V1_i+>*bz>3cl7P} zQ_JP0ZJY8)fce30G-ey}i|cs#G~c%vz2D1FS+x)EWAD_JN}qw;v-=Z5<`iMP8> z^-aGnb_8tOx?M-9kD;#heFsR%IsB$`?B}KR>oQcVso$!veKfuK)|3Odc=QT#0=yKn z_nBuj($zrsIaFj~X`G|1;b`Y1=cFTo(BG5f=)5riV#h4^&E%k65K75Nkhq%<;2Tz= zztEF!z1~^}$F>ou0CuaRCH5SdC{T55nwwuNq(;BA+11ut^r(?v^JBTSnynT zXsiEeu$P9VNy#(3Bp>eT5j)p(_sxk|3hvT~MM9P|6%+Gf{4;nJnc*!E;klE*No&As$9*+%QFHHPwxT>tV&d(W5=v zdse^Nj-HaszmAT+s5VyQr=RFBC|E1#;HNDWEzK27Nyq7%%W9z96&u{ z%i$85kG2yjn{O5@osw3g62_O#hn;pNlw)A>Lc*5`x>bH6R{W{^W`s*Fy2&hg$rNQK zi@KKZ#fIXK<5BiQzD9m|eO?fVyl&q|T8cx6+zbtby5oe_iW^rNJ_SFEI6C`Rnsm=k zD;gUXiUt~xQ$|RX7K308Wo!h3#5Ah1n0T=$uaJiln$xq6{y^fKYh_daTy~gW@=}7+ z9P*D-RMr9mla*WMQ4S02laM(?x;~t2QsBXc z4vu#I_Y8hJl<@=1AT%Z25lwI-MF>VjCr;P4`U9aBk{u`sbeXXij1kNwxb_@&Ic64M zZcU8%Hr#70#t^HGLT~{?a?p+g7OoWE56j^gAIp-W<0&^I8EYY-mI}SCO}v3l0{s_Z zZheFwwN5gjLNCj39Va&9HcI z{%3mLpR93S6--wyLP2JBetx%|oBH#DTqH$@>F4L;HpPJ2tJm}bB>1&G#TIt1Bhzqw z$bmTwHkLel8#|j^q8l_cHvhMw91l`jCg~V&0DOu`f#+Fc`V6*jPk2MZp4nfUjIfKF zInV)|o3pPh601xrnadzPNj1tuVF7km>$-`{BZs}M!#$WatKtv6eZ&$`LK&DKMw-lG z!iLS$nr5514)%NOVz%&2U-{2e(WYCPRAVk{fy3GlyTKoW1@cWGk+icQp2A3Jc(Saj z%?+29bgmG}4MI`_PAwV{rcgPCXwVR_rVOl60|jFv;?$h9o>Vr-RJ`LLXS>jvFGeMQ9$?@MED$+`*zX(*Vh6X#i!NH z(=of`r=n`0s_Hk2yL89bD6RDblsuDkq<5W@Dj4wR6as0)iP3FtL?-Xt#MHWk(wveh z95W@8G@(~H;yv%1!0Aev_oq^rLFP~GAyK3v)3K7rWK&rXuOdy^C?vsfYw?dQwC}&3 z8fMv1|4OHCMEk2N7ZqV*M&(2!%OkH1x_L=R!~T4A8$PNO_RBdwhq=>7QL2B)5fy1D z#jF~hZ>=W^biP2Qhw0R}H@SX*&m2`N1rhj zO~W`PBk@GSKgiX*&x*7rp<a?5gwx<42zS+t` z%5u)Tmk7tkR3GhrBmV%zGHKxJ0Ms4(OVv=HMZd!Rj$@n zKwF-|7KJr>-)y^k-ww^pc(Hsp>d#Vk?$#2)>NoqnE=fwQ+ z$=1@;C2mew8t7m;#Rp?O54pM>re81f%L85-{C$_|aRVQhU5&rU6ZM1#3Jx2>05=%? zwweOU;m{@!{)dAI591KWyJULsqyLN@5V=6{;1_i^9i;gxcAOX^s}Bi^MH1h+{2OH)%_xjg^+)e6M|1P-u63&+6L~zp8cMB&+9sY_n?09JCT6F|L8&9 z_qCQTWjUn~&X=Jc3}Bf-2_o(hLofBrLusFvM#n4kwb+1lUJHoemrv0nSSv_?RD}UP z8BnzU*pMu^c9J4u`%k*-j>{f{6-lX#1kA`N3si?yTNjrrZ);{6BSnS(IUyYyRbQxOsJJZOvhrU3=b!9)F&M z70TqVkzJ7nm7(eaEr&&ws!+M&S4e{?=g||xtL{lCqyuhS@H_u=Vp2Rx8o7cV&e$7z zzf|lLCZ>yb6&z+43jSWp1pDIepkvWotoJ6hXAcnjMkR>3DG~JJV7!W}^wKp3Qw=3G zBWJ8b7ZOsDT|`zGga@XM?^BG}{Ln}^c38apnE75&!-fT9To5OyJ`8EID2d4QclZaW zOC1CiRYqR%ZDH38dTq7G&=-bVrJRhovq^90An@^DmAWFM;?ijhv|PEMT<+tes)Auu zn(6LCH@FrW7#{|1^#@#^a|%_3Zgyv_We+J3r`9mgXiHuCDgp~Q7AyF=VX4eQ!1oT?4*>Gdzp!03&4dL8%&rQ?3r&KP%@wz zq>*@#pUeoN@Z4+m90B2c<<hI5}S}E%)omXSBYJqjJZX8e5NYD+9w8f zvlK=+yddLm@3s#uIr~Ll!3Ou1s#e!S$^f>0qnkqD^-Foasoa~+JSkf;u3nF+-5*b7 zIy0z$l@dLnrhHtA4;dsPY-t8*#5x&lIS2w3Z+;D7*?gx4=aA(@7*Pl4=*Qp0f0<|i z5r}cI(OEF8fl-L)Wd78O8yBZCoY8#qUt?dNv1`P1(6Sq z5C2Z>T-Q$AdtAAhW-(=@H@{9}*-U{QXPhH_qvpL$<1&nmfqF@R5P^YAZI2a>LZ!#s zA9*peB6fotjvTVYnf-{_JiFg>AXnbqjc0!a)!BQ*KQkC;SjxIZ;-MC4Q3m0zv8lZI z4=soY)Pgta?QM18C5&8cNf@er<==;tuMRyrOL#8z|E;4Gb`VTsze{0zMW~5`6XOje zkv%norI3k29tg1wm?P9)-ED6=72H@!0)Xij9ghm@=6iI5Dijpb#m|KRZxE<00m66%6b%Qp+6P z@~on2^NRfV0xQhw?W_U~U$T_w(}TN{u$t&%s_91*@X_^7V&$upu7Gq}>X`zn+yjur zFwFG)oHm&QL@#28rNzT{IU>+=x;{nJjIr)*kmTf<1B6JDBg)Z5EZmmh zHNooD>7$rUR}$RC%gN3~IbKEo1&>nU7WiaiRbkt*8j$61H|q>$G4B-gtvZzKz%DdI zqwMWBZN{LU&YRU*IMir6fjDlfSQ~y*%^CE@5%TqYtC-W9qA|}okp6?jd7_~axZoCc<8gO)EX8Z_%f@tLFN?-aFzEP$pNdDUI@D#V7(m(r{Uc~%*vqRUiW;X}-(W;4n+Xdc@jV2#=cg~e@+>>r{Ntca1GfkO zEVk^2nA=-F4r32U-)UjsC#7uWoV|Cv#0{VpGls%pE1$`doTZji9r+4er%Oa}8%QW?WA;d$i2iS{x0F*{iTF}v!&73@jATU<1ztnDIQnWS7VwpAHEsEX||5l}aj z<*Oe)QLsZGqU`+h%4t^AJk-d>t)S1Pn9=h2V>XzWBPnudzHLE}09Bak5ss_k`EAyzT zDBIK=t?bnYGJXCdpnb!JH}w&+NTGCWlz3oQ{fdILD1P#SRDbSfS+-FuT|zf7Mzp7j zLSql}Q4Qyd6?pMN3HT6;#CP1{f|}gU(&O2+1?|#egwHCnCnpk2z?)U^qL+|`Q7uf8 zgBsZ^<{K+85`06x6jDoe?}ZcFUG%HbSp$08g1t0)_eHX4W?DwPYDeA}{L*rU|& zchZcP8qT)orq2ev=(!4@rS29M!fQ(OQJr>hldBNiCOv9G$MbcGvJ@noLzdEsvY@BN zv^(nZ{>XcP1cW`iB`BJ|IbJy(>S<<{C;}B=Db}$UsxJcFPJ+lp55F8r&S2|QppsSh z0d8N;V3_lut}lp)=?qf(`qphG@r2EoleMS&T{;?9&Gfv zu2bBTVThB(UOZ3sOQz}9ODs@EXXqQ3sRQ!jPiLBKUm#DQSlU|e{1aqKP9_Y2_&-3PZOeY!AOyGD2a9 zxis>F=|EcF9Pf4ZaI|yZ$RKhZd?4?h^HUVuuI-DUePJ8^nDRw(CJP(DbA<>4nk?si zM*+W)y$Y_h9%po+n`i4#zQt=ASjw9(w$k5{TJH*Ssn-{e@TC$Gp$p-Wk=@@ucaH}n zmW=Ih`IddIkOJQv(Cq4`n}oyyKt5};yMnqfWHC#uR!Y!S$3zQo?UkvAF0hIVNymRJ z)#0rCtC7HG#J3Rb!AG@eh7=uOaVt%hl?XzN+qbBoI$5C=xl6ZJ7kviBRaAAwKhbWa z^Lq&B7j~2oQ+0`zjmQ`$YS@!*q4)I8!Bpwgx`FoN$Kxsar8c)jVZE2;8t7`EKttgv z(32<#*NOHZF>_aLA@26qWiu~3+7jdq_Tw@81>p?+!ja(FxX@{&JtUi^PhPCkX`U@6 zj=wSLt>Df?pJ2KwVRMgFADc5kIl}ik^0%dx4g%Lyl66W@?*{V1AEFAIr7w4sS!H~i zZ;du~7Hff!um({#f)#UB40$=3@xiFIL5vjB+29Q&wtU%+4BfHl*Fnj{6^ZOE9&L$$a z3(h1qj||vn(A@Li-FmXIe=QEM2&66hE*|9s3n8ZR97zcO>Xx3mH9zfItwliQUCM>h!D0ySAw(zM*;K;f!Z7sD`ncoJTQ7P(V95m9>|NU^qgLbr=E z(PLA9wZB~y`~!N5zrxq2ST#ds+zJQ5td}yWDVAxnltya7Zo+L!*Z<<$<5t0ZNpdf8 zaOMWH$5Ku6FySt3g=-z$o03q%wdM#W^cCZzCIL{UET;oxI06E21GYEFOp`Mi-wB@* zVFz3KWK-HgJzkTQ-_es7Vls-cK5*AZ`edSM9o5t+s~l4NBNVq7A~8jVPog!kq*Ur^ zUp+_BDMq}7=Up@#%#Qy0EG+9{$Ef+to+iJEf+ZQ$d4+*ZH1#lJ^9y1pWH8SvM84dx zcjiWSe7>90gg;m$IeW6a`rH(WQ=aR)jD9tgy3M@^6>Sm!SuNG=DNb7MUBpN5Y1%zf zs^Ezu?pC}Bh4>~mkibkf2T0JcHSd(*zHKL?*;FqV*K`)=|OhZbamwJ zfchsmQ*7m(UGE@GGWkkCAEL~;cKCJ{>RiS{{J>Aoc*tg1Rqz^6KENCmYTh??e$C<3 zzYkuhQPRTPY8A58MIwxlxNV8HZAy9r=_j&v@{0?qb7|fR{o(8P*7|3K0CzQPM`w2` zCwwK#yj~mY>`2L10m~x(?V|{rH#jl7`z-#-MQ~7=F2BzL7uHQo=c`D2Wv(gFXEE~E zP_~UGzjFvH;|bYEhFMoVC|y|+YMc_WR56_;&2RHtGgc_?0%@*)n_zI)bQ1|x zIc$`MLAw250^@G?88V@>n}Ty8@H!*9FabQaNT3LRvjT6w&ykMsI^{MIsd-NRMqCA7 zc@gAA@DTfuY^hd3PrO-es3>-S{W&jnjup7*c*#R{w8~PLF<57QhjJTV4IA-2s~1>y zS{`mbo72Wnnzy!&W8SwLoM?o_@2h30HvP94B>CH-{PN5#+sU1eMPAC&7E`T&Rx$Jk ztHAzQ6EWDvCP?!{O;M#e7Ua6YhQcJtcmGNnPhVu9>%Q&}LWaXaHD#Jz@2cms;#iN% z6DEu|&x_8JZVvkO9mm5QRHy22mBF?h8izrQVL0U(md{Z)%;81=$~w zGG1Qf@o#@2k=KP-_Jf5tYW4vgACCObA9BsHokt?Brb!b<)qP$Lka)`qQu(153iBok z&{MTWd|3SWzbhBVxy6V;5pWLXg1{7oT%`XZwoDgWB{6nEc(KDjfPfia0eXC8W3e-z zE)=G@od~bna>Ez# zr@lhk>@xHj;UZ(gq5hOoS@1yQe%%P?wV2Wpzx?Y|5fcM*6Q*M|JXarpR8y006KFQ=721#abMJ0hN>@u&D2 z&tY3WPPf!01qIYVH@lh`$E77P@sK4uj_i`=1+#rv9rN!KfC0x>9&6 zx=GBBMA&TWx&-I_CgJ>tXZb9BhGWT&$PtSr$B9n}@y`)o$Pjm>(}v~hZ*=9bMxGMA z&l;9D@<#OnH**@_;heZV?ZAW*m%%M|i+8chE?8|) z>H^~g&?2})vw~iRuD-<`KDz%WX?CL1Noe;61 zpg313=DXI0_$Rxp(2J+5y&~o61;WItdaiMUj!W9uxJR`a-8-G(hkj~H!H1bzaE*Cem>ymkO;?sFnb&1 zHHFs;cbyigA615jg#46bgDT_iY|d8bX;SyruQ54cRw9NyWN8*9+%B>13ZXCB4iFhe z`!2Dg{g+&g;Y8WqEr(S7PohxSwBA=Jn5sg7Px2ZAHFRfm@LRT3?F;g4CplK6jqIT# z1_E%LtVn0|y8koaJEmLS!wJ2JZ*!n0)#k6lsJ70c_$7GW?S)=OT@_*zrHY-5x~$vq zo2%Wc8aBLn>89PG`j2y*$naGfBHgJ;vtSw)9#f9sR?GMq*lIHUHv_t(PU%xKJ~Pi4 zTtl*WgViz=?Sb8;Kg)ZFp>5qeLpkzkQ`M3^%F1IN=9nyJgphARQ8anEv03n?s^l@d zvx}v>h+>^d26KDQZ45H-Z!;0|kb>(imDRTMuM4NL&yTei=j7<4ece*_GZS@7C{~zn zE4jmN;38L@^0gwD+E>RM0yyzd?#L_|`FN<|Kcg#dyYSJXBUXf69#6=e$FZDeM{^E@ zYZ^K_Q2#B(aT}Lbr-CbXc!OHvPfh>?Igh`g3I^17Fs5_!F{2fHqzfPz`f7@@+VLraR`v-JbnN~_Z`FTKoIJ9uk&XI&6A3|U;m*9K|wDgxJ>04 z(Lr|uU5a$oUK7gx%ws!Fa<;%4)WgED=hQ?VR=08}Z18a$tJ_LBQEg@x`4=|r+DigI z+fI@qo^q27)x#x-qf}Z(aZ}<(P$J&lF!VymIKWd}ynxmO0qPm?FP|Sxb#{2s>gcpg zlfib}z24pz&wFOlOL@K|jwC5r*oa3&Yd>0v;U9eGT`~<5W-c~YY!pl=VF^W;By_5w z41)paXAm~Z(K7v>kMf?WZrel0QyUVIc?!7TdYvpJU7C8l_Q# z9o$T(XV>d}K?v{hrpFdC{T-QbkTPO8tV#rw<5-Y0a6)uu*mMvz5G8gQNa5MTZxWb1 zT!zA~xslbE;)9>&`T1rQxu}!SHD>febEF^_nhJ@)+q>XhvnsO0umn_Pa#0ctlqjmN zztS-#LY=#<3TBV^oF}TfT<*`pjAg1^j(A%3lx+s_M5=r7&XlN_f0*`CDV+YGDCGTc zvSmo6HDi66&g0mJj*LVuY3$RTk)X7zlFpEnq{LMV`9pRl+C~gpa&}u$5)=?fpa5@_ zr{#Gb>bN1Rq_})ki>yfj4UB584=A#A!`W=Hz0g z%fhdWJ##C)nDL6ZX`a+iY6W8!#1s>JL;t`8KWm6cq4uZ#txsrTdG_q1I}gKBs;iLh zN5~=l95OdM-sZsTuXi$y?qb%tMdx`#fdDZY9JuXf_wl1!&z*FZF_b!&R*jYU>34ad z#7s^!ebjmnFi-60Y4#hgWzNCcQU9d5;>pXIvwvnJg@^wCelS`$Ga=_pMnfZCt$X$p zy!AsnoSk%f``sVi;t%W^o%rqk1`n_limJv`Pae9qQ{^9Rkk8g&|HZ63b=|;2*BPjo zqdREv2_G~WnXP_IORo7_Y>yI4@)$uDMHKl6`4Ao}%<@ihO}kHno)4br*!WJi1CBqk z<|sWfk)*(&z>ZpCtNCHS1?@<}taePq3CsnqfmHtj^)ju`JWyetd#c*-6#hRw9>4^z+)W z=D$!er68@WP`JiKhXv$$h5lv?iWaOJ(h)PYtuv)3iZn%7{T~25K*GPm&hb-SlO{w< zI#1GceBA!nZ?2S!**0<^CWnIP2M@!?e*skDkOkYR{qbj(!DqOW zTM42)4$-9~Qm&LMStWAofBo0d`VZeY@4{URNa+}})KLky>aNI3S*T>s;8D5RZgw6lh+dW zp3_=lXSbx}S+>T3?dw*zb=cLjY?VSs+v;`OPb%x_@^-q{pY9zF9&_gMY5jWG$iBsF zbSS!}Ge-2FTaUm$aj(hrt5w7pn&aA2CpZl3ZfY)wBwmG5QO1Vok*N0z(2!ZkY}>kH z$mdAwrw$umdFsm6(+w3@PF=Igc+;tMa7qoJ-&1;&`29tnEjF4*`;_t>vZoY(GTjx< zo$j1H5zdMB7)6~6`8`RWf~=i5aiYp&w#S3J8>3mGd$0g>%#kD!>82rc=-FgC3YRU3 zJ(;)t!Y5?=T5z&2_@K=_80<^pmcFdu`^DQb-9m|!^Xr$0_A@(!eJPyIL%5wsFTfM| zG=&{I(U`boectWsA0q#UOj7Leqla#|a7meTt({o4 zC;_6qn8~06&iQl|Y;)Ssz5z0Pa7b-mnIj#mQ9F%V|GD!1WV&2Pm1m;J%9*GUS6w<( z&d~4at^vQd@6TTUVIEKq`a`^6F2rfuuaGB6C$-WRP)-77pOc`MJbCol>a$0C;rvDP ze{AE6M^B2YASnlNrQB>>(rIr!`m7y5zkK$n+wXSbDvg^-7LuUn7fJF8v05Psv9K%iCqz@kwRBRr*)(rWFgjxs;kq1+xy`K3ra-n7yF zcv+OOB=FAZL`Vw_w$L@X?^6Ukg(Q*xr54t)&@b>U(NyD#;M!F;#0!fQ`iCm%ZUU*< zm5wq&xVgo@d{wqBh8~whf+|k3c12Loi;J6jhE-KX6j*>JyGyXHY? zt}>}qXJ#<82K0;RIXj2B{x$F2#=<_eurHn9+)h-V|05um7T_TY>rduaom|nG!9Ux+ zLv8kr*UF=I*p=7DmN+_qxR4Re#~pN4>5?;X_Y|n@p?p6DP8OWIaPF+I$4!G54)bM~ zr=~`?{^BgaM|oiHpjPLgom)p!)rEP+^Dq`g9i||e8NtkDNx#l-dw#?BC#lMuFG&nTFEYnVl z#27ZFWHRiXV0n&!d-~EK#s@GB*y__Sf}093Egae{^+hBqIaFH{(ffv z-O)+7=guL{mof8u;HlE(RLKIIZ%(Yt_6Jr|v{OR2gZ=;Ei zN}{u(QnbXe^!>xcS*wD0IE^fy;{`)(UG_PyRt%*Jbf-u-jo{pCr(WDd=)O?-lPTCzP|3pFfyqGk z*xT;9s83sS{afC8^)fOwxOm@zpB~t^c#wL~tCP0R{?+6sNKc1)UW=N)=b$wk##`__`jLQwB=QA^a**HtmHjK^ho+`i5bA`? z?i=(ypkG&h(^+a}=-Z6w5>i5Ui%z<-dKBfubVK^m2$kP+`v@0H)Y3jzqP7N7Gctlw zvTqcbMQ3km%yy5;djBZ$o2+*Pc&kbUxa|sXv`~QClOVutSAe7W0^DW-9Gxn_@d6$) zkAGMT_{J>9DA%}Iedco%p&<~rD2I{-va`yR8T%(7L8)f**qxx+)a|d|2Q;-0kXsiw z49Nd7?m9LKPU{fBPm*ol?o1uf?U|DlFJ%^33mejWb73LvrQ5~L+6@`dKUF{lWq>@P>#P)qYLp;LP);c5Jgq!mx z6d4I#ul+kI;8RTe3uortS->~v-{fqN_yfl{75#_sxYD9L&LhPqqxHIJ|J+$5`~BIq zvThmhug|6o?gUbOm0eyq$1Ze?v@1XL^ z$KKw@E#+38nuCmE>y|D!JLME;j?9p=iH@^vQ!#luGydth{StxC59~W|z3bV{>uc!N~ILHMKsv{?Pv65x(5lJHG9pmk!sIT|X0u3!X%f_*=o*z*gu+Q*_9l8j1t-K#X*=p_ws)95v6 z6r9Qjg&N%|zeYm>xUR#`kfp2@CxB;tjLtLUOL-|DO0y$fVn-p*4!ZIKS-tM2MZmY{ ze5WM(aNhmM0HM>OboSe%Y9VEH&L%}BTd_#Vxe-}8cRQ8b+}_6~RUIX|S&_tc0dO}w z0yfv1b7oLcC_9RCX|`&I?zPp7dZ~?K4#35~tM_>FYN>3M%6eYE7mf`Rkqr}`C+@ZG zu{S9}HGr|{F|j9_Mbe33vz+NIr>0!mBb}D4IgDqF^kGxCs+k2}y#$ z%W%-rAf4Gh`^_&k?T}!#MC$3A{l-U)cdv9dN68IM83;U=*B`k*4uerRd|dA z!t?FDJbek$bRmN6u5kOHti^&2!{7mlm$%uH|mzKK#d}2kA7VAOMdjQ4hv%InE*^mzj2UPFPTRSm(CKyy_Z^-*dKn)#9&4J z)@dlg4$wh>oscQgDw`fr>PuoG@~WT2QdpKfSP&Y4h!hz}ffxK@P*t>3$$*TUI~l~o z4e`@Zz%`6TB2HBp8JO7H&MT^nAq$9-01=Snmw*C@NJ2mXyd*g7PkBLwwZ8-iW+%6s z+e>Y#=pY90>_1W)^W44p%6tAOje@wm{ZX_bk8k-OuG_k8E7a9eR#$tt_x#V))E|XA zvMT<^KPM*WvpIQj zm#WYu@zXrwn2atfl|2O&q;RY`p9K7&4>I`;n z=;+umNgez8*W5iCbzC}4-}r{&#b}x8h3JZ~n_l<^Ut@Qfbn^>NznfohaOB*3PdeAO z^fVpkD;`By4cVl*gwsCNhkpLryAq?DljX>}{`ivQwV{PSqWn2mQ1HhRSFZsIIQrEo zSnyAV1pgG6?*9WwbM{KRhx{7qnex~k?jZ2kH*t6Wem*PJ`JxqCz!(3lIu?lyUbtk* zh1c&N9Na(DwZ5}+{VwVZP$sh+9N;;77+akAv*>)~!Tr~}`OUjo1!oE5a;1lIMugyW zfyaxF|H*r&bOxIF^P!kOaohjt8k6ZzCu62R1H|+vL_L2B_)=ecI5)0!^&eMuIVu}n zsX4DP{%E68nz(bn=r?qz_yx89KQy}3)pg`LQ6wI}Aug!rlkKO^Y`M!mi6*iS9nlHP zVdv}5?exoor=17XP3JR3biY=|bGn(n>Vg=|bJ8BGoz8xKXFY34t)1zDXfO5kj}W@8 zD){KO|7SU0xn^D0irv=6sJ_e_Umfc1I=GCep8V+9Zm9a1jT_O-*5%E8YZDzUdP5<* zF15VxMqfv?u`|42ecLGg=8}R7)P%uVi-6|VxB1Y2Yk^yZj=h)mt~Putu3c&0R$t?G zi!6zEpYtNOv=zzCE^@PfZU4v9ZEL%8ZOg7$irVU{+;(fae&8IJxh)a#*xWKV*T(%Q zegUMRZ%((UpYgSyx#MZ#y=2|R_=U@A{~Is5%>L(5`}1gM)Sc@-PQFB@xJHnko7iqi zT&BtW2BPF_sW-O}Im{*%oXdV)JV`HdNhPv_;?H@=}P5teVa&9n!SxOaGUq;xO}IC1~N(9(jgNfB*iTco2;YVqh8(S)w>sUG|Tx?>V5&uu38B`HHA@TMkQ>Gf#7 z!U{ZA&~!PX4^2cmd+&EZznJ7xp;zsHeerW>(W{}!9zRy0ldrfP%? z^-Xlnm)Y1Q*?d(avrVS+ZmYR1AQ>*;4uf`c%FGcpyvX&1Swphbul4P`U5|Tzwxwqc z9rClw^Zq~z?yMdAQ~>^X?PC1Sb-JeM$Eag77YcEK27ijKBb!A4pK^>kHgyAVAL0aN zZ=d;jl9)e1SbP5YYeVc$3uw$i+g`4~>7*Z8_k3kxyt71#2oA!T z+X2jCV3S$`3Lr1pL^a)K1L`F2?)pN{^G@{Bs-lz*CFz!{IWnbq75KT!{%5oR{y6=r zyjI)7PEY$a^f$Hpryxi7heGh1da3Hy{steRvD)blaf%rakn8-~Kl?R1s|65(C%#S3 zkQSL0|0?J`2;g4J^Xz+J=Z7OFD^zvxL%H zKs!#UFQ6ZDse+E5{**j|f5T>DxBT8O;^k(iS)H%j<9T?ME|bLBQ#Sc@`ilKdwoQ_K zKXvc6k3)0Sm#NuTIWT6w>}dQ9__7{^lkHBaflu_i64N_}`HC zkaocNTev;k72HjrgT3t}tZ%y8*32W3`hw=U#n-1JnR+Lo>-No)6uH@raGX7rgjp6- zI+Nh34jmXAJa7Yb8gw%|M@sE6<@+XF5#dhUjU&TwOa;0#-&xBhk61M0bK*TC#*)EZ}(g^9M{T9Nr`0E}~ zvM-UMpmR0cz9a76@K5)xTV_eI{)^VJi{740WAktCTDk9=zrAbxb=}EkxqJQ2_FUoO zCOmjxptZ55NmOpkjy8LuxBBsSq?o66wMWonp3Y?t^)|ib?V+qkylD9wsaF}~5qDd8 zr6z&dY_^H-{X1BPd(K zDX*0xfrN>F-!~2K`=|8=l)?UI=X~F9@45^9@~*pn+rOi~f5&0!^v`WugsX3VOA}<% zamyzhLvpU{#sp{n?n4eXckDzQ8;w(>ED5=&$~9(Uw(XWwpdW3dh#Zy3JX4G*X5lzh zw?|^e7B$fK`?uvudD*qA>D~jcR_m)$ZH{h3K<$axF7~Ke<4Czu*&`257S@+n-?CZe z>iewC0H61R{yv}9rl$mW z*nnpLYVB^m3?AeM55Ie@yphGDbB{7xdtG(cUegt|gWM`^o%2=JlTge&Hjrah!1Jtz z&LJ*h7CR>#lbl5TBO0bY?W`oA-V@yHPHSfo4^7ph(aqiJ-xR3QXpWce*zib2axFq=JJnoGS;VG2ZJM*PI$cDj*6#Ak?bp_&Z%M z=bUlbo^XTk&uVS><@+5eV{dcLxO|#G5`yR_XbRgZbswD3YzXt!UVgda@p}j&NkBf(jnTw;AA-uUJznwx{XP^m_#`e=n^#E|)ptN# zWfmkzv#6xH@7VYYK~~0aZ?LRVyuwI+5&`oZBx~ z5!V#9zvL!SVUMCl`=^l%^we#rN<$}{(B1F|t(2FYBv3nCPuMh3L=DE^HTc=ZZT45( zN~CGE*~fr$r-k-;wR;>MZ%akqGoNmfTrXD!Y`4d$IR;ll`T1=>hgev-B?1+fggP_( zv&gZlrGlN+i&M|@FXui$QY7v0ddTGus|!h?YX6koz`JY5XxUQ{d_FyAZ9jz{6mMuB z10QX8?PE}K2ti0EAxLXu+XzOpWKmhthMscDXm5(PkYp77bu4TD6pCJvb%ux(Z5y0k za;{!d^a<7?&LwJBD6Y{MZ+V2_-V|s`MQ#ZdC*Bl zbQW8>bZQuJH=v;#(U3FTFXbtSA>33vGsAX&n66DDZjP-utC!|qJ9`s=TRthgT&7>a zDu3)lnK<1o!eJ$-I-jwyoeJ#ADM6@Gv8xqat|0D|d$n@89M3S>!PXilxejhQ!@LaQ z)xYwcPdZxAX+8%{i%$AN_5J(l(BTOE`VHLy4tv2@B-4Q|fclJiB7algf)6;)o{H1E@1h>j|-JtUl6qU~v1X&o47tufd6*bUQ=XXXuX;4&K> znQ=-nQ;$ubEZ6IcK31EVvscyGcP741_5y0BNU4!)0h!qg(tZ?V#s=;@?jnveL6{dy z&=`4ebE3d@;b}%`k!`_~30p7FZw&f6r48z;(Z*NEa8`|ze{ zal3{~aeeQgKG@L#&R)Itd{ojHUv9vyRMAF5io&k-s(+d5N)Kb&)br~^vbV)ned6BPX_Wh%$EzOQ#6YC>b->cFav z7w*`eFNT}Ki(2p9**CE4s-sseTil!YaQEi!?#+9sbDzR1riO;;2AeZY9u#hdLl%^v z$NoFNWzB{iDmC}@Y?;{S4~6`DCbr(xlsYoJ^vb16uUs~KB&D`?ZQ4zDm;=YYT(LrW zIAJwu&0!UF%Ipe~XbvNfyIz3uO}fIs`M7(?*{p(0v;7m;UP`FKc2+3&bZ^=^HD^ox z2(S`o|C}+lbNvNQ?{YqcHorfy{Z1)@na4=zZE9J~j{KYsI6ESB+CVxWWGC>{oVEBA z9cXcPO>~UN6V6BC?U`zQtnvS`_vZ0!ROjCKoHNplX0&Ux*pe+vmL)my7F(9(EVjpq z<8032?6I>rfdoQASP~MJ0!mmypcE)u3nel8PFpCnWx0s%?QP$3Z=2Hn8Yq3+OX-Eu zdkZa^yyrP*MvE;|Xg~M&*AJYTGiMf^Idjf)p7r}^KhS~gmQSt9k!Ps|{*G+fF`L{_ zODJ+q16OZdov0@qWykam zvlsdhWy?AWAk>t?SwR1*R3=~Q6h~p%)Lbr4mOnhHCj}kQE$`8!OR1Prw=smV|MXE%5y9Es6YgPimz2jFFK_F zkj+VRCINXtOOxN?OvI=CnxRjJ;^BHC5!Cx4+QXDTuvkuU5NU`h@D!xsh+o1!wY_YI z*0r6#$`;Z7``2`T6~jk^4N_|w^qibK+|pvgf;807io7Z{F?5r(H{)ZW;%^h@k`TV_^49@JyC_o&?4ScKN(wL!Y8&8J`oTYr{v3m z=x^W_dr&gw<9$q=4CpDd+@WJ%yIeiTyUH+@Yv5mQ|qX5!mj;8H_fD&?Z=#5O*u`Jw~$I~3$W_S-BT%RNrgp2IXg<~3K1bkb@)Db=`e7@}leJ9!d^wV9W? zY&nO|6H+esJDzY_PB$a->5``x9@f0dSaaSb{175s&^&Glp|abF?6{v$1_4yAG+8-h z$c4x$IyO=?ms=Oj#m;c{g(P8Abz@GdBh!nO(q&wqGW1KPO3Dg+OjfBE_(kfX1qX+n zv4+)4SBrM!h&MLRT(We-@S=sAEFRa2D-(^$1{<=A+P|3x&!10$R|lhYxPATY#aW~6 zmpwB1Bg^{Bg;JI*{E!8=6g$Wm|GAy>dZ+B3WO5a4}vud){FC#@I@W zWJ2%H-j?avb@8qqF}-b}Hda(>p&!W}pGPJSGWMsqK!iS+ZgsoZo&4?m`9xv@ZZfIk zKZ23gWZ(xf$r7-8XkwK<#C!_6GAv<1S0H017bN4L4F37FmV)em?9-?Y?*ss&O{9NcM2;vOdXW;mvQ#VXvv7%cYouL!xDLvBhM?R?D7{ z+3!}+Y`5t1Xzzr&f9N3{cH4~BOD%4ji4S+U6yAR3T!sX+ z7cxovj<_6_(5#lwE>VdGl7kD*lHDFr`-Ke!T(^astGyU`#;ie$u>4F{5Dy&?B0(JK zXbOeR%`>b~Y__{CV^z-1BNDl5?~*~kr&?(3tZ556U4*PqT*2GjJuG#lDmmwDwK*?fl`jZTq21?jUgsZDP$NkNiP#i%5gD}0&F$N4aD-_FqD6m zF^6X(occACCq!3Ow=I7$%?Z^L(>@pP?2O}2#XIwFIQ`_ib-`9!SZN{HUq-g<%+}>O z_uOBedv51mN!n`(yMN*iTZ+XyoRCAySyf+ORhO=-OZUPCokR}!acF|de!4UMU@0q* z`;gsuap7IIzlBB)?d_49sqX`=t%QF*5&APaqYw;x$jrkh0mBUxumo0 z&7CdPcJI(a-x>OPyY1t4X;vkVR^bP}`AtfM`LAr~R-d)V=ud%Qu%**q?@camWgU3M z$Lc_!6R*+SXF(!GbH<|QFUmNGIuHen1u#(*h!8L*Nd#F!km#09abN~}N_$@ib4TBW zWlVI*jFEf_36du$WA~GA^nt}~h5G~@pFRJJLNzRU?@K{NGW>g9qdX&RpHiU}RB4f{ z)N+_#fqN&nLe!i0<;m@q6w0U!dS8kR(I)vDLJ>zw_Ncxd1I0y z$x7VeH<>NV?Sk22pB=PYeThl{g86TmuwWNu$z`@kA~u<@NSzFN05W%8q~j+wKX-F#DZ$5Q?*jrStucAuDDT&pcne7xJuw^t9Q1S7Vg82enq z#R=z|0fgvs$udBs$T(mO(1A&r;*>9iblmk=oF;Dq*>ju@Dz?c_$Z6a>bS^4XSby|3hBwfP@v54juem0jYY0Pz`*M{|Lj>O7#1oIq$G zpDX+}I69WJDgQfoQy1vIwQoov`5I#-y%|v_1nn-_Wig4PusGhY{U;r_r|DJjl4|8| zp=~U7$Twv8(k@uj?jv8+>QTfIvhGRRUkXQ_kYxBXewD~%X_}F(6+y@a;gJY2YeVe` zfqHrp!N8wt2N%yY^Ra_Hk-j>qwLj*I!hBBiPYH^pkw*@f9Z6P2aG6bJ(I<--p<1&U z%aR4x2YIK}B=9)eAqwxE0!ummjs^3sR!O#6TCrI)5%$5y3nql(qDw?(o;S5OAq#}5 z$&#tbfjxuytMSEyh1kgnnga~@K@Q~q(xefkOEeHd#c+~lY#;TT)~yIBL-*@tV^;sH zXhH)O8Mpzd-~<4MekeaRX-1JxDGonHCH_xQ4&td{nQ$4`NVcm83nBBIj{Fa5IK70% z%cmLGQ{2KZWA285@wi5=m9CN%_)PkDdI=vUG-w9ZcQ6@PY{k?oH!AWOU%~S+0~wZJ zu3;|Mxv4X?v2*6U?U}&~7ooY?GghCZJ{Fzc7WJ$iQm1_ptEr7=Zt9$CUA(7O{K@Ur{ecmVpw$e57Z~T=!Pd&Ny?5KKfUGj0rbmJX-tM1Vr2;*M9l^0NQr5T$g;YEv8 zlx?Q@vv2(D^=EWS3-;f9$FY>zB#_QC&)k3cCEI3;GuI!;UWoUsG+C`=1^*X8Heu8J zbXu5y{!MpYyQ{-CFjsWDt-L6<&z5Gc-GBJPv5e5H`xoBC|C--J_`FVT9=D9@_#m~N zk@1^3G6!@!f}#I);3lN!0iH{~2AMoQ>Wa?1T>wJ|A6k`c&<2-WxuK)S6%$ z?d==SyWsTbjj?!doczVSjzfusowel7Lk@4Orm?Z+YOiBJa!KTmJfz^Oa}O_)8M1+J zu6v-zsT*M-Z~&6ZWdbanTrUoY8OT%yoET()A|HTMIB?P|0tQ${_w1(kX5gYa00$31 zx--I?vwa)FH{KFLnUyuSTvauHe!It0_0;Z~dH#WG2K=&pce@;2vAfITiPhJ*t<`o( zs;ZCLW;A+C9uGaEeSfDXo>ov}G`XxMZmCw)S#C!lou~)&@ES0yWQ>c=T|?u+b+|en^&{Dqigr_sO)x&jw-jc)>a>_mSkJw%!Ycmo1Tg9 z^rREy*90L@lSl`go;J0=N=(!&OVnGx*>VfbR7FVhF9Lebs(?P;KSL%0V1A}!B})Cd zdcrt8(Qgwfs{VZjmliV!ObUJFeJ}~VU*nzSt@)|Lx=|E2S{*;FREbvI=yx4(`AHo) zAuSd>!eWV4jX~9zUd8EtIywG9LKl66GInzdxwYiW@8d233aOjG++_yhsGI4~eAFG# zsr#t&9F-@makHaSJcF?%+aZ_)%%v zNt7j2W>e~mYwaFhP=#PX6dP7aZW)=`0eI?#Jf7FAK|wW3PPfyfisF4j(6-Me*sIA_ zpr(z*xN3|8BBFmQ& z1lu{H+bK!nIkxJ1ZRDY1H5q)W7_?f0 z=cCCNuwtHkhNe35_nN=1&i^NJlV9g0S(^eJz-ns($0vS~A$ueic&hT|)az_B1)F zK|v8(1>wjML1-1p1CEf5aZFAf;SBt4@PqRcNvx5q6{{eF!3<;wJOL{5q=5lJ>1Z+v z)2d)^C@q^m#P)zyh?jtL?li$sFv0LLAINGyA7j1<)Oc!auzia0Av8Bug}+-JI~1$Z zR^2nEjiNX99eP8z*XTR7g4KcY$o${P_Zj03aaVJ9!#DbeGR_sU*ac#VOd>f=lA(+u zGVha&2vC2$JXv!}RL^~g+?G+OYL0T(Or4FWIvcMyne0`9)X>}@303xadz)k|+K?~q zxBEeWCcC%~*+eWi?VSe~#%IP$FO&zJ%G~9Cbx`#$pKBLlb7C$R*$8%0*|$jb+vTvc ztAAdj&EM7+3FGGF8K0+f`TCWg+<2MIi6c*(C)z}0TC4rm;WY2#?UrA$;{&2yKxXZa zmMRxNs|O+8YV!sHUYnJ7sjYIz>S<1R5pvmk5BJzz2>TMv9&1Q$Rb5jrRMM$TkS3nGkSNRwm}T0)V?N{Wgxy_-P(nXeEmh=S8O-`hiG>QhfZ+;JK{vi z0tXhmQ_#j`(m8P0m=)uMnJK_{vGlpJYaag)hAti6I)quaHgqej%I{j{;WdsTP0h#s|s z-Dtf#EIn$mtiUEX)E*&+k4O?Sqm(;r`AplR+9PNq-tdU_$fJ*<_1b^KovXSFJn>@u z1r`&8x3ENQ#duwbPtRd?? zc3f-gUumS=3k7G+7+n0&;z3BiJh*u6HoVcoDN%G&FU^<_yk>b)nl!4z&N#Etslq z5zetkYbx8*oCHjt;U?>1oW@Je;TBP@grgdJ8n|hA=a?t^a)Eb5hA^4FWF}r}?kiKx zo2Na)X92gFIf!c$NG*7@wIEIte;xVtrfdX_6`jpvMHlq^_bXN-E(G#-D5R?-N}W&C zT#g7?ne1~*mu7NBr}Pq6^~$w{@vP!sQ2$yo7a{Q*uuiR@HG%Bf3YafwHdathbb;Ce zzkC(Q^)Cn}(Iw}<2F>^pi1yEmP=TrWRdfCP3K_y~o)Z<142tdVNg+jkmK<4i-xv1V zhY1T4p#J>R>9vy5nVDCT5MeNAN<)m41JnuKu1s&IdS=^d-})_yUHRRph)x;E%mE@2WQ^eu=n7-e7y}s;HKS-@MJSlu;{}tu zQ3x1?>m{#)H}RmLl_jH`S7jOBoIjg%{n_|tEynR(Akx?=V*)fQGOmlX# za6B<7BncA}?cxo)VxbT<3iwxTr!R80jqF?|Yk!rO?Hp-yE;_yKNK<{?y4`E*>YI*q z9*abd)k;W^KFLkQ+v2Uh?-=Um<(gq;7x$r*8eXoD)5nE#!vZ>Q$KC) z7t1|1lcdx}4(zo1c$a9-?S(1)$<9W9$$y*mbwE4a4mma{+gsk2+E+sNUZL9!W~Q?!rgvqcvw>LU~n(Yu*nnog@- zWOjCN3&={klRL;Ag8z7kmaR0##BGZXq3y8SV&7%1@&y&(I~6 zLZF`^tQ5Q$qEntxx(FwY`H&me!*%FzC^^VyKjInM7i=Izie)rWa*?iWA2cimWMHVp zOUFy^s#sn6;PL62RdV@6$&y~ACk#tH$1kKak7J=-ZpPBlt|6qu9fMp{EHy;RU2*~z zE^~pbaJgKTtdM`R^(<^@S=eJk=C4~)OIOWLB<8PLnzDSo^bGju>7-*E!n?GIP(0dT z>l*B`HAGRQu_tV48C*5kVhQ&&qDbKkdHh7Sz*{qXUhq4!(0Ggvnv;?+1u3_#E;rVG zDz6q@VITsdRN5_>S2(9}lpA2nJ%lw-!wd(RGBKx(6iqPw_v*6VzT`PjhL4GYCJ~i#M49aD`+X(o@cOVBcx`cI>OtJobVk@^g3Q zRrFnxb|=eMvwQyi8+vU27*?b_#_LkG2Q zmV`snZ~0l1iO*7B+~wSE?qX``p{{|{x&xkflXWmYDCv4ksvOFIRSVeB4v_D4D;H>C zfF*@>z{#=*7mQ-$3L^Hn*pCZr*eZ^7b9uwE25m zps2k)Ci*NEQ5+NfqD5RLRV&hbPfJIOr^@B3nlA-CO2$60p5si&)VotO2t9WVKTX{w1_%G5JlCoJ?H1Y0JNE8MzjI_u7#yJGK8BBR^>I ziQ7fdV)0!fd4kdcx1zYK`c?8^ax`B_#g#uvO0_(HO1%d)-V49-qRoabg&+R^`~3fd zKCi!@{EF=*s}&u#MMZQ02eup+wnAvpUD(vYKYgFy?7wzPoX?zF8*7IA@!SV77Z3;J|z zJaZ~skRR=__&pu{_5SUZ>Uu{Vke7yZ^BqTha$M$&MoTxC#beh-SK^|zqzaJqnBu6WR268Kf{&nWu4=-C!hzL)~x zom_V#qVAJLN&OVZ0!36>pM_IUC^8s`W0E|(0CB3CQ&pU$;eFay8oS9=FT?o@RXte( zd&GtG>RE6eEvBk-J^O;n+Hkg-e?VnC;7R^bzKIJmy-ER|tPGuuyi%rO8m2cH%!SX# z_5g=-;I!@CbLVz%Kkau$0o_XK9|bTOxPV^yX4wU_z-+GsYH>DE|#J?YX^dk1Rrp{&oRWqtn%uovi7*yi9E>Pupo!Nxd)OA#rAjMwt-!rU-G z=wROtrHzs~YK-2=;kx)%jk8PZ)=?GF$xyt>CTUHQ9sk4*dmCXBIh%w|N_Nc$rwJd~ zM7DU3_MeiiDG_8^rAN-9h#{)>6BRl`ZPMO^W0Xq-nU)DJDup_6!hZF@~kdu{#^wg*cNUJqN1qm5yBO6zHPCN2M@0JDVOtZlE=II8-!|`aKjBIlgn*F(fb_a?Y>gm?zrDU{@QENVpfh@EcXLz`xSRsx{sC7Vp29@ zp0oIM&ck@?cp~Xxuqp=FN(Ln;ZVKpU0(_>IPiFi99IHnwE?INzFWsp*V$ff}Q$f+r z-E(Zo1~;zjterhK-j@{Zt2Xr?`-|_Po;wj|-)a>c1-umWV|RSpzQ);AbK0v++P&LM z$-ZUvht-Qt729=~6R2M%7iZ8XW#Oe6Ls5b`1LmY@X;ahE^{{DTvRW3={FtY>F}7Gp_w|<(R8VK@rQUj6`M|wQHL+dpTOJmC;p8ISq_h*MRy3HR#(VcMwr-Waj`bk(YmFAPhG1Ah`%IBFX?gK*J?v67W5|? z8x#EtRu}}BYDao-|4Z$bDPd-e$eMbUc4(qkYWR2>c7c)ee{?nzeTV8O@y1X4+g}h7d=sG$@D1;j)U2 zrcEVn1QQMv$*N0kD4_}XRYHY0oyCkY35B|hFwfUiemP|ypVIyZxM-wGl9mIPMg-BL zNP;3%$Qot43(xJv_merz(IgfaP``DTXOW4$xJqqt)x*mTKvTnw8hflC`lh+}?vK&j`fSZ3+4oceFz#tzd zHRK`rS0xF#2>*^GPB`@ec?QDY)brSaH8%^9_`Nh!YzKsg9}01qP&@zZQFiau7UvA`ye|d%%b^vv?G;pb^^L3hti( zUzDJMJVF?C;gjoQ9UZa!Bd}dh0W5(r)_@gT@2xz|DBb_gC@0U!Ak;SQEl-k!^p^7Xj{P9>B1A0(D16N#i@>m{o`XQerSA?+h5 zn3PyD9%W8G=Vj$BlCJ}|>fPf!#9IaK9*OWB*r@S^mX4dl8UVHuZ z*RWVsKWBD5pVA&z(w^59<#i9aWPk{o50cZbzplMiUlrN4D^gX@8T=Q*Kj*w$2Sta8 zf@52c4u!!u6rVW&41lPoyJRbHl*(Jc7nprsveIR!btHyV)LZM3WI{6B^`|($TNVX$ z8=4WHx!~=&3+&G7D3KB8HMk{Ka{eNgby26ev+$3(5cze!%p+7O zMc2XS-gkG=N91$&9WT0y;G6TmV2{IbgLC8ym_5}LBW}_PT)K{l>CylesP#>fweZ9k zmBfiiO$#VTBQKfEKF08Rn1qkV*k#>~W9%|gpe8f87DY;KgX{H}s;}_h;TMxxz#`Hq z0!o}In-aZz7&~|f67A(%NvTd}fiu9y!Acb79h3R|Qiqg+bJU5*-t$)nnrGEk@4V-^ zFJ9fNoOb-#8$zu^$FExJ>OB9p>hMJVI zeb-QH$iHYPFV-;%!*f(~C!d$Px zBU?|L0-1j+Riel7Q~pQ*IB*IskY65%_~D3DZnQ;w*!FeFZ$0stEu!%Df3f)G<6o#) zJBII|9kmntYWz58g*UcVSAz?C5c_L<7~e_HKW@cU5$mHC-n{In#8*e;TSZbFhFbYC zQaf~1hT7XiY+k1K!O!S7)%$=gQTm5<7hL1&3zmGh;U$MY#&^DhG|`XsSJ+k9LuC-k z!65sD=zFsKn6<77S#N&ODnAS*`6g}Rp{cdJ;7}COiT?a2$wn{Z19SjsUy*9$hh$7v z@f+_U#Rp~N3ClO!Q>nJB4{C{Iu#8E%^!4>c?HmMdpKyKC^U^9diVVXc^<$2L8x_pXw zFZr&Ev$CnWPQF3l&5O{)%`zXTvreivVisQG@8WBzUt|+S*6b!US*6xnUG)&qX%N=M zgCzJMLjl|aA)f|M{*hXCUe07(#Tt2fly#DA7X4wA+`l~gE43ikEW+P~oVpT|F(ejHFA@HT z3_(c`D#RR-DL^iI2RUh^-rL$c;It+QPpe^NgeUv2gmeZ%E@w0j~~1ieQ5>gU_cqO!ceRmYMW!ab>t-}B;`Qn zVrrZIfzN@ar=Ygcc><=lQMg0}tqtgD^!6D>uR2t!tbqt+U3zp)dCyiH7*8Ew2 zg=b`P4e6v4MP3Wx!-OXxzm6c6Jj4@#gJl35X4@bb0t}^PMtN>TsuC=tqZXk`8W|DY zc42f>u)D<(!!LN@1?aebmR(8D(kr#2`W0kD<@~$&v-oq#@5c$JIu}L*l{MSIZytCJ z$ooPBjwHikB<#4mq5};d*ZyW}v}u18%vLjsqa|0~bNA)_mPU+uLF|lKI?p_E#Th9% z_D(V1PD?zUUYbs$l=ca?8(nFUT%u*!1Gk(JY25dj`& zJJE14U(OKRxioF8OD|IFr5Nc$l}3{QaI1m6L;JA{So)93@==|WScNvwF?bljN6u-k z`(_?tZ_tgJBKY@p&3?}h-KoHz9@VZ}1Cf_U<&b2A*RCx3x}N$y|1_bifT={j0|Yp+ z!1N@afH?gQ(X2!j96;B}7Srt}uTAsYyrf`}(RJ1;n|Alr=*g@3I_*_Uz^1j?oK741 zH(S7h>cn-YwA0b&j5!E?cQqVGd0AaSss zYHIDNBxzHwUeTeB8H>_{+@-k}%J!JK;W9OJj)^iknwXtwta6|i7}x)0v07>b(VdFb zEJUz};u^<%v#1O7*I1eH_+Q}PCT$KW87^(}w6(?Tc6Vr~i+r0zkhjD0{{*Mr$lK8x_RVr^ z7mKZ4mU33jS+S}=Vh#*s2<;SPIWsJiT~Nkx16xXa&SSU7+Ge>!T|@d@&(S>hF|s0) z@lh_9#Vgp!6hZ_h7~jrVbc27_nf2>XRwGja&KOsz#j{QHYEU|I<(LcAm926L`3@*K z8EN6YYerr}w~tIkS!uop+ja5@4RKIA2+ zZPnQDER0Xhge?<&ZhG`Ph<6(3@w-hjuMu1eHa+wl2FECAc5(kl=gw;G=;%R7~ zrVNI%5)>3IXT&Oiv6;dG)G-xEu53qbFocE44qCJ5Ay`0<0bLjAsKYYIP8l2OfS@D5pz1@gSe3kqri%eY0 zZ6TEfLKi3?RVJgps34LF%TE`ZSnzWXBOOJT#R#)O_TDMfA-?b^V&t*VI=hGW`%q1R4Oc??1t8p^-w|;#Cpfs)N5Fj~qoi%M`_PqT9F4 zp1o~*v~~{-abXk$O1*nBy4jT3OvlOivJvhZEGuy{Shs2DYZ|OqhEWcr={P@K>Nr9l z_;GDa8|&(L@lP*ybj@#_v2J1i#`y#5X11WM(fdKjyI-kM3I+VY9d~H23?4~+?Q5wc zgQrf--8*xAOH)(J`k8y@o;s|3(NpdDncd^D|BMvwgn}{0PRGBYdBqwiZw0z0Kp!C@ zjxq@_lk)DUr8O2@d&$vxq_?+qwFXA7ym9;3n&Gxtv)YE&{{$@3!TSmR&&$TxlD?U#ksl*%f}ZvcFmY#4gND{rR!w3sjID)CG4Kg|{N7xNKys zc4{LA%dVpZ^fr zgp6#HNRWAH|9*-02Bp1wrJxs%Xc9@c8IC{r9C6rI*%*9w5{A&79?uBSWJ$M*Xa=LWK` z{bNWse{a0-?|#g|a?RfzEFTvgr{XAK>%uAi=VY98a%Xd&(nas2cc^o#Guq>D?sMv)mQP4j5zd0O7ru4oai~Kab zZ|6OG{+EU?qkSfhj9;M5EHlQ($T&(pV06wiV1yhRS(9;gYJSl(r-CmNsryXOxg5aQ zjF6%&2kOX8O)gpi%Xv((KXnH1tOqbJVu63ju1v63V>0NMr?J7K3rWv{4Ss_3llBf^ zAyu%!Gu!7V8QW=!{a-RdDL3vu|ci9;Gs3WXM>pWHNe|o5p zZj?&+={l-G1*`Y~w;T|%C-c;Q_t-%8C;tken^Oyu*z4)apqGPxy1PL+94%i8FP^Jh z#wtyWLjU2YQU*b8>|rR01s#Q#i*U0DwNtqvZsQdHW5y4I&zzx5k5+(EG#sGdZN+H> z4Dg!Kk=J!+x;(Up@WQl`ZN?3kG3DK9!tHUcDt_+0WgkfNRUfW&NY?cCFNPhy&nmAg?5XnhJRs zsbE4xHWkD+J%{(W-k0DPT(K9;`g0rmKj~N<)-~&;e)HN7O9n%Q_xkN$ z;p|_BbzP>R4+YHHzvyEC*7&dSFY$e()e)|XTfvR#)@+vKhtmIK8H7R{Jp0lN)0_Gx zQQsF9^DH{Bs9SLhCBm>9+^QDG~_kI(z`b=zy2_uX*AzUJClU!sPIyGoJ@VU~VcJ&as)N9{#=ec*b zDyjW9U4Ldn!wqVYxw5EUi1nG5f!cGvK7sc>}{hnf$HI0EGZ(c7*%; z5Y0zcN7vN_cNmJy+wK(0tgPd17kA})qg*zhMLCtwHzOlJ=^wR^{eu5IKeM1K0ouL{ zqPdky7_fm-|C_E3vb1F?VZ~-D)QwL-o7e_jdcxy5;py_QUFi7n6Z!U%^Ajay{5P@z zMF2VMo0u3q;YlmU74nz%oKV!`Cr)VpRdzvN*^$npGJQ!kMIFe154)1eFuiKsWPLNt z!B{dX79B0h?Ik6{JezH`)G26|QfFz+mXhj+RPALIz2TyO`r7Ly$tR1T+<1J8OHo`~ z^wb)Z*wbtq+3cs8pmt3p8TwY zq=(T(S67T(2EF-H{MSjlLu6J!^zTxdX9HSXFu#|F(?WL2I%-P+J60l{Oazo9A3)P7 z=}HzDz}L*HhYh8rGp3Gt{ zdvfjszWMQN_HilXywF|iL88Y1QSpe#Q|rFa89F$Ap_>0GZd5NE&+2+D;Pd7ZDFD!e zVt(BzB;A?O9k&dxN7l)u=gXo0_)fs(qB^g5v4|#~y_jm{E}p}bp%g$5igWb(XR}3J zX*S#5*4Ey=svC1gA^W4{OeMGcM@rCGV1r7rHm@(qXe_vY?b`i8FbEV%EO#24H)c{+ z$S4GFn09Wqo;z&~cMi>a2WisCq9%x`1msGikdz{%Qi~@bJ6ZtFr&^Jjlsm}jXpE&> zQy^KIU!?aVmTE17XaY7wWcjXw#w$SN{DPJ+fwx6_d!yUV&77aH@fxpP-JA)wj2()d+(buzM=kIpz=;^bR9^j!Jt5@%+N;n){-QC|wR;^s*Kc{8SocaB=WBvX`E33qg z+Wz@-_Po*E1y{`3(?X85*T@}JJC=~s$$r#NuI(VVXb=1Q$^FQs?%%$ZJgjT$_Wi{o z9alf0xb88+Id?HcEz+UXAVDn=VI3!gG7L0LZc6u}gz=w>w&El@X!l#}wxM%VzL8@q z2QMAUjAH!#$$pGT}6GC4cD*1|7NlW1H6CFr|-OM@$56^ z+w7KreT1|+T+`Jxyn5@p+xP9F$;=}0(3(xNC@gDv7(=HaDX=$9>8g9U$&5UH#| zq-Z!-7KqeZas#e?x6g2i5K>NSK!TdkIVcs5wo@DMgA#% z3E^TJ3V!t*Dy|+$o^q>o5OQJ;^YEIncr+6)K+_bwCCpQ5(5)dv13I;8+0B3Tpv_9g z+Eq?-H9p-LbYb%N{?+;ioJ>PjLlSY;e+G*wmEOf6>Tk`!_U z!;bHG{OY&c^NX1oLYLRnvLh;EoFH>;JK;R*$?6J`hn)qw1NKK29Nqv?Y-Tdi+(4@) z0Yw%ei3@Kx=Cu9!LOCp7_-CsN)%~AGMT_>Gtyo=+9JhTw^y=l8zlyR2VqAs<646nI zvNjJ+++elc*nmAYEh}FASOVkaNVEzQ3+rz>7i~{od1Qumr$N+TFNGoLDaNb8H~b<0 z5T7EWeilU?+6ZWG@h-?kuLC=i*AT8xHpZm_EZuabVrt1mp+9#fhTb zX$sa7-|pJurlLFN3NE^tY=jqbTG9d6TSWS+g^_gd^ zL8saJ0S)^5rwQJ=rfC#Tw*c% zgO;oy;xUadNPoFZ5U5;wvxF_#dnK6IUzM>%*SmiazfHZKsNTIWXv4UIU6Fj~G6A(q zk9{fH9civkRtr8f9q3Pu9kv>E!;TGVjjf|`&c<2fjj7ia+0WYem13x+_O7j(ybR&) z$(coSXGS7xA)3q%yoU*`uUWlq%i_ky#ap(muBqO1fYL37Axt$62R5aOp_z36he#eo zuQ^m7KJBy~u$|Mvuj4aeh_46~B8wqk(H`y)tW-KHMqW)UDF>#hPnMK@|3p2XwR!_y zYjv#p(di41*t~wPt-7Jw*cZ-BxzyOBlUA>l{CTRYJ%!TqHYnNL)z$7o>9ZBie$+ay zV8gkC#%qID@Dx993eT0)Ju3v=&ll!O234r+LpX?bL5AWy2V1nu>31SiPLlq`;&UR) zBRR?Pyv0Wbsy5GJc@avMhjSKIXL(?RTuuJ)MY6*oYlrS9?Bs(2a(cyE?h^yz{UUPu zM3kvi`{}~F9LN8~1u1=;*0;B78mDf=SFHUmevZD;Leez1>~zZRVDJ!a@D~K9c-sk5 zeSh0lki=jhkfo}c=iAH;7$&=u*r{4w(GwCr=@L!?4W-zWMl576&-Gkk0K zlwSIQr`FzF{Jw7*??2gxU#L&~vmX3U;d@BSj23S#ws;49*)N)1!fhucpPhVKvs1YB zzKXSbFq;COMNW?sm2{hjR^T(}*|#cw=!GJ7`pKvuwU-H`R=9?Ke&(O}BK|AKBF8}~ z3RK@8DC$VbBBq<85ID}_^W!> zfKN6$yY;-YhN>bo{kW?htt%p!oHu$NIRBoft*)!`_pa5Gl2c!-r}w&Vr+G7qys180MI}fBj66GeJk3og*d;opCS#RtJi3im0}K`6@?9MqHj==#8~^55nc5#9hiQfF~#cn^0G zYoq|}LtZ24MC??Lt_K9X#uSA^cE`r~#0NjGX$ytgj_jv&?p^J`#TV}?)Vg5i;y>kc zbLJf22R}FvYOBFHaz=H^`GoA`ZQ8bxkrUdVNxcfy9{UQr=aXnhB7us&Yf!WHwGNdr-|h+|(N_SVNwgO|c*#|`t{IH)nnzX{5(ju-WuBm|m&<2TB#Bb_Iy&tEedUxprW-T)<$AcZ9zCsH zielQYFgG@ab9ywUy(BVoN;wN2gy8gA+9nrQTcJ$>@~de2cDZA2y-jyzv-k^obI#V~ z)!J-%dmt@1_o0o_$1B7636l17(X6P3Eg2w1{gWJJ&6CpknDuBt2p3dJ${7awP0J_I zqmnHVB%2~!4sO2Q#G9?cj!;~**|j}DR71*1COw~IACdRjq(_4Zo20E{5IYodr{Q{& z-6qCEI|Qql{~rDJXVEc3y#uwAb{+o2LEm*MZS4MgbVUavC|Szb7x++`(s~V{BbFSC zlA*vT*OC|c`_$ypYXJR@@T56?T|1_|Wwe{EvzOzS$Q*5D{`k7hhjEVNB?44fGP079 zcPa#FCeh3dHml{3;1LdqvTXxt%?SZpToU?(eS^XB9W1q-T|5x1Gl0y9T)&x^B)VN5C6O7pabhqkLruVgv~Y~ z0nU2zBV+YZK#a%qu%-#APM!eYY)Sk6N5<)GnD?ZWgM?(fKJuFjwDYZpQxoh34|X3Mw?+a;&RgrPR{*x- z8Q&ZA``*ANMY#YppRd1hP&@Ci?KU9Z_}k=it<#GA5v%r=&34RI=eOeQ*--5>uCSrpZp{Dw-y7@lkO1o%5$Yr~5C6AHW60u38$pc46Z<+ZV`B4vTKmU;}>|d+b@}UGtYaQc5M_y#pcv5lWnqtu#PUP2Ytp} zfY)N?=+w#l2<}YwP#>=^ILCy@N<-P z&vc`#&B2y;$AACYTlLGJf;@dsXm_E{{8148__iQuKY#Qo^aKjnY})UokV^|w<@{@| zkby&a5+ly3<0Ipyy1zgPI#Y|01lF{c9&|5Q3r-4`(nYT#wZ*@x6?Dbf%ir4q^%}b(0Zjs6kS$bg}01)n0~1CDn#|Eqf+LibtS2{qBW)Q&pZ2ipxB z`$>K`-^#gRW}0=506dNm)tDr^5=laNC_o`aIPOB7fzH-YsI@bIExxKMUzI3W^M4UN zPDyflL@Ws*2d-`n;@g8QLF~}JWN&J3a;Vmzh=$A-rnw(tbJf znqt3CxjguNpV!a8?-D}%W6nMFoaFOZtsbBBmPG#hoygzBlRpt%_7SJn%Vs2dtZ0Vp zk%e0Xx7TgHIB7hjgdBG3rNK`mSJ|16;4wgnIvzZ*7h-!ci{-DwIBE59EKOCerbE zI`Nk7xI^~o1gZMRIs&}7$nC+ho$>8|P3A|Gix_@DhS#W=jFme9G5?@cAU+wotz^X$ zr*jEHkAMhmfAZXO&j>a&1bI`i0dS4D>^dxt>WMf9drT$H46Or+LR3MVsq91IThf}eP6$KKub69=g0f3`q z4#GS+H7O5*;TK%YRcI#Tnzf%}NeP+eCNPQWE7ODn@>v?zr>ki=J=hNd70LGE3PFCD z+jr;J9)VW$GY7lMYT!K~d_-Tv+YFBY>Q}JQZvXl0UF1N)Czqfjiopqcr69JV_eR$qZ^V9@|jnwN!VnoUKydSu(&mL;gEV{nL`%3hq3%mVcyv0z)j3dTE~54%*oO zQrO9|jyb^m;tw#d$^bh{eG&~I9VSL~CI0>I_m%b)iv^KJTf$M~R^9U!&a3xCOyngb zbHsu?wXv{8wcBS{EEckOhwI^zfqC`r2+h12vD;fycGcnF)sNI`+F_H^Txtl8lquP*=5uHf89>e7PE z@+BUT84Jj6oPubcPZVH4Ajr*NDSMF-tzCj=_c(GoVu=_TQZ3p${<-R0zxGbk(k2A4 z|M>{cHFnQCqelZ=nQolZ-myEKc6w=`sw#k-n(jAO)x$+y_~kp-3^%t* zU7hPT{_BQyooP#J%jz}vj~h)6D$%I{UHHX**35oscK3#n@2y`mtG%Or&HC?+Y{<;k z9tI^V)0Ar5)Q~P+pYsR)Zr;w-akC-AQ9M04!%oy!;%u5i(EaU;vg+efw!3L*FK|@MD81vmBQ+e?W6K|G;D=apI z1*_FOv+ZbhIa+b}Xsd+0K`FX@b9eXV?b;!=;8f0F919t;zymm+L(MZxHd(}0%M~<} zeN!sjdH!|hbwpCsG8OkX44<~T!T*jCg`^sJt7sS!U=&keq?{o)k57sbS_w3*Vth*p zzY?2M@B0B^5D+SGMy#(C`GysuoEJ~x~6H00WOvZ0lNLer#}q|eP`}l<@c=! zCgxl;G<4A%!ZCe6nD9H|iA6JKE=t55{zULojx6r9dVNx2i>hu(NItLiVyj2SLXBl` z>!77Zz(o3ccFvi-y=TtBBwd)m;XdF=Lhdxz)!hN|F_?K=|hbt_)4a?Y|P zONKH}>l6Ixfz6vXZ9ZB>{=?Gy?eW--tFM~%ex0A9wHYZ>p7wNfG}!H)_v1TuED2UO zyw^>hvFseLqIfffYX+(Uf$F31w4yKn7swn~MPo%%g{ViNc5;A>0cb>lVGAiq7)h=L z!)zJ;xem-t7z18)(dB{g!x8v2)DlS+7(~S~7mFhS?F^Zfie1$WmN0v@bF(;88{KgEPX6!Fqg~ewz?BURvDuiIUsB5G8*@&i>k~x3(H3nqCzP% z(MApbI}w)exin3(dr~Nk;c>}P;gtL)#e&OGSU8|CSt_h%$)XH+{@T}A7z$N21wkMs z5~<3hQ9y8-D8k912${c3HqB}i`nn#`vK3=e%v25qStd}(&{;yc3X@T%U@2dQ5HX-b z@QI>R3VOhnmc7H#5LM_$$~}s1rG{g`tO=FxDfSBa82hcftIneq;()SQtiHzN@Y1b5 z)_!Tie4JZIJ)m@&7}jCUf%i+my57K|?x>}yo~2ONeWF-ko~{F?OhQ4fhL!2?HW&-r zg#IqkOjRI*L#V%R@43iy-r4GWME)BZkO6N!qYCU&OS*H-`kjOj?p(j7GmT6yxb3#+ z%(#5mWOjMcHgaOwwVh;|0%H2WQ`@gN_iS|mJo20?1Yzv+3nU^Tr;iPhakq2bTEb)$ z9=djY>OOnpjF3rD2(xO#bd4P+eAyV`6$4y^@CJH*3io9En?gu&1Y)Y-9~;tSi!w|J zF@e<&ayb=eE+9~>$uNAKD`hPTcy)UubQ<|@S+9dW+`PY)zwqleR4nh+8 zY_Hw{pi&T8^VyHFCipqe^v>ek{Ao9xD@+Z-(4JW3Hj|2V9EBx>IdTuV)&n+!lV-U-9 z0J#qWUCh(JE0d%?|MkTp%ZZQ_S}6-52Iv=rI|68mtAD%@*D>W3zU<-}Y0>tj&dx2( zhsWF2)Fsw$N!uH4XbdYg^H=rPDB;E%8|>*V8{&0qW{n?d+LCrG-M&b!xp=dEroDa5 z>N(X_Xb~gzdEM_HeS)oC=;BHB|L16O`+VHHZFSIlL4>-bkpLkE!C+L40e1VrGli}g`faRBI8&11U3K|v zT~}P5ZO|1WC5sJCDvm%M zDJtHwGc#Q-i^W;jYPDJHxV6sdK$69wbk^9ct%vaLSW8PRe|v2Y_yG0n!*;;q%)e{V zmE-6;fhZ=#xW(Z^I2s_t$`%s+qEO{NKfzQ$G@RAFv?A0OBDigZya0KZ2 zs-Jpi`l}VcCnjMm#@)>={wkNBu%%pq=lTM_o6LXUx%$C+q(|J7Z^P0Lu*ikXq|k=x zbi-vD@v+`z_RQXEu05k&8UDngvDGWvAi5z||B3%72HM~C5isn~V8g*rUb!g}-*)Bo z`}=3Ltz1nf_QqAq4`fPk;4A8onNQE%_<5QQo^h1^fSH=b%!O<}hSeMr+x~|)+TcX} zkjFxM(Mh-~ZJe3RU(#Mg_n-9CxlGpgq+mECy=OJK>XcuQw)&tw{~dczb5TD1)TvWf z@*nV*kToDeGs}UHP38ohMa-KH*n#Xi?q^QVq0qCdI+`L@ZmNkb0ynZnVl(K8ZQ_y zyy`$^sbEi`OE=VllvNS}W4TB*RfliBXA&ITZU-rRf%!y&sY-Fg@J_;RkIr zA`B#xX*neY{IJqx;c#99d5#h(LlH)!m8mZlR|I4pEa7x6KX31q!vl*}k3KQFdeOk} zm3z;-eATK&J>3I~X7>%Qx^2~9-|R&L-93v|p|K)Zvsz?KG%ny@IwQU*Iio5VteTPB z6rZuwA5g85+Zna``@{8$->=k%`~B9a(=Az9+}oe|Px4?Znx%i=(~GE|1?d=gNh&&v zg1KVy(|;g5l#dUAi^tIN)5o@q9Sit_p&Pbu+qUDjaMnrW983Hrg z(0q?l7rt%Bwr$&Q2nGFtV`E#kpLXk1Wgr@#CjK*5jLH9hyuArv9L1G4-c>z)PWN0r zGp(7?F{9DU=&&S9qtVERr15Rz+eVTPYzyB9mkk&&hsQX8fe;{I!i^!>Y+?t)21s@Z z3F64XZVnP+=bwWc96CTGyMJ5LU0q#WT~}AV_v*dh%NKX( z$dR_wW7I#Whe`j0y@*aKu=jS zheaRFv*@LSd46GQW6$AoL(#)Mja!u!!@1n>3T3OReZ&rbL{sf}yuvglE#$|8jxFM9 z%%XT`ou=>3$>X81rU-zJ4Kq+a!DD8uqUM3I7-?TKON08%bNOa1JC34eZY)%q@e{Lw zED?k8jp9N9^*hdu`F!D(hLhcdduhLyE&aXWh2-v)LAS{y!>m%vEIcI%G|2 zT~aYHUKYJ7$0}m`j2Ugz8oOm~A~|=wKK?t~K%iDWE?f^&uqoN^?Ec$2yAP{gufjT9 zwBl}uGgRg9uDxvC-`4S85fulo`ot-7lgT+#lqyM4+Gos!c|fH5_g`WA87D=LnL%cQ z0cJCxUnHn!8&ffh0|A9;r$eP0uy0$3Y&~Z>sHsr1&w?G`Y&9jI^0{QUZCuAE6TBr{ z0#1Q5;RH;RV*I9&n>IWxGVQ`?#%m($3W#}yQ`c-XgHDHQ2=RrV`>U({II7juXvVuv zH*)*kZsQGyCU2J|L6djL5?;WH@eXvo=pa`C9}CCJkc+&J z{5>cHJgl%?uHoW~OF`qGsvE1xA0BZ#FLJtETA1tyXxx5q4v?j8Lb-C5Xy|Svhg#g+Z~up>k1BUfbX|kSMZN&-L_a; z+w8WsSZ$`ZHbdT0+hsge-m-4@-`uj5<5y=Im=30o(0*%}ZKKAo?LHPb`v0|2`zWHG zm(MYxs-jPf8LO^IwdMzm)h(t^X5*{>Lxa=Wmoa^alS`d2I|J7BTTsYr`qZk13Bu`$e`6K9X36JJHQu`Oqh<0|7S`<<}<48l7( z!uT>q3p#~P4Zy)@p?TT&$$KS%=;`8r=s4d{hXgXsd0jq;Ivdi z6S8_L+YX?fBoj3EoviUwKZEaJQEc=2TUsu3P20R zo*J7I%8xCCt^YoP^MF!-bRmUw`0vHf?0EATh0bdv>m zuvj(*LK#vBfn!M#QlJ(FjT!Jyx(w~(lmYdPSB4RG3n>FQg8=WEJSfU!gOr06x=pi| ztR4hY7&5=%*;vHJpIA=dpJOFwZQa$|w$2%tF}JbB`5Y&*97pa6Y|ep=2ME=K7w%oK zx_|cmoWHtZ`s{6&KDG!u9I}LVU`N@zb0E3lP=(;Fgz-2U19s~7BB zghhol9w2XLO1@%%cAHAxJRXv~262Qlqk3eW{YW#N3X(6W4~<8a&3K5DISzZIheYJ7 z689i)$aj%g~VTLPIPpS=&NGN@!V+H#{I4l?B=_X<*g?L zisxi$p>9I6Jo zg0HLvNRLSSVj*QLzzvtd~qy2~SW6LU(-DjA|z7yH+%#8QWZ_P2zUNQFyG#8;c zKW0D0Hc;H|?=5*)D;qxYnURFI?_LHbCNG8Rst%|B&66z}xmx#73neo`w2 zj+14AHu!7(b&*`BWBIUivIX~ui{#oW zhm<~`;6R=8sLD9bojrHR!LbLKYnhKQcQFr9bp3d}km_#30AFOfl-6Bj%}v%*YZmY> zO)tq+S1KFq!{h*JMA(dWVRC>Z)CyAPYcV;1<`E{3l4odYi0-6M0z_Xjk?b?g$uzpi znGRgC;7W)R#60^;SA)MQJS5{lL!heBCwZ%)UTsK4>KaeIca2A=($Z;7m)vV>>()A* zYlH1^NnTsiuUF%ql{FAwi~(tt-e0p;mg4QfwQfnTS=ocDAx2f#20Ma7B6&wsJcy+= zA-%R!SBzJkVvSSu1ZzdI^0B}YawKN1oquLuW>>(vo!~)9nzkwUpX?0QVbeu@5H`}# zK&ZRb?}**zSG~=V7YCL0?sjGH#YnSP_1_kA_*=78C$Q>>rXw%jqGh@o9Fdb%H8oWy zBaViyjCRY5k#y9dt}E_CfS*E&fr(-!k7@Fom^sIk#MCHXl6l*@x%fir12;?cE$nZ& z48a7Ag>EHR<&dl+j(}$qW+U+>|%O6XAzw~3l(gl8%-9p}3Pc823x+Lg(6J}j3 zb$hEsWo0;sR*E7hfg5>|{6l$XSmhOC*sM9aj1~}GT2ZFqS4}1NGn~uk;?D5A9wv{Q zt?~vB#WntHm(T2F9tn$LCaAMD z?Og%XABBg|)dIla#Y22z;o#D$A5@v=I0eUx>q}>Of~SMaXL)pH=m-5K_pIVaApTb(i5Il;b97 zL8_2Zi!@3+>lE)}!ZL;8@yfZjq(B|`3wRbkAZacrBYTxGJ?DXl`;myA$$)+3Y zI?-pR_Y7~neCCpa=c}c8{3VNS9G}k|AH8F8G~(n4LVMjFc|V`5qg2sGxs3!hGgJ4? z$_M0XPCz-(Vr)E{)?x@8OzE-g+j#1io{wK~lX0VQj?F((cs92cb2|Y-D2sgPi^dm` z@69*uwmC=g!lZ3#NdJ+U+b&Zt0v#e9X(;ApVJc_YkMd!^*Ln7zonHJszFJ0ue?I$r z*7H3fEE`Xb;CB^=M=f*%!@9|dURQa^ID?)k%)@hxJDi+^YK$Rk%m57^VvaK-s2BR9 z9c9VL&w!|9I1Y^r)x-tOBM!GKppz_pTavb`(1MYT% z?m380fS`^iLEDBt+F|AZ>EKL3Wd+a*rJ%v4!Y!r0%_u}6z`HG17?3kOW-=jqz)T#c zB?DOr{RrrD@F@qZ!jsEDw_PB}E!$DlR!AkyQd&3Qe;Wqi@t{B=Oa~kEEhMWxoarJn z=0z7av4gvv7z9c0+M9FFZ+_t;tr3g`x1=e6Pa<*xMxsM#fadHr&iZ;Ci4msqFb;C+&e6ik+QL12TD z(;Xxk$sU=0PaK{#%~FS%q95ps{^SUhWv^4J z_PZsgqoG=m2=yR&l4^hpyF#ptl_o8%xNBG*BSn(TDh;)a8Ep5*6v=?9Ua$c=eWguPCUlSSf51s4i{WVeR#Wd+egBCx)wj;4 zA{}4mQLa`z^icRH1n~dKd7Xui;wzk=__@jM^Ux&Jag=d9+x=MaNI2RduKAag4AI>QPfF1=_0X{N#-m5@_bEL~xP+9blf z+sEvrs4!!_$5P$zvN_1qhom~-nJ%ggNi~Uhwu|akP<drzI{XO?L+(ertfYEOhYvbZ{D8GZohfqoa;L|Rph#lEZTFyT9QX*?FD-l z9qHyomFv9TvS+t-t8G6rjBW$=S<6-mfaWF{XS?VkhkV{dnjZfuS9FvG7HOC)dA4s3 zSQB$BbJp?zZo22qAxjU!+(Q6;s-?^Z=He3iz$nL4RAGn<#BG?wK$Eo{n@+?trufae zQ8Dtzj2AnZsYDlNEh}%pCA0%Z{=c!qfzk75dO@jaYN}zU=N!18n32YOh{FF_({%Q0 zaBQkE6Tw~lpKu&0&&&*v=dZwyTvN>zHBI>gkf?Y`4(Pw_P)(DWk{;;(s!9IH6+edg1B3 zWVENCQke+_gg1U>D#M{VYE}CZy|DdIy@Y>L<|6{Mh>P+WGBCa67sz%>4<+@MUsODk zsJN30dTA z<(NWcyVM@13>$=6+GOeWJ>~mTdJ^1~fgNs21C=E=p|q%CO9~%nr)8vC=d-uUVNJgE z3o??kk1YQ}-Ky2Kt#!d*?eBk}_urg;ig%oBN=lEY@l;%WY{4ausf2KIq0q92vMTF* z?pA>Mxb-=?TFTCFe4#E7sB5iTwW{v3KhULQXD#y%vW8Fvqzqf_@oP%7U_=$o@9}3h&5TZo&fJv!OwWp* zUkG(RUKcq|)OoE|INrNwkun<=l-bInJ-x=Wkwh|Vzn9F9WPCJ?(wj|pTBRsj^-(?I zG-gU)SzylIIq{mAiNTMrP0Xl?&E7Z1GT1Y1Z!XTcqaM}4vJTY~b(2e59{(HmZdRp; znDZ%S8KqryvtznJlx=q+Sw>Ai^(Iyl=|6JSm9!XJ+bJGwcAzQHVez${-D?*-P5LP7 z$|xN%u@<@nfD=*wUVTRY481iN3I+GJ?Sn38t6pBc?>)Sf0>F6q!ZVT<{{9!FYAN2~ z>UL$HatJ3EtnHqpnUP+N!JfK3aIza+-&iN>tCzlr6U4 z6HKI}eLCK{f?G}j!2PLEL#P-)C(5sApiwx3SkqC`j!430 z29PNbV=4JU!^3?l-J-g#5N9pJK|6xBK4d|zxpL7ed#|jjazKyzWYNbVehsgQTBzRd z5qa!#9&x%bFM9m-Ari|E35fHFvae1L!b3s5&U{E1dY^~Z@a98Nz3^h!+TClr=mDK_ zO9v!3megc*ASC$s3kb36mRyn;4%7l@er+Hul1n#_g$sC}5DHW$6^Vt12ut!|o>HZu zjP=s4wf1~^A3kmQLG5RjgJ0~?e)2|NkER1gdqibNrEfx&_m2*Ow}Z+9@}koaHk#pB z7XHKdN${!C!{?Y%7%}6=mxoIS#>QqiMCK~k4}g^rWKL9YLup^$RI%5`jZMI*tJ{=R zLG;I~E?TtoGfNj;ROQ=2MIJkRV`30^5#C{4kQ4fJvd`o5dHRyoHC<~%;c#eeSIwu! ziTgr0Oy;3**gDxVkVE))#r_*3PeG%uNB7m}zC3{#Xq$5k`9{$T2u{9pG^#9Y>?lix ze;4u@r)Y{6U&uI4I*5MYsD<>#V90j@Zk-@^n(2u~6zSEM%5+xeei*4#(Hb^BCNN2X z6|!`&->f)IPKqL&8No=;UmL5pX-XEWQKe1&yW|%3;AKoqLP_G;6%w#%g!Q#(Lf z`-&a#eq53qa#%j_TWaNWR*EF1_iWk%k4&3J9(fBg$ytxIcXYH{&;HBZ4o747XS?pnq> zS+*I?ch&`+Xh*iLbLz^0&7MHOvvFY6f!g}ry|eeup1pTY@9ui}8=LmPjivL+$G&{S z@-})fZfs^bnOllx%Yiy4W8)t^PwEw-d}+}VD%n-ssxu*i*bl63g^d`#ztI_tI(I6{ zPQmYY^Sqe&D{w0#6IS=BQaziSoYA0jr!(r@CGecv9}p6RRYAS)Tj9o1HSKztatW~V zV&2cJJNqH4_9If5E1)u0*nx{DQ>#x`J_CW5CSN0_xaVW8UEp=^L(DQ2ehRYozT_kq zt(|_*m9F-ir%5hWzpVBf1yJE8Jbm>ern)s~r=B~9f$kaK_m;^u(QeVp!r2Mpg|cw^ z?}$ey{(tb1#WMdp4!%nEv9s~ZjE~S{Oae4mvxp1=L?P96q!nE|c)OCwD|oi zOZ;{@iVlL0H(KY)%+0v!j`i)jVOL)`l9;k`_q3b^m$MypHP1hPe)Bgr!&kc5HFHi& z%bc00Ip4pluWwg>J`p)HZTHG46d&hIB$02P-%S4Oy-w=KzztHA(IwPM6H3vko?Y5X z`9OENqLhbvcV4@*mqawqUp24kfQ9a37k6|qAMD%RNB%sz?rB=kME)Km1uh}_oS_iI zbS` zBIX72#MYLlG3F%0=V)3);?S4h=ic@3v@r*c=*y+BCF7ZjUt+4te18C2rK6w_1cI1M zEci=CUsWttg}(ke1p*djgkukPeKDm zi|zDApQ+b$)EEI0H2eBEl|Qvuh%`Hy>zUh_yGa>S-2m$v1ocw*n);BfMG6>)poEI- z`#egTZZ~zVo;tv>oVEl|8M+8JL6}ekS@M0uE}xzvKLM^Qb{jx3RY>9JPNx)a4s)Ir zu4o__jR?Y^QYByP@WdLboNM%{VX3h*hP*?*6goeX%WlZl8@B~hbskb%+)NIIJz&v= zPMOU?!_9CsPM5-u#af(lOU@r#I1ts75l2f48*1vCvZ$qH(GbP#jL(R;LaWd_>$IjS zp}yI*TH>l=y2DrJUhCk5O}>~%tWLQ1I@RXR8ZOc4yG$01KPS33Wc$(%Pi_G8N$3+bSa^-NHQ30mYt1tp&iz{hZeOUe`?nJ&}y^ao+b2G z3sX%f<@1?g<|5`g=1%5uDt)a7u_0_sjqVSwyiduj`957bQFoPx6M9KI9oR;_yTZo? z8NDR747wd+vTS~l9FiZGoKD%evAlnbW91!;0^{~@M?LLf<3-wM@6i4Wj^CH4`W8XB zh4=90=_ZHh!0atjK)!{=Bz%h`-NHG!iim%26NGKN=DgSG=PSDFbg{ohM^&tf9jCuL zYOVhM^mskHW4Xh_Eps@QIlPYLj@L03MZBEjmctnWM_68Am-Bov!dw^aIU~hPqkNvr zoH8tjtu&NOnP`%!SQ%z*rgHwML0lP{HNtgqQmW4Roupt5wN;3O&_TAjhvB9rM0mex_KZY4o|rLv>CnmYi=hRJ=J&NlYipxz zee)N6to&j@$aWeKyw65F@AV^D;f1*=QnHQ{9znZEkLEO?6e*R9p;~ z-1|~_#W^yEGK`l=Fdc-)TSa(??ST9aYW*hgh}kWPnAI^<0B_l|no9xwpoFq8H_3UC zJzBjmNoKp6u(6ReKHGfuH0g;i`|6cGC8oUzU6_N;I$b;r!U5en$*Jzt7bDeV{%TxM zO*$3rZaGR$Zr6O5o1F6%L;d$PEXjn-UadkTsYjcg&Qx91j#5j(>@_d63WkC}^-BN? z&CfJ4T?}AsZegy3HY=OH>d@cNY=6_7babORC%K%0G5jG~5%V8aG3MQcQ7l6>@uET#)<-KO&lrYI?Vta?eCl z0&NM~KpMh%b7dWO8pxXypmnl%lb^GXuuas@HTkO3h--AW0r)YM4pC3oI=aZAnS+dn?@!a>;88$x|0%&R2`cK~947q}QA>8Ia) z$BuYn=N)%no({Ba9;BOzL-&@Dt(c-L3gjCR6FZb}mGC*TZ7h6_gw@amh!OPhq#oqU z#NY=8sjU~!sI6UgWMiUc=;jCSo!P%DImL0!HIBymz4QKK9C632t1js5Xn*VCR69w< zFTVEv2M(^*TGG4vr|h0qTid;@dG6&W$4Wd{zH|LGhpuXS%PjYs>?_pY5%?o9Z6Lro zYsqq;(=>#zqo@Hvurpf`+lOcz?m*Yb=q2T%zMAf`G2$ z`9Kx_6Sw=vLREn0Nt88So+Uie5++NLTL_850>@`9f>brr#zUuANtQR>nj*4KnzaOp zHsAs_<{W?Wu9f_GM~**r+cLuUw6-o^`LEkHFJG|+Dqif;j&JFAOXSG&U)EhoTm{@f zUN%vWo+;U{<)}_o3mID=d$#qY%q>F{DCwTiJ27vXa7^TvM@$Lr_gqDI1m#Bz)bU-4 z&`5cme>1-GAXOVS;cH1#5>5vi6z1R8$@orDo0e9~SIg#!EL=;FlIaqd1%O&ZV_H_0 zv~juel;v>lWnp}5*_>G^@^99hhwXrI(rz#n=SrXM231=^z0M6eHRH)593?U_E6wCI z#_}BHt;m!Hj6e{SHiGCx=?l+k>P@qxZ~#k-W!Jr`w#Q1sRGt|Vqw7ufS<+5U(o?pC z&_wMlRa4i3^a>V~7OH|``ZcBCi+Ws0CnnJ>rrnfTr`@v0@l`?dhRHeU@W|gG=M?La z!(Jc%HHSy4V=w%w;r+n&NLuyzj#Dx^Jk?HV7`|X~sP>@mNY24O?4PLOQgMvdF=?vz zS0)9Rz;|zr?b{cRa{No3tOVi#^3%xAYyIpn9vLYqyMwkHD&G$oVVOc6{*B~IC#n#i zvt0m~*jT2iSy?z*$l(!VBoFRq;O`t`1uQ+&ciGkW95V~F-^|?wJlZTMSb{Gvf|*;l zsEtN<7I|Ktdd(FpwU((5II0)U>+x?yg zwQc|2m3o3?0bXIf-0job+@9Tw7v4AB ztp|1-LxhbzjX17)JZj-5s)l?a4ZTA85lgLFMr+ly);ofaqEFmn1odbz7}fD(5C^xwHmPv# zpB*f_kgSg#bS#&ez;-?x=S+KXuz~OclT2-e1rR@`5;j&0NKLT|+4xwsSjSOPv71G~ z@sAFL`~6K6`5;T=LByefpmtyHscQ7jK^TkkcCJ4X#zD@C?m?Dv@3EF};r$-0Gh=pgjl$pB zPUx|Jqz+BUaC-o9dVqXcPb#9*s`o_A5}s&?FpP~&ohSTxX(tTk`95T+=D8^2W$xPO zmb?;Jg=~4a44J7sjB>jKm1ntIg`jXNNB9+C7kF5)(H=GRE5$>Fd$zKDbw+f%xjRJh z4$kcsO;66z@i3-ssOgF7Q^5<`p0Bf$fYL4xPf(ulwh=rH72~1%dU@0GM#0= zZ+*-?uI;ow?NokD%~>tS;>h-wotU78_=%mORbuf7*wc%<$mlV?vI}DQBVs_L^$>TG zp)_7w9~)cTl1%3ip^`K}!cEk(zNm&PHmI{Dout3K_8R*4*IxTeN%qoWLO~Le7R34I zm@=tK&V+O&Vn!F=2VpmVve% zi#+-zJ1%(bFDswiPL3;<47P1s=nWpYoL3vB4s)*h_9`^wbQU%{qq>40QKAnI=$=J8 z+AhiMKgTT2U5S{;K+wBzTbq7))zk)cc~yJ8i$iXuPAP0r^r#a*>ZEJf^Xxa+`J|+v zn+@JcfiA!Pbckt^cLMnnGI z^9N({$V4}W&8Cq`7}mi)?C2!0m)aB2*B6pmqP1Lr{m-tFCOZly>XRAB@_S zS;u?4R=WLzG~NFFEx_QHC%V&e>Up3wRy_!{BIg#%e@rc@m0derXZeM!NC?=qwf?G@ zoyw&7A9FD5EsWQ)V9rnp0PtXa*j((>UNC0~>giM(DpZS5CS62RWn*9^gjn$Sm^(YN zRi3-6KY7vhH|(4vZymYnx3XjFeV=#1E?(@)%nj5mz9?5Xxd@F!s`Gur&4EU7k+E{i7WcxHnas+C$kDT=qhn3s zMKof`E%K!7dCMl030Np^S|%27FlRTg^UprN0e_UFIm?g>qiy3xrs6rLX_X4RW{lLB z5bqh*$^(6OBhroEZZv-Tyqy(#%8Ehy#=>{4OpCU*7umM9)FmJYpr}TVDPTx@%XZhm z9+LXtU~@i2;^d%O_}&-QP=j)gp;x}DDj#n9D8!snSuUs|pDKl_T+b=-kYYdx@u7I= zcDVe$;uA&1WzA1{7SS^FeHfe=ldm;}26{U(LGLj$jyB3zsN^A4+X+MT3XC~~G?p2w zkCGb;i#)8U&+Gs}!4;SlFwefEmifE1ZLn9moF4u!w8fgq)|)#8v^TLtsWg&6o;`Ek5;9jkl=4Or@N zXDYDgFKC74Yir{x^At$Hd{h0vn4)Y>is@b%Pj zT%7WA-P9tP7MTqIIT|20s8eJOcJVUgyY<7I%OaU8rkS`nt>1RLznx;0Prv06ckB?nZ+%+9b41N0psBA34vr8W!Rx3F@O3CC zxj2XLjdrr?_{8_7UL=Ya{o1QMQIFl<{jM9=KcRSySE<@B3cO17ejCqf- zW1Fq<`b9F2Hk0rEGT@0_CdHGap!am%X$k>ci5SAXS-Ld+CY;9f`ntA?qE^QQQOf1<4z3-gz|uqcZK+-WAzR5 zr}b>yyjOIyk~~jzt6oR_`L`w;XI`>Ua{3gOLm9`~TNYChIecl{c|thI35g5NTiDb* zYyVPNarm4LPKI%M7#*r^khO|&8gF%0lW{6DW$jtREClbjrlPakp6qQiGgHS1{f{>` zW_H0WwR<;AguAS;HDeLF;(xBSpR9O;8MY=_@@f1JHMmJD{g6G$vV?935L&63dSotn zH3G3xz>@u$4%V#LtPaxxS#ULIR=Ue06xDs{B9uyYmp{N>Kthj_)u-@_|jKD1X5dE=|5-y%4!wV=sIzTWv>2aX>#oxeO= zGuJ6_BpVcD#icx%AUI)fi1#Wa7q7yFmh+On%=RP3(mmf-SqI~y{^gi7wQK`|7&f!w z0Q^A62|_l|?dyPMyB@mQUnk1wh%=Rv(JiuA=Qna*Pn*X}4?U&@MpfK{AAsGm!VXV^ zj2c7iCNYy#zn%8Ep_b>Sto~dZ z>(S~z=66RXiGz1};lJ;>2lKhvxy$CY4_o}~W{T65GQFzyVfxv?f<~nb31}~1Z(&h0 zu{H6h4_h{QUlKH*3@mIn>;XPcuAHztv+5>mt$#sq2p+lcGEBB_03hO*d5FM$boTXF z^3r2e*Sv}De=ruA({I}Y*ghgM+9-%dO4nO!g3YI;@yG7B+)>`Q7v}a6I<&rh1I(ROVe)!LF%XgeFjIbaWC{TeQjz$vp9QFxP_9zpln%Cuv zl}+{)z0Q*fN(-blb4nY>p)MLJ3S7=m$-C)pp1g469~`$*S+j>9k>wGK7rWK?fvQ;! zDS%D1Jeyx`dYjkqd!IILy49k+M#zFTVr6lg?Njv)b{E@9c&j*IFeOuVpHpmyZtCQV zYAgkHY9T7H4Fc~h{6+8q=AKW$5^wnRuC_>|txLyZpsFf>E_H?lw3tI=sw(WJ^A%d` zFs^l@P-_I=7ikS4xAC0X(%C}oCrm={<7}AreHXKa*$EVNB3{p%DtVxh2S%x>c!v5w zNV#Zh7Wd-xq+oB@6*q9o2ME0?L3oZa9;{Gc`IqHx@^5)4v=l5Bmm(L5{7j_Q1?u0` zzR=faWJA6hZ^-zS>~_oNn3~4M8azRTwWnn?Jl{SRVlq`9F6bhL+(;R8$ z^Xis0hkT|L+ae+Oub@p{D3F{QtMLG2e2#&aAO>=Uyise&yAM+DBL&!6ZaiKHYNSM9b;ZC#)p5UpWsQ)tj?5plwjoQB6{Rf9AWr=;@XL^52?M^7tjH zw@Ugmkfxp)W0@Fqqej?SdY#V1;Tqu^Zxj}8TqvL$jT<2Fo^b;*W6T?;n%ig2Y=;9{ zSqv6+b_empOchg2zQG2lx5*^hj02VHfCE*{TKnLKV*>vPL41M7yi3A0qDx@87hL?% zDf+LKUFmR%XTMK)BS|7N*!PWRJdy+5VAhSZ-Z^6FA}A-!lYYjaa6rZwTE+X|GfqF31hRwi`**)5WcmE^I<4UHRD22=43K}uaS|jI#$c$qsj0iYDG+z!`s!w}QC`uW?V4IuSDUV_MYtne zRTUYIki*n^RhC_IT;za9I^zaI@qd|kX8?v`AfPIWnhSsrvp@j!VFDrVAbG>vnN?|@ zmrG?+=bb;he_=eDiIKl}QzD;iYDykVHpP?Sp>Q%;wZ1B8%Q@|K+raFmRw#dSs|o2o zYu`R#(x@Z}X+7Om8YGAG-_>;6n!4B~T-_N8hy4CXjmz5^Ma^tYXs|n6)!O-`zrXd` znnK}VQ!uJm`CXox>b6jzBUx1^xZCQRCTPM@V{ZeqpE(FRvH#1h2xvcaf}^Heali@b z)YGLQnuT2GXOxS z`WJSuOpB6_YwT`Zd{bRleKZrzKj>DYHQ}h!S(OUHrR7i?Sz;ARUqE)WmX8?4AZb(mDE@oW;!hK>dgJ8BO4Yt2-M= zd&wfG>BXzbd}}@KCT}v-^o5(_H*fPa`chTRAEw)W?+tQIPW=qh8o~8pWAT!4Rn)Is z%VRY&#H?pFFotXnmS~;8ttLQy9GtpwR4bOsJ77Ve!V6Mc9e>mHv@59^=Ug&jw(ir~RD@i{ zJ{JlnBatN5RrP6?<`QJ-Gb%}>gtXuaKS|T;b3Lt+q)L@Pc%QG@4;ehH!Xx2BB)fki z?7H+>HR(b~l_lg?t@1vDcao4y_yfWfvZ;g+NRU?JvShGu8C=zTQxiJ+aa3*m%1GX0 z{0dd$9ZtjN{PU6>kG4FrW66>okF-3x!>;=we40>bQ$PbYQKZNLK+)7Bw*eOQF=k6e zN8!s&F}1d8{JPyr$l0>mvi!gprE*e zuDR~8vwlCi33?HpfL=6CL;Crh6a&K4)dk(gA@Z$}HD9yGlg)&-Aa4Z^5et;Ki5bY0 z4_kf^1TQF?6LN{vm#rlK(uq;m*-E}7eM(Ysvnmb1fNE)hJw~&q3I{ys zO>zp&q{cLPst=qmg-^jKrG_?aVB)+6itoz@JVwIGmarOEt5Qx>RWT>2#}$cc8^+^Kt8c^P?%_(UmLF=2UUN`!IQ*`7WJG zNXP)N)Y=JMUwShd{l=F*t17|(uM6i3%CqHfCrA6m_-If*B9p(M!O-`k@&cIkU2E}C zu;&D8!iVNIVr3VKq^ljc0o_eeGP0YN7}#du<10H)^2Fd{+cEwX%zGiaP@K8*-Z z(oA(3Nqs(nUngxDCZnaEN_;xZU0skoxe*9*?R_tS(}fi1_>fc9{DE|mMFQe1zEvO% zkM|yM^KyrANrxPFeY8XHS7{O!jD^J*EQD;{gVDR%W-$to#^hV#wEBlpC34N zY7n&;r*P+hv)(-)h3Avho9D|iRs*_xQSVa;lHKgyr~0<_KGnOu?{@Nz1p2P=7D@Sp z$qHKh=UP&q4%#=1NG-r^cg%EB*pJczi0@%0H{qfBfg8>Cv4kk?0J%yKR2ut}i}97rvLwb@#nrp34z@!1XfW} z@{!D5ktEa$m~(|6jgB$j?UTm5yCTZ6L%jgcqI>ZsA|dHh$yR7V1(l=+$(qN@Lk6^7 zy)w>8#w(Wa4JApmMzgf?TSxNqQrjykWGAg>p}dgnpp1|>NlHu_f?T}ZmWeF>GD&91Xi=%*(P0(JWfm7+LGyj3JU>|P$FwZUSL_AL(d}^%RYdB%01y;G-E;`9 zlV=lpnyg!H6sJ^inhb&fE5u<1z(TwobUD)%&4=IHR8zC~hD0KlnK5T@{^FLln(FPd z8#|Pm{x!pE`fHSqMzwIJyCxb5Z|Y69$+i9Gw@rz}8u{89S146CYefuUwGZJwfRP5& zZM+(D#}P*8AK%~}KnQPaoSRC`T>%I5a67+b*6d}js8eN^uwJdMzIE}uIa?!} zXlz`tVbiJzZ(OH^YvS{BeH%jIW$T7!*W-o`&&&n01C8~O`dEIM>QR&$O+%Q!n8g?$ z6wno%aTD7^-j09p?F`0makGU_k|{H56Tjd*+E!OLw`-;z2B4P)jQ=y@OW@J~1#Pw*a8p;K}8Tlg(Q ztr%4nuEZI3n2l0825LcZ{cIx}C~a)iH3wQxJeN=EvRV2syf&cNclXLo8U5 z*E31b_aYq!q%$t{XD=$>*Z|B1JVLlq(g0`Zykw9s-8f_07v+pI=opF`%rX03B9gOB zj|zEm=Zx7WKVd&f=jbHid1gbOa6qgVDR>r?H|u#_gIMa;0%Ady2Kr$p>L6gi)`Lni z*vCF1AT6S!$0Ct;!iyuug*w~7D&d4*@u3Dnv^^#U#dk!}xKQM7YwW338??r1)m`n1 zYfdjOYC$(Ec-UNm)r|`yi^K0kBIq$ag4|lN)|>My#-BKNl;jW;(PILN^{l9Nx!`HY zC8q`gPS&mYoW*?sz!$G3wB;;{%WGpdP;IO@SO~>zc!xA9-z184>RH`nT?i#za;YYi zh1t?7A~Byp_V#dukmWyli-;4u%Y8t1r*Tv2ppkT%eM zBS#)>nyYFF6sgofb`&x2Z2V}jD~)AAGtk`eF?WCTatpB>8ZmM?aPx$ROLkqoB^_Wk zXWq}3nP-(5S2MO9{3GPMa$2k3B=ifk$*K+nN_qi%Oho{y7to0t?z7YcTC5Fs(?Uu0*ov#5S_J>l2@ z6K)yMXRgv-vBj}Ab~KlvnLP`(s}9w}vKfk~cY zCKF}rCI6Ydg;l6c3zLAh2d!`Nxq%Kc#lP(iQbR53%}%E-?K7aOOHpvpV} zTf6FWyG5^zMYp*2&bgs!eH>_hD8koyvb5i9-u5`j+6;wONzIWItOJP&LWp6^CWc6?V31OUo|^Q91H~pYElMtt1Fm@it~K>oxvtG?>=)TAp@(8-UnK}V$&!%;AXKD#`Y<6d zU1mfdM7S`-xiDI>QSony;$)Y<(+k%o;FlGW999yG>2H z_=k%c%O^i*6#c|p8<*MRL@w%N@nkmkF=4`oHj}TUpUlYXz;35Il@9s|{g-y3L^`Oq zAvVqHanL#Bg*cg!x~XO?VNlq5Dt`w)Me_@B;9=6iY#cl>C&qPcy8H7U&*y{2@0){< zCN4Mdqrv9+m(Qhf!2*q2sQP`4(MF$N-Q$7dX}G>j`ge)^{Toeg{Ae6+#pvL{{=D(} zoQrbn9^5lGuny%99_%~R_wL+1Bw~7Nb6Z<;>-55laD*$ApEvhlE%*4H7mG6bkWdjQrx6v_^heF2=@kBO@b-(aB#6mP^|bi>3svdAxM9gLTOKtGrCkn|YV9w(Rb)vM`&o zRz?-{ttpe19dIa4L2xRL0nRbzZl1)@md1IA8Ns=7Uu(1IhymI@5VK~>a;Z0&DPw`L zanw7Ky-#Bc%2{jc(+it|Q7{=CE?Er@8%+5Xm=unbDEjC~0pK1mlc)FW>gIB#@Gv+W zDP9@WZl0vi)A9c}JDc6iM5uQPn41;@-ka&)$i)VAfy$Fu7vi!22BxO~BrKtum|@9O zmVz;|eJCN2i(pFUg;Y2GSxZA>+sa+LhPs4Q1O_l6MtJ~@?=`9I&*y0&N-GF}9di5hf_+-JNDt+KWkY zikSp&f(Bf*YbP{d3Yw;E@UrWm0XvOVqye4tpHf$qs$bhiyp`Qa?2LQOP@u^tE|nV8)_RGYK#z`H=)!LnrHS0Oyy^?ru<8JuM+wZkd*otE%J8wV}3^ z>kYyeCQ-w*28Jo>bw{nS(LD}kX(k?MLZ$#bpvB8QU&AP{jNOje(mir~lh7P!q>v*q zKYG4s-5u5*wy-=*k)Vx6LMG-BJYs;=mFeo*oWV~#EST1(J7&|B zOks_^QOORM-bxC2jxll+OT{eYxynLDt#q`cEGc6lhem+7HQjHIDkI1*f51M;Hj(*q z7Fcv3lL;lu1Ey#PS(qtdIWP@k1|Sz>O%#w1Xx6dP1!LpB&cf?~ z?nzLbWYXX+YR=J#Lnz7Zkltezg5q&~%_Z1aOUB(VMG!#)@6Xj7E3<)1O$mOYf${|>5> zyn9juCsx81-w{bV0x9GbU-C*{U-=!n4daoQrttpNu+>IxN=Lvbb-8hg3ivB`yNt)D zUAqc)&yGkD^WI7qs<}do_|!|Mneu-JW)~1{tKLF~V$kUACU*r+Gj*5d9cw@bgMlrF zQYd#J{};<9`*7Rd-Ak&XD=)cpsL@mZY)L+Niqr(>>4uOwJ(B9@OVANzG%*^qcbn=x zsWq2gysA!LvU_h^xOwrwVhcVss%m7|TU%N7r=uC4uM~6^$3qO?V4*G0E+PG8nk{Bc z6?eD2fKZsadRqpVMX$XEZ+LARcy)JiTeos9@S(nKRIKR%9;Wk?0=S45PM#FNJ-cwS zJc@cvxAsY&#t(zW9_;p;rsfpm96#a|c;k%eyd6b_5I)L>6~krudVg0D?E0keKYpO^ zs^}TmXaNhAVt_gqsf;dbBXkVx%uz{99XBTvY}%9z7aP^A!z}y@y4MQ;DP*Pb2-K-( zw+H>v;UXWDW6>gB)I-7w{2f6?qRS`VX}oZkGo*;lN6}_0kL4r}*ng%o5AQLBd#R)c zds(;FBO%9m=Q)rB@~@Tn+ak$^w8LG-m+ulu3n5vAjEcGiv#{xBqyl%lJp4x-1md6 z+db^q11w7)u0w3KClyhRRsLzdFDke?<#`D2ce0U$%UJDagTHpCA`a&cJC8Q}99Twx znS$ko$4|Y7TgF$Qkz6mJv+u!o_v zGU6tw$xKrm7cb&-gzjLnmdCMFTtad1j12sB|Dy9&=N2WWus=mB(25^9rZg^HuwmT` z4>!6zdU(<5kD?XE(;we@!PF_Mn9=zm%lDa{mQb3ybS8tDeet|S=l3s4O>z9xc-naS zhmI*tOBQTg`vTr-=V&~QR@gZr%Byaodr*vSIfm8)5(*?O&#h<26l7(N7CF^o7Ws#) zRb;DtrTjRkE0huP>$cp-;#bF%<9#x;>{uvn0ig|I<04E>)P)wn#&}Q#M=S%bBXqVu zQo6JZw8rt9@uYo^JOj%}>C$?**gyD>xSh%jG!y87TFPtPof!XyL%bpw9fHCm?l)w1 zN*JejmnsOVi$^WesOJ+}+1jfG$9euu)M7twoGOkt{0Kfo-=8SkWKDE;;d|h13IIZo zx5?<<-#D;9vg;%V?D&mXHTrqZGB|9bV3>Y%9%|v-@VuKdPRZyZ^Lg}bC{FqFSK>{K z4>-zl3u0K@@t)^knSJz8>pOW)Li?Trlf*|Kv(_teztoQ3#T?CtE;c1B2EHEs@;T_Y z#~!uJc)uWpk^UTA^~>_M_C{V}KS#!6HCVJKsC7NvI;|K-;7kUM5+YLipM6|L!8+&X zJ1(EOYyFz8Or~qi`Zv~*KsH@C+1xyT(PtMfXlib5TCni5i{>{sV`p6u$)B%JkaX+5 zzs`JM-R|>l??%png(LxaWZ`i;Q2d_rWV(!iUakccWtn)!Oe|Vz0*aG}dKERk8H@%E z>WUO~kzkS@N8hvYh*;ndsYL+_6v^rUs7n%7&1MQSthbCJF?DE*WGfyvtQE|NvdnPa z;@^r=;j$o#=1k%_H!_klY3>|4R&0eUu7uC$XXAq?Pc zpkRdVSh&Auf8lf)tfQ-_hEyovhm5_46!fuALLy|oZB9|usBqSj>skDUK-M`}|1&Yz z?e86exAL%AFt&XXu6H&V{%5PpLx>0KQod}fG=GfAeC(2J{}eqIx| zJ03G(yfa=C)jLhz?>BjyY#_}|KpCPUzhmu>1BTQw!iZrG)T#?3vLd_4+HPLb4Q61_ za{plTU*!%4-B-B-0XL#S<5m(ziw&l+hcXb9GGTMTFI8lMZ*VHITa*DwwQvaK6EA%_ zKT1`pr_m&943oLCzS*DS@6+|Z-1-l;_1(6PM~ci@SR|Cmb&^M9`3FR?Rq*+o0)9;J zd1cw_6TT!ljUTE~JJ>BtXvitqGRGX<^BBiBNO?FrLHrp^hib`rjTOFQBL8J0WuC`M z6tPhp$6T45w}yIMlX~ zd{jTDnNR|=>7G8cZ7fhOFJMh2R0?(uGe?5VDe-Jd$eIEy&<`h-DTTGNFncUV7^0}9 z#Y0}cnanK4D<)nh>h<}ISANm@i*>E7ZQleTRnDNYs@yO=q7f7=0KAM<#q)hW)N4X; zk}NX5Uyw&z+uB~HiE~l&WaQ1WIhMY|KF&@hJZ6X@=P!hvprVuQ(l7>}NioglD`8BP zhby}Ru7C$ULxut=)^KrSTs;P=D8m&4oA8n*R5De%(C}TuP!TK5uqn7HZJrdvc@m1! z!A5y;BMN6rKLq@V1!3JqqswL5bRZM54~R9(RNSH%y4m646i=59b(l0Gy;&a9lTE=Hi0FCiW3!CRn_Fq^)=h#j4RsgCbkWAH^ z4)sj=3=2Cl88EcfiuNSgG7FS?iU(D8O_6;{Rw$j6<|(@l>ZrO_?O)$HcV_>r?jcur z9WMy{?ww*+Y|b2~m)&}R6GaZM*dZzdti!?fD8lyntSU6Z#R^ejm)s^gFJ{TV<%)P~ znpMP2aOa4iIMBH(JC{xI<=pK2%yyAW@`AA~+L%+F=yrima^j(@B?p_v4(Y191(5;Q z9Vp^u)2u@j9)1GiSXO#`hafsIjWcQYx7jDCpKd0Cist)eQ@LQNCV0ED+Bg0nX%V0C zHqVmDoMq@_ZoEzUM*JflG5#zm#xB}1x1%hX-(}h76O7jk8YL?da*j8rPlN}Zm>`~w zjyt7W;j!*1KX6VLi*n*BGHz!vtC?YD7juYtfbOu@QLlscW?dTW3&<$8Zjgh8I0?I^ z6x;xAP(?kH8`10CSf|PQF$IGfU$uyg7OEaXQe?mzxP@;Svoj}$fPK3=n`VzGUW_^u zQeM%p`~TH;HL-0JQP^*P#<9IW@vb-ZdfoVE^4EywOgQ7cEFpypnYdxZp2 zaxzjQR1m3t;Yc$^YX zc%%dut0vQ_@w@qpG?m2{X(Ox*+rNY5gE8KLtc$G57!S@t@NnyDL49>QID4N@YWim? z946iqUN2$&NY~h{j{G0myZ;j-{A-NUWFK zwHFxvqoDx&@f(6L9><1fnI$I+FgG_#v0ao<)sBMOIv0druhX((7^fzPNH9wyus4GM z?e#-5G*)w(Mk#Q{O8Cv0?wpu)?Mzw_Ir;Je&k1}p7F)Lar-?2AxpGCE5KT)Ye7?X7 zrL26$>S%GZRS=_`ZSf$cl}vldiAhsP?+HZ66$#-lUBs$I^JJfox?F76!5g zqLD&Q<}ztEI@g$D1Tsg7!P$nMwQo0aW-d2fY~DQ6`oQ0VnzQKnKmK$gQ~w#hDc`hI zDVy5+KAAD5Zp#T3K6)-)QH`0C)!zJcuCi9m7d+<$c-(dTA5Qf=Qv<91V8cwQJ{BS^O;Is&+IZh1QZIC?FxO`p)<1+i(L1qq6S< zH_E_MAjPh~tEr0q$!<)7L~QqtrYPFZbeKG*S!{Omt;b4;XkqUJcz@@l z1Pl)n@aSx5`z0J5IsaERE*Sm)*Z+Es zbmn#-mxF-`BnkjKRSdEK004NLV_;-pU~c%|z!1YZ^Z&2^-#OA5fFj6%sQ>`CZ3oi; z004NLV_{%mV8MnR(8d1$$EuDd7?)lD{}R&2Ig=uLf6>=J!wJ(W?8ps6h+1$atXLP4{s6i@*cz zmf?V@n1;BZn4a!;fcpb${R#lyt2@~M000000001l0XhM|0xSZw18f7n1V{wV1$G6} z29gI92Y3hA2&M@V36=_83gQc73&;#A48{#64x|s-5Ht}s5o{79608#_6d)9k6(SXM z72*~U7CaW97Qz=S7swbm7|0m{8DbgY8ju?R8^jy<99SI69UdKa9!MVUA5b5zAS@t+ zA!Z@oB3vToBRnI9B!(p#C4?p7CN3s+Cb}lhCg>*qClV((Cx|DmC+sLNC}t>hD9R}a zDI_U;DXJ;UpQrVu)hyV{&7-W8P#yWT<5pWnyKPWzc3CW@2W@XDVlcXWD26 zXh3LUX&`B)X}oFVY9eZYYQSpjYd~wzY$R-qZ4PaaZU%00Zme$hZ#HjsZ`g1=aBgs% zaKLcbaWZkvat?Ala&&Uka{zO2bEfFg*t_dg|>zm zhI)q1hdzghhth~dh@gn-i8P6%iTH}hiyDhMi*k${jJ}NqjYN&Sjn3X)s1&F^sCcNzsRpTxsn)6@s&1;zt0JprtBR|z ztLUw`t@N%UuDY)hucELju!OMmu~@N`vCgtWvTU;~v#zuZv}&}}wLrC&wf44#w(_@L zx5&6ExYoH2xkkB|x$e4by0*JCyI{MlyokMez2Lr1zUaS}zvjR=z?8uL!Dhjz!aTyb z!zja$!}7!=#Gb`2#jwU0#(>7k#{S1t$Gpfk$dt&i$k@pm$$ZKr%5=)m%Ph-$%p}ar z%}C9P&FIc3&W6t9&nC~v&=Sx_(16g^(Q?uh((2PZ)2!4w)SA@t)fm-m)(F-<)^^sm z*B;k~*ZkNz*m&5W*u>cE*%H}++5p*+)~`a-2UA{-HzS}-fG^&-$37( z-~ixM;O5~b;j-b-;y~i2;~?Xj2~SP>F(+d>MrU|>T>Fq>gMYb>tO4i>(1;lqgE1G-*~TC=$v1lt`&ipr@b*v*t&(*IF+~ z)HzL#kQ3wx>1cC`NO{;p14X>r*>B#ynH|Xh?y!f4^1J6Q*~2BXk}J5tqi~h_ldw;I z7OtU*o^YM|t8fD^coS~2W5y1if5ohYcVQ2=_zR-Y>`CGV#2mA=vss9Q$ zF!8R1n`n9A!0M^fb2ZzkRcO-4r0#f*^S6VzS~7Jlw6Rgwz8p zi>eHLw7H@ae^AVj`~ldLZ&!Gng&75OBFS>AI)Ma@uifsRd+st2NOJD(?%V(qXaX}y zU^bBN?(XjH?(XjH?(Y7pS|%jB`)=O`x~r?Js;f(zZMaSUOKdynKU@X`0Ru1yF^Izu z3_}8vkb*R1APXZf3S%%16EF!=upM^5PS^#z;V{?(dto0O4oAR|a1~gD&)79qtA9hWo&M;eK#`cmO;Q9t01DhrmPOVeoKx z1UwQR1&@Zuz+>TY@OXFvJQ1D*Pll(!Q{idwba)0l6P^XnhUdU@;d$_Ucmcc+UIZ_O zm%vNmW$;pTJMyXYh0Q1^g0z1;2*hz;EGq@O$_J{1N^He}=!nU*T`? zclZbV6aEGNhX25S;eWUd0TBfb;2_2@jzc(%2~1)N)0n|5j^HSc;W$p z8lH}4;F)+9o{i_=xp*F)j~C#DcoANVm*Ay%8D5T8;FWk4UX9n_wRjy~k2m0rcoW`? zx8SXK8{Uq0;GK9Emhf(Lv5Xb0qKAuE!#YZA;1V{mg+2zjj4QZ`ZR}u(`*97s*u!poodM z7!t!GA(A2`(jp_WVnmFJF)=PC#H5%K+ragsP$Op8;*sbWSrA}8`}L|iH^6PJrC#FgSIakaQcTq~{<*NYp(jp8P8v$#dvDsB_Ei#x=f;x17V zcMDgPMMYGFCl*Cb)P)ocu_T(JC43QxWwEj?zU=x{>DQ7K*KgOuUf6W~)S@S8Tnk;l zDKjgyTB(P1npHyI;4Oyhb(y-^yF&U)8ZSlAMz~DK9akpZ=}Oq{1TA-Yd8BW===qCo zvK#ucA-$?}{mgnj@M~S^cZtZlm+FOn-Sukx`L%{zmsP?WsC#lQ zwJv)!X6c$TU6yXpki8)6(qNQjlfn<+x<9t{mn68C9B4~ql40)aAdKmP) zY*P{ize9V<;q;7?>ddZ^7Ty%H$WQ8SH5XF-v)pWFK zdLe0%M5Voc#WU!ssv8iP1ZoDgOf>Pj6|WgDD@}w0i{V-rBN0e%@p>3kiRfgLsE`g> z*y$b#=lUc@rWKUcoUVijjqoZ-L?1oLyD|zuA9}jG9?HeA=E{!JUZqYtUSYKn)<7)? zbIGd9T32$@UccrO#v-u_Wvt9935Wb(wdFP!3i^!eM3oF^SVNs$E?y3oT@pM)CPD`w z5^9>#7ul|Rq}Idu@@ifu42YmBr->3n`0^G*B{JQT*`4l?i4hXEc1EQA!|pk^C6Vz4LPmOS!&mVkS?O?k+CYIB;8bC^qpDr z{DzW9ZAqUWw93-=s@K=uWp77QdP^jAm9^yYJ($t(4Q_co8jaE%PxB|i;lAKywzNo4jd%p}YxUz|y_CF{QCm2xRdg^@SlPR7tM#O-EherA~6 zxW;Er@zwKR$(fl+^Ud>hlv=W%QXjL~WJ5V|SR&lC9V3TpKJ{ zV@Xn1*C-{~x7~`Go9knpkCjQSHLq{e?BELDU>_tmsANg>WZCjq3O9}vopvU(#<7L{ zPTjhamae6blryMfWwfU-lQkM`8jxYr>SLokoW&G08nHKHH^h`~`nlvs`p&InpVA&| z+>#yF=fCZ1WX+oljBR{H?l=H$Le{XFa{$_gNSqpba**6Kd@6Zg? z`f-O|-$dugd&WEB9wj=mqbRsKs!?=d6wX(HP7;&^2IM41t4hh_z)P+_6-g1LD&{w8F{O>H zLsSS*8B=qHOmcBXm@h@|$c`yNQMRosizHvxS|*{xgt1?5HOxl*I6jAgNr81ma-8j+ zQzuL2tx`^Jxk)mDssRmZZR7G%wtnVY+p-mzH4QkG&%l~n*qpp!s*+SWs2f)a3*zc`Iip-BxJkpC#0(OFPMq(B3gXGC?3k9Xq#H{% zseUMV`Kk`VQ~l5|C`;`xqkUif{gkkF!0PU1K>NQOdPoC<NNnmlN&K{Ypp7%l2{owt_Qx&s}$l&kHH z;1yS{g;6tF*XNpwmg$a2EE9Ss`*v|lM!$VJf`Tysbi#U(%*e#h9mFiuAjP@`4oS*mkHPsTK8bq$e5k?n1$g-#=33O-t2} znawT!_?C{J%ZlNsEX-_XYu-v`=j~u2SyjQ0Tx>NQQrl>j-sA-4Ws8C|C6h4C$)W9; zUfI%_i(b*R$0haA)?BJglGmvkQ(aP=D6@%WExMU!So|iLpe8$NrsSA(tE^dzKwEg4 zQl$x%R$M=1SwPa0QMGfpDPpLb^tAC2FSaI&FmAn%S2-1zn)}C07BEFG=k+~w13m9h zRI)}Q-NjQqYLB3*?zDN@(~oy!<^oOkz_~x8%Rrlb6RogmoFPq4*pSwUQ~jlQnwoJ2 zo1kf(#bBx~rK5~eX7z}#o~@&n)`ftP!#+xBeuVC;%9LLP6I?@iij-Y2@1MTMg|y+N zOHe(rMo=7R2DQNGrRPmAaw8*?MlXDAqmj;dH`mH`Z(+#9<(weRkFc(r`x#r+C$(%p zfQ$dWd2|2BmQ^RSY1tXwO3q0)WZf(2a)wf+nsucuaQxax1Thw=0Zkc3={3TzZx$&9 zG5Be-yp@54q$7xWxl%J8jjV)RS-15=E(x5`0K!x@F}ii#$!^fUj#RnHD z>cyO^p`fQ;Ug@ju2C6!m(9^0iNefK%1Nm9Ls5W=G4j>Dsf+p%xbcMT7;Y8J#lZ!_A zXfzv*3el(-)9)w|U@jWXN27(wsE{!+MYZkOs59~;S39cb>v_%qdwxv+7GU497h>8& zV)_M|kLB=3jz9AJG0Pu?fmX2U4O!(L!P5VkQ1PFQyN&DH?I-XQow`8rmUy_#u_B$;ItaZ7N#GXEwK>iHj)s zTp(AewjAc+rIg~j=}mQ_-8!4xz;zN4vJ*F?DC?-c$Kn_5U@oH?Kn~0*_(TmVNAA#u zBxhhc3gL;$#dzQ~Qpr*ml}sSxuP{bUFsQd!Lle=76rStV7C^m z@I@kSXDQEF%5#Od(Q{1e-O6eA z7VO@F-CMAG3o}Di*>=lKuR3f8PBh9zqkJ@)ooL%PbM@p|<-RzW+6=UH&-iArdezyn z85X^**Cr~FHLmj$M#zC{3x%#KlDAT5@=cq1*x9n9$2)dy5ab8LK;;kZ2|J7#)IBcH zd(@7Zs5R2Jht^laegMC1g;`}{RoOH@+79Y&kA1J^>Hu=?dFLzOD3_wjIc-oJSFTO< z%lbzAoNSv%H7$(AHJgv=zC3PP@3>LXpiXQ`dgCl9{bbux z)q^Eu?K5xfGjHv4*4pQ+wXs=iV~)kiS)823$yuD7wZojX!<_YwoRvOjx#ukRoTZ$% zl=GHy-crt6%6UsUZz((TF+DJkG>-Yso9|ikT`=Es=6l|JTkekK?pW?lbau<#vD}@A zdoiZV)nRVlraNA{GaTiar2dgz8SL3X9vqwTL<8gL($@PuJ4ly&}|3+ zRC%Xu6P}`g9eV+EcZ9;AzltT|?Q;p}4tE5PR;6bD|NsC0Ym$YG?fy3Ix4{4b1j;P6 ztjfp;E~H$F$!(Xao3_tBxE&!o_Px-ag0h*4aU`1OrLO1IbbRBAzMnASXpKh~R}8&C zuV$L&thFXva3kWK8ncU@6}#`F6}d) z@bvBXyE7|qKkA++$t=Q)BxsdtrEtiLmB8@4+j@wDvE878sGu7G$NZ1!Sb&0VaLg>% zsFUwVv8>FNc9nK*uQjgh4jS98b*sA4y1MJSyKdCJy9fZk*ID16ITS)AZb5-0TBwC- z^JaRTvyl(--S3m+PpnPw#L>#yn<*j^V&3)bYA#o3QRh0fh{0zHAb$?38ne#SCM;2l zyC6OQj1iAoVRJQc^u^kTh-j;0XUfhX zWWQ(kwnQ?W$zB4BaNgqA1Fkb47srVI)CK?ZEXd^Z%6L+c#k!{>()N?s^& z1J}%bHXd0-TxHt)!GDN%+usvS5m1I~ao_~h94i;7AkI=`h?Z_#<(O$IXrlP&>!qhMp{*#tY;hf1E?^+mi z#vD;HM(&;zFP!@_kZLkTyf@W13_x1DGXN>2_;2sm+OPXU0W8Bf1F?GcfhgBYja@> z94PQ|E7|`y^iHjp?o)He1BQ0d5GdsU(Xx}~u1V@-{dTjx?7bZI{3HEJzZ#7oP>?v# z?j~%XfW7+krgy&k{&CDMCh#0m#NcU7f2jRW6i3POML1 zH<(rF`urfG%1+WIh1=zB zcAfz!EdXk5fRy}5Y6D5Febz?Vms6r$?YY|RwrKCFEw2o*%w2!wHRTrV73~#GdxYun z`$TI8V6&$FfBU7jn`v1A%9VR!T$QSV&LrA<*VzsZNJw#N7Rz>!G>9Q~y!js#&+t>elqHo)V;gGl4TM@BALI@HS%RR<0=2!n|3T(-cpg-@*+=CVAt9U)0yz(<$JlJ;zGCHEq}iyz z-JuR+E;<^wmMbq&DQ9bHT7iOqe0GQZ&cJ+<(xt%23OK+3JX*=rhjFv7i&X?Ns1jTS- zu1%3*CG-q3C_obN=XJ+Pn&m}V)lJ*=!#K^$xw&C&nUkOG1vnr9w&6%Y_Zzx{pFo5x2I#jKqwMRq%yfesZwjS zI(=ptW|VPg0D@v5g#Z8OHW*E2i`8a#I9+a!mqMk{834th{D}7Y)mpug%NL5Ja^?Ew z_U``S@#)#PpUGZcU3?i&rnB;Vv0SY;+ui-_~WE=ArM}rmTxROOrT^T+a_2+cFsf5EH5!nxf8q z8dUPgC5LRX$Ph^II4lN5Ks*3EHp~I2y@w6-3J0Q`nh_}mL`CZW(V+E!Xwe2hbZ8?W zdb9};6SNi(1Ka8P2$4QPO`oBmFVNCg=;#~t^c@EJ0VDl{iGIOMzhR+sV5P%gqXe*% z2pl8^CkJ4-C>Go#0S^hmOCR8)D)3V^1n4aUsRlyy4#Fgd2)%?Ty+@2*L7Wtjpjt>$ z9i(Us*maHJh@qMdN2U2vghxKaz;s1@$i1`le7Cw0J!D&b9~@JTC?Rv{%K zB_Sn)q7Xzp1QQ1#6o^prBaHkBrvM^|O(fY7MfOA!gBW5GODy8Zfp~Hxft*OBr6iFv z$>c%`xspn5q>(%6SW)#*pF`ZrH6g$Wq+fV~@JABNbAVfJc-J&m#l7-PUVyMqaK1C#6orq~%w zvkRDES1`+tV2&NU|KOhX9+(Fn>EP+_`8@;kffqV@rIR;0duI;#po>qs`l6d}8u+21 zU-s{hM*e9GqY0e-A!v%E8H(m;S{TsMkXA;tHl~dUZB1!s#$L^-Z$Sl1Dq2y=n#wj* zv8AdV)$FP6Kn+Jiod|QLrVF(&)W%W=M_oMi2+Rc{rAU+}Q-(rWD&=UDr<0dKJ|_8D z6kt=3Lm@7Oc@*KZUjaph6cbTgObH1kr7TrOpqwBD!Ae3@WKfe)LnbYmb!2fRtDbBS z+072XEJa|PkuWYu8CPVC8**|JD99C{Bv*loTmvGx1k?-}4MRc8P|-1_=oumghJ=yP z!NkBYGrCw9J*>Ym3#sCKc$H^GtVi33)BpwEZmodV}7~^Nq1Q-lK21|&+5oSz? zFnFR2ffxf3r~i|nT9WiXQuH-x`i2bslPvv<9Q~U-{f7d5M3FwGM4wQmPpQxas&tVW zeMX($qCs!dq<3i1yR_*&I&_vUoufzppik!+kOhYHJ|p^oF@4B{-e5{^GNad-(<3bC zQI_-=D>}}a9%n-b+0qm2=t=f;f&)Fpkxp`=r#aIpE_9kJ)o`Oj-03h6x|b)p3|@4A zH@N^lAkbEMK-X>_%8x<&@glS%Vs(E{1DP!27UON-^v6!|n& z0gY2grHW|0Vk%HVqm|MX%II?CG(rW9R7rNJqT#A(m>R01mV&6GeDyR$1LbO@L7Hf= zX6mbjQngaDHcHV>NjfN2CpFYX;kv1T9;&aG{MSc*>Ldz>;TAdhfUrQkfV;t5hvu3Q*ziD zIpCZebV2sIBzs(u-LA<_H)MxfvfUlo=ALZzK(=@!n>~?Dp2cFH6 zvmPw^uo}Q-2)hv+#&DWIYYL4S)aFoHKxGMq6$I9h+dyawksZWdA+d*41lcL;aJU>E zS0dnQL|lu6>ydFI3T{Tlt!TI%9d}~jZcN;Zh5NDbAPyeJ#iMw593M{-;AuiUON8f% z@gfOcCdI2{cpZQ@$?-M?-lfF*RQQk@AJgDdT6|82FX{0$5Z{9EJs3Yi@G}E`WyJ4H z_>&obv*1EjT+D_`*>OGx&gI0JTsWH>r}N-cUYyL=ftm9IP87g#1#wIv990-c6gjVG zwHAXKSsaRL3BW-maY!i~RvHJC!G2}2PdV&W9(z>4E)}s`CG1ogJ5<4TRk2MqY*igw z)W9a8*end|)WmwVut9BXR0nI-#TxanT79h204p`bQjM@!V=U1G%QVGu&9FjqEYt#v zw8X4dn6EV!XoGp$VyxwbmFseI7^uVy57}5)addvMD z0~j2`pXeX>|M|9Twr>ZNiS9k~)J=t+Kw73fk=P1SINV4AGKlkn^dY_7EpfOatC7|fJua(6$)jJSfPKTX z_8?tZkOfkd4xCS^7M(JTWC>?-*QUX;3$_{1+S$tdQEwl%Xq)$Xrp+lLpu^F|R_rI= zXANQHQb-$*dWbnOWknDkvP)J_X65$KbLF~{$-f%%oSGwzeOxgmba}Gsm>H3Nj+zpV z_A~LPwX$I)yl{jIWqA&%iAzt~MOGmF(&^$K0D=FK(56a#uU0^~k}*q! zK+Q})?E9yWS+>jLo4hYGY`yQ=@lyT#xUd|AoU5VeMu$V)bLkNY$9ePX?Qxce;W33Z zw4fb|9T}!VAR@$QP*p@R9%Lh#;*qMZ6&DvrW&#wuBBB*YCQb)Wx-&_)aB?jf=M;F>RIEfBLh2;exWq_H_k6N;^&1fGl^inxLUw9h&Yiys(C+lKd?cd-4nq&y zHzEOu9Ohm@U}B%8jymtHRlqlA?dkSPVTDM|Je4G|3Y+(cYt+rT&6)W zw#3uT>89qJ;eT5!gFupkOq-&uCTBq6Pt848mE4Vr>L5*N^bpCUP(F zkPt>Ryu2xOIi7U}(M!NfN(DitG^!<65gco_ETYW9Wvl^Q@n+i^d!S3IL{qL}%212o z9?~fd<*6;450kv&Gr=_u_@y2z_3?Ew^5^l){c9gviWgs|(VNC{^S$5PC5 z43>shU)o%Cbq{(i1u2D$rr7E2NT@?49QM$5$A{5RE6`RQ07E0-ub(pRN)MN~UCI2& z&IMeDxM#XO;y9=RJpb&c-(`0YP7N>rxUu9t zIR1~(UhZU?a3{LN4!*lRIWyj2f!H97*2Gxej2t=tALO~4l%9AzJ^2#dVG0La86THM z*`+@lNn7s9U!sC*ng)OZ?B>hmvVsR2Th2}-pQY&H7=;0>UMf*Hr%%dby=ahaOl)v2 z`N^5-h|(-i(qw)t7!iBI81_O89ON3oy_Cpd3a{#wC_)AZww;hY5KwtP7Nr_4tP2zv zFmd9IKn}X}jZpO z8ctOi$E@vDMSST^X1uam+UCR}cHC%?rFZYA) zNhT@4vwgvMBf5q?3JcEKsP{`OT~}&CYn8IAfN;d3T|1JLl%QU*2uvvAa5z5k?)hx= zJnJZ&GV@MY3jL8COLwMgVKdr5dh?5+f_G#uQ+~er%_{wsdlF?{BHJLQWXyMYv{u^e4;HBF)ve60GpN>|*JLgv`o0I}i@^}yPg zIV4i9#ZwjJkt+p4c(Ly|Ftt~j8fVDE`;^6)Pba<5G@ymTaRXFv$FRdY-*C)$lmNmT zq_fz=QOFjK8p0o@EF`^&?36_W#L*`Z7Hx7Wxx`K~vj22;!*6k-wl;!=MbuJza`Ql` zv#~YA)DrKME)>-*%-T!Kz3SJEhyVW7RRw+_3`8a2myZ&pD38e}DQ)2|OAj7Q)Nd4% zmB;rfM{irZo+DpX6XavAeb)qV<V)^b;Iqqkgcdtv~S&!rDG;o{jT3K>jhNj_qCAyxV5EY_u`RViyG#A9UHSgtt-9Al$j%L}!!LfJqpb||H z#C{5G)Va1=#uUh(9n#)KmL5f};5XypfoD0i1gt{~9RBWhD@_{q5Qkai3=dOoufW#lA8>XyMDK)^9 zGtT16!$t*T7N1ZfE@XIYUBt37Z<~X|3)%h|Q;z2%CFCg| zKkbiUT3@6xLxd8^gmc2OYhj8J?$KH9H5NIV;qKG1`j3?{n{nRuQG`@SrvmFZQP!^8 z>~i`z`qj=G6EVphx5(ve!xLZM{wIl$Oj_^s_)~yDa0uv2Yyf`XYp?J&X|K!0t-?ab zQIxiqa`6!7k`)ODe2aTv9T3Gr98-@ZL6$(m8xEP2?A5OMpCO{TK9{LPG4Fp@dkW=w}jI;TxdFioE(%tdH(Ir_LE~D0UroDbT}|P*>=L;e#&6}`QA3}<7dle zzM+ z)=4U97j<1`Bt15sE_kjfRisr)v@BAWD(LA=M5P2{!WlNiE>}`FS&1e4nA3?V+4jM< z8}Y!TQf;W^T3&MUl?aTLr#MigWm7st@x#&+DTFM%I&|@L#BK;pOxL)T&6J-!y5*G?L`I zJrMC)Ky)U8vJ1<%P6kY*U@H_+z%^kYZKU@AqsG>P>!}o^997a{+nrN^$4imuvhkO0 zVT~7ZoY4fbVmO6KjicclMm-=_y1-LlAjd37lXcuD(r^cNa2M|X4y3CDMT+QWBIgi9 z!l`T-6V#yQ_u2aas)(5qf~fiB+lv)Kt!nuyC}_^AZh_7wExGI2m@OIMdJZWPR3Lyv z0tX2@imSA~#NCs9X}AOOO%*ClE^gcT-{L&A6tUL_ta2uy9A_xnULW?*ZpRU=7?Tmt zpSr2u&jR=dQxY3=3YLtEm8iRHqPf4*fJLp%48$lh$?aUsyjCC7CzCe0+0!Lf6IX3s z?$KKCRaqcy?x;pzy{oJC-h39vL5U<3qvQR(KgDOic}4m5wJ)OtYDGo7O>q*+bg3z{ zI$hLN4d^YJM>T=@rl+dSe~lvJ;U4Q5@nSpi849W@_N@fHRI=X2aW~(}&v0aL(RQF* zDDyz2yVpYE$a&*pwTfB>JVodtr0sZXfgV1n8*X-hIEJEvT(f}ur zXnhNLiHaPa`+|dSEp4_gC=2&!Wtb!h9J=*x=bx@(bxHZbt3L~5{Kox<8X4lf#+9Gm zsZNFQGAv^RXip;Sw-1!B-S2d!E|jVqa+P1)&t9%J&oI*E+Se}r z?5<}>ss{Oh)l#)yq~3VbbCEPO;RmPSlIoEOA5BCOU(~{(X`;`FJci)Eg{J6Lk|(ua z+ipnui`ADYUa#WLbi$sFd!>Z*-%W*oAKQ)~7x?!y67cOLyG z?2UVyT4${0Ky@V#5crdZ)A2;EB@8sV8fTkx)f_RQFzJaKw#d+2faG77J*nMzy7S9{ z9h-d-9(BHPZL30rtrBCv)gGp|TznW$y!qy`D7S5!X1WehQLXqYPyq1z6-zi;$8UVH zu`7b_<+Dhy{=}l6(W1x}9IZlUhJ}2R#ieCVx6(m-ymmW>cB)FmtN-9`X{BV53tx}2 z`dR^2OhrpEanhG(@-9+B%M}%e>!R}?YiwNJUk67@G`=KNL1Q?-$mZhHra|d?dy-En z>X-pSNnd)_yi|F(t3=NxR7`q6EGu;Bi=o$Fuk8*F+H$iT^f*rVx>K>dT;Cg78dY1B zH@cI=Y?&>y?bS9^1{pNwh-mW^P7xkX7lAG@s3<^gaV;6aAGif@Y=S}2eK|13qf7wp zgHlpW6Hxl+638NqxR4FCssCw0qKIq}C8QyT&N$81Ts12Kbxs(*8qz+jE4f8#A2gFu zU}%eTCbK{C`do&X^F=VYN8+`VO3sk4H$w?#nva^9T8_67El@((av$xi9a!VgRzGGB zSw`K=>CsvpN5}uM>M7c~ey#HWg@4Uo67Y|y9MAdVL|X+Ekwc+7bOQ+w3LbDEgC2~? zi5=&98@W6SSq7m|@m$ks&s@+Kux zDM5^RF#fqlaSQFflZOYYd0^WWtV-h?^(&Q(;7Beo(U-m3H)6a!C7C1dm7 zgxKR#J`i@E2iUoD$xmL(nfG$X34iN_&urYaLb!>B`4+S7SkOX3)ChqT0#gX1ot36v zZju^VQW!k?;_?mkZ-y}H>Tam%SHd20av32AJu7B3H6{@Sk&a@NSQq-=GeqZUCA*fn zwtbHmD4KUP(mYQmT0`-tee3?zAZjkc=P(i)y;k@VcDlO=Sj0Brz!ef6Fb=v9Pyj3A zvO<4G?P+J)%+w$P(w@`i!2t<(8n&>Yc;w&@1%_j{R}1rTWKn^tO1!^4Qw%|AXpAk4 z76G>+*eXxaW{WF3%3ia7(7w96`l+M82(6ns*}~kGC15;A4>*$%WagTRDmhMyx&8bJ z9L#=4(QagyQ>>3|Qp&`E91C`I4A>c*U8i_kz9JBH_= z`Leb=&1#Ih2OLjApFlZ^eaMVA70RyiuSgy=jgH%S@dM>3I4xEeS*{JfzN8TtGQc&LYIjhtLUfp)bxzni-Hbq0Pr-Km1 zt4WI?%w74eD0&4+0)$m9hXhGdR7FG%%>tXh4VbrxFie*?yp!20i^F{dUZ&R zk6|(g+~mRWO?X|u5owWqQKdM-ifBvqWdlcBp7Z~VidhDyLa6GqNWFO>%<*UT&5wT_ zmZ^dBQCRiMY?WnVeNH|zTOGMiPm^-#4@DM^*BS@w%ABR2S_919IL~|P z6x1TeiQ3Co51)bb!BUPXT~>z+)n9)oBs6!S^yI<4H}Ni<{waIAUF*1ge;DHM|Ff)k3)UJx2ia9%>Sx_$PiLdUR5Y4~2Z(utNW4{NM>?kk!h&$nf)7+Ls* zmQUfaiHJcCWf99X(Hv^@*gO)4$P*e(ULBBz5kSWA@`R=dTV?I5E@})b+m6Z6H&kR< zq+MeaIUm3}QUje(gD&IYLKk7v*7eQ`Hj*GMBQaYhLYNsH=Y8?QDGX4(;> zXYkGEr1xCEMo-(e<1?AS1jnK6F@O}p0np%9W{Ik|oa0{; zmIx!1P)<1uD7Emkq7-F$5mt+puA>o>Ph!?~2f9jZ{)`Tz;Zg*DY8yyUg(US+vbtfG zsL3#HfCfEE%G5_1S3L6#$N z&m^O}qqaXUhKDHw4Js{rv>RJ?6TAh8Gorq-=YlxBCSA(L5+5h=iLoS0b3!QLlyNpW z{K1mNovk|Aa~aZPvhwlD?q=sO)j+7-tnh;LIluR8Cg;jwo*2T6L)bTo! zKtlb14`i&lW_1u`)@kD*M25jML~l=dWtYbM(&MQ$9(luCl6D$9rDnO#7Sx$N0EwYxZd4g zzFyy0Nj0vl04w#OT4Q+wIM;&TfYuUTj$WYNu4^T@qu3@B;A{X@XxtPe%L1a=#%&rd zWM~kz-6Jl_)NT`J0N|QFf^Ve#p4|qB%wdGeL*r6{W5OX}vi|{z(m-Xe?0P01m9U{_ zPZ?w2VCLy^CGe(gEneKQrn)7=u)_5znV>_o4H^|<+9IDq5SK0k2MwkG!j&ZeIp6o6 z=Z5!rI}2yxtxWU5e|}wbc&jhJ(W~Ozwok%4kLxet@6%W!uvmoLLLmP8<&`mS+3+D$ z%auw(z)-nVstz%VSwN0@+*2S%TxMmi!|; zMFgKJGP!YPQ}!Fb)-HttTJH@@X{DRM3P<6u{vx=jfMepUilSruM&5lZ(clEx@P|jp zeqoxm1N^>pc%Z>%ZfRIUlK{a1Yk|TbbH<#Pw1r22DHJ& z4`k_CABD^=Cd+-wYH7Wv)~;SP`;B_MFr$5sFc>b1(Pe&no z3AP-8#nu=*`EwS~(xz<}9|K>J%Dkkp5Ho-!?=nUH>&Mal=yMpDicQg&RzBB ztECbC!Yz!_?8U+7uB6N{ zSA}Cqsn>@gM;L7Z?DHWS5Qs!&zG%U-!z{euHX0jVj7``bL>*wM-=F^HoBU*wE%c&pW(Na ze)k@n>LU)n+t~l)W`Vgc&^B>3>-AyKLis18mpa1Xd&uWzWKxh0XNB;TcDewnT3R~b z1tsh9AtmrbFli%bBTRmUeYQV@39dEZIqB%6{%J$fVa0q@2qbx;C{?&ZJ0JB5#TmlEk)Daw;Nb1tNfzj-v9V&e+#h?z#<7$SQ2s5l zISguD4`n*ufNnHXmX8E4se7q=bTr>yCD}*m%eKSwQP`aOK4eeGg7f&9U0|O3Rb91@ z-DvETc|39k9+w9jqrer|Y{E7Klg9r@)ye3Z@DlBn14o+%uoJ`j0 zY=N){Q65e}Bh!IDJu(6X=hfCUnZ(aHcNY~p(~J-lsrw4pACq5CwH1v7(Alx>+^g+^ z9Imbg#<9{DkEF5ph56LfSGaAQ*-ts3WGC`?5N*%iVSL+~Pkf5|gWVLGY(Gklw&x0YS}T5~`Y zUznq_W1EbQo;v;3GR#k5c#NQczRdiFi{j+f?P+m4UWqgcQL0x|#w7hvM~Edir=p+OPw4Cdi(#db2tm{56{dlxOzOA)PR z1yhA7y9PM{z6mK@t8HA6UYT2P>vBh+?~q;8sSJPvG9Jhf7m%H=5`VVy z$DoGX>w3j#LA($#T6=jK@!=>Bj{8v70K`?)s%uRtkTCQIhJ=JDafhYb2UlI#BxCk9 zFeo+Gl&rM?T;fa5p|*x7IfKBY-z!|g(W!v2o$2>#9zG|3C82gPU{IiYm`C@2<*~-_ zd5SW-B*dWc(G4@@0=-Jdz#twE)i1bBEN*rG+ZKupwe=rV7@@oLCd_}M~Ha}1Ex|PjNA=|y5bfp zAg{H}aEd_imUi4i2??xt8Ing&Mv=y|bHwfQpybdB$YUQjNMg;yzocq9F5v@wT?-+X zyg19-nZlyWX@l0Pvy_Ob(-Lg+1shY5=@0!|?t$D>yHZCSpS~PloA1tFrlpX` znPtki^ddYajm^;=tXd(h)8;)Ffn@+NGfU&s-~R-rXU@D^d9(NE{DmD-9^_-k$=adZ zu`|A^9=LFzw#8o`PyEuUV`|`W0CLh7`4?Mln&!km?cE>A_Qg)BQN#TMPHt-Jw!y; z7D+Kl!xDzj`oibt3Uc*(00F_Vv;lyI~(-&=#B{F+;uh}dECXd zC^)L*hT|{q)ZyC(Tm4@q$@HpxpbQY7Gtq?6uC>!Wk3WpN-c^TlOeukcsK3lN=Krnx zeP_nqcI#j&Yb9zQq=YJ?8JSc)CNAkudgo$RoW3Xrm(t^tGw*=&p*>}`tpo=Pw}otF z^XbX~#sNHxv_)w(Oqcls>p&IzImjnA_>mX6L!sZ&N}DCnU^Xow&_Wl*8brax7Qq$* zo|$Y|B7qCJJMk;9Zi0d)QR0eseI9%cKU@KUbw%U)k`Ui;H^&wHvdjZFT+9g&Tx$Xl z{}Yir31cUa1K|ysyr^;P{guNn&txLw$Lc(LqQ5-}?iT4Msb@TGVaBz}19G6OmPT>i zV=_r&=OM2tI93sO9BKxjpgOK{WxcGPu|- z!RfB<$@nt{kSNCM^N$d1;oVW7k~+wFNw z%3Ag)F1W+23Nk{UHWUg}ud(CvG!69;*Q4-~pW>8so?|0CQY`sQnUdG+9fzWTueAaJ zHBeUIS0ROU%iu`U9`JD__zINUmEyicujp(5n6+>|^Y)hs4^%Uh2KQM*J=2z;X!u0)j-{9PhrqwfbOE zyTo(a`!a-=r(r(w+nraoG#=j%b6TfjHpcPd46*6)V0%4Lgd!0CJQEFvsblzZr|2$5 zrZfH+tDa41B%3l-;T_Lr1Qj0!BRO*5NVp0Ja`W;7K8PLv36a z!Vj;#s^7qQ!=A{twFv4T&0_mZa@9_lmZ2{fvMuRB(V`5owmj?-TQ3sIVZjg$3$}m^MEu_9F-9(BBg>d!h)^>#T2zltVrA= zR}dk3L9f~%JHzuTJiobVA!s%3ueHM%G|dEyJtOzb$IQB9k?eniQ}X)*zc>9ojhw0gy% z>G=zu#ybob$5)&jCYNf?RHu<8BBBv|m<|ACG&@6z6FE&PnDaVl6UDJIBqdRjg z>k5pS0p2E4QVKbRqcSQhn44$9+jqOF-eUXW;nhve155uBQE%4Gi8%_504o%^X>ETH zI&+&_0b0{k(Lg7pB!b5y1SoL@9gf7dNi40@#^Pqh+|U+FDoH`hhwQe}hZAiV;#5VW zS;Ot(L}!v9DTe)1lVinggqhgDyFW2jooI<8xldZSA`;<&s@-v?0gzA}(i>n$%0wPP`+7O01d@g28sYb|;~FVL_b6-=phtfGuv9>!8U zPSWmLk#{cvC?h2CbXy_Hp!>;9p#!~$DJCz4wi)Vy3>%s;eW zsM?N9<}*{G$4`ufe1A5G%@cO5QHe4*_h>$Kp^jmUR+NA{z2UY~oyldNG@7^t;~K8X zi7RuyZS6Jw8t8@k)^s;gzxVn9+?)!kgM=-ki-1G{uYtb#B|cl24j1^WX-1nHHwtqf zl*QlT2)G76w0cJd;`zx>qiM- z_-elVG7oCs=c5#I)WoVCjVd!I1NFt$JY(SU;ELSk)4AS3z&Bm%>VC$i^@KehewwQ` z$N15)IbpjFmniRA(rIN$8=PcJRbgtNebvZ8HwoyLk;Qq7kqbAs@24@5wHH6hFoQ(1 zcjLnAw_JDIs~)U{l2q$9A`^Ar;mi>a&i#%IQN0&CGQr$6trP<%;^P-#IZ2|ZMfndj zl_zE)TvT>~yv|=#o7}vzGY)wJhp_|fZfuQ6{*}Xa(ot<#Hw$BA&o;(M6Bpo6P5JU% zN4>C4`evOZH(Tvvr(45eh<3VHj`Vd>v_>($-&Yv#)mlP|Nh=_Pw7L&VTFaM|e@t2hP369TV zgX8&6aCjrwz+0m-e6_z>Y(*9iY&QvTeR*0!>qnc&w$>IAx!e#V7`~3=7+4lf#EwdD zI@PTZs>O#^{#PHveZIXr(eSai@cozPe$_L+noVxu3)5Zc>HvO&zt4@v_os`;-@YFY z{qnAX6NXYxMEPM`pt|}&KG=BqVzUd`-AvES|Jwfm0bR5^8-N9#(ki{FJ|>-iCS$b) zUN%7(I4AK&(m{tjMCP21o_Y=0Bp0-NuBYfT*G=a;>frEIB{Qu52T`_|AIUtQ)GKt? z)bAoQ_^kBz#T_vQt~Bz~oFQ+7X9tt6&^}wOD_ivN!RR$}RO$Loy{qMwkv`EUx|JgENw*iD#c_e$o$L4R?+j9skMB?+EJd< zY3)F3U>#q$+E@IG#n4r_@K^7MkanU`k6BxLz@6mT9Q_wrHH`|}{J-((&sj~r$f$TM zUY+Nmp^=&xbBf=}xkCm-4pP1i^C-?=v+LeG_s}v-i1(8+Z&@oNjAdfRm_b=d9CS&y z1x7fnaBb3$m^Hor*5cHhif^**npEeZw_GqtT104kR!_G{Zcc$G`?uAZT2Nvh4k?|9 znl8<1rYFSVG^2@(Q>LBL7u6^qojhSvFwIS+57E8jdecpi$l;~T0C|J}0{9bt;>V04 z%aW%jlgu*Q{G0$oTCTxDzH9RsVOrKRtv=s?9S8l#{)hzwPwHPcx-r9&orM&_fW1;& z7^+(3gc22~>Ypm*URLMTMOjj7lq8{Rxv?W*YNQo%?D?cMrP^jX(e2Y$Kq7mY9Qtvg zFtE6-Z7+)`Xs(<@LEh5R5;72)pN4<>w_St7n;?f9ckc{i0|D2Y#B@ohb4&BX2j^(90V%WyQ@OX-7)nS$z8z)uQ3bq|}Mn~-A}!qJZ_+jKvR6U$IcM&3jEishWy&QSP?(k@Xdfm{lJ2G^=`^~{T^olkN>Yg{dt5eRKhUVN$I`|7c zaAhYh#<6{mVa8k>M2&~&Iol6lB;N3Q#(2oYKzJ$sqvmYWWn_^+{IV1Kz|%^~Vz`B0 z6F96sARe`c_rI;J{!pX6R?k2xC`F?r4OAuH>!vLT&bRa%M7v}_20XRgygRjKQSf;t z=LH?8p{LGrPDB%|nIhfw(Pc!~Zo+Pa0a2wqhQ?Pv7Vhmxcb54O72nO2j`)`eY}tZY z%|jg&;#1lQm0x!_%&_8*i`v(Ba-sr|$2;q#e3bzeV5pxJb9``HtVsgmtqzq-ezM)q z*caW>rm^#uVh<(yW6#QxCh&PyfIA@onH|HQ(d$gv{@WeNeu~|xT1+qnn9v5sWL+2D zA4EG(xh6q&053q$zbLqUk38P7Amo#)g}C}@WU@{#N6|(AN$L96)HTLb)G~5OQ?hcs zb!`9a>Q6q)?&H^a<;ENaO8|i>fvHDVlH%dID5aW_WDIJ{;3%N|ATFKY3H_|xRJTcf zID^@;axvfw?k)ZH7izzPFJ(W>$BJ!-j;0aekIY;=aSu&3>1iEaD8T5f_l1i>y7mb? zl44C5>uSDL?%fGQAXc_V2sOuS&Q2>WWXIv<7s7gITpMJ^Xv!s=Y$>%~ zU~iW1{%b$5dO}{ED{}-+K@3BAhFYlB_=c|dB&Wh~io;CjaT58-TARz7*RFRTe(mvK zV^#9E@>}VG>CHuYgyp_)Nv0o10)rL0DJM#R0M3wxVJITc9afpqnH0G=QfL_T4n8Ou zVN6U(fZQ|<36!b2PEa2TX=Es~x9CD_Y(*%c4|$}Igfr8f5Ff@^k6(<^nVltrl`gsG zkMjT0yOd&RyAs*t37c0ybV;<#;Bx-?R%mT;VP|8nz?9A0HhLf~EjiXzJ^n{RyXdTR zK{!G{wLL~<9$VcV?F3KThYqtAQTn0CV~Al_qX4Luf(}!rxQdt>v66fqv#&Knz7B?H z)zC}7GahBXV>Qv@JU^WY<*S{9UhWI?sRc!M-4zX;Hah2^uOXl*{y@|jYr&T29`5w6ZhHWUk}G$A2j&@9ruSGLg0&~KHBCB z8kf9?G23fhT4=t#BgJ|!Pms2V*7YLwSc#C*1+_ah4o|ZL*DMb)ns%nc)A5ls!Z$Ep^5|>5X8E}_Z6bH! zq4OXcbpB&c^<#e5P@J)(lDoPP26fdQja=Kh2MOM5FdNY)v~IaN4<{^*gf}U~1`sOb z6@3qp^jz<9++WE5B9+FJ*TQu~IEOORky+nU*Q36BUS>}%;Ww`a{?A>QNW%X^I%pDo zL0lY7D3|~0EdA95l?4Rk!{5k)kX{exGuix4*+L-zUT7k`m>YlT-4nzJp%=BchvoP3 zF(oXsH%;?2+~1Ssl$ff>kplWUo!7ArROWB>ot)#^U7C(D!bo5x_1WMy`YMGWuQPwI z@8;ReuTe6dD6t;v=JRg5?h4x_N`VWM-(eov<#VvkP|1ic8_()jMqs5w($!u482on( zESwbs#avC3P*zfvO_`~|E3%>l3{~x)JyZ#g7hTooRVmfjJ}>1b+KMdZ!|ZuhSFBP3 zDV6kH(z|d5G>hxEn}zAj-C5MJIc)H3_B0advsT}Ik=-8|aTc+Ti5>Khn1SQO{^+QB zHR9+fL*I{E73Ph3-CRnD8f1B|8uc}xFIavI$C~)jZM7wY600n&?FpeiHg2#5VwIMz z<%ybCpEkE2eUWS`d7UfE1zwv~f^f@YuajQW+}uWI0l*sN>w~R_Hgk*JO$I4)*$q2I zwqR|T%U5e|Vtv~>5MS^8`f>pphoqz_V?x17Z**0vHAK|Wk-i%)G^>yPv0LP9N^7N8 z<=ic_mZ!AV{o?|kgwUB=I}aYPyb)SrBSQ4UX;J)IU^LOv=rh4mXDm|i1rd~kw=phj z(j-W@$-BvM?FjoWxPu%FvC!0hk(xS-ZSjcFdx^ zgNglflRgRK#3k>rVZ37vShy%}2oo#0vLp60j*IERfF#wVfDu)H7yTVq#(3aYP3vjD zD`?+6pLX&d52@%zqHOZN1B<%C!MT_}AL3T0OB&wJ?`{@)K`I!MfDGVeBTV?yAGwLLWaB%D9;&;(j?SE62!7Bb7g7fL9lE28P2CeU-~7Lqd`(f5uPxfb^KkBOkU;E zj8_!1UD~KTZOAnkfhXBD7s;IP&aT9E@~=0I;vCC9=tP&pJAyvTX_TvAZg7oB`He8i zN}o)|y)MI8PIXQ0N|>%s@_`R3BfvnSiNVKo9V(8KVo<}T;f2iQw8meKj{AkywTsj2 zBr^V>y@FDe+~z(3U!mV8RmSiw0%HrUC~Fp{xQP$YB>Ape+`@yfB6ReeELJ#+?EbJC zatq*|mewgS!t|e0X%Mip8=D)9&CAu_hgIrW#E z53nd4EiR}lW{~S-c6PwdJ|+npyoZyf`LE_S-$|-1Wdo7`xL#gb!Ub17yChu9;JT0A z(safnGCR06-*HfU5uLjtn3Ce%$gfs^dO^VO^?MI4@w-KqHB(XK_xkEUn|fyNp(KA& zRf|k=CB(Mj)@|w502#S>O3sb6mB8sAjaT>dCnd+~eA&>iJ-68pmb%-;nL!C5=Jh#T zOCndwg;nafy->#WuU1P;>ZKOx6f0|$dWC<^kw*28>J`gF$|PT|l`mFrNmX=DvAO?_ zcfR(GMsozi@SU2u(rUT(VaFI(3uY20PRBKCUz|9ItF8NnKI4s_axHe-TcRuxaFfLh z(fp&s&I9Jf)qG9kW~SrD_Y^lh*rN`@+|Xvl3uC8AJ;Jfvv});?vFK)5B8+H{le%OL zSF=aQ5lC&dM_X()Ov%L2=8oeTp|sym|J;5jRV(57Nxx%N_bS5y`FdiF<}@8GMCdx< zN|)hZ4@16RH-rzc7j9_R%DDq{yV;}j9#@4P!KhP?XFb=H4Ck<6anesCYkKXi1!U8m zI-l3F)P@r=X0l1)gorAtP1v!*%VpGAJ(4i`>!zA2_sA#dBjS48sc5!2Z^nmnq3cGc zs{tes-9bP-4j&_~OIkOFPth|-kuw`x3RK_h;jlcG})KA^hx)twz(b4xC>Xmeq-;!zkW5?b<52B z394%O(U`jxE#-xs9p%+QiK?WZ!K9(Q`n4CIzl=!#tH9)nt<6&#)*l|+mV&U=ducJr z3dzbav?UfDB(gZxH)CkUTibTNhfbD}E z__UDslPpNzMGWl6cCr;XX9URX8)_7xTebn0rZHD3Cz^&pZ_M?FIE^inD^fPa)uv=3 z>rFYK#M=JM^J*=?JS$iUNK~;_*(T|R`hJhe_+KW}gB!Rn11C~Odo|^WM}p{6xFCGB z&?-z4g&GM&sb*VuyEM(uJz6KBe1UC_UKjjjk_T^ehIkEodk92U6Q~7K$ipY9wZi+_ z?_@f(F6r1R6vgF~&@U;{ zxXy(vyYCb&B>(2o#5LbcC_p(Z>}zi|lF zqiE&%q3<{J1-vqM!toSC&M-%UkH)Q8Ru{C(xJyitRI8GT|1JREuJ0Fz2l3QwwyT%@ z_8J_vZ39Qf^dy$68l`~ne`XoE%?MR6brc=vrI@o=gjzDvb0NnJFH*$mf>bHm zpJ-kpWl{o6Hftn&_M({QxX|izd%krA&`#-rmax2irN-XIiNy+U%VUcpKyR50>?))? zUC2~SFF!Glc_@GR+AkfBgWR$La}f+oU(PBt9)fC^nadzR&XlskFqq5xBWEZaVcY8o zTlD>IAJ27Uai_IYk;6lO%YM3H53OBHB01A)sBndcOC%9CdLB@%_3U9pshgLe@)=go zP?(%fz*(wt4;WVh691?E5YUd$IAZON^~ZmIwZtt`pYd^evhO6v4GGoc8c}9-04+m9 ziBOq~U0g*%y>VjL!c>arc*(HiGN?x|8&Jrw{UP^T#a zzRZm1@)fEJgn)Mi9Chj-DFns;>Nm3%DNP4~?u*XO?uMQSG~jM{CTXF;SCuAHcP6yZ z)FIi??A7+|v0x=Qu;+;NdZ2?DOs5%+8+2c`9sPJC!Pd$+N(Lp&{Cr@hqCp;2_Tc5RnI|#N%>Qm9^FigGV zIhxp}M{#Np6-2mAO2BDOYQ14cryc8%l?eE3EkuXnu()X#7Di9?~TI$^-;9& zK)gxpNI?~*=u*Q#rE`kRFv5|QXR;DCld%4%QTpJ>WL?}t_b0Hx(rI*TjRf7*kGatV zZJ8I<-s@ocS23V`x0A^5P~%me-sdSH55@S+2*je6>eD;MAW8y)yM}#*}6ZtGIr+F`wR+LCyZ@Qw0RK=6OpT6szo{@5glsC$9@#y}Z^5PAA zN9+u_jWet&Q2~uJ+Um*K|F=!<}_M8$=F6jqXe$YCu3CN$77WGGeRQ<@+c0Z0PsNd4b1=h51EF zJ0OO{)7R(_j)9+iq*QZha5bk2WxftK@1m@{ ztd|_(GU}D6nJWP+%(YTz=o%Jpo7xcDm?ofhZV$Li3q#n%H{K?=FpaYO)_=?6ujsL- zvzI&79()%P-71GYf@4JiA{y^4cum0MFY|En-3*19K8&6kA%GztA~VLsS3SDE*307R z>4?h@fl%|3rwV7DrWV(lrqJ;7_Z$`oXLn6#^f2Wr{Af6~gh$tn8?Upcq$T{BJV#7p zfdUnEv0uMT<)X-?Pe+{VyMpcmDA}c!2&aVoyi#o7U5PBoed$*JRhU9Ir}}RIeOtcu zGQRK}+}p^GabJX?cKQe}Qd{P$r=G1{eupe0f){+1IQ-GC$-lFgzjG~Z`@Yv)SH5|* zzldpR+eSu6p{k&SHZAtse`3GK<;8w8kdrnlKvR(rDUcARx@QjYeg4G5RtAR06+i11cWuX7*SNd5OQ-bC?wc?lT18w^U zEAyl-1fBJLo(|mwaIU+Z^Q!Bh)1@sx`Xkgf&p+>|CbCASXD?j1gSP4L*(+y!hu_iH z1n0Sr@exO1q2*&97))^F1{SjFHXU*VS;}<`D&eQ6U>iGz0zanyG+S|x2q-#kmvZkj z(|mH5HdoC^e3pq2DJ%p9G!JJ<%&vF})5X|@E2m*C8$7HHhLIYTYZnsb<#>O@4H~5= z50KvVzxtfQ#5)R-VnYZ+YKiAzy*=VOh8Yl8>35leZ>5CYfdCB`b>aSn+zS~!A$G?C z$0_zM-p@z4Hu=c4O{s4%mEP-*=_MX-#Mg~cqF^BodraStK3cCmJA|xt1lN_X#AWs-81-IT*hb6 zr3yX;G}HcnRPHPE0mCon&-B#p*;8*Ha1YL%eh1%s=45BQSVQ;o+`wlBo$J6ZOC`D* ztYkk`gp~nzJPgov{kJrokn&(iZ844D3b{hWLBEX7wc2iJnD7_ZpnW zX9_od)JN$oE;-TmBwb$amDn}!G~R&HdCwnbbW%2p&`<+?cci*Dv>{Ko-h2dof=kS? z!q9vgtnKqGzB~7`m%8xE{jRrvUmi}|eSsd2&Y8H7xzQ`z=YRfcpkKa|d*`o@9cD#v zlV0c*5RS3|pD()NgW{@O28RPntJ3XRj$pYSK=&DmSP9-4zdK_HX^{$|P z2lxkAm!*BJ00_3<@4bR|-3zbp_>B1NjgFY*8zSi%39aLA5QQ;m7V7cP7{Lr_yp{r3wZs9x)_HDubkDpyi&(u(~#I0FnOw#ik({$ zR%Ur^>*BAYnO#?;?L&q=)92BePs_`hXwZF^;>Ak=C)f}Xz3qj*FoMa64&_PrKU={& z6fkHG+TsqH%PL$o8bYf?mON=3Zt}`Ca2>0>RsyZN)FFNGN!w zuwo0n=O2d?$UcL@AADZZ*@wp_Y8KsbW95JwcfY3*nU9ou)}WH`sU}Yu;4&UJ__Oc; zf{C8#X*9{AGvoHJgw*Gwrxn0!Icy^;%h(43Fw1QKCOL49L4&@!`J2Qx1;%-BfoMzo ze)&(R90f^PfB@VvLsf%QaY8t$Q_0!6;W8Z^FEsnkvN}JZbnRo_QwmfSGCI~_Otm8P zyM;O|%?BsN-tgF6G2-8T)H_nzH-=$A@#4PgL~u>*@7)-E7u0wjBzC$Y7g}@xfy+LQ z(Chn(B{!ey*4fXfF;V?I5Z}qFGxC3hKNMh=&l!CxQ6eSW=KdG_M z&oelT>^__};;SQqjg}M6*^!5>UBF3SIzdMn`tzTLI334?KRlXDUorc^6lt440*bDa z0bS~<(K1p^`~-%Q8z4KnT^0f%1!e*AJ;M&6UgWc>Vo2C6-V*JQ@mJtu?Iv;Dh}=E{ z=Y=R+(*Hno0Aa2*5P_2p(`ihg0=H77xN(#{wo#OdOYXpOeDxHhchx1wh7dmZHXe{-*HA{*Zl90VJ*ygsb3?zv1@>GX#9O=3Ou zbO5j8*l?bGrmNq0>9(y{k16BEO~kQx5(4+^-W*2Ub*8)X>C-AqX1TsS2E8{TlYXX9 zjM9^_`_hu2sz2o`L6QB(Eni(opHs)WTHo?is%G2wYNVv3^EHn}XJV46cGMxSSLq0M zwjPmzUu2d)@)U-Ohb}DRSiNomhoOTP5ZxJ-7=Fk}I6gqZjqwR1k%%opnWxAq58^_D zZ?Xze1%@vgYT*PY(a{;ki}gXafUhy*DA;dlnKf1{hmLt8y$Y8WL(AM|kEIa8gKIVd z4N}GNtBs3W#v^8rYexXPes$nWc!WP9kBWsZI69}(!?9diK;Q{GLDo{HWdAY{?!7a^ znRnPX-cLeIo5~m^Mero?HSrxoN*m3XB1ZTOFxX|0RKgf7k0c`5tc&3))Y}?2rLsl((XbA|s0z zCBV9d;>ZYg(lZ}Pe<4MJ9BsJpAe972R$~D^Bv3grt%b2it#UOSa!PWKMZq64=ZDTA}wyUM^cz}tJK0)6?)soUOH+S-TWYecV4?0&f z$&6)pg9GCFDHkrti8r6nvcwgVFYjjmK>BQ6jsyV;? z4oXXBZ#&vPAZSVVY%M|_R8)Ykzp^R&|LGvn?V!%1sp;d>Cq2`Z6`cp~>qb}D+0K#H zmX=Qcvi#{s|K6B%=6YeEmYC{`SR416MqEVg2BY)%c?^ zOjEGFzP9dKSre8uTsK%>QwTOVAwU#m2kXz_~5Q3eNqVJG=Bv z#D=GV8wzR%2jYMDJ9;`ps`|R%>)z!yMl^ReWd_;qH1blOFcl!`r81>$(dtSHls-g~ zbNS(xgsQl>s)PV-t%^ha;kkSy`Jt2o)s=10QcI?kC-L)>@T8d=#B}&cBz{s}Civ63 zut=OQ6zd}MYROzCmz*1t8kC$CkQsDbAVGrjb4qS`jOul>j@;4GInXqt7o2|8>+3h> zS5CF1ucz5HiGTB{@?+FS=81Lr!XojHRxavqBYj?B6F{c%UmjAinNqI(Y6B;&YfqBV zZjTS!Te?fRZ^j&~NSy8Qt+r_NZ1NirihQhorHO9`2KqWs&7C`VJW113Kc0PVCGCX=Ma;R+V3A?Gs zL^(8&uapIi5o$k~inEiRLfEt$E3WZu-Lm{0SaM*U#-}>J;^L}x1D9=c}R1Q`M1cR)2d`8=S?z`i zn4cRBFmbtX!#Mt24J$GT+WOg1`yI6$TotNlgIlll##KHA z^qmG@jq~&)%y^H|^m*o|mxR-}k5cuyG-|L$-E6NHuJQljH@XhmsUV>_BH8Kn1Vw7G zJzxA!fI-{UyHgQ{A*QbkBWV27;qvVh9)>u*`O?14UB^!V=Vu@Nmza&18<~%oEeSC5 ze`aQ4_RQamX1-87fh5CpQgmQs2n|8$Mhm6^%S0*@^ z*T*K-vXsOTmCV}eagacE_FO0MaQ@>$Nn7!G{lJ9_6FyeUSqQpMfP(5zaamvTEmZ`<^jVZav&4kC?%jR)-5*{etMMptLE?FNi% zG1x1cI!)0F2=LcT+EJ#du^pO62G79E@Gng=1CHQ(E0&A156tu|z3t~2nC0LmbSD`4 zUh{R0`2E{Xkx{Mw*y9(TSO0qcIM#m4$BOeWs-In`=Ob0-DWei8seXt>7nB$W z`J-bhivJ@FL$ZyBquE2q0wsVL3w^dSeIUH{Oel0&poMVis1I|i&j-vnb0Ri&naB9x z&@hwE9B*v&^BZQZ){(tgH(ZG2O*WeqT1y4M!NTt9_=>o=iumeR0tS1})$y-%id{%e zzDOq&>O}cB6XcXl*n8?2B z*+0?sND$3LQXL8o)Fq(qt&nIE>`#mOBU}!E#C*Gza*}p>bFqq;XiD zn|lVNaXDB+ntU{wH!bsT(#2#n2vnh=DuaM6206*>gap zH|Df=h33n*ZvE;@QHBGBP9cq(Eys?@QI)V#86+i2NlNFG;hnunu5R@tt8+X>`8K_b6I@qaPsYo{i_MF%CzupO45hO+veL> zEgk~5DJEp@v>2Ha$U6s;@25}u+9P#g1!H^D8Qtl{sfCLI8-u$UC8Vk9+RvydkW?I* z7LmMDWA_qi<=vH0x7JoqkrFF_3;5XZDl;;Yvg2}d!K=>HP&U;d=e=Kbww!OPOB&F5dw1?UE3)`;`&r=p=F?x{Ip9TgZ;~wsmxDJvPL_&(>D$fW3(Q zZlcNT2*bIN9o(Y{qXWsGyG^N>HmjL9`LhJMooF=?H8#n;c$%5h4v5ua6VH|yOSU5< z`<>-2ci3QnF3>R0f4)O|C5mZJzC?26biJQ^f7p`<4gF=o8lSV=WV}7;XHB;VE)-3H zNxS$AN;dTmNyvu`1hdh^B9^P3%o0$WlDV;B+2)Yzz~ zq5Tg-BT{@MoCU;cLJa|O2`AYnB1k~3JCl}oS2FJUNl-=*j`COV=Sk!|$sYTytaEf4 ztC+RIegp>RXVG$KpZqSld@Y-5lqB?;s zow9PAF*rFeFgY(UB{?83K!B(xIXMu7Vtsek6i(jYf6w@(haUB#MDF@uR7eUO&05e< z+XTA3>T>{$Eia22zRsMr5u$Kz4$_S)&|CNFTpl2<-Y}%(LWj+k=x?GcR&si&7rNA~ zl=D*XBr}KL$zh@|P9uV{g{^=498#m_N;7lA`vu#H+)!gxo}8FMmU}+!Z!C4~^L{8J zs3=2h*)suK4N;N**(S;G?KH#W zYhqwEAZ&ag9WxFEbcq&~+-YuIB6ZSNB(&?DGw`c>q(NT3Z)e%&G^=&KA~h z!>Mo-=stiNXgo@$n?hc(BlqhVuds=XZe~~XP^znE6Z$c|$d;6^?n;uR$ z>*j2Y>Kw(|e%Z`P-(z%cj&BKSiEqvt*tsJ#`V03C1hUM6Bz<`VR;$G8clb1S?)|TZ zYJ?@X)2d`KGVWIjO}aF4%>&FA>{J{N+l~RjO~LyToG`qpRI^Hl_PLL{Gzq+27y{e%Va#xr@K= zaD+lT5*ieLqkiSo*?SGIS#|ZV5ZHbrZExwD7M;Bqon=wY-T6ZJfa}7EZucnl3C}Dr z42{y=P4%s{+IEl&l5Dy~9PEa3uyby-XgEvzsKsiHPlyGhktY^V4tW1WTEAr9=MLWz z)pv5lH5&sL+^2>8cauB=`yXd^|AvPAhHiT9!WTDD{#8{hq71v{?)R-*kg@T>4~ z^|sZLd-|swTiYPXl6@7n{WD4P9-Q23!Q_o-Cv!5`I4{0*HZr)hN;ADD`tM9azD$dG zy4Tg-LWtuu`laIAh_kFA7W#kpRhXTHx=#_m#%Us@#k;p}wZ$2;O+o`hzbF1wM1C); z?kLNX6)2-MCHz9(iWR&yp*w zAt3y0`-ie=zw7(t;+Cb5r949zQW__AkeEF@apaFlCqlwkC3`0asF(=ggPaXfMO9l^t$h zuR5Xm(Qw0)-Ksq;xTOdC?(s@91I+%<$so-sd1hK&qR!`+%a`_fDMe>Fe)hLrcf; z%Ax*Y<^(Xg534eNzb_4}jU7yqx*_!P~b~r-wM{aDUL3d9gmBvpz6h)y^Y~YMZ{C8`~T(UjI zo2;j21(Jz0DnFDW+2*7QBoP_Z=tLR}A$wEo&-Te9(rQ|M5$tA!QlzMj=zKlPK~eQT`JaDD|@7_4ra>l z2gted>X)YRY@+rPs@;aZ{0a zYx$09@)LT$8ucE1=?wxZAiKd-d$sB4F9&ev9j6}r31QmHA`LuVzxKN}pE|wt=K(Jo z*gby%8emT{Vme2GHw@I2bW#;98z?{$varC}vxluk)5lo=wDp|jO+KsF_%ua@dv3Bh zaG=wO_kQHiA)O*CzwCH-iJP0mU3yQzV1rXVD@qv3;Mp@m82k~2jCqJ3;WOBt2_Iqb z?L$KBA>@knuHE~$cqj$KVo*GvugP_jr=~6eyn6(MX)F0iOm&JH@bh>qBW}4hg9o+t1lau#$`!!F4rCd8X z1eKZOhh_(MPG!oAw?S`SG`IwROsVvdNCdXH2`xhr!OINha($zGg&P@4M$$ykxiroF z`_@npYF#dM=L!#%y|f~Fhw}^P4q!xRT3TysZ8q8z<1?iA7^l#e+savtFTU2uWyEcb|f3}60}k`mT}mI=OIQxovcAr@HYpxCP5ApjGtM0gg9 z9}uf|On5ain>4xxPLu1Up}`>&?qkt<*;0PE!dcC@>y|}R->4p94DM6idRamK&=(h6 zzg{#n^k9XPippGbpxwGSG~wya?V#2+csIMA7+vMU(;|WyTV3s=M_LGHu%AT09}BHk zLnVa*=AA@PP^k7YL+5vOxYUYn&vuj!%4%zy>V^!1(i)cg1i%8vbmQ%?$@FKJ1y>s=8^2r@=u@G2U=f-InWlcyZA1jY8RErLisVp;)`zYUW^GWoP@K}18Y zUJ)t2nR@YhHocMfoA1_w zS&ouc7m(8_i=(3erJLeWrdju`ZXTU97z97}q5J6Icb6c#iLvJ!6-rC`y8zJI*a7)k zoz`fzb9U2#d2T}4Dv>wH0)M9PQw#x7rx3y?i~n|8@kNfWtu!a$(bhtlv{ABro1MV- zwVf|coN@S)!N5-EEv7|wu*@m&b3c1|>%)!cn(Nj#YHa0S)a;FB+saZnB^3%$H8GDAMg1h zoFVh8%<%KesPvO%_=0_ZgoUM3lPRf$3}VMt^Hf?gHWe!iUZMK)!bxGg6vEOlaiI{AX@;LOSAIVQJhy&x=$pe!qVnRX6CS}KsTo0G zgqgBX7K(*t^OOZMuoz{wC@gYoNPv6m=;aNZ{wCrL)P1glASm$WVyK(e!D*-q*SG|N zK&ugb8}zG{e5^KSDBraek?B{LX$l- zboJ`KeIT0A^-dUYXb2-84IZk3n!|rR^bOGKQH#QCMn?$ZF=%%H^tw3|;;&mO#JQ1xSO?<%f_ieGIb%D}kK zctowF4S)MrY)<$TnBeY{5S|7V2C1xmt&(0@=sz1vgDDh zx$>Affl}lxPA|Py5m*KL_6-ePxcH~#&*q1Q!b(Ck-U}}*F9L#ZLn20528&y9(a=zF zvAZQIqU*)Yf}@}S8@3el(I-xwC-o>XgmY-vk9RP~rJ6D*$0mgrq6j3wcs^!%e1}a{ zRAOlyiET~T>`&u(K17K{uo;bom#!eA5EP_>TJRaw!H});!5;B87#NpB41BcOmiPy^pR~b{e<8G9D>JDh%?uwWT;`xqxqum0P-~}oEylbkcEi)#1sppOO3I|5x zlqDI36B_5r2K3>$4wipYjLF80Q>OH>$y?3wJBKoyNZCHQz;!Xll}E)JVoC7I zxgH_j>KAJ7-^~Scj~r}4DF7adQ{bLH^^%>(|Hg0A_RUB?yMW-J{JAgYVqa%e+<>Og{&!I4|^x?_7-c zgBp!-GiUnpnZ{UdLS^~Y7z9bN@rLrK0ds~=ub?tN$UQV0`mDw)g*7$d!^9oQz3n+G zJx00B1=3!dFp8lqwj#Q;G`b@8xq!iLi>-LBtMzYIe*Ry7Qz`ic$BqIkl2cpb)o8pJ zs6`9c0RFP{!uF<+>%M?lY5>_9F=nZ*sX@xk6_1%8Dd5mCgT_QD$(=4WzC)#hQln8P zfcKm14F+Oy%#tCjy_8?F{s|!+Z{hx|Ij0p)1IxwMUuI{JGL%pT*#hR^x73g=^6ZUBS!hzFI%}Q`UVWa z7@y&t1&?+)*xni=81e#$F`JyEU^VYSJT0CvPyMU|DtS0uD! zsqo*vQ4)wWVlB3kVl@Kpj)Osh1=joWG2P+VzN!FjzlXfGmPUJwRp{Po;Y;~{|E0T6 z;p^ygi1_zES~Uy?{KK9cIUt&h5c$@nWk z6b>irqw*dsY#wP|i0fNXm+|f?s$2SR-RFq-qZnGCIh+4?h=|p|;XcmM*zCPuQ|d`@ z#0TVtuYSkJY@|6h<34l3C~3;`00V4ln-yj9XvJUIAaZSQDE=gX7$91aA<95SpMDZh zc)@ewec%1`zP#~a{b;dWZUvn4L<`VT?Cej>t@CLfE(-07f7Cm?IxI5Zx7pM@+=-(# z0c(C-d2DQXyMQh2a`?88^q`>hf&gJDV0N;}HQA2n>_zuTNu1Sl>pK2{n{Bd;a380O z|FRbr5dV#~^64~M1& z2d5PZ*itBST^YzLw5#6RYyll|T^g7<#K_MUVnwtZP#B0uNa*EU!6 z9PO%)S~O^6fSDZ9gE)uk=da^rS!P;h$ef}`EoYZzq^!DTEhBq;vm+^0qEqf-sH`H` znAN`D;cpXnV@{4+8#3T-*yH^P$H zMU#w;jEOwwMN{@_zX-ovHlXLt=5q6aRPxzjUHv6r$3#&zv7A*XKEm|ti|#*Sh_}iQ z80oZFMA1>n9FArJNQYaIm-wg!m4U+uUF!mWRad|h=-;7vP#j0sx2oZ|A1hHSzO<*srtwM3fB6UhvGAzd@!R2seawx(8)ng`D$W{Vr5aeHqwXzNTf$3F zM~|XZs7X8~_$lnEB;?VfNcdIk)&E56=32t#CjqX)O=1pv9+~2>fD8BFy(%9Gcmfvu zk0wmhJbcD>Ts6J0?Ibqq$uZRB9%=F5esC;#63ml6jD6u%cifQX_!9Vt^=YK^bdo3; zzFB8E+kEKc@w@CXk{JuEZ4~8*gY$6}-#;+nF{37k{LyHatMppnTUQ88`~AmV!Fv<~ z4P(8f@y_tcGOtvs%dID5jN3nlp4t!jrv(<4egD+E@vZc2qqNaM>d?rE32bl{ufR|G zEX+=`crF;e(|GxwC~*pYe0UIT^BUz%38Z+F7Z|1}SQed9H)1RDYO(jJEUv{8T(vKXnd-Of7??)1efUdMMOuNI*A39zZjwmEA{ zArqLLDez18@kuWiuw|`WmUbmm_-7FhT^V!%_5qEoRbd}j0(hM^au zNuQP}?IIb$JOT|B{9b*ije zC#tEDrS^j=;qOw`-J0}&}{6E4^5?bWjo}Brl*DG;SMZHuUr2R%8xCn z2x~K*`*<^NS*MQo%u7y489{G;0#>sZ?zEL;ud+N&{0d|bihF^CH^?jiu4V>+rAE$0 zMu7*4#XiU5ChM(Vb#YTI)F$W^Vl03GUo12mYicD?+E`(}Z#sm@(ob5mk{rNOL0sC= zGGrS$-e6eHP?L`B%i+qMisF^uWCe)};H9)qDko*INQJF|ymcp~!2(BH6gR_-{Xs}T zuJ35>>I#85d(PfzK>MV2%jmYH)-=5NF+TsjI9*`Sm8{DVs}(J({s0>PlJNrv-CN}F z3FGbpU6nWpTcn5Sf~+^GOR<=j8LRZWQgpQ+rom>Y}vVzAvRljjEpNg&!L z?0^us5Q2m_1GmC%Q=;8%h6Nb>%#%Gwqb$qBumJxS9b_VK~D!K`uuJt%DC466YS z%GMe)y|h@N`_AS7pXNNwCa;I5iB4pc>_mJ(a3a%gu@k>nqM+jN`~4p9`uXTm$4kp~S>#o(R@Zwia>-5O)lnKM+#kAVoHes>zRT=lXZ38m zGcY5gyV-_ZGOT_M_3!X!>_+l*Tpiej&9*$CCJqexw19@JRBkKF1h}ND<<9S|Uw%q0x=eO-bTuedVPn zlWcRD&FgTx042k}ga>8pIq$v(Nqu5sy`;hR0tOqL`E57T2h3INO0Ud{+;Cl(P!*9= zM$7Tap_TaO@YN$-d7kvB+61Yzu}NYQa0OXHbS>unC_gMKBs8-a0G1MY##W4)A_sy= z2{bK7N1K1}IYq?Y;~d z1~QjC4{yjb!BUN@-GypDg1tcoSGiB4uu zUrI~Q==ie8Jrar^nZA#5Xw z>wveuO6Ima$wKGeum|4<)`WEhE19gypPSDQUZg2Jq^Y$C{(XVB^11J)H$4%bb&<5d zOm}sfV`*anJxSjkv&#n2R+rAK&YFjD=F_5E>>5(&6!zBc8w}>=SL=dI_o_HewxO5k%#KdGU$H8ZZw#Lc{Zi5~#@K79Pa&4`Tx3NIj zSI^$^CLlHNK$}_0NN9JB7)_U_#b>1vpGEH1Ry=%yzf9O0D^W(p_@25RAhGn>O(bl! zy>$uMlUKiAzJIxx9qm;b?@_~J9Jlp-^2SZhPmSRc2-w^Pe%p+Pn7SDJHuZ%fo?~cE zuBMAI+vuml#Uj609K+dt;KFqm!FKSszX<1Nh`3onP5~w^pS*OED}R_5pVGo0XONkf zixi#bh9_b;S9i*_Aiccq+!!*rcN3A(4_m$Sp33`UY41TSkb?{875DzA_* z-O%7LbGQwflyRE@ZrgrOSZ+%3Sgy5btEjtmBq?;M5UT2F7lzFVb3oH z20nhGu*QKEv5518qTCu`Uam;I@suGcvMxcXXzh?E#TgG*k<`sC-*&mWi=D2&sa3`= zlAJwu7C5OIDH#Db_q&$3zN-OVU1p|?nYz?|`suE-eab$2%^{IQGO$WKZns5J)g&6l zbxMbuE62hoh)P+YQlPqOvqU-C9NmNK4k*cvZnj4QI<)$hNTXdx5NL19^5yA#G8(H- z6({fP|3v3Si!Z0PavL*pYXu#30?&|lBc(N=957b-_$53^eUjnl!=;EQ9Xt=YOzz>w z6={V+t*Aq*Qf>0_=!ov{kS$fzE61;T$9T62&!vdKDrC)?&p~EYCOEYM0|T8BS~UZ@ zB);?Tp_-c0C$+Mvw_w~6+E1@#)nL|fYBJJmIQcXh&+`PB9=TSFcDmtbhPoWXX*7cw z6!}(E&?6KPTt45fGSy{9(K`6??~hb6tX67gTv995SJTeVj;+z!+UD6XZNxoY<*QpA zW@)RyiLBB0v`Shl`|$Syrx~Z1A1M2BlPVdNy~}RO{JC=ts~LO%K;^_&=khkW?Mm3} z=Pc9KLzF2Lid)WA@(9jDt27J&wW)@v}LT-I7J?RM)f4b3S{=)9F<^{;U31;0PB2T8W=!40)2d-|^7@xijSXe=Xk^M|$4FZ5rQW|U_0 zF$zqO{EWZn8U0z3t%y$k#jZ^i>OZYh=VI3D{PyVh(*@d3@b6H8*#LsGc_$7FSrgH* z*EL@a?q0?c9X_Fp*)_Fu>o1qRX1{Kr{wG z7E2x}XR#p5r?=|rK5QnO3Jay!8x~-B7yH2YM%R*eD%F_sMsM!h+G<$u*X0x$j|1Ge zJJ2`G^d2>xKBW_uz9%HM3KVW%F|in|;hB?FZ#5rK;KTm{W(1;^V(L<6%Oe+pp%|@1 zXdW%~+G3+wnFFTT?>cKFcM{jmn#uiFF=RThYUy^cJHAxL+a#_o<{Wf)!ZksSFaEbX z-rAc0D7JP>pA*`8SMDc+hNcAes7=Tun085BT-zk$$}(V!>3Y}4R^Il#m{7ARCe&@^ z@cOZ_HRfQp1!2zEZ603i}6LWpw$M7fR3}p(XBD5esw1SkXSZ%)}!2(Bp zp#_u*WlA~YN$;-*yvw{QauRB@6AX6DzTW2^rnj$OkBx3Dv){Bl=UQ%gYn9D4+-Dsy z8}50eZ*e*%9AQ*m{I3O8kStjNug+)*g@WE9THXrTk7*Lq`Y5;Oh{zOUF@B0cHkt#R zqE`gZty@;PEeo!w_gPV3f*U;SThh89{w{mPW9Hz;4!nHY7!gxm_1HRg6j@6#{r8+; zp2#~Dviy^}H-NeGAK;uZ?>twGux}E5BG|2y{k%NNF&ATZ@En(TL3yDoo;zq~ajqjc z#WTx666~i?2^ef}UNgAk9LK^iR5^N5G1$*ihL_{>SY%!vfiz}ZYSxih$ow87`t5Sd5m#Blc z#IkSDd1_MQ4%Iq^+7j$At^7{Ss_9BsD~9(@SjsHb=gx&RQD3hfZ_A1BeNeq!1-~pO zr<})oE9Y{M!TH?(+_~_;h&VU5xEujna?C3Xv`M(s?XG3t`&K{<_H-+$bV|q3qe`l> zub)U4Ho1Z$n)Y)!a8Hj#_frjEz0HRDYKnS~I`xX$Y&Hp1^b8I7H{PK|XrZEM*4+Cl z;CH`^j&7u2sLET%*68T%$&g1YN3kMYr~%(i&X?TwwSZ&!^KdvE4-UoJk;&QTxuNf= zg4eG8;-{smAG~ZLN|E+CuBwZSqnANO!<&#w+l6fY*v%Ohe^Ca}FTDufjzv z5tS$AL^E4W#meEpC*ia3YjDnN0B0IETj1BOWdgk0t}mx&{obmA!UOkSifPC(8la6K zY3AlvC_*Zr3Mpd4s4Wd7s!~&7WTc3gFf}8?$xQPDlM;)yo3Qz}l|$r+p|4F}nu=lD zIBByS>cCbFEtIC&N*%2BsqQogbMt;Ybuh`ILU(&k9q8RUh}u=@C+JjazePJNTb0wY zsu*(87I&Sqtd}Js)?|9?lNY?sd9UNa-3TbH3oWJaX5x%)on$~HC%UjGx7-$vkE9@)+wZp?l zIb1Z5;%oRCXv$2>Q?kiJB>)19gQXESBIuJD#aBIB#0pSg#iEQ!^x0{v+!UP(s&a)n z;o&)=+*whp2fX3AqFEtF9m3oys!BB}Fe3E{H8lzK$VUK!-G`%a`*ZO92H&%AG zRbq5H(~$$SwzIeIm~^?|$4I8bM*wGmh|Hi&&9Htw;eZRb>Yv{xSmXcvQ|04&0H3U< zFv#K^#F503qet=oI0O?LdezFxL_|%IttEN;*UrMi~90Afd;|xpzK2LagjWbPDV-t%pWddRw z16z9dh>)T_bM*qz06uuTYI)Ccgjaho*j~X=V7sWYKOhVL`q$)-|MqM&ewt`sv+cWH zTMTQQnJLGgtiPOef%sso8e=F50IsY<}J#Q!luC0i4e(f58R=^pd&iN1TE!4uVDuF-)xohRb+ z0go@@@c}h3Cld#j0B-f673BbS~R1&@CId|0K%Ra3j1QJ#LDt@s52Y zlMOSyndv)k>!Zgs00Ar6W8LU(oS4e!O3u3b0AydHr{~}rQXT~fuflMF3t@d}33=Vu zU{JVJEZZRaD^8k*Z1b9Zf!f-GcrjSs<++GiyeIfXTH;@UTAKS(*QMUTYMvtEHGvHL z_B6B$dk_j9i~?xM9~-dld(kQkyU*;N0(Td9nj~7(q)~E`ExWRll1s`Q$rjl~wx<8b zP|$E<#)b9eZ`X!MekXVp}M_T=K0vY0XeKCpx)Fcr``7uV5QV$e=4MWmEail{Uu zm1p?vrXA|NBa6kzk)7Ly`}RG)M(rCOStvwxY;UsI+c&`j{vL{v*)pd14^#Y`TG4Nr z-1Dh>QQ1WQ(tWpU;}6JZe)0}DIo?z%Xl@Nz*uC@QGf$(53Ce&&dsI{N)+q)bb6q_H zCU0x1uRX^!Qe;|46NzYrrbQ~XdfRqYF|FtU>cgnEZ@<2M8>N8ZaWvqzrSWi9S}@zZ z9);+AQ;5RTzYT)<`Lj#XA9>Fo-9o^+k7^_e*FYgm{jhf;2+hYDXVMAd6qe}R0cP1I z(+9+iAJc4UXN{Z9TH9BrvNA?W;(|OGx2Fbf13th99xIq%>Rw`JAk-c^Ho=@|dhUvo zTYzd_d{o zn+kR$uj#Ma%AVr)EQA{z2KmX3jy?so34sm+qQ%v^Ue7+SsyyLh{6N586>0|5P;i=` zJoRT%AQschqPfvn4OiGR>nK1w&X0CV3dT&dg!`bB2bV9(mcRnU^+7h%{Tcv*o=rMEjeou~TzW|4~uW zUH7lG*kYtsu&7+L)AQh%KjHZNy zZM-`qz9vdqO6mw&n4i9vpR=iAW^*|&XKz7T$U;)5w6r=p0a%fQI{(uVJZs)lm=6){ z!yUjlWP4rkhD0)3f&d5OfE~Er!pdQS=zfTV9|67GL&~rFXC_6aN0a8pl)p0m+gb4X z)_P!OLu~iAtfgkLs=(OBd-DCivd?zFxr(8}`52X(!Mj8gT_Iqw*Qx4Z9T771qC&$L zC&Icdkyq@2Seu=b6BQGnjOb;2b>^cC*mb)qB_FMkkOjjzT6r)G%##Glf^)PJ!3*N7 z#V99p2gTCeo3i6B%F@G|d>7JwIvXH3@iw>Dy+3~238L*3VKC`l=oWClWt6_{`Jn?_~QJ1uaz4cC#`w} z09yDfUlg8Pbm)zCF#=IgDHoQ9SknWXWkuZFnb_PJoM7LSzn=C}W>1yi6#iqjykC+L zWg5E6BWnzI09b%t52!4Q)91*#y|VaTRc2<&ZsK2J3zz|E5|}+RvuLIjLTIo_B_kgl zAy8kp{W2}UQsn7}h!4>!E%s%e30_&C`~{mYD-z&VqVnF2U#?~>6B?RXqd_AJt5^CI znBe|u^%#A3EzyA(7d05JkK#bN%Ikpw0`%!i1ZXDV3pECut+x__Rf zmK1E+LXTi<+02Mktr7H7WJDg2O95Vc+wwKq^I&s{F3P|-iG~yzA3F*h9~)O5l+`Ha z00eM1Vid^sWHmJ?=3IlxJ=Ee{u_&Lo3XE$^Di7y_qzrb}Q{-t@;-JT>$fB{PY>$QQ z+G9}_0e+3h+&69-HSO4K>|`%3zHmolEUcATp!`L5P*mWMxyrH|{;#7;#3chymg1R+ z0?#K~X*PP>)~JU;tlgZ7mK>Vd<|8=0NHZ4Xk3HQF`No53fa}G4anE=y{l7EdXYV7h z9`B#Qng8gW)O+@&-%NHI5r5#{hR*#Jj5W@KIpe9W+ZoxpA>%a0=KoU;ZK&su^-+8Z zWsMFu>Y0M((Ch+}V_pdiVCBQ%pd^h`nxIaQujUfh2ET>P3y<+X^1Ch_uXfK2R_dMG z7NrN)rC4kNDNye5r#=Phor9I`nbo=WO>z$kw2@d+0_(0n;U5ddB|;<}X`k_o4-}Y! zbF%;S$5UW4jD>58F(Oc>cTRzGsfbW95aZCCXoxQ^ji`uvCSb6^IRuAh)GsX1cJo|O z*TutW&JA_K)lM7pKQSd`DVIbSR5?oG>NgyZXXQf)0<|8wo+nwU5h)P?sz7y#R!2kz(4Sy~ZNk9kSPmZuw_UtQd0~o-QW$j>Cb*iG9PP z9QUrz&#o<7cc}T7%at~-CcX6)AAV?;fVBuS^Je;Xhy6k@4EVymjelfU$AWVM!A~;X zlFNnjlkYtjTY6nR?N{0qm0oPme65}%bJuzAA7wU_&hvWudwS>XjTM`X(G`E{IP00>kQFRZ z_^AW{HaORw?f5TG`Z-KQ`}2h`B>`Pnq33L}`;Z}xNZF)AV(J}BLbD6l`M!Z#x8f}E zo}=kuML`=6*XJES>?w|_^?FdE$10>aeN0BNV@@c$fJ?emm@jOvvEeqWk<~2=(wK-s zs<%yxqn3ng3O#apdhZjz#TGHmg#*O?txJ^HEuR7_IryD6?uz+l?apJ}71*`*Y1l4I zho1wY2NrPgP3tELJM1+m(3-|NdpB$~uKCO~%E5Q-`l9RCO5ktN;&3&wgjIwj>G)*= z9+6cJpk(gD{aU<=BBR&M5BVPR0%1Puad<7^} zwTI1_9Q4Yy3?NHoh_{5d2%ycJtitdO;f*0oIXzfUs6Rbi%6W?|8`(8IP){s7HCV=Z zVkc}aSReMp*I zI{T^e*vX{RhO}9vawF|g6fS+OVtgN1#_!u#s#+7l88LwYV(*F^VP(>2uZeWf$?pju$_V-VF^tU z1qJc(g#~yZL;H?>uqB0$OZmO)0FTKW8IhkXdT$i&$#l_@$*vDwd)wDJ>~! z%&jSumX?&ZQ?T%k65`TgjY&)vj@8uy0!+yp;dwmY?_u%S|GXAyA-o_wP{KYTN49q5 zm%nlgk2FaG)wIM%IEYw!?K#_tEkWDgZfyF2Gro4+r)QObiiuQzeb{`1jw<@C9fg8nyF

L7i=$+1XTUh)PG@W4;iU*6rT35r%4M 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 z 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 BU=jcT literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_disable.png b/src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..a15403d206cc1541de68296a7c9fa42864b23796 GIT binary patch literal 725 zcmV;`0xJE9P)Px%k4Z#9R5%gMQc+8jVH7^+{hUq-w5%b~jdKm%NTuE6lISAzqR6@^C=3FlA5hXi z&|gq=nbB1kgQCm45~MD=*mRrdw?-|tpg_f@PWHX0bKdpJxAg})@NwSryyrdNbDnb$ zS}c>@oFaf}Ah-ZXAt2l$gp49wba3EhJdTGgPfUmwTwnioy5=3cCcp#|ydXy{DbN)l zb(~0FI=iv9AuWE_V>9QU_Ob=;ohYW0q|;M|T!Ye$eUIvKa3fWQe?^1T+rhz8yAq3`f<@M9 zOwP>g5h9##$F_Nit(ncv|EJF!^!>tD3V9WiP`IWWs6dlI1S;Yg(H7q&I`|BU|tYrr(?+YOF200000NkvXX Hu0mjfg(6p~ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_normal.png b/src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..2018e472540166617412142d89c37645a3aad27f GIT binary patch literal 637 zcmV-@0)qXCP)Px%H%UZ6R5%f(Q$1)?Q4~JszW2Z?6cNOs1w{}mf}o(AVy7w&(m_yHOM*_O+LRZqGP2;$G;AULQX3W7F6b*O`g*ox4ackk)>Zg}A}xOpMr-Fv?8yXSo8 zT&91l>{xA&bFC9XW+%eN(H9PbXN~E6vm4Io0}!o^XG!QJle{D5&ps})SBMW1(~}?w zFQ>&&c zvTSqIAKdP1*0htG0nX*>+w^>hiMQ~=kK;JQ0tO|51FnJFFs!@gKfHQI3tS{a_pI=6 zo8JBh795G~knycb+)kl{=$x8*msr$TI;{qF4EHeQI77R<2PvNa9LZ1hi_o#a$nzjH zuUTk&cC31&8;8ANa$iaNoDOnq&#F;ut-OlY+@g>~;$%Y^;9$UvG0{^D3HqFfX!_^b z(2bCK`teiKYTEIRfS(EFU^;zWBcqkaYRcBW-r~{k%agnRl4}N$_PI9x7NQrgP8?`i zdLKpMz>dxN=F&>#rC$2$R=s%2d!Q;gOc;hF*d)tZSScYx;O4c`2V;0V4D8Quzbli# zVx$rC0`v9af@Xjev#V?JP!I1T*tH%Zrp?Fzo4kh&t@*FVl)lZsjns2Sr(kw+YZ|)_ XeFqUhP&yN~00000NkvXXu0mjf3=%XC literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_normal_disable.png b/src/main/resources/com/fr/fineui/dist/images/1x/background/auto_color_normal_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..fe1fb3035a4e5f1936e32327a4fffabe017db6fb GIT binary patch literal 608 zcmV-m0-ybfP)Px%8c9S!R5%fxQ$26gKoFf-+b0D&B)T9zF5pW-fNN4Bs6r}~0*Q|j30kNS;s*e! zC=eY=1sx=!3DD3{Af(Hg^KpqU+#y7ZprE)9dzfcu%_gG4lC`@t@6GJYyk+{w*KThg zABtRHlEZK_ao=ZtGc!|7_QKgUfH;!$kx~}b-XNCE+%FvJS|^hAfW2F8pfW(K(>*^< zWtD_t6ZqFpg-1JX@MyDF%SPj;dYxI{PY zFt6(VqLxuMJclVq?MKRnIb3Qc$)ujovZ1%W@jqzI2cvd>-o@Cx5#p~@%-PzAhI|(os(xf$(@&8Q?%*ro#MM0d>szZv?rj&LK)fyo7>ssuOhff(;L6xNKl?^i1FOS^w>u2%hM zZ!}js78yf#_Ic@#sGU3j7LtZP4{&C>x&?Wv_HX_k&>H*xOG_?SFL(u?_Us0*_C4$x u4TMoB>^~k;nMpSYPx%BS}O-R5%f(Q$1)@K@gtV_g;vJS_pOlEsUq8N|U=o5UdihkQ9PHr4U=SFeKNc z@t${uScqUDR;JU4O`;ZQqTxgk1jT3(Ed(pk+(l2{y&dP0~Pr z$)T|9@-^9&w_BebNcec8vi%9pSnfK+Z#Yg02Hi%(LNY)~KB@g*)h6B3-i*WM7qH++ zo{bteD&K97*w{}K^Q;2rG{^}NokO^kqf^=2ZCL0l*1iwu|B+at$7JH?LbSV_{ul`{ z{%qLtM{P>M8{D4TQ=}O?(s^cWwyNjEirsPza3C-vNwNTupfNs(kep%So6)v-0H0w~ zC*BMItP_^1(?C^F7({|Om(%t>%{Uy#=Fak^zEAi>=&okmf4J5z00S&I;JO|p)N>IE zTS(W_Sh8<=t~{OWf8i_A5x!E}q{*`{^VQ~6U?FMvU4W(O-gl6vC42s-$b*RJz9;)# zZ4cqo(kGmh|2(WMqxrALP)Px%qDe$SR5%gMQ_V|MQ4~Mt-qD${@uLrf3Jq%(tqsyq3n5XW4{f1P7zBo!R;8J` zax-cOt%`7!(W(ri2!c=w%#T?F;j(a%L52us@690MyQg#Bc&FF&4|L(qx#yhU{k?O3 z_Y6Ybsu}&&3I;nlTuTJyh_J!uB?OwRh!;Pe?7;23E53_1SbsNtXlKVf1%wko@Q4X! z6zEkCXfJ}PCx9*jN+ary)WDvP_MWvqkx$~86a&8%LgBR!gOSe`VC|V<+V6sUpZ!*) zbkjnA(Y(!x^@(bd&MYD6Bk|%>T)HO-BEp&xXHFxGEew>rkeIBKN#`NoYAaE(UMp&Fiu6>e;e;juBw4;5doHE7Twbpqm4w(ef!YE&px+?*OLIVYRR7S(QhLqy6m(93f(HH2t#WdL?^ATcx`YISTNGB7YUATcvKGch_cGaxH4F)%P5@Y>T zK`Rsr}kV+VsK4r03&T_dN z37_`#A}MZSsZ=7H&Gr{5`4jIqW3d>C;2mRQVuQC)s?}<&*X!MgmKw!nwOZ}3XY?Yx z1ZKC}8S0jW4@NQJa5(yFMK4kTYB(HbPN(w+)?NbvF1{X#MEdVndQW6J-p7BJ3*__perLFn{87XL ziu@ni?KWkzS&BxZ!L_t(|+U;H2Qsg=eY^etR|BH|J2?_?=>XzhWIK@;^%f>gUTQ@tI z0Q`Mk?qh%Y{3&r#4*S0lYA-a`9pmlA`d)U0-b2PdfxGLy%k402=K1` zO42&VT(L&GlDj^3aQzI3W72MiWRd2z24Jhgv2#||?&@>Nwa0-(p8?<`XeY@%qSsvl z+F|9N!xN+D%jk0__^$#&)Mif=S7ZRQv64)x1!a}BWPb#6DBzBbOoN=)ipEEcS4g=+ zpsUxYjJLpmRz_h9ud`jES2jg<(eEaBO&0;I94z_H%J4X_Pq3o5F?~BiW5yHg0J)}+ zf{q0WN_MVU0oe{1Uzrpmgk``~fmaF2w9RB3n?5R0mg$q(Jem-?T7*o@o0;DhzoT)@ z6e*RX{FA`F!rUk2{PwRkS$vnGmIyt+`QK^VS5H~(SkblEi;T?}%1N2Gq%cPf3{h8u z81*%x*sw&TI7Zfrl;>lI5hz$COG&y$&hd4_7F~YB2790h>7tw|*&@=AqBBZ?BM7+G}o#g@yeCqM*xRV8|ogsk!G`m4rCkrL$z zRv0Cuu^TystOy{VkUGmJ9*|!F-ZJ6Kf}`mH?FN}Dyd^_{CoH)lBMQGS=V8N_5ocLe zXv?&-WbP^~-;g@kIv-O> zv<6Z<0LTmEsbon+t&Ulk$_Wk0_zFNWq_A>kJR_9<5mZfsC<2%qf&+y3Q^k}`tW{FF zLNA@@cb1?WT|`PiAP!9)Myo_IcT|7Au44^rNe@m8ajKL~JCFG3P<~P z3mWH(@d)!)#U{D*)vUVZ;M4PUzVYCO`KnZ;J`OS~ikkIa%4Lm5vk1IjVRn z`J~H0rv=K6l+y_iA~25pe!__pVHQwNmeVZR6e%cL#;(N7l$Mziw(A(h3vvU(G0U3> zuCka1)sjO$pXw$OjgbJtn!Y3Dov0MhY!!~$IZ<`|>a475?^2TK!&54!n%&3UD}!*M zfA=Y`H|w{{XVdV7CQv(%yE8}cND$Tuc2?dIc?zRwbX1ZB0mS+!kapK?WiWRh-!6FK zUS5y`n@4nK zFHiW9=(}E*F{?%xQXtAuB`#y>o_s=-^`hm`J%})dCO1aG{UHEe@&1lBcD-r%LeiR4 zC9x?JJJtkISg7+V4=4KO8Ms~B4^KhCk~_y%f$x0N5Q_S#vQ10k>_PzlPOXlYq$%T& z2!9=h7J1ClQ{EE-DFU!BX{!K%q7KR!CIptQt-_a`TvTYgLLQa~yGX{NogKYZXowc-J_)7z+Bz)UiOOgM4ylp6c*|RMh!vi*o+J(^&hiDpP3j9Aa_}6=e!kz z%o@PdQ@R1|0)x#V9mGF>&vOU{QN;q!`xKB$caeev#?Vc^8ZoM}eG6Y1r5Q_$#_n8x z)qf-uA7YqRfsb+!{Wk=@dP>G>x~#9;iZkt_7#6$6e0oZkVjb}?dyleMou9&y|fee8ossFdLuV^6Sir6Gr zrHvs4g|Teg9czqdQX=J}3TD?=8H)k|RiIVl+f6 z;w#!ujokq}uE6E%=CLAtRNAuh@50__Ao=coOy3ca66FtO!9kXxAl6{zr~-HAI4XQy zDbUIJtYPf9K;N<2r@Z3FZZL*BKEnX~hriEDef|N;IdkP@&ox^B0000Px#=Sf6CR7efA);kV@KoEf89TF~JLFFy9;0oX|OtkR=nqY{9hcFgiLJy(G(3l93 z&PEc(9SV#OU?0O)o6Y9?x0{6|$pQr2Ad0?VTma$%2orHj?`Iha8Euh=;rtOTuVg#) za?k4>xB__)L|7DS_jKHo?Qp^5lsMu_Zg;NlPw9*;@P&^djtjOx9nKPH!mR^sxK%&} zHx8)cMgbjMJD`he1x#?|fGMsNu)$jcws>QJ1FsEm;eP|1_)mZv{|Iz}R{@DH@I8sD zVL=ycmqXM4IT+3)w3TCy4Nuc-RQ@cw{z literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/background/trans_disable.png b/src/main/resources/com/fr/fineui/dist/images/1x/background/trans_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..c070eb9bbf73cf6d9c7e43efb127d4786fdb1e3f GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|nmk<`Lo5W7 z_Y^$6R?o)8!0oZVu}?}_Gc9Ic-R+0(?b||m{{Qbbnz%@C$+t^iZ+}xb>*K?-P{GcV zt-<8~@8cV!mPGmoe^u~gOStT_g>i?8a4Lh{Sr%S}C6enIk7OLnWY{=sqm)Be8V|F_ x)t)2<%UKWECajjsW2pMX;wiu_p?UTk!yNZCNh4i%W1wpoJYD@<);T3K0RU^qMF9W+ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/background/trans_normal.png b/src/main/resources/com/fr/fineui/dist/images/1x/background/trans_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..4f63b4314d08c533969e9a2e55caabd11f8982e6 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|sytmBLo5W7 z_Y^$6R?p_eV9EC9+sDEmZ(si8S~9&e~VNKc^wh4JUrE|zfUOWVQtB&$uD oA!UJz{{)te4HM_w>BzBQh`JOQvQ$>99_R`NPgg&ebxsLQ06hOfi~s-t literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/background/trans_select.png b/src/main/resources/com/fr/fineui/dist/images/1x/background/trans_select.png new file mode 100644 index 0000000000000000000000000000000000000000..1e3837a5f5821c5f3920e71bcc12fd7bcca57e5d GIT binary patch literal 199 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/auto_no_square_normal.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/auto_no_square_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..a2482a1494adbf3ce743ee1e1af6f83d4fa615e2 GIT binary patch literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz07Sip>6gA}f5OZv>fz@+Qx;usRa z`8IUFw@jeGyqjlbSGYL7>1lOw5?JGM#mmKKL)bYMp+B|PUU7DvHIs5Fe(6-SsApWDFeyv>k({qw#{N>SlUgzx z)*DJiXN0zIQ??amP+XV)OViLU&Y6(jzZVNLq z7G3bTx8>)FGxK*aDn#f8sV(@!*K=&ztAjc@-T^FD#mwplj9&6H+g1M0GkYxd_{&Od zg-_0N&K%~K*8aGYFC$kybD&F_t$PWNLwDi zm(xU{K5U&M-*TbGzmJdR<<-jGud^1M|M%I7!p**W=Kee&kfR^Lc##k~IVs z1paPf+h3N=b0E0lchaQS*EDD9=k;sN(>TYljPd10wudf;SMPGQCaO+vmSZ``8MeRy d2pgK1rhhG3y(MU^VIe31dAjPx$wn;=mR7gwhma$74Q5?s=zq`aD0bN{bLJJNKf^!xNbrf_EnyJvC+?_5$-Z{kP z3C)maif9fOp_e=9+Cn=NbQEj_{R4E6IEmW1gP>L4uiPd!^%6Bs{?^~)^Wl9TKi-dQ zSN&wh5ZX{g*d$9R4m?S1;3Hx`3T{lc<%sNj+0~|z2p5a<&AeGlg4a`}uFgdA7yub3 zX0Pwh{Em~fB(U8%o0XNLg&2t1jKfVNPd z85lNBdeXi>asEF^Q#Y_hd7MGt0RF%*HzF8;UjSUx#IIJWvtREdu!Q;!V5|{@fYq8O zM{g}~^6IH38~_LmlRjMq@g=`uz|qOX^OgBRG#~#|Y(%!J3RPx$8%ab#R5%f1V4x5%g7jN-eD(bQ@87Kd|NqMnV;&?lK-?{a{ zL>U0m9Aw1C@Zx!!BCC`=uc*b^0nU?Y*ks{He=I_VZe&hzZs+im>9xM*%Px$4@pEpR5%f(lizB>Fc`&8%2cZLzpGTbp=@`8@39xzL+wTO9)sNp4*!cHgDKuM z_Ozs0n`zZtG+(})^Gm)o0q$&q{;%);o0RfHLb_>q0%9zLc<*&zKMfkLF$a2oA$k~x zfRroKpqkok08q(Gz0+(UZ{}jM)BxA9VK=I1Kegc3A3;(9Xs*}F@H`L0$((1V2N;Hd zm$r+dm5&6+=D~1^&2|^fF?cv0)hZ=e1=Fw7!Ov)ha?y%b)|nH4)%q9NYzB|@3OdhW zt=#s1<^+I=>3qp9fLtM>KkB&Brgj zL~IHB5|%mQ4wB4Mwl$udyyMK5_wp9T4>vYfXfh<5X>l){`HchUBnD4cKbLh*2~7ZP CYDta& literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/check_box_normal.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/check_box_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..02ecc0515fbd63e0415a0b362a927dee43d00564 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|T0C7GLo5W7 z6BY;Px$u1Q2eR7gwh)-h-kVHn2o=lPOgq|#k07Ho2cyEAvtK$jNkDCkgV*KUeS2fGMG za1kov;v!TWx;p3}=vZhgm?6XEdY5v!OrmvmYfbXKlDepzy`*iNdg~qkANL%`9qU1J zTYzZ{;UMslUeFZRHaLVndhIjd$Ylqf$P1!nrI;<7#?yYD*+4+G8jt2L$R0p;_SL0I zW#W4pG7#YJw(jVzet8(By60MjwNnM^Ve=Ef5fRY<4qV%qIyE2+W3w$1Qt>{7T0}pm zQr8``5FCZ{J(0H)KLcgyd``x+)^gCzdK{ zbgbg)F@Y!|`OUG6+2laH0phZ26^(%b5y|*rt4gIFmCcC{NdZ5MZVJ@nvRRlS+4=jL q)QQsG)U@+wK-xn8>6<+4-%V>bHv4ZDflNk5M(6(w3??9XMh1p6|NsBr%lhZTbX8T=pU8Sp47hstl?@X! z^I`^u|C|3YGc09b7rqKs{PV3g(_e;Y1_nl7mKV>`RV{RP!3=>L0Mg9J%(V3X|9}44 zieeYA`RrBi#Ox2wo|71V{Pctw0yY5T>_4nRH~#(q8;DEuZ%L1FqeFUBJl5sHCYNl84P^m}Uk>#xU0H+YerU@MhBg|Nrl4DT+=28*u%> z8<3w{v}Hw3q8os&86OT+T zx3{;o6htI(8h}ePRs+zzfKM}aFCYaXA(j&NgdmSvavBk*M`>za` z7@60jL?bvYoVe`vpM!n7z~1e7V#WDWacO2`WZwAy@84)`Ww9gBWR6e@GUShh)J%Ly q`QP8au`taT2EbA!*_nx)oDBd1fb$W_&pzS+0000sQIW%`Pl1mieEF(V2mP(F7v@{|w{5|9juQd^P>fWYwR@dQc27Z~0{NpNU~H z!+*xjOpO1Qa{S`E3R3)o?UVMu|4h*gjQ@S5zCBIf(4x5uW(eE>kmi4kj7u39{`jA+ z7QBGXXNyv%WUrF)nZ)w%yC=*LumK=v3rULK`2YWJATG_nJw5Fi{{LUKT*jwqic(z3 zyXP-8K;8ixVBYev;6Edi(y40RJZv_@G&3+VhOutne$cG-^CZUq|L&cv;hz9Dz^v`l zW+sOJEhnn@Pof)ut{Eh6(e}~&9|L2}sVY8Sr~#j!bN%8`J>nnCgo4gYz* zv3;NHaLh&;t<`jXC!g^+Z0|QU?od zY%yZm`rd$%k$F8zG=dZc)LeJ_!^F8g?AeyQxH&mfacO2?WZB5{?|<~k8onbSH7H3L yWXLlv>6!SFGUGpnSeRxE17N9=?94`Iy7(6mk*uCJXy`E*s$Cbia1+xw}t&^C!zxcLXieA{Z-P5_l3TG$?_c-$G z&Acv^G-crm#gj}Tb6tuu@)++~FjxxNMojowm#4_`*YN^VinBwT@@LLjd?5~>6{KRs wCP>*VP&gvZ-eM$ZSZJ^+&4i`RfrEkJ&q?9W5{I%s0bRr3>FVdQ&MBb@0GswfkN^Mx literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_collapse_2.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_collapse_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e05a3c2a1c3eb760821e83e3d7852e4c7a6d0aaa GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|7JIrlhIsHM zCrGd^R&>bZFnDC7uzSH%dp*mNk1K_<3T7Q{S|>4cfAMX(6uq!*yQg!970yr)?s4SV zn|WO-Y0APCiYJ*w=DHMRAI`K4$0lTjB1WCB_}hNzJT{EFL`z zSPh&VW;wJef1b#D=onk)MVk(`>8v-J*u_kCWb7$)&=7uTG$p6-iHOrS#lz9cmX0Pn fCcRwHBhTP=UirIAPRKW)a~V8c{an^LB{Ts59G+5g literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_collapse_3.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_collapse_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b9435ff49c5b8db2c2fd63ba6cf1d5b0d2d6c4a5 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|ws^WYhIsHM zCnzw+?EHRfI?L09r9Mlt6hdv!>MC4ybdIsLoOq_=^!b~ty8jDLF6{Q78_;}NMy%xM zi9d61e^V&lxascRm literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_collapse_4.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_collapse_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c83be64c7a9ea1cd7719c22001a90f1c784e48ba GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|R(QHNhIsHM zCnzw+?EHRfI?L09r9Mlt6hdv!>MC4ybdIsLoOq_=^!b~ty8jDLF6{Q78_;}NMy%xM zi9d61e^V&lxascRm`Iy7(6mk*uCJXy`E*s$Cbia1+xw}t&^C!zxcLXieA{Z-P5_l3TG$?_c&@- zy@+lw=W{r?E%Un6oQ2Pyi!}xFsX1O?O5$mhZ0nW#Rp?MG|Dc!IX(mVXjQ+0PwgUn@ aj0}5!a^H5E@Kg$DF@vY8pUXO@geCyuLOj?2 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_expand_2.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_expand_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f6d8fe280d544c9f92416f0b9eb3a94c7f31a574 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|CV09yhIsHM zCrGd^R&>bZFnDC7uzSH%dp*mNk1K_<3T7Q{S|>4cfAMX(6uq!*yQg!970yr)?s3$v zdJ)}V&gXD&Tjq7CISZdZ7h{^XyXgJa^?j3GqzSMeY0G5j6x_m)#^EDuCY5I4!8eol z5&vI{1v~ja9AjMQ!@`xkis^}nQ)qL0f8rAs!Lz}FXLT1;{$XTb|1W)CDXX6q=r#sV LS3j3^P6MC4ybdIsLoOq_=^!b~ty8jDLF6{Q78_;}NMy%xM zi9d61e^V&lxascRmw+vj3TV$4hRWK}PoRp2Y~ zV(t{&!jQ(%_R@pN;IO09i5!9Y7snaT);5^)ail5*NCb;2EEiZMWmChWtlp6^uPY;u d@$6%MhMD&jx4-E+Gy~{Z22WQ%mvv4FO#m%iRb2o8 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_expand_4.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_expand_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0e2bd0c15aa9705ae01b1bc5918335d419a676f4 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|CVRR#hIsHM zCnzw+?EHRfI?L09r9Mlt6hdv!>MC4ybdIsLoOq_=^!b~ty8jDLF6{Q78_;}NMy%xM zi9d61e^V&lxascRmw+vj3TV$4hRWK}PoRp2Y~ zV(t{&!jQ(%_R@pN;IO09i5!9Y7snaT);5^)ail5*Nc1;d6p&z3WMHVBBYpq5)wxul P^B6o`{an^LB{Ts5l^{X5I}`fod5%UHx3vIVCg!0MwNp AU;qFB literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_2.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_2.png new file mode 100644 index 0000000000000000000000000000000000000000..95dc9470b2ff5c8ea3429ae5476ba71a2242361e GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|ygXeTLp*qs z6C_v{D;h{KEmm|eV3FWlznK)AbSiE&5UN6ya1C!I_u*o2lQKG9TC@0gJx p>tnLL;hLO8%CmkqBVQ#J2IYAoCn7Ii6$hHi;OXk;vd$@?2>>`2DdzwH literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_3.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ecd99fd2d29cc6e0c9dc30fc0aad56e72c5214f4 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Vmw_OLp*qs z6BHO@c7DG#o#ko5QlBMR3Zb@Vbrr5UI>-FYP~rc`p>pi!6Bi?8L$-FYP~rc`p>pi!6Bi?8L$_C$lJYD@<);T3K0RRJ$EusJb literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_5.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/dark/tree_vertical_line_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3125a9baafd82481e61df2dc587102cc91ad5781 GIT binary patch literal 138 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/half_selected.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/half_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec85e364adc517056e87412d778b633167cfcd3 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|=6Sj}hFAzD zCoB*!X!;UeQuFoC|M&OT{Qv*|v_P_)vhrhLH??J3ghlV%j&zW6m?bGOKjm-P_I^#C?f5i0K=XMsmX?GXqA!=`;WRWlmSKDHG6V ZW!M;?pZwoyRR_?e44$rjF6*2UngCn`P{IHJ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/half_selected_disable.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/half_selected_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..5e9add3de38f3b4413c1f394bf04a62543c8c520 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|W_!9ghFAzD zCoB*!X!;VrtLpgY|NsAQ{%8DWy5cb#H@0KyJv}{{RkyTmAAF@BxAX6hOIvrx9m!x@ zxwGc&I&%;Hn7^&s+y5Q5bTLY(n$Z!`A1ujjCOPBfiy}6wtOo|pV#{x^E@m?@Na$tF zS=cM{=|s*e7A1|`=1JFVdQ&MBb@00YulhX4Qo literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/icon_down_arrow.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/icon_down_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b77c3309045e2e000764e46990b449f20bd344da GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xay?xfLn>}1r5s@X_y4~>!xEl`AI!?ik6GD*7%woi{}HcqhOkJsw3 ysZ0=Bz?d=X{A6M6-xGNX7N|rOx=A}UFfs(aex_siB#8-VF@vY8pUXO@geCxO{Xr5%(GQ`zk9!uLS~AsQn;zFfp39xYDT6>~zjAN>wn`Gt*5rFf&&$x70Hx^| z#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr>m4GgVcpix%w4} z1^R}12Ku?VAb){X7ncO3BAkI$b#X{#L8^XGYH@yPQF1C!xiU;MFzoPK1X2iejg@~< zCNNSGb6oP1OLJ56N<3X`m4GsODVZr&mKG+)X~yQ3x@jqC#=0iPX34siNr_3i=H^Cb zCP@a#$wr1IFmtf!H?=f&GO%zmHM2A~GcP;hnz$GU=sZ(?$09!O9V z6j2a=yQCInmZhe+73JqDfJ53U6N@W|3jv7!6mmmQALuB3P;x;^J}@C*nglW7nE}Xw zXQ$LWU>+(0W){Z(|Nj2@{p;tC@87({PcxqRv3h4bgmo;iK$# zu35cm<%;FYmM&SmXyJnS^XAT(J!|HS>C>i8nLKIYg#NzXp6;&Bj`p_Jmgc6$hWfhN zn(C^`it@73lH#Jmg8aPPob0U3jP$hBl;otug!s7FnCPg;i14t`kl>)e0DnJUA8#*D z4|g|L7iT9&2YWkP8*5;4GdD9eF*Y(Z(AU$|(bm$`P*+n`QC3n^ke8E{k(QE_5El~_ z5f%~@;OFDz;pXDxU}s}xVP*mrIf_47SUDJ27<53T5~#ppV9xf~b?2YKDbLk=!#I47 zKj2|7iBk@1Fw=XgG%tA7rum-^ZB$z`t2Ta9@5`f}tTHYWiYhO@RB2ox^5~80lHg@! z-92UD2O1vSn9!ujP?+#kb;;uA9#uSfyU%7=9IlIB{HP|cP@*xqHKwDptCJI9KMMmZ zgBXJ#(0(J2T{?#hoYY^}@J72%m$+rtm?TiUFvZPLYu|>gTANw!RK&Vl$o+Si_jYSA zL&rhaz$r-HU}a!u5M>Ym8l&SOvhbh4HnI6DHm_Qp`7}zSFXgAf84aE{3Jd0K+qNL{ zz6B?P<;KrDf~8G64T~QUcmM2)S?f@ zZU?2$_8Z&~YItoU*vByEhl1AQ3q>}jsz^R!2l_|==okiOeUDut2L*O{+)g%5`jW7>m>%!z643vChKE^Xx4=Em45eu~Q&^Bgg##KY#=uyS(sR=gpKMMC>(~HuZzg@ru69Sx24i;|*pgzv}adI52~O!5RRo Cf`a1! literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/push_down.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/push_down.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb88eb00623c089746c083519b9828c87c5cdac GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4^?SNFhDd}brzi*+2(9dE{P^SJ zV=fsP8F?OFUi*a0C0||yGVAHBWAAbAlhsc6@!x*l?C#Tou^%r!J}&(4|9|_&nG-KE zf4^?ABDhDd}brzi*+2(9d6bbfeo zu{*ECj2VB{>gq~Q2>R0Bm}sx8{Mfzi|Nrl|Bcjz0i5wO^Bw}c2C|Xolkn`i$ z+uMw6Y;B(njwZC8=vt$zE8cMA+Px$K1oDDR5%f(Q$0!pQ4pS4pW0+Qdkbv?sRXeINGc0+0}C53Ac&Qv1iXNahe(l1 zgcLSu)7p53wbC`?e6yKlb|DeXKr-{@ec!zKTcQnx+x(M}Gyy zX{+<_dc#HJGy)vm7pJ_CCn4I8Ah#9#E*W3WZu6Jmt4xsfsb>;t1a)AonKdCAcn||y z+GR0c^>R&K8ptH2yo+)Yd{%QvJ7q*y{T({%ZX0DX|Dwm~CzXpT0v-ZKPj?D687{Rc zkS~sRX|I#n4>o*J&}5ve03rwR(qCTZ^9gwd5&I|G0$|ROg__&a_BqFzh$YdQdQL*a zAYO_$(eI(bF^#`X#%LvAp4c!As}uS~6a%cUblpVTEZs0H$*K@`7q$>M^)Aut literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/radio_disable.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/radio_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..1de4dc7bc57e8d5d5e77f76e75f414b02f78f4a2 GIT binary patch literal 371 zcmV-(0gV2MP)Px$ElET{R5%f(lRZwuKoEsz0E>XlPh*P;8mL@w2M$09Mee~Nau1r693Xc{;R+f$ zWH;;lj#q<9PRQFG&Vb6gh3%w(?fjv!;1}7SZ8(eme1x9)MZZ+@)z6?+mtm zeQy7leM(hTjWK%ZAr8Q`zvSgU%hIDoW={fAmetdi9Gub41_gTN+N;cH(V)e{w*wes zuIZVBkcE~01c260$N@r3i!@yecFv3{bfG01=(`qdNSJdd0IeP0xCf9h zLc)kvEi`EH^nfm&IwT~^Ak@&1Mjz=uiO|-HvcG!&Gudn~Ue1^OOy2kJ{RhfbnagIf Rij)8V002ovPDHLkV1klTq?iBz literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/radio_disable2.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/radio_disable2.png new file mode 100644 index 0000000000000000000000000000000000000000..3808cfbce145e52ca92d357c1ab95132890aef6f GIT binary patch literal 398 zcmV;90df9`P)Px$NJ&INR5%f(Q%y<(Q4CJ{Bi$&YGNrpN?4lsWo}qNDckm4Edx4(8L%0_2AR=_p zjXR-82i=I!#(b%HO$SC%1MSO8zArC-L-bGKGJiH(?0>9^t2N2FI(zU7(Y!`{vscfi z{eJ!yIXeOFALk<>xh9cr1SOsMiHR@IPJ4H5O94REw{Arw*&Gy4X4Zsw>_KX9B5l0< z6B$@wfCUHl2L4cUOq(@_PJT>>*#X?NEMDn(@uCpBB1+ddL=($kEpqYYvIFFHenib? z!+y|Vi-IQOZUOYglj!u9zq4tQHX#cTfxp!)0OlNtsJSdK z-H#I-oHlcePx$I!Q!9R5%f(Q!!4%KoHzb8Z5;!ZEEOH+DPdlklW-1RBn){DR=-%K~0$^`9WGs z5jAZ@mrq!>WE$Aqcvb<@{a^Z72{?Blh->&n>y&fQ6RAbpP=ju6>ZLM=!PV{r)^}2D27wz5ZN6}nYwd3rELZlmkgW= zh+JJn!Dk!M;=o#mECY+3JXZqf^H)~h9Lok49N;Sfm_+D1IaUBzaB2ZK%=s;Dnq;4# zVkB11ZwBZmJOCpd5>XGpY@C>-YbW9~1&C`Wr)ZURMr%fi5;x8EM*t%BnA~zouD#eh e^q3GoYwQ5DHj@^5f+NoW0000``8)W{8fMPalzEaqfx(briI~U?|FThvumun zRwfsqvvcbr5RQS``at2*k+GQW$pAQoeod}j87Bn#pp<&bvaAw9Jo?sIYyIAJovNzp zjl9&jCIk%SJy}0n=yRUuFGW$XG)=u5-1j|enufJ)d$I6Wd+F2qbuK%1^jJWqp-?b5 z2j?LUY1e4n^6 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/slider_active_small.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/slider_active_small.png new file mode 100644 index 0000000000000000000000000000000000000000..1c29cec8439ff877a30b1c944715e6342e57cce7 GIT binary patch literal 289 zcmV++0p9+JP)!sZKLveurlOt?lU^}+QVhG9vD zV9*204fgd$_?kh4URW;BrWxV8h|l}NF_}~BDJz5k>$-w-ZaXWbKx++M*YRtUtOvm% z679*WG|JlH5cjid2lq@G$l89z6R2Ei|;;nacn`#WTe(R=`+^ejAbE$P`( nQw%3&(9}J%kedXNegX^t$`nNtX#aAi00000NkvXXu0mjf?zD88 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/slider_normal.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/slider_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..8a611ffc9c6dcac5b568adfaeb1bfbc25466fb87 GIT binary patch literal 425 zcmV;a0apHrP)+h#?>6;X#}R{`i=y~Qk|bA3UH8seYyI8#eUaz+ z7hBY9RH`sdgDGW?Xkj6vn&&7nhKY|I;=+>wq1gQ zXCD@h*A+_PcAF&sPUOb#-$b zZJI{7!m$qPQHOYHSh6IO5sL%(>Kifk;{u`uZzKbrB!;ac43NWf literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/slider_normal_small.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/slider_normal_small.png new file mode 100644 index 0000000000000000000000000000000000000000..7bd6fc789790cb7375507adc4f177c32d1140f21 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa&H|6fVg?3oArNM~bhqvgP;j=V zi(`n!`MHx0@*Y+YU@=$w^nR5^r&Y`(??O(!gL&+oT0aycXZvqB=TfMk{4ui3Zi516 zvDzeQ`CBHZ6RZKGyE&7-Z-Ih#YU{GQTZ7n``?HRl0EtQr6 zFIK_E@Bb$8u2`{j($hKbkLLG0uF&t|h}y(>Adfk8ugK}gA#dvI-Op#~z1}!EIyyYK dJ65@#(QfsRs2WtU|6naRMw=*-B#U;>i=&%khof#Lt&=YQCz-`PI-C$b(C1FU`0Y?zoB z7Bl?+zxh8C<5Ctjma8Dee}4VZX8iX*nt_qgSL)xN^p#uY?SdHsHvp`ekzpzG-~avx zw#~kP&1cKK!m?L0^G;&@|KAg42-pCyvsr)MVE*$z5SQlPo}Ts$|NpOA!^GD#jYXj3 z`EPa&kaxfa*!rdwFfjaAI=p#y9yXg{ni&`w!&tX(KWOWlI*EaS@!sLhvnD_dNZ3_?Sjk8Xo8-T7EByZ!NX3qGJvF7mRnZ95H?0nOoGjTAh9#}o?3$g*&G=thHh6FlVAi|(7Utkbj@* zV4;mIMjX6S4gRt)u1ASRkiu}EB)8v;jN3#1e$I>BwrVO)&CHA&|NUo(KDuSr5s(^` zqzp3T857G)d`bD=KZaPCW())1sgm5xL{82I0Kg#e5fI=pDgXcg07*qoM6N<$f(qE; AcmMzZ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/trans_select.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/trans_select.png new file mode 100644 index 0000000000000000000000000000000000000000..ce061d9aeab881b2c14577c0964537089895afd4 GIT binary patch literal 456 zcmV;(0XP1MP)sQIW%`Pl1mieEF(V2mP(F7v@{|w{5|9juQd^P>fWYwR@dQc27Z~0{NpNU~H z!+*xjOpO1Qa{S`E3R3)o?UVMu|4h*gjQ@S5zCBIf(4x5uW(eE>kmi4kj7u39{`jA+ z7QBGXXNyv%WUrF)nZ)w%yC=*LumK=v3rULK`2YWJATG_nJw5Fi{{LUKT*jwqic(z3 zyXP-8K;8ixVBYev;6Edi(y40RJZv_@G&3+VhOutne$cG-^CZUq|L&cv;hz9Dz^v`l zW+sOJEhnn@Pof)ut{Eh6(e}~&9|L2}sVY8Sr~#j!bN%8`J>nnCgo4gYz* zv3;NHaLh&;t<`jXC!g^+Z0|QU?od zY%yZm`rd$%k$F8zG=dZc)LeJ_!^F8g?AeyQxH&mfacO2?WZB5{?|<~k8onbSH7H3L yWXLlv>6!SFGUGpnSeRxE17N9=?94`Iy7(6n1aN=b5|H6|CyKm2U{n(_PHP+DR{w*K=ncY)szg$sW^T@zaO`=)i z);ayT5~&(l9-A0k)hEi#if%CHbLey77fboK(AT*03%gkAf{+%zoZ8D5TK@@q<(lv> vI+)66nb>DOi8ED6C(vBWM2gATkcDA`w8i&)i^=Rj$1r%h`njxgN@xNA&1FLZ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_collapse_2.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_collapse_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6d807542f35a066a1e11c7d037f2d6217e3b3098 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|7JIrlhIsHM zCrGd^R&>bZFnDD2;Ka%9|Ai+PcHf@y`msqnYpkKs{aZf#GrOnOez~H$=8=J;nnbh2 zt#kTwB~mrAJT@`7s!x=e72ROY=g{ZEFP8Fep|A15e=~NMBs&*vsb}tBPHN5&Xy|mT z$WYM`UC11L-=t*W|CS)>v&|U=kqq3$TP_?qeN_5ni;-a5zQ^QlBMR3Zb@Vbrr5UI>*>rPCV0b`nb&Th z`14v?)rpujZx%1tOB8MAoHV8D&7Vt&zdDwAZfeK~o+xtZ4%41Oh9Zut4GN$6b7ygu zX={|Ky8kwBusET~tHu`A;@1!)Xtm+1ue10se~qmdZ93Sdvu-eO=l83r*)!2cL-?Wb u3?0iSB2Lp75625zI-2a5^m0LuGJ}k>*J+#0S04c#&*16m=d#Wzp$Pyq@?CHM literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_collapse_4.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_collapse_4.png new file mode 100644 index 0000000000000000000000000000000000000000..42d2a1ef86bc5eb79ed1fe1499d25f992cb4cc24 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|mU+53hIsHM zCnzwUiQToak>zQ^QlBMR3Zb@Vbrr5UI>*>rPCV0b`nb&Th z`14v?)rpujZx%1tOB8MAoHV8D&7Vt&zdDwAZfeK~o+xtZ4%41Oh9Zut4GN$6b7ygu zX={|Ky8kwBusET~tHu`A;@1!)Xtm+1ue10se~qmdZ93Sdvu-eO=l83r*)!2cL-?U_ iMM$0rOIrX31H&;s*M}wd`Iy7(6n1aN=b5|H6|CyKm2U{n(_PHP+DR{w*K=ncY)szg$sW^T@zaO``7#YnXV2-&roWKAWg@&>#;0ik>k$biV;*VSFOM6Z*&UE(Z!r?wW*{#r&D*Fb a!Ni~>z}GX+j=KqHF@vY8pUXO@geCyijyu!< literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_expand_2.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_expand_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ec715ed54bac6f45116163e11a0aa4e8bc445eca GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|x;`Iy7(6n1aN=b5|H6|CyKm2U{n(_PHP+DR{w*K=ncY)szg$sW^T@zaO``7#YnXV2-&roWKAWg@I&UjFh}+mnp{Yy#{@*e)tC2seMY;1Qsu#3taC>uk@L z@s4@VL>~>|g|5<1W1fgO?aVxUiKVEizQ^QlBMR3Zb@Vbrr5UI>*>rPCV0b`nb&Th z`14v?)rpujZx%1tOB8MAyksNFTg(077^8;F+dr2Q4|Y1r-!c)_Ve^VTdGQ~w0$-6= zb7!OILg57=E<6fTZnf3PT)4wtp*%A{&8gqK>*op0mZZaN%Nd`r2%ZfVJgd8)GKPsE Y_O8cM^JRVUKzA~Dy85}Sb4q9e02#YfLjV8( literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_expand_4.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_expand_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f166471812cf745ed3a5fc73a27314c156694948 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|`aE46Lp*qs z6BHQF#O~VI$nrE{sn3!ug;3kGx(Zhvonve*C!Xmzecs(K?oYorU+kS@G4jhTbzXE$ z{CO>{>O{<%H;b3+C5pClUa}G8t>yl3j8Q}8?Vn4D2Rj|*ZXq literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_1.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1eae66352bfd9a5ebdc32d551bed9b36146a03ac GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^5)+59|4pWT&bstGbNyfG9`KEV6F6=*1fr>mdKI;Vst0N&jwP5=M^ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_3.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4b8c500a807d1d42d85f97aaed455fb6f75de91a GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Vmw_OLp*qs z6BHQF#O~VI$nrE{sn3!ug;3kGx(Zhvon!uHsPKQ}P&xMViHni4A=}|A2Xs98zU4D? z9{izTW@k9TCXnH#!y=O&8`mc+f@i&hXGI$vdQ@pLDO2bn!=5;)BeC-)y#U(7;OXk; Jvd$@?2>>(DH#z_S literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_4.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_4.png new file mode 100644 index 0000000000000000000000000000000000000000..25be9ef045335f4f327aa5848beabdc0ca82d906 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|{5)M8Lp*qs z6BHQF#O~VI$nrE{sn3!ug;3kGx(Zhvon!uHsPKQ}P&xMViHni4A=}|A2Xs98zU4D? r9{izTW@k9zkA?(q<3#}=(a6KdaQ3ut^1*yLko^pvu6{1-oD!M<6Z|f- literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_5.png b/src/main/resources/com/fr/fineui/dist/images/1x/icon/tree_vertical_line_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c9a5754ac0240d69b387e5b9e80a9c7baeb8b290 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|Ts&PILp*qs z6BHQF#O~VI$nrE{sn3!uh0wn%SXrENOgh|}I}$hqLJoKYuuftM>h5}y@t;lQ?cy^R i1tfSIfy4#@1_lKSw$9(%*cSrLWAJqKb6Mw<&;$VQn<=^g literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/1x/icon/wave_loading.gif b/src/main/resources/com/fr/fineui/dist/images/1x/icon/wave_loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..1434622179ad6ced2f681c29314860038e5cad31 GIT binary patch literal 5552 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 Bm=gd1 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/background/auto_color_disable.png b/src/main/resources/com/fr/fineui/dist/images/2x/background/auto_color_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..b61713005f547496336ce18c53b766ae241839a4 GIT binary patch literal 1625 zcmV-f2B!ImP)Px*6G=otR9Fe^S8s?^RTRJX&D&Ys)pRRmU0rG1T~~K?twa?37euCzrczOT$PX11 z;-@}T_{D{ivLM(f=t~fS5kZNY6f7b^U&MkP_3gUO&JMJoC55@U>uk<@r{C|s_lD=} zd$U6y!wWO_+;h&o_uO;Ox##z^sE5ochptsoj1?ss zbYW<0n~3`fj9L@U)LIuopM`fuJw>m`ZBcp&yatac=*#l5u2Pdq>koRm+TX!EH{{RO z#~PF!%Dpb0^kK3cEO1_>QtvHZF!zU+mX@icMF*YSBU;oe@aC(~sWW<74=iY~pUY%2 zed>05_OEeDiB7CWJI-i(Nl72p*=5$z`iiaW?cLp( z->S_sx>1F|GoJ>$Y@JT+>F#d(HL6o94Py|0qwjhmZ*dNS{#-*^Z|~^nn69>l6$(wv z_}4@hj9Iv)nlXdU=pkIubsXa5aE)jWk9s}b9dBEfdXsz+wQ=f>d=}M-qm4m44Febo zHm}L|%;H;d6UcKMNo$c_?6OFC>PV6v`8{1LkHNU(q{UMQvd-96(n-x2 zKaiON#p&_NwgiH+)gHZYvZusc7f$=LdSHGZ4?>x^Zq;j}j<)n^ql>s39xgmYy0X!r z7BX25DutEfk&&wpB7JxG`s&2G=H^MbXTaB!Sq(~w6BvDe+5;NZ*4qenI-9x+iCw z7e1hJCh3W>iGlyTSwyf&1Hl#cJjjis4cMma9i7s>J*(S)iONZ5FXeWk+YJP{b9{V! zZY8c}MQ}^*dcLAstdo`V!?9&10t1slq(^WS3d_CtwF~KfCC(V?h3U_O-IyruD9;TD z_m2BMGZ7xXF~2dDSTA{Hihvw3GzqdUKzfEx8Su`dIMfQ#XkYr>%>OX`DS`g(sK(%M zem@TTq~U3OG?NhYl$(vs*8u=I892o*B0bVJzX-pvuNo9vdzX$OI$3%JrSEPw1Q=%t;i3d4OYWaMA z!QcP5TN`aXK&VP%#Pv?YJFUEdRGqzfP3MYi(tPsE264bQWMZmx4#urCLLfbYtE7ye zPEzAF(KCD+;9X!+>zRjFw|$eOAM)=qh)l;RG?&z!lUQh@Q3BEsS)42n)9(j&Mco*{%_)n=h&ZTc_4A6@$%ea{2`OAq`D X+kuA@0HN6200000NkvXXu0mjfWhW%6 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/background/auto_color_normal.png b/src/main/resources/com/fr/fineui/dist/images/2x/background/auto_color_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..2085e7c23f27822d6e152b81e966aef9d2872418 GIT binary patch literal 1651 zcmV-(28{WMP)Px*ElET{R9Fe^S6gfpRTw`1?6!1qp%OF!iwHtA8kL9=Ye1^uA|!%9v{4_#hu(ld z++A8KzHAeBxAa0y5h9BrF(i0PlyFH*2oVz>Bwl$lh>{pWy$}U#yHGmw`~7Ejrqf|( zcf+IMB<(r>b^dey>yj#SZP=Q6WYnZJU|)#88YZ5OeIh9}z)Tm2)K7p9N4e^FUtc_j z^Gz-23tq`28v~a!>n-9pnbn+N&M^uU4lAMqR2AvSregzRl=4o21~n%-7n^MDR?H8% zsz_ZWR$t(QXYnEzSaD9Vn$F6oA?C$^XO8jGkW$pWymro8_4W0pi!X5~Xi!r;y#dPm z@hV}FC!%i*Qk^_$>gU;H^Kg*PmU!k-ldJ}1Q6uClG#}CN=;TQK+sW9aAUQAo27?+B znI2_X31NaEe=37FXS=t5f-`#si=8*dGIOshs~-X@^Loxygu-=uy4!v)CZ~D54DvD- z^Paqt(^O%s&hBXc&C65nS>o^fOrCr@@T@FyN$xHJdXF9UtX=%wp- z19!;J>xB&gU+LxKc57;P!XI=SeTkf6n%9?;=G9Y&@@T zXiY!m=kdbYAW3aEnBV&s06N1p#?M@MLnApYDaV zK~iTlGqOnn*vnAxY*{al!?U$^9P9%mGo6=&7iyd1sU4VTG}(SQq2HpP#Zm0>;n_O(rfk$4nOM|j1L*b8vEu`o(&Cax-CAPCBNL29AkxIAO zGFgQU!t?2Pz+Q4>0M9G-2kFaqy0+;Huu+M)AT&?LziW0p23S>HJ;m*VNDMm;eY{94 zrLAU*ruk^&z@}}TGcorp6eKe7phL{|ZoP=t{mO=myY2ko#p#Y5l(?_u;&2GdaE05= z2Ez<5;fC|5^^&}T;E`qhjj>dp%fo7dJ`+Fvdb02Kpw4cvSz|dup~40s@b#pJEaSxv zZ=oHrlXsUkD1uHN9s9FK4T-PZmEq?K$!i>Qo$OM-C^F?-AwH?phlPOnm?`s2A*SX; z`a!(Pygcm)DPxoW&rN@(z-&X!(*+dod?KjCgk=UERJmc?cA_4xl-lGs%48>)K{1Su zeZ6md=jUmNrB(p93T0tMEVeV^pR1)Kpn*RoSBKvNJHDX>F$3!lVA7M}%KtHhjxL4> z<}>dVFh=;D^p}hM8yZ>e*I_Ah2aJIV`scREk-&bbo2v}u2DlZ)_Ux)a5HjhgO1-;PqhwWbn)GY|yaHT!z38Y~QfscNO zMjEQf&ows9`#+!lcCRAVO;_kmvCfAri{F(q7pLH3wwLFe;UN^;Kvyx$c?RC)2@$> z9zr}lp_wr0fhj5TOgX==B%36F-I&44gh;(wjxqAR8w?WU=KlT(xpRYi;kxw#+Y7^$ z%ri#lD23EnX_V5Nq#Z~FM)|I@>kLV1YrPUP;-&=a)e|cml+tht#xqa z?2_8xOG^NkiW$GYq6Rt4G6UPx*8%ab#R9Fe^S6ysWMHHTMcU#!@E=Umr7V!t7(WpcX?G_MfOq3=T!3a?w#6*o6 zf(fVv>Pt!7wp0R14JN*r7!!<=U_&Js8$*o<7BrDJqbLavtq_c)yW4FGJIC+L-PzpU z-n-lQXqcp(nRCvZd*;k{ewNe>M`Jqspd#J?@l~u;Juxp*ifWYN5k)jiihjlZD9x@J zIK6}NGgLcGjHXe1gbrrscvo%g4j^ZoWDyf6-roM58!qJeBhTa= zrgMq8?&@;Jq|%vf4V{_G4V|MeTOIzngGdjxySssOuPqQSpcASM9B&LO#7T3i8>?0Y6~v#XgPUfkc2jrn`jcu zl=F-zyZC3O1vj22Yi3@&vMaYj)=}e@`N`LD(P803e@~R0(2YUGJOgQURsdY?fZ=I+ z-Y-+oywSf8t|c;&COU);pr@MB*~f!2cJDNFXP0ARlAeTirD$qC$S&m98wF$mYBIRh z89Lv#Ecr2XUlOKP{7k42hz@CfT9}gbB+o<%T6+F!ZUdevVa^DSFo3;#SM43Y$I67w zk{t2O{f0-y3xx>EldbmXe4<>^E1e~6pX;Z&@no-;y_LFNm@NBj<~;E+nFV*LuKXQ_ z7Wn7jO>Y&Nl!E|o+O~P$=*TAy- zoJ{S5GkP1-qX(=E44P%uteTq-@J&&boeJ0LA!|mAijFAm?F0--rzglqKT~Ev&ODbV z%LyoU?H>-CRzvWWAIm)zrG}W+8Xodj-8}a~m>iyrjv5A_D_aRi57kT~U z(AH^xrg?(|MQ3fTy#$H?`Zg-X#H9yT`7FT3HPT!`<<_847R*8?C$?v3ckRzXnTGV} zI?!4nyRK;u?;B6~d5g*vzP1Ir7WOP-Kl2k@sU1JZV)k!q6zr`p_K;xYAD zJWi=oZL|LfQ(|dJ$9*YAvDUhzyF+MVOrgNXBpT%fIOc4u)WVv)Viigb8Ovve;HJBU zCfJhZDk>uExv*KDNj&2jLxO>4e{4@436u5HrWhoQ=AP`r{B_-jU}%&*yoO(;+#&tU zOnzUPXc7Qh%)m3~vtFEuG3I;nFF0Cyd6sF&(F0o^47&s)`zgj>A-$iMLMgRL%7J8H zNqQ#F5J_m8iwb7sna=ET&sjZ{=4l@CACQJzdSJLc<)>F#OK2k;It9R$FcZ{O)*ve^ zJ+Nsz(dhvf;WZCYC>aWdL?^ATcx`YISTNGB7YUATcvKGch_cGaxH4F)%P5@Y>T zK`Rsr}kV+VsK4r03&T_dN z37_`#A}MZSsZ=7H&Gr{5`4jIqW3d>C;2mRQVuQC)s?}<&*X!MgmKw!nwOZ}3XY?Yx z1ZKC}8S0jW4@NQJa5(yFMK4kTYB(HbPN(w+)?NbvF1{X#MEdVndQW6J-p7BJ3*__perLFn{87XL ziu@ni?KWkzS&BxZ!L_t(|+U;H2Qsg=eY^etR|BH|J2?_?=>XzhWIK@;^%f>gUTQ@tI z0Q`Mk?qh%Y{3&r#4*S0lYA-a`9pmlA`d)U0-b2PdfxGLy%k402=K1` zO42&VT(L&GlDj^3aQzI3W72MiWRd2z24Jhgv2#||?&@>Nwa0-(p8?<`XeY@%qSsvl z+F|9N!xN+D%jk0__^$#&)Mif=S7ZRQv64)x1!a}BWPb#6DBzBbOoN=)ipEEcS4g=+ zpsUxYjJLpmRz_h9ud`jES2jg<(eEaBO&0;I94z_H%J4X_Pq3o5F?~BiW5yHg0J)}+ zf{q0WN_MVU0oe{1Uzrpmgk``~fmaF2w9RB3n?5R0mg$q(Jem-?T7*o@o0;DhzoT)@ z6e*RX{FA`F!rUk2{PwRkS$vnGmIyt+`QK^VS5H~(SkblEi;T?}%1N2Gq%cPf3{h8u z81*%x*sw&TI7Zfrl;>lI5hz$COG&y$&hd4_7F~YB2790h>7tw|*&@=AqBBZ?BM7+G}o#g@yeCqM*xRV8|ogsk!G`m4rCkrL$z zRv0Cuu^TystOy{VkUGmJ9*|!F-ZJ6Kf}`mH?FN}Dyd^_{CoH)lBMQGS=V8N_5ocLe zXv?&-WbP^~-;g@kIv-O> zv<6Z<0LTmEsbon+t&Ulk$_Wk0_zFNWq_A>kJR_9<5mZfsC<2%qf&+y3Q^k}`tW{FF zLNA@@cb1?WT|`PiAP!9)Myo_IcT|7Au44^rNe@m8ajKL~JCFG3P<~P z3mWH(@d)!)#U{D*)vUVZ;M4PUzVYCO`KnZ;J`OS~ikkIa%4Lm5vk1IjVRn z`J~H0rv=K6l+y_iA~25pe!__pVHQwNmeVZR6e%cL#;(N7l$Mziw(A(h3vvU(G0U3> zuCka1)sjO$pXw$OjgbJtn!Y3Dov0MhY!!~$IZ<`|>a475?^2TK!&54!n%&3UD}!*M zfA=Y`H|w{{XVdV7CQv(%yE8}cND$Tuc2?dIc?zRwbX1ZB0mS+!kapK?WiWRh-!6FK zUS5y`n@4nK zFHiW9=(}E*F{?%xQXtAuB`#y>o_s=-^`hm`J%})dCO1aG{UHEe@&1lBcD-r%LeiR4 zC9x?JJJtkISg7+V4=4KO8Ms~B4^KhCk~_y%f$x0N5Q_S#vQ10k>_PzlPOXlYq$%T& z2!9=h7J1ClQ{EE-DFU!BX{!K%q7KR!CIptQt-_a`TvTYgLLQa~yGX{NogKYZXowc-J_)7z+Bz)UiOOgM4ylp6c*|RMh!vi*o+J(^&hiDpP3j9Aa_}6=e!kz z%o@PdQ@R1|0)x#V9mGF>&vOU{QN;q!`xKB$caeev#?Vc^8ZoM}eG6Y1r5Q_$#_n8x z)qf-uA7YqRfsb+!{Wk=@dP>G>x~#9;iZkt_7#6$6e0oZkVjb}?dyleMou9&y|fee8ossFdLuV^6Sir6Gr zrHvs4g|Teg9czqdQX=J}3TD?=8H)k|RiIVl+f6 z;w#!ujokq}uE6E%=CLAtRNAuh@50__Ao=coOy3ca66FtO!9kXxAl6{zr~-HAI4XQy zDbUIJtYPf9K;N<2r@Z3FZZL*BKEnX~hriEDef|N;IdkP@&ox^B0000Px$&`Cr=RA>d&+PzM~P#DJX^By5VM@vFX^cuVc*DhWGUV@7zCc3-07*{7IoQ#`` z3s+$D2Am9vq&R6BF+KK$Hjx0@kMr^L3_x0j-~Y7Rdq~792tGHzqwq`!wWE~S;A^Oh zNW2I^y_#$sdEVMHF@79{k3y++RP;g@(WovP+hQ;rbzk2C6@TAy%)&o|T>SF={jj~) z5AGkH5_6XZ!=TTvO?_o`iysMyb&fIi{S&3sDc?|DGkQP2ko-Ey^qsE?o&)44xS52+ z8!!0>^7_5=>?ESQTC3Gg&Cmf$@VnIMgzy1b@Eig81hV2G1M=YE0`lUa0*c^a0*c}x z0?Oc>2b9G-4bXvi7N867BtR$LdVp@c)c_NCYXPS4Rsu}ojR%;<8x635Hx^(EZzRAb zUVDITyw(60cx?f$@LB>~;!6j(#+M2}z!wfc!50cZ!siY^!{-V>#Agmb#b*jY#{V0D zj{h^D3izb~RlzR|s1klIplbM;03ITzb6CESOao^IYJ44SO@_scioE7=ibKbzCkiHm zZaz4{@Q;JTkSE|V{yLt+!tQ)>Fy(T(+0?82VGqei4EWSXyz^Jnqb$=l)K50DmCbDb Y0Xpp2rkVV3bpQYW07*qoM6N<$f_KO89smFU literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/background/wheel.png b/src/main/resources/com/fr/fineui/dist/images/2x/background/wheel.png new file mode 100644 index 0000000000000000000000000000000000000000..97b343d98c744561e1acb8f98d2b1a24a5bc0da2 GIT binary patch literal 11733 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/auto_no_square_normal.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/auto_no_square_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..a2482a1494adbf3ce743ee1e1af6f83d4fa615e2 GIT binary patch literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz07Sip>6gA}f5OZv>fz@+Qx;usRa z`8IUFw@jeGyqjlbSGYL7>1lOw5?JGM#mmKKL)bYMp+B|PUU7DvHIs5Fe(6-SsApWDFeyv>k({qw#{N>SlUgzx z)*DJiXN0zIQ??amP+XV)OViLU&Y6(jzZVNLq z7G3bTx8>)FGxK*aDn#f8sV(@!*K=&ztAjc@-T^FD#mwplj9&6H+g1M0GkYxd_{&Od zg-_0N&K%~K*8aGYFC$kybD&F_t$PWNLwDi zm(xU{K5U&M-*TbGzmJdR<<-jGud^1M|M%I7!p**W=Kee&kfR^Lc##k~IVs z1paPf+h3N=b0E0lchaQS*EDD9=k;sN(>TYljPd10wudf;SMPGQCaO+vmSZ``8MeRy d2pgK1rhhG3y(MU^VIe31dAjPx)9Z5t%R9FecS50VKRTMtw&7>KjHDF`u4_IgmL0!4A5sgp@idu=%O2K_5W{QiX zO=2R-ppr?3G+Ag;lM3!CM8#$!{(;blKc(1BskX(UVB1CGPtqVsXXYKxckjC|?@eYV zr3kr@++Wv2HjzENcqgLxc9}X~&Fv}`{5D_cc_My@ zL^j2EnQs!wIgja7qRyK+KGc6DhOcs2(|}Cx@co5CF(*WARb*5ItKgZsx@7-EzVGLX z1Oc$B0qM!fI{)IIBP4WKUzPwpGZpp!tnOd>#J?w*t^-~a+UAk$6rm@Twng_O;7VH} zrg5)n^UKeUgk(M&T z)EkD0>9oi72d0i4or_beiRAz&7g_#6U$GlFCjK~;qRczFfg9ztweGL<58k`9L=!@C z(8yu>mASsT+=!R~*6nj&+n2LGg0fSi{ckbr`zx$$_M7C~zh}0*oA0|;0j&-YPIu>C zSLUpSM&F{IXliVYhQo_81~E5ohw>9+18-JS4&hhlzyEfrP`ujFojVkjKV z)sPw;jzIU&0A#yOIO}%2JVLkXm_9Q6h`M(#5GC?6s|X?h<3$an0clbjT>(Bc0HtQK zT@wy5ul8~$m&t$0oz=UKBIe<}>;PGisbz#-k+8Zfkud;G#??8peXWF>o}Nx9{fjGl zB(b#2&#l~7pCA*mfq^dQ#Mu~7yd~P*)b(2DC^ejGt*?H((yBSI1vJVNl$N|uiw8K! zw!K8drd<^1q-5N$Y5kju7%?D{R(v0DuC}afo(0~v^e_pvx9dWO z!(MA;vmc~{*uIwKL$&5pLobvnE-XAR9ag7jtPVabXs>Gt_~YjF{jS3$JUV$| zbl{RE*#+?VWJ6g?MyNw|LbvBWsbF%wy_NtLvDwdj{=Jdc&VyD%XuP1k<5@JbTKrKR z&~0*{7DE)5?i*^*l6wX)jsM9I$DT1j6SF}s{ryA;zl}o@!^Exme+((UYPEQzAP4ld z^@fJ|r_SEtrhtC2DE^#&KN?AVZy= z*M{}qDn!5Ml~<-Gzm-Y$RmMi3B3obX$u&nH zv7_(PQx;%#8Ur+*GXby#-}4wpa4GnOLu#O<_q@&|CHF@Ev=Z7JpL)QSsRIOiAiD)u zjBeP?tplW@N@y}>l8Gde_=WvWP{NCpp92PaBAGO9#g&VtFrSc=kZBtjm#i+! z6dGWrR~;Y$)|VW_Bx6a`O~RM8g=!O{GspA&-#K{sKAG=3tNEn8o=ZAUU37Rm71_~D zWsFBB<QB6W!t+3-+=X#qXVC9;QC!UPCd5PoUo%|PwQPN+6Er*8X0aP zG9#Jlh^$rhx~@a1Gi+VQ^3aI&{9)pZz`kxj&7wx&j2RB2n^uT+yy`zr(N)pdT%DK8 lDZj5u!g7LY_y6nX`G2ogeysT~Jx~Au002ovPDHLkV1l(Jr@#OJ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/auto_select.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/auto_select.png new file mode 100644 index 0000000000000000000000000000000000000000..49423cac0919bd14571a9255a836b548e2934920 GIT binary patch literal 1361 zcmV-X1+MyuP)Px)3rR#lR9FecSKVtIRTRHxcA8z~0R+lLBmLDYxZ7qe}evXwG6RK}1D1vVlG-C21S_DH9o3w~gEcFYEg0>H>U)^ms-QAhv`Q1BrcDk9_ zgd*fZa?d^AbM86ko+WjMt1!md#=p0=K-}$2Uzr-9%AKg9)e7w`Ep4m$jXtILAQA6k zR=KDwkt#FOf>Jcm;kc8tLz&A_dJ?>%1No8i1Kdz0RxHL>zev#}xoT+sSnm6FQi%>c z|2D7t_Rq>G5guUX6qJb4hWwk6D4b<-esdIG1>RS*nb^NiI3821dc|2+^AmZpkL|oC zd-RPFY%E&50d?SlZqE5=7DlRZ8668+VxBzoTc7T?WFm40zzuz5{1 zy*|x{rjFiqJ<1DsnFGeSnitx3%|JBXp;Z6OaPAt;t6jY(%Je10hVItd(SxbOwL^$Uv|zdW|#N*rB`Q@&JrMTCzlf#rLr zAMVN)qu1d?1Kt~^_Bcz@(ewyPmPb2)CS&Uy*}hW39r-|)2j#2~MZvB4wW>Ji8G(4nBi`jdooeXHu4I6+>R}CESIp}iIWLBzk z2>YI|!!M!#)o~cjN=eNW@jd`fT3WYmWZ+=^(K-ThMZ1g;pG^|B_`-Xfkx-ehW#@gD zJ3adbM)E@~0G^nH|pjBuREjQ(5V+YNx~6 zfDYJp?2`&1+uPeJU}dtO=;FDTa~HuY%5)S2dJ4^~oqW^=Z0jp%ClI9-PjaV(|4HB^ zgl8;`9LG4os`IzParqZ%$s^j)qE4t3en@hSex1bhiFo>$uNQU zyj29}YF){L!-n6X7gMg=9sP4C)o0~AZkRH)h+q$N_nIS3VAqq2OYTICYi~*|yBH<} z|At|T{tv=WbS;z5zB{$wbhIc(_lfc)3IBsZpBRkN0P8^|n65B40;j(S1EjP_jSwdW zTOXD^qf6W6ZXbbwOa>pu83)alqwG6+PL>}6&MxSLZk%Du4z1b&jg$dW8j6PoAvJ+X zCQKx+-Z)?tMa$3P?7q%*bXak&d(C`;E~8WBU<1Rdl?fdPrq?kLMBp$c8OtOo`?L7% zi$@pchH~dZd`QENJs-tNR2jpf#fHT_{? zoxr|kKh2^}0LBc5(GAlRh6$8wln1?Ca&7@#6^+f-d6Xv(UY3M$OmVpX>*x7@dy;K literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/auto_square_normal.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/auto_square_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..850bdbec28aada4c63a2a1307c1de05214bd04c2 GIT binary patch literal 996 zcmVPx&o=HSORA@u(noVdEQ4q&xUaYo)tzZ$w_M+k!Uj3+|;K74}s0cj?YRPV_o_3?P z*?0&@UaCztiYPW4QSnv;KhTpPh+@^N2*rBQN~?k(exPl$Z)7)#G$M7=-L(nioi<_K zoBwZS-oDvnQ406$03k92)B;sB5bzx^CZnYA;c63KjI#xSK_yPs7uj?at0)0b)LjFZ zsjSs9FjJ8)`mJT4mI0R$_%9_SsfmMtP``b{GNZk{-E^tBWV-JFvdTLJ(M8)UqLS6M zvsDEksr)4ot;y@hSB9>wtQvrzdU_*JZeX%t#sXV1sqV*KLHJrilFBngB$bF|cqNuFY+7_NcJ!MU5WZzV4)X&-(A7fi4-!BQh}PysV=$Z6 zE>|=_P>nwXf~|Rxtcx*`69V)+5IiyT=;n$AIHDw$kAoO0h|SHdhn62>b4(KBBLq}u zBQac^Noj*_A$%zzNsV(Nh}ZxCw~cgkk994n@f$?2FAo5{nN+l^;sE;l`vdo%4!t3Q zC58ImZRpw^>pG|IJs5+d5g`aBfS*?5LEe#;$ejdPl4F8 zzX>Ct^#IgXJmd^rTRr0dQaG`Wgm^w3A%OsH>Pu=RO`p?sJln*Q$}bU7$f@JWc8GY{ z(6!)n=6V94D0;&;{5eWQP4*!L$cfR%sRdy(2|8Ig6TZ%8b&He9F#`l{9 z*9$f6_@SlrVTTYcSht}^PCF4HEAg-ZNaoK3d}O4xLi6Wj zcHYJ{KxcPi>BJbl1|S4LlQlH7X1FryM8e@?y$elq;$5-93(Trp(bwB$H-S!vYXB+C zPZet!5$_thw#%t=%T7}HO(L?JJpk;bUIuC5E061;%)JN1;%i1CZ*kS>fEvm z9qZX;nx@_C0pdtYW27|}L*aA{R{-*fo+dGFelA4s16#GAH4_R=ICXB>*$v*n&@cfk zwm#3P$L0$O?UU0rTme{4WR-^mPzS?6c)Gtf96ruB=S(<b%YZ>q(s^zTtI|Eh!vPZSQZu1LIe2#05 SJa<(900001r;P)Px$`$T2s)&n|)Xk~T-O0_t(GGqA{Q!cXlUu)l z*uhbp?JBs4lcOSZ&~{Oa*gt1p%FA8PyIk8#7R}IH^XL73$-N5%;J+8<-+;}Nb^&_5 zQ`dzufV<%DOa9Cnj6of2`{4F4^Fr~YfPiI)_#^0(ErX=i}3QxC!m^OuFsf&%_CPzDM(ML<&6j+{CIl?_Da)mwv$#$ zXcr)Od2O)tjU`7Zp;aIVr_Il2Ey$$gkweX*)+P`Ie{S_*|GW*&PksV~l#v9&-MwgW z@VAd}I7WySC>CtEsAOO<7p{>69xH%w%;MEK8>+j%C6dCG0xPqYfK&3!=d2+K9dM<< zQ?m~@k6j!i3rQ^JnfT7>Q=%chK9*jl*#}dFvC{e9{)BMEs$gdzVDI$PRfHfk<7-;rbQb1f944}e7`dLx{ zZ!G+5YlThF*(MmAMKPs-xT)|P3uCMX;B65NOkU&FjK}ufijv3t3lV+*jzG-LuUnKa P00000NkvXXu0mjf*E|R_ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_disable.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..700bda33caeea45f07e132fa8e5175fcc1b1340a GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^T<44y8IArYK! z!wvbG0(f!-dwUM0JUVqo)TW*Nqd?q|>oP7wPO?V8$cPxorDfxnm0HeES5Fi#f!f zYdP%udBHqgi1R4lzx93%CAB|H7@sv*Ch*N*hEj8xO}2kFId=JV#KIf-dd~tG>oOOJ z+gN2kZtzOcN%wg8X=g!AwqYRqpJh(c+-@7%4=4%V`2FN+&&KApE6ktyGuSXb+ZfC) UvOxC~Fkl!wUHx3vIVCg!0Dt#{CIA2c literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_disable2.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_disable2.png new file mode 100644 index 0000000000000000000000000000000000000000..d134520ccb400b5b4d2af85ccc00a384c80943aa GIT binary patch literal 547 zcmV+;0^I$HP)Px$-AP12R9Fe+m&;B9F%*VR2WCJaXfR%gh!`X+c?F-!hww#w4PSvZE=XGYJA(H;5h zy5H@Nq@Ds0=Cf$P&FgY9kDfz}DPVmG;VF~l%5yb`mslY8lD-N+Y`YxIx!1iEK;~y| zTZDGMRsgny9OrTcI6kbC=c#*cTt;pH?Xw1*939X_>(mO73joabYE`k~YGua?kvV{F zF8ACo7Wgiht<0k`GhuHspH63V|1hHYd|_0}3?Pj;h_(V$cFWZ3v?%b4#uZ>NtvPb7 z05HcbE|*KxX*Z1!F6LH%Qs4{oLSe}m@b`5HS92@CbQaR*_YY!JlMsN*!W_bz50+0p zKD`R_`hHFH_y9!j@|+m|UDeyR+pfpz&(=GDKtPNqUwTev<`CTqfFKhD#?jKQe3=~+ z0Kp~*S99pb+5rTj=@40%L(_T*5wP9>5r%VmA5S)Zy{_lj-V*~r?B(slrkQ9i(Get4 zjv2fH;Q!lW=D3GxUJ5`I4ervh6m%~IfQm&F4Y4HB2MG`EB^4Bas8o2x!aTYqZHr`} lbC1#t+FDiQtobJdegVD+#wOn4+nWFY002ovPDHLkV1fg}@cRG& literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_hover.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/check_box_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..ebbec3fda9b3e52c7c1cd2bf57a3e435561bea3e GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^T)VtxJ%lTK@v zDgAMX3{zSZBD8MK3C)LoobH|%eos6Ykl-s*t)katZScgYp!)X9Y^I`T9IS$7$4|L# zPx#{7FPXR9Fe^m$41PFc3xWAo2j|kk}zB&_YXxs2PDF7$G$h6)m)^zz#@s3=k0+ z|B!FFPXa=m8(-|x|93CVS>)fBrU3TG)3mCdJM}vA;wR}{*H}gGUj45XS=e&-?BiCS25}7tUh=O#1Y01sDM%U<8bS5ikNqzz9SFnA8q$O?cdgU0iNh( U@7f7_+W-In07*qoM6N<$f|5vw2><{9 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/auto_square_normal.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/auto_square_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..1df5c88267ef42883cd5bd0983fdc0c5b8c43bdb GIT binary patch literal 980 zcmV;_11tQAP)Px&j!8s8RA@u(npC(7X`aPu|C*S%1 z&iO7UX)wji4McR6fI6X$8UhX?;y%<3o~t+Ur8qkfNh3pcMc|K?F;i3IYlvw1)LeFZ-~f7>?D(|j&fP6mR z`tj4~FcHiiFBSp5HR0S2Rh>Ut4T!)ppd0260&&xs`vCobSR|sDyO{TAihRAc0a)e< z5v&^%EcK$Gq5wKSCK{h7V)B}r1z^k!7f5hdU@_F%)Y(#)X?-t@<^iDD?w6XIqw%GS z`~5-$GKF-;PZH4)ck8^bsqz;4S~vI|0@^m#4`($s(pz%?L=@5)e+vK$U4YG+DnGEV zQ|atRA*@Gk|8QIhcOhcY4@A{7Fqz27;HC;ub%62H1VB2Ih=mW07pF6Rf{2d(IlXEE zU|=BM{kkq^)r!e9xU8S zNwk8nZDb&bs8%v&BLkI0D+t^FCj)i=u}8gsZu1MDbiXN$#{#wh0000Bl|uO53!x?cEiV-gx)F_xruy`}`x6_`wq6gC+uj zK*0DjY}iGB2LZuFMBCW`M0^JXZUlN-VFXkRS{>w>#!GB|ny<3S0PtYhHcUW**`p_1Kbo3>l~@Rxo!Q~|hk(~7 z^>NJEb4QJMq-b!WVE}LeqWe?#?I~7*bHZU4+tZ!NAi&ukiP99u9F3wwtL!Pyli&bu zJz~??-TptcD0w+2^krC`UL6?(ygq4QsnoEe!7la{C3_Y)4h+n)ol&3E4nVzJq7J** znzWrFz)fZ@Z1{zUen*YTu9WTB~H-lffR6;fw&V*I_rmjQ5t*N1t?!fVy-#VSjzKX+SLjwcu=TY%0_m zi^=^6c-?6i&u0?&EIlWpW-K$*J8c#3)ez7E&h|Y1pW7%J9z(<-XRWv|gTSaS_!R)w zn~h@mx^=jqL_jMz+nbr8)xkxH8``%9yLm&=1d0JqCx8gk&RVmzs1Otjt{4K3iX>bP zxMC72mEm&1;|dfi!$OVde}F4CB4(JY75@)#Rjrs0We=nJllxZ`YOhMAn*7eYfvRDY zP$52!g-CdC^SQQaAaX%sswD@DTHwSC5WJJpBO*AYIF9*;r9Cj{kpb)03=e_j;XSt= zps9H9?>C6#vxxBV*R0r}xR5Z39~Um}{BpYM73c&#D*=^NN44$-3EA(n=K%0~CF!i2 zHm#k@Rxj^T$|R;c&p%)#ma~+y=PP90j$GgwoiJBiOS+b)6DrxoBwLk|UCp$Voz}Ce f?uJ^8YB~QG;g^6v8tOMB00000NkvXXu0mjfQ4zkU literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/trans_select.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/trans_select.png new file mode 100644 index 0000000000000000000000000000000000000000..afaeecfa75bf051ab7568daa743cf495ab627c66 GIT binary patch literal 991 zcmV<510ei~P)Q+iZCT=YQ5VfdjA6!LqO5%xdud@y z++tje8AhYq%ZxGZ4@KiPk|AkleDHydEntioCJ{2$+rgl>zhh3Jgm$I(-m;|k@!sD( z-_JScch2wp5Q_X@k@dkAz|L+epDB$uN}$&WumK33PC0<^2Lg=->lTn#0SQ$Wya$uPnIDr$SQtNb6c^?3oF`GOpd8U1rfus`J}A{+b>g}A6nWn6uv zbduj2cNaW{NY;^*uL8hsBC6r{0^!R~-=3EdD0C3pV8U6aQ=b!rguFh^mX-AyblFzqs z5#Y*+C*E%O-s1y~M54<5RCYQZ0B8)x`Z(w8xzDfdDO5Z`bOit!2yx`4ZQo3ABzR9m z0`3E=oyh=5?RLYM;GC<9tKM$d)1Ifr0bs;|xV@>R|GtrokMf>CRjplJ9T@=61!G|@ zH6frq;&=BI683Cy42SizEmz0iWAVSZM5_~8MY>t70Bj5CFBp<8A>zqsKs#v1do%I0EpJf&jEFi^fiDjG zwaZIQboprv#XgY|I)$R_h#aa2TLrKxo=QW{J)cY_`-Onx5x@Jx3;=IP|A{2MT!JM} z4h70?Spl#k&i0yu_qQz4;!PCzbJVZBk_iyh|0Sa8@(r3c*nx2~0K4LBujM4U=4N#r z5vQU7ZBxMjg@|VX+>Qn`PeCatRNOQLRyN^!#7#G$SsAWZoB{HdVZKK6FvLw85fkQW z#ScT=QY%h{DC;m98r)Hquf3X;YWh3R29^$^6zTGDTq+j^ei`0Zi$o3SQ!Rb4SQX}V z-9#cB(tjX=U8ct||B#vkr(-uHVBPDJVff(BuSZG%wihbiABvvLL~ zQuf^GOg@`SJfjol%4<=_^3^~^yO?B0rD#_(J7s5gt);u6U88o^{|{WijX!>^*%<%; N002ovPDHLkV1j2j)#d;I literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_collapse_1.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_collapse_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f555f807be88d8a824a60e6b776e72a604047c GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}cRgJkLo!(3 zPIu&DGURbxU11VfV5pt{@EG%sFARBmTD8TQyUK&p1T(~sW;(4n7%p+?l3MOPea*>2 zyi5WO3@i!^j2wUT8(p(swLkuO_my$_->*ekcBe(kE!BVMuaC^+|1J?9b^TEO?r8DH z*BmQY?+ER%&(Hj|XLdBxJ@)B8R1{RIB1K-f#(fLj&n)yHdg;ou{ImDA7~K32eqxP7 z?~)1Y&(7YEe(s^DLZi=Fy;zYKO}4kM#I$aTaJ|0!*NL=;>nB7pzMeltV9Tu!ToH^9 i_!&7I7+~(QZRD4GE2cc}3a2U1qYR#|elF{r5}E*Ojc?5W literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_collapse_2.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_collapse_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4a78b939a0b44967c7ab402246b929a9895f3f15 GIT binary patch literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^T3SuhKV8T)5W*^Q4i%ee6`$fh2l+Jh2ohVhBXGO6BVx)T5o@=7_QxA zSFSHEVz+XRqCB(7=L5@Pvn3p6Tx&>^Td?(T;i2aaaAXH ke@ZNHSLnUfsL#T1=d2F%5+2S+zz}2bboFyt=akR{01e527XSbN literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_collapse_3.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_collapse_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3361b8a46681280e12126d04c25c1a3e73c1ed94 GIT binary patch literal 361 zcmV-v0ha!WP)Px$BS}O-RA>e5n867GF%U&pu>~9OY#E{;=*cd;Sb#?h@M0I96a>XGJllXpC=q_x z4Fr>nLm2oA%Vd(tWas@QVYg|NuE+DWaJN!=pSJH?MjI@kws2ISwgOzA1V})M08ipX zu)V}MAGY4?-ro6Rn7Jo3tqv5$dfc|!$Ya`D5DL!C*+y#KZRQvG-*=ilI5Etm~N_-oWbMrR&YQzopr07XfQhX4Qo literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_expand_1.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_expand_1.png new file mode 100644 index 0000000000000000000000000000000000000000..484843f1ce0d202409c1cf82f16867c41dabb5d0 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}r#)R9Lo!(3 zPT$CT$UwlA_f!VQ5|NcRn$(yBj2L{kc}!Ib64>1sw4@;M=6y@=h&?8KZ|j%u{;nHY z*2m8z(7?c=z`)4yN58T8)~~hoHCJYc{Qa=!^wu?%{hBB1BQHM@+kWQ#odErJm*(x+ zX|?hmqf~(I_G^zDOao2j`BofR^Y!NU17Rn=NNtbLd~+_`Q(h>%zNO4M!PUscVq4r^ zW)p$UJHFWQO;M9M-Op_3wDkMt_l7W$zTGaDthU!+`U Q4D=R*r>mdKI;Vst0QgyHrT_o{ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_expand_2.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_expand_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d44e15d4e244d39f56975838e18455e3abaa9732 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}|2$nBLo!&C z6C_v{D;h{Kp%6vR4HHAwr;Bg-qaMm{_-eV|3dNhc3dJ)!3~LNlCn{bqwBG(!Fnn3USI3TWaYJJ_C(c$M<e zXu*q%5)vyWwBNLrV%{)8LSxpOs)kGRM7G-4Jee%8m5J%FOn@|7xHX%zAuH2jLkGtP zy;-unjft{MiPx$2}wjjRA>cbV4xAWa__Y-2-C=TxUo!d)(~ZkdSIXA zjMl_N1}r0y>fp+<3tIleIaFj!olrxvTR_$i`HGB%+(6v9Z4bFxQS`ZcxuEb#T(HI~##Hg*F?0Nv^kWIVRz?dY_er_Qs>R}@oI!dCOktJZ_ z$YLNiOx=)ALKMdUdPt&&6tR3*h@z{v?oO^4-feyM6H0pFlTgJ2qQ>F1x7<)Gz91x0;8o6k-WD0;tDpX2h0iX9t$3a$yH_EaS-P|h=9W3ys&dn?b|cu`fd3@kQAS}0nVGE9j@{J?CNQ~<8WtZF8|J`z%M(icP{wg`IP6Ugv3{dm4SY_ zUl$uXycJNry62*Vg6WYJYv;YGVt6*eclWgeGgL0trAx@>(=|qH4mU6G;kY zK6fYhJBb`;sPb6UF0!#EqGQqO{#+Q^jR%gM?|i35%O^0tVs1&&Uv)uXyp^Ts0S95HNVU`njxgN@xNA6C-z4 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_1.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae642458ad4803b062dce5e03f40d1fe0187527 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^20+Zk!3HEhJ-+J$q!^2X+?^QKos)S9DiF4+2WvD|`E4q>Bu6E=?43oHH<@G~;lShC)~6f*Z9 PP%DF{tDnm{r-UW|^}Zul literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_2.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0e43988fcee8e53c31f1e036b19b8a2e0e9e9ef6 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}(>z@qLo!(3 zUOmX!Y9PSsu$5iw)VW-18R11ESwzLn>_wJc6Bo2oT;9Dxq?GL!J&bHk%it_By-%(?65n<;9lke9>bmd#L?%(U*$>O#MG})IKCK#%f69ea*eX z+T^)>YUq52Sv|d+e|9(67k=Pgv9EWRgTc!!n_dZfOx{=+@PK`lr0le*?TPzbP0l+XkKl8sHr literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_3.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_3.png new file mode 100644 index 0000000000000000000000000000000000000000..54fd201534c9c4d2692325f64dc76ba851ea7270 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}Ydu{YLo!(3 z&N#@~U?AeW+ImMrdU#<}_{TR)dWv#UOO}gBojR`G(b{&RK9G4?iq*N-_wHX#iO+ey ziECFv!^MLW54>R6Vb7wFpyVLjo$!)TaEh-Rli3ytX9lKZ&I?DB{(D|AJ^jjF==Ls| z_{mlF@3+1>BpxZZ=l9g|1=c}4iVTfvOf{`8F%P?Y7>_K;-SmO;#)$-;#{I$zI*+O= h{7IjJ5Y-W?V0dysUn5Rk^g7Vt44$rjF6*2UngBr{T}uD} literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_4.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/dark/tree_vertical_line_4.png new file mode 100644 index 0000000000000000000000000000000000000000..60f2c0a8cf9a1a52da71a2c4c2102e86afd58b3c GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}eV#6kAsMW1 zZ*1gjFc4sHC}kJlP$s&(R5V+>fOBJj%GKo+O%;t39Om)w)R((d>Y04I|LH8xm-DwA z-u(N;G3F?7Kh~)51AkdKR5)K8ag3-{;Fv15j45-Akg&pqFb8$MU*8Yzc(vh^d(ymP zU*|5d*?&IkvEBU>@7kj|1r!__7#NvYIADx_ss&8D_++QeuRk~k=rRURS3j3^P6mglvWve^2+{vP4@(YS2> z?j_RvA4&_&5|{%H#B(q`DwICZVsL;>K|yXiqYnpj4g<1~|NR4PoMMa@&4sR4UitX) p3$M>NZdCivuQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiZnf4978H@B_&9_YY;rPV#SId{W=#fUOd?0%e?f}j2CYY hKg@slft`VojY0n;565X0M{}Si22WQ%mvv4FO#uF4ELi{m literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/half_selected.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/half_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe3379aa0b388ef41147cf18aa50078ccb4a070 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^TVg(qjD>=}g(K0XLBmAC1BeA!frb+Mv>6cdQLUenE9E-s|yR(NnXfV5+_)CM)uV*28ILOQJ-QbYUl!kkipZ{ K&t;ucLK6VB#)AX^ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/half_selected_disable.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/half_selected_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..7157ac641f9f64f668f7b5e1ac614c0615b39bbe GIT binary patch literal 369 zcmV-%0gnEOP)Px$D@jB_R9Fe^SFsJkFcADlkOAnBXhVe*MxbQ{24Dn+V1z8d2(*j<5*4&abPN!R z$M5hTCygT#h!A$;H~+dj-;=}!`1gUX0msW_3=i56!5j!iZmw~Ra6^PW3~-&q@m26t zfF;l9Xvl|>{KRZT+#$k5MD&#;-}w*`cM!o!3N+s^$TtWn5iQVg8Mq}w_5|13&WjI_ zGpyZ^!RA=GOsoQ==WXwt31uj@^ZzOYNY$6;AfR{(Jk}phXY!Pk(zEGAAMsM6vIs2* z4g?2+1HpmL9jN^+sQYfOyz0Hn&K(E>3J1)&of~FPuinnRSD@H0E=ExS_R_$=WRPkh zuUi^&EN3|7;#lzWg705U)PelmjtTZ)Yh>AWh`3f}zM3(%b1P~E_vb;LhId+gT0rI1 P00000NkvXXu0mjf4HKS2 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/icon_down_arrow.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/icon_down_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..5285f739a88f7c4dd1e874f538b18cd5304be00a GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Ghdf;zLn>}1B}lw%m>ARhzmegnf`YGg{PnY2lG9f{5EGn8lys;f8$ey zy-XslvKJayxMU_cOyyva+A^Q#^!H$0Rz}`ng~NM*W5B%S zZOk$q1r5x;-F{4|hihg{zguyN?bK(R)>LOEW?ROnn;Ygg-eXvsqhNi0^Mt#rQ&Vaf kw(Jl*rgmMXfq|LfuW&)a<9B`YfWBeyboFyt=akR{0F38syZ`_I literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/loading.gif b/src/main/resources/com/fr/fineui/dist/images/2x/icon/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..d04fdd21277e90469d8ef930254c69b23dc75bea GIT binary patch literal 1810 zcmZ?wbhEHblw*)%Sj58c|Ns9pXU@!=IWsLS4ajDI0mc8^ey$r5%(GQ`zk9!uLS~AsQn;zFfp39xYDT6>~zjAN>wn`Gt*5rFf&&$x70Hx^| z#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr>m4GgVcpix%w4} z1^R}12Ku?VAb){X7ncO3BAkI$b#X{#L8^XGYH@yPQF1C!xiU;MFzoPK1X2iejg@~< zCNNSGb6oP1OLJ56N<3X`m4GsODVZr&mKG+)X~yQ3x@jqC#=0iPX34siNr_3i=H^Cb zCP@a#$wr1IFmtf!H?=f&GO%zmHM2A~GcP;hnz$GU=sZ(?$09!O9V z6j2a=yQCInmZhe+73JqDfJ53U6N@W|3jv7!6mmmQALuB3P;x;^J}@C*nglW7nE}Xw zXQ$LWU>+(0W){Z(|Nj2@{p;tC@87({PcxqRv3h4bgmo;iK$# zu35cm<%;FYmM&SmXyJnS^XAT(J!|HS>C>i8nLKIYg#NzXp6;&Bj`p_Jmgc6$hWfhN zn(C^`it@73lH#Jmg8aPPob0U3jP$hBl;otug!s7FnCPg;i14t`kl>)e0DnJUA8#*D z4|g|L7iT9&2YWkP8*5;4GdD9eF*Y(Z(AU$|(bm$`P*+n`QC3n^ke8E{k(QE_5El~_ z5f%~@;OFDz;pXDxU}s}xVP*mrIf_47SUDJ27<53T5~#ppV9xf~b?2YKDbLk=!#I47 zKj2|7iBk@1Fw=XgG%tA7rum-^ZB$z`t2Ta9@5`f}tTHYWiYhO@RB2ox^5~80lHg@! z-92UD2O1vSn9!ujP?+#kb;;uA9#uSfyU%7=9IlIB{HP|cP@*xqHKwDptCJI9KMMmZ zgBXJ#(0(J2T{?#hoYY^}@J72%m$+rtm?TiUFvZPLYu|>gTANw!RK&Vl$o+Si_jYSA zL&rhaz$r-HU}a!u5M>Ym8l&SOvhbh4HnI6DHm_Qp`7}zSFXgAf84aE{3Jd0K+qNL{ zz6B?P<;KrDf~8G64T~QUcmM2)S?f@ zZU?2$_8Z&~YItoU*vByEhl1AQ3q>}jsz^R!2l_|==okiOeUDut2L*O{+)g%5`jW7>m>%!z643vChKE^Xx4=Em45eu~Q&^Bgg##KY#=uyS(sR=gpKMMC>(~HuZzg@ru69Sx24i;|*pgzv}adI52~O!5RRo Cf`a1! literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/push_down.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/push_down.png new file mode 100644 index 0000000000000000000000000000000000000000..88ef8d5fba9cd2b26d5f0d34ba804c3f5821d0d3 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F$05`DhM-r2B~}i3a<8a zaSX9I{r1X6-opw4tq=bPRE2qV-!brVJE0-jsbsd+y;EI*cj6qD*~VoPm98_*pYZOk zr&p))>4Jj4b``IZ_b`|rC_mS$>mmPGlH)+=yTczCbPTpGFh0XHnX%@Wj=-l@HJ%S@ z|1*rE4p}{SW8NSdd+6S-HLlk;tiN&Pf)ty=(u>-*XWSP~&4gRf@@t5t8HMCo*2s{ciQBFf{49vc;LD(+TQN*`wLE3UN*Y8 zL!R;alxe0*mvUA(C>vO<@OiVQFVdQ&MBb@ E0Ck;8k^lez literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_active.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_active.png new file mode 100644 index 0000000000000000000000000000000000000000..60aadf28dc2c394cdb027acf9fb9e1d0a1e02ff0 GIT binary patch literal 719 zcmV;=0xPx%iAh93R9Fe+S37SMF%X`)V-YAynurD(pn;Bul!PlHDq4aRD*gur2@*mgq2Pbe z01~04LMbi}iAP5opaBYWO`-_Ia%bkdTU&Ep@7hT&N|7nf_IPH#Z~Yk05gm8oy(~cM z>F%|j>D>{ZSwrR=8#)Vr!}NoRze{(u!Hw7L2V)T$wi?S3 zun$WWh&^ys^I9LX)mV;z4shswmaI^SBY-E>Dnl)n-xz(3i-1Ah4 z*=j6DK!UH<0U*iXp2q|>2?@zzIRdC;V!@GQ>PXl`6pN#=TqcCm^wRccX`)rnK~k~A z-`ZH5xC}hVP)=V5<5TOPsLG!2rO}6GJP2iJ7JCHeM}lG^)OUt*tLkv~)ao z2CNb_oD^yuJ04jpG5fK-fF%N`SWv@}lu@4T{)hdNjOYDo2mwn3phWG48g3*j(JxBF z^&qfHX8=koM_QI!5@?U?kBKIM{$czz^D&O!_&+I6`Ex94&a?mk002ovPDHLkV1mAb BOuqmC literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_disable.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf082470ad9928f70f5379f183875b2ae9e6de8 GIT binary patch literal 750 zcmVPx%s7XXYR9Fe+mpgA0Q4mJwdL4vK9wH7D&_H1UibSA5f&x*|M}msql9Jy-1rj|K zq5z2kf@DGD0-6K~;-EaR5%%t7j#sm`cO9^?S1vL|c5@%+`}RJ^A}2lEI0Nv$R=-&g zS&zKjbxtmd_zQ7=x8uER7o5C`M4sPRt-c$TJCcFTTK%DlJyww`qkz@imWbO}Tdh9* zSNp#j*!=Y6vV`p?-uv5tia}9I<2##oYDug4OFChvTkf2D zBf;FGwX2stcMFF6Io803kM(;#^3U|ED=OxfmKNQ@{Fxz$Y|-J-Pubr;@M=muNW&G} zgX`C-FS9LmoQ4%59)BGN1`M#; zS#Zob!#=Hm1rv6>qk7~418g;_Sa9Rcc@LR=g9S6Li8ZWMVt_-2ea==Jb+sF0lqXEs zXrN_%5(E0OP9gg|uQ0Z0p_3Tkc%^_tCa*BIX`z!C&~2h;yPkG>!sQjlHZ61#19q|4 z@tTK;9@{Rl0RwqR9?SGr(>DTche9rvyrRc;Uri%1pxa}cLT&1_xZE~CTukNQ?|rFEa*0Pl1y-)Pb*-- zjCrw!v9tL=t^S%@i!1c}xfN?S(evB)-ELw+il%wuoqkwq1hh(XI31=2nGDIqqyYmK zOxS5&#sC=$Ih;0ZlgZ%zf2M;z^o0QnW;z?9A~OXP5;ILoV+$fPP0P&$&zb!&={Lc9 g9zV^}8Yl1nKaW6ERs8yv=l}o!07*qoM6N<$f^~&glK=n! literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_disable2.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_disable2.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b773ccccaaf8d2bac735b50b85aecd022a9c95 GIT binary patch literal 725 zcmV;`0xJE9P)Px%k4Z#9R9Fe+SIuh^K@@*4NmCK6wqC@7=pk(-U{om7gLv{T=*hpO$Nnw7RKdHa z;z2=BBLv&#pcK-2v3?@jG#TG-mzm5?W_H%3!9(9==Y9Y7?aZ6EL?@m2UkdQH)xKFG zy5CoHhnePy)TPv)_mrYeiRpQt=;@7m?M>0Rg#a{L?T3j zu3xKd`s}>`ki6eh&%|NM=QM(>TPpKCABZ6UY1t27jr-;$?|z4jG|6F(r`ZE&GNjb&jIF~|DrLGnf053fIqhgt_Q%g(wA=YaM@K!c-Uyj* z>1Jg<0Xm#92rTlF!v(-#6C*p90f6?J=ZLb0-rV+s4Q%ts&Se0|F_GRLCVcav6tlH+ z832Qe#h*rRIKMV4joa!=jK~6z4KiU)>G&1^-qS+g6GyEm#cg?C$1(t|CZ3!l~KX*^=@^r=D?I zu^hqeMtxyPgLLi!UX|mxp_QR0N*pV5$QPrUt;auSb)!~LVp;p+>|Mp{IgTQ(czh-WZlgIxBDKYc}l$Ik;00000NkvXX Hu0mjf5)E2~ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_hover.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..5814caa36712dbabf75ba9f3a2ad4d261ed50263 GIT binary patch literal 789 zcmV+w1M2*VP)Px%&q+i$*3qoM~hI!|m%lYhJJ2}fmrtt2~?Y{SJ zZ*S+BXuAgwvH(-%Uk3vT&gz_LAsJ_(0_F=-jfuZ$cgbV##d2x)C*=Eyz62bZ_s@&S z9R-~12UN#YnR)j8O#WG~@&6TY_}=dW{I~u@h>ikCLBDEKVb6P+4Kl0QJv(d2H-7#p zG`!}71i@*&EUMUj$Se4Y?8sgEaAVhJTz88N1x(HR$D1V2NocPU*O=wj{)zmfg^S$m z24uMlPbKqZ)xRRbw^c|%Rs6^hpIe^EzqK*(wyS^^IlUo~95XFuGx^K!Zn7Vr*sFi+ zuH+j{|FH<2(WR?rh)#49(IEiKPWAdn_v8;xmd38nF$cW}yWO7?@m`hJ9_WKy#Y#{v zcPRNfyyQf@^AT9Lv7hCy#Rg16aVsW(G(6 zewzUIsS!5Zpzk~mn(PA$n8+K4jfn){kkRBMJ~ixi8<18DOkjha)BcffU_M5oN#D|5r%DC;D`iRVX@}J}nVJrK0!;S>FdQPZnb~EkPu#F4&kpS&4A>m3Y zx~WGDJLCdEBmhpvF&0r$(`I*=#gKHJYh8e|QB{};)bq3jv^+v+RH|{y7OemX^{AXh z3p0Uwj(!>eEMNl5I1IN<06d%;gcUd$m7zh+5}?RWhTqYH&S TNHE6B00000NkvXXu0mjf)? literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_normal.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/radio_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..f7eed28318676b455fdddcacc4b47321cb15b3c7 GIT binary patch literal 753 zcmVPx%t4TybR9Fe+m(6PvK^Vs0=|fQ6-(V{yFu$jojMprPWRjGj3yXNOP8iQ_|392~Itwe21G z`D;r)ZGM-H&);OLwr%rfl~#hF|NiXsjjBzg{OKrQVd>da9LWipQK z7|=b#h?S4k4OxF1>RN4w$A1I`xjQ?3dpYgJR5-|^NWC(9eT*4TT`fzY5Tw1|F&9O# zEWfGP6*0B(yHL>A(?t9uz%F~VyT;5fl+MXS`C>kr-pPlsY6_K==)aQOj=m&_ z-E%|E%nwTr_C)!Tts5o;c9O460M$;xvF9v%Rsj~6V8hXh+a{p#sR;#l&^>PjO^(3= zlf2__&v*eGGA3E#Q={6m4lu!nqrqhj^z(9ey+%mYlY3CG3Q z3uxG=5HmqP&pNn53K=10+ux-20IC8TVyiXQ%mN=^wg9#MfA{?I}u!a_QRxA jL|sVsKh2UHNALf?m}6c&&*s4j00000NkvXXu0mjfXb@k& literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/slider_active.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/slider_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cf361f74dab223ea79f7376c5716d26612c4eebd GIT binary patch literal 497 zcmVv{c$v+G)LB-^bRo3_=GIn}UN8vhccFrHx8dtf8*3yRaKB>Stq1`zl)-1HxY&* zxUOqjYA2|JjC%G+Y$%KzkH1#x!`aGyckA7 zOnojmTtQtx3#>CP7~Hngq+<*$YR=A)gIohrK{vG)*g>$U$3*cRav0s_`tsJMZj0j| zMv1Awc_&g?8k>@5hU+Qr%7O--XhFe94OLwo(v6%fAeQupDN8d%?PnB=|JRt<3-5}C n+R52S^UGz@!sZKLveurlOt?lU^}+QVhG9vD zV9*204fgd$_?kh4URW;BrWxV8h|l}NF_}~BDJz5k>$-w-ZaXWbKx++M*YRtUtOvm% z679*WG|JlH5cjid2lq@G$l89z6R2Ei|;;nacn`#WTe(R=`+^ejAbE$P`( nQw%3&(9}J%kedXNegX^t$`nNtX#aAi00000NkvXXu0mjf?zD88 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/slider_normal.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/slider_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..a81cf03879fdb60d1660d49c6d5b276301684704 GIT binary patch literal 410 zcmV;L0cHM)P)(b!!VFiLPQwH5dh~L-g`m_G)-dxzrN(3dQq3lg}(1^psU7le*KR8{mV2xMC$6+yDRo07*qoM6N<$ Eg2QpInE(I) literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/slider_normal_small.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/slider_normal_small.png new file mode 100644 index 0000000000000000000000000000000000000000..7bd6fc789790cb7375507adc4f177c32d1140f21 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa&H|6fVg?3oArNM~bhqvgP;j=V zi(`n!`MHx0@*Y+YU@=$w^nR5^r&Y`(??O(!gL&+oT0aycXZvqB=TfMk{4ui3Zi516 zvDzeQ`CBHZ6RZKGyE&7-Z-Ih#YU{GQTZ7n``?HRl0EtQr6 zFIK_E@Bb$8u2`{j($hKbkLLG0uF&t|h}y(>Adfk8ugK}gA#dvI-Op#~z1}!EIyyYK dJ65@#(Qf|96MiM|Fl%*YF7%ImeensWfjJ`3x^Z^{ zXQz&8=5xrM4u^5C=5I*zQtUcb-v)L>c zRae(ZV{GcuRxmyXBcKSk_tAqbZzfLtRO-8u1O(jFk4C{fn+QoCeD5WbUyR$ynSUM( zeq2Anf1R9!T4xY4d+EWdQY4-s@I-c8m&ge?*tRmTCmM}vH{iL#Y;S*QiuuYRV_s9Q zs)s1C)Q?w+)A0;}=3wNQ|3@b69txB(Y` zYdX7^Ol32-NYTYqBKCHn0>Q|bW?o>-^3)IZeEp9d0k`1dueEFE9P@E@ToK(HO2+&Z z6Q~3{p8zSkn@Yq26{Vn3aQhTED8iY5+ZUlt8_pD52$XHZa)ao3fZGnDoJ1u?@$&$8 zG>UUoT67sDGQZ6#H(u>p)jF5mz|m#&f1YyJaV_-uvzd{F1T^&aJJZx1n37ZtVX9b;*7|BHJUx00000NkvXX Hu0mjfFu~J< literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/trans_select.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/trans_select.png new file mode 100644 index 0000000000000000000000000000000000000000..afaeecfa75bf051ab7568daa743cf495ab627c66 GIT binary patch literal 991 zcmV<510ei~P)Q+iZCT=YQ5VfdjA6!LqO5%xdud@y z++tje8AhYq%ZxGZ4@KiPk|AkleDHydEntioCJ{2$+rgl>zhh3Jgm$I(-m;|k@!sD( z-_JScch2wp5Q_X@k@dkAz|L+epDB$uN}$&WumK33PC0<^2Lg=->lTn#0SQ$Wya$uPnIDr$SQtNb6c^?3oF`GOpd8U1rfus`J}A{+b>g}A6nWn6uv zbduj2cNaW{NY;^*uL8hsBC6r{0^!R~-=3EdD0C3pV8U6aQ=b!rguFh^mX-AyblFzqs z5#Y*+C*E%O-s1y~M54<5RCYQZ0B8)x`Z(w8xzDfdDO5Z`bOit!2yx`4ZQo3ABzR9m z0`3E=oyh=5?RLYM;GC<9tKM$d)1Ifr0bs;|xV@>R|GtrokMf>CRjplJ9T@=61!G|@ zH6frq;&=BI683Cy42SizEmz0iWAVSZM5_~8MY>t70Bj5CFBp<8A>zqsKs#v1do%I0EpJf&jEFi^fiDjG zwaZIQboprv#XgY|I)$R_h#aa2TLrKxo=QW{J)cY_`-Onx5x@Jx3;=IP|A{2MT!JM} z4h70?Spl#k&i0yu_qQz4;!PCzbJVZBk_iyh|0Sa8@(r3c*nx2~0K4LBujM4U=4N#r z5vQU7ZBxMjg@|VX+>Qn`PeCatRNOQLRyN^!#7#G$SsAWZoB{HdVZKK6FvLw85fkQW z#ScT=QY%h{DC;m98r)Hquf3X;YWh3R29^$^6zTGDTq+j^ei`0Zi$o3SQ!Rb4SQX}V z-9#cB(tjX=U8ct||B#vkr(-uHVBPDJVff(BuSZG%wihbiABvvLL~ zQuf^GOg@`SJfjol%4<=_^3^~^yO?B0rD#_(J7s5gt);u6U88o^{|{WijX!>^*%<%; N002ovPDHLkV1j2j)#d;I literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_1.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2041a0e4b348d607b21d9e0724c07bcb88de05d0 GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}w>@1PLo!(3 zPIu&DGURbxT_Jb(WzrGl3f}WiOl_K8B;9%0Iwg|jmTTcGfvgXrZCkc@&i?LwYKcoT z1B(I!BZmV6(|_-Ti?e>^*6fR}eYWQQd$Y6YGau3y%t9hhoXn{560`l*hhkJ%qlBkcfX z%_rHP)!xi3u3+_02;S^1&blk%yqRhELY=USU)R}fiu|FyB<#R1byb$NW_y^z7=Ac2 iFbOn3-R0o_fZ1TRSl7{q_dS5#WbkzLb6Mw<&;$U&wQ~Ld literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_2.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b989399c280e820fb9263ea055f2ee4fe5755d GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^T3SuhKV8T=|zhX8c?%*U);z;o@RLg8)VT&C}mhF{Cjp zoWwT$&q810M7M^QJH5@#8YE6${FfkggpF~AMN7Lv;;XhAA*G#v8MC1o(kdG6knKyizeMMmLwqJ_! z%vbmXc2q7f<5^e66C)@pvDna|)j`HI$%LgXm7`~xlZ)Hy3HomCwhk#imwj#mjhfYZ fX2n65HU@@y`MN<-p|Wbguww9Z^>bP0l+XkKFHnL9 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_3.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_3.png new file mode 100644 index 0000000000000000000000000000000000000000..24eb8e827a8af155174485ce88ef67300c92ba0d GIT binary patch literal 351 zcmV-l0igbgP)Px$8A(JzRA>cbV4xA0yL4j%2-C=TxUo!d)(~ZkdSIXA zjMl_N1}r0y>fp+boV@rS&Y>d1#$2Cdw}7l4@)a2ixq)bHrbn(;6n#feT|(iL${F%8 zKr;{6`K2>}Fs%X2JV0xQ!^|J`04yX1iXM%DfeLw;y=2z|FarpcG`QpsZJG%)0!+h3 zFp{JF8;~Vn;>cnkHcZ`+PeLTOKVWSkLNzfgH+jLO>h2? zj{%D70bC(YsPw_5k5uuI8w0TNo751aw)!C-1Jn)>xOt=FLhzs%WsHWvXb22Q2#l6O xLr002s(H!7Xh*Y5xT002ovPDHLkV1hs9iTMBk literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_4.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_collapse_4.png new file mode 100644 index 0000000000000000000000000000000000000000..242f034da4c42de73c91773d5d6af4451a115be9 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^T<9G)(YAsMX6 z2@3>g>@G=W=D2*KV#h|Gf@=b)Jyi({l=Dp3*sR#x-pcbfUKCgm$kB7{hzpyJ^2ApU zPW8>%^F#jJLZ!pUV&m-dHzoG8t_;nVCZ0*kl(Qj}-D!Z#uCvzv2*2@3|%@IwF?I16=yjz~QG Q3Jf3yPgg&ebxsLQ0CUEC<^TWy literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_expand_1.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_expand_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5acc590e4681f037e502cba05e5ed81ef86738 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}Cp}#pLo!(3 zPT$CT$UwlA_ms_riAo)Uo7jvuvMIZGPAu6VpyA3TKJD+^%`Hd0AK&;_zN`BFq}1m> z6c`ve92l4c8V>vyvRJXU|MTm`$CkWU|2A@6>e*@^&wr<9scql!uILo+*GJ2qzCC-@ z^DEzlhOC`i<=EGBuKHQvpqjS!{66+=PI-T8e@{L3@aKdtiiKa@Gqy8_sW`VJzrJei zz--v<{r<5-=An&$ECiH8s_cKu-S|CeQ`VYa$|Lo!&C z6C_v{D;h{Kp%6vR4HHAw%Uf1{v|m}(5tyI6&VN(1!!skn1@a5X6ukOB{=$T22X&si>GP637ZG6Vb*H(-Es|g>@G=W=D2*KV#h|Gf@=b)Jyi({l=Dp3*sR#x-pcbfUKCgm$kB7{hzpyJ^2ApU zPW8>%^F#jJLZ!pUV&}D`&@n7i)stJ!yBq^Br z+@0X>q_W*UAy+Z$`Vr-Ax+YI1Us%C@!JED6GtjJiihX(aC-gIJ%1-jC4tk;JsaJpE zIKxgk^%eOgF&zm4y;>4rM`v>MOmlK!dp}|Q2{&7Z6ramJH-WllwVqjV(4~!mp>?Ca VlfIYCHekpwc)I$ztaD0e0stiifn)#x literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_expand_4.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_expand_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e8df787d604b6fc16b102c94b6a30aa0f3fc56b8 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}?>$`{Lo!&C z6BY>0*jpd#Vx^DCe25v01UXy_M%}yeP0BkfZ0?5f?Tc<%zEz zoa&pi=ZE~cg-VBy#mrCH-mpgglc*&3&c=+~W$x?3L~7mrW1SvOJ|+3d(BKtg(Be6_ zUb!bX+*0&fRk_&EA*&-W+VN9rQxcQ?LHS qafY38@>k8Jm=-GDiF4+2WvD|`E4q>Bu6E=?43oHH<@G~-eHDvjyvf&$0 PCj*10tDnm{r-UW|@2n#$ literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_2.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3a595e50576ffc9a9cf7e6674bba6c24be46fa GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}Q$1ZALo!(3 zUOmX!Vj#eJ;f+}aWA&Daxknz0CA2?MT)>zpCaLmkk4J&gr0=OZM_n5j7@1f&1QZ;g zj2%u7rhdKj(!75A-s9&tL~lQz{dRxp`&}3J3P!Z{Pnmrw*qd|Cqs=o9^s@RaOxSU^ zKaib6ZEo1LTBb}RDdCD;4fcf}xL?%uSUDKH+_LGNu*c+!78)BEYE`AqsC=v61#}>T Mr>mdKI;Vst09Kb$p#T5? literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_3.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_3.png new file mode 100644 index 0000000000000000000000000000000000000000..878ea613b4877aaded5480f29bc913cda3aeb7d7 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}t36#DLo!(3 z&N#@~U?AeWn%k4$jWe@@oV_)%)q3^WU`TCnw)^+%@mac=Wat51%v4fzB-@cU1GPd`Kw&`Ci>s3 zEx%LOhl}q!aq7Y0^?R5PPfX%qw=&y1UJVS4Oe`D%3Jx&F2mMCob>F4VtUAbgALuRyPgg&ebxsLQ072MD AbN~PV literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_5.png b/src/main/resources/com/fr/fineui/dist/images/2x/icon/tree_vertical_line_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3c3c9c8fe9f15474fc9b0b088a266cae62d3865b GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}{hlt4AsMW1 zZ*1f|pdjKJIGNSh;grrJrD>7}c$<6YUVW-;f2TpA@qg3vrJJTKSiW~}pQwm^^7)s$U+sr*!X-laCGdOSn+Okpa1gw ngon?wSw#XI7*UDF`P?o`T8Sk|2YI*q~8)z4*}Q$iB}XMRWC literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/images/2x/icon/wave_loading.gif b/src/main/resources/com/fr/fineui/dist/images/2x/icon/wave_loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..932045e8b1ed5aca04812084696c28ea5ef1ea3e GIT binary patch literal 10956 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/fr/fineui/dist/router.js b/src/main/resources/com/fr/fineui/dist/router.js new file mode 100644 index 0000000..77ca04c --- /dev/null +++ b/src/main/resources/com/fr/fineui/dist/router.js @@ -0,0 +1,3200 @@ +/*! + * vue-router v3.5.2 + * (c) 2021 Evan You + * @license MIT + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory()); + }(this, (function () { 'use strict'; + + /* */ + + function assert (condition, message) { + if (!condition) { + throw new Error(("[vue-router] " + message)) + } + } + + function warn (condition, message) { + if (!condition) { + typeof console !== 'undefined' && console.warn(("[vue-router] " + message)); + } + } + + function extend (a, b) { + for (var key in b) { + a[key] = b[key]; + } + return a + } + + /* */ + + var encodeReserveRE = /[!'()*]/g; + var encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); }; + var commaRE = /%2C/g; + + // fixed encodeURIComponent which is more conformant to RFC3986: + // - escapes [!'()*] + // - preserve commas + var encode = function (str) { return encodeURIComponent(str) + .replace(encodeReserveRE, encodeReserveReplacer) + .replace(commaRE, ','); }; + + function decode (str) { + try { + return decodeURIComponent(str) + } catch (err) { + { + warn(false, ("Error decoding \"" + str + "\". Leaving it intact.")); + } + } + return str + } + + function resolveQuery ( + query, + extraQuery, + _parseQuery + ) { + if ( extraQuery === void 0 ) extraQuery = {}; + + var parse = _parseQuery || parseQuery; + var parsedQuery; + try { + parsedQuery = parse(query || ''); + } catch (e) { + warn(false, e.message); + parsedQuery = {}; + } + for (var key in extraQuery) { + var value = extraQuery[key]; + parsedQuery[key] = Array.isArray(value) + ? value.map(castQueryParamValue) + : castQueryParamValue(value); + } + return parsedQuery + } + + var castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); }; + + function parseQuery (query) { + var res = {}; + + query = query.trim().replace(/^(\?|#|&)/, ''); + + if (!query) { + return res + } + + query.split('&').forEach(function (param) { + var parts = param.replace(/\+/g, ' ').split('='); + var key = decode(parts.shift()); + var val = parts.length > 0 ? decode(parts.join('=')) : null; + + if (res[key] === undefined) { + res[key] = val; + } else if (Array.isArray(res[key])) { + res[key].push(val); + } else { + res[key] = [res[key], val]; + } + }); + + return res + } + + function stringifyQuery (obj) { + var res = obj + ? Object.keys(obj) + .map(function (key) { + var val = obj[key]; + + if (val === undefined) { + return '' + } + + if (val === null) { + return encode(key) + } + + if (Array.isArray(val)) { + var result = []; + val.forEach(function (val2) { + if (val2 === undefined) { + return + } + if (val2 === null) { + result.push(encode(key)); + } else { + result.push(encode(key) + '=' + encode(val2)); + } + }); + return result.join('&') + } + + return encode(key) + '=' + encode(val) + }) + .filter(function (x) { return x.length > 0; }) + .join('&') + : null; + return res ? ("?" + res) : '' + } + + /* */ + + var trailingSlashRE = /\/?$/; + + function createRoute ( + record, + location, + redirectedFrom, + router + ) { + var stringifyQuery = router && router.options.stringifyQuery; + + var query = location.query || {}; + try { + query = clone(query); + } catch (e) {} + + var route = { + name: location.name || (record && record.name), + meta: (record && record.meta) || {}, + path: location.path || '/', + hash: location.hash || '', + query: query, + params: location.params || {}, + fullPath: getFullPath(location, stringifyQuery), + matched: record ? formatMatch(record) : [] + }; + if (redirectedFrom) { + route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery); + } + return Object.freeze(route) + } + + function clone (value) { + if (Array.isArray(value)) { + return value.map(clone) + } else if (value && typeof value === 'object') { + var res = {}; + for (var key in value) { + res[key] = clone(value[key]); + } + return res + } else { + return value + } + } + + // the starting route that represents the initial state + var START = createRoute(null, { + path: '/' + }); + + function formatMatch (record) { + var res = []; + while (record) { + res.unshift(record); + record = record.parent; + } + return res + } + + function getFullPath ( + ref, + _stringifyQuery + ) { + var path = ref.path; + var query = ref.query; if ( query === void 0 ) query = {}; + var hash = ref.hash; if ( hash === void 0 ) hash = ''; + + var stringify = _stringifyQuery || stringifyQuery; + return (path || '/') + stringify(query) + hash + } + + function isSameRoute (a, b, onlyPath) { + if (b === START) { + return a === b + } else if (!b) { + return false + } else if (a.path && b.path) { + return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath || + a.hash === b.hash && + isObjectEqual(a.query, b.query)) + } else if (a.name && b.name) { + return ( + a.name === b.name && + (onlyPath || ( + a.hash === b.hash && + isObjectEqual(a.query, b.query) && + isObjectEqual(a.params, b.params)) + ) + ) + } else { + return false + } + } + + function isObjectEqual (a, b) { + if ( a === void 0 ) a = {}; + if ( b === void 0 ) b = {}; + + // handle null value #1566 + if (!a || !b) { return a === b } + var aKeys = Object.keys(a).sort(); + var bKeys = Object.keys(b).sort(); + if (aKeys.length !== bKeys.length) { + return false + } + return aKeys.every(function (key, i) { + var aVal = a[key]; + var bKey = bKeys[i]; + if (bKey !== key) { return false } + var bVal = b[key]; + // query values can be null and undefined + if (aVal == null || bVal == null) { return aVal === bVal } + // check nested equality + if (typeof aVal === 'object' && typeof bVal === 'object') { + return isObjectEqual(aVal, bVal) + } + return String(aVal) === String(bVal) + }) + } + + function isIncludedRoute (current, target) { + return ( + current.path.replace(trailingSlashRE, '/').indexOf( + target.path.replace(trailingSlashRE, '/') + ) === 0 && + (!target.hash || current.hash === target.hash) && + queryIncludes(current.query, target.query) + ) + } + + function queryIncludes (current, target) { + for (var key in target) { + if (!(key in current)) { + return false + } + } + return true + } + + function handleRouteEntered (route) { + for (var i = 0; i < route.matched.length; i++) { + var record = route.matched[i]; + for (var name in record.instances) { + var instance = record.instances[name]; + var cbs = record.enteredCbs[name]; + if (!instance || !cbs) { continue } + delete record.enteredCbs[name]; + for (var i$1 = 0; i$1 < cbs.length; i$1++) { + if (!instance._isBeingDestroyed) { cbs[i$1](instance); } + } + } + } + } + + // var View = { + // name: 'RouterView', + // functional: true, + // props: { + // name: { + // type: String, + // default: 'default' + // } + // }, + // render: function render (_, ref) { + // var props = ref.props; + // var children = ref.children; + // var parent = ref.parent; + // var data = ref.data; + + // // used by devtools to display a router-view badge + // data.routerView = true; + + // // directly use parent context's createElement() function + // // so that components rendered by router-view can resolve named slots + // var h = parent.$createElement; + // var name = props.name; + // var route = parent.$route; + // var cache = parent._routerViewCache || (parent._routerViewCache = {}); + + // // determine current view depth, also check to see if the tree + // // has been toggled inactive but kept-alive. + // var depth = 0; + // var inactive = false; + // while (parent && parent._routerRoot !== parent) { + // var vnodeData = parent.$vnode ? parent.$vnode.data : {}; + // if (vnodeData.routerView) { + // depth++; + // } + // if (vnodeData.keepAlive && parent._directInactive && parent._inactive) { + // inactive = true; + // } + // parent = parent.$parent; + // } + // data.routerViewDepth = depth; + + // // render previous view if the tree is inactive and kept-alive + // if (inactive) { + // var cachedData = cache[name]; + // var cachedComponent = cachedData && cachedData.component; + // if (cachedComponent) { + // // #2301 + // // pass props + // if (cachedData.configProps) { + // fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps); + // } + // return h(cachedComponent, data, children) + // } else { + // // render previous empty view + // return h() + // } + // } + + // var matched = route.matched[depth]; + // var component = matched && matched.components[name]; + + // // render empty node if no matched route or no config component + // if (!matched || !component) { + // cache[name] = null; + // return h() + // } + + // // cache component + // cache[name] = { component: component }; + + // // attach instance registration hook + // // this will be called in the instance's injected lifecycle hooks + // data.registerRouteInstance = function (vm, val) { + // // val could be undefined for unregistration + // var current = matched.instances[name]; + // if ( + // (val && current !== vm) || + // (!val && current === vm) + // ) { + // matched.instances[name] = val; + // } + // } + + // // also register instance in prepatch hook + // // in case the same component instance is reused across different routes + // ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) { + // matched.instances[name] = vnode.componentInstance; + // }; + + // // register instance in init hook + // // in case kept-alive component be actived when routes changed + // data.hook.init = function (vnode) { + // if (vnode.data.keepAlive && + // vnode.componentInstance && + // vnode.componentInstance !== matched.instances[name] + // ) { + // matched.instances[name] = vnode.componentInstance; + // } + + // // if the route transition has already been confirmed then we weren't + // // able to call the cbs during confirmation as the component was not + // // registered yet, so we call it here. + // handleRouteEntered(route); + // }; + + // var configProps = matched.props && matched.props[name]; + // // save route and configProps in cache + // if (configProps) { + // extend(cache[name], { + // route: route, + // configProps: configProps + // }); + // fillPropsinData(component, data, route, configProps); + // } + + // return h(component, data, children) + // } + // }; + + // function fillPropsinData (component, data, route, configProps) { + // // resolve props + // var propsToPass = data.props = resolveProps(route, configProps); + // if (propsToPass) { + // // clone to prevent mutation + // propsToPass = data.props = extend({}, propsToPass); + // // pass non-declared props as attrs + // var attrs = data.attrs = data.attrs || {}; + // for (var key in propsToPass) { + // if (!component.props || !(key in component.props)) { + // attrs[key] = propsToPass[key]; + // delete propsToPass[key]; + // } + // } + // } + // } + + // function resolveProps (route, config) { + // switch (typeof config) { + // case 'undefined': + // return + // case 'object': + // return config + // case 'function': + // return config(route) + // case 'boolean': + // return config ? route.params : undefined + // default: + // { + // warn( + // false, + // "props in \"" + (route.path) + "\" is a " + (typeof config) + ", " + + // "expecting an object, function or boolean." + // ); + // } + // } + // } + + /* */ + + function resolvePath ( + relative, + base, + append + ) { + var firstChar = relative.charAt(0); + if (firstChar === '/') { + return relative + } + + if (firstChar === '?' || firstChar === '#') { + return base + relative + } + + var stack = base.split('/'); + + // remove trailing segment if: + // - not appending + // - appending to trailing slash (last segment is empty) + if (!append || !stack[stack.length - 1]) { + stack.pop(); + } + + // resolve relative path + var segments = relative.replace(/^\//, '').split('/'); + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + if (segment === '..') { + stack.pop(); + } else if (segment !== '.') { + stack.push(segment); + } + } + + // ensure leading slash + if (stack[0] !== '') { + stack.unshift(''); + } + + return stack.join('/') + } + + function parsePath (path) { + var hash = ''; + var query = ''; + + var hashIndex = path.indexOf('#'); + if (hashIndex >= 0) { + hash = path.slice(hashIndex); + path = path.slice(0, hashIndex); + } + + var queryIndex = path.indexOf('?'); + if (queryIndex >= 0) { + query = path.slice(queryIndex + 1); + path = path.slice(0, queryIndex); + } + + return { + path: path, + query: query, + hash: hash + } + } + + function cleanPath (path) { + return path.replace(/\/\//g, '/') + } + + var isarray = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]'; + }; + + /** + * Expose `pathToRegexp`. + */ + var pathToRegexp_1 = pathToRegexp; + var parse_1 = parse; + var compile_1 = compile; + var tokensToFunction_1 = tokensToFunction; + var tokensToRegExp_1 = tokensToRegExp; + + /** + * The main path matching regexp utility. + * + * @type {RegExp} + */ + var PATH_REGEXP = new RegExp([ + // Match escaped characters that would otherwise appear in future matches. + // This allows the user to escape special characters that won't transform. + '(\\\\.)', + // Match Express-style parameters and un-named parameters with a prefix + // and optional suffixes. Matches appear as: + // + // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined] + // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] + // "/*" => ["/", undefined, undefined, undefined, undefined, "*"] + '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))' + ].join('|'), 'g'); + + /** + * Parse a string for the raw tokens. + * + * @param {string} str + * @param {Object=} options + * @return {!Array} + */ + function parse (str, options) { + var tokens = []; + var key = 0; + var index = 0; + var path = ''; + var defaultDelimiter = options && options.delimiter || '/'; + var res; + + while ((res = PATH_REGEXP.exec(str)) != null) { + var m = res[0]; + var escaped = res[1]; + var offset = res.index; + path += str.slice(index, offset); + index = offset + m.length; + + // Ignore already escaped sequences. + if (escaped) { + path += escaped[1]; + continue + } + + var next = str[index]; + var prefix = res[2]; + var name = res[3]; + var capture = res[4]; + var group = res[5]; + var modifier = res[6]; + var asterisk = res[7]; + + // Push the current path onto the tokens. + if (path) { + tokens.push(path); + path = ''; + } + + var partial = prefix != null && next != null && next !== prefix; + var repeat = modifier === '+' || modifier === '*'; + var optional = modifier === '?' || modifier === '*'; + var delimiter = res[2] || defaultDelimiter; + var pattern = capture || group; + + tokens.push({ + name: name || key++, + prefix: prefix || '', + delimiter: delimiter, + optional: optional, + repeat: repeat, + partial: partial, + asterisk: !!asterisk, + pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?') + }); + } + + // Match any characters still remaining. + if (index < str.length) { + path += str.substr(index); + } + + // If the path exists, push it onto the end. + if (path) { + tokens.push(path); + } + + return tokens + } + + /** + * Compile a string to a template function for the path. + * + * @param {string} str + * @param {Object=} options + * @return {!function(Object=, Object=)} + */ + function compile (str, options) { + return tokensToFunction(parse(str, options), options) + } + + /** + * Prettier encoding of URI path segments. + * + * @param {string} + * @return {string} + */ + function encodeURIComponentPretty (str) { + return encodeURI(str).replace(/[\/?#]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) + } + + /** + * Encode the asterisk parameter. Similar to `pretty`, but allows slashes. + * + * @param {string} + * @return {string} + */ + function encodeAsterisk (str) { + return encodeURI(str).replace(/[?#]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) + } + + /** + * Expose a method for transforming tokens into the path function. + */ + function tokensToFunction (tokens, options) { + // Compile all the tokens into regexps. + var matches = new Array(tokens.length); + + // Compile all the patterns before compilation. + for (var i = 0; i < tokens.length; i++) { + if (typeof tokens[i] === 'object') { + matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options)); + } + } + + return function (obj, opts) { + var path = ''; + var data = obj || {}; + var options = opts || {}; + var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent; + + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + + if (typeof token === 'string') { + path += token; + + continue + } + + var value = data[token.name]; + var segment; + + if (value == null) { + if (token.optional) { + // Prepend partial segment prefixes. + if (token.partial) { + path += token.prefix; + } + + continue + } else { + throw new TypeError('Expected "' + token.name + '" to be defined') + } + } + + if (isarray(value)) { + if (!token.repeat) { + throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`') + } + + if (value.length === 0) { + if (token.optional) { + continue + } else { + throw new TypeError('Expected "' + token.name + '" to not be empty') + } + } + + for (var j = 0; j < value.length; j++) { + segment = encode(value[j]); + + if (!matches[i].test(segment)) { + throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`') + } + + path += (j === 0 ? token.prefix : token.delimiter) + segment; + } + + continue + } + + segment = token.asterisk ? encodeAsterisk(value) : encode(value); + + if (!matches[i].test(segment)) { + throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"') + } + + path += token.prefix + segment; + } + + return path + } + } + + /** + * Escape a regular expression string. + * + * @param {string} str + * @return {string} + */ + function escapeString (str) { + return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1') + } + + /** + * Escape the capturing group by escaping special characters and meaning. + * + * @param {string} group + * @return {string} + */ + function escapeGroup (group) { + return group.replace(/([=!:$\/()])/g, '\\$1') + } + + /** + * Attach the keys as a property of the regexp. + * + * @param {!RegExp} re + * @param {Array} keys + * @return {!RegExp} + */ + function attachKeys (re, keys) { + re.keys = keys; + return re + } + + /** + * Get the flags for a regexp from the options. + * + * @param {Object} options + * @return {string} + */ + function flags (options) { + return options && options.sensitive ? '' : 'i' + } + + /** + * Pull out keys from a regexp. + * + * @param {!RegExp} path + * @param {!Array} keys + * @return {!RegExp} + */ + function regexpToRegexp (path, keys) { + // Use a negative lookahead to match only capturing groups. + var groups = path.source.match(/\((?!\?)/g); + + if (groups) { + for (var i = 0; i < groups.length; i++) { + keys.push({ + name: i, + prefix: null, + delimiter: null, + optional: false, + repeat: false, + partial: false, + asterisk: false, + pattern: null + }); + } + } + + return attachKeys(path, keys) + } + + /** + * Transform an array into a regexp. + * + * @param {!Array} path + * @param {Array} keys + * @param {!Object} options + * @return {!RegExp} + */ + function arrayToRegexp (path, keys, options) { + var parts = []; + + for (var i = 0; i < path.length; i++) { + parts.push(pathToRegexp(path[i], keys, options).source); + } + + var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)); + + return attachKeys(regexp, keys) + } + + /** + * Create a path regexp from string input. + * + * @param {string} path + * @param {!Array} keys + * @param {!Object} options + * @return {!RegExp} + */ + function stringToRegexp (path, keys, options) { + return tokensToRegExp(parse(path, options), keys, options) + } + + /** + * Expose a function for taking tokens and returning a RegExp. + * + * @param {!Array} tokens + * @param {(Array|Object)=} keys + * @param {Object=} options + * @return {!RegExp} + */ + function tokensToRegExp (tokens, keys, options) { + if (!isarray(keys)) { + options = /** @type {!Object} */ (keys || options); + keys = []; + } + + options = options || {}; + + var strict = options.strict; + var end = options.end !== false; + var route = ''; + + // Iterate over the tokens and create our regexp string. + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + + if (typeof token === 'string') { + route += escapeString(token); + } else { + var prefix = escapeString(token.prefix); + var capture = '(?:' + token.pattern + ')'; + + keys.push(token); + + if (token.repeat) { + capture += '(?:' + prefix + capture + ')*'; + } + + if (token.optional) { + if (!token.partial) { + capture = '(?:' + prefix + '(' + capture + '))?'; + } else { + capture = prefix + '(' + capture + ')?'; + } + } else { + capture = prefix + '(' + capture + ')'; + } + + route += capture; + } + } + + var delimiter = escapeString(options.delimiter || '/'); + var endsWithDelimiter = route.slice(-delimiter.length) === delimiter; + + // In non-strict mode we allow a slash at the end of match. If the path to + // match already ends with a slash, we remove it for consistency. The slash + // is valid at the end of a path match, not in the middle. This is important + // in non-ending mode, where "/test/" shouldn't match "/test//route". + if (!strict) { + route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'; + } + + if (end) { + route += '$'; + } else { + // In non-ending mode, we need the capturing groups to match as much as + // possible by using a positive lookahead to the end or next path segment. + route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'; + } + + return attachKeys(new RegExp('^' + route, flags(options)), keys) + } + + /** + * Normalize the given path string, returning a regular expression. + * + * An empty array can be passed in for the keys, which will hold the + * placeholder key descriptions. For example, using `/user/:id`, `keys` will + * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`. + * + * @param {(string|RegExp|Array)} path + * @param {(Array|Object)=} keys + * @param {Object=} options + * @return {!RegExp} + */ + function pathToRegexp (path, keys, options) { + if (!isarray(keys)) { + options = /** @type {!Object} */ (keys || options); + keys = []; + } + + options = options || {}; + + if (path instanceof RegExp) { + return regexpToRegexp(path, /** @type {!Array} */ (keys)) + } + + if (isarray(path)) { + return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options) + } + + return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options) + } + pathToRegexp_1.parse = parse_1; + pathToRegexp_1.compile = compile_1; + pathToRegexp_1.tokensToFunction = tokensToFunction_1; + pathToRegexp_1.tokensToRegExp = tokensToRegExp_1; + + /* */ + + // $flow-disable-line + var regexpCompileCache = Object.create(null); + + function fillParams ( + path, + params, + routeMsg + ) { + params = params || {}; + try { + var filler = + regexpCompileCache[path] || + (regexpCompileCache[path] = pathToRegexp_1.compile(path)); + + // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }} + // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string + if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; } + + return filler(params, { pretty: true }) + } catch (e) { + { + // Fix #3072 no warn if `pathMatch` is string + warn(typeof params.pathMatch === 'string', ("missing param for " + routeMsg + ": " + (e.message))); + } + return '' + } finally { + // delete the 0 if it was added + delete params[0]; + } + } + + /* */ + + function normalizeLocation ( + raw, + current, + append, + router + ) { + var next = typeof raw === 'string' ? { path: raw } : raw; + // named target + if (next._normalized) { + return next + } else if (next.name) { + next = extend({}, raw); + var params = next.params; + if (params && typeof params === 'object') { + next.params = extend({}, params); + } + return next + } + + // relative params + if (!next.path && next.params && current) { + next = extend({}, next); + next._normalized = true; + var params$1 = extend(extend({}, current.params), next.params); + if (current.name) { + next.name = current.name; + next.params = params$1; + } else if (current.matched.length) { + var rawPath = current.matched[current.matched.length - 1].path; + next.path = fillParams(rawPath, params$1, ("path " + (current.path))); + } else { + warn(false, "relative params navigation requires a current route."); + } + return next + } + + var parsedPath = parsePath(next.path || ''); + var basePath = (current && current.path) || '/'; + var path = parsedPath.path + ? resolvePath(parsedPath.path, basePath, append || next.append) + : basePath; + + var query = resolveQuery( + parsedPath.query, + next.query, + router && router.options.parseQuery + ); + + var hash = next.hash || parsedPath.hash; + if (hash && hash.charAt(0) !== '#') { + hash = "#" + hash; + } + + return { + _normalized: true, + path: path, + query: query, + hash: hash + } + } + + // var toTypes = [String, Object]; + // var eventTypes = [String, Array]; + + // var noop = function () {}; + + // var warnedCustomSlot; + // var warnedTagProp; + // var warnedEventProp; + + // var Link = { + // name: 'RouterLink', + // props: { + // to: { + // type: toTypes, + // required: true + // }, + // tag: { + // type: String, + // default: 'a' + // }, + // custom: Boolean, + // exact: Boolean, + // exactPath: Boolean, + // append: Boolean, + // replace: Boolean, + // activeClass: String, + // exactActiveClass: String, + // ariaCurrentValue: { + // type: String, + // default: 'page' + // }, + // event: { + // type: eventTypes, + // default: 'click' + // } + // }, + // render: function render (h) { + // var this$1 = this; + + // var router = this.$router; + // var current = this.$route; + // var ref = router.resolve( + // this.to, + // current, + // this.append + // ); + // var location = ref.location; + // var route = ref.route; + // var href = ref.href; + + // var classes = {}; + // var globalActiveClass = router.options.linkActiveClass; + // var globalExactActiveClass = router.options.linkExactActiveClass; + // // Support global empty active class + // var activeClassFallback = + // globalActiveClass == null ? 'router-link-active' : globalActiveClass; + // var exactActiveClassFallback = + // globalExactActiveClass == null + // ? 'router-link-exact-active' + // : globalExactActiveClass; + // var activeClass = + // this.activeClass == null ? activeClassFallback : this.activeClass; + // var exactActiveClass = + // this.exactActiveClass == null + // ? exactActiveClassFallback + // : this.exactActiveClass; + + // var compareTarget = route.redirectedFrom + // ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router) + // : route; + + // classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath); + // classes[activeClass] = this.exact || this.exactPath + // ? classes[exactActiveClass] + // : isIncludedRoute(current, compareTarget); + + // var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null; + + // var handler = function (e) { + // if (guardEvent(e)) { + // if (this$1.replace) { + // router.replace(location, noop); + // } else { + // router.push(location, noop); + // } + // } + // }; + + // var on = { click: guardEvent }; + // if (Array.isArray(this.event)) { + // this.event.forEach(function (e) { + // on[e] = handler; + // }); + // } else { + // on[this.event] = handler; + // } + + // var data = { class: classes }; + + // var scopedSlot = + // !this.$scopedSlots.$hasNormal && + // this.$scopedSlots.default && + // this.$scopedSlots.default({ + // href: href, + // route: route, + // navigate: handler, + // isActive: classes[activeClass], + // isExactActive: classes[exactActiveClass] + // }); + + // if (scopedSlot) { + // if (!this.custom) { + // !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\n\n'); + // warnedCustomSlot = true; + // } + // if (scopedSlot.length === 1) { + // return scopedSlot[0] + // } else if (scopedSlot.length > 1 || !scopedSlot.length) { + // { + // warn( + // false, + // (" with to=\"" + (this.to) + "\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.") + // ); + // } + // return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot) + // } + // } + + // { + // if ('tag' in this.$options.propsData && !warnedTagProp) { + // warn( + // false, + // "'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link." + // ); + // warnedTagProp = true; + // } + // if ('event' in this.$options.propsData && !warnedEventProp) { + // warn( + // false, + // "'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link." + // ); + // warnedEventProp = true; + // } + // } + + // if (this.tag === 'a') { + // data.on = on; + // data.attrs = { href: href, 'aria-current': ariaCurrentValue }; + // } else { + // // find the first child and apply listener and href + // var a = findAnchor(this.$slots.default); + // if (a) { + // // in case the is a static node + // a.isStatic = false; + // var aData = (a.data = extend({}, a.data)); + // aData.on = aData.on || {}; + // // transform existing events in both objects into arrays so we can push later + // for (var event in aData.on) { + // var handler$1 = aData.on[event]; + // if (event in on) { + // aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1]; + // } + // } + // // append new listeners for router-link + // for (var event$1 in on) { + // if (event$1 in aData.on) { + // // on[event] is always a function + // aData.on[event$1].push(on[event$1]); + // } else { + // aData.on[event$1] = handler; + // } + // } + + // var aAttrs = (a.data.attrs = extend({}, a.data.attrs)); + // aAttrs.href = href; + // aAttrs['aria-current'] = ariaCurrentValue; + // } else { + // // doesn't have child, apply listener to self + // data.on = on; + // } + // } + + // return h(this.tag, data, this.$slots.default) + // } + // }; + + function guardEvent (e) { + // don't redirect with control keys + if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return } + // don't redirect when preventDefault called + if (e.defaultPrevented) { return } + // don't redirect on right click + if (e.button !== undefined && e.button !== 0) { return } + // don't redirect if `target="_blank"` + if (e.currentTarget && e.currentTarget.getAttribute) { + var target = e.currentTarget.getAttribute('target'); + if (/\b_blank\b/i.test(target)) { return } + } + // this may be a Weex event which doesn't have this method + if (e.preventDefault) { + e.preventDefault(); + } + return true + } + + function findAnchor (children) { + if (children) { + var child; + for (var i = 0; i < children.length; i++) { + child = children[i]; + if (child.tag === 'a') { + return child + } + if (child.children && (child = findAnchor(child.children))) { + return child + } + } + } + } + + // var _Vue; + + // function install (Vue) { + // if (install.installed && _Vue === Vue) { return } + // install.installed = true; + + // _Vue = Vue; + + // var isDef = function (v) { return v !== undefined; }; + + // var registerInstance = function (vm, callVal) { + // var i = vm.$options._parentVnode; + // if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) { + // i(vm, callVal); + // } + // }; + + // Vue.mixin({ + // beforeCreate: function beforeCreate () { + // if (isDef(this.$options.router)) { + // this._routerRoot = this; + // this._router = this.$options.router; + // this._router.init(this); + // Vue.util.defineReactive(this, '_route', this._router.history.current); + // } else { + // this._routerRoot = (this.$parent && this.$parent._routerRoot) || this; + // } + // registerInstance(this, this); + // }, + // destroyed: function destroyed () { + // registerInstance(this); + // } + // }); + + // Object.defineProperty(Vue.prototype, '$router', { + // get: function get () { return this._routerRoot._router } + // }); + + // Object.defineProperty(Vue.prototype, '$route', { + // get: function get () { return this._routerRoot._route } + // }); + + // Vue.component('RouterView', View); + // Vue.component('RouterLink', Link); + + // var strats = Vue.config.optionMergeStrategies; + // // use the same hook merging strategy for route hooks + // strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created; + // } + + /* */ + + var inBrowser = typeof window !== 'undefined'; + + /* */ + + function createRouteMap ( + routes, + oldPathList, + oldPathMap, + oldNameMap, + parentRoute + ) { + // the path list is used to control path matching priority + var pathList = oldPathList || []; + // $flow-disable-line + var pathMap = oldPathMap || Object.create(null); + // $flow-disable-line + var nameMap = oldNameMap || Object.create(null); + + routes.forEach(function (route) { + addRouteRecord(pathList, pathMap, nameMap, route, parentRoute); + }); + + // ensure wildcard routes are always at the end + for (var i = 0, l = pathList.length; i < l; i++) { + if (pathList[i] === '*') { + pathList.push(pathList.splice(i, 1)[0]); + l--; + i--; + } + } + + { + // warn if routes do not include leading slashes + var found = pathList + // check for missing leading slash + .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; }); + + if (found.length > 0) { + var pathNames = found.map(function (path) { return ("- " + path); }).join('\n'); + warn(false, ("Non-nested routes must include a leading slash character. Fix the following routes: \n" + pathNames)); + } + } + + return { + pathList: pathList, + pathMap: pathMap, + nameMap: nameMap + } + } + + function addRouteRecord ( + pathList, + pathMap, + nameMap, + route, + parent, + matchAs + ) { + var path = route.path; + var name = route.name; + { + assert(path != null, "\"path\" is required in a route configuration."); + assert( + typeof route.component !== 'string', + "route config \"component\" for path: " + (String( + path || name + )) + " cannot be a " + "string id. Use an actual component instead." + ); + + warn( + // eslint-disable-next-line no-control-regex + !/[^\u0000-\u007F]+/.test(path), + "Route with path \"" + path + "\" contains unencoded characters, make sure " + + "your path is correctly encoded before passing it to the router. Use " + + "encodeURI to encode static segments of your path." + ); + } + + var pathToRegexpOptions = + route.pathToRegexpOptions || {}; + var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict); + + if (typeof route.caseSensitive === 'boolean') { + pathToRegexpOptions.sensitive = route.caseSensitive; + } + + var record = { + path: normalizedPath, + regex: compileRouteRegex(normalizedPath, pathToRegexpOptions), + components: route.components || { default: route.component }, + alias: route.alias + ? typeof route.alias === 'string' + ? [route.alias] + : route.alias + : [], + instances: {}, + enteredCbs: {}, + name: name, + parent: parent, + matchAs: matchAs, + redirect: route.redirect, + beforeEnter: route.beforeEnter, + meta: route.meta || {}, + props: + route.props == null + ? {} + : route.components + ? route.props + : { default: route.props } + }; + + if (route.children) { + // Warn if route is named, does not redirect and has a default child route. + // If users navigate to this route by name, the default child will + // not be rendered (GH Issue #629) + { + if ( + route.name && + !route.redirect && + route.children.some(function (child) { return /^\/?$/.test(child.path); }) + ) { + warn( + false, + "Named Route '" + (route.name) + "' has a default child route. " + + "When navigating to this named route (:to=\"{name: '" + (route.name) + "'\"), " + + "the default child route will not be rendered. Remove the name from " + + "this route and use the name of the default child route for named " + + "links instead." + ); + } + } + route.children.forEach(function (child) { + var childMatchAs = matchAs + ? cleanPath((matchAs + "/" + (child.path))) + : undefined; + addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs); + }); + } + + if (!pathMap[record.path]) { + pathList.push(record.path); + pathMap[record.path] = record; + } + + if (route.alias !== undefined) { + var aliases = Array.isArray(route.alias) ? route.alias : [route.alias]; + for (var i = 0; i < aliases.length; ++i) { + var alias = aliases[i]; + if (alias === path) { + warn( + false, + ("Found an alias with the same value as the path: \"" + path + "\". You have to remove that alias. It will be ignored in development.") + ); + // skip in dev to make it work + continue + } + + var aliasRoute = { + path: alias, + children: route.children + }; + addRouteRecord( + pathList, + pathMap, + nameMap, + aliasRoute, + parent, + record.path || '/' // matchAs + ); + } + } + + if (name) { + if (!nameMap[name]) { + nameMap[name] = record; + } else if (!matchAs) { + warn( + false, + "Duplicate named routes definition: " + + "{ name: \"" + name + "\", path: \"" + (record.path) + "\" }" + ); + } + } + } + + function compileRouteRegex ( + path, + pathToRegexpOptions + ) { + var regex = pathToRegexp_1(path, [], pathToRegexpOptions); + { + var keys = Object.create(null); + regex.keys.forEach(function (key) { + warn( + !keys[key.name], + ("Duplicate param keys in route with path: \"" + path + "\"") + ); + keys[key.name] = true; + }); + } + return regex + } + + function normalizePath ( + path, + parent, + strict + ) { + if (!strict) { path = path.replace(/\/$/, ''); } + if (path[0] === '/') { return path } + if (parent == null) { return path } + return cleanPath(((parent.path) + "/" + path)) + } + + /* */ + + + + function createMatcher ( + routes, + router + ) { + var ref = createRouteMap(routes); + var pathList = ref.pathList; + var pathMap = ref.pathMap; + var nameMap = ref.nameMap; + + function addRoutes (routes) { + createRouteMap(routes, pathList, pathMap, nameMap); + } + + function addRoute (parentOrRoute, route) { + var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined; + // $flow-disable-line + createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent); + + // add aliases of parent + if (parent && parent.alias.length) { + createRouteMap( + // $flow-disable-line route is defined if parent is + parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }), + pathList, + pathMap, + nameMap, + parent + ); + } + } + + function getRoutes () { + return pathList.map(function (path) { return pathMap[path]; }) + } + + function match ( + raw, + currentRoute, + redirectedFrom + ) { + var location = normalizeLocation(raw, currentRoute, false, router); + var name = location.name; + + if (name) { + var record = nameMap[name]; + { + warn(record, ("Route with name '" + name + "' does not exist")); + } + if (!record) { return _createRoute(null, location) } + var paramNames = record.regex.keys + .filter(function (key) { return !key.optional; }) + .map(function (key) { return key.name; }); + + if (typeof location.params !== 'object') { + location.params = {}; + } + + if (currentRoute && typeof currentRoute.params === 'object') { + for (var key in currentRoute.params) { + if (!(key in location.params) && paramNames.indexOf(key) > -1) { + location.params[key] = currentRoute.params[key]; + } + } + } + + location.path = fillParams(record.path, location.params, ("named route \"" + name + "\"")); + return _createRoute(record, location, redirectedFrom) + } else if (location.path) { + location.params = {}; + for (var i = 0; i < pathList.length; i++) { + var path = pathList[i]; + var record$1 = pathMap[path]; + if (matchRoute(record$1.regex, location.path, location.params)) { + return _createRoute(record$1, location, redirectedFrom) + } + } + } + // no match + return _createRoute(null, location) + } + + function redirect ( + record, + location + ) { + var originalRedirect = record.redirect; + var redirect = typeof originalRedirect === 'function' + ? originalRedirect(createRoute(record, location, null, router)) + : originalRedirect; + + if (typeof redirect === 'string') { + redirect = { path: redirect }; + } + + if (!redirect || typeof redirect !== 'object') { + { + warn( + false, ("invalid redirect option: " + (JSON.stringify(redirect))) + ); + } + return _createRoute(null, location) + } + + var re = redirect; + var name = re.name; + var path = re.path; + var query = location.query; + var hash = location.hash; + var params = location.params; + query = re.hasOwnProperty('query') ? re.query : query; + hash = re.hasOwnProperty('hash') ? re.hash : hash; + params = re.hasOwnProperty('params') ? re.params : params; + + if (name) { + // resolved named direct + var targetRecord = nameMap[name]; + { + assert(targetRecord, ("redirect failed: named route \"" + name + "\" not found.")); + } + return match({ + _normalized: true, + name: name, + query: query, + hash: hash, + params: params + }, undefined, location) + } else if (path) { + // 1. resolve relative redirect + var rawPath = resolveRecordPath(path, record); + // 2. resolve params + var resolvedPath = fillParams(rawPath, params, ("redirect route with path \"" + rawPath + "\"")); + // 3. rematch with existing query and hash + return match({ + _normalized: true, + path: resolvedPath, + query: query, + hash: hash + }, undefined, location) + } else { + { + warn(false, ("invalid redirect option: " + (JSON.stringify(redirect)))); + } + return _createRoute(null, location) + } + } + + function alias ( + record, + location, + matchAs + ) { + var aliasedPath = fillParams(matchAs, location.params, ("aliased route with path \"" + matchAs + "\"")); + var aliasedMatch = match({ + _normalized: true, + path: aliasedPath + }); + if (aliasedMatch) { + var matched = aliasedMatch.matched; + var aliasedRecord = matched[matched.length - 1]; + location.params = aliasedMatch.params; + return _createRoute(aliasedRecord, location) + } + return _createRoute(null, location) + } + + function _createRoute ( + record, + location, + redirectedFrom + ) { + if (record && record.redirect) { + return redirect(record, redirectedFrom || location) + } + if (record && record.matchAs) { + return alias(record, location, record.matchAs) + } + return createRoute(record, location, redirectedFrom, router) + } + + return { + match: match, + addRoute: addRoute, + getRoutes: getRoutes, + addRoutes: addRoutes + } + } + + function matchRoute ( + regex, + path, + params + ) { + var m = path.match(regex); + + if (!m) { + return false + } else if (!params) { + return true + } + + for (var i = 1, len = m.length; i < len; ++i) { + var key = regex.keys[i - 1]; + if (key) { + // Fix #1994: using * with props: true generates a param named 0 + params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i]; + } + } + + return true + } + + function resolveRecordPath (path, record) { + return resolvePath(path, record.parent ? record.parent.path : '/', true) + } + + /* */ + + // use User Timing api (if present) for more accurate key precision + var Time = + inBrowser && window.performance && window.performance.now + ? window.performance + : Date; + + function genStateKey () { + return Time.now().toFixed(3) + } + + var _key = genStateKey(); + + function getStateKey () { + return _key + } + + function setStateKey (key) { + return (_key = key) + } + + /* */ + + var positionStore = Object.create(null); + + function setupScroll () { + // Prevent browser scroll behavior on History popstate + if ('scrollRestoration' in window.history) { + window.history.scrollRestoration = 'manual'; + } + // Fix for #1585 for Firefox + // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678 + // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with + // window.location.protocol + '//' + window.location.host + // location.host contains the port and location.hostname doesn't + var protocolAndPath = window.location.protocol + '//' + window.location.host; + var absolutePath = window.location.href.replace(protocolAndPath, ''); + // preserve existing history state as it could be overriden by the user + var stateCopy = extend({}, window.history.state); + stateCopy.key = getStateKey(); + window.history.replaceState(stateCopy, '', absolutePath); + window.addEventListener('popstate', handlePopState); + return function () { + window.removeEventListener('popstate', handlePopState); + } + } + + function handleScroll ( + router, + to, + from, + isPop + ) { + if (!router.app) { + return + } + + var behavior = router.options.scrollBehavior; + if (!behavior) { + return + } + + { + assert(typeof behavior === 'function', "scrollBehavior must be a function"); + } + + // wait until re-render finishes before scrolling + BI.nextTick(function () { + var position = getScrollPosition(); + var shouldScroll = behavior.call( + router, + to, + from, + isPop ? position : null + ); + + if (!shouldScroll) { + return + } + + if (typeof shouldScroll.then === 'function') { + shouldScroll + .then(function (shouldScroll) { + scrollToPosition((shouldScroll), position); + }) + .catch(function (err) { + { + assert(false, err.toString()); + } + }); + } else { + scrollToPosition(shouldScroll, position); + } + }); + } + + function saveScrollPosition () { + var key = getStateKey(); + if (key) { + positionStore[key] = { + x: window.pageXOffset, + y: window.pageYOffset + }; + } + } + + function handlePopState (e) { + saveScrollPosition(); + if (e.state && e.state.key) { + setStateKey(e.state.key); + } + } + + function getScrollPosition () { + var key = getStateKey(); + if (key) { + return positionStore[key] + } + } + + function getElementPosition (el, offset) { + var docEl = document.documentElement; + var docRect = docEl.getBoundingClientRect(); + var elRect = el.getBoundingClientRect(); + return { + x: elRect.left - docRect.left - offset.x, + y: elRect.top - docRect.top - offset.y + } + } + + function isValidPosition (obj) { + return isNumber(obj.x) || isNumber(obj.y) + } + + function normalizePosition (obj) { + return { + x: isNumber(obj.x) ? obj.x : window.pageXOffset, + y: isNumber(obj.y) ? obj.y : window.pageYOffset + } + } + + function normalizeOffset (obj) { + return { + x: isNumber(obj.x) ? obj.x : 0, + y: isNumber(obj.y) ? obj.y : 0 + } + } + + function isNumber (v) { + return typeof v === 'number' + } + + var hashStartsWithNumberRE = /^#\d/; + + function scrollToPosition (shouldScroll, position) { + var isObject = typeof shouldScroll === 'object'; + if (isObject && typeof shouldScroll.selector === 'string') { + // getElementById would still fail if the selector contains a more complicated query like #main[data-attr] + // but at the same time, it doesn't make much sense to select an element with an id and an extra selector + var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line + ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line + : document.querySelector(shouldScroll.selector); + + if (el) { + var offset = + shouldScroll.offset && typeof shouldScroll.offset === 'object' + ? shouldScroll.offset + : {}; + offset = normalizeOffset(offset); + position = getElementPosition(el, offset); + } else if (isValidPosition(shouldScroll)) { + position = normalizePosition(shouldScroll); + } + } else if (isObject && isValidPosition(shouldScroll)) { + position = normalizePosition(shouldScroll); + } + + if (position) { + // $flow-disable-line + if ('scrollBehavior' in document.documentElement.style) { + window.scrollTo({ + left: position.x, + top: position.y, + // $flow-disable-line + behavior: shouldScroll.behavior + }); + } else { + window.scrollTo(position.x, position.y); + } + } + } + + /* */ + + var supportsPushState = + inBrowser && + (function () { + var ua = window.navigator.userAgent; + + if ( + (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && + ua.indexOf('Mobile Safari') !== -1 && + ua.indexOf('Chrome') === -1 && + ua.indexOf('Windows Phone') === -1 + ) { + return false + } + + return window.history && typeof window.history.pushState === 'function' + })(); + + function pushState (url, replace) { + saveScrollPosition(); + // try...catch the pushState call to get around Safari + // DOM Exception 18 where it limits to 100 pushState calls + var history = window.history; + try { + if (replace) { + // preserve existing history state as it could be overriden by the user + var stateCopy = extend({}, history.state); + stateCopy.key = getStateKey(); + history.replaceState(stateCopy, '', url); + } else { + history.pushState({ key: setStateKey(genStateKey()) }, '', url); + } + } catch (e) { + window.location[replace ? 'replace' : 'assign'](url); + } + } + + function replaceState (url) { + pushState(url, true); + } + + /* */ + + function runQueue (queue, fn, cb) { + var step = function (index) { + if (index >= queue.length) { + cb(); + } else { + if (queue[index]) { + fn(queue[index], function () { + step(index + 1); + }); + } else { + step(index + 1); + } + } + }; + step(0); + } + + // When changing thing, also edit router.d.ts + var NavigationFailureType = { + redirected: 2, + aborted: 4, + cancelled: 8, + duplicated: 16 + }; + + function createNavigationRedirectedError (from, to) { + return createRouterError( + from, + to, + NavigationFailureType.redirected, + ("Redirected when going from \"" + (from.fullPath) + "\" to \"" + (stringifyRoute( + to + )) + "\" via a navigation guard.") + ) + } + + function createNavigationDuplicatedError (from, to) { + var error = createRouterError( + from, + to, + NavigationFailureType.duplicated, + ("Avoided redundant navigation to current location: \"" + (from.fullPath) + "\".") + ); + // backwards compatible with the first introduction of Errors + error.name = 'NavigationDuplicated'; + return error + } + + function createNavigationCancelledError (from, to) { + return createRouterError( + from, + to, + NavigationFailureType.cancelled, + ("Navigation cancelled from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" with a new navigation.") + ) + } + + function createNavigationAbortedError (from, to) { + return createRouterError( + from, + to, + NavigationFailureType.aborted, + ("Navigation aborted from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" via a navigation guard.") + ) + } + + function createRouterError (from, to, type, message) { + var error = new Error(message); + error._isRouter = true; + error.from = from; + error.to = to; + error.type = type; + + return error + } + + var propertiesToLog = ['params', 'query', 'hash']; + + function stringifyRoute (to) { + if (typeof to === 'string') { return to } + if ('path' in to) { return to.path } + var location = {}; + propertiesToLog.forEach(function (key) { + if (key in to) { location[key] = to[key]; } + }); + return JSON.stringify(location, null, 2) + } + + function isError (err) { + return Object.prototype.toString.call(err).indexOf('Error') > -1 + } + + function isNavigationFailure (err, errorType) { + return ( + isError(err) && + err._isRouter && + (errorType == null || err.type === errorType) + ) + } + + /* */ + + function resolveAsyncComponents (matched) { + return function (to, from, next) { + var hasAsync = false; + var pending = 0; + var error = null; + + flatMapComponents(matched, function (def, _, match, key) { + // if it's a function and doesn't have cid attached, + // assume it's an async component resolve function. + // we are not using Vue's default async resolving mechanism because + // we want to halt the navigation until the incoming component has been + // resolved. + if (typeof def === 'function' && def.cid === undefined) { + hasAsync = true; + pending++; + + var resolve = once(function (resolvedDef) { + if (isESModule(resolvedDef)) { + resolvedDef = resolvedDef.default; + } + // save resolved on async factory in case it's used elsewhere + def.resolved = resolvedDef; + match.components[key] = resolvedDef; + pending--; + if (pending <= 0) { + next(); + } + }); + + var reject = once(function (reason) { + var msg = "Failed to resolve async component " + key + ": " + reason; + warn(false, msg); + if (!error) { + error = isError(reason) + ? reason + : new Error(msg); + next(error); + } + }); + + var res; + try { + res = def(resolve, reject); + } catch (e) { + reject(e); + } + if (res) { + if (typeof res.then === 'function') { + res.then(resolve, reject); + } else { + // new syntax in Vue 2.3 + var comp = res.component; + if (comp && typeof comp.then === 'function') { + comp.then(resolve, reject); + } + } + } + } + }); + + if (!hasAsync) { next(); } + } + } + + function flatMapComponents ( + matched, + fn + ) { + return flatten(matched.map(function (m) { + return Object.keys(m.components).map(function (key) { return fn( + m.components[key], + m.instances[key], + m, key + ); }) + })) + } + + function flatten (arr) { + return Array.prototype.concat.apply([], arr) + } + + var hasSymbol = + typeof Symbol === 'function' && + typeof Symbol.toStringTag === 'symbol'; + + function isESModule (obj) { + return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module') + } + + // in Webpack 2, require.ensure now also returns a Promise + // so the resolve/reject functions may get called an extra time + // if the user uses an arrow function shorthand that happens to + // return that Promise. + function once (fn) { + var called = false; + return function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if (called) { return } + called = true; + return fn.apply(this, args) + } + } + + /* */ + + var History = function History (router, base) { + this.router = router; + this.base = normalizeBase(base); + // start with a route object that stands for "nowhere" + this.current = START; + this.pending = null; + this.ready = false; + this.readyCbs = []; + this.readyErrorCbs = []; + this.errorCbs = []; + this.listeners = []; + }; + + History.prototype.listen = function listen (cb) { + this.cb = cb; + }; + + History.prototype.onReady = function onReady (cb, errorCb) { + if (this.ready) { + cb(); + } else { + this.readyCbs.push(cb); + if (errorCb) { + this.readyErrorCbs.push(errorCb); + } + } + }; + + History.prototype.onError = function onError (errorCb) { + this.errorCbs.push(errorCb); + }; + + History.prototype.transitionTo = function transitionTo ( + location, + onComplete, + onAbort + ) { + var this$1 = this; + + var route; + // catch redirect option https://github.com/vuejs/vue-router/issues/3201 + try { + route = this.router.match(location, this.current); + } catch (e) { + this.errorCbs.forEach(function (cb) { + cb(e); + }); + // Exception should still be thrown + throw e + } + var prev = this.current; + this.confirmTransition( + route, + function () { + this$1.updateRoute(route); + onComplete && onComplete(route); + this$1.ensureURL(); + this$1.router.afterHooks.forEach(function (hook) { + hook && hook(route, prev); + }); + + // fire ready cbs once + if (!this$1.ready) { + this$1.ready = true; + this$1.readyCbs.forEach(function (cb) { + cb(route); + }); + } + }, + function (err) { + if (onAbort) { + onAbort(err); + } + if (err && !this$1.ready) { + // Initial redirection should not mark the history as ready yet + // because it's triggered by the redirection instead + // https://github.com/vuejs/vue-router/issues/3225 + // https://github.com/vuejs/vue-router/issues/3331 + if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) { + this$1.ready = true; + this$1.readyErrorCbs.forEach(function (cb) { + cb(err); + }); + } + } + } + ); + }; + + History.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) { + var this$1 = this; + + var current = this.current; + this.pending = route; + var abort = function (err) { + // changed after adding errors with + // https://github.com/vuejs/vue-router/pull/3047 before that change, + // redirect and aborted navigation would produce an err == null + if (!isNavigationFailure(err) && isError(err)) { + if (this$1.errorCbs.length) { + this$1.errorCbs.forEach(function (cb) { + cb(err); + }); + } else { + warn(false, 'uncaught error during route navigation:'); + console.error(err); + } + } + onAbort && onAbort(err); + }; + var lastRouteIndex = route.matched.length - 1; + var lastCurrentIndex = current.matched.length - 1; + if ( + isSameRoute(route, current) && + // in the case the route map has been dynamically appended to + lastRouteIndex === lastCurrentIndex && + route.matched[lastRouteIndex] === current.matched[lastCurrentIndex] + ) { + this.ensureURL(); + return abort(createNavigationDuplicatedError(current, route)) + } + + var ref = resolveQueue( + this.current.matched, + route.matched + ); + var updated = ref.updated; + var deactivated = ref.deactivated; + var activated = ref.activated; + + var queue = [].concat( + // in-component leave guards + extractLeaveGuards(deactivated), + // global before hooks + this.router.beforeHooks, + // in-component update hooks + extractUpdateHooks(updated), + // in-config enter guards + activated.map(function (m) { return m.beforeEnter; }), + // async components + resolveAsyncComponents(activated) + ); + + var iterator = function (hook, next) { + if (this$1.pending !== route) { + return abort(createNavigationCancelledError(current, route)) + } + try { + hook(route, current, function (to) { + if (to === false) { + // next(false) -> abort navigation, ensure current URL + this$1.ensureURL(true); + abort(createNavigationAbortedError(current, route)); + } else if (isError(to)) { + this$1.ensureURL(true); + abort(to); + } else if ( + typeof to === 'string' || + (typeof to === 'object' && + (typeof to.path === 'string' || typeof to.name === 'string')) + ) { + // next('/') or next({ path: '/' }) -> redirect + abort(createNavigationRedirectedError(current, route)); + if (typeof to === 'object' && to.replace) { + this$1.replace(to); + } else { + this$1.push(to); + } + } else { + // confirm transition and pass on the value + next(to); + } + }); + } catch (e) { + abort(e); + } + }; + + runQueue(queue, iterator, function () { + // wait until async components are resolved before + // extracting in-component enter guards + var enterGuards = extractEnterGuards(activated); + var queue = enterGuards.concat(this$1.router.resolveHooks); + runQueue(queue, iterator, function () { + if (this$1.pending !== route) { + return abort(createNavigationCancelledError(current, route)) + } + this$1.pending = null; + onComplete(route); + if (this$1.router.app) { + BI.nextTick(function () { + handleRouteEntered(route); + }); + } + }); + }); + }; + + History.prototype.updateRoute = function updateRoute (route) { + this.current = route; + this.cb && this.cb(route); + }; + + History.prototype.setupListeners = function setupListeners () { + // Default implementation is empty + }; + + History.prototype.teardown = function teardown () { + // clean up event listeners + // https://github.com/vuejs/vue-router/issues/2341 + this.listeners.forEach(function (cleanupListener) { + cleanupListener(); + }); + this.listeners = []; + + // reset current history route + // https://github.com/vuejs/vue-router/issues/3294 + this.current = START; + this.pending = null; + }; + + function normalizeBase (base) { + if (!base) { + if (inBrowser) { + // respect tag + var baseEl = document.querySelector('base'); + base = (baseEl && baseEl.getAttribute('href')) || '/'; + // strip full URL origin + base = base.replace(/^https?:\/\/[^\/]+/, ''); + } else { + base = '/'; + } + } + // make sure there's the starting slash + if (base.charAt(0) !== '/') { + base = '/' + base; + } + // remove trailing slash + return base.replace(/\/$/, '') + } + + function resolveQueue ( + current, + next + ) { + var i; + var max = Math.max(current.length, next.length); + for (i = 0; i < max; i++) { + if (current[i] !== next[i]) { + break + } + } + return { + updated: next.slice(0, i), + activated: next.slice(i), + deactivated: current.slice(i) + } + } + + function extractGuards ( + records, + name, + bind, + reverse + ) { + var guards = flatMapComponents(records, function (def, instance, match, key) { + var guard = extractGuard(def, name); + if (guard) { + return Array.isArray(guard) + ? guard.map(function (guard) { return bind(guard, instance, match, key); }) + : bind(guard, instance, match, key) + } + }); + return flatten(reverse ? guards.reverse() : guards) + } + + function extractGuard ( + def, + key + ) { + if (typeof def !== 'function') { + // extend now so that global mixins are applied. + // def = _Vue.extend(def); + } + return def[key] + } + + function extractLeaveGuards (deactivated) { + return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true) + } + + function extractUpdateHooks (updated) { + return extractGuards(updated, 'beforeRouteUpdate', bindGuard) + } + + function bindGuard (guard, instance) { + if (instance) { + return function boundRouteGuard () { + return guard.apply(instance, arguments) + } + } + } + + function extractEnterGuards ( + activated + ) { + return extractGuards( + activated, + 'beforeRouteEnter', + function (guard, _, match, key) { + return bindEnterGuard(guard, match, key) + } + ) + } + + function bindEnterGuard ( + guard, + match, + key + ) { + return function routeEnterGuard (to, from, next) { + return guard(to, from, function (cb) { + if (typeof cb === 'function') { + if (!match.enteredCbs[key]) { + match.enteredCbs[key] = []; + } + match.enteredCbs[key].push(cb); + } + next(cb); + }) + } + } + + /* */ + + var HTML5History = /*@__PURE__*/(function (History) { + function HTML5History (router, base) { + History.call(this, router, base); + + this._startLocation = getLocation(this.base); + } + + if ( History ) HTML5History.__proto__ = History; + HTML5History.prototype = Object.create( History && History.prototype ); + HTML5History.prototype.constructor = HTML5History; + + HTML5History.prototype.setupListeners = function setupListeners () { + var this$1 = this; + + if (this.listeners.length > 0) { + return + } + + var router = this.router; + var expectScroll = router.options.scrollBehavior; + var supportsScroll = supportsPushState && expectScroll; + + if (supportsScroll) { + this.listeners.push(setupScroll()); + } + + var handleRoutingEvent = function () { + var current = this$1.current; + + // Avoiding first `popstate` event dispatched in some browsers but first + // history route not updated since async guard at the same time. + var location = getLocation(this$1.base); + if (this$1.current === START && location === this$1._startLocation) { + return + } + + this$1.transitionTo(location, function (route) { + if (supportsScroll) { + handleScroll(router, route, current, true); + } + }); + }; + window.addEventListener('popstate', handleRoutingEvent); + this.listeners.push(function () { + window.removeEventListener('popstate', handleRoutingEvent); + }); + }; + + HTML5History.prototype.go = function go (n) { + window.history.go(n); + }; + + HTML5History.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo(location, function (route) { + pushState(cleanPath(this$1.base + route.fullPath)); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, onAbort); + }; + + HTML5History.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo(location, function (route) { + replaceState(cleanPath(this$1.base + route.fullPath)); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, onAbort); + }; + + HTML5History.prototype.ensureURL = function ensureURL (push) { + if (getLocation(this.base) !== this.current.fullPath) { + var current = cleanPath(this.base + this.current.fullPath); + push ? pushState(current) : replaceState(current); + } + }; + + HTML5History.prototype.getCurrentLocation = function getCurrentLocation () { + return getLocation(this.base) + }; + + return HTML5History; + }(History)); + + function getLocation (base) { + var path = window.location.pathname; + var pathLowerCase = path.toLowerCase(); + var baseLowerCase = base.toLowerCase(); + // base="/a" shouldn't turn path="/app" into "/a/pp" + // https://github.com/vuejs/vue-router/issues/3555 + // so we ensure the trailing slash in the base + if (base && ((pathLowerCase === baseLowerCase) || + (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) { + path = path.slice(base.length); + } + return (path || '/') + window.location.search + window.location.hash + } + + /* */ + + var HashHistory = /*@__PURE__*/(function (History) { + function HashHistory (router, base, fallback) { + History.call(this, router, base); + // check history fallback deeplinking + if (fallback && checkFallback(this.base)) { + return + } + ensureSlash(); + } + + if ( History ) HashHistory.__proto__ = History; + HashHistory.prototype = Object.create( History && History.prototype ); + HashHistory.prototype.constructor = HashHistory; + + // this is delayed until the app mounts + // to avoid the hashchange listener being fired too early + HashHistory.prototype.setupListeners = function setupListeners () { + var this$1 = this; + + if (this.listeners.length > 0) { + return + } + + var router = this.router; + var expectScroll = router.options.scrollBehavior; + var supportsScroll = supportsPushState && expectScroll; + + if (supportsScroll) { + this.listeners.push(setupScroll()); + } + + var handleRoutingEvent = function () { + var current = this$1.current; + if (!ensureSlash()) { + return + } + this$1.transitionTo(getHash(), function (route) { + if (supportsScroll) { + handleScroll(this$1.router, route, current, true); + } + if (!supportsPushState) { + replaceHash(route.fullPath); + } + }); + }; + var eventType = supportsPushState ? 'popstate' : 'hashchange'; + window.addEventListener( + eventType, + handleRoutingEvent + ); + this.listeners.push(function () { + window.removeEventListener(eventType, handleRoutingEvent); + }); + }; + + HashHistory.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo( + location, + function (route) { + pushHash(route.fullPath); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, + onAbort + ); + }; + + HashHistory.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo( + location, + function (route) { + replaceHash(route.fullPath); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, + onAbort + ); + }; + + HashHistory.prototype.go = function go (n) { + window.history.go(n); + }; + + HashHistory.prototype.ensureURL = function ensureURL (push) { + var current = this.current.fullPath; + if (getHash() !== current) { + push ? pushHash(current) : replaceHash(current); + } + }; + + HashHistory.prototype.getCurrentLocation = function getCurrentLocation () { + return getHash() + }; + + return HashHistory; + }(History)); + + function checkFallback (base) { + var location = getLocation(base); + if (!/^\/#/.test(location)) { + window.location.replace(cleanPath(base + '/#' + location)); + return true + } + } + + function ensureSlash () { + var path = getHash(); + if (path.charAt(0) === '/') { + return true + } + replaceHash('/' + path); + return false + } + + function getHash () { + // We can't use window.location.hash here because it's not + // consistent across browsers - Firefox will pre-decode it! + var href = window.location.href; + var index = href.indexOf('#'); + // empty path + if (index < 0) { return '' } + + href = href.slice(index + 1); + + return href + } + + function getUrl (path) { + var href = window.location.href; + var i = href.indexOf('#'); + var base = i >= 0 ? href.slice(0, i) : href; + return (base + "#" + path) + } + + function pushHash (path) { + if (supportsPushState) { + pushState(getUrl(path)); + } else { + window.location.hash = path; + } + } + + function replaceHash (path) { + if (supportsPushState) { + replaceState(getUrl(path)); + } else { + window.location.replace(getUrl(path)); + } + } + + /* */ + + var AbstractHistory = /*@__PURE__*/(function (History) { + function AbstractHistory (router, base) { + History.call(this, router, base); + this.stack = []; + this.index = -1; + } + + if ( History ) AbstractHistory.__proto__ = History; + AbstractHistory.prototype = Object.create( History && History.prototype ); + AbstractHistory.prototype.constructor = AbstractHistory; + + AbstractHistory.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + this.transitionTo( + location, + function (route) { + this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route); + this$1.index++; + onComplete && onComplete(route); + }, + onAbort + ); + }; + + AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + this.transitionTo( + location, + function (route) { + this$1.stack = this$1.stack.slice(0, this$1.index).concat(route); + onComplete && onComplete(route); + }, + onAbort + ); + }; + + AbstractHistory.prototype.go = function go (n) { + var this$1 = this; + + var targetIndex = this.index + n; + if (targetIndex < 0 || targetIndex >= this.stack.length) { + return + } + var route = this.stack[targetIndex]; + this.confirmTransition( + route, + function () { + var prev = this$1.current; + this$1.index = targetIndex; + this$1.updateRoute(route); + this$1.router.afterHooks.forEach(function (hook) { + hook && hook(route, prev); + }); + }, + function (err) { + if (isNavigationFailure(err, NavigationFailureType.duplicated)) { + this$1.index = targetIndex; + } + } + ); + }; + + AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () { + var current = this.stack[this.stack.length - 1]; + return current ? current.fullPath : '/' + }; + + AbstractHistory.prototype.ensureURL = function ensureURL () { + // noop + }; + + return AbstractHistory; + }(History)); + + /* */ + + var VueRouter = function VueRouter (options) { + if ( options === void 0 ) options = {}; + + this.app = null; + this.apps = []; + this.options = options; + this.beforeHooks = []; + this.resolveHooks = []; + this.afterHooks = []; + this.matcher = createMatcher(options.routes || [], this); + + var mode = options.mode || 'hash'; + this.fallback = + mode === 'history' && !supportsPushState && options.fallback !== false; + if (this.fallback) { + mode = 'hash'; + } + if (!inBrowser) { + mode = 'abstract'; + } + this.mode = mode; + + switch (mode) { + case 'history': + this.history = new HTML5History(this, options.base); + break + case 'hash': + this.history = new HashHistory(this, options.base, this.fallback); + break + case 'abstract': + this.history = new AbstractHistory(this, options.base); + break + default: + { + assert(false, ("invalid mode: " + mode)); + } + } + }; + + var prototypeAccessors = { currentRoute: { configurable: true } }; + + VueRouter.prototype.match = function match (raw, current, redirectedFrom) { + return this.matcher.match(raw, current, redirectedFrom) + }; + + prototypeAccessors.currentRoute.get = function () { + return this.history && this.history.current + }; + + VueRouter.prototype.init = function init (app /* Vue component instance */) { + var this$1 = this; + + this.apps.push(app); + + // set up app destroyed handler + // https://github.com/vuejs/vue-router/issues/2639 + app.once('hook:destroyed', function () { + // clean out app from this.apps array once destroyed + var index = this$1.apps.indexOf(app); + if (index > -1) { this$1.apps.splice(index, 1); } + // ensure we still have a main app or null if no apps + // we do not release the router so it can be reused + if (this$1.app === app) { this$1.app = this$1.apps[0] || null; } + + if (!this$1.app) { this$1.history.teardown(); } + }); + + // main app previously initialized + // return as we don't need to set up new history listener + if (this.app) { + return + } + + this.app = app; + + var history = this.history; + + if (history instanceof HTML5History || history instanceof HashHistory) { + var handleInitialScroll = function (routeOrError) { + var from = history.current; + var expectScroll = this$1.options.scrollBehavior; + var supportsScroll = supportsPushState && expectScroll; + + if (supportsScroll && 'fullPath' in routeOrError) { + handleScroll(this$1, routeOrError, from, false); + } + }; + var setupListeners = function (routeOrError) { + history.setupListeners(); + handleInitialScroll(routeOrError); + }; + history.transitionTo( + history.getCurrentLocation(), + setupListeners, + setupListeners + ); + } + + history.listen(function (route) { + this$1.apps.forEach(function (app) { + app._router.history.current = route; + }); + }); + }; + + VueRouter.prototype.beforeEach = function beforeEach (fn) { + return registerHook(this.beforeHooks, fn) + }; + + VueRouter.prototype.beforeResolve = function beforeResolve (fn) { + return registerHook(this.resolveHooks, fn) + }; + + VueRouter.prototype.afterEach = function afterEach (fn) { + return registerHook(this.afterHooks, fn) + }; + + VueRouter.prototype.onReady = function onReady (cb, errorCb) { + this.history.onReady(cb, errorCb); + }; + + VueRouter.prototype.onError = function onError (errorCb) { + this.history.onError(errorCb); + }; + + VueRouter.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + // $flow-disable-line + if (!onComplete && !onAbort && typeof Promise !== 'undefined') { + return new Promise(function (resolve, reject) { + this$1.history.push(location, resolve, reject); + }) + } else { + this.history.push(location, onComplete, onAbort); + } + }; + + VueRouter.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + // $flow-disable-line + if (!onComplete && !onAbort && typeof Promise !== 'undefined') { + return new Promise(function (resolve, reject) { + this$1.history.replace(location, resolve, reject); + }) + } else { + this.history.replace(location, onComplete, onAbort); + } + }; + + VueRouter.prototype.go = function go (n) { + this.history.go(n); + }; + + VueRouter.prototype.back = function back () { + this.go(-1); + }; + + VueRouter.prototype.forward = function forward () { + this.go(1); + }; + + VueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) { + var route = to + ? to.matched + ? to + : this.resolve(to).route + : this.currentRoute; + if (!route) { + return [] + } + return [].concat.apply( + [], + route.matched.map(function (m) { + return Object.keys(m.components).map(function (key) { + return m.components[key] + }) + }) + ) + }; + + VueRouter.prototype.resolve = function resolve ( + to, + current, + append + ) { + current = current || this.history.current; + var location = normalizeLocation(to, current, append, this); + var route = this.match(location, current); + var fullPath = route.redirectedFrom || route.fullPath; + var base = this.history.base; + var href = createHref(base, fullPath, this.mode); + return { + location: location, + route: route, + href: href, + // for backwards compat + normalizedTo: location, + resolved: route + } + }; + + VueRouter.prototype.getRoutes = function getRoutes () { + return this.matcher.getRoutes() + }; + + VueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) { + this.matcher.addRoute(parentOrRoute, route); + if (this.history.current !== START) { + this.history.transitionTo(this.history.getCurrentLocation()); + } + }; + + Object.defineProperties( VueRouter.prototype, prototypeAccessors ); + + function registerHook (list, fn) { + list.push(fn); + return function () { + var i = list.indexOf(fn); + if (i > -1) { list.splice(i, 1); } + } + } + + function createHref (base, fullPath, mode) { + var path = mode === 'hash' ? '#' + fullPath : fullPath; + return base ? cleanPath(base + '/' + path) : path + } + + // VueRouter.install = install; + VueRouter.version = '3.5.2'; + VueRouter.isNavigationFailure = isNavigationFailure; + VueRouter.NavigationFailureType = NavigationFailureType; + VueRouter.START_LOCATION = START; + + + var $router, cbs = []; + BI.RouterWidget = BI.inherit(BI.Widget, { + init: function () { + this.$router = this._router = BI.Router.$router = $router = new VueRouter({ + routes: this.options.routes + }); + this.$router.beforeEach(function (to, from, next) { + if (to.matched.length === 0) { + //如果上级也未匹配到路由则跳转主页面,如果上级能匹配到则转上级路由 + from.path ? next({ path: from.path }) : next('/'); + } else { + //如果匹配到正确跳转 + next(); + } + }); + this.$router.afterEach(function () { + cbs.forEach(function (cb) {cb();}); + }); + this.$router.init(this); + } + }); + BI.shortcut("bi.router", BI.RouterWidget); + + BI.RouterView = BI.inherit(BI.Widget, { + props: { + deps: 0, + name: 'default' + }, + created: function () { + var self = this, o = this.options; + cbs.push(this._callbackListener = function () { + var current = $router.history.current; + // 匹配的路径名(/component/:id) + var matchedPath = current.matched[o.deps] && current.matched[o.deps].path; + var component = current.matched[o.deps] && current.matched[o.deps].components[o.name]; + + if (BI.isNotNull(component)) { + if (matchedPath) { + BI.each(current.params, function (key, value) { + // 把 :id 替换成具体的值(/component/demo.td) + matchedPath = matchedPath.replace(`:${key}`, value); + }); + } + self.tab.setSelect(matchedPath || "/"); + } + }); + }, + render: function () { + var self = this, o = this.options; + return { + type: "bi.tab", + ref: function (_ref) { + self.tab = _ref; + }, + single: false, // 是不是单页面 + logic: { + dynamic: false + }, + showIndex: false, + cardCreator: function (v) { + return $router.history.current.matched[o.deps].components[o.name]; + } + }; + }, + destroyed: function () { + cbs.remove(this._callbackListener); + } + }); + BI.shortcut("bi.router_view", BI.RouterView); + + BI.Router = BI.Router || VueRouter; + BI.Router.isSameRoute = isSameRoute; + return VueRouter; + + }))); + \ No newline at end of file diff --git a/src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/button.js b/src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/button.js new file mode 100644 index 0000000..4da72f3 --- /dev/null +++ b/src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/button.js @@ -0,0 +1,44 @@ +/** + * Created by GUY on 2015/6/26. + * 属性 + * textAlign + * whiteSpace + * textWidth + * textHeight + * highLight + * keyword + * py + * handler + * 方法 + * setText + * setStyle + * doRedMark + * unRedMark + * doHighLight + * unHighLight + */ + +!(function(){ + var Widget = BI.inherit(BI.Widget, { + render: function () { + var o = this.options; + if( o.textAlign ){ + this.element.css("text-align",o.textAlign); + } + if( o.textHeight ){ + this.element.css("line-height",o.textHeight); + } + this.element.val(this.options.text); + } + }) + BI.shortcut("swing.button", Widget); +}()) + +var Button = Java.type("com.tptj.tool.hg.fineui.swing.element.ButtonElement"); + +BI.config("bi.button", function (config) { + return BI.extend({}, config, { + type: "swing.button", + swingElement: Button + }) +}); diff --git a/src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/group.button.js b/src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/group.button.js new file mode 100644 index 0000000..e69d735 --- /dev/null +++ b/src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/group.button.js @@ -0,0 +1,45 @@ +/** + * Created by GUY on 2015/6/26. + * 属性 + * textAlign + * whiteSpace + * textWidth + * textHeight + * highLight + * keyword + * py + * handler + * 方法 + * setText + * setStyle + * doRedMark + * unRedMark + * doHighLight + * unHighLight + */ + +!(function () { + var Widget = BI.inherit(BI.Widget, { + render: function () { + var self = this, o = this.options; + this.populate(o.items); + }, + + populate: function (items) { + var self = this, o = this.options; + this.element.populate(BI.map(items, function (i, item) { + return item.text; + })) + } + }); + BI.shortcut("swing.button_group", Widget); + + var Button = Java.type("com.tptj.tool.hg.fineui.swing.element.ListElement"); + + BI.config("bi.button_group", function (config) { + return BI.extend({}, config, { + type: "swing.button_group", + swingElement: Button + }) + }); +}()); diff --git a/src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/label.js b/src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/label.js index a26dc80..ced097b 100644 --- a/src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/label.js +++ b/src/main/resources/com/tptj/tool/hg/fineui/swing/base/single/label.js @@ -29,6 +29,10 @@ this.element.css("line-height",o.textHeight); } this.element.val(this.options.text); + }, + + setText: function (val) { + this.element.val(val) } }) BI.shortcut("swing.label", Widget); diff --git a/src/main/resources/com/tptj/tool/hg/fineui/swing/core/element.js b/src/main/resources/com/tptj/tool/hg/fineui/swing/core/element.js index a20c595..aca146d 100644 --- a/src/main/resources/com/tptj/tool/hg/fineui/swing/core/element.js +++ b/src/main/resources/com/tptj/tool/hg/fineui/swing/core/element.js @@ -26,9 +26,9 @@ this.java_el = widget; } else { this.java_el = new ((widget.options || {}).swingElement || Element)(); - this.java_el.setType((widget.options || {}).type); } - if(BI.isWidget(widget)){ + if (BI.isWidget(widget)) { + this.widget = widget; if (!widget.mounted) { widget.mounted = []; } else if (!BI.isArray(widget.mounted)) { @@ -92,6 +92,7 @@ return this; }, empty: function () { + this._children = []; this.java_el.empty(); return this; }, @@ -150,6 +151,10 @@ } else { return this.java_el.getVal(); } + }, + + populate: function (items) { + this.java_el.populate(items); } }); })(); \ No newline at end of file diff --git a/src/main/resources/com/tptj/tool/hg/fineui/swing/core/extra.js b/src/main/resources/com/tptj/tool/hg/fineui/swing/core/extra.js index 50e705e..7e138ad 100644 --- a/src/main/resources/com/tptj/tool/hg/fineui/swing/core/extra.js +++ b/src/main/resources/com/tptj/tool/hg/fineui/swing/core/extra.js @@ -7,6 +7,12 @@ // 将单位设置成空,这样子css()的大小和位置就不带px了 BI.pixUnit = ""; + // Promise没法用,对于fix就直接callback了 + BI.nextTick = function (callback) { + callback(); + }; + + // 注册渲染引擎 BI.Widget.registerRenderEngine({ createElement: function (widget) { if (BI.isWidget(widget)) { @@ -20,17 +26,18 @@ } return $(widget); } - console.debug("不支持",widget); + console.debug("不支持", widget); return $(widget); }, createFragment: function () { return $("invented"); } }); + //hugh:ref反向把js对象注入到java中,实现双向调用和事件处理 BI.Widget.prototype._oldInitRoot = BI.Widget.prototype._initRoot; BI.Widget.prototype._initRoot = function () { - this._oldInitRoot(); + this._oldInitRoot(); this.element.ref(this); } })(); \ No newline at end of file diff --git a/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.horizontal.js b/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.horizontal.js index 2f6aca5..a1fe165 100644 --- a/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.horizontal.js +++ b/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.horizontal.js @@ -8,22 +8,14 @@ this.element.append(child.element); } } - if (o.verticalAlign === BI.VerticalAlign.Middle) { - if (o.horizontalAlign === BI.HorizontalAlign.Center) { - this.element.layout("center_adapt"); - return; - } - this.element.layout("vertical_adapt"); - return; - } - this.element.layout("horizontal"); + BI.Services.getService("swing.layout.service").layout(this); } }); BI.shortcut("swing.horizontal", BI.SwingHorizontalLayout); BI.config("bi.horizontal", function (config) { return BI.extend({}, config, { - type: "swing.horizontal", + type: "swing.horizontal" }) }); }()); diff --git a/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.service.js b/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.service.js new file mode 100644 index 0000000..ab1cb88 --- /dev/null +++ b/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.service.js @@ -0,0 +1,30 @@ +!(function () { + var Service = BI.inherit(BI.OB, { + layout: function (widget) { + var element = widget.element; + var o = widget.options; + if (o.verticalAlign === BI.VerticalAlign.Middle) { + if (o.horizontalAlign === BI.HorizontalAlign.Center) { + element.layout("center_adapt"); + return; + } + element.layout("vertical_adapt"); + return; + } + if (o.horizontalAlign === BI.HorizontalAlign.Center) { + element.layout("horizontal_adapt"); + return; + } + if (o.type === "swing.vertical") { + element.layout("vertical"); + return; + } + if (o.type === "swing.horizontal") { + element.layout("horizontal"); + return; + } + element.layout("absolute"); + } + }); + BI.service("swing.layout.service", Service); +}()); \ No newline at end of file diff --git a/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.vertical.js b/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.vertical.js index b1f7c8a..fcddc9e 100644 --- a/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.vertical.js +++ b/src/main/resources/com/tptj/tool/hg/fineui/swing/core/wrapper/layout.vertical.js @@ -8,21 +8,14 @@ this.element.append(child.element); } } - if (o.horizontalAlign === BI.HorizontalAlign.Center) { - if (o.verticalAlign === BI.VerticalAlign.Middle) { - this.element.layout("center_adapt"); - } - this.element.layout("horizontal_adapt"); - return; - } - this.element.layout("vertical"); + BI.Services.getService("swing.layout.service").layout(this); } }); BI.shortcut("swing.vertical", Widget); BI.config("bi.vertical", function (config) { return BI.extend({}, config, { - type: "swing.vertical", + type: "swing.vertical" }) }); }()); diff --git a/src/main/resources/com/tptj/tool/hg/fineui/swing/demo/group.button.js b/src/main/resources/com/tptj/tool/hg/fineui/swing/demo/group.button.js new file mode 100644 index 0000000..9e0cc79 --- /dev/null +++ b/src/main/resources/com/tptj/tool/hg/fineui/swing/demo/group.button.js @@ -0,0 +1,75 @@ +!(function () { + var Model = BI.inherit(Fix.Model, { + state: function () { + return { + items: [{ + text: "列表项1" + }, { + text: "列表项2" + }] + } + }, + actions: { + addItem: function () { + this.model.items.push({ + text: "列表项" + (this.model.items.length + 1) + }) + } + } + }); + BI.model("my.model", Model); + + var Widget = BI.inherit(BI.Widget, { + _store: function () { + return BI.Models.getModel("my.model"); + }, + props: { + width: 600, + height: 300 + }, + watch: { + items: function (items) { + this.list.populate(items); + } + }, + render: function () { + var self = this; + return { + type: "bi.vtape", + rowSize: [50, "fill"], + items: [{ + type: "bi.button", + text: "点击新增元素", + listeners: [{ + eventName: "EVENT_CHANGE", + action: function (val) { + self.store.addItem(); + } + }] + }, { + type: "bi.button_group", + ref: function (_ref) { + self.list = _ref; + }, + layouts: [{ + type: "bi.vertical_adapt", + verticalAlign: BI.VerticalAlign.Middle, + hgap: 30, + scrollable: true + }], + chooseType: BI.Selection.None, + css: { + background: "rgb(200,200,200)" + }, + items: this.model.items + }] + } + } + }); + BI.shortcut("my.app", Widget); + + BI.createWidget({ + type: "my.app", + element: body + }); +})(); \ No newline at end of file