diff --git a/POINTER/img/2darray.png b/POINTER/img/2darray.png new file mode 100644 index 0000000..e7de5a5 Binary files /dev/null and b/POINTER/img/2darray.png differ diff --git a/POINTER/img/array.png b/POINTER/img/array.png new file mode 100644 index 0000000..8a1396a Binary files /dev/null and b/POINTER/img/array.png differ diff --git a/POINTER/img/array2.png b/POINTER/img/array2.png new file mode 100644 index 0000000..aa281d2 Binary files /dev/null and b/POINTER/img/array2.png differ diff --git a/POINTER/img/array_and_pointer.png b/POINTER/img/array_and_pointer.png new file mode 100644 index 0000000..ef1b75e Binary files /dev/null and b/POINTER/img/array_and_pointer.png differ diff --git a/POINTER/img/array_and_pointer_2.png b/POINTER/img/array_and_pointer_2.png new file mode 100644 index 0000000..a0c43ba Binary files /dev/null and b/POINTER/img/array_and_pointer_2.png differ diff --git a/POINTER/img/array_pointer_1.png b/POINTER/img/array_pointer_1.png new file mode 100644 index 0000000..1e8336c Binary files /dev/null and b/POINTER/img/array_pointer_1.png differ diff --git a/POINTER/img/array_pointer_2.png b/POINTER/img/array_pointer_2.png new file mode 100644 index 0000000..e6c4330 Binary files /dev/null and b/POINTER/img/array_pointer_2.png differ diff --git a/POINTER/img/byte_order.png b/POINTER/img/byte_order.png new file mode 100644 index 0000000..3fffeff Binary files /dev/null and b/POINTER/img/byte_order.png differ diff --git a/POINTER/img/byte_order_1.png b/POINTER/img/byte_order_1.png new file mode 100644 index 0000000..a0d0e71 Binary files /dev/null and b/POINTER/img/byte_order_1.png differ diff --git a/POINTER/img/function.png b/POINTER/img/function.png new file mode 100644 index 0000000..a75510a Binary files /dev/null and b/POINTER/img/function.png differ diff --git a/POINTER/img/malloc_1.png b/POINTER/img/malloc_1.png new file mode 100644 index 0000000..59b338f Binary files /dev/null and b/POINTER/img/malloc_1.png differ diff --git a/POINTER/img/malloc_2.png b/POINTER/img/malloc_2.png new file mode 100644 index 0000000..f3f4edf Binary files /dev/null and b/POINTER/img/malloc_2.png differ diff --git a/POINTER/img/malloc_array_1.png b/POINTER/img/malloc_array_1.png new file mode 100644 index 0000000..7f6bf31 Binary files /dev/null and b/POINTER/img/malloc_array_1.png differ diff --git a/POINTER/img/malloc_double.png b/POINTER/img/malloc_double.png new file mode 100644 index 0000000..e1caff8 Binary files /dev/null and b/POINTER/img/malloc_double.png differ diff --git a/POINTER/img/malloc_int.png b/POINTER/img/malloc_int.png new file mode 100644 index 0000000..7717604 Binary files /dev/null and b/POINTER/img/malloc_int.png differ diff --git a/POINTER/img/memory.png b/POINTER/img/memory.png new file mode 100644 index 0000000..9fc86e1 Binary files /dev/null and b/POINTER/img/memory.png differ diff --git a/POINTER/img/pointer_parse.png b/POINTER/img/pointer_parse.png new file mode 100644 index 0000000..fa041aa Binary files /dev/null and b/POINTER/img/pointer_parse.png differ diff --git a/POINTER/img/pointer_plus.png b/POINTER/img/pointer_plus.png new file mode 100644 index 0000000..80f8504 Binary files /dev/null and b/POINTER/img/pointer_plus.png differ diff --git a/POINTER/img/pointer_to_function.png b/POINTER/img/pointer_to_function.png new file mode 100644 index 0000000..342d893 Binary files /dev/null and b/POINTER/img/pointer_to_function.png differ diff --git a/POINTER/img/pointer_to_pointer.png b/POINTER/img/pointer_to_pointer.png new file mode 100644 index 0000000..599e6e1 Binary files /dev/null and b/POINTER/img/pointer_to_pointer.png differ diff --git a/POINTER/img/pointer_to_struct_field.png b/POINTER/img/pointer_to_struct_field.png new file mode 100644 index 0000000..ff24dbc Binary files /dev/null and b/POINTER/img/pointer_to_struct_field.png differ diff --git a/POINTER/img/stack_frame.png b/POINTER/img/stack_frame.png new file mode 100644 index 0000000..9938c7d Binary files /dev/null and b/POINTER/img/stack_frame.png differ diff --git a/POINTER/img/stack_frame_1.png b/POINTER/img/stack_frame_1.png new file mode 100644 index 0000000..593b87e Binary files /dev/null and b/POINTER/img/stack_frame_1.png differ diff --git a/POINTER/img/struct.png b/POINTER/img/struct.png new file mode 100644 index 0000000..783a001 Binary files /dev/null and b/POINTER/img/struct.png differ diff --git a/POINTER/img/swap_1.png b/POINTER/img/swap_1.png new file mode 100644 index 0000000..cc257b6 Binary files /dev/null and b/POINTER/img/swap_1.png differ diff --git a/POINTER/img/swap_2.png b/POINTER/img/swap_2.png new file mode 100644 index 0000000..fc15c4a Binary files /dev/null and b/POINTER/img/swap_2.png differ diff --git a/POINTER/img/vl_array_2d.png b/POINTER/img/vl_array_2d.png new file mode 100644 index 0000000..5e13580 Binary files /dev/null and b/POINTER/img/vl_array_2d.png differ diff --git a/POINTER/pointer/css/bootstrap.min.css b/POINTER/pointer/css/bootstrap.min.css new file mode 100644 index 0000000..a89937c --- /dev/null +++ b/POINTER/pointer/css/bootstrap.min.css @@ -0,0 +1,6 @@ +@charset "UTF-8";/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-body-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#bacbe6;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#cbccce;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#bcd0c7;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#badce3;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#e6dbb9;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#dfc2c4;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#dfe0e1;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#373b3e;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10{--bs-link-opacity:0.1}.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25{--bs-link-opacity:0.25}.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50{--bs-link-opacity:0.5}.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75{--bs-link-opacity:0.75}.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100{--bs-link-opacity:1}.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0{--bs-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10{--bs-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25{--bs-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50{--bs-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75{--bs-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100{--bs-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/POINTER/pointer/css/index.css b/POINTER/pointer/css/index.css new file mode 100644 index 0000000..3e41de1 --- /dev/null +++ b/POINTER/pointer/css/index.css @@ -0,0 +1,36 @@ +#app > .row > div:first-child { + border: 1px solid gainsboro; +} + +.item { + border: 1px solid gainsboro; +} + +.btn { + margin: auto 10px auto 10px; +} + +.card, .code-table { + font-size: 22px; +} + +.memory { + height: 100vh; + overflow-y: scroll; + padding-top: 10px; + padding-bottom: 50px; +} + + +code { + height: 300px; + overflow-y: scroll; +} + +.font-sm { + font-size: 18px; +} + +.btn-struct:hover { + background-color: beige; +} \ No newline at end of file diff --git a/POINTER/pointer/img/pointer.png b/POINTER/pointer/img/pointer.png new file mode 100644 index 0000000..46a8180 Binary files /dev/null and b/POINTER/pointer/img/pointer.png differ diff --git a/POINTER/pointer/index.html b/POINTER/pointer/index.html new file mode 100644 index 0000000..c7aa95d --- /dev/null +++ b/POINTER/pointer/index.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + 栈内存演示(MinGW) + + +
+
+
+
+
+ 类型 +
+
+
+ + +
+
+
+ +
+
+ 声明 +
+
+ + + + +
+
+
+ 结构体编辑 +
+
+
+ + + + + + + + + + + +
类型名称   
{{item.type}}{{item.name}} + +
+
+
+ +
+
+
+ +
+
+ 数组 +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ + +
+ +
+
+
+
+
+
+ +
+
+ 运算 +
+
+
指针当前位置:{{posHexStr}}    移动字节数:{{steps}}
+
+ +
+ +
+
+ + +
+
+
+
+
+
+
+
{{pt.id}}
+
+
+ +
+
+
+
+
+            
+              {{code}}
+            
+          
+ + + + + + + + + +
变量&返回地址
{{item.name}}{{item.addr}}
+
+
+
+ + \ No newline at end of file diff --git a/POINTER/pointer/js/index.js b/POINTER/pointer/js/index.js new file mode 100644 index 0000000..91f0374 --- /dev/null +++ b/POINTER/pointer/js/index.js @@ -0,0 +1,229 @@ +window.onload = () => { + Vue.createApp({ + data() { + return { + msg: "Hello", + + + pointers: { + cur: 0, + list: [] + }, + pos: 1717565533, + step: 1, + steps: 0, + + typeSize: { + char: 1, + short: 2, + int: 4, + double: 8, + }, + checkedType: 'char', + + vars: { + list: [], + char: { + name: 'c', + num: 0, + }, + int: { + name: 'n', + num: 0 + }, + short: { + name: 't', + num: 0 + }, + double: { + name: 'd', + num: 0 + }, + arr: { + name: 'ar', + num: 0 + }, + struct: { + name: 'st', + num: 0 + }, + pointer: { + name: 'p', + num: 0 + } + }, + color: { + index: 0, + change: true, + colors: [ + 'antiquewhite', + 'aqua', + 'bisque', + 'burlywood', + 'cornflowerblue' + ] + }, + + struct: { + index: 0, + fields: [] + }, + + arr: { + dim: 1, + dim1: 5, + dim2: { + row: 3, + col: 3 + } + } + } + + }, + created() { + for (let i = 50; i >= 0; i--) { + this.pointers.cur = 1717565532 - i + this.pointers.list.push({ + id: '0X' + this.pointers.cur.toString(16).toUpperCase(), + color: null, + }) + } + }, + methods: { + handleMove(dr) { + this.color.change = false + if(dr == 'add') { + this.pos += this.typeSize[this.checkedType] * this.step + } else if (dr == 'minus') { + this.pos -= this.typeSize[this.checkedType] * this.step + } + }, + handleOpration(op) { + switch (op){ + case 'var': + this.pos -= this.typeSize[this.checkedType] + this.vars.list.push({ + type: this.checkedType, + name: this.vars[this.checkedType]['name'] + this.vars[this.checkedType]['num']++, + addr: this.posHexStr + }) + break; + case 'pointer': + this.pos -= this.typeSizeAll['pointer'] + this.vars.list.push({ + type: this.checkedType + '*', + name: this.vars['pointer']['name'] + this.vars[this.checkedType]['num']++, + addr: this.posHexStr + }) + break + case 'struct': + this.pos -= this.structSize + this.vars.list.push({ + type: 'struct S', + name: this.vars['struct']['name'] + this.vars['struct']['num']++, + addr: this.posHexStr + }) + break + case 'arr': + this.pos -= this.arrSize + const name = this.arr.dim == 1 ? `${this.vars['arr']['name']}${this.vars['arr']['num']++}[${this.arr.dim1}]` + : `${this.vars['arr']['name']}${this.vars['arr']['num']++}[${this.arr.dim2.row}][${this.arr.dim2.col}]` + this.vars.list.push({ + type: this.checkedType, + name: name, + addr: this.posHexStr + }) + break + default: + break; + } + + this.color.change = true + this.$refs.code.removeAttribute('data-highlighted') + this.$nextTick(hljs.highlightAll) + }, + + handleStructAdd() { + this.struct.fields.push({ + type: this.checkedType, + name: 'f' + this.struct.index++ + }) + }, + + handleStructDel(idx) { + this.struct.fields.splice(idx, 1) + } + }, + computed: { + posHexStr() { + return '0X' + this.pos.toString(16).toUpperCase() + }, + code() { + let structStr = this.struct.fields.reduce((acc, cur) => { + return acc + ` ${cur.type} ${cur.name}; + ` + }, ``) + let cstr = ` + struct S + { + ${structStr} + }; + ` + + this.vars.list.forEach(item => { + cstr += ` + ${item.type} ${item.name};` + }) + return cstr + }, + + typeSizeAll() { + return { + ...this.typeSize, + pointer: 8 + } + }, + structSize() { + return this.struct.fields.reduce((accumulator, currentValue) => { + console.log(accumulator, currentValue) + return accumulator + this.typeSizeAll[currentValue.type] + }, 0); + }, + arrSize() { + if(this.arr.dim == 1) { + return parseInt(this.arr.dim1) * this.typeSize[this.checkedType] + } else { + return parseInt(this.arr.dim2.col * this.arr.dim2.row) * this.typeSize[this.checkedType] + } + } + + }, + + watch: { + pos(val, oldVal) { + if (this.color.change) { + const coloraddrs = [] + for (let i = val; i < oldVal; i++) { + coloraddrs.push('0X' + i.toString(16).toUpperCase()) + } + const tocolor = this.pointers.list.filter((item) => coloraddrs.includes(item.id)) + tocolor.forEach((item) => { + + item.color = this.color.colors[this.color.index] + + }) + this.color.index = (this.color.index + 1) % this.color.colors.length + } + + this.steps = Math.abs(val - oldVal) + + }, + code() { + this.$refs.code.removeAttribute('data-highlighted') + this.$nextTick(hljs.highlightAll) + } + } + }).mount("#app") + + hljs.highlightAll(); +} \ No newline at end of file diff --git a/POINTER/pointer/js/vue.global.prod.js b/POINTER/pointer/js/vue.global.prod.js new file mode 100644 index 0000000..bdd8dab --- /dev/null +++ b/POINTER/pointer/js/vue.global.prod.js @@ -0,0 +1,6 @@ +var Vue=function(e){"use strict";function t(e,t){const n=new Set(e.split(","));return t?e=>n.has(e.toLowerCase()):e=>n.has(e)}const n={},s=[],o=()=>{},r=()=>!1,i=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),l=e=>e.startsWith("onUpdate:"),c=Object.assign,a=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},u=Object.prototype.hasOwnProperty,d=(e,t)=>u.call(e,t),p=Array.isArray,h=e=>"[object Map]"===x(e),f=e=>"[object Set]"===x(e),m=e=>"[object Date]"===x(e),g=e=>"function"==typeof e,v=e=>"string"==typeof e,y=e=>"symbol"==typeof e,b=e=>null!==e&&"object"==typeof e,_=e=>(b(e)||g(e))&&g(e.then)&&g(e.catch),S=Object.prototype.toString,x=e=>S.call(e),C=e=>x(e).slice(8,-1),k=e=>"[object Object]"===x(e),T=e=>v(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,w=t(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),N=t("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),A=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},E=/-(\w)/g,I=A((e=>e.replace(E,((e,t)=>t?t.toUpperCase():"")))),R=/\B([A-Z])/g,O=A((e=>e.replace(R,"-$1").toLowerCase())),F=A((e=>e.charAt(0).toUpperCase()+e.slice(1))),M=A((e=>e?`on${F(e)}`:"")),L=(e,t)=>!Object.is(e,t),P=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},B=e=>{const t=parseFloat(e);return isNaN(t)?e:t},V=e=>{const t=v(e)?Number(e):NaN;return isNaN(t)?e:t};let D;const U=()=>D||(D="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{}),j=t("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error");function H(e){if(p(e)){const t={};for(let n=0;n{if(e){const n=e.split(W);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function G(e){let t="";if(v(e))t=e;else if(p(e))for(let n=0;nte(e,t)))}const se=(e,t)=>t&&t.__v_isRef?se(e,t.value):h(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n],s)=>(e[oe(t,s)+" =>"]=n,e)),{})}:f(t)?{[`Set(${t.size})`]:[...t.values()].map((e=>oe(e)))}:y(t)?oe(t):!b(t)||p(t)||k(t)?t:String(t),oe=(e,t="")=>{var n;return y(e)?`Symbol(${null!=(n=e.description)?n:t})`:e};let re,ie;class le{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=re,!e&&re&&(this.index=(re.scopes||(re.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=re;try{return re=this,e()}finally{re=t}}}on(){re=this}off(){re=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t=2))break;be(),this._queryings--}return this._dirtyLevel>=2}set dirty(e){this._dirtyLevel=e?3:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=me,t=ie;try{return me=!0,ie=this,this._runnings++,pe(this),this.fn()}finally{he(this),this._runnings--,ie=t,me=e}}stop(){var e;this.active&&(pe(this),he(this),null==(e=this.onStop)||e.call(this),this.active=!1)}}function de(e){return e.value}function pe(e){e._trackId++,e._depsLength=0}function he(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},we=new WeakMap,Ne=Symbol(""),Ae=Symbol("");function Ee(e,t,n){if(me&&ie){let t=we.get(e);t||we.set(e,t=new Map);let s=t.get(n);s||t.set(n,s=Te((()=>t.delete(n)))),xe(ie,s)}}function Ie(e,t,n,s,o,r){const i=we.get(e);if(!i)return;let l=[];if("clear"===t)l=[...i.values()];else if("length"===n&&p(e)){const e=Number(s);i.forEach(((t,n)=>{("length"===n||!y(n)&&n>=e)&&l.push(t)}))}else switch(void 0!==n&&l.push(i.get(n)),t){case"add":p(e)?T(n)&&l.push(i.get("length")):(l.push(i.get(Ne)),h(e)&&l.push(i.get(Ae)));break;case"delete":p(e)||(l.push(i.get(Ne)),h(e)&&l.push(i.get(Ae)));break;case"set":h(e)&&l.push(i.get(Ne))}_e();for(const c of l)c&&ke(c,3);Se()}const Re=t("__proto__,__v_isRef,__isVue"),Oe=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(y)),Fe=Me();function Me(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=Ct(this);for(let t=0,o=this.length;t{e[t]=function(...e){ye(),_e();const n=Ct(this)[t].apply(this,e);return Se(),be(),n}})),e}function Le(e){const t=Ct(this);return Ee(t,0,e),t.hasOwnProperty(e)}class Pe{constructor(e=!1,t=!1){this._isReadonly=e,this._shallow=t}get(e,t,n){const s=this._isReadonly,o=this._shallow;if("__v_isReactive"===t)return!s;if("__v_isReadonly"===t)return s;if("__v_isShallow"===t)return o;if("__v_raw"===t)return n===(s?o?ft:ht:o?pt:dt).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const r=p(e);if(!s){if(r&&d(Fe,t))return Reflect.get(Fe,t,n);if("hasOwnProperty"===t)return Le}const i=Reflect.get(e,t,n);return(y(t)?Oe.has(t):Re(t))?i:(s||Ee(e,0,t),o?i:It(i)?r&&T(t)?i:i.value:b(i)?s?vt(i):mt(i):i)}}class $e extends Pe{constructor(e=!1){super(!1,e)}set(e,t,n,s){let o=e[t];if(!this._shallow){const t=_t(o);if(St(n)||_t(n)||(o=Ct(o),n=Ct(n)),!p(e)&&It(o)&&!It(n))return!t&&(o.value=n,!0)}const r=p(e)&&T(t)?Number(t)e,qe=e=>Reflect.getPrototypeOf(e);function We(e,t,n=!1,s=!1){const o=Ct(e=e.__v_raw),r=Ct(t);n||(L(t,r)&&Ee(o,0,t),Ee(o,0,r));const{has:i}=qe(o),l=s?He:n?wt:Tt;return i.call(o,t)?l(e.get(t)):i.call(o,r)?l(e.get(r)):void(e!==o&&e.get(t))}function Ke(e,t=!1){const n=this.__v_raw,s=Ct(n),o=Ct(e);return t||(L(e,o)&&Ee(s,0,e),Ee(s,0,o)),e===o?n.has(e):n.has(e)||n.has(o)}function ze(e,t=!1){return e=e.__v_raw,!t&&Ee(Ct(e),0,Ne),Reflect.get(e,"size",e)}function Ge(e){e=Ct(e);const t=Ct(this);return qe(t).has.call(t,e)||(t.add(e),Ie(t,"add",e,e)),this}function Je(e,t){t=Ct(t);const n=Ct(this),{has:s,get:o}=qe(n);let r=s.call(n,e);r||(e=Ct(e),r=s.call(n,e));const i=o.call(n,e);return n.set(e,t),r?L(t,i)&&Ie(n,"set",e,t):Ie(n,"add",e,t),this}function Xe(e){const t=Ct(this),{has:n,get:s}=qe(t);let o=n.call(t,e);o||(e=Ct(e),o=n.call(t,e)),s&&s.call(t,e);const r=t.delete(e);return o&&Ie(t,"delete",e,void 0),r}function Qe(){const e=Ct(this),t=0!==e.size,n=e.clear();return t&&Ie(e,"clear",void 0,void 0),n}function Ze(e,t){return function(n,s){const o=this,r=o.__v_raw,i=Ct(r),l=t?He:e?wt:Tt;return!e&&Ee(i,0,Ne),r.forEach(((e,t)=>n.call(s,l(e),l(t),o)))}}function Ye(e,t,n){return function(...s){const o=this.__v_raw,r=Ct(o),i=h(r),l="entries"===e||e===Symbol.iterator&&i,c="keys"===e&&i,a=o[e](...s),u=n?He:t?wt:Tt;return!t&&Ee(r,0,c?Ae:Ne),{next(){const{value:e,done:t}=a.next();return t?{value:e,done:t}:{value:l?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function et(e){return function(...t){return"delete"!==e&&("clear"===e?void 0:this)}}function tt(){const e={get(e){return We(this,e)},get size(){return ze(this)},has:Ke,add:Ge,set:Je,delete:Xe,clear:Qe,forEach:Ze(!1,!1)},t={get(e){return We(this,e,!1,!0)},get size(){return ze(this)},has:Ke,add:Ge,set:Je,delete:Xe,clear:Qe,forEach:Ze(!1,!0)},n={get(e){return We(this,e,!0)},get size(){return ze(this,!0)},has(e){return Ke.call(this,e,!0)},add:et("add"),set:et("set"),delete:et("delete"),clear:et("clear"),forEach:Ze(!0,!1)},s={get(e){return We(this,e,!0,!0)},get size(){return ze(this,!0)},has(e){return Ke.call(this,e,!0)},add:et("add"),set:et("set"),delete:et("delete"),clear:et("clear"),forEach:Ze(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=Ye(o,!1,!1),n[o]=Ye(o,!0,!1),t[o]=Ye(o,!1,!0),s[o]=Ye(o,!0,!0)})),[e,n,t,s]}const[nt,st,ot,rt]=tt();function it(e,t){const n=t?e?rt:ot:e?st:nt;return(t,s,o)=>"__v_isReactive"===s?!e:"__v_isReadonly"===s?e:"__v_raw"===s?t:Reflect.get(d(n,s)&&s in t?n:t,s,o)}const lt={get:it(!1,!1)},ct={get:it(!1,!0)},at={get:it(!0,!1)},ut={get:it(!0,!0)},dt=new WeakMap,pt=new WeakMap,ht=new WeakMap,ft=new WeakMap;function mt(e){return _t(e)?e:yt(e,!1,Ve,lt,dt)}function gt(e){return yt(e,!1,Ue,ct,pt)}function vt(e){return yt(e,!0,De,at,ht)}function yt(e,t,n,s,o){if(!b(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const r=o.get(e);if(r)return r;const i=(l=e).__v_skip||!Object.isExtensible(l)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(C(l));var l;if(0===i)return e;const c=new Proxy(e,2===i?s:n);return o.set(e,c),c}function bt(e){return _t(e)?bt(e.__v_raw):!(!e||!e.__v_isReactive)}function _t(e){return!(!e||!e.__v_isReadonly)}function St(e){return!(!e||!e.__v_isShallow)}function xt(e){return bt(e)||_t(e)}function Ct(e){const t=e&&e.__v_raw;return t?Ct(t):e}function kt(e){return $(e,"__v_skip",!0),e}const Tt=e=>b(e)?mt(e):e,wt=e=>b(e)?vt(e):e;class Nt{constructor(e,t,n,s){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new ue((()=>e(this._value)),(()=>Et(this,1))),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=n}get value(){const e=Ct(this);return At(e),e._cacheable&&!e.effect.dirty||L(e._value,e._value=e.effect.run())&&Et(e,2),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function At(e){me&&ie&&(e=Ct(e),xe(ie,e.dep||(e.dep=Te((()=>e.dep=void 0),e instanceof Nt?e:void 0))))}function Et(e,t=3,n){const s=(e=Ct(e)).dep;s&&ke(s,t)}function It(e){return!(!e||!0!==e.__v_isRef)}function Rt(e){return Ot(e,!1)}function Ot(e,t){return It(e)?e:new Ft(e,t)}class Ft{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:Ct(e),this._value=t?e:Tt(e)}get value(){return At(this),this._value}set value(e){const t=this.__v_isShallow||St(e)||_t(e);e=t?e:Ct(e),L(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Tt(e),Et(this,3))}}function Mt(e){return It(e)?e.value:e}const Lt={get:(e,t,n)=>Mt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return It(o)&&!It(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function Pt(e){return bt(e)?e:new Proxy(e,Lt)}class $t{constructor(e){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:n}=e((()=>At(this)),(()=>Et(this)));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}function Bt(e){return new $t(e)}class Vt{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0}get value(){const e=this._object[this._key];return void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return e=Ct(this._object),t=this._key,null==(n=we.get(e))?void 0:n.get(t);var e,t,n}}class Dt{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Ut(e,t,n){const s=e[t];return It(s)?s:new Vt(e,t,n)}function jt(e,t,n,s){let o;try{o=s?e(...s):e()}catch(r){qt(r,t,n)}return o}function Ht(e,t,n,s){if(g(e)){const o=jt(e,t,n,s);return o&&_(o)&&o.catch((e=>{qt(e,t,n)})),o}const o=[];for(let r=0;r>>1,o=zt[s],r=ln(o);rln(e)-ln(t))),Qt=0;Qtnull==e.id?1/0:e.id,cn=(e,t)=>{const n=ln(e)-ln(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function an(e){Kt=!1,Wt=!0,zt.sort(cn);try{for(Gt=0;Gtv(e)?e.trim():e))),t&&(r=s.map(B))}let c,a=o[c=M(t)]||o[c=M(I(t))];!a&&i&&(a=o[c=M(O(t))]),a&&Ht(a,e,6,r);const u=o[c+"Once"];if(u){if(e.emitted){if(e.emitted[c])return}else e.emitted={};e.emitted[c]=!0,Ht(u,e,6,r)}}function dn(e,t,n=!1){const s=t.emitsCache,o=s.get(e);if(void 0!==o)return o;const r=e.emits;let i={},l=!1;if(!g(e)){const s=e=>{const n=dn(e,t,!0);n&&(l=!0,c(i,n))};!n&&t.mixins.length&&t.mixins.forEach(s),e.extends&&s(e.extends),e.mixins&&e.mixins.forEach(s)}return r||l?(p(r)?r.forEach((e=>i[e]=null)):c(i,r),b(e)&&s.set(e,i),i):(b(e)&&s.set(e,null),null)}function pn(e,t){return!(!e||!i(t))&&(t=t.slice(2).replace(/Once$/,""),d(e,t[0].toLowerCase()+t.slice(1))||d(e,O(t))||d(e,t))}let hn=null,fn=null;function mn(e){const t=hn;return hn=e,fn=e&&e.type.__scopeId||null,t}function gn(e,t=hn,n){if(!t)return e;if(e._n)return e;const s=(...n)=>{s._d&&Ho(-1);const o=mn(t);let r;try{r=e(...n)}finally{mn(o),s._d&&Ho(1)}return r};return s._n=!0,s._c=!0,s._d=!0,s}function vn(e){const{type:t,vnode:n,proxy:s,withProxy:o,props:r,propsOptions:[i],slots:c,attrs:a,emit:u,render:d,renderCache:p,data:h,setupState:f,ctx:m,inheritAttrs:g}=e;let v,y;const b=mn(e);try{if(4&n.shapeFlag){const e=o||s;v=nr(d.call(e,e,p,r,f,h,m)),y=a}else{const e=t;0,v=nr(e(r,e.length>1?{attrs:a,slots:c,emit:u}:null)),y=t.props?a:yn(a)}}catch(S){Bo.length=0,qt(S,e,1),v=Zo(Po)}let _=v;if(y&&!1!==g){const e=Object.keys(y),{shapeFlag:t}=_;e.length&&7&t&&(i&&e.some(l)&&(y=bn(y,i)),_=er(_,y))}return n.dirs&&(_=er(_),_.dirs=_.dirs?_.dirs.concat(n.dirs):n.dirs),n.transition&&(_.transition=n.transition),v=_,mn(b),v}const yn=e=>{let t;for(const n in e)("class"===n||"style"===n||i(n))&&((t||(t={}))[n]=e[n]);return t},bn=(e,t)=>{const n={};for(const s in e)l(s)&&s.slice(9)in t||(n[s]=e[s]);return n};function _n(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let o=0;oe.__isSuspense;let Nn=0;const An={name:"Suspense",__isSuspense:!0,process(e,t,n,s,o,r,i,l,c,a){null==e?function(e,t,n,s,o,r,i,l,c){const{p:a,o:{createElement:u}}=c,d=u("div"),p=e.suspense=In(e,o,s,t,d,n,r,i,l,c);a(null,p.pendingBranch=e.ssContent,d,null,s,p,r,i),p.deps>0?(En(e,"onPending"),En(e,"onFallback"),a(null,e.ssFallback,t,n,s,null,r,i),Fn(p,e.ssFallback)):p.resolve(!1,!0)}(t,n,s,o,r,i,l,c,a):function(e,t,n,s,o,r,i,l,{p:c,um:a,o:{createElement:u}}){const d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;const p=t.ssContent,h=t.ssFallback,{activeBranch:f,pendingBranch:m,isInFallback:g,isHydrating:v}=d;if(m)d.pendingBranch=p,zo(p,m)?(c(m,p,d.hiddenContainer,null,o,d,r,i,l),d.deps<=0?d.resolve():g&&(v||(c(f,h,n,s,o,null,r,i,l),Fn(d,h)))):(d.pendingId=Nn++,v?(d.isHydrating=!1,d.activeBranch=m):a(m,o,d),d.deps=0,d.effects.length=0,d.hiddenContainer=u("div"),g?(c(null,p,d.hiddenContainer,null,o,d,r,i,l),d.deps<=0?d.resolve():(c(f,h,n,s,o,null,r,i,l),Fn(d,h))):f&&zo(p,f)?(c(f,p,n,s,o,d,r,i,l),d.resolve(!0)):(c(null,p,d.hiddenContainer,null,o,d,r,i,l),d.deps<=0&&d.resolve()));else if(f&&zo(p,f))c(f,p,n,s,o,d,r,i,l),Fn(d,p);else if(En(t,"onPending"),d.pendingBranch=p,d.pendingId=512&p.shapeFlag?p.component.suspenseId:Nn++,c(null,p,d.hiddenContainer,null,o,d,r,i,l),d.deps<=0)d.resolve();else{const{timeout:e,pendingId:t}=d;e>0?setTimeout((()=>{d.pendingId===t&&d.fallback(h)}),e):0===e&&d.fallback(h)}}(e,t,n,s,o,i,l,c,a)},hydrate:function(e,t,n,s,o,r,i,l,c){const a=t.suspense=In(t,s,n,e.parentNode,document.createElement("div"),null,o,r,i,l,!0),u=c(e,a.pendingBranch=t.ssContent,n,a,r,i);0===a.deps&&a.resolve(!1,!0);return u},create:In,normalize:function(e){const{shapeFlag:t,children:n}=e,s=32&t;e.ssContent=Rn(s?n.default:n),e.ssFallback=s?Rn(n.fallback):Zo(Po)}};function En(e,t){const n=e.props&&e.props[t];g(n)&&n()}function In(e,t,n,s,o,r,i,l,c,a,u=!1){const{p:d,m:p,um:h,n:f,o:{parentNode:m,remove:g}}=a;let v;const y=function(e){var t;return null!=(null==(t=e.props)?void 0:t.suspensible)&&!1!==e.props.suspensible}(e);y&&(null==t?void 0:t.pendingBranch)&&(v=t.pendingId,t.deps++);const b=e.props?V(e.props.timeout):void 0,_={vnode:e,parent:t,parentComponent:n,namespace:i,container:s,hiddenContainer:o,anchor:r,deps:0,pendingId:0,timeout:"number"==typeof b?b:-1,activeBranch:null,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){const{vnode:s,activeBranch:o,pendingBranch:r,pendingId:i,effects:l,parentComponent:c,container:a}=_;let u=!1;if(_.isHydrating)_.isHydrating=!1;else if(!e){u=o&&r.transition&&"out-in"===r.transition.mode,u&&(o.transition.afterLeave=()=>{i===_.pendingId&&(p(r,a,f(o),0),sn(l))});let{anchor:e}=_;o&&(e=f(o),h(o,c,_,!0)),u||p(r,a,e,0)}Fn(_,r),_.pendingBranch=null,_.isInFallback=!1;let d=_.parent,m=!1;for(;d;){if(d.pendingBranch){d.effects.push(...l),m=!0;break}d=d.parent}m||u||sn(l),_.effects=[],y&&t&&t.pendingBranch&&v===t.pendingId&&(t.deps--,0!==t.deps||n||t.resolve()),En(s,"onResolve")},fallback(e){if(!_.pendingBranch)return;const{vnode:t,activeBranch:n,parentComponent:s,container:o,namespace:r}=_;En(t,"onFallback");const i=f(n),a=()=>{_.isInFallback&&(d(null,e,o,i,s,null,r,l,c),Fn(_,e))},u=e.transition&&"out-in"===e.transition.mode;u&&(n.transition.afterLeave=a),_.isInFallback=!0,h(n,s,null,!0),u||a()},move(e,t,n){_.activeBranch&&p(_.activeBranch,e,t,n),_.container=e},next:()=>_.activeBranch&&f(_.activeBranch),registerDep(e,t){const n=!!_.pendingBranch;n&&_.deps++;const s=e.vnode.el;e.asyncDep.catch((t=>{qt(t,e,0)})).then((o=>{if(e.isUnmounted||_.isUnmounted||_.pendingId!==e.suspenseId)return;e.asyncResolved=!0;const{vnode:r}=e;br(e,o,!1),s&&(r.el=s);const l=!s&&e.subTree.el;t(e,r,m(s||e.subTree.el),s?null:f(e.subTree),_,i,c),l&&g(l),Sn(e,r.el),n&&0==--_.deps&&_.resolve()}))},unmount(e,t){_.isUnmounted=!0,_.activeBranch&&h(_.activeBranch,n,e,t),_.pendingBranch&&h(_.pendingBranch,n,e,t)}};return _}function Rn(e){let t;if(g(e)){const n=jo&&e._c;n&&(e._d=!1,Do()),e=e(),n&&(e._d=!0,t=Vo,Uo())}if(p(e)){const t=function(e){let t;for(let n=0;nt!==e))),e}function On(e,t){t&&t.pendingBranch?p(e)?t.effects.push(...e):t.effects.push(e):sn(e)}function Fn(e,t){e.activeBranch=t;const{vnode:n,parentComponent:s}=e,o=n.el=t.el;s&&s.subTree===n&&(s.vnode.el=o,Sn(s,o))}const Mn=Symbol.for("v-scx");function Ln(e,t){return Vn(e,null,{flush:"post"})}function Pn(e,t){return Vn(e,null,{flush:"sync"})}const $n={};function Bn(e,t,n){return Vn(e,t,n)}function Vn(e,t,{immediate:s,deep:r,flush:i,once:l}=n){var c;if(t&&l){const e=t;t=(...t)=>{e(...t),x()}}const u=ae()===(null==(c=ar)?void 0:c.scope)?ar:null;let d,h,f=!1,m=!1;if(It(e)?(d=()=>e.value,f=St(e)):bt(e)?(d=()=>e,r=!0):p(e)?(m=!0,f=e.some((e=>bt(e)||St(e))),d=()=>e.map((e=>It(e)?e.value:bt(e)?jn(e):g(e)?jt(e,u,2):void 0))):d=g(e)?t?()=>jt(e,u,2):()=>{if(!u||!u.isUnmounted)return h&&h(),Ht(e,u,3,[v])}:o,t&&r){const e=d;d=()=>jn(e())}let v=e=>{h=S.onStop=()=>{jt(e,u,4),h=S.onStop=void 0}},y=m?new Array(e.length).fill($n):$n;const b=()=>{if(S.active&&S.dirty)if(t){const e=S.run();(r||f||(m?e.some(((e,t)=>L(e,y[t]))):L(e,y)))&&(h&&h(),Ht(t,u,3,[e,y===$n?void 0:m&&y[0]===$n?[]:y,v]),y=e)}else S.run()};let _;b.allowRecurse=!!t,"sync"===i?_=b:"post"===i?_=()=>yo(b,u&&u.suspense):(b.pre=!0,u&&(b.id=u.uid),_=()=>tn(b));const S=new ue(d,o,_),x=()=>{S.stop(),u&&u.scope&&a(u.scope.effects,S)};return t?s?b():y=S.run():"post"===i?yo(S.run.bind(S),u&&u.suspense):S.run(),x}function Dn(e,t,n){const s=this.proxy,o=v(e)?e.includes(".")?Un(s,e):()=>s[e]:e.bind(s,s);let r;g(t)?r=t:(r=t.handler,n=t);const i=ar;hr(this);const l=Vn(o,r.bind(s),n);return i?hr(i):fr(),l}function Un(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e{jn(e,t)}));else if(k(e))for(const n in e)jn(e[n],t);return e}function Hn(e,t,n,s){const o=e.dirs,r=t&&t.dirs;for(let i=0;i{e.isMounted=!0})),_s((()=>{e.isUnmounting=!0})),e}const zn=[Function,Array],Gn={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:zn,onEnter:zn,onAfterEnter:zn,onEnterCancelled:zn,onBeforeLeave:zn,onLeave:zn,onAfterLeave:zn,onLeaveCancelled:zn,onBeforeAppear:zn,onAppear:zn,onAfterAppear:zn,onAppearCancelled:zn},Jn={name:"BaseTransition",props:Gn,setup(e,{slots:t}){const n=ur(),s=Kn();let o;return()=>{const r=t.default&&ts(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1)for(const e of r)if(e.type!==Po){i=e;break}const l=Ct(e),{mode:c}=l;if(s.isLeaving)return Zn(i);const a=Yn(i);if(!a)return Zn(i);const u=Qn(a,l,s,n);es(a,u);const d=n.subTree,p=d&&Yn(d);let h=!1;const{getTransitionKey:f}=a.type;if(f){const e=f();void 0===o?o=e:e!==o&&(o=e,h=!0)}if(p&&p.type!==Po&&(!zo(a,p)||h)){const e=Qn(p,l,s,n);if(es(p,e),"out-in"===c)return s.isLeaving=!0,e.afterLeave=()=>{s.isLeaving=!1,!1!==n.update.active&&(n.effect.dirty=!0,n.update())},Zn(i);"in-out"===c&&a.type!==Po&&(e.delayLeave=(e,t,n)=>{Xn(s,p)[String(p.key)]=p,e[qn]=()=>{t(),e[qn]=void 0,delete u.delayedLeave},u.delayedLeave=n})}return i}}};function Xn(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Qn(e,t,n,s){const{appear:o,mode:r,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:u,onBeforeLeave:d,onLeave:h,onAfterLeave:f,onLeaveCancelled:m,onBeforeAppear:g,onAppear:v,onAfterAppear:y,onAppearCancelled:b}=t,_=String(e.key),S=Xn(n,e),x=(e,t)=>{e&&Ht(e,s,9,t)},C=(e,t)=>{const n=t[1];x(e,t),p(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},k={mode:r,persisted:i,beforeEnter(t){let s=l;if(!n.isMounted){if(!o)return;s=g||l}t[qn]&&t[qn](!0);const r=S[_];r&&zo(e,r)&&r.el[qn]&&r.el[qn](),x(s,[t])},enter(e){let t=c,s=a,r=u;if(!n.isMounted){if(!o)return;t=v||c,s=y||a,r=b||u}let i=!1;const l=e[Wn]=t=>{i||(i=!0,x(t?r:s,[e]),k.delayedLeave&&k.delayedLeave(),e[Wn]=void 0)};t?C(t,[e,l]):l()},leave(t,s){const o=String(e.key);if(t[Wn]&&t[Wn](!0),n.isUnmounting)return s();x(d,[t]);let r=!1;const i=t[qn]=n=>{r||(r=!0,s(),x(n?m:f,[t]),t[qn]=void 0,S[o]===e&&delete S[o])};S[o]=e,h?C(h,[t,i]):i()},clone:e=>Qn(e,t,n,s)};return k}function Zn(e){if(rs(e))return(e=er(e)).children=null,e}function Yn(e){return rs(e)?e.children?e.children[0]:void 0:e}function es(e,t){6&e.shapeFlag&&e.component?es(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ts(e,t=!1,n){let s=[],o=0;for(let r=0;r1)for(let r=0;rc({name:e.name},t,{setup:e}))():e}const ss=e=>!!e.type.__asyncLoader +/*! #__NO_SIDE_EFFECTS__ */;function os(e,t){const{ref:n,props:s,children:o,ce:r}=t.vnode,i=Zo(e,s,o);return i.ref=n,i.ce=r,delete t.vnode.ce,i}const rs=e=>e.type.__isKeepAlive,is={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=ur(),s=n.ctx,o=new Map,r=new Set;let i=null;const l=n.suspense,{renderer:{p:c,m:a,um:u,o:{createElement:d}}}=s,p=d("div");function h(e){ps(e),u(e,n,l,!0)}function f(e){o.forEach(((t,n)=>{const s=kr(t.type);!s||e&&e(s)||m(n)}))}function m(e){const t=o.get(e);i&&zo(t,i)?i&&ps(i):h(t),o.delete(e),r.delete(e)}s.activate=(e,t,n,s,o)=>{const r=e.component;a(e,t,n,0,l),c(r.vnode,e,t,n,r,l,s,e.slotScopeIds,o),yo((()=>{r.isDeactivated=!1,r.a&&P(r.a);const t=e.props&&e.props.onVnodeMounted;t&&ir(t,r.parent,e)}),l)},s.deactivate=e=>{const t=e.component;a(e,p,null,1,l),yo((()=>{t.da&&P(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&ir(n,t.parent,e),t.isDeactivated=!0}),l)},Bn((()=>[e.include,e.exclude]),(([e,t])=>{e&&f((t=>ls(e,t))),t&&f((e=>!ls(t,e)))}),{flush:"post",deep:!0});let g=null;const v=()=>{null!=g&&o.set(g,hs(n.subTree))};return vs(v),bs(v),_s((()=>{o.forEach((e=>{const{subTree:t,suspense:s}=n,o=hs(t);if(e.type!==o.type||e.key!==o.key)h(e);else{ps(o);const e=o.component.da;e&&yo(e,s)}}))})),()=>{if(g=null,!t.default)return null;const n=t.default(),s=n[0];if(n.length>1)return i=null,n;if(!(Ko(s)&&(4&s.shapeFlag||128&s.shapeFlag)))return i=null,s;let l=hs(s);const c=l.type,a=kr(ss(l)?l.type.__asyncResolved||{}:c),{include:u,exclude:d,max:p}=e;if(u&&(!a||!ls(u,a))||d&&a&&ls(d,a))return i=l,s;const h=null==l.key?c:l.key,f=o.get(h);return l.el&&(l=er(l),128&s.shapeFlag&&(s.ssContent=l)),g=h,f?(l.el=f.el,l.component=f.component,l.transition&&es(l,l.transition),l.shapeFlag|=512,r.delete(h),r.add(h)):(r.add(h),p&&r.size>parseInt(p,10)&&m(r.values().next().value)),l.shapeFlag|=256,i=l,wn(s.type)?s:l}}};function ls(e,t){return p(e)?e.some((e=>ls(e,t))):v(e)?e.split(",").includes(t):"[object RegExp]"===x(e)&&e.test(t)}function cs(e,t){us(e,"a",t)}function as(e,t){us(e,"da",t)}function us(e,t,n=ar){const s=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(fs(t,s,n),n){let e=n.parent;for(;e&&e.parent;)rs(e.parent.vnode)&&ds(s,t,n,e),e=e.parent}}function ds(e,t,n,s){const o=fs(t,e,s,!0);Ss((()=>{a(s[t],o)}),n)}function ps(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function hs(e){return 128&e.shapeFlag?e.ssContent:e}function fs(e,t,n=ar,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...s)=>{if(n.isUnmounted)return;ye(),hr(n);const o=Ht(t,n,e,s);return fr(),be(),o});return s?o.unshift(r):o.push(r),r}}const ms=e=>(t,n=ar)=>(!yr||"sp"===e)&&fs(e,((...e)=>t(...e)),n),gs=ms("bm"),vs=ms("m"),ys=ms("bu"),bs=ms("u"),_s=ms("bum"),Ss=ms("um"),xs=ms("sp"),Cs=ms("rtg"),ks=ms("rtc");function Ts(e,t=ar){fs("ec",e,t)}function ws(e){return e.some((e=>!Ko(e)||e.type!==Po&&!(e.type===Mo&&!ws(e.children))))?e:null}const Ns=e=>e?mr(e)?Cr(e)||e.proxy:Ns(e.parent):null,As=c(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ns(e.parent),$root:e=>Ns(e.root),$emit:e=>e.emit,$options:e=>Bs(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,tn(e.update)}),$nextTick:e=>e.n||(e.n=en.bind(e.proxy)),$watch:e=>Dn.bind(e)}),Es=(e,t)=>e!==n&&!e.__isScriptSetup&&d(e,t),Is={get({_:e},t){const{ctx:s,setupState:o,data:r,props:i,accessCache:l,type:c,appContext:a}=e;let u;if("$"!==t[0]){const c=l[t];if(void 0!==c)switch(c){case 1:return o[t];case 2:return r[t];case 4:return s[t];case 3:return i[t]}else{if(Es(o,t))return l[t]=1,o[t];if(r!==n&&d(r,t))return l[t]=2,r[t];if((u=e.propsOptions[0])&&d(u,t))return l[t]=3,i[t];if(s!==n&&d(s,t))return l[t]=4,s[t];Ms&&(l[t]=0)}}const p=As[t];let h,f;return p?("$attrs"===t&&Ee(e,0,t),p(e)):(h=c.__cssModules)&&(h=h[t])?h:s!==n&&d(s,t)?(l[t]=4,s[t]):(f=a.config.globalProperties,d(f,t)?f[t]:void 0)},set({_:e},t,s){const{data:o,setupState:r,ctx:i}=e;return Es(r,t)?(r[t]=s,!0):o!==n&&d(o,t)?(o[t]=s,!0):!d(e.props,t)&&(("$"!==t[0]||!(t.slice(1)in e))&&(i[t]=s,!0))},has({_:{data:e,setupState:t,accessCache:s,ctx:o,appContext:r,propsOptions:i}},l){let c;return!!s[l]||e!==n&&d(e,l)||Es(t,l)||(c=i[0])&&d(c,l)||d(o,l)||d(As,l)||d(r.config.globalProperties,l)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:d(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},Rs=c({},Is,{get(e,t){if(t!==Symbol.unscopables)return Is.get(e,t,e)},has:(e,t)=>"_"!==t[0]&&!j(t)});function Os(){const e=ur();return e.setupContext||(e.setupContext=xr(e))}function Fs(e){return p(e)?e.reduce(((e,t)=>(e[t]=null,e)),{}):e}let Ms=!0;function Ls(e){const t=Bs(e),n=e.proxy,s=e.ctx;Ms=!1,t.beforeCreate&&Ps(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:l,watch:c,provide:a,inject:u,created:d,beforeMount:h,mounted:f,beforeUpdate:m,updated:v,activated:y,deactivated:_,beforeUnmount:S,unmounted:x,render:C,renderTracked:k,renderTriggered:T,errorCaptured:w,serverPrefetch:N,expose:A,inheritAttrs:E,components:I,directives:R}=t;if(u&&function(e,t,n=o){p(e)&&(e=js(e));for(const s in e){const n=e[s];let o;o=b(n)?"default"in n?Qs(n.from||s,n.default,!0):Qs(n.from||s):Qs(n),It(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:e=>o.value=e}):t[s]=o}}(u,s,null),l)for(const o in l){const e=l[o];g(e)&&(s[o]=e.bind(n))}if(r){const t=r.call(n,n);b(t)&&(e.data=mt(t))}if(Ms=!0,i)for(const p in i){const e=i[p],t=g(e)?e.bind(n,n):g(e.get)?e.get.bind(n,n):o,r=!g(e)&&g(e.set)?e.set.bind(n):o,l=Tr({get:t,set:r});Object.defineProperty(s,p,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e})}if(c)for(const o in c)$s(c[o],s,n,o);if(a){const e=g(a)?a.call(n):a;Reflect.ownKeys(e).forEach((t=>{Xs(t,e[t])}))}function O(e,t){p(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(d&&Ps(d,e,"c"),O(gs,h),O(vs,f),O(ys,m),O(bs,v),O(cs,y),O(as,_),O(Ts,w),O(ks,k),O(Cs,T),O(_s,S),O(Ss,x),O(xs,N),p(A))if(A.length){const t=e.exposed||(e.exposed={});A.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});C&&e.render===o&&(e.render=C),null!=E&&(e.inheritAttrs=E),I&&(e.components=I),R&&(e.directives=R)}function Ps(e,t,n){Ht(p(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function $s(e,t,n,s){const o=s.includes(".")?Un(n,s):()=>n[s];if(v(e)){const n=t[e];g(n)&&Bn(o,n)}else if(g(e))Bn(o,e.bind(n));else if(b(e))if(p(e))e.forEach((e=>$s(e,t,n,s)));else{const s=g(e.handler)?e.handler.bind(n):t[e.handler];g(s)&&Bn(o,s,e)}}function Bs(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:i}}=e.appContext,l=r.get(t);let c;return l?c=l:o.length||n||s?(c={},o.length&&o.forEach((e=>Vs(c,e,i,!0))),Vs(c,t,i)):c=t,b(t)&&r.set(t,c),c}function Vs(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&Vs(e,r,n,!0),o&&o.forEach((t=>Vs(e,t,n,!0)));for(const i in t)if(s&&"expose"===i);else{const s=Ds[i]||n&&n[i];e[i]=s?s(e[i],t[i]):t[i]}return e}const Ds={data:Us,props:Ws,emits:Ws,methods:qs,computed:qs,beforeCreate:Hs,created:Hs,beforeMount:Hs,mounted:Hs,beforeUpdate:Hs,updated:Hs,beforeDestroy:Hs,beforeUnmount:Hs,destroyed:Hs,unmounted:Hs,activated:Hs,deactivated:Hs,errorCaptured:Hs,serverPrefetch:Hs,components:qs,directives:qs,watch:function(e,t){if(!e)return t;if(!t)return e;const n=c(Object.create(null),e);for(const s in t)n[s]=Hs(e[s],t[s]);return n},provide:Us,inject:function(e,t){return qs(js(e),js(t))}};function Us(e,t){return t?e?function(){return c(g(e)?e.call(this,this):e,g(t)?t.call(this,this):t)}:t:e}function js(e){if(p(e)){const t={};for(let n=0;n(r.has(e)||(e&&g(e.install)?(r.add(e),e.install(l,...t)):g(e)&&(r.add(e),e(l,...t))),l),mixin:e=>(o.mixins.includes(e)||o.mixins.push(e),l),component:(e,t)=>t?(o.components[e]=t,l):o.components[e],directive:(e,t)=>t?(o.directives[e]=t,l):o.directives[e],mount(r,c,a){if(!i){const u=Zo(n,s);return u.appContext=o,!0===a?a="svg":!1===a&&(a=void 0),c&&t?t(u,r):e(u,r,a),i=!0,l._container=r,r.__vue_app__=l,Cr(u.component)||u.component.proxy}},unmount(){i&&(e(null,l._container),delete l._container.__vue_app__)},provide:(e,t)=>(o.provides[e]=t,l),runWithContext(e){Js=l;try{return e()}finally{Js=null}}};return l}}let Js=null;function Xs(e,t){if(ar){let n=ar.provides;const s=ar.parent&&ar.parent.provides;s===n&&(n=ar.provides=Object.create(s)),n[e]=t}else;}function Qs(e,t,n=!1){const s=ar||hn;if(s||Js){const o=s?null==s.parent?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:Js._context.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&g(t)?t.call(s&&s.proxy):t}}function Zs(e,t,s,o){const[r,i]=e.propsOptions;let l,c=!1;if(t)for(let n in t){if(w(n))continue;const a=t[n];let u;r&&d(r,u=I(n))?i&&i.includes(u)?(l||(l={}))[u]=a:s[u]=a:pn(e.emitsOptions,n)||n in o&&a===o[n]||(o[n]=a,c=!0)}if(i){const t=Ct(s),o=l||n;for(let n=0;n{h=!0;const[n,s]=eo(e,t,!0);c(a,n),s&&u.push(...s)};!o&&t.mixins.length&&t.mixins.forEach(n),e.extends&&n(e.extends),e.mixins&&e.mixins.forEach(n)}if(!l&&!h)return b(e)&&r.set(e,s),s;if(p(l))for(let s=0;s-1,s[1]=n<0||t-1||d(s,"default"))&&u.push(e)}}}const f=[a,u];return b(e)&&r.set(e,f),f}function to(e){return"$"!==e[0]}function no(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:null===e?"null":""}function so(e,t){return no(e)===no(t)}function oo(e,t){return p(t)?t.findIndex((t=>so(t,e))):g(t)&&so(t,e)?0:-1}const ro=e=>"_"===e[0]||"$stable"===e,io=e=>p(e)?e.map(nr):[nr(e)],lo=(e,t,n)=>{if(t._n)return t;const s=gn(((...e)=>io(t(...e))),n);return s._c=!1,s},co=(e,t,n)=>{const s=e._ctx;for(const o in e){if(ro(o))continue;const n=e[o];if(g(n))t[o]=lo(0,n,s);else if(null!=n){const e=io(n);t[o]=()=>e}}},ao=(e,t)=>{const n=io(t);e.slots.default=()=>n},uo=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=Ct(t),$(t,"_",n)):co(t,e.slots={})}else e.slots={},t&&ao(e,t);$(e.slots,Go,1)},po=(e,t,s)=>{const{vnode:o,slots:r}=e;let i=!0,l=n;if(32&o.shapeFlag){const e=t._;e?s&&1===e?i=!1:(c(r,t),s||1!==e||delete r._):(i=!t.$stable,co(t,r)),l=t}else t&&(ao(e,t),l={default:1});if(i)for(const n in r)ro(n)||null!=l[n]||delete r[n]};function ho(e,t,s,o,r=!1){if(p(e))return void e.forEach(((e,n)=>ho(e,t&&(p(t)?t[n]:t),s,o,r)));if(ss(o)&&!r)return;const i=4&o.shapeFlag?Cr(o.component)||o.component.proxy:o.el,l=r?null:i,{i:c,r:u}=e,h=t&&t.r,f=c.refs===n?c.refs={}:c.refs,m=c.setupState;if(null!=h&&h!==u&&(v(h)?(f[h]=null,d(m,h)&&(m[h]=null)):It(h)&&(h.value=null)),g(u))jt(u,c,12,[l,f]);else{const t=v(u),n=It(u);if(t||n){const o=()=>{if(e.f){const n=t?d(m,u)?m[u]:f[u]:u.value;r?p(n)&&a(n,i):p(n)?n.includes(i)||n.push(i):t?(f[u]=[i],d(m,u)&&(m[u]=f[u])):(u.value=[i],e.k&&(f[e.k]=u.value))}else t?(f[u]=l,d(m,u)&&(m[u]=l)):n&&(u.value=l,e.k&&(f[e.k]=l))};l?(o.id=-1,yo(o,s)):o()}}}let fo=!1;const mo=e=>(e=>e.namespaceURI.includes("svg")&&"foreignObject"!==e.tagName)(e)?"svg":(e=>e.namespaceURI.includes("MathML"))(e)?"mathml":void 0,go=e=>8===e.nodeType;function vo(e){const{mt:t,p:n,o:{patchProp:s,createText:o,nextSibling:r,parentNode:l,remove:c,insert:a,createComment:u}}=e,d=(n,s,i,c,u,b=!1)=>{const _=go(n)&&"["===n.data,S=()=>m(n,s,i,c,u,_),{type:x,ref:C,shapeFlag:k,patchFlag:T}=s;let w=n.nodeType;s.el=n,-2===T&&(b=!1,s.dynamicChildren=null);let N=null;switch(x){case Lo:3!==w?""===s.children?(a(s.el=o(""),l(n),n),N=n):N=S():(n.data!==s.children&&(fo=!0,n.data=s.children),N=r(n));break;case Po:y(n)?(N=r(n),v(s.el=n.content.firstChild,n,i)):N=8!==w||_?S():r(n);break;case $o:if(_&&(w=(n=r(n)).nodeType),1===w||3===w){N=n;const e=!s.children.length;for(let t=0;t{l=l||!!t.dynamicChildren;const{type:a,props:u,patchFlag:d,shapeFlag:p,dirs:f,transition:m}=t,g="input"===a||"option"===a;if(g||-1!==d){f&&Hn(t,null,n,"created");let a,b=!1;if(y(e)){b=ko(o,m)&&n&&n.vnode.props&&n.vnode.props.appear;const s=e.content.firstChild;b&&m.beforeEnter(s),v(s,e,n),t.el=e=s}if(16&p&&(!u||!u.innerHTML&&!u.textContent)){let s=h(e.firstChild,t,e,n,o,r,l);for(;s;){fo=!0;const e=s;s=s.nextSibling,c(e)}}else 8&p&&e.textContent!==t.children&&(fo=!0,e.textContent=t.children);if(u)if(g||!l||48&d)for(const t in u)(g&&(t.endsWith("value")||"indeterminate"===t)||i(t)&&!w(t)||"."===t[0])&&s(e,t,null,u[t],void 0,void 0,n);else u.onClick&&s(e,"onClick",null,u.onClick,void 0,void 0,n);(a=u&&u.onVnodeBeforeMount)&&ir(a,n,t),f&&Hn(t,null,n,"beforeMount"),((a=u&&u.onVnodeMounted)||f||b)&&On((()=>{a&&ir(a,n,t),b&&m.enter(e),f&&Hn(t,null,n,"mounted")}),o)}return e.nextSibling},h=(e,t,s,o,r,i,l)=>{l=l||!!t.dynamicChildren;const c=t.children,a=c.length;for(let u=0;u{const{slotScopeIds:c}=t;c&&(o=o?o.concat(c):c);const d=l(e),p=h(r(e),t,d,n,s,o,i);return p&&go(p)&&"]"===p.data?r(t.anchor=p):(fo=!0,a(t.anchor=u("]"),d,p),p)},m=(e,t,s,o,i,a)=>{if(fo=!0,t.el=null,a){const t=g(e);for(;;){const n=r(e);if(!n||n===t)break;c(n)}}const u=r(e),d=l(e);return c(e),n(null,t,d,u,s,o,mo(d),i),u},g=(e,t="[",n="]")=>{let s=0;for(;e;)if((e=r(e))&&go(e)&&(e.data===t&&s++,e.data===n)){if(0===s)return r(e);s--}return e},v=(e,t,n)=>{const s=t.parentNode;s&&s.replaceChild(e,t);let o=n;for(;o;)o.vnode.el===t&&(o.vnode.el=o.subTree.el=e),o=o.parent},y=e=>1===e.nodeType&&"template"===e.tagName.toLowerCase();return[(e,t)=>{if(!t.hasChildNodes())return n(null,e,t),rn(),void(t._vnode=e);fo=!1,d(t.firstChild,e,null,null,null),rn(),t._vnode=e,fo&&console.error("Hydration completed but contains mismatches.")},d]}const yo=On;function bo(e){return So(e)}function _o(e){return So(e,vo)}function So(e,t){U().__VUE__=!0;const{insert:r,remove:i,patchProp:l,createElement:c,createText:a,createComment:u,setText:p,setElementText:h,parentNode:f,nextSibling:m,setScopeId:g=o,insertStaticContent:v}=e,y=(e,t,n,s=null,o=null,r=null,i=void 0,l=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!zo(e,t)&&(s=Q(e),K(e,o,r,!0),e=null),-2===t.patchFlag&&(c=!1,t.dynamicChildren=null);const{type:a,ref:u,shapeFlag:d}=t;switch(a){case Lo:b(e,t,n,s);break;case Po:S(e,t,n,s);break;case $o:null==e&&x(t,n,s,i);break;case Mo:F(e,t,n,s,o,r,i,l,c);break;default:1&d?C(e,t,n,s,o,r,i,l,c):6&d?M(e,t,n,s,o,r,i,l,c):(64&d||128&d)&&a.process(e,t,n,s,o,r,i,l,c,Y)}null!=u&&o&&ho(u,e&&e.ref,r,t||e,!t)},b=(e,t,n,s)=>{if(null==e)r(t.el=a(t.children),n,s);else{const n=t.el=e.el;t.children!==e.children&&p(n,t.children)}},S=(e,t,n,s)=>{null==e?r(t.el=u(t.children||""),n,s):t.el=e.el},x=(e,t,n,s)=>{[e.el,e.anchor]=v(e.children,t,n,s,e.el,e.anchor)},C=(e,t,n,s,o,r,i,l,c)=>{"svg"===t.type?i="svg":"math"===t.type&&(i="mathml"),null==e?k(t,n,s,o,r,i,l,c):A(e,t,o,r,i,l,c)},k=(e,t,n,s,o,i,a,u)=>{let d,p;const{props:f,shapeFlag:m,transition:g,dirs:v}=e;if(d=e.el=c(e.type,i,f&&f.is,f),8&m?h(d,e.children):16&m&&N(e.children,d,null,s,o,xo(e,i),a,u),v&&Hn(e,null,s,"created"),T(d,e,e.scopeId,a,s),f){for(const t in f)"value"===t||w(t)||l(d,t,null,f[t],i,e.children,s,o,X);"value"in f&&l(d,"value",null,f.value,i),(p=f.onVnodeBeforeMount)&&ir(p,s,e)}v&&Hn(e,null,s,"beforeMount");const y=ko(o,g);y&&g.beforeEnter(d),r(d,t,n),((p=f&&f.onVnodeMounted)||y||v)&&yo((()=>{p&&ir(p,s,e),y&&g.enter(d),v&&Hn(e,null,s,"mounted")}),o)},T=(e,t,n,s,o)=>{if(n&&g(e,n),s)for(let r=0;r{for(let a=c;a{const a=t.el=e.el;let{patchFlag:u,dynamicChildren:d,dirs:p}=t;u|=16&e.patchFlag;const f=e.props||n,m=t.props||n;let g;if(s&&Co(s,!1),(g=m.onVnodeBeforeUpdate)&&ir(g,s,t,e),p&&Hn(t,e,s,"beforeUpdate"),s&&Co(s,!0),d?E(e.dynamicChildren,d,a,s,o,xo(t,r),i):c||j(e,t,a,null,s,o,xo(t,r),i,!1),u>0){if(16&u)R(a,t,f,m,s,o,r);else if(2&u&&f.class!==m.class&&l(a,"class",null,m.class,r),4&u&&l(a,"style",f.style,m.style,r),8&u){const n=t.dynamicProps;for(let t=0;t{g&&ir(g,s,t,e),p&&Hn(t,e,s,"updated")}),o)},E=(e,t,n,s,o,r,i)=>{for(let l=0;l{if(s!==o){if(s!==n)for(const n in s)w(n)||n in o||l(e,n,s[n],null,c,t.children,r,i,X);for(const n in o){if(w(n))continue;const a=o[n],u=s[n];a!==u&&"value"!==n&&l(e,n,u,a,c,t.children,r,i,X)}"value"in o&&l(e,"value",s.value,o.value,c)}},F=(e,t,n,s,o,i,l,c,u)=>{const d=t.el=e?e.el:a(""),p=t.anchor=e?e.anchor:a("");let{patchFlag:h,dynamicChildren:f,slotScopeIds:m}=t;m&&(c=c?c.concat(m):m),null==e?(r(d,n,s),r(p,n,s),N(t.children,n,p,o,i,l,c,u)):h>0&&64&h&&f&&e.dynamicChildren?(E(e.dynamicChildren,f,n,o,i,l,c),(null!=t.key||o&&t===o.subTree)&&To(e,t,!0)):j(e,t,n,p,o,i,l,c,u)},M=(e,t,n,s,o,r,i,l,c)=>{t.slotScopeIds=l,null==e?512&t.shapeFlag?o.ctx.activate(t,n,s,i,c):L(t,n,s,o,r,i,c):B(e,t,c)},L=(e,t,s,o,r,i,l)=>{const c=e.component=function(e,t,s){const o=e.type,r=(t?t.appContext:e.appContext)||lr,i={uid:cr++,vnode:e,type:o,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new le(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:eo(o,r),emitsOptions:dn(o,r),emit:null,emitted:null,propsDefaults:n,inheritAttrs:o.inheritAttrs,ctx:n,data:n,props:n,attrs:n,slots:n,refs:n,setupState:n,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};i.ctx={_:i},i.root=t?t.root:i,i.emit=un.bind(null,i),e.ce&&e.ce(i);return i}(e,o,r);if(rs(e)&&(c.ctx.renderer=Y),function(e,t=!1){t&&pr(t);const{props:n,children:s}=e.vnode,o=mr(e);(function(e,t,n,s=!1){const o={},r={};$(r,Go,1),e.propsDefaults=Object.create(null),Zs(e,t,o,r);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);e.props=n?s?o:gt(o):e.type.props?o:r,e.attrs=r})(e,n,o,t),uo(e,s);const r=o?function(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=kt(new Proxy(e.ctx,Is));const{setup:s}=n;if(s){const n=e.setupContext=s.length>1?xr(e):null;hr(e),ye();const o=jt(s,e,0,[e.props,n]);if(be(),fr(),_(o)){if(o.then(fr,fr),t)return o.then((n=>{br(e,n,t)})).catch((t=>{qt(t,e,0)}));e.asyncDep=o}else br(e,o,t)}else Sr(e,t)}(e,t):void 0;t&&pr(!1)}(c),c.asyncDep){if(r&&r.registerDep(c,V),!e.el){const e=c.subTree=Zo(Po);S(null,e,t,s)}}else V(c,e,t,s,r,i,l)},B=(e,t,n)=>{const s=t.component=e.component;if(function(e,t,n){const{props:s,children:o,component:r}=e,{props:i,children:l,patchFlag:c}=t,a=r.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&c>=0))return!(!o&&!l||l&&l.$stable)||s!==i&&(s?!i||_n(s,i,a):!!i);if(1024&c)return!0;if(16&c)return s?_n(s,i,a):!!i;if(8&c){const e=t.dynamicProps;for(let t=0;tGt&&zt.splice(t,1)}(s.update),s.effect.dirty=!0,s.update()}else t.el=e.el,s.vnode=t},V=(e,t,n,s,r,i,l)=>{const c=()=>{if(e.isMounted){let{next:t,bu:n,u:s,parent:o,vnode:a}=e;{const n=wo(e);if(n)return t&&(t.el=a.el,D(e,t,l)),void n.asyncDep.then((()=>{e.isUnmounted||c()}))}let u,d=t;Co(e,!1),t?(t.el=a.el,D(e,t,l)):t=a,n&&P(n),(u=t.props&&t.props.onVnodeBeforeUpdate)&&ir(u,o,t,a),Co(e,!0);const p=vn(e),h=e.subTree;e.subTree=p,y(h,p,f(h.el),Q(h),e,r,i),t.el=p.el,null===d&&Sn(e,p.el),s&&yo(s,r),(u=t.props&&t.props.onVnodeUpdated)&&yo((()=>ir(u,o,t,a)),r)}else{let o;const{el:l,props:c}=t,{bm:a,m:u,parent:d}=e,p=ss(t);if(Co(e,!1),a&&P(a),!p&&(o=c&&c.onVnodeBeforeMount)&&ir(o,d,t),Co(e,!0),l&&te){const n=()=>{e.subTree=vn(e),te(l,e.subTree,e,r,null)};p?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{const o=e.subTree=vn(e);y(null,o,n,s,e,r,i),t.el=o.el}if(u&&yo(u,r),!p&&(o=c&&c.onVnodeMounted)){const e=t;yo((()=>ir(o,d,e)),r)}(256&t.shapeFlag||d&&ss(d.vnode)&&256&d.vnode.shapeFlag)&&e.a&&yo(e.a,r),e.isMounted=!0,t=n=s=null}},a=e.effect=new ue(c,o,(()=>tn(u)),e.scope),u=e.update=()=>{a.dirty&&a.run()};u.id=e.uid,Co(e,!0),u()},D=(e,t,n)=>{t.component=e;const s=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:i}}=e,l=Ct(o),[c]=e.propsOptions;let a=!1;if(!(s||i>0)||16&i){let s;Zs(e,t,o,r)&&(a=!0);for(const r in l)t&&(d(t,r)||(s=O(r))!==r&&d(t,s))||(c?!n||void 0===n[r]&&void 0===n[s]||(o[r]=Ys(c,l,r,void 0,e,!0)):delete o[r]);if(r!==l)for(const e in r)t&&d(t,e)||(delete r[e],a=!0)}else if(8&i){const n=e.vnode.dynamicProps;for(let s=0;s{const a=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:p,shapeFlag:f}=t;if(p>0){if(128&p)return void q(a,d,n,s,o,r,i,l,c);if(256&p)return void H(a,d,n,s,o,r,i,l,c)}8&f?(16&u&&X(a,o,r),d!==a&&h(n,d)):16&u?16&f?q(a,d,n,s,o,r,i,l,c):X(a,o,r,!0):(8&u&&h(n,""),16&f&&N(d,n,s,o,r,i,l,c))},H=(e,t,n,o,r,i,l,c,a)=>{const u=(e=e||s).length,d=(t=t||s).length,p=Math.min(u,d);let h;for(h=0;hd?X(e,r,i,!0,!1,p):N(t,n,o,r,i,l,c,a,p)},q=(e,t,n,o,r,i,l,c,a)=>{let u=0;const d=t.length;let p=e.length-1,h=d-1;for(;u<=p&&u<=h;){const s=e[u],o=t[u]=a?sr(t[u]):nr(t[u]);if(!zo(s,o))break;y(s,o,n,null,r,i,l,c,a),u++}for(;u<=p&&u<=h;){const s=e[p],o=t[h]=a?sr(t[h]):nr(t[h]);if(!zo(s,o))break;y(s,o,n,null,r,i,l,c,a),p--,h--}if(u>p){if(u<=h){const e=h+1,s=eh)for(;u<=p;)K(e[u],r,i,!0),u++;else{const f=u,m=u,g=new Map;for(u=m;u<=h;u++){const e=t[u]=a?sr(t[u]):nr(t[u]);null!=e.key&&g.set(e.key,u)}let v,b=0;const _=h-m+1;let S=!1,x=0;const C=new Array(_);for(u=0;u<_;u++)C[u]=0;for(u=f;u<=p;u++){const s=e[u];if(b>=_){K(s,r,i,!0);continue}let o;if(null!=s.key)o=g.get(s.key);else for(v=m;v<=h;v++)if(0===C[v-m]&&zo(s,t[v])){o=v;break}void 0===o?K(s,r,i,!0):(C[o-m]=u+1,o>=x?x=o:S=!0,y(s,t[o],n,null,r,i,l,c,a),b++)}const k=S?function(e){const t=e.slice(),n=[0];let s,o,r,i,l;const c=e.length;for(s=0;s>1,e[n[l]]0&&(t[s]=n[r-1]),n[r]=s)}}r=n.length,i=n[r-1];for(;r-- >0;)n[r]=i,i=t[i];return n}(C):s;for(v=k.length-1,u=_-1;u>=0;u--){const e=m+u,s=t[e],p=e+1{const{el:i,type:l,transition:c,children:a,shapeFlag:u}=e;if(6&u)return void W(e.component.subTree,t,n,s);if(128&u)return void e.suspense.move(t,n,s);if(64&u)return void l.move(e,t,n,Y);if(l===Mo){r(i,t,n);for(let e=0;e{let o;for(;e&&e!==t;)o=m(e),r(e,n,s),e=o;r(t,n,s)})(e,t,n);if(2!==s&&1&u&&c)if(0===s)c.beforeEnter(i),r(i,t,n),yo((()=>c.enter(i)),o);else{const{leave:e,delayLeave:s,afterLeave:o}=c,l=()=>r(i,t,n),a=()=>{e(i,(()=>{l(),o&&o()}))};s?s(i,l,a):a()}else r(i,t,n)},K=(e,t,n,s=!1,o=!1)=>{const{type:r,props:i,ref:l,children:c,dynamicChildren:a,shapeFlag:u,patchFlag:d,dirs:p}=e;if(null!=l&&ho(l,null,n,e,!0),256&u)return void t.ctx.deactivate(e);const h=1&u&&p,f=!ss(e);let m;if(f&&(m=i&&i.onVnodeBeforeUnmount)&&ir(m,t,e),6&u)J(e.component,n,s);else{if(128&u)return void e.suspense.unmount(n,s);h&&Hn(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,o,Y,s):a&&(r!==Mo||d>0&&64&d)?X(a,t,n,!1,!0):(r===Mo&&384&d||!o&&16&u)&&X(c,t,n),s&&z(e)}(f&&(m=i&&i.onVnodeUnmounted)||h)&&yo((()=>{m&&ir(m,t,e),h&&Hn(e,null,t,"unmounted")}),n)},z=e=>{const{type:t,el:n,anchor:s,transition:o}=e;if(t===Mo)return void G(n,s);if(t===$o)return void(({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=m(e),i(e),e=n;i(t)})(e);const r=()=>{i(n),o&&!o.persisted&&o.afterLeave&&o.afterLeave()};if(1&e.shapeFlag&&o&&!o.persisted){const{leave:t,delayLeave:s}=o,i=()=>t(n,r);s?s(e.el,r,i):i()}else r()},G=(e,t)=>{let n;for(;e!==t;)n=m(e),i(e),e=n;i(t)},J=(e,t,n)=>{const{bum:s,scope:o,update:r,subTree:i,um:l}=e;s&&P(s),o.stop(),r&&(r.active=!1,K(i,e,t,n)),l&&yo(l,t),yo((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},X=(e,t,n,s=!1,o=!1,r=0)=>{for(let i=r;i6&e.shapeFlag?Q(e.component.subTree):128&e.shapeFlag?e.suspense.next():m(e.anchor||e.el),Z=(e,t,n)=>{null==e?t._vnode&&K(t._vnode,null,null,!0):y(t._vnode||null,e,t,null,null,null,n),on(),rn(),t._vnode=e},Y={p:y,um:K,m:W,r:z,mt:L,mc:N,pc:j,pbc:E,n:Q,o:e};let ee,te;return t&&([ee,te]=t(Y)),{render:Z,hydrate:ee,createApp:Gs(Z,ee)}}function xo({type:e,props:t},n){return"svg"===n&&"foreignObject"===e||"mathml"===n&&"annotation-xml"===e&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Co({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ko(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function To(e,t,n=!1){const s=e.children,o=t.children;if(p(s)&&p(o))for(let r=0;re&&(e.disabled||""===e.disabled),Ao=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,Eo=e=>"function"==typeof MathMLElement&&e instanceof MathMLElement,Io=(e,t)=>{const n=e&&e.to;if(v(n)){if(t){return t(n)}return null}return n};function Ro(e,t,n,{o:{insert:s},m:o},r=2){0===r&&s(e.targetAnchor,t,n);const{el:i,anchor:l,shapeFlag:c,children:a,props:u}=e,d=2===r;if(d&&s(i,t,n),(!d||No(u))&&16&c)for(let p=0;p{16&v&&u(y,e,t,o,r,i,l,c)};g?b(n,a):d&&b(d,p)}else{t.el=e.el;const s=t.anchor=e.anchor,u=t.target=e.target,h=t.targetAnchor=e.targetAnchor,m=No(e.props),v=m?n:u,y=m?s:h;if("svg"===i||Ao(u)?i="svg":("mathml"===i||Eo(u))&&(i="mathml"),b?(p(e.dynamicChildren,b,v,o,r,i,l),To(e,t,!0)):c||d(e,t,v,y,o,r,i,l,!1),g)m?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Ro(t,n,s,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const e=t.target=Io(t.props,f);e&&Ro(t,e,null,a,0)}else m&&Ro(t,u,h,a,1)}Fo(t)},remove(e,t,n,s,{um:o,o:{remove:r}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:u,target:d,props:p}=e;if(d&&r(u),i&&r(a),16&l){const e=i||!No(p);for(let s=0;s0?Vo||s:null,Uo(),jo>0&&Vo&&Vo.push(e),e}function Wo(e,t,n,s,o){return qo(Zo(e,t,n,s,o,!0))}function Ko(e){return!!e&&!0===e.__v_isVNode}function zo(e,t){return e.type===t.type&&e.key===t.key}const Go="__vInternal",Jo=({key:e})=>null!=e?e:null,Xo=({ref:e,ref_key:t,ref_for:n})=>("number"==typeof e&&(e=""+e),null!=e?v(e)||It(e)||g(e)?{i:hn,r:e,k:t,f:!!n}:e:null);function Qo(e,t=null,n=null,s=0,o=null,r=(e===Mo?0:1),i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Jo(t),ref:t&&Xo(t),scopeId:fn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:hn};return l?(or(c,n),128&r&&e.normalize(c)):n&&(c.shapeFlag|=v(n)?8:16),jo>0&&!i&&Vo&&(c.patchFlag>0||6&r)&&32!==c.patchFlag&&Vo.push(c),c}const Zo=function(e,t=null,n=null,s=0,o=null,r=!1){e&&e!==Cn||(e=Po);if(Ko(e)){const s=er(e,t,!0);return n&&or(s,n),jo>0&&!r&&Vo&&(6&s.shapeFlag?Vo[Vo.indexOf(e)]=s:Vo.push(s)),s.patchFlag|=-2,s}i=e,g(i)&&"__vccOpts"in i&&(e=e.__vccOpts);var i;if(t){t=Yo(t);let{class:e,style:n}=t;e&&!v(e)&&(t.class=G(e)),b(n)&&(xt(n)&&!p(n)&&(n=c({},n)),t.style=H(n))}const l=v(e)?1:wn(e)?128:(e=>e.__isTeleport)(e)?64:b(e)?4:g(e)?2:0;return Qo(e,t,n,s,o,l,r,!0)};function Yo(e){return e?xt(e)||Go in e?c({},e):e:null}function er(e,t,n=!1){const{props:s,ref:o,patchFlag:r,children:i}=e,l=t?rr(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Jo(l),ref:t&&t.ref?n&&o?p(o)?o.concat(Xo(t)):[o,Xo(t)]:Xo(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Mo?-1===r?16:16|r:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&er(e.ssContent),ssFallback:e.ssFallback&&er(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function tr(e=" ",t=0){return Zo(Lo,null,e,t)}function nr(e){return null==e||"boolean"==typeof e?Zo(Po):p(e)?Zo(Mo,null,e.slice()):"object"==typeof e?sr(e):Zo(Lo,null,String(e))}function sr(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:er(e)}function or(e,t){let n=0;const{shapeFlag:s}=e;if(null==t)t=null;else if(p(t))n=16;else if("object"==typeof t){if(65&s){const n=t.default;return void(n&&(n._c&&(n._d=!1),or(e,n()),n._c&&(n._d=!0)))}{n=32;const s=t._;s||Go in t?3===s&&hn&&(1===hn.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=hn}}else g(t)?(t={default:t,_ctx:hn},n=32):(t=String(t),64&s?(n=16,t=[tr(t)]):n=8);e.children=t,e.shapeFlag|=n}function rr(...e){const t={};for(let n=0;nar||hn;let dr,pr;dr=e=>{ar=e},pr=e=>{yr=e};const hr=e=>{dr(e),e.scope.on()},fr=()=>{ar&&ar.scope.off(),dr(null)};function mr(e){return 4&e.vnode.shapeFlag}let gr,vr,yr=!1;function br(e,t,n){g(t)?e.render=t:b(t)&&(e.setupState=Pt(t)),Sr(e,n)}function _r(e){gr=e,vr=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,Rs))}}function Sr(e,t,n){const s=e.type;if(!e.render){if(!t&&gr&&!s.render){const t=s.template||Bs(e).template;if(t){const{isCustomElement:n,compilerOptions:o}=e.appContext.config,{delimiters:r,compilerOptions:i}=s,l=c(c({isCustomElement:n,delimiters:r},o),i);s.render=gr(t,l)}}e.render=s.render||o,vr&&vr(e)}hr(e),ye();try{Ls(e)}finally{be(),fr()}}function xr(e){const t=t=>{e.exposed=t||{}};return{get attrs(){return function(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get:(t,n)=>(Ee(e,0,"$attrs"),t[n])}))}(e)},slots:e.slots,emit:e.emit,expose:t}}function Cr(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Pt(kt(e.exposed)),{get:(t,n)=>n in t?t[n]:n in As?As[n](e):void 0,has:(e,t)=>t in e||t in As}))}function kr(e,t=!0){return g(e)?e.displayName||e.name:e.name||t&&e.__name}const Tr=(e,t)=>function(e,t,n=!1){let s,r;const i=g(e);return i?(s=e,r=o):(s=e.get,r=e.set),new Nt(s,r,i||!r,n)}(e,0,yr);function wr(e,t,n){const s=arguments.length;return 2===s?b(t)&&!p(t)?Ko(t)?Zo(e,null,[t]):Zo(e,t):Zo(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):3===s&&Ko(n)&&(n=[n]),Zo(e,t,n))}function Nr(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let s=0;s0&&Vo&&Vo.push(e),!0}const Ar="3.4.1",Er=o,Ir=o,Rr="undefined"!=typeof document?document:null,Or=Rr&&Rr.createElement("template"),Fr={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o="svg"===t?Rr.createElementNS("http://www.w3.org/2000/svg",e):"mathml"===t?Rr.createElementNS("http://www.w3.org/1998/Math/MathML",e):Rr.createElement(e,n?{is:n}:void 0);return"select"===e&&s&&null!=s.multiple&&o.setAttribute("multiple",s.multiple),o},createText:e=>Rr.createTextNode(e),createComment:e=>Rr.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Rr.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const i=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),o!==r&&(o=o.nextSibling););else{Or.innerHTML="svg"===s?`${e}`:"mathml"===s?`${e}`:e;const o=Or.content;if("svg"===s||"mathml"===s){const e=o.firstChild;for(;e.firstChild;)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Mr="transition",Lr="animation",Pr=Symbol("_vtc"),$r=(e,{slots:t})=>wr(Jn,jr(e),t);$r.displayName="Transition";const Br={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Vr=$r.props=c({},Gn,Br),Dr=(e,t=[])=>{p(e)?e.forEach((e=>e(...t))):e&&e(...t)},Ur=e=>!!e&&(p(e)?e.some((e=>e.length>1)):e.length>1);function jr(e){const t={};for(const c in e)c in Br||(t[c]=e[c]);if(!1===e.css)return t;const{name:n="v",type:s,duration:o,enterFromClass:r=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=r,appearActiveClass:u=i,appearToClass:d=l,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:f=`${n}-leave-to`}=e,m=function(e){if(null==e)return null;if(b(e))return[Hr(e.enter),Hr(e.leave)];{const t=Hr(e);return[t,t]}}(o),g=m&&m[0],v=m&&m[1],{onBeforeEnter:y,onEnter:_,onEnterCancelled:S,onLeave:x,onLeaveCancelled:C,onBeforeAppear:k=y,onAppear:T=_,onAppearCancelled:w=S}=t,N=(e,t,n)=>{Wr(e,t?d:l),Wr(e,t?u:i),n&&n()},A=(e,t)=>{e._isLeaving=!1,Wr(e,p),Wr(e,f),Wr(e,h),t&&t()},E=e=>(t,n)=>{const o=e?T:_,i=()=>N(t,e,n);Dr(o,[t,i]),Kr((()=>{Wr(t,e?a:r),qr(t,e?d:l),Ur(o)||Gr(t,s,g,i)}))};return c(t,{onBeforeEnter(e){Dr(y,[e]),qr(e,r),qr(e,i)},onBeforeAppear(e){Dr(k,[e]),qr(e,a),qr(e,u)},onEnter:E(!1),onAppear:E(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>A(e,t);qr(e,p),Zr(),qr(e,h),Kr((()=>{e._isLeaving&&(Wr(e,p),qr(e,f),Ur(x)||Gr(e,s,v,n))})),Dr(x,[e,n])},onEnterCancelled(e){N(e,!1),Dr(S,[e])},onAppearCancelled(e){N(e,!0),Dr(w,[e])},onLeaveCancelled(e){A(e),Dr(C,[e])}})}function Hr(e){return V(e)}function qr(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e[Pr]||(e[Pr]=new Set)).add(t)}function Wr(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const n=e[Pr];n&&(n.delete(t),n.size||(e[Pr]=void 0))}function Kr(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let zr=0;function Gr(e,t,n,s){const o=e._endId=++zr,r=()=>{o===e._endId&&s()};if(n)return setTimeout(r,n);const{type:i,timeout:l,propCount:c}=Jr(e,t);if(!i)return s();const a=i+"end";let u=0;const d=()=>{e.removeEventListener(a,p),r()},p=t=>{t.target===e&&++u>=c&&d()};setTimeout((()=>{u(n[e]||"").split(", "),o=s(`${Mr}Delay`),r=s(`${Mr}Duration`),i=Xr(o,r),l=s(`${Lr}Delay`),c=s(`${Lr}Duration`),a=Xr(l,c);let u=null,d=0,p=0;t===Mr?i>0&&(u=Mr,d=i,p=r.length):t===Lr?a>0&&(u=Lr,d=a,p=c.length):(d=Math.max(i,a),u=d>0?i>a?Mr:Lr:null,p=u?u===Mr?r.length:c.length:0);return{type:u,timeout:d,propCount:p,hasTransform:u===Mr&&/\b(transform|all)(,|$)/.test(s(`${Mr}Property`).toString())}}function Xr(e,t){for(;e.lengthQr(t)+Qr(e[n]))))}function Qr(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function Zr(){return document.body.offsetHeight}const Yr=Symbol("_vod"),ei={beforeMount(e,{value:t},{transition:n}){e[Yr]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):ti(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),ti(e,!0),s.enter(e)):s.leave(e,(()=>{ti(e,!1)})):ti(e,t))},beforeUnmount(e,{value:t}){ti(e,t)}};function ti(e,t){e.style.display=t?e[Yr]:"none"}const ni=Symbol("");function si(e,t){if(128&e.shapeFlag){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push((()=>{si(n.activeBranch,t)}))}for(;e.component;)e=e.component.subTree;if(1&e.shapeFlag&&e.el)oi(e.el,t);else if(e.type===Mo)e.children.forEach((e=>si(e,t)));else if(e.type===$o){let{el:n,anchor:s}=e;for(;n&&(oi(n,t),n!==s);)n=n.nextSibling}}function oi(e,t){if(1===e.nodeType){const n=e.style;let s="";for(const e in t)n.setProperty(`--${e}`,t[e]),s+=`--${e}: ${t[e]};`;n[ni]=s}}const ri=/\s*!important$/;function ii(e,t,n){if(p(n))n.forEach((n=>ii(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=function(e,t){const n=ci[t];if(n)return n;let s=I(t);if("filter"!==s&&s in e)return ci[t]=s;s=F(s);for(let o=0;o{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();Ht(function(e,t){if(p(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=gi(),n}(s,o);ui(e,n,i,l)}else i&&(!function(e,t,n,s){e.removeEventListener(t,n,s)}(e,n,i,l),r[t]=void 0)}}const hi=/(?:Once|Passive|Capture)$/;let fi=0;const mi=Promise.resolve(),gi=()=>fi||(mi.then((()=>fi=0)),fi=Date.now());const vi=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123; +/*! #__NO_SIDE_EFFECTS__ */ +function yi(e,t){const n=ns(e);class s extends _i{constructor(e){super(n,e,t)}}return s.def=n,s} +/*! #__NO_SIDE_EFFECTS__ */const bi="undefined"!=typeof HTMLElement?HTMLElement:class{};class _i extends bi{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this._ob=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):(this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,this._ob&&(this._ob.disconnect(),this._ob=null),en((()=>{this._connected||(Zi(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){this._resolved=!0;for(let n=0;n{for(const t of e)this._setAttr(t.attributeName)})),this._ob.observe(this,{attributes:!0});const e=(e,t=!1)=>{const{props:n,styles:s}=e;let o;if(n&&!p(n))for(const r in n){const e=n[r];(e===Number||e&&e.type===Number)&&(r in this._props&&(this._props[r]=V(this._props[r])),(o||(o=Object.create(null)))[I(r)]=!0)}this._numberProps=o,t&&this._resolveProps(e),this._applyStyles(s),this._update()},t=this._def.__asyncLoader;t?t().then((t=>e(t,!0))):e(this._def)}_resolveProps(e){const{props:t}=e,n=p(t)?t:Object.keys(t||{});for(const s of Object.keys(this))"_"!==s[0]&&n.includes(s)&&this._setProp(s,this[s],!0,!1);for(const s of n.map(I))Object.defineProperty(this,s,{get(){return this._getProp(s)},set(e){this._setProp(s,e)}})}_setAttr(e){let t=this.getAttribute(e);const n=I(e);this._numberProps&&this._numberProps[n]&&(t=V(t)),this._setProp(n,t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,s=!0){t!==this._props[e]&&(this._props[e]=t,s&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(O(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute(O(e),t+""):t||this.removeAttribute(O(e))))}_update(){Zi(this._createVNode(),this.shadowRoot)}_createVNode(){const e=Zo(this._def,c({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0;const t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};e.emit=(e,...n)=>{t(e,n),O(e)!==e&&t(O(e),n)};let n=this;for(;n=n&&(n.parentNode||n.host);)if(n instanceof _i){e.parent=n._instance,e.provides=n._instance.provides;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t)}))}}const Si=new WeakMap,xi=new WeakMap,Ci=Symbol("_moveCb"),ki=Symbol("_enterCb"),Ti={name:"TransitionGroup",props:c({},Vr,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=ur(),s=Kn();let o,r;return bs((()=>{if(!o.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!function(e,t,n){const s=e.cloneNode(),o=e[Pr];o&&o.forEach((e=>{e.split(/\s+/).forEach((e=>e&&s.classList.remove(e)))}));n.split(/\s+/).forEach((e=>e&&s.classList.add(e))),s.style.display="none";const r=1===t.nodeType?t:t.parentNode;r.appendChild(s);const{hasTransform:i}=Jr(s);return r.removeChild(s),i}(o[0].el,n.vnode.el,t))return;o.forEach(Ni),o.forEach(Ai);const s=o.filter(Ei);Zr(),s.forEach((e=>{const n=e.el,s=n.style;qr(n,t),s.transform=s.webkitTransform=s.transitionDuration="";const o=n[Ci]=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",o),n[Ci]=null,Wr(n,t))};n.addEventListener("transitionend",o)}))})),()=>{const i=Ct(e),l=jr(i);let c=i.tag||Mo;o=r,r=t.default?ts(t.default()):[];for(let e=0;e{const t=e.props["onUpdate:modelValue"]||!1;return p(t)?e=>P(t,e):t};function Ri(e){e.target.composing=!0}function Oi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Fi=Symbol("_assign"),Mi={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[Fi]=Ii(o);const r=s||o.props&&"number"===o.props.type;ui(e,t?"change":"input",(t=>{if(t.target.composing)return;let s=e.value;n&&(s=s.trim()),r&&(s=B(s)),e[Fi](s)})),n&&ui(e,"change",(()=>{e.value=e.value.trim()})),t||(ui(e,"compositionstart",Ri),ui(e,"compositionend",Oi),ui(e,"change",Oi))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:o}},r){if(e[Fi]=Ii(r),e.composing)return;const i=null==t?"":t;if((o||"number"===e.type?B(e.value):e.value)!==i){if(document.activeElement===e&&"range"!==e.type){if(n)return;if(s&&e.value.trim()===i)return}e.value=i}}},Li={deep:!0,created(e,t,n){e[Fi]=Ii(n),ui(e,"change",(()=>{const t=e._modelValue,n=Di(e),s=e.checked,o=e[Fi];if(p(t)){const e=ne(t,n),r=-1!==e;if(s&&!r)o(t.concat(n));else if(!s&&r){const n=[...t];n.splice(e,1),o(n)}}else if(f(t)){const e=new Set(t);s?e.add(n):e.delete(n),o(e)}else o(Ui(e,s))}))},mounted:Pi,beforeUpdate(e,t,n){e[Fi]=Ii(n),Pi(e,t,n)}};function Pi(e,{value:t,oldValue:n},s){e._modelValue=t,p(t)?e.checked=ne(t,s.props.value)>-1:f(t)?e.checked=t.has(s.props.value):t!==n&&(e.checked=te(t,Ui(e,!0)))}const $i={created(e,{value:t},n){e.checked=te(t,n.props.value),e[Fi]=Ii(n),ui(e,"change",(()=>{e[Fi](Di(e))}))},beforeUpdate(e,{value:t,oldValue:n},s){e[Fi]=Ii(s),t!==n&&(e.checked=te(t,s.props.value))}},Bi={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=f(t);ui(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?B(Di(e)):Di(e)));e[Fi](e.multiple?o?new Set(t):t:t[0])})),e[Fi]=Ii(s)},mounted(e,{value:t}){Vi(e,t)},beforeUpdate(e,t,n){e[Fi]=Ii(n)},updated(e,{value:t}){Vi(e,t)}};function Vi(e,t){const n=e.multiple;if(!n||p(t)||f(t)){for(let s=0,o=e.options.length;s-1:t.has(r);else if(te(Di(o),t))return void(e.selectedIndex!==s&&(e.selectedIndex=s))}n||-1===e.selectedIndex||(e.selectedIndex=-1)}}function Di(e){return"_value"in e?e._value:e.value}function Ui(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const ji={created(e,t,n){Hi(e,t,n,null,"created")},mounted(e,t,n){Hi(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){Hi(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){Hi(e,t,n,s,"updated")}};function Hi(e,t,n,s,o){const r=function(e,t){switch(e){case"SELECT":return Bi;case"TEXTAREA":return Mi;default:switch(t){case"checkbox":return Li;case"radio":return $i;default:return Mi}}}(e.tagName,n.props&&n.props.type)[o];r&&r(e,t,n,s)}const qi=["ctrl","shift","alt","meta"],Wi={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>qi.some((n=>e[`${n}Key`]&&!t.includes(n)))},Ki={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},zi=c({patchProp:(e,t,n,s,o,r,c,a,u)=>{const d="svg"===o;"class"===t?function(e,t,n){const s=e[Pr];s&&(t=(t?[t,...s]:[...s]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,s,d):"style"===t?function(e,t,n){const s=e.style,o=v(n);if(n&&!o){if(t&&!v(t))for(const e in t)null==n[e]&&ii(s,e,"");for(const e in n)ii(s,e,n[e])}else{const r=s.display;if(o){if(t!==n){const e=s[ni];e&&(n+=";"+e),s.cssText=n}}else t&&e.removeAttribute("style");Yr in e&&(s.display=r)}}(e,n,s):i(t)?l(t)||pi(e,t,0,s,c):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,s){if(s)return"innerHTML"===t||"textContent"===t||!!(t in e&&vi(t)&&g(n));if("spellcheck"===t||"draggable"===t||"translate"===t)return!1;if("form"===t)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if("type"===t&&"TEXTAREA"===e.tagName)return!1;if("width"===t||"height"===t){const t=e.tagName;if("IMG"===t||"VIDEO"===t||"CANVAS"===t||"SOURCE"===t)return!1}if(vi(t)&&v(n))return!1;return t in e}(e,t,s,d))?function(e,t,n,s,o,r,i){if("innerHTML"===t||"textContent"===t)return s&&i(s,o,r),void(e[t]=null==n?"":n);const l=e.tagName;if("value"===t&&"PROGRESS"!==l&&!l.includes("-")){e._value=n;const s=null==n?"":n;return("OPTION"===l?e.getAttribute("value"):e.value)!==s&&(e.value=s),void(null==n&&e.removeAttribute(t))}let c=!1;if(""===n||null==n){const s=typeof e[t];"boolean"===s?n=ee(n):null==n&&"string"===s?(n="",c=!0):"number"===s&&(n=0,c=!0)}try{e[t]=n}catch(a){}c&&e.removeAttribute(t)}(e,t,s,r,c,a,u):("true-value"===t?e._trueValue=s:"false-value"===t&&(e._falseValue=s),function(e,t,n,s,o){if(s&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(ai,t.slice(6,t.length)):e.setAttributeNS(ai,t,n);else{const s=Y(t);null==n||s&&!ee(n)?e.removeAttribute(t):e.setAttribute(t,s?"":n)}}(e,t,s,d))}},Fr);let Gi,Ji=!1;function Xi(){return Gi||(Gi=bo(zi))}function Qi(){return Gi=Ji?Gi:_o(zi),Ji=!0,Gi}const Zi=(...e)=>{Xi().render(...e)},Yi=(...e)=>{Qi().hydrate(...e)};function el(e){return e instanceof SVGElement?"svg":"function"==typeof MathMLElement&&e instanceof MathMLElement?"mathml":void 0}function tl(e){if(v(e)){return document.querySelector(e)}return e}const nl=o,sl=Symbol(""),ol=Symbol(""),rl=Symbol(""),il=Symbol(""),ll=Symbol(""),cl=Symbol(""),al=Symbol(""),ul=Symbol(""),dl=Symbol(""),pl=Symbol(""),hl=Symbol(""),fl=Symbol(""),ml=Symbol(""),gl=Symbol(""),vl=Symbol(""),yl=Symbol(""),bl=Symbol(""),_l=Symbol(""),Sl=Symbol(""),xl=Symbol(""),Cl=Symbol(""),kl=Symbol(""),Tl=Symbol(""),wl=Symbol(""),Nl=Symbol(""),Al=Symbol(""),El=Symbol(""),Il=Symbol(""),Rl=Symbol(""),Ol=Symbol(""),Fl=Symbol(""),Ml=Symbol(""),Ll=Symbol(""),Pl=Symbol(""),$l=Symbol(""),Bl=Symbol(""),Vl=Symbol(""),Dl=Symbol(""),Ul=Symbol(""),jl={[sl]:"Fragment",[ol]:"Teleport",[rl]:"Suspense",[il]:"KeepAlive",[ll]:"BaseTransition",[cl]:"openBlock",[al]:"createBlock",[ul]:"createElementBlock",[dl]:"createVNode",[pl]:"createElementVNode",[hl]:"createCommentVNode",[fl]:"createTextVNode",[ml]:"createStaticVNode",[gl]:"resolveComponent",[vl]:"resolveDynamicComponent",[yl]:"resolveDirective",[bl]:"resolveFilter",[_l]:"withDirectives",[Sl]:"renderList",[xl]:"renderSlot",[Cl]:"createSlots",[kl]:"toDisplayString",[Tl]:"mergeProps",[wl]:"normalizeClass",[Nl]:"normalizeStyle",[Al]:"normalizeProps",[El]:"guardReactiveProps",[Il]:"toHandlers",[Rl]:"camelize",[Ol]:"capitalize",[Fl]:"toHandlerKey",[Ml]:"setBlockTracking",[Ll]:"pushScopeId",[Pl]:"popScopeId",[$l]:"withCtx",[Bl]:"unref",[Vl]:"isRef",[Dl]:"withMemo",[Ul]:"isMemoSame"};const Hl={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0},source:""};function ql(e,t,n,s,o,r,i,l=!1,c=!1,a=!1,u=Hl){return e&&(l?(e.helper(cl),e.helper(ec(e.inSSR,a))):e.helper(Yl(e.inSSR,a)),i&&e.helper(_l)),{type:13,tag:t,props:n,children:s,patchFlag:o,dynamicProps:r,directives:i,isBlock:l,disableTracking:c,isComponent:a,loc:u}}function Wl(e,t=Hl){return{type:17,loc:t,elements:e}}function Kl(e,t=Hl){return{type:15,loc:t,properties:e}}function zl(e,t){return{type:16,loc:Hl,key:v(e)?Gl(e,!0):e,value:t}}function Gl(e,t=!1,n=Hl,s=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:s}}function Jl(e,t=Hl){return{type:8,loc:t,children:e}}function Xl(e,t=[],n=Hl){return{type:14,loc:n,callee:e,arguments:t}}function Ql(e,t=void 0,n=!1,s=!1,o=Hl){return{type:18,params:e,returns:t,newline:n,isSlot:s,loc:o}}function Zl(e,t,n,s=!0){return{type:19,test:e,consequent:t,alternate:n,newline:s,loc:Hl}}function Yl(e,t){return e||t?dl:pl}function ec(e,t){return e||t?al:ul}function tc(e,{helper:t,removeHelper:n,inSSR:s}){e.isBlock||(e.isBlock=!0,n(Yl(s,e.isComponent)),t(cl),t(ec(s,e.isComponent)))}const nc=new Uint8Array([123,123]),sc=new Uint8Array([125,125]);function oc(e){return e>=97&&e<=122||e>=65&&e<=90}function rc(e){return 32===e||10===e||9===e||12===e||13===e}function ic(e){return 47===e||62===e||rc(e)}function lc(e){const t=new Uint8Array(e.length);for(let n=0;n4===e.type&&e.isStatic;function hc(e){switch(e){case"Teleport":case"teleport":return ol;case"Suspense":case"suspense":return rl;case"KeepAlive":case"keep-alive":return il;case"BaseTransition":case"base-transition":return ll}}const fc=/^\d|[^\$\w]/,mc=e=>!fc.test(e),gc=/[A-Za-z_$\xA0-\uFFFF]/,vc=/[\.\?\w$\xA0-\uFFFF]/,yc=/\s+[.[]\s*|\s*[.[]\s+/g,bc=e=>{e=e.trim().replace(yc,(e=>e.trim()));let t=0,n=[],s=0,o=0,r=null;for(let i=0;i4===e.key.type&&e.key.content===s))}return n}function Rc(e,t){return`_${t}_${e.replace(/[^\w]/g,((t,n)=>"-"===t?"_":e.charCodeAt(n).toString()))}`}const Oc=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Fc={parseMode:"base",ns:0,delimiters:["{{","}}"],getNamespace:()=>0,isVoidTag:r,isPreTag:r,isCustomElement:r,onError:ac,onWarn:uc,comments:!1,prefixIdentifiers:!1};let Mc=Fc,Lc=null,Pc="",$c=null,Bc=null,Vc="",Dc=-1,Uc=-1,jc=0,Hc=!1,qc=null;const Wc=[],Kc=new class{constructor(e,t){this.stack=e,this.cbs=t,this.state=1,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=1,this.inRCDATA=!1,this.inXML=!1,this.inVPre=!1,this.newlines=[],this.mode=0,this.delimiterOpen=nc,this.delimiterClose=sc,this.delimiterIndex=-1,this.currentSequence=void 0,this.sequenceIndex=0}get inSFCRoot(){return 2===this.mode&&0===this.stack.length}reset(){this.state=1,this.mode=0,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=1,this.inRCDATA=!1,this.currentSequence=void 0,this.newlines.length=0,this.delimiterOpen=nc,this.delimiterClose=sc}getPos(e){let t=1,n=e+1;for(let s=this.newlines.length-1;s>=0;s--){const o=this.newlines[s];if(e>o){t=s+2,n=e-o;break}}return{column:n,line:t,offset:e}}peek(){return this.buffer.charCodeAt(this.index+1)}stateText(e){60===e?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=5,this.sectionStart=this.index):this.inVPre||e!==this.delimiterOpen[0]||(this.state=2,this.delimiterIndex=0,this.stateInterpolationOpen(e))}stateInterpolationOpen(e){if(e===this.delimiterOpen[this.delimiterIndex])if(this.delimiterIndex===this.delimiterOpen.length-1){const e=this.index+1-this.delimiterOpen.length;e>this.sectionStart&&this.cbs.ontext(this.sectionStart,e),this.state=3,this.sectionStart=e}else this.delimiterIndex++;else this.inRCDATA?(this.state=32,this.stateInRCDATA(e)):(this.state=1,this.stateText(e))}stateInterpolation(e){e===this.delimiterClose[0]&&(this.state=4,this.delimiterIndex=0,this.stateInterpolationClose(e))}stateInterpolationClose(e){e===this.delimiterClose[this.delimiterIndex]?this.delimiterIndex===this.delimiterClose.length-1?(this.cbs.oninterpolation(this.sectionStart,this.index+1),this.state=this.inRCDATA?32:1,this.sectionStart=this.index+1):this.delimiterIndex++:(this.state=3,this.stateInterpolation(e))}stateSpecialStartSequence(e){const t=this.sequenceIndex===this.currentSequence.length;if(t?ic(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.inRCDATA=!1;this.sequenceIndex=0,this.state=6,this.stateInTagName(e)}stateInRCDATA(e){if(this.sequenceIndex===this.currentSequence.length){if(62===e||rc(e)){const t=this.index-this.currentSequence.length;if(this.sectionStart=e||(28===this.state?this.currentSequence===cc.CdataEnd?this.cbs.oncdata(this.sectionStart,e):this.cbs.oncomment(this.sectionStart,e):6===this.state||11===this.state||18===this.state||17===this.state||12===this.state||13===this.state||14===this.state||15===this.state||16===this.state||20===this.state||19===this.state||21===this.state||9===this.state||this.cbs.ontext(this.sectionStart,e))}emitCodePoint(e,t){}}(Wc,{onerr:da,ontext(e,t){Qc(Jc(e,t),e,t)},ontextentity(e,t,n){Qc(e,t,n)},oninterpolation(e,t){if(Hc)return Qc(Jc(e,t),e,t);let n=e+Kc.delimiterOpen.length,s=t-Kc.delimiterClose.length;for(;rc(Pc.charCodeAt(n));)n++;for(;rc(Pc.charCodeAt(s-1));)s--;let o=Jc(n,s);o.includes("&")&&(o=Mc.decodeEntities(o,!1)),ia({type:5,content:ua(o,!1,la(n,s)),loc:la(e,t)})},onopentagname(e,t){const n=Jc(e,t);$c={type:1,tag:n,ns:Mc.getNamespace(n,Wc[0],Mc.ns),tagType:0,props:[],children:[],loc:la(e-1,t),codegenNode:void 0}},onopentagend(e){Xc(e)},onclosetag(e,t){const n=Jc(e,t);if(!Mc.isVoidTag(n)){let s=!1;for(let e=0;e(7===e.type?e.rawName:e.name)===t))},onattribend(e,t){if($c&&Bc){if(ca(Bc.loc,t),0!==e)if(Vc.includes("&")&&(Vc=Mc.decodeEntities(Vc,!0)),6===Bc.type)"class"===Bc.name&&(Vc=ra(Vc).trim()),Bc.value={type:2,content:Vc,loc:1===e?la(Dc,Uc):la(Dc-1,Uc+1)},Kc.inSFCRoot&&"template"===$c.tag&&"lang"===Bc.name&&Vc&&"html"!==Vc&&Kc.enterRCDATA(lc("{const o=t.start.offset+n;return ua(e,!1,la(o,o+e.length),0,s?1:0)},l={source:i(r.trim(),n.indexOf(r,o.length)),value:void 0,key:void 0,index:void 0,finalized:!1};let c=o.trim().replace(Gc,"").trim();const a=o.indexOf(c),u=c.match(zc);if(u){c=c.replace(zc,"").trim();const e=u[1].trim();let t;if(e&&(t=n.indexOf(e,a+c.length),l.key=i(e,t,!0)),u[2]){const s=u[2].trim();s&&(l.index=i(s,n.indexOf(s,l.key?t+e.length:a+c.length),!0))}}c&&(l.value=i(c,a,!0));return l}(Bc.exp))}7===Bc.type&&"pre"===Bc.name||$c.props.push(Bc)}Vc="",Dc=Uc=-1},oncomment(e,t){Mc.comments&&ia({type:3,content:Jc(e,t),loc:la(e-4,t+3)})},onend(){const e=Pc.length;for(let t=0;t64&&s<91)||hc(e)||(null==(n=Mc.isBuiltInComponent)?void 0:n.call(Mc,e))||Mc.isNativeTag&&!Mc.isNativeTag(e))return!0;var s;for(let o=0;o=0;)n--;return n}const ea=new Set(["if","else","else-if","for","slot"]);const ta=/\r\n/g;function na(e,t){var n,s;const o="preserve"!==Mc.whitespace;let r=!1;for(let i=0;i0){if(s>=2){e.codegenNode.patchFlag="-1",e.codegenNode=t.hoist(e.codegenNode),r++;continue}}else{const n=e.codegenNode;if(13===n.type){const s=Sa(n);if((!s||512===s||1===s)&&ba(e,t)>=2){const s=_a(e);s&&(n.props=t.hoist(s))}n.dynamicProps&&(n.dynamicProps=t.hoist(n.dynamicProps))}}}if(1===e.type){const n=1===e.tagType;n&&t.scopes.vSlot++,ma(e,t),n&&t.scopes.vSlot--}else if(11===e.type)ma(e,t,1===e.children.length);else if(9===e.type)for(let n=0;n1)for(let o=0;o`_${jl[N.helper(e)]}`,replaceNode(e){N.parent.children[N.childIndex]=N.currentNode=e},removeNode(e){const t=e?N.parent.children.indexOf(e):N.currentNode?N.childIndex:-1;e&&e!==N.currentNode?N.childIndex>t&&(N.childIndex--,N.onNodeRemoved()):(N.currentNode=null,N.onNodeRemoved()),N.parent.children.splice(t,1)},onNodeRemoved:()=>{},addIdentifiers(e){},removeIdentifiers(e){},hoist(e){v(e)&&(e=Gl(e)),N.hoists.push(e);const t=Gl(`_hoisted_${N.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache:(e,t=!1)=>function(e,t,n=!1){return{type:20,index:e,value:t,isVNode:n,loc:Hl}}(N.cached++,e,t)};return N}function Ca(e,t){const n=xa(e,t);ka(e,n),t.hoistStatic&&ha(e,n),t.ssr||function(e,t){const{helper:n}=t,{children:s}=e;if(1===s.length){const n=s[0];if(fa(e,n)&&n.codegenNode){const s=n.codegenNode;13===s.type&&tc(s,t),e.codegenNode=s}else e.codegenNode=n}else if(s.length>1){let s=64;e.codegenNode=ql(t,n(sl),void 0,e.children,s+"",void 0,void 0,!0,void 0,!1)}}(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.transformed=!0}function ka(e,t){t.currentNode=e;const{nodeTransforms:n}=t,s=[];for(let r=0;r{n--};for(;nt===e:t=>e.test(t);return(e,s)=>{if(1===e.type){const{props:o}=e;if(3===e.tagType&&o.some(kc))return;const r=[];for(let i=0;i`${jl[e]}: _${jl[e]}`;function Aa(e,{mode:t="function",prefixIdentifiers:n="module"===t,sourceMap:s=!1,filename:o="template.vue.html",scopeId:r=null,optimizeImports:i=!1,runtimeGlobalName:l="Vue",runtimeModuleName:c="vue",ssrRuntimeModuleName:a="vue/server-renderer",ssr:u=!1,isTS:d=!1,inSSR:p=!1}){const h={mode:t,prefixIdentifiers:n,sourceMap:s,filename:o,scopeId:r,optimizeImports:i,runtimeGlobalName:l,runtimeModuleName:c,ssrRuntimeModuleName:a,ssr:u,isTS:d,inSSR:p,source:e.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper:e=>`_${jl[e]}`,push(e,t=-2,n){h.code+=e},indent(){f(++h.indentLevel)},deindent(e=!1){e?--h.indentLevel:f(--h.indentLevel)},newline(){f(h.indentLevel)}};function f(e){h.push("\n"+" ".repeat(e),0)}return h}function Ea(e,t={}){const n=Aa(e,t);t.onContextCreated&&t.onContextCreated(n);const{mode:s,push:o,prefixIdentifiers:r,indent:i,deindent:l,newline:c,ssr:a}=n,u=Array.from(e.helpers),d=u.length>0,p=!r&&"module"!==s,h=n;!function(e,t){const{push:n,newline:s,runtimeGlobalName:o}=t,r=o,i=Array.from(e.helpers);if(i.length>0&&(n(`const _Vue = ${r}\n`,-1),e.hoists.length)){n(`const { ${[dl,pl,hl,fl,ml].filter((e=>i.includes(e))).map(Na).join(", ")} } = _Vue\n`,-1)}(function(e,t){if(!e.length)return;t.pure=!0;const{push:n,newline:s}=t;s();for(let o=0;o0)&&c()),e.directives.length&&(Ia(e.directives,"directive",n),e.temps>0&&c()),e.temps>0){o("let ");for(let t=0;t0?", ":""}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(o("\n",0),c()),a||o("return "),e.codegenNode?Fa(e.codegenNode,n):o("null"),p&&(l(),o("}")),l(),o("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}function Ia(e,t,{helper:n,push:s,newline:o,isTS:r}){const i=n("component"===t?gl:yl);for(let l=0;l3||!1;t.push("["),n&&t.indent(),Oa(e,t,n),n&&t.deindent(),t.push("]")}function Oa(e,t,n=!1,s=!0){const{push:o,newline:r}=t;for(let i=0;ie||"null"))}([r,i,l,c,a]),t),n(")"),d&&n(")");u&&(n(", "),Fa(u,t),n(")"))}(e,t);break;case 14:!function(e,t){const{push:n,helper:s,pure:o}=t,r=v(e.callee)?e.callee:s(e.callee);o&&n(wa);n(r+"(",-2,e),Oa(e.arguments,t),n(")")}(e,t);break;case 15:!function(e,t){const{push:n,indent:s,deindent:o,newline:r}=t,{properties:i}=e;if(!i.length)return void n("{}",-2,e);const l=i.length>1||!1;n(l?"{":"{ "),l&&s();for(let c=0;c "),(c||l)&&(n("{"),s());i?(c&&n("return "),p(i)?Ra(i,t):Fa(i,t)):l&&Fa(l,t);(c||l)&&(o(),n("}"));a&&n(")")}(e,t);break;case 19:!function(e,t){const{test:n,consequent:s,alternate:o,newline:r}=e,{push:i,indent:l,deindent:c,newline:a}=t;if(4===n.type){const e=!mc(n.content);e&&i("("),Ma(n,t),e&&i(")")}else i("("),Fa(n,t),i(")");r&&l(),t.indentLevel++,r||i(" "),i("? "),Fa(s,t),t.indentLevel--,r&&a(),r||i(" "),i(": ");const u=19===o.type;u||t.indentLevel++;Fa(o,t),u||t.indentLevel--;r&&c(!0)}(e,t);break;case 20:!function(e,t){const{push:n,helper:s,indent:o,deindent:r,newline:i}=t;n(`_cache[${e.index}] || (`),e.isVNode&&(o(),n(`${s(Ml)}(-1),`),i());n(`_cache[${e.index}] = `),Fa(e.value,t),e.isVNode&&(n(","),i(),n(`${s(Ml)}(1),`),i(),n(`_cache[${e.index}]`),r());n(")")}(e,t);break;case 21:Oa(e.body,t,!0,!1)}}function Ma(e,t){const{content:n,isStatic:s}=e;t.push(s?JSON.stringify(n):n,-3,e)}function La(e,t){for(let n=0;nfunction(e,t,n,s){if(!("else"===t.name||t.exp&&t.exp.content.trim())){const s=t.exp?t.exp.loc:e.loc;n.onError(dc(28,t.loc)),t.exp=Gl("true",!1,s)}if("if"===t.name){const o=Ba(e,t),r={type:9,loc:e.loc,branches:[o]};if(n.replaceNode(r),s)return s(r,o,!0)}else{const o=n.parent.children;let r=o.indexOf(e);for(;r-- >=-1;){const i=o[r];if(i&&3===i.type)n.removeNode(i);else{if(!i||2!==i.type||i.content.trim().length){if(i&&9===i.type){"else-if"===t.name&&void 0===i.branches[i.branches.length-1].condition&&n.onError(dc(30,e.loc)),n.removeNode();const o=Ba(e,t);i.branches.push(o);const r=s&&s(i,o,!1);ka(o,n),r&&r(),n.currentNode=null}else n.onError(dc(30,e.loc));break}n.removeNode(i)}}}}(e,t,n,((e,t,s)=>{const o=n.parent.children;let r=o.indexOf(e),i=0;for(;r-- >=0;){const e=o[r];e&&9===e.type&&(i+=e.branches.length)}return()=>{if(s)e.codegenNode=Va(t,i,n);else{const s=function(e){for(;;)if(19===e.type){if(19!==e.alternate.type)return e;e=e.alternate}else 20===e.type&&(e=e.value)}(e.codegenNode);s.alternate=Va(t,i+e.branches.length-1,n)}}}))));function Ba(e,t){const n=3===e.tagType;return{type:10,loc:e.loc,condition:"else"===t.name?void 0:t.exp,children:n&&!_c(e,"for")?e.children:[e],userKey:Sc(e,"key"),isTemplateIf:n}}function Va(e,t,n){return e.condition?Zl(e.condition,Da(e,t,n),Xl(n.helper(hl),['""',"true"])):Da(e,t,n)}function Da(e,t,n){const{helper:s}=n,o=zl("key",Gl(`${t}`,!1,Hl,2)),{children:r}=e,i=r[0];if(1!==r.length||1!==i.type){if(1===r.length&&11===i.type){const e=i.codegenNode;return Ec(e,o,n),e}{let t=64;return ql(n,s(sl),Kl([o]),r,t+"",void 0,void 0,!0,!1,!1,e.loc)}}{const e=i.codegenNode,t=14===(l=e).type&&l.callee===Dl?l.arguments[1].returns:l;return 13===t.type&&tc(t,n),Ec(t,o,n),e}var l}const Ua=Ta("for",((e,t,n)=>{const{helper:s,removeHelper:o}=n;return function(e,t,n,s){if(!t.exp)return void n.onError(dc(31,t.loc));const o=t.forParseResult;if(!o)return void n.onError(dc(32,t.loc));ja(o);const{scopes:r}=n,{source:i,value:l,key:c,index:a}=o,u={type:11,loc:t.loc,source:i,valueAlias:l,keyAlias:c,objectIndexAlias:a,parseResult:o,children:Tc(e)?e.children:[e]};n.replaceNode(u),r.vFor++;const d=s&&s(u);return()=>{r.vFor--,d&&d()}}(e,t,n,(t=>{const r=Xl(s(Sl),[t.source]),i=Tc(e),l=_c(e,"memo"),c=Sc(e,"key"),a=c&&(6===c.type?Gl(c.value.content,!0):c.exp),u=c?zl("key",a):null,d=4===t.source.type&&t.source.constType>0,p=d?64:c?128:256;return t.codegenNode=ql(n,s(sl),void 0,r,p+"",void 0,void 0,!0,!d,!1,e.loc),()=>{let c;const{children:p}=t,h=1!==p.length||1!==p[0].type,f=wc(e)?e:i&&1===e.children.length&&wc(e.children[0])?e.children[0]:null;if(f?(c=f.codegenNode,i&&u&&Ec(c,u,n)):h?c=ql(n,s(sl),u?Kl([u]):void 0,e.children,"64",void 0,void 0,!0,void 0,!1):(c=p[0].codegenNode,i&&u&&Ec(c,u,n),c.isBlock!==!d&&(c.isBlock?(o(cl),o(ec(n.inSSR,c.isComponent))):o(Yl(n.inSSR,c.isComponent))),c.isBlock=!d,c.isBlock?(s(cl),s(ec(n.inSSR,c.isComponent))):s(Yl(n.inSSR,c.isComponent))),l){const e=Ql(Ha(t.parseResult,[Gl("_cached")]));e.body={type:21,body:[Jl(["const _memo = (",l.exp,")"]),Jl(["if (_cached",...a?[" && _cached.key === ",a]:[],` && ${n.helperString(Ul)}(_cached, _memo)) return _cached`]),Jl(["const _item = ",c]),Gl("_item.memo = _memo"),Gl("return _item")],loc:Hl},r.arguments.push(e,Gl("_cache"),Gl(String(n.cached++)))}else r.arguments.push(Ql(Ha(t.parseResult),c,!0))}}))}));function ja(e,t){e.finalized||(e.finalized=!0)}function Ha({value:e,key:t,index:n},s=[]){return function(e){let t=e.length;for(;t--&&!e[t];);return e.slice(0,t+1).map(((e,t)=>e||Gl("_".repeat(t+1),!1)))}([e,t,n,...s])}const qa=Gl("undefined",!1),Wa=(e,t)=>{if(1===e.type&&(1===e.tagType||3===e.tagType)){const n=_c(e,"slot");if(n)return t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},Ka=(e,t,n,s)=>Ql(e,n,!1,!0,n.length?n[0].loc:s);function za(e,t,n=Ka){t.helper($l);const{children:s,loc:o}=e,r=[],i=[];let l=t.scopes.vSlot>0||t.scopes.vFor>0;const c=_c(e,"slot",!0);if(c){const{arg:e,exp:t}=c;e&&!pc(e)&&(l=!0),r.push(zl(e||Gl("default",!0),n(t,void 0,s,o)))}let a=!1,u=!1;const d=[],p=new Set;let h=0;for(let g=0;gzl("default",n(e,void 0,t,o));a?d.length&&d.some((e=>Xa(e)))&&(u?t.onError(dc(39,d[0].loc)):r.push(e(void 0,d))):r.push(e(void 0,s))}const f=l?2:Ja(e.children)?3:1;let m=Kl(r.concat(zl("_",Gl(f+"",!1))),o);return i.length&&(m=Xl(t.helper(Cl),[m,Wl(i)])),{slots:m,hasDynamicSlots:l}}function Ga(e,t,n){const s=[zl("name",e),zl("fn",t)];return null!=n&&s.push(zl("key",Gl(String(n),!0))),Kl(s)}function Ja(e){for(let t=0;tfunction(){if(1!==(e=t.currentNode).type||0!==e.tagType&&1!==e.tagType)return;const{tag:n,props:s}=e,o=1===e.tagType;let r=o?function(e,t,n=!1){let{tag:s}=e;const o=nu(s),r=Sc(e,"is");if(r)if(o){const e=6===r.type?r.value&&Gl(r.value.content,!0):r.exp;if(e)return Xl(t.helper(vl),[e])}else 6===r.type&&r.value.content.startsWith("vue:")&&(s=r.value.content.slice(4));const i=hc(s)||t.isBuiltInComponent(s);if(i)return n||t.helper(i),i;return t.helper(gl),t.components.add(s),Rc(s,"component")}(e,t):`"${n}"`;const i=b(r)&&r.callee===vl;let l,c,a,u,d,p,h=0,f=i||r===ol||r===rl||!o&&("svg"===n||"foreignObject"===n);if(s.length>0){const n=Ya(e,t,void 0,o,i);l=n.props,h=n.patchFlag,d=n.dynamicPropNames;const s=n.directives;p=s&&s.length?Wl(s.map((e=>function(e,t){const n=[],s=Qa.get(e);s?n.push(t.helperString(s)):(t.helper(yl),t.directives.add(e.name),n.push(Rc(e.name,"directive")));const{loc:o}=e;e.exp&&n.push(e.exp);e.arg&&(e.exp||n.push("void 0"),n.push(e.arg));if(Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));const t=Gl("true",!1,o);n.push(Kl(e.modifiers.map((e=>zl(e,t))),o))}return Wl(n,e.loc)}(e,t)))):void 0,n.shouldUseBlock&&(f=!0)}if(e.children.length>0){r===il&&(f=!0,h|=1024);if(o&&r!==ol&&r!==il){const{slots:n,hasDynamicSlots:s}=za(e,t);c=n,s&&(h|=1024)}else if(1===e.children.length&&r!==ol){const n=e.children[0],s=n.type,o=5===s||8===s;o&&0===ga(n,t)&&(h|=1),c=o||2===s?n:e.children}else c=e.children}0!==h&&(a=String(h),d&&d.length&&(u=function(e){let t="[";for(let n=0,s=e.length;n0;let f=!1,m=0,g=!1,v=!1,b=!1,_=!1,S=!1,x=!1;const C=[],k=e=>{u.length&&(d.push(Kl(eu(u),c)),u=[]),e&&d.push(e)},T=({key:e,value:n})=>{if(pc(e)){const r=e.content,l=i(r);if(!l||s&&!o||"onclick"===r.toLowerCase()||"onUpdate:modelValue"===r||w(r)||(_=!0),l&&w(r)&&(x=!0),l&&14===n.type&&(n=n.arguments[0]),20===n.type||(4===n.type||8===n.type)&&ga(n,t)>0)return;"ref"===r?g=!0:"class"===r?v=!0:"style"===r?b=!0:"key"===r||C.includes(r)||C.push(r),!s||"class"!==r&&"style"!==r||C.includes(r)||C.push(r)}else S=!0};for(let i=0;i0&&u.push(zl(Gl("ref_for",!0),Gl("true")))),"is"===n&&(nu(l)||r&&r.content.startsWith("vue:")))continue;u.push(zl(Gl(n,!0,s),Gl(r?r.content:"",i,r?r.loc:e)))}else{const{name:n,arg:i,exp:a,loc:g,modifiers:v}=o,b="bind"===n,_="on"===n;if("slot"===n){s||t.onError(dc(40,g));continue}if("once"===n||"memo"===n)continue;if("is"===n||b&&xc(i,"is")&&nu(l))continue;if(_&&r)continue;if((b&&xc(i,"key")||_&&h&&xc(i,"vue:before-update"))&&(f=!0),b&&xc(i,"ref")&&t.scopes.vFor>0&&u.push(zl(Gl("ref_for",!0),Gl("true"))),!i&&(b||_)){S=!0,a?b?(k(),d.push(a)):k({type:14,loc:g,callee:t.helper(Il),arguments:s?[a]:[a,"true"]}):t.onError(dc(b?34:35,g));continue}b&&v.includes("prop")&&(m|=32);const x=t.directiveTransforms[n];if(x){const{props:n,needRuntime:s}=x(o,e,t);!r&&n.forEach(T),_&&i&&!pc(i)?k(Kl(n,c)):u.push(...n),s&&(p.push(o),y(s)&&Qa.set(o,s))}else N(n)||(p.push(o),h&&(f=!0))}}let A;if(d.length?(k(),A=d.length>1?Xl(t.helper(Tl),d,c):d[0]):u.length&&(A=Kl(eu(u),c)),S?m|=16:(v&&!s&&(m|=2),b&&!s&&(m|=4),C.length&&(m|=8),_&&(m|=32)),f||0!==m&&32!==m||!(g||x||p.length>0)||(m|=512),!t.inSSR&&A)switch(A.type){case 15:let e=-1,n=-1,s=!1;for(let t=0;t{if(wc(e)){const{children:n,loc:s}=e,{slotName:o,slotProps:r}=function(e,t){let n,s='"default"';const o=[];for(let r=0;r0){const{props:s,directives:r}=Ya(e,t,o,!1,!1);n=s,r.length&&t.onError(dc(36,r[0].loc))}return{slotName:s,slotProps:n}}(e,t),i=[t.prefixIdentifiers?"_ctx.$slots":"$slots",o,"{}","undefined","true"];let l=2;r&&(i[2]=r,l=3),n.length&&(i[3]=Ql([],n,!1,!1,s),l=4),t.scopeId&&!t.slotted&&(l=5),i.splice(l),e.codegenNode=Xl(t.helper(xl),i,s)}};const ou=/^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,ru=(e,t,n,s)=>{const{loc:o,modifiers:r,arg:i}=e;let l;if(4===i.type)if(i.isStatic){let e=i.content;e.startsWith("vue:")&&(e=`vnode-${e.slice(4)}`);l=Gl(0!==t.tagType||e.startsWith("vnode")||!/[A-Z]/.test(e)?M(I(e)):`on:${e}`,!0,i.loc)}else l=Jl([`${n.helperString(Fl)}(`,i,")"]);else l=i,l.children.unshift(`${n.helperString(Fl)}(`),l.children.push(")");let c=e.exp;c&&!c.content.trim()&&(c=void 0);let a=n.cacheHandlers&&!c&&!n.inVOnce;if(c){const e=bc(c.content),t=!(e||ou.test(c.content)),n=c.content.includes(";");(t||a&&e)&&(c=Jl([`${t?"$event":"(...args)"} => ${n?"{":"("}`,c,n?"}":")"]))}let u={props:[zl(l,c||Gl("() => {}",!1,o))]};return s&&(u=s(u)),a&&(u.props[0].value=n.cache(u.props[0].value)),u.props.forEach((e=>e.key.isHandlerKey=!0)),u},iu=(e,t,n)=>{const{modifiers:s,loc:o}=e,r=e.arg;let{exp:i}=e;if(!i&&4===r.type){const t=I(r.content);i=e.exp=Gl(t,!1,r.loc)}return 4!==r.type?(r.children.unshift("("),r.children.push(') || ""')):r.isStatic||(r.content=`${r.content} || ""`),s.includes("camel")&&(4===r.type?r.content=r.isStatic?I(r.content):`${n.helperString(Rl)}(${r.content})`:(r.children.unshift(`${n.helperString(Rl)}(`),r.children.push(")"))),n.inSSR||(s.includes("prop")&&lu(r,"."),s.includes("attr")&&lu(r,"^")),!i||4===i.type&&!i.content.trim()?{props:[zl(r,Gl("",!0,o))]}:{props:[zl(r,i)]}},lu=(e,t)=>{4===e.type?e.content=e.isStatic?t+e.content:`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},cu=(e,t)=>{if(0===e.type||1===e.type||11===e.type||10===e.type)return()=>{const n=e.children;let s,o=!1;for(let e=0;e7===e.type&&!t.directiveTransforms[e.name])))))for(let e=0;e{if(1===e.type&&_c(e,"once",!0)){if(au.has(e)||t.inVOnce||t.inSSR)return;return au.add(e),t.inVOnce=!0,t.helper(Ml),()=>{t.inVOnce=!1;const e=t.currentNode;e.codegenNode&&(e.codegenNode=t.cache(e.codegenNode,!0))}}},du=(e,t,n)=>{const{exp:s,arg:o}=e;if(!s)return n.onError(dc(41,e.loc)),pu();const r=s.loc.source,i=4===s.type?s.content:r,l=n.bindingMetadata[r];if("props"===l||"props-aliased"===l)return pu();if(!i.trim()||!bc(i))return n.onError(dc(42,s.loc)),pu();const c=o||Gl("modelValue",!0),a=o?pc(o)?`onUpdate:${I(o.content)}`:Jl(['"onUpdate:" + ',o]):"onUpdate:modelValue";let u;u=Jl([`${n.isTS?"($event: any)":"$event"} => ((`,s,") = $event)"]);const d=[zl(c,e.exp),zl(a,u)];if(e.modifiers.length&&1===t.tagType){const t=e.modifiers.map((e=>(mc(e)?e:JSON.stringify(e))+": true")).join(", "),n=o?pc(o)?`${o.content}Modifiers`:Jl([o,' + "Modifiers"']):"modelModifiers";d.push(zl(n,Gl(`{ ${t} }`,!1,e.loc,2)))}return pu(d)};function pu(e=[]){return{props:e}}const hu=new WeakSet,fu=(e,t)=>{if(1===e.type){const n=_c(e,"memo");if(!n||hu.has(e))return;return hu.add(e),()=>{const s=e.codegenNode||t.currentNode.codegenNode;s&&13===s.type&&(1!==e.tagType&&tc(s,t),e.codegenNode=Xl(t.helper(Dl),[n.exp,Ql(void 0,s),"_cache",String(t.cached++)]))}}};function mu(e,t={}){const n=t.onError||ac,s="module"===t.mode;!0===t.prefixIdentifiers?n(dc(47)):s&&n(dc(48));t.cacheHandlers&&n(dc(49)),t.scopeId&&!s&&n(dc(50));const o=c({},t,{prefixIdentifiers:!1}),r=v(e)?pa(e,o):e,[i,l]=[[uu,$a,fu,Ua,su,Za,Wa,cu],{on:ru,bind:iu,model:du}];return Ca(r,c({},o,{nodeTransforms:[...i,...t.nodeTransforms||[]],directiveTransforms:c({},l,t.directiveTransforms||{})})),Ea(r,o)}const gu=Symbol(""),vu=Symbol(""),yu=Symbol(""),bu=Symbol(""),_u=Symbol(""),Su=Symbol(""),xu=Symbol(""),Cu=Symbol(""),ku=Symbol(""),Tu=Symbol("");var wu;let Nu;wu={[gu]:"vModelRadio",[vu]:"vModelCheckbox",[yu]:"vModelText",[bu]:"vModelSelect",[_u]:"vModelDynamic",[Su]:"withModifiers",[xu]:"withKeys",[Cu]:"vShow",[ku]:"Transition",[Tu]:"TransitionGroup"},Object.getOwnPropertySymbols(wu).forEach((e=>{jl[e]=wu[e]}));const Au={parseMode:"html",isVoidTag:Z,isNativeTag:e=>J(e)||X(e)||Q(e),isPreTag:e=>"pre"===e,decodeEntities:function(e,t=!1){return Nu||(Nu=document.createElement("div")),t?(Nu.innerHTML=`
`,Nu.children[0].getAttribute("foo")):(Nu.innerHTML=e,Nu.textContent)},isBuiltInComponent:e=>"Transition"===e||"transition"===e?ku:"TransitionGroup"===e||"transition-group"===e?Tu:void 0,getNamespace(e,t,n){let s=t?t.ns:n;if(t&&2===s)if("annotation-xml"===t.tag){if("svg"===e)return 1;t.props.some((e=>6===e.type&&"encoding"===e.name&&null!=e.value&&("text/html"===e.value.content||"application/xhtml+xml"===e.value.content)))&&(s=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&"mglyph"!==e&&"malignmark"!==e&&(s=0);else t&&1===s&&("foreignObject"!==t.tag&&"desc"!==t.tag&&"title"!==t.tag||(s=0));if(0===s){if("svg"===e)return 1;if("math"===e)return 2}return s}},Eu=(e,t)=>{const n=z(e);return Gl(JSON.stringify(n),!1,t,3)};function Iu(e,t){return dc(e,t)}const Ru=t("passive,once,capture"),Ou=t("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),Fu=t("left,right"),Mu=t("onkeyup,onkeydown,onkeypress",!0),Lu=(e,t)=>pc(e)&&"onclick"===e.content.toLowerCase()?Gl(t,!0):4!==e.type?Jl(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e,Pu=(e,t)=>{1!==e.type||0!==e.tagType||"script"!==e.tag&&"style"!==e.tag||t.removeNode()},$u=[e=>{1===e.type&&e.props.forEach(((t,n)=>{6===t.type&&"style"===t.name&&t.value&&(e.props[n]={type:7,name:"bind",arg:Gl("style",!0,t.loc),exp:Eu(t.value.content,t.loc),modifiers:[],loc:t.loc})}))}],Bu={cloak:()=>({props:[]}),html:(e,t,n)=>{const{exp:s,loc:o}=e;return s||n.onError(Iu(53,o)),t.children.length&&(n.onError(Iu(54,o)),t.children.length=0),{props:[zl(Gl("innerHTML",!0,o),s||Gl("",!0))]}},text:(e,t,n)=>{const{exp:s,loc:o}=e;return s||n.onError(Iu(55,o)),t.children.length&&(n.onError(Iu(56,o)),t.children.length=0),{props:[zl(Gl("textContent",!0),s?ga(s,n)>0?s:Xl(n.helperString(kl),[s],o):Gl("",!0))]}},model:(e,t,n)=>{const s=du(e,t,n);if(!s.props.length||1===t.tagType)return s;e.arg&&n.onError(Iu(58,e.arg.loc));const{tag:o}=t,r=n.isCustomElement(o);if("input"===o||"textarea"===o||"select"===o||r){let i=yu,l=!1;if("input"===o||r){const s=Sc(t,"type");if(s){if(7===s.type)i=_u;else if(s.value)switch(s.value.content){case"radio":i=gu;break;case"checkbox":i=vu;break;case"file":l=!0,n.onError(Iu(59,e.loc))}}else(function(e){return e.props.some((e=>!(7!==e.type||"bind"!==e.name||e.arg&&4===e.arg.type&&e.arg.isStatic)))})(t)&&(i=_u)}else"select"===o&&(i=bu);l||(s.needRuntime=n.helper(i))}else n.onError(Iu(57,e.loc));return s.props=s.props.filter((e=>!(4===e.key.type&&"modelValue"===e.key.content))),s},on:(e,t,n)=>ru(e,t,n,(t=>{const{modifiers:s}=e;if(!s.length)return t;let{key:o,value:r}=t.props[0];const{keyModifiers:i,nonKeyModifiers:l,eventOptionModifiers:c}=((e,t,n,s)=>{const o=[],r=[],i=[];for(let l=0;l{const{exp:s,loc:o}=e;return s||n.onError(Iu(61,o)),{props:[],needRuntime:n.helper(Cu)}}};const Vu=new WeakMap;function Du(e,t){if(!v(e)){if(!e.nodeType)return o;e=e.innerHTML}const s=e,r=function(e){let t=Vu.get(null!=e?e:n);return t||(t=Object.create(null),Vu.set(null!=e?e:n,t)),t}(t),i=r[s];if(i)return i;if("#"===e[0]){const t=document.querySelector(e);e=t?t.innerHTML:""}const l=c({hoistStatic:!0,onError:void 0,onWarn:o},t);l.isCustomElement||"undefined"==typeof customElements||(l.isCustomElement=e=>!!customElements.get(e));const{code:a}=function(e,t={}){return mu(e,c({},Au,t,{nodeTransforms:[Pu,...$u,...t.nodeTransforms||[]],directiveTransforms:c({},Bu,t.directiveTransforms||{}),transformHoist:null}))}(e,l),u=new Function(a)();return u._rc=!0,r[s]=u}return _r(Du),e.BaseTransition=Jn,e.BaseTransitionPropsValidators=Gn,e.Comment=Po,e.DeprecationTypes=null,e.EffectScope=le,e.ErrorCodes={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",WATCH_GETTER:2,2:"WATCH_GETTER",WATCH_CALLBACK:3,3:"WATCH_CALLBACK",WATCH_CLEANUP:4,4:"WATCH_CLEANUP",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER"},e.ErrorTypeStrings=null,e.Fragment=Mo,e.KeepAlive=is,e.ReactiveEffect=ue,e.Static=$o,e.Suspense=An,e.Teleport=Oo,e.Text=Lo,e.TrackOpTypes={GET:"get",HAS:"has",ITERATE:"iterate"},e.Transition=$r,e.TransitionGroup=wi,e.TriggerOpTypes={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},e.VueElement=_i,e.assertNumber=function(e,t){},e.callWithAsyncErrorHandling=Ht,e.callWithErrorHandling=jt,e.camelize=I,e.capitalize=F,e.cloneVNode=er,e.compatUtils=null,e.compile=Du,e.computed=Tr,e.createApp=(...e)=>{const t=Xi().createApp(...e),{mount:n}=t;return t.mount=e=>{const s=tl(e);if(!s)return;const o=t._component;g(o)||o.render||o.template||(o.template=s.innerHTML),s.innerHTML="";const r=n(s,!1,el(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),r},t},e.createBlock=Wo,e.createCommentVNode=function(e="",t=!1){return t?(Do(),Wo(Po,null,e)):Zo(Po,null,e)},e.createElementBlock=function(e,t,n,s,o,r){return qo(Qo(e,t,n,s,o,r,!0))},e.createElementVNode=Qo,e.createHydrationRenderer=_o,e.createPropsRestProxy=function(e,t){const n={};for(const s in e)t.includes(s)||Object.defineProperty(n,s,{enumerable:!0,get:()=>e[s]});return n},e.createRenderer=bo,e.createSSRApp=(...e)=>{const t=Qi().createApp(...e),{mount:n}=t;return t.mount=e=>{const t=tl(e);if(t)return n(t,!0,el(t))},t},e.createSlots=function(e,t){for(let n=0;n{const t=s.fn(...e);return t&&(t.key=s.key),t}:s.fn)}return e},e.createStaticVNode=function(e,t){const n=Zo($o,null,e);return n.staticCount=t,n},e.createTextVNode=tr,e.createVNode=Zo,e.customRef=Bt,e.defineAsyncComponent=function(e){g(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:o=200,timeout:r,suspensible:i=!0,onError:l}=e;let c,a=null,u=0;const d=()=>{let e;return a||(e=a=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),l)return new Promise(((t,n)=>{l(e,(()=>t((u++,a=null,d()))),(()=>n(e)),u+1)}));throw e})).then((t=>e!==a&&a?a:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),c=t,t))))};return ns({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return c},setup(){const e=ar;if(c)return()=>os(c,e);const t=t=>{a=null,qt(t,e,13,!s)};if(i&&e.suspense)return d().then((t=>()=>os(t,e))).catch((e=>(t(e),()=>s?Zo(s,{error:e}):null)));const l=Rt(!1),u=Rt(),p=Rt(!!o);return o&&setTimeout((()=>{p.value=!1}),o),null!=r&&setTimeout((()=>{if(!l.value&&!u.value){const e=new Error(`Async component timed out after ${r}ms.`);t(e),u.value=e}}),r),d().then((()=>{l.value=!0,e.parent&&rs(e.parent.vnode)&&(e.parent.effect.dirty=!0,tn(e.parent.update))})).catch((e=>{t(e),u.value=e})),()=>l.value&&c?os(c,e):u.value&&s?Zo(s,{error:u.value}):n&&!p.value?Zo(n):void 0}})},e.defineComponent=ns,e.defineCustomElement=yi,e.defineEmits=function(){return null},e.defineExpose=function(e){},e.defineModel=function(){},e.defineOptions=function(e){},e.defineProps=function(){return null},e.defineSSRCustomElement=e=>yi(e,Yi),e.defineSlots=function(){return null},e.devtools=void 0,e.effect=function(e,t){e.effect instanceof ue&&(e=e.effect.fn);const n=new ue(e,o,(()=>{n.dirty&&n.run()}));t&&(c(n,t),t.scope&&ce(n,t.scope)),t&&t.lazy||n.run();const s=n.run.bind(n);return s.effect=n,s},e.effectScope=function(e){return new le(e)},e.getCurrentInstance=ur,e.getCurrentScope=ae,e.getTransitionRawChildren=ts,e.guardReactiveProps=Yo,e.h=wr,e.handleError=qt,e.hasInjectionContext=function(){return!!(ar||hn||Js)},e.hydrate=Yi,e.initCustomFormatter=function(){},e.initDirectivesForSSR=nl,e.inject=Qs,e.isMemoSame=Nr,e.isProxy=xt,e.isReactive=bt,e.isReadonly=_t,e.isRef=It,e.isRuntimeOnly=()=>!gr,e.isShallow=St,e.isVNode=Ko,e.markRaw=kt,e.mergeDefaults=function(e,t){const n=Fs(e);for(const s in t){if(s.startsWith("__skip"))continue;let e=n[s];e?p(e)||g(e)?e=n[s]={type:e,default:t[s]}:e.default=t[s]:null===e&&(e=n[s]={default:t[s]}),e&&t[`__skip_${s}`]&&(e.skipFactory=!0)}return n},e.mergeModels=function(e,t){return e&&t?p(e)&&p(t)?e.concat(t):c({},Fs(e),Fs(t)):e||t},e.mergeProps=rr,e.nextTick=en,e.normalizeClass=G,e.normalizeProps=function(e){if(!e)return null;let{class:t,style:n}=e;return t&&!v(t)&&(e.class=G(t)),n&&(e.style=H(n)),e},e.normalizeStyle=H,e.onActivated=cs,e.onBeforeMount=gs,e.onBeforeUnmount=_s,e.onBeforeUpdate=ys,e.onDeactivated=as,e.onErrorCaptured=Ts,e.onMounted=vs,e.onRenderTracked=ks,e.onRenderTriggered=Cs,e.onScopeDispose=function(e){re&&re.cleanups.push(e)},e.onServerPrefetch=xs,e.onUnmounted=Ss,e.onUpdated=bs,e.openBlock=Do,e.popScopeId=function(){fn=null},e.provide=Xs,e.proxyRefs=Pt,e.pushScopeId=function(e){fn=e},e.queuePostFlushCb=sn,e.reactive=mt,e.readonly=vt,e.ref=Rt,e.registerRuntimeCompiler=_r,e.render=Zi,e.renderList=function(e,t,n,s){let o;const r=n&&n[s];if(p(e)||v(e)){o=new Array(e.length);for(let n=0,s=e.length;nt(e,n,void 0,r&&r[n])));else{const n=Object.keys(e);o=new Array(n.length);for(let s=0,i=n.length;sv(e)?e:null==e?"":p(e)||b(e)&&(e.toString===S||!g(e.toString))?JSON.stringify(e,se,2):String(e),e.toHandlerKey=M,e.toHandlers=function(e,t){const n={};for(const s in e)n[t&&/[A-Z]/.test(s)?`on:${s}`:M(s)]=e[s];return n},e.toRaw=Ct,e.toRef=function(e,t,n){return It(e)?e:g(e)?new Dt(e):b(e)&&arguments.length>1?Ut(e,t,n):Rt(e)},e.toRefs=function(e){const t=p(e)?new Array(e.length):{};for(const n in e)t[n]=Ut(e,n);return t},e.toValue=function(e){return g(e)?e():Mt(e)},e.transformVNodeArgs=function(e){},e.triggerRef=function(e){Et(e,3)},e.unref=Mt,e.useAttrs=function(){return Os().attrs},e.useCssModule=function(e="$style"){return n},e.useCssVars=function(e){const t=ur();if(!t)return;const n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach((e=>oi(e,n)))},s=()=>{const s=e(t.proxy);si(t.subTree,s),n(s)};Ln(s),vs((()=>{const e=new MutationObserver(s);e.observe(t.subTree.el.parentNode,{childList:!0}),Ss((()=>e.disconnect()))}))},e.useModel=function(e,t,s=n){const o=ur(),r=I(t),i=Bt(((n,i)=>{let l;return Pn((()=>{const n=e[t];L(l,n)&&(l=n,i())})),{get:()=>(n(),s.get?s.get(l):l),set(e){const n=o.vnode.props;n&&(t in n||r in n)&&(`onUpdate:${t}`in n||`onUpdate:${r}`in n)||!L(e,l)||(l=e,i()),o.emit(`update:${t}`,s.set?s.set(e):e)}}})),l="modelValue"===t?"modelModifiers":`${t}Modifiers`;return i[Symbol.iterator]=()=>{let t=0;return{next:()=>t<2?{value:t++?e[l]||{}:i,done:!1}:{done:!0}}},i},e.useSSRContext=()=>{},e.useSlots=function(){return Os().slots},e.useTransitionState=Kn,e.vModelCheckbox=Li,e.vModelDynamic=ji,e.vModelRadio=$i,e.vModelSelect=Bi,e.vModelText=Mi,e.vShow=ei,e.version=Ar,e.warn=Er,e.watch=Bn,e.watchEffect=function(e,t){return Vn(e,null,t)},e.watchPostEffect=Ln,e.watchSyncEffect=Pn,e.withAsyncContext=function(e){const t=ur();let n=e();return fr(),_(n)&&(n=n.catch((e=>{throw hr(t),e}))),[n,()=>hr(t)]},e.withCtx=gn,e.withDefaults=function(e,t){return null},e.withDirectives=function(e,t){const s=hn;if(null===s)return e;const o=Cr(s)||s.proxy,r=e.dirs||(e.dirs=[]);for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=n=>{if(!("key"in n))return;const s=O(n.key);return t.some((e=>e===s||Ki[e]===s))?e(n):void 0})},e.withMemo=function(e,t,n,s){const o=n[s];if(o&&Nr(o,e))return o;const r=t();return r.memo=e.slice(),n[s]=r},e.withModifiers=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(n,...s)=>{for(let e=0;egn,e}({}); diff --git a/POINTER/指针.html b/POINTER/指针.html new file mode 100644 index 0000000..1bc4cbf --- /dev/null +++ b/POINTER/指针.html @@ -0,0 +1,2737 @@ + + + + C/C++指针专题 + + + + + + + + + + +

+ +

演示环境

+

本教程演示环境为

+

Windows 10 + MinGW(g++ (GCC) 12.2.0 )

+

MinGW所用包为w64devkithttps://github.com/skeeto/w64devkit/releases

+

如果能保持学习环境也是Windows 10 + MinGW最好。如果用的是Visual Studio或者其他的编译器,如果遇到结果与本教程演示不相同的部分,那就主要看教程中的演示,主要是理解指针的操作原理。所有编译器中指针操作原理是相同的,教程中在不同编译器会有不同结果的那些实验只为了理解指针而设计,实际中并不这样用。

+
+ +
+ +

内存模型与指针

+

内存模型

+

C语言中指针的作用是用来操作内存,因此在正式开始指针内容学习之前,需要先对程序内存模型有一个大概的了解。

+

假设一个程序运行内存为4G,则简化后的内存模型如下图:

+

4G内存会被分为多个区域,在代码中可以直接进行数据读写的区域为栈区(stack)堆区(heap)

+

memory

+

栈内存第2条特性只针对Linux+GCC以及Windows+MinGW的编译器组合。Visual Studio使用的分配方式与这两种都不相同。不过不影响指针行为的理解,只是可能有的实验在Visual Studio的环境下无法复现。不过大家放心,复现不现来的这些实验都是为了学习指针的特点设计的,所以在实际当中不会这样用,所以也不用担心实际写代码时在其他环境中无法使用。

+
+

实际内存要复杂得多,本图只是简单示意,以下所有示意图,主要目的是用于理解指针的使用,因此可能有些不是特别严谨,不做过多深入。所有图示以Windows系统的处理方式作图,其他平台会有差异,但也不影响对指针的理解

+
+
+ +

栈内存分配与取地址运算符

+

简单类型

+

简单类型分配演示

+
+ +

通过以下代码查看&运算符返回的地址:

+
    char c1;
+    char c2;
+    char c3;
+
+    int n1;
+    int n2;
+    int n3;
+
+    double d1;
+    double d2;
+    double d3;
+
+    printf("%X\n", &c1);
+    printf("%X\n", &c3);
+    printf("%X\n", &c2);
+
+    printf("%X\n", &n1);
+    printf("%X\n", &n2);
+    printf("%X\n", &n3);
+
+    printf("%X\n", &d1);
+    printf("%X\n", &d2);
+    printf("%X\n", &d3);
+

&操作符会返回对应变量第一个字节的地址,用来保存对应这些返回地址的变量称为指针:

+
char *ptr1 = &c1;
+int *ptr2 = &n1;
+double *ptr3 = &d1;
+

可以通过指针操作对应地址的数据:

+
    *ptr1 = 'A';
+    *ptr2 = 150;
+
+    printf("%X: %c\n", ptr1, c1);
+    printf("%X: %d\n", ptr2, *ptr2);
+

结构体

+

在不进行内存对齐的情况下,结构体的大小等于其中每个成员大小之和。进行内存分配时按照结构体大小进行分配 ,分配的内存从前往后分别是结构体中的每人成员

+

struct

+

实际当中结构体会进行内存对齐,本次课程内容只讲解内存地址与指针关系,所以内存对齐不做深入,内存对齐的原因及对齐方式参考文章:https://www.zhihu.com/question/34020134/answer/3198670376

+
    struct S
+    {
+        char c;
+        int n;
+        double d;
+    };
+
+    struct S s1;
+    struct S *ptr = &s1;
+
+    ptr->c = 'A';
+    ptr->n = 100;
+    ptr->d = 11.11;
+
+ +

一维数组

+

array

+
+ +

二维数组

+

array2

+
+ +

通过前面的演示可以得出以下结论:

+
    +
  • 取地址运算符&返回的都是变量对应内存第一个字节的地址(首地址)
  • +
  • 指针是特殊的变量,存储的内容是其他数据的首地址,各种类型指针变量大小都相同,为4字节或8字节(由操作系统及编译器决定)
  • +
  • 指针是强类型的,声明时必须指明类型,因为程序需要根据类型判断需要解析多少内存数据以及如何进行解析
  • +
+
+ +

不同类型指针对数据的访问

+

+
+ +

指针理解:交换变量值

+
void swap1(int x, int y)
+{
+    int tmp = x;
+    x = y;
+    y = tmp;
+}
+
+void swap2(int *x, int *y)
+{
+    int tmp = *x;
+    *x = *y;
+    *y = tmp;
+}
+
+
+int main()
+{
+
+    int a = 100;
+    int b = 200;
+    // swap1(a, b);
+    swap1(a, b);
+    printf("a = %d \tb = %d\n", a, b );
+
+    return 0;
+}
+

上面两个交换函数第一个是无法成功交换两个数值的,第二个可以成功交换,要理解这种现象产生的原因,需要先来看一个概念:

+

栈帧

+

+

方式一 直接传递变量

+
void swap1(int x, int y)
+{
+    printf("address in swap1: &x = %X\t&y = %X\n", &x, &y);
+    int tmp = x;
+    x = y;
+    y = tmp;
+}
+
+int main()
+{
+
+    int a = 100;
+    int b = 200;
+
+    printf("address in main: &a = %X\t&b = %X\n", &a, &b);
+    swap1(a, b);
+    printf("a = %d \tb = %d\n", a, b );
+
+    return 0;
+}
+

+

方式二 传递指针

+
void swap2(int *x, int *y)
+{
+    printf("address in swap2: x = %X\t&y = %X\n", x, y);
+    int tmp = *x;
+    *x = *y;
+    *y = tmp;
+}
+
+int main()
+{
+
+    int a = 100;
+    int b = 200;
+
+    printf("address in main: &a = %X\t&b = %X\n", &a, &b);
+    swap2(&a, &b);
+    printf("a = %d \tb = %d\n", a, b );
+
+
+    return 0;
+}
+

+
+ +

指向指针的指针(多重指针)

+

指针实际上也是一个变量,因此可以再定义一个指针指向它,这样的指针叫做指向指针的指针,也叫多重指针

+

pointer_to_pointer

+

要通过这些指针访问到n1操作如下

+
int n1 = 1234;
+int *ptr1 = &n1;
+int ** ptr2 = &ptr1;
+int *** ptr3 = &ptr2;
+
+printf("ptr1: %d", *ptr1);
+printf("ptr1: %d", **ptr2);
+printf("ptr1: %d", ***ptr3);
+
+ +

void指针与指针类型转换

+

前面使用的指针类型都需要指定具体的类型,某一指针类型的变量只能存对应类型的指针,如果类型不统一会报错,需要进行类型转换才可以。

+

void类型的指针可以称为空类型、或者是未指定类型的指针,可以用来存储任意类型的指针。因为没有类型,所以不能进行指针加减或数据访问等操作,需要转换为具体的类型再进行操作。

+

void指针只是用来存储一个首地址。

+
    char c1;
+    int n1;
+
+    void *ptr1 = &c1;
+    void *ptr2 = &n1;
+
+    char *ptr3 = (char *)ptr1;
+    int *ptr4 = reinterpret_cast<int*>(ptr2);
+    *ptr4 = 100;
+
+    printf("%d\n", n1);
+
+ +

指针加减运算

+

int *p1, *p2;指针为例,其加减运算意义如下,其中N为正整数:

+ + + + + + + + + + + + + + + + + + + + + + + +
运算意义
p1 + N从p1指针的位置向后移动N个int的距离实际移动为N*4字节
p1 - N从p1指针的位置向前移动N个int的距离实际移动为N*4字节
p2 - p1p2与p1之间距离有多少个int
+

以下实验在Linux+GCC环境上没有问题。在Windows+MinGW环境上可能会有一些意想不到的问题。在Visual Studio环境上应该无法复现(其他编译器没有测试)。所以如果所用的环境上无法达到同样的效果也没关系,就看一下演示,理解一下指针加减法就行,在实际使用中不会写这样的代码,这个代码只是为了解释指针加减设计的。这部分本来是要结合数组来演示的,但是提前用这种方式来演示目的是为了说明指针运算本来就有这种特性,并不依赖数组

+
    int n1 = 100;
+    int n2 = 200;
+    int n3 = 300;
+    int n4 = 400;
+
+    int *ptr = &n4; // Linux系统同样操作需要写为 &n1
+
+
+    printf("%X\n", ptr + 1);
+    printf("%d\n", *(ptr + 1));
+    printf("%d\n", *(ptr + 2));
+    printf("%d\n", *(ptr + 3));
+

pointer_plus

+

可以用同样的方法测试指针减法

+
    int *ptr = &n1; // Linux系统同样操作需要写为 &n4
+
+
+    printf("%X\n", ptr - 1);
+    printf("%d\n", *(ptr - 1));
+    printf("%d\n", *(ptr - 2));
+    printf("%d\n", *(ptr - 3));
+

在上述操作中,ptr+Nptr-N中的N-N称为指针偏移量

+

上述通过指针偏移量来访问对应地址里面的数据还可以进行如下方式的简写

+
    int *ptr = &n4; // Linux系统同样操作需要写为 &n1
+
+    printf("%d\n", ptr[0]); // printf("%d\n", *ptr);
+    printf("%d\n", ptr[1]); // printf("%d\n", *(ptr + 1));
+    printf("%d\n", ptr[2]); // printf("%d\n", *(ptr + 2));
+    printf("%d\n", ptr[3]); // printf("%d\n", *(ptr + 3));
+

看起来跟数组访问元素的方式一样吧,没错!不仅数组可以用下标的方式来访问元素,指针也可以用下标的方式来简写偏移量访问对应地址内的数据。

+

指针和数组之间的联系与相似之处非常多,后面再详细介绍两者的区别。

+
+ +

指针应用小试

+

判断字节序(小端存储/大端存储)

+

byte order

+

现代计算机中大多是以小端为字节序的。

+

C++20标准库中提供了方法来判断字节序

+
#include <bit>
+#include <iostream>
+
+int main()
+{
+    if (std::endian::native == std::endian::big)
+    {
+        std::cout << "字节序为大端存储" << std::endl;
+    }
+    else if (std::endian::native == std::endian::little)
+    {
+        std::cout << "字节序为小端存储" << std::endl;
+    }
+
+    return 0;
+}
+

但如果是C++20以前,或者是用C写程序,则不能使用上述方法来判断字节序,需要自行写程序来判断。

+

实现原理如下:

+

一个int类型为4字节,因此可以先定义一个int类型数据,再把每个字节的内容读取出来看一下就知道是以什么字节序存储的了。

+
int n1 = 0X415F9AC1; // 用十六进制可以很清晰看出每个字节的内容
+
+int *ptr1 = &n1; // 定义一个整形指针,这时如果直接用*ptr访问数据的话,会读取指针指向位置的4个字节
+                // 我们需要的不是一次性把4个字节都读取出来,需要一次一个字节读取
+      // 什么样的指针能读取一个字节呢? 字符类型指针: char *, 但因为char的存储范围为-128~127
+      // 所以需要用unsigned char 
+unsigned char *ptr2 = (unsigned char *)ptr1; // 定义一个unsigned char*指针,
+                                // 让它的值跟ptr1一样,
+                           // 这时用*ptr2来访问数据,就只读取指针指向的第一个字节的数据了
+printf("第一字节:%X\n", *ptr2);     // 以十六进制输出,可以对比上面的数字看每个字节的内容
+printf("第二字节:%X\n", *(ptr2 + 1));
+printf("第三字节:%X\n", *(ptr2 + 2));
+printf("第四字节:%X\n", *(ptr2 + 3));
+

byte order

+
+

练习:写一个判断字节序的函数

+
+

再来看一个指针类型之间转换的例子,一个结构体,正常访问结构体成员的方法如下:

+
#pragma pack(1) // 取消内存对齐
+
+struct S
+{
+    char a1;
+    int a2;
+    double a3;
+    int a4;
+};
+
+struct S s1;
+struct S *ptr1 = &s1;
+
+s1.a1 = 'a';
+s1.a2 = 100;
+
+ptr1->a3 = 300;
+ptr1->a4 = 400;
+
+printf("%c\n", ptr1->a1);
+printf("%d\n", s1.a4);
+

但是我们注意到,&s1返回的是结构体的首地址,也就是结构体第一个成员的首地址,即&s1&s1.a1返回的指针虽然类型不同,但值是相同的。int类型大小为4字节,因此对上述结构体,我们可以得到下表

+ + + + + + + + + + + + + + + + + + + + + + + +
成员相对结构体首地址指针偏移量(字节)
a10
a21
a35
a413
+

因此可以用下面的方式来访问结构体中的成员

+
struct S *ptr1 = &s1;
+
+char *c_ptr = (char *)ptr1;
+printf("%c\n", *c_ptr); // 访问第一个成员
+
+char *tmp_ptr = c_ptr + 1;
+int *i_ptr1 = (int *)tmp_ptr;
+printf("%d\n", *i_ptr1); // 访问第二个成员
+
+tmp_ptr = c_ptr + 5;
+double *d_ptr = (double *)tmp_ptr;
+printf("%lf\n", *d_ptr); // 访问第三个成员
+
+tmp_ptr = c_ptr + 13;
+int *i_ptr2 = (int *)tmp_ptr;
+printf("%d\n", *i_ptr2); // 访问第四个成员
+

pointer to struct fields

+
+ +

qsort

+

在C标准库里提供了一个快速排序的函数qsort(quick-sort),函数声明如下

+
void qsort( void *ptr, size_t count, size_t size, int (*comp)(const void*, const void*));
+

参数

+
    +
  • ptr - 指向待排序的数组的指针
  • +
  • count - 数组的元素数目
  • +
  • size - 数组每个元素的字节大小
  • +
  • comp - 比较函数。如果首个参数小于 第二个,那么返回负整数值,如果首个参数大于 第二个,那么返回正整数值,如果两个参数等价,那么返回零。
  • +
+

排序整形数组:

+
#include <stdio.h>
+#include <stdlib.h>
+
+
+int cmp_int(const void *ptr1, const void *ptr2)
+{
+    int *i_ptr1 = (int *)ptr1;
+    int *i_ptr2 = (int *)ptr2;
+
+    int n1 = *i_ptr1;
+    int n2 = *i_ptr2;
+
+    if (n1 < n2)
+    {
+        return -1;
+    }
+    else if (n1 > n2)
+    {
+        return 1;
+    }
+    else
+    {
+        return 0;
+    }
+    // 以上if-else可简写为return n1 - n2; 如果要降序排列则用return n2 - n1;
+
+    // 以上所有内容都可省略, 简写为 return *(int *)ptr1 - *(int *)ptr2;
+
+}
+
+int main()
+{
+    int ar[5] = {112, 955, 230, 189, 100};
+    qsort(ar, 5, sizeof(int), cmp_int);
+
+    for (int i = 0; i < 5; i++)
+    {
+        printf("%d\t", ar[i]);
+    }
+
+    return 0;
+}
+

按指定字段对结构体数组进行排序

+
#include <stdio.h>
+#include <stdlib.h>
+
+
+struct Person
+{
+    char name[20];
+    int age;
+    double score;
+};
+
+
+
+int cmp_struct_by_age(const void *ptr1, const void *ptr2)
+{
+    struct Person *s_ptr1 = (struct Person *)ptr1;
+    struct Person *s_ptr2 = (struct Person *)ptr2;
+
+
+    return s_ptr1->age - s_ptr2->age;
+}
+
+int main()
+{
+    struct Person s_ar[5] = {
+        {"Tom", 66, 90.54},
+        {"Jerry", 32, 94},
+        {"John", 20, 70.22},
+        {"Mike", 40, 60},
+        {"Mark", 53, 65},
+    };
+
+    qsort(s_ar, 5, sizeof(struct Person), cmp_struct_by_age);
+
+
+    for (int i = 0; i < 5; i++)
+    {
+        printf("{ name: %s, \tage: %d, \tscore: %lf }\n", s_ar[i].name, s_ar[i].age, s_ar[i].score);
+    }
+
+
+    return 0;
+}
+
+ +

数组与指针

+

一维数组

+

在前面已经提过关于数组的内存分配,即按照数组所有元素大小之和一次分配对应的内存,数组里面的元素连续存储

+

+

在数组与指针的关系中,有一条重要的规则:

+

在表达式中直接使用数组名时,值为数组的首地址

+

这就意味着,对上图中的数组来说,ar&ar[0]&a表示的地址值是一样的,都是数组的首地址,但它们的指针类型却不相同,其中直接使用数组名或者是&ar[0]返回的指针类型都是int *,而&ar返回的指针类型为int (*)[5]

+

&ar返回的指针接收方式如下:

+
int (*ptr)[5] = &ar;
+

详细说明见变量声明,关于这个类型的指针后面再作介绍。

+

先来看一下指针对数组的基本操作

+
    int ar[5] = {100, 200, 300, 400, 500};
+
+    int *ptr = ar; // 与 int *ptr = &ar[0]; 效果完全一样
+    for (; ptr != (ar + 5); ptr++)
+    {
+        *ptr += 100;
+    }
+    for (ptr = ar; ptr != (ar + 5); ptr++)
+    {
+        printf("%d\t", *ptr);
+    }
+

直接用数组名不仅能用下标的方式访问,也可以用指针的方式访问,同时指针也可以用下标的形式访问数组内容

+
    int ar[5] = {100, 200, 300, 400, 500};
+    int *ptr = ar;
+
+    for (int i = 0; i < 5; i++)
+    {
+        printf("%d\t", *(ar + i));
+        printf("%d\t", ptr[i]);
+    }
+

可以看到数组与指针有许多相似之处,下面再来看一下数组作为函数参数的情况:

+
void print_array(int a[5], int n)
+{
+    for (int i = 0; i < n; i++)
+    {
+        printf("%d\t", a[i]);
+    }
+    printf("\nprint_array sizeof a: %d\n", sizeof(a));
+}
+
+
+int main()
+{
+
+    int ar[5] = {100, 200, 300, 400, 500};
+
+    print_array(ar, 5);
+
+    printf("main sizeof ar: %d\n", sizeof(ar));
+
+    return 0;
+}
+

通过代码观察可以发现,void print_array(int a[5], int n)当中的int a[5]里面的数字可以随便写,也可以不写,直接是int a[],最终会被转为int *a的形式,所以数组作为函数参数传递时,都是以指针的方式传递。

+

+

通过前面的例子,可以总结数组名与指针的一些异同:

+

int ar[5];int *ptr = ar;为例

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
数组名指针示例
可以用下标或指针偏移的方式访问可以用下标或指针偏移的方式访问*(a + 2); ptr[3];
直接与数组对应内存绑定的一个变量一个单独变量,保存数组的首地址见下图
包含数组大小信息只是一个地址,不包含数组大小信息
自身不可改变可以改变指针指向的地址a++这种方式会报错,指针则可以进行ptr++或ptr=ar2这样的操作
进行指针偏移计算时直接从数组首地址开始进行计算进行指针偏移时需要先取出指针变量中存储的地址,再从该地址进行偏移计算见下图
在表达式中单独将数组名作为一个变量,例如当作函数参数传递时,退化为指针int *p = ar; p = a + 3;
+

+
+ +

其他操作

+

前面用指针操作数组时,都是直接将指针指向数组首地址,且指针访问范围也在数组范围内,现在来看一下其他操作。

+

+

通过上面的演示可以得到如下结论:

+
    +
  • 如果相操作一个数组的子集,可以用一个或多个指针来指向对应的位置,即可重新从下标0开始访问对应那一段数据
  • +
  • 指针与数组下标都可以是负数,即向前偏移,在使用数组名时千万不要把下标写为负,会访问或修改到不羽属于数组的内存数据
  • +
  • C/C++中不会对数组或指针下标进行越界检查,因此当指针越界之后可能会访问或修改到不属于当前数组的值,在使用时要特别注意
  • +
+

需要注意的是,用来操作数组元素的指针也是int *类型,和操作单个int类型变量的指针是一样的。实际上不管是数组还是单个变量,在内存上都是一样的,指针借助可以偏移的特性来访问不同位置的元素

+
+ +

数组类型指针

+

下面讨论一个&ar返回的指针类型int (*)[5],详细说明见变量声明

+

先来看几个简单类型的指针,char *p为指向字符类型的指针、int *p为指向int整型的指针、struct Person *p为指向结构体Person类型的指针,这些类型的指针如果用p++或者p--这样的操作,指针移动的字节数为一个对应的类型的大小。类比可以得出,int (*ptr)[5]为一个指向int [5]类型的指针,即指向一个有5个元素的int型数组的指针,因此ptr++ptr--移动的大小为其指向类型的大小,即int [5]的大小,为20个字节,对一维数组来说,就是跳过整个数组的大小。

+

在表达式中出现时,数组名相关操作与指针对应关系如下

+ + + + + + + + + + + + + + + + + + + + + + + +
操作方式返回的指针类型说明
arint *返回数组首地址,也就是数组第一个元素的首地址,返回的指针类型为一个指向int整型的指针,可以理解为是&ar[0]的简写形式
&ar[0]int *返回数组第一个元素的首地址,类型为指向数组元素的指针
&arint (*)[5]返回数组首地址,但是一个指向整个数组类型的指针
+

其中最常用的是直接写数组名,&ar这种方式基本上不会用到,这里介绍这类指针目的是为二维数组与指针的操作做准备。

+
+ +

二维数组

+

要相理解二维数组指针的一些迷惑行为,我们先换个角度来理解什么是二维数组:

+

二维数组实际上是一个一维数组,数组里的每个元素都是一个一维数组。

+

+
+ +

类比前面的char ch[5],数组里面的元素是char类型,因此直接使用数组名表示的是char *指针;int ar[5],数组里面的元素是int类型,因此直接使用数组名表示的是int *指针……

+

现在的二维数组int arr[3][4],当作一维数组来看,数组里面的元素类型为int [4],因此直接使用数组名则为int (*)[4]指针

+

int arr[3][4],在这个声明当中,变量名为arr,类型为int [3][4],因此&arr返回的指针类型为

+

int (*)[3][4]

+

其中arr[0]arr[1]arr[2]则又分别表示一个一维数组,因此将其视为一维数组的数组名,在达式中直接使用一维数组数组名arr[0]arr[1]arr[2]则表示该一维数组的首地址,指针类型为int *&arr[0]返回的则是指向整个数组类型的指针int (*)[4]

+

理解上述规则之后,二维数组指针操作也就同一维数组了

+

二维数组作为函数参数

+

最直观写法如下

+
void print_array(int a[3][4], int n)
+{
+   // print code   
+}
+
+
+int main()
+{
+
+    int a[3][4] = {
+        {1, 3, 3, 4},
+        {3, 4, 7, 9},
+        {1, 4, 6, 8}
+    };
+
+    print_array(a, 3);
+
+
+    return 0;
+}
+

通过测试可以发现void print_array(int a[3][4], int n)这个声明中,int a[3][4]中第一个下标的值可以不用写,即写成int a[][4],但第二个下标不能省略。

+

类比一维数组int a[5]作为参数传递时会被改写为int *指针,上述维数组可以看作一维数组,其元素类型为int [4],因此作为参数传递时会被改写为一个指向int [4]类型的指针,即int (*a)[4],实际上int a[][4]只是int (*a)[4]的一种简写形式。

+

指针应用:动态内存

+

前面用指针来操作栈内存上的数据只是为了熟悉指针的规则与操作方式,指针真正发挥作用的地方是用来操作堆内存上的数据。栈内存上分配的地址可以和一个变量名绑定,通过变量名就能访问到对应内存里的数据。但是堆内存分配的地址不能绑定到变量名,只能通过指针来访问与操作,可以说如果没有指针,就没法访问与操作堆内存的数据。

+

堆内存与栈内存最大的不同在于可以动态申请与释放。

+

栈内存上的变量不能手动进行释放,只有等函数执行结束或者离开作用域之后分配的内存才会自动释放。

+

堆内存上分配的内存可以在程序运行时才确定,C/C++中需要手动进行内存管理,需要的时候进行内存分配,使用结束之后需要手动释放内存。

+
+

C语言中动态分配与释放内存的函数

+
void* malloc(size_t size);
+

按照指定大小分配内存(单位为字节),返回指针类型为void *,即分配内存的首地址。分配失败返回NULL

+
void* calloc(size_t num, size_t size);
+

num为需要分配的个数,size为每个元素的大小。分配成功会将分配的内存中所有字节初始化为0。返回指针类型为void *,即所分配内存的首地址。分配失败返回NULL

+
void *realloc(void *ptr, size_t new_size);
+

重新分配内存。ptr为已分配内存的指针,new_size为重新分配内存大小(单位为字节)。如果ptrNULL,则效果与malloc相同。

+

realloc在分配内存时按照以下步骤进行

+
    +
  • 直接在ptr指向的区域进行内存扩张或收缩,新旧大小中的较小者范围内的区域的内容保持不变。若扩张范围,则数组新增部分的内容不会进行初始化。
  • +
  • (通常是扩张内存,ptr指向的区域没有足够的空闲内存来进行扩张时)分配一个大小为 new_size 字节的新内存块,并复制大小等于新旧大小中较小者的内存区域,然后释放旧内存块。分配失败不会释放旧内存块,返回NULL值。
  • +
+
void free(void* ptr);
+

释放由malloccallocrealloc分配的内存。

+

C++动态内存分配

+

分配内存使用newnew []操作符,返回对应数据类型的指针。释放内存使用deletedelete []操作符。

+

单个变量内存分配与释放

+
#include <stdio.h>
+#include <stdlib.h>
+
+int main()
+{
+    char *cptr1 = (char *)malloc(sizeof(char));
+    char *cptr2 = (char *)malloc(sizeof(char));
+    char *cptr3 = (char *)malloc(sizeof(char));
+
+
+    printf("%X\n", cptr1);
+    printf("%X\n", cptr2);
+    printf("%X\n", cptr3);
+
+    free(cptr1);
+    free(cptr2);
+    free(cptr3);
+
+
+    return 0;
+}
+
#include <stdio.h>
+#include <stdlib.h>
+
+int main()
+{
+    char *cptr1 = new char;
+    char *cptr2 = new char;
+    char *cptr3 = new char;
+
+
+    printf("%X\n", cptr1);
+    printf("%X\n", cptr2);
+    printf("%X\n", cptr3);
+
+    delete cptr1;
+    delete cptr2;
+    delete cptr3;
+
+
+    return 0;
+}
+

通过上面输出的信息可以看到,堆内存上分配的地址并不是连续的,这是与栈内存连续分配不同的地方。

+

上面三个内存分配示意图如下

+

+

+

使用完成之后调用free或者delete释放对应的内存

+
int *n_ptr = (int *)malloc(sizeof(int));
+free(n_ptr);
+
+// C++
+int *n_ptr = new int;
+delete n_ptr;
+

+
double *d_ptr = (double *)malloc(sizeof(double));
+free(d_ptr);
+
+// C++
+double *d_ptr = new double;
+delete d_ptr;
+

+
struct Person
+{
+    int num;
+    int age;
+    double score;
+};
+
+struct Person *s_ptr = (struct Person*)malloc(sizeof(struct Person));
+free(s_ptr);
+
+// C++
+struct Person *s_ptr = new struct Person;
+// C++中可以简写为
+Person *s_ptr = new Person;
+
+delete s_ptr;
+

C++中引入了类的概念,所以如果要为一个类在堆内存上分配内存,则要用new来分配,而不用C中的malloc,因为malloccalloc这类函数虽然也能为类分配内存,但不会调用类的构造函数,free也不会调用类的析构函数,而new分配内存的同时会调用类的构造函数,delete释放内存时会调用类的析构函数

+
#include <stdio.h>
+#include <stdlib.h>
+
+
+class Student
+{
+private:
+    const char *name;
+    int age;
+    int grade;
+public:
+    Student() : name(NULL), age(0), grade(0)
+    {
+        printf("调用了Student类的无参构造函数\n");
+    }
+
+    Student(const char *name, int age, int grade) : name(name), age(age), grade(grade)
+    {
+        printf("调用了Student类的三参构造函数\n");
+    }
+
+    ~Student()
+    {
+        printf("调用了Student类的析构函数\n");
+    }
+};
+
+
+
+
+int main()
+{
+    Student *ptr1 = new Student();
+    Student *ptr2 = new Student("张三", 10, 5);
+
+    Student *ptr3 = (Student*)malloc(sizeof(Student));
+
+    free(ptr3);
+
+    delete ptr1;
+    delete ptr2;
+
+
+    return 0;
+}
+
+ +

一维数组内存分配与释放

+

前面使用的数组都是在栈上分配的,一般来说一个程序的栈内存空间并不大,而且栈内存上的数组分配之后大小无法修改,也无法手动释放,只有等该作用域程序结束之后才自动释放。如果数据较多或者需要动态调整数组的话就不适合存放在栈内存上。相对来说堆内存上可用空间非常多,而且数组大小可以动态调整,也可以随时根据需要进行分配和释放。

+

一维数组所用的指针与单个元素是相同的,单个变量的分配可以理解为只有一个元素的数组。

+

用malloc和calloc分配数组

+
    int n = 5; // 动态数据,可以动态计算或者输入
+
+    int *ar_ptr = (int *)malloc(sizeof(int) * n);
+
+    for (int i = 0; i < n; i++)
+    {
+        printf("%d\t", ar_ptr[i]); 
+        // printf("%d\t", *(ar_ptr + i)); 
+    }
+
+
+    printf("\n");
+
+    int *ar_ptr2 = (int *)calloc(n, sizeof(int));
+
+    for (int i = 0; i < n; i++)
+    {
+        printf("%d\t", ar_ptr2[i]); 
+        // printf("%d\t", *(ar_ptr + i)); 
+    }
+
+
+    free(ar_ptr);    
+    free(ar_ptr2);    
+

malloc需要计算出数组所需要的空间大小进行分配,calloc需要提供数组元素个数以及单个元素大小进行分配。二者的区别在于malloc只进行内存分配,不会初始化内存里的内容,calloc会将分配的内存都初始化为0。

+

用new[]和delete[]来分配和释放数组内存

+

相对来说C++中的数组分配方法简单许多:

+
    int n = 10; // 数组大小,可以由运行时计算得到或者输入
+    int *ptr = new int[n];
+
+    for (int i = 0; i < n; i++)
+    {
+        printf("%d\t", ptr[i]); // *(ptr + i)
+    }
+
+
+    delete[] ptr;
+

只需要提供数组元素个数即可,而且C++的分配返回的即是对应类型的指针,不需要进行指针转换。

+

上面的方法也只是分配内存,并不进行数组初始化操作,如果要进行初始化,需要改成下面的写法:

+
int *ptr = new int[n](); // 也可写成 new int[n]{};
+

这样的写法会将分配的内存初始化为0,还可以用指定的数组来初始化数组:

+
int *ptr = new int[n]{1, 2, 3, 4};
+

但是这种初始化方式需要保证用来初始化的数据个数不超过n

+

+

用realloc动态调整数组的大小

+

在堆内存上分配的数组大小可以根据需要进行调整:

+
    int n = 10; // 数组大小,可以由运行时计算得到或者输入
+
+    int size = sizeof(int) * n;
+
+    int *ptr = (int *)malloc(size);
+    for (int i = 0; i < n; i++)
+    {
+        ptr[i] = i;
+    }
+    printf("重新分配前:%X\n", ptr);
+
+    ptr = (int *)realloc(ptr, size * 2);
+    printf("重新分配后:%X\n", ptr);
+
+    for (int i = 0; i < n * 2; i++)
+    {
+        printf("%d\t", ptr[i]);
+    }
+
+
+    free(ptr);
+
+ +

二维数组内存分配与释放

+

二维数组在堆内存上分配方式常用的有两种,一种是按照一维数组的方式来进行分配,另外一种是借助多重指针来进行分配。

+

一维数组的分配方式

+

现在我们假设要分配一个int类型二维数组p[4][5]

+

前面已经介绍过,可以将其看作一个有4个元素的一维数组,每个元素的类型为int [5],即可按照一维数组的方式来进行分配

+
    int n = 4; // 数组行数,可以由运行时计算得到或者输入
+
+    // int (*ptr)[5] = (int (*)[5])malloc(sizeof(int [5]) * n);
+    int (*ptr)[5] = (int (*)[5])calloc(n, sizeof(int [5]));
+
+    for (int i = 0; i < n; i++)
+    {
+        for (int j = 0; j < 5; j++)
+        {
+            printf("%d\t", ptr[i][j]);
+        }
+        printf("\n");
+
+    }
+
+
+
+    free(ptr);
+

或者用C++的写法

+
// int (*ptr)[5] = new int[n][5];
+    int (*ptr)[5] = new int[n][5]();
+
+    for (int i = 0; i < n; i++)
+    {
+        for (int j = 0; j < 5; j++)
+        {
+            printf("%d\t", ptr[i][j]);
+        }
+        printf("\n");
+
+    }
+
+
+
+    delete[] ptr;
+

这种分配方法将整个数组分配在一段连续的内存上面,也是比较简单的分配方法。不足之处在于只有行是动态的,列大小必须是确定的。

+
+

实际上对于有的编译器来说,用malloccalloc来分配时列值也可以是动态的,但这种方法有的编译器可能不支持。用C++的方式来分配时也不支持动态列。

+
+

而且用这种方式分配出来的二维数组每一行的列数都是相同的。

+

现在假如我想分配一个二维数组,用来存下列数据

+
1         
+1     1     
+1     2     1     
+1     3     3     1     
+1     4     6     4     1    
+1     5     10    10    5     1     
+1     6     15    20    15    6     1    
+1     7     21    35    35    21    7     1     
+1     8     28    56    70    56    28    8     1     
+1     9     36    84    126   126   84    36    9     1 
+

当然可以分配一个10×10的二维数组来进行存储,但是数组会有一半的空间是闲置的,假如说我就需要根据每行的数据个数来确定这一行分配多少个元素,分配一个各行的列数不相同的数组来存储这些内容,又该如何实现呢?

+

多重指针分配二维数组

+

这种方式用C语言的方式稍复杂一些,所以只演示一下C++当中的分配方式。

+

这种分配方式分配和释放过程都较复杂一些,但是行列大小都是可变的,并且可以做到不同行列数不同(这里主要是用来演示指针与堆内存管理的应用,实际当中也不会分配这样的数组),但在C++中,因为指针本身不带有数组大小信息,所以需要自己记录行列数值是多少(Java中数组自带length,分配这种数组简直爽歪歪)。

+

+

C++代码如下

+
    int row = 5;
+    int **ptr = new int *[row]();
+
+    for (int i = 0; i < row; i++)
+    {
+        ptr[i] = new int[i + 1]();
+    }
+
+    for (int  i = 0; i < row; i++)
+    {
+        for (int j = 0; j <= i; j++)
+        {
+            printf("%d\t", ptr[i][j]);
+        }
+        printf("\n");
+    }
+
+
+
+    for (int i = 0; i < row; i++)
+    {
+        delete[] ptr[i];
+    }
+
+
+    delete[] ptr;
+
+ +

函数指针

+

不管是自定义的函数,例如前面定义的print_array还是标准库里的函数例如printf,其函数名也是一个内存地址,可以输出查看:

+
    printf("%X\n", printf);
+    printf("%X\n", print_array);
+    printf("%X\n", main);
+

函数经编译后会生成二进制指令,运行时会载入内存当中,存在代码区,函数名则表示这个函数入口地址。

+

+

函数名表示该函数的入口地址,也就是该函数编译后的二进制指令存储区域的首地址。对于函数名来说,与数组名不同,直接使用函数名或者加上取地址符返回的指针类型都是一样的,即指向该函数的指针。例如在表达式中用print_array&print_array是一样的。

+

如果一个指针变量里面存储的值为一个函数的入口地址,则这个指针就叫做函数指针

+

+

普通函数指针

+
void hello()
+{
+    printf("hello world\n");
+}
+
+void fun()
+{
+    printf("另一个函数\n");
+}
+
+int add(int a, int b)
+{
+    return a + b;
+}
+
+
+int main()
+{
+    void (*pFun)();
+    pFun = hello;
+    (*pFun)();
+    pFun = fun;
+    pFun();
+
+    int (*pFun2)(int, int) = add;
+
+    printf("%d\n", pFun2(1, 10));
+
+    int (*prt1)(const char *, ...) = printf;
+
+    prt1("prt1\n");
+
+    typedef int (*PRT)(const char *, ...);
+
+    PRT prt2 = printf;
+    PRT prt3 = printf;
+
+    prt2("hello prt2\n");
+    prt3("hello prt3\n");
+
+    return 0;
+}
+

函数指针一般是当作回调函数来使用,例如前面讲过的qsort函数

+
void qsort(void *ptr, size_t count, size_t size, int (*comp)(const void *, const void *))
+

第四个参数int (*comp)(const void *, const void *)为函数指针,其返回值为int类型,参数为两个const void *指针,这里const修饰表示指针指向的内容不可改变,因为比较函数不须要改变源数据的内容,所以类型加上const

+

类成员函数指针

+

C++类中的公开函数也可以定义函数指针。

+

类中的函数分为静态函数与成员函数

+

静态函数与普通函数一样,定义指针之后可以直接调用

+
class Student
+{
+public:
+    static void StaticFun()
+    {
+        printf("这是静态成员函数\n");
+    }
+
+};    
+
+void (*pFun)() = Student::StaticFun;
+pFun();
+

成员函数的定义需要加上类名限制,而且成员函数调用必须依赖于对象实例

+
class Student
+{
+private:
+    const char *name;
+    int age;
+    int grade;
+
+    void hello()
+    {
+        printf("hello");
+    }
+public:
+    Student() : name("张三"), age(0), grade(0)
+    {
+        printf("调用了Student类的无参构造函数\n");
+    }
+
+    Student(const char *name, int age, int grade) : name(name), age(age), grade(grade)
+    {
+        printf("调用了Student类的三参构造函数\n");
+    }
+
+    ~Student()
+    {
+        printf("调用了Student类的析构函数\n");
+    }
+
+    static void StaticFun()
+    {
+        printf("这是静态成员函数\n");
+    }
+
+    virtual void PrintInfo()
+    {
+        printf("{ 姓名:%s, \t年龄:%d, \t年级:%d }\n", name, age, grade);
+    }
+
+    void PrintInfo2()
+    {
+        printf("{ 姓名:%s, \t年龄:%d, \t年级:%d }\n", name, age, grade);
+    }
+
+
+};
+
+
+int main()
+{
+    Student stu("张三", 18, 12);
+    Student *s_ptr = &stu;
+
+    void (Student:: *pFun)() = Student::PrintInfo;
+
+    (stu.*pFun)();
+    (s_ptr->*pFun)();
+
+
+    return 0;
+}
+

具体应用比如Qt中信号与槽的连接

+
QObject::connect(btn, &QButton::clicked, this, &MainWindow::onBtnClick)
+

信号与槽函数都可以自定义,定义完成之后调用connect进行连接,这里传入的就是对象指针与成员函数指针。

+

类似于,提供了一个功能函数,需要调用类中的成员函数,但事先并不知道类中对应的成员函数会定义成什么样子,就可以采用这样的方式来传入:

+
class Student
+{
+private:
+    const char *name;
+    int age;
+    int grade;
+
+    void hello()
+    {
+        printf("hello");
+    }
+public:
+    Student() : name("张三"), age(0), grade(0)
+    {
+        printf("调用了Student类的无参构造函数\n");
+    }
+
+    Student(const char *name, int age, int grade) : name(name), age(age), grade(grade)
+    {
+        printf("调用了Student类的三参构造函数\n");
+    }
+
+    ~Student()
+    {
+        printf("调用了Student类的析构函数\n");
+    }
+
+    static void StaticFun()
+    {
+        printf("这是静态成员函数\n");
+    }
+
+    void PrintInfo()
+    {
+        printf("{ 姓名:%s, \t年龄:%d, \t年级:%d }\n", name, age, grade);
+    }
+
+    void Hello()
+    {
+        printf("大家好,我是%s,今年%d岁\n", name, age);
+    }
+
+
+};
+// QObject::connect(btn, &QButton::click, this, &MainWindow::onBtnClick)
+
+
+void DoSomething(Student *ptr, void (Student:: *pFun)())
+{
+    printf("下面请开始表演:\n");
+    (ptr->*pFun)();
+}
+
+
+
+int main()
+{
+    Student stu("张三", 18, 12);
+
+    DoSomething(&stu, Student::Hello);
+    DoSomething(&stu, Student::PrintInfo);
+
+
+    return 0;
+}
+

智能指针

+

C/C++中,堆内存需要手动进行管理,在使用完成之后要及时释放,代码量大了之后这是一件相当繁重的工作,而且经常会忘了释放内存,会造成资源浪费,严重的还会导致程序崩溃。

+

为了简化内存管理,C++提供了智能指针,可以自动进行内存释放。

+

C++中智能指针为uniqu_ptr(一个智能指针对象独占一个指针)和shared_ptr(多个智能指针对象可以共享一个指针)。其中uniqu_ptr对数组的支持比shared_ptr好一些。

+

用普通方法构造智能指针

+
#include <stdio.h>
+#include <memory>
+
+
+class Student
+{
+private:
+    const char *name;
+    int age;
+    int grade;
+
+    void hello()
+    {
+        printf("hello");
+    }
+public:
+    Student() : name("张三"), age(0), grade(0)
+    {
+        printf("调用了Student类的无参构造函数\n");
+    }
+
+    Student(const char *name, int age, int grade) : name(name), age(age), grade(grade)
+    {
+        printf("调用了Student类的三参构造函数\n");
+    }
+
+    ~Student()
+    {
+        printf("调用了Student类的析构函数\n");
+    }
+
+    static void StaticFun()
+    {
+        printf("这是静态成员函数\n");
+    }
+
+    void PrintInfo()
+    {
+        printf("{ 姓名:%s, \t年龄:%d, \t年级:%d }\n", name, age, grade);
+    }
+
+    void Hello()
+    {
+        printf("大家好,我是%s,今年%d岁\n", name, age);
+    }
+
+
+};
+
+
+
+int main()
+{
+
+    std::unique_ptr<int> iptr(new int);
+    *iptr = 1100;
+    printf("%d\n", *iptr);
+
+    std::shared_ptr<Student> stu_ptr(new Student);
+    stu_ptr->PrintInfo();
+
+
+    return 0;
+}
+

用make_unique和make_shared构造智能指针

+
   std::unique_ptr<int> iptr = std::make_unique<int>();
+    *iptr = 1100;
+    printf("%d\n", *iptr);
+
+    std::shared_ptr<Student> stu_ptr = std::make_unique<Student>();
+    stu_ptr->PrintInfo();
+
+    std::shared_ptr<Student> stu_ptr2 = std::make_unique<Student>("李四", 18, 12);
+    stu_ptr2->PrintInfo();
+

数组

+

对于数组,用unique_ptr可以用直接构造或make_unique构造

+
    int count = 5;
+
+    // std::unique_ptr<Student[]> ar(new Student[n]);
+    std::unique_ptr<Student[]> ar = std::make_unique<Student[]>(count);
+
+    for (int i = 0; i < count; i++)
+    {
+        ar[i].PrintInfo();
+    }
+

shared_ptr只能用直接构造

+
    int count = 5;
+
+    std::shared_ptr<Student[]> ar(new Student[count]);
+
+    for (int i = 0; i < count; i++)
+    {
+        ar[i].PrintInfo();
+    }
+

二维数组

+
    int row = 5;
+    std::unique_ptr<int[][4]> ar = std::make_unique<int[][4]>(row); // 只有行可以是动态的
+
+    for (int i = 0; i < row; i++)
+    {
+        for (int j = 0; j < 4; j++)
+        {
+            ar[i][j] = (i + 1) * (j + 1);
+        }
+
+    }
+
+    for (int i = 0; i < row; i++)
+    {
+        for (int j = 0; j < 4; j++)
+        {
+            printf("%d\t", ar[i][j]);
+        }
+        printf("\n");
+    }
+

智能指针作为函数参数

+

shared_ptr共享指针,所以可以直接用同样的shared_ptr当作参数

+
void print_array(std::shared_ptr<int[]> ar, int row)
+{
+    for (int i = 0; i < row; i++)
+    {
+        printf("%d\t", ar[i]);
+    }
+    printf("\n");
+
+}
+
+int main()
+{
+    int row = 5;
+
+    std::shared_ptr<int[]> ar(new int[row]);
+
+    for (int i = 0; i < row; i++)
+    {
+        ar[i] = i;
+    }
+
+    print_array(ar, row);
+
+    return 0;
+}
+

unique_ptr独占指针,所以不能直接用相同类型当函数参数,所以需要用引用传递的方式

+
void print_array(std::unique_ptr<int[]> &ar, int row)
+{
+    for (int i = 0; i < row; i++)
+    {
+        printf("%d\t", ar[i]);
+    }
+    printf("\n");
+
+}
+
+int main()
+{
+    int row = 5;
+
+    std::unique_ptr<int[]> ar(new int[row]);
+
+    for (int i = 0; i < row; i++)
+    {
+        ar[i] = i;
+    }
+
+    print_array(ar, row);
+
+    return 0;
+}
+
+ +

附:变量声明

+

注意一个规则:

+

C/C++中变量的声明由两部分组成:变量类型和变量名,除了变量名,声明中的其他部分组成变量类型

+

下表为一些声明的例子:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
声明类型变量名&返回的指针类型
char c1;charc1char *
int n1;intn1int *
double d1;doubled1double *
int *ptr;int *ptrint **
char *ptrchar *ptrchar **
int ar[5];int [5]arint (*)[5]
char ch[10];char [10]chchar (*)[10]
int ar[3][4]int [3][4]arint (*)[3][4]
int *ar[3];int *[3]ar
int (*ptr)[3];int (*)[3]ptr
int fun();int ()funint (*) ()
void swap(int *p1, int *p2);void (int *, int *)swapvoid (*) (int *, int *)
int *fun(int a1, int a2)int * (int , int )funint * (*)(int , int )
int (*pFun) (int a1, int a2)int (*) (int , int)pFun
+
+

需要注意区分int *ptr[5]int (*ptr)[5]

+
    +
  • int *ptr[5]表示声明一个数组ptr,数组元素类型为int *
  • +
  • int (*ptr)[5]表示声明一个指针ptr,指向的是元素个数为5的一个int型数组
  • +
+

+
+
+
+

注意区分 int * fun(int a1)int (*fun)(int a1)

+
    +
  • int * fun(int a1)表示定义一个函数,函数名为fun,接收一个int类型参数,返回值为int *指针
  • +
  • int (*fun)(int a1)表示定义一个指针,指向类型为一个函数,这个函数接收一个int型参数,返回值 也是一个int类型
  • +
+
+
+ + \ No newline at end of file diff --git a/POINTER/指针.md b/POINTER/指针.md new file mode 100644 index 0000000..ad02974 --- /dev/null +++ b/POINTER/指针.md @@ -0,0 +1,1672 @@ +[TOC] + +
+ +# 演示环境 + +本教程演示环境为 + +**Windows 10** + **MinGW(g++ (GCC) 12.2.0 )** + +MinGW所用包为**w64devkit**: [https://github.com/skeeto/w64devkit/releases](https://github.com/skeeto/w64devkit/releases) + +如果能保持学习环境也是Windows 10 + MinGW最好。如果用的是Visual Studio或者其他的编译器,如果遇到结果与本教程演示不相同的部分,那就主要看教程中的演示,主要是理解指针的操作原理。所有编译器中指针操作原理是相同的,教程中在不同编译器会有不同结果的那些实验只为了理解指针而设计,实际中并不这样用。 + +
+ +
+ +# 内存模型与指针 + +## 内存模型 + +C语言中指针的作用是用来操作内存,因此在正式开始指针内容学习之前,需要先对程序内存模型有一个大概的了解。 + +假设一个程序运行内存为4G,则简化后的内存模型如下图: + +4G内存会被分为多个区域,在代码中可以直接进行数据读写的区域为**栈区(stack)** 和 **堆区(heap)** + +![memory](img/memory.png) + +栈内存第2条特性只针对Linux+GCC以及Windows+MinGW的编译器组合。Visual Studio使用的分配方式与这两种都不相同。不过不影响指针行为的理解,只是可能有的实验在Visual Studio的环境下无法复现。不过大家放心,复现不现来的这些实验都是为了学习指针的特点设计的,所以在实际当中不会这样用,所以也不用担心实际写代码时在其他环境中无法使用。 + + + + + +> 实际内存要复杂得多,本图只是简单示意,**以下所有示意图,主要目的是用于理解指针的使用,因此可能有些不是特别严谨,不做过多深入。所有图示以Windows系统的处理方式作图,其他平台会有差异,但也不影响对指针的理解** + + + +
+ +## 栈内存分配与取地址运算符 + +### 简单类型 + +[简单类型分配演示](pointer/index.html) + +
+ +通过以下代码查看`&`运算符返回的地址: + +```cpp + char c1; + char c2; + char c3; + + int n1; + int n2; + int n3; + + double d1; + double d2; + double d3; + + printf("%X\n", &c1); + printf("%X\n", &c3); + printf("%X\n", &c2); + + printf("%X\n", &n1); + printf("%X\n", &n2); + printf("%X\n", &n3); + + printf("%X\n", &d1); + printf("%X\n", &d2); + printf("%X\n", &d3); +``` + +`&`操作符会返回对应变量第一个字节的地址,用来保存对应这些返回地址的变量称为指针: + +```cpp +char *ptr1 = &c1; +int *ptr2 = &n1; +double *ptr3 = &d1; +``` + +可以通过指针操作对应地址的数据: + +```cpp + *ptr1 = 'A'; + *ptr2 = 150; + + printf("%X: %c\n", ptr1, c1); + printf("%X: %d\n", ptr2, *ptr2); +``` + +### 结构体 + +在不进行内存对齐的情况下,结构体的大小等于其中每个成员大小之和。进行内存分配时按照结构体大小进行分配 ,分配的内存从前往后分别是结构体中的每人成员 + +![struct](img/struct.png) + +实际当中结构体会进行内存对齐,本次课程内容只讲解内存地址与指针关系,所以内存对齐不做深入,内存对齐的原因及对齐方式参考文章:https://www.zhihu.com/question/34020134/answer/3198670376 + +```cpp + struct S + { + char c; + int n; + double d; + }; + + struct S s1; + struct S *ptr = &s1; + + ptr->c = 'A'; + ptr->n = 100; + ptr->d = 11.11; +``` + +
+ +### 一维数组 + +![array](img/array.png) + +
+ +### 二维数组 + +![array2](img/array2.png) + +
+ +通过前面的演示可以得出以下结论: + +- 取地址运算符`&`返回的都是变量对应内存第一个字节的地址(首地址) +- **指针是特殊的变量,存储的内容是其他数据的首地址**,各种类型指针变量大小都相同,为4字节或8字节(由操作系统及编译器决定) +- 指针是强类型的,声明时必须指明类型,因为程序需要根据类型判断需要解析多少内存数据以及如何进行解析 + +
+ +## 不同类型指针对数据的访问 + +![](img/pointer_parse.png) + +
+ + + +## 指针理解:交换变量值 + +```cpp +void swap1(int x, int y) +{ + int tmp = x; + x = y; + y = tmp; +} + +void swap2(int *x, int *y) +{ + int tmp = *x; + *x = *y; + *y = tmp; +} + + +int main() +{ + + int a = 100; + int b = 200; + // swap1(a, b); + swap1(a, b); + printf("a = %d \tb = %d\n", a, b ); + + return 0; +} +``` + +上面两个交换函数第一个是无法成功交换两个数值的,第二个可以成功交换,要理解这种现象产生的原因,需要先来看一个概念: + + + +**栈帧** + +![](img/stack_frame_1.png) + +**方式一 直接传递变量** + +```cpp +void swap1(int x, int y) +{ + printf("address in swap1: &x = %X\t&y = %X\n", &x, &y); + int tmp = x; + x = y; + y = tmp; +} + +int main() +{ + + int a = 100; + int b = 200; + + printf("address in main: &a = %X\t&b = %X\n", &a, &b); + swap1(a, b); + printf("a = %d \tb = %d\n", a, b ); + + return 0; +} +``` + +![](img/swap_1.png) + + + +**方式二 传递指针** + +```cpp +void swap2(int *x, int *y) +{ + printf("address in swap2: x = %X\t&y = %X\n", x, y); + int tmp = *x; + *x = *y; + *y = tmp; +} + +int main() +{ + + int a = 100; + int b = 200; + + printf("address in main: &a = %X\t&b = %X\n", &a, &b); + swap2(&a, &b); + printf("a = %d \tb = %d\n", a, b ); + + + return 0; +} +``` + +![](img/swap_2.png) + +
+ +# 指向指针的指针(多重指针) + +指针实际上也是一个变量,因此可以再定义一个指针指向它,这样的指针叫做指向指针的指针,也叫多重指针 + +![pointer_to_pointer](img/pointer_to_pointer.png) + +要通过这些指针访问到`n1`操作如下 + +```cpp +int n1 = 1234; +int *ptr1 = &n1; +int ** ptr2 = &ptr1; +int *** ptr3 = &ptr2; + +printf("ptr1: %d", *ptr1); +printf("ptr1: %d", **ptr2); +printf("ptr1: %d", ***ptr3); +``` + +
+ +# void指针与指针类型转换 + +前面使用的指针类型都需要指定具体的类型,某一指针类型的变量只能存对应类型的指针,如果类型不统一会报错,需要进行类型转换才可以。 + +void类型的指针可以称为空类型、或者是未指定类型的指针,可以用来存储任意类型的指针。因为没有类型,所以不能进行指针加减或数据访问等操作,需要转换为具体的类型再进行操作。 + +void指针只是用来存储一个首地址。 + +```cpp + char c1; + int n1; + + void *ptr1 = &c1; + void *ptr2 = &n1; + + char *ptr3 = (char *)ptr1; + int *ptr4 = reinterpret_cast(ptr2); + *ptr4 = 100; + + printf("%d\n", n1); +``` + +
+ +# 指针加减运算 + +以`int *p1, *p2;`指针为例,其加减运算意义如下,其中`N`为正整数: + +| 运算 | 意义 | | +|:-------:|:----------------------:|:----------:| +| p1 + N | 从p1指针的位置向后移动N个`int`的距离 | 实际移动为N*4字节 | +| p1 - N | 从p1指针的位置向前移动N个`int`的距离 | 实际移动为N*4字节 | +| p2 - p1 | p2与p1之间距离有多少个`int` | | + + + +以下实验在Linux+GCC环境上没有问题。在Windows+MinGW环境上可能会有一些意想不到的问题。在Visual Studio环境上应该无法复现(其他编译器没有测试)。所以如果所用的环境上无法达到同样的效果也没关系,就看一下演示,理解一下指针加减法就行,在实际使用中不会写这样的代码,这个代码只是为了解释指针加减设计的。这部分本来是要结合数组来演示的,但是提前用这种方式来演示目的是为了说明指针运算本来就有这种特性,并不依赖数组 + +```cpp + int n1 = 100; + int n2 = 200; + int n3 = 300; + int n4 = 400; + + int *ptr = &n4; // Linux系统同样操作需要写为 &n1 + + + printf("%X\n", ptr + 1); + printf("%d\n", *(ptr + 1)); + printf("%d\n", *(ptr + 2)); + printf("%d\n", *(ptr + 3)); +``` + +![pointer_plus](img/pointer_plus.png) + +可以用同样的方法测试指针减法 + +```cpp + int *ptr = &n1; // Linux系统同样操作需要写为 &n4 + + + printf("%X\n", ptr - 1); + printf("%d\n", *(ptr - 1)); + printf("%d\n", *(ptr - 2)); + printf("%d\n", *(ptr - 3)); +``` + +在上述操作中,`ptr+N`或`ptr-N`中的`N`或`-N`称为**指针偏移量** + +上述通过指针偏移量来访问对应地址里面的数据还可以进行如下方式的简写 + +```cpp + int *ptr = &n4; // Linux系统同样操作需要写为 &n1 + + printf("%d\n", ptr[0]); // printf("%d\n", *ptr); + printf("%d\n", ptr[1]); // printf("%d\n", *(ptr + 1)); + printf("%d\n", ptr[2]); // printf("%d\n", *(ptr + 2)); + printf("%d\n", ptr[3]); // printf("%d\n", *(ptr + 3)); +``` + +看起来跟数组访问元素的方式一样吧,没错!不仅数组可以用下标的方式来访问元素,指针也可以用下标的方式来简写偏移量访问对应地址内的数据。 + +指针和数组之间的联系与相似之处非常多,后面再详细介绍两者的区别。 + +
+ +# 指针应用小试 + +## 判断字节序(小端存储/大端存储) + +![byte order](img/byte_order.png) + +现代计算机中大多是以小端为字节序的。 + +C++20标准库中提供了方法来判断字节序 + +```cpp +#include +#include + +int main() +{ + if (std::endian::native == std::endian::big) + { + std::cout << "字节序为大端存储" << std::endl; + } + else if (std::endian::native == std::endian::little) + { + std::cout << "字节序为小端存储" << std::endl; + } + + return 0; +} +``` + +但如果是C++20以前,或者是用C写程序,则不能使用上述方法来判断字节序,需要自行写程序来判断。 + +实现原理如下: + +一个`int`类型为4字节,因此可以先定义一个`int`类型数据,再把每个字节的内容读取出来看一下就知道是以什么字节序存储的了。 + +```cpp +int n1 = 0X415F9AC1; // 用十六进制可以很清晰看出每个字节的内容 + +int *ptr1 = &n1; // 定义一个整形指针,这时如果直接用*ptr访问数据的话,会读取指针指向位置的4个字节 + // 我们需要的不是一次性把4个字节都读取出来,需要一次一个字节读取 + // 什么样的指针能读取一个字节呢? 字符类型指针: char *, 但因为char的存储范围为-128~127 + // 所以需要用unsigned char +unsigned char *ptr2 = (unsigned char *)ptr1; // 定义一个unsigned char*指针, + // 让它的值跟ptr1一样, + // 这时用*ptr2来访问数据,就只读取指针指向的第一个字节的数据了 +printf("第一字节:%X\n", *ptr2); // 以十六进制输出,可以对比上面的数字看每个字节的内容 +printf("第二字节:%X\n", *(ptr2 + 1)); +printf("第三字节:%X\n", *(ptr2 + 2)); +printf("第四字节:%X\n", *(ptr2 + 3)); +``` + +![byte order ](img/byte_order_1.png) + +> 练习:写一个判断字节序的函数 + +再来看一个指针类型之间转换的例子,一个结构体,正常访问结构体成员的方法如下: + +```cpp +#pragma pack(1) // 取消内存对齐 + +struct S +{ + char a1; + int a2; + double a3; + int a4; +}; + +struct S s1; +struct S *ptr1 = &s1; + +s1.a1 = 'a'; +s1.a2 = 100; + +ptr1->a3 = 300; +ptr1->a4 = 400; + +printf("%c\n", ptr1->a1); +printf("%d\n", s1.a4); +``` + +但是我们注意到,`&s1`返回的是结构体的首地址,也就是结构体第一个成员的首地址,即`&s1`与`&s1.a1`返回的指针虽然类型不同,但值是相同的。`int`类型大小为4字节,因此对上述结构体,我们可以得到下表 + +| 成员 | 相对结构体首地址指针偏移量(字节) | +|:---:|:-----------------:| +| a1 | 0 | +| a2 | 1 | +| a3 | 5 | +| a4 | 13 | + +因此可以用下面的方式来访问结构体中的成员 + +```cpp +struct S *ptr1 = &s1; + +char *c_ptr = (char *)ptr1; +printf("%c\n", *c_ptr); // 访问第一个成员 + +char *tmp_ptr = c_ptr + 1; +int *i_ptr1 = (int *)tmp_ptr; +printf("%d\n", *i_ptr1); // 访问第二个成员 + +tmp_ptr = c_ptr + 5; +double *d_ptr = (double *)tmp_ptr; +printf("%lf\n", *d_ptr); // 访问第三个成员 + +tmp_ptr = c_ptr + 13; +int *i_ptr2 = (int *)tmp_ptr; +printf("%d\n", *i_ptr2); // 访问第四个成员 +``` + +![pointer to struct fields](img/pointer_to_struct_field.png) + +
+ +## qsort + +在C标准库里提供了一个快速排序的函数qsort(quick-sort),函数声明如下 + +```cpp +void qsort( void *ptr, size_t count, size_t size, int (*comp)(const void*, const void*)); +``` + +参数 + +- ptr - 指向待排序的数组的指针 +- count - 数组的元素数目 +- size - 数组每个元素的字节大小 +- comp - 比较函数。如果首个参数小于 第二个,那么返回负整数值,如果首个参数大于 第二个,那么返回正整数值,如果两个参数等价,那么返回零。 + +排序整形数组: + +```cpp +#include +#include + + +int cmp_int(const void *ptr1, const void *ptr2) +{ + int *i_ptr1 = (int *)ptr1; + int *i_ptr2 = (int *)ptr2; + + int n1 = *i_ptr1; + int n2 = *i_ptr2; + + if (n1 < n2) + { + return -1; + } + else if (n1 > n2) + { + return 1; + } + else + { + return 0; + } + // 以上if-else可简写为return n1 - n2; 如果要降序排列则用return n2 - n1; + + // 以上所有内容都可省略, 简写为 return *(int *)ptr1 - *(int *)ptr2; + +} + +int main() +{ + int ar[5] = {112, 955, 230, 189, 100}; + qsort(ar, 5, sizeof(int), cmp_int); + + for (int i = 0; i < 5; i++) + { + printf("%d\t", ar[i]); + } + + return 0; +} +``` + +按指定字段对结构体数组进行排序 + +```cpp +#include +#include + + +struct Person +{ + char name[20]; + int age; + double score; +}; + + + +int cmp_struct_by_age(const void *ptr1, const void *ptr2) +{ + struct Person *s_ptr1 = (struct Person *)ptr1; + struct Person *s_ptr2 = (struct Person *)ptr2; + + + return s_ptr1->age - s_ptr2->age; +} + +int main() +{ + struct Person s_ar[5] = { + {"Tom", 66, 90.54}, + {"Jerry", 32, 94}, + {"John", 20, 70.22}, + {"Mike", 40, 60}, + {"Mark", 53, 65}, + }; + + qsort(s_ar, 5, sizeof(struct Person), cmp_struct_by_age); + + + for (int i = 0; i < 5; i++) + { + printf("{ name: %s, \tage: %d, \tscore: %lf }\n", s_ar[i].name, s_ar[i].age, s_ar[i].score); + } + + + return 0; +} +``` + +
+ +# 数组与指针 + +## 一维数组 + +在前面已经提过关于数组的内存分配,即按照数组所有元素大小之和一次分配对应的内存,数组里面的元素连续存储 + +![](img/array_pointer_1.png) + +在数组与指针的关系中,有一条重要的规则: + +**在表达式中直接使用数组名时,值为数组的首地址** + +这就意味着,对上图中的数组来说,`ar`、`&ar[0]`、`&a`表示的地址值是一样的,都是数组的首地址,但它们的指针类型却不相同,其中直接使用数组名或者是`&ar[0]`返回的指针类型都是`int *`,而`&ar`返回的指针类型为`int (*)[5]`。 + +`&ar`返回的指针接收方式如下: + +```cpp +int (*ptr)[5] = &ar; +``` + +详细说明见[变量声明](#附:变量声明),关于这个类型的指针后面再作介绍。 + +先来看一下**指针对数组的基本操作** + +```cpp + int ar[5] = {100, 200, 300, 400, 500}; + + int *ptr = ar; // 与 int *ptr = &ar[0]; 效果完全一样 + for (; ptr != (ar + 5); ptr++) + { + *ptr += 100; + } + for (ptr = ar; ptr != (ar + 5); ptr++) + { + printf("%d\t", *ptr); + } +``` + +直接用数组名不仅能用下标的方式访问,也可以用指针的方式访问,同时指针也可以用下标的形式访问数组内容 + +```cpp + int ar[5] = {100, 200, 300, 400, 500}; + int *ptr = ar; + + for (int i = 0; i < 5; i++) + { + printf("%d\t", *(ar + i)); + printf("%d\t", ptr[i]); + } +``` + +可以看到数组与指针有许多相似之处,下面再来看一下数组作为函数参数的情况: + +```cpp +void print_array(int a[5], int n) +{ + for (int i = 0; i < n; i++) + { + printf("%d\t", a[i]); + } + printf("\nprint_array sizeof a: %d\n", sizeof(a)); +} + + +int main() +{ + + int ar[5] = {100, 200, 300, 400, 500}; + + print_array(ar, 5); + + printf("main sizeof ar: %d\n", sizeof(ar)); + + return 0; +} +``` + +通过代码观察可以发现,`void print_array(int a[5], int n)`当中的`int a[5]`里面的数字可以随便写,也可以不写,直接是`int a[]`,最终会被转为`int *a`的形式,所以数组作为函数参数传递时,都是以指针的方式传递。 + +![](img/stack_frame.png) + +通过前面的例子,可以总结数组名与指针的一些异同: + +以`int ar[5];`和`int *ptr = ar;`为例 + +| 数组名 | 指针 | 示例 | +|:-----------------------------------:|:----------------------------------:|:------------------------------------:| +| 可以用下标或指针偏移的方式访问 | 可以用下标或指针偏移的方式访问 | *(a + 2); ptr[3]; | +| 直接与数组对应内存绑定的一个变量 | 一个单独变量,保存数组的首地址 | 见下图 | +| 包含数组大小信息 | 只是一个地址,不包含数组大小信息 | | +| 自身不可改变 | 可以改变指针指向的地址 | a++这种方式会报错,指针则可以进行ptr++或ptr=ar2这样的操作 | +| 进行指针偏移计算时直接从数组首地址开始进行计算 | 进行指针偏移时需要先取出指针变量中存储的地址,再从该地址进行偏移计算 | 见下图 | +| 在表达式中单独将数组名作为一个变量,例如当作函数参数传递时,退化为指针 | | int *p = ar; p = a + 3; | + +![](img/array_and_pointer.png) + +
+ +**其他操作** + +前面用指针操作数组时,都是直接将指针指向数组首地址,且指针访问范围也在数组范围内,现在来看一下其他操作。 + +![](img/array_and_pointer_2.png) + +通过上面的演示可以得到如下结论: + +- 如果相操作一个数组的子集,可以用一个或多个指针来指向对应的位置,即可重新从下标0开始访问对应那一段数据 +- 指针与数组下标都可以是负数,即向前偏移,在使用数组名时千万不要把下标写为负,会访问或修改到不羽属于数组的内存数据 +- C/C++中不会对数组或指针下标进行越界检查,因此当指针越界之后可能会访问或修改到不属于当前数组的值,在使用时要特别注意 + +**需要注意的是,用来操作数组元素的指针也是`int *`类型,和操作单个`int`类型变量的指针是一样的。实际上不管是数组还是单个变量,在内存上都是一样的,指针借助可以偏移的特性来访问不同位置的元素** + +
+ +**数组类型指针** + +下面讨论一个`&ar`返回的指针类型`int (*)[5]`,详细说明见[变量声明](#附:变量声明) + +先来看几个简单类型的指针,`char *p`为指向字符类型的指针、`int *p`为指向`int`整型的指针、`struct Person *p`为指向结构体`Person`类型的指针,这些类型的指针如果用`p++`或者`p--`这样的操作,指针移动的字节数为一个对应的类型的大小。类比可以得出,`int (*ptr)[5]`为一个指向`int [5]`类型的指针,即指向一个有5个元素的`int`型数组的指针,因此`ptr++`或`ptr--`移动的大小为其指向类型的大小,即`int [5]`的大小,为20个字节,对一维数组来说,就是跳过整个数组的大小。 + +在表达式中出现时,数组名相关操作与指针对应关系如下 + +| 操作方式 | 返回的指针类型 | 说明 | +|:------:|:----------:|:---------------------------------------------------------------:| +| ar | int * | 返回数组首地址,也就是数组第一个元素的首地址,返回的指针类型为一个指向`int`整型的指针,可以理解为是&ar[0]的简写形式 | +| &ar[0] | int * | 返回数组第一个元素的首地址,类型为指向数组元素的指针 | +| &ar | int (*)[5] | 返回数组首地址,但是一个指向整个数组类型的指针 | + +其中最常用的是直接写数组名,`&ar`这种方式基本上不会用到,这里介绍这类指针目的是为二维数组与指针的操作做准备。 + +
+ +## 二维数组 + +要相理解二维数组指针的一些迷惑行为,我们先换个角度来理解什么是二维数组: + +**二维数组实际上是一个一维数组,数组里的每个元素都是一个一维数组。** + +![](img/2darray.png) + +
+ +类比前面的`char ch[5]`,数组里面的元素是`char`类型,因此直接使用数组名表示的是`char *`指针;`int ar[5]`,数组里面的元素是`int`类型,因此直接使用数组名表示的是`int *`指针…… + +现在的二维数组`int arr[3][4]`,当作一维数组来看,数组里面的元素类型为`int [4]`,因此直接使用数组名则为`int (*)[4]`指针 + +`int arr[3][4]`,在这个声明当中,变量名为`arr`,类型为`int [3][4]`,因此`&arr`返回的指针类型为 + +`int (*)[3][4]` + +其中`arr[0]`、`arr[1]`、`arr[2]`则又分别表示一个一维数组,因此将其视为一维数组的数组名,在达式中直接使用一维数组数组名`arr[0]`、`arr[1]`、`arr[2]`则表示该一维数组的首地址,指针类型为`int *`;`&arr[0]`返回的则是指向整个数组类型的指针`int (*)[4]` + +理解上述规则之后,二维数组指针操作也就同一维数组了 + +**二维数组作为函数参数** + +最直观写法如下 + +```cpp +void print_array(int a[3][4], int n) +{ + // print code +} + + +int main() +{ + + int a[3][4] = { + {1, 3, 3, 4}, + {3, 4, 7, 9}, + {1, 4, 6, 8} + }; + + print_array(a, 3); + + + return 0; +} +``` + +通过测试可以发现`void print_array(int a[3][4], int n)`这个声明中,`int a[3][4]`中第一个下标的值可以不用写,即写成`int a[][4]`,但第二个下标不能省略。 + +类比一维数组`int a[5]`作为参数传递时会被改写为`int *`指针,上述维数组可以看作一维数组,其元素类型为`int [4]`,因此作为参数传递时会被改写为一个指向`int [4]`类型的指针,即`int (*a)[4]`,实际上`int a[][4]`只是`int (*a)[4]`的一种简写形式。 + +# 指针应用:动态内存 + +前面用指针来操作栈内存上的数据只是为了熟悉指针的规则与操作方式,指针真正发挥作用的地方是用来操作堆内存上的数据。栈内存上分配的地址可以和一个变量名绑定,通过变量名就能访问到对应内存里的数据。但是堆内存分配的地址不能绑定到变量名,只能通过指针来访问与操作,可以说如果没有指针,就没法访问与操作堆内存的数据。 + +堆内存与栈内存最大的不同在于可以动态申请与释放。 + +栈内存上的变量不能手动进行释放,只有等函数执行结束或者离开作用域之后分配的内存才会自动释放。 + +堆内存上分配的内存可以在程序运行时才确定,C/C++中需要手动进行内存管理,需要的时候进行内存分配,使用结束之后需要手动释放内存。 + +--- + +**C语言中动态分配与释放内存的函数** + +```cpp +void* malloc(size_t size); +``` + +按照指定大小分配内存(单位为字节),返回指针类型为`void *`,即分配内存的首地址。分配失败返回`NULL` + +```cpp +void* calloc(size_t num, size_t size); +``` + +`num`为需要分配的个数,`size`为每个元素的大小。分配成功会将分配的内存中所有字节初始化为0。返回指针类型为`void *`,即所分配内存的首地址。分配失败返回`NULL` + +```cpp +void *realloc(void *ptr, size_t new_size); +``` + +重新分配内存。`ptr`为已分配内存的指针,`new_size`为重新分配内存大小(单位为字节)。如果`ptr`为`NULL`,则效果与`malloc`相同。 + +`realloc`在分配内存时按照以下步骤进行 + +- 直接在`ptr`指向的区域进行内存扩张或收缩,新旧大小中的较小者范围内的区域的内容保持不变。若扩张范围,则数组新增部分的内容不会进行初始化。 +- (通常是扩张内存,`ptr`指向的区域没有足够的空闲内存来进行扩张时)分配一个大小为 `new_size` 字节的新内存块,并复制大小等于新旧大小中较小者的内存区域,然后释放旧内存块。分配失败不会释放旧内存块,返回`NULL`值。 + +```cpp +void free(void* ptr); +``` + +释放由`malloc`、`calloc`、`realloc`分配的内存。 + +**C++动态内存分配** + +分配内存使用`new`和`new []`操作符,返回对应数据类型的指针。释放内存使用`delete`和`delete []`操作符。 + +## 单个变量内存分配与释放 + +```cpp +#include +#include + +int main() +{ + char *cptr1 = (char *)malloc(sizeof(char)); + char *cptr2 = (char *)malloc(sizeof(char)); + char *cptr3 = (char *)malloc(sizeof(char)); + + + printf("%X\n", cptr1); + printf("%X\n", cptr2); + printf("%X\n", cptr3); + + free(cptr1); + free(cptr2); + free(cptr3); + + + return 0; +} +``` + +```cpp +#include +#include + +int main() +{ + char *cptr1 = new char; + char *cptr2 = new char; + char *cptr3 = new char; + + + printf("%X\n", cptr1); + printf("%X\n", cptr2); + printf("%X\n", cptr3); + + delete cptr1; + delete cptr2; + delete cptr3; + + + return 0; +} +``` + +通过上面输出的信息可以看到,堆内存上分配的地址并不是连续的,这是与栈内存连续分配不同的地方。 + +上面三个内存分配示意图如下 + +![](img/malloc_1.png) + +![](img/malloc_2.png) + +使用完成之后调用`free`或者`delete`释放对应的内存 + +```cpp +int *n_ptr = (int *)malloc(sizeof(int)); +free(n_ptr); + +// C++ +int *n_ptr = new int; +delete n_ptr; +``` + +![](img/malloc_int.png) + +```cpp +double *d_ptr = (double *)malloc(sizeof(double)); +free(d_ptr); + +// C++ +double *d_ptr = new double; +delete d_ptr; +``` + +![](img/malloc_double.png) + +```cpp +struct Person +{ + int num; + int age; + double score; +}; + +struct Person *s_ptr = (struct Person*)malloc(sizeof(struct Person)); +free(s_ptr); + +// C++ +struct Person *s_ptr = new struct Person; +// C++中可以简写为 +Person *s_ptr = new Person; + +delete s_ptr; +``` + +C++中引入了类的概念,所以如果要为一个类在堆内存上分配内存,则要用`new`来分配,而不用C中的`malloc`,因为`malloc`、`calloc`这类函数虽然也能为类分配内存,但不会调用类的构造函数,`free`也不会调用类的析构函数,而`new`分配内存的同时会调用类的构造函数,`delete`释放内存时会调用类的析构函数 + +```cpp +#include +#include + + +class Student +{ +private: + const char *name; + int age; + int grade; +public: + Student() : name(NULL), age(0), grade(0) + { + printf("调用了Student类的无参构造函数\n"); + } + + Student(const char *name, int age, int grade) : name(name), age(age), grade(grade) + { + printf("调用了Student类的三参构造函数\n"); + } + + ~Student() + { + printf("调用了Student类的析构函数\n"); + } +}; + + + + +int main() +{ + Student *ptr1 = new Student(); + Student *ptr2 = new Student("张三", 10, 5); + + Student *ptr3 = (Student*)malloc(sizeof(Student)); + + free(ptr3); + + delete ptr1; + delete ptr2; + + + return 0; +} +``` + +
+ +## 一维数组内存分配与释放 + +前面使用的数组都是在栈上分配的,一般来说一个程序的栈内存空间并不大,而且栈内存上的数组分配之后大小无法修改,也无法手动释放,只有等该作用域程序结束之后才自动释放。如果数据较多或者需要动态调整数组的话就不适合存放在栈内存上。相对来说堆内存上可用空间非常多,而且数组大小可以动态调整,也可以随时根据需要进行分配和释放。 + +一维数组所用的指针与单个元素是相同的,单个变量的分配可以理解为只有一个元素的数组。 + +**用malloc和calloc分配数组** + +```cpp + int n = 5; // 动态数据,可以动态计算或者输入 + + int *ar_ptr = (int *)malloc(sizeof(int) * n); + + for (int i = 0; i < n; i++) + { + printf("%d\t", ar_ptr[i]); + // printf("%d\t", *(ar_ptr + i)); + } + + + printf("\n"); + + int *ar_ptr2 = (int *)calloc(n, sizeof(int)); + + for (int i = 0; i < n; i++) + { + printf("%d\t", ar_ptr2[i]); + // printf("%d\t", *(ar_ptr + i)); + } + + + free(ar_ptr); + free(ar_ptr2); +``` + +`malloc`需要计算出数组所需要的空间大小进行分配,`calloc`需要提供数组元素个数以及单个元素大小进行分配。二者的区别在于`malloc`只进行内存分配,不会初始化内存里的内容,`calloc`会将分配的内存都初始化为0。 + +**用new[]和delete[]来分配和释放数组内存** + +相对来说C++中的数组分配方法简单许多: + +```cpp + int n = 10; // 数组大小,可以由运行时计算得到或者输入 + int *ptr = new int[n]; + + for (int i = 0; i < n; i++) + { + printf("%d\t", ptr[i]); // *(ptr + i) + } + + + delete[] ptr; +``` + +只需要提供数组元素个数即可,而且C++的分配返回的即是对应类型的指针,不需要进行指针转换。 + +上面的方法也只是分配内存,并不进行数组初始化操作,如果要进行初始化,需要改成下面的写法: + +```cpp +int *ptr = new int[n](); // 也可写成 new int[n]{}; +``` + +这样的写法会将分配的内存初始化为0,还可以用指定的数组来初始化数组: + +```cpp +int *ptr = new int[n]{1, 2, 3, 4}; +``` + +但是这种初始化方式需要保证用来初始化的数据个数不超过`n`。 + +![](img/malloc_array_1.png) + +**用realloc动态调整数组的大小** + +在堆内存上分配的数组大小可以根据需要进行调整: + +```cpp + int n = 10; // 数组大小,可以由运行时计算得到或者输入 + + int size = sizeof(int) * n; + + int *ptr = (int *)malloc(size); + for (int i = 0; i < n; i++) + { + ptr[i] = i; + } + printf("重新分配前:%X\n", ptr); + + ptr = (int *)realloc(ptr, size * 2); + printf("重新分配后:%X\n", ptr); + + for (int i = 0; i < n * 2; i++) + { + printf("%d\t", ptr[i]); + } + + + free(ptr); +``` + +
+ +## 二维数组内存分配与释放 + +二维数组在堆内存上分配方式常用的有两种,一种是按照一维数组的方式来进行分配,另外一种是借助多重指针来进行分配。 + +**一维数组的分配方式** + +现在我们假设要分配一个`int`类型二维数组`p[4][5]` + +前面已经介绍过,可以将其看作一个有4个元素的一维数组,每个元素的类型为`int [5]`,即可按照一维数组的方式来进行分配 + +```cpp + int n = 4; // 数组行数,可以由运行时计算得到或者输入 + + // int (*ptr)[5] = (int (*)[5])malloc(sizeof(int [5]) * n); + int (*ptr)[5] = (int (*)[5])calloc(n, sizeof(int [5])); + + for (int i = 0; i < n; i++) + { + for (int j = 0; j < 5; j++) + { + printf("%d\t", ptr[i][j]); + } + printf("\n"); + + } + + + + free(ptr); +``` + +或者用C++的写法 + +```cpp +// int (*ptr)[5] = new int[n][5]; + int (*ptr)[5] = new int[n][5](); + + for (int i = 0; i < n; i++) + { + for (int j = 0; j < 5; j++) + { + printf("%d\t", ptr[i][j]); + } + printf("\n"); + + } + + + + delete[] ptr; +``` + +这种分配方法将整个数组分配在一段连续的内存上面,也是比较简单的分配方法。不足之处在于只有行是动态的,列大小必须是确定的。 + +> 实际上对于有的编译器来说,用`malloc`或`calloc`来分配时列值也可以是动态的,但这种方法有的编译器可能不支持。用C++的方式来分配时也不支持动态列。 + +而且用这种方式分配出来的二维数组每一行的列数都是相同的。 + +现在假如我想分配一个二维数组,用来存下列数据 + +```txt +1 +1 1 +1 2 1 +1 3 3 1 +1 4 6 4 1 +1 5 10 10 5 1 +1 6 15 20 15 6 1 +1 7 21 35 35 21 7 1 +1 8 28 56 70 56 28 8 1 +1 9 36 84 126 126 84 36 9 1 +``` + +当然可以分配一个`10×10`的二维数组来进行存储,但是数组会有一半的空间是闲置的,假如说我就需要根据每行的数据个数来确定这一行分配多少个元素,分配一个各行的列数不相同的数组来存储这些内容,又该如何实现呢? + +**多重指针分配二维数组** + +这种方式用C语言的方式稍复杂一些,所以只演示一下C++当中的分配方式。 + +这种分配方式分配和释放过程都较复杂一些,但是行列大小都是可变的,并且可以做到不同行列数不同(这里主要是用来演示指针与堆内存管理的应用,实际当中也不会分配这样的数组),但在C++中,因为指针本身不带有数组大小信息,所以需要自己记录行列数值是多少(Java中数组自带length,分配这种数组简直爽歪歪)。 + +![](img/vl_array_2d.png) + +C++代码如下 + +```cpp + int row = 5; + int **ptr = new int *[row](); + + for (int i = 0; i < row; i++) + { + ptr[i] = new int[i + 1](); + } + + for (int i = 0; i < row; i++) + { + for (int j = 0; j <= i; j++) + { + printf("%d\t", ptr[i][j]); + } + printf("\n"); + } + + + + for (int i = 0; i < row; i++) + { + delete[] ptr[i]; + } + + + delete[] ptr; +``` + +
+ +# 函数指针 + +不管是自定义的函数,例如前面定义的`print_array`还是标准库里的函数例如`printf`,其函数名也是一个内存地址,可以输出查看: + +```cpp + printf("%X\n", printf); + printf("%X\n", print_array); + printf("%X\n", main); +``` + +函数经编译后会生成二进制指令,运行时会载入内存当中,存在代码区,函数名则表示这个函数入口地址。 + +![](img/function.png) + +函数名表示该函数的入口地址,也就是该函数编译后的二进制指令存储区域的首地址。对于函数名来说,与数组名不同,直接使用函数名或者加上取地址符返回的指针类型都是一样的,即指向该函数的指针。例如在表达式中用`print_array`和`&print_array`是一样的。 + +如果一个指针变量里面存储的值为一个函数的入口地址,则这个指针就叫做函数指针 + +![](img/pointer_to_function.png) + +## 普通函数指针 + +```cpp +void hello() +{ + printf("hello world\n"); +} + +void fun() +{ + printf("另一个函数\n"); +} + +int add(int a, int b) +{ + return a + b; +} + + +int main() +{ + void (*pFun)(); + pFun = hello; + (*pFun)(); + pFun = fun; + pFun(); + + int (*pFun2)(int, int) = add; + + printf("%d\n", pFun2(1, 10)); + + int (*prt1)(const char *, ...) = printf; + + prt1("prt1\n"); + + typedef int (*PRT)(const char *, ...); + + PRT prt2 = printf; + PRT prt3 = printf; + + prt2("hello prt2\n"); + prt3("hello prt3\n"); + + return 0; +} +``` + +函数指针一般是当作回调函数来使用,例如前面讲过的`qsort`函数 + +```cpp +void qsort(void *ptr, size_t count, size_t size, int (*comp)(const void *, const void *)) +``` + +第四个参数`int (*comp)(const void *, const void *)`为函数指针,其返回值为`int`类型,参数为两个`const void *`指针,这里`const`修饰表示指针指向的内容不可改变,因为比较函数不须要改变源数据的内容,所以类型加上`const` + +## 类成员函数指针 + +C++类中的公开函数也可以定义函数指针。 + +类中的函数分为静态函数与成员函数 + +静态函数与普通函数一样,定义指针之后可以直接调用 + +```cpp +class Student +{ +public: + static void StaticFun() + { + printf("这是静态成员函数\n"); + } + +}; + +void (*pFun)() = Student::StaticFun; +pFun(); +``` + +成员函数的定义需要加上类名限制,而且成员函数调用必须依赖于对象实例 + +```cpp +class Student +{ +private: + const char *name; + int age; + int grade; + + void hello() + { + printf("hello"); + } +public: + Student() : name("张三"), age(0), grade(0) + { + printf("调用了Student类的无参构造函数\n"); + } + + Student(const char *name, int age, int grade) : name(name), age(age), grade(grade) + { + printf("调用了Student类的三参构造函数\n"); + } + + ~Student() + { + printf("调用了Student类的析构函数\n"); + } + + static void StaticFun() + { + printf("这是静态成员函数\n"); + } + + virtual void PrintInfo() + { + printf("{ 姓名:%s, \t年龄:%d, \t年级:%d }\n", name, age, grade); + } + + void PrintInfo2() + { + printf("{ 姓名:%s, \t年龄:%d, \t年级:%d }\n", name, age, grade); + } + + +}; + + +int main() +{ + Student stu("张三", 18, 12); + Student *s_ptr = &stu; + + void (Student:: *pFun)() = Student::PrintInfo; + + (stu.*pFun)(); + (s_ptr->*pFun)(); + + + return 0; +} +``` + +具体应用比如Qt中信号与槽的连接 + +```cpp +QObject::connect(btn, &QButton::clicked, this, &MainWindow::onBtnClick) +``` + +信号与槽函数都可以自定义,定义完成之后调用`connect`进行连接,这里传入的就是对象指针与成员函数指针。 + +类似于,提供了一个功能函数,需要调用类中的成员函数,但事先并不知道类中对应的成员函数会定义成什么样子,就可以采用这样的方式来传入: + +```cpp +class Student +{ +private: + const char *name; + int age; + int grade; + + void hello() + { + printf("hello"); + } +public: + Student() : name("张三"), age(0), grade(0) + { + printf("调用了Student类的无参构造函数\n"); + } + + Student(const char *name, int age, int grade) : name(name), age(age), grade(grade) + { + printf("调用了Student类的三参构造函数\n"); + } + + ~Student() + { + printf("调用了Student类的析构函数\n"); + } + + static void StaticFun() + { + printf("这是静态成员函数\n"); + } + + void PrintInfo() + { + printf("{ 姓名:%s, \t年龄:%d, \t年级:%d }\n", name, age, grade); + } + + void Hello() + { + printf("大家好,我是%s,今年%d岁\n", name, age); + } + + +}; +// QObject::connect(btn, &QButton::click, this, &MainWindow::onBtnClick) + + +void DoSomething(Student *ptr, void (Student:: *pFun)()) +{ + printf("下面请开始表演:\n"); + (ptr->*pFun)(); +} + + + +int main() +{ + Student stu("张三", 18, 12); + + DoSomething(&stu, Student::Hello); + DoSomething(&stu, Student::PrintInfo); + + + return 0; +} +``` + +# 智能指针 + +C/C++中,堆内存需要手动进行管理,在使用完成之后要及时释放,代码量大了之后这是一件相当繁重的工作,而且经常会忘了释放内存,会造成资源浪费,严重的还会导致程序崩溃。 + +为了简化内存管理,C++提供了智能指针,可以自动进行内存释放。 + +C++中智能指针为`uniqu_ptr`(一个智能指针对象独占一个指针)和`shared_ptr`(多个智能指针对象可以共享一个指针)。其中`uniqu_ptr`对数组的支持比`shared_ptr`好一些。 + +**用普通方法构造智能指针** + +```cpp +#include +#include + + +class Student +{ +private: + const char *name; + int age; + int grade; + + void hello() + { + printf("hello"); + } +public: + Student() : name("张三"), age(0), grade(0) + { + printf("调用了Student类的无参构造函数\n"); + } + + Student(const char *name, int age, int grade) : name(name), age(age), grade(grade) + { + printf("调用了Student类的三参构造函数\n"); + } + + ~Student() + { + printf("调用了Student类的析构函数\n"); + } + + static void StaticFun() + { + printf("这是静态成员函数\n"); + } + + void PrintInfo() + { + printf("{ 姓名:%s, \t年龄:%d, \t年级:%d }\n", name, age, grade); + } + + void Hello() + { + printf("大家好,我是%s,今年%d岁\n", name, age); + } + + +}; + + + +int main() +{ + + std::unique_ptr iptr(new int); + *iptr = 1100; + printf("%d\n", *iptr); + + std::shared_ptr stu_ptr(new Student); + stu_ptr->PrintInfo(); + + + return 0; +} +``` + +**用make_unique和make_shared构造智能指针** + +```cpp + std::unique_ptr iptr = std::make_unique(); + *iptr = 1100; + printf("%d\n", *iptr); + + std::shared_ptr stu_ptr = std::make_unique(); + stu_ptr->PrintInfo(); + + std::shared_ptr stu_ptr2 = std::make_unique("李四", 18, 12); + stu_ptr2->PrintInfo(); +``` + +**数组** + +对于数组,用`unique_ptr`可以用直接构造或`make_unique`构造 + +```cpp + int count = 5; + + // std::unique_ptr ar(new Student[n]); + std::unique_ptr ar = std::make_unique(count); + + for (int i = 0; i < count; i++) + { + ar[i].PrintInfo(); + } +``` + +`shared_ptr`只能用直接构造 + +```cpp + int count = 5; + + std::shared_ptr ar(new Student[count]); + + for (int i = 0; i < count; i++) + { + ar[i].PrintInfo(); + } +``` + +二维数组 + +```cpp + int row = 5; + std::unique_ptr ar = std::make_unique(row); // 只有行可以是动态的 + + for (int i = 0; i < row; i++) + { + for (int j = 0; j < 4; j++) + { + ar[i][j] = (i + 1) * (j + 1); + } + + } + + for (int i = 0; i < row; i++) + { + for (int j = 0; j < 4; j++) + { + printf("%d\t", ar[i][j]); + } + printf("\n"); + } +``` + +**智能指针作为函数参数** + +`shared_ptr`共享指针,所以可以直接用同样的`shared_ptr`当作参数 + +```cpp +void print_array(std::shared_ptr ar, int row) +{ + for (int i = 0; i < row; i++) + { + printf("%d\t", ar[i]); + } + printf("\n"); + +} + +int main() +{ + int row = 5; + + std::shared_ptr ar(new int[row]); + + for (int i = 0; i < row; i++) + { + ar[i] = i; + } + + print_array(ar, row); + + return 0; +} +``` + +`unique_ptr`独占指针,所以不能直接用相同类型当函数参数,所以需要用引用传递的方式 + +```cpp +void print_array(std::unique_ptr &ar, int row) +{ + for (int i = 0; i < row; i++) + { + printf("%d\t", ar[i]); + } + printf("\n"); + +} + +int main() +{ + int row = 5; + + std::unique_ptr ar(new int[row]); + + for (int i = 0; i < row; i++) + { + ar[i] = i; + } + + print_array(ar, row); + + return 0; +} +``` + +
+ +# 附:变量声明 + +注意一个规则: + +**C/C++中变量的声明由两部分组成:变量类型和变量名,除了变量名,声明中的其他部分组成变量类型** + +下表为一些声明的例子: + +| 声明 | 类型 | 变量名 | &返回的指针类型 | +|:----------------------------:|:-------------------:|:----:|:-----------------------:| +| char c1; | char | c1 | char * | +| int n1; | int | n1 | int * | +| double d1; | double | d1 | double * | +| int *ptr; | int * | ptr | int ** | +| char *ptr | char * | ptr | char ** | +| int ar[5]; | int [5] | ar | int (*)[5] | +| char ch[10]; | char [10] | ch | char (*)[10] | +| int ar\[3\]\[4\] | int \[3\]\[4\] | ar | int (*)\[3\]\[4\] | +| int *ar[3]; | int *[3] | ar | | +| int (*ptr)[3]; | int (*)[3] | ptr | | +| int fun(); | int () | fun | int (*) () | +| void swap(int *p1, int *p2); | void (int *, int *) | swap | void (*) (int *, int *) | +| int *fun(int a1, int a2) | int * (int , int ) | fun | int * (*)(int , int ) | +| int (*pFun) (int a1, int a2) | int (*) (int , int) | pFun | | + +> 需要注意区分`int *ptr[5]`和`int (*ptr)[5]` +> +> - `int *ptr[5]`表示声明一个数组`ptr`,数组元素类型为`int *` +> - `int (*ptr)[5]`表示声明一个指针`ptr`,指向的是元素个数为5的一个`int`型数组 +> +> ![](img/array_pointer_2.png) + +----- + +> 注意区分 `int * fun(int a1)`和`int (*fun)(int a1)` +> +> - `int * fun(int a1)`表示定义一个函数,函数名为`fun`,接收一个`int`类型参数,返回值为`int *`指针 +> - `int (*fun)(int a1)`表示定义一个指针,指向类型为一个函数,这个函数接收一个`int`型参数,返回值 也是一个`int`类型 \ No newline at end of file diff --git a/README.md b/README.md index 9643281..08b7bc8 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,6 @@ **C++ STD LIB**:C++标准库相关一些文档 -**SDL**:SDL一些学习笔记 \ No newline at end of file +**SDL**:SDL一些学习笔记 + +**POINTER**:C/C++指针专题笔记 \ No newline at end of file