Skip to content

Instantly share code, notes, and snippets.

@gistlyn
Last active August 26, 2021 02:20
Show Gist options
  • Save gistlyn/d8e7a56027ed6ec3060d9a9896931909 to your computer and use it in GitHub Desktop.
Save gistlyn/d8e7a56027ed6ec3060d9a9896931909 to your computer and use it in GitHub Desktop.
Admin UI for managing ServiceStack Instances (v5.9+)
{{
var AppSvgs = {
'action/home.svg': 'home',
'action/bug_report.svg': 'debug',
'hardware/cast.svg': 'connect',
'hardware/security.svg': 'auth',
'toggle/check_box.svg': 'check_box_on',
'toggle/check_box_outline_blank.svg': 'check_box_off',
'navigation/double_arrow.svg': 'play',
'navigation/first_page.svg': 'chevron-first',
'navigation/last_page.svg': 'chevron-last',
'navigation/expand_more.svg': 'chevron-down',
'navigation/chevron_left.svg': 'chevron-left',
'navigation/chevron_right.svg': 'chevron-right',
'navigation/expand_less.svg': 'chevron-up',
'navigation/close.svg': 'close',
'action/find_in_page.svg': 'db',
'action/delete.svg': 'delete',
'action/dns.svg': 'dns',
'action/done.svg': 'done',
'action/help_outline.svg': 'help',
'action/history.svg': 'history',
'image/edit.svg': 'update',
'content/add.svg': 'create',
'content/remove.svg': 'remove',
'content/remove_circle.svg': 'remove_circle',
'content/save_alt.svg': 'save',
'content/block.svg': 'block',
'content/content_copy.svg': 'copy',
'content/clear.svg': 'clear',
'content/filter_list.svg': 'filter',
'social/people.svg': 'users',
}
}}
```code
#each AppSvgs
`/lib/svg/material/${it.Key}` |> svgAddFile(it.Value,'app')
/each
```
{{#svg fields app}}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="black" width="48px" height="48px">
<path d="M0 0h24v24H0V0z" fill="none"/>
<path d="M4 5v13h17V5H4zm10 2v9h-3V7h3zM6 7h3v9H6V7zm13 9h-3V7h3v9z" fill="#ffffff"/>
</svg>
{{/svg}}
{{#svg lock app}}
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24">
<g fill="none">
<path d="M0 0h24v24H0V0z"/>
<path d="M0 0h24v24H0V0z" opacity=".87"/>
</g>
<path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9V6zm9 14H6V10h12v10zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z" fill="#ffffff"/>
</svg>
{{/svg}}
{{#svg external-link app}}
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/>
<polyline points="15 3 21 3 21 9"/>
<line x1="10" y1="14" x2="21" y2="3"/>
</svg>
{{/svg}}
{{#svg loading app}}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px" width="24px" height="30px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50" xml:space="preserve">
<rect x="0" y="10" width="4" height="10" fill="#333" opacity="0.2">
<animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0s" dur="0.6s" repeatCount="indefinite" />
</rect>
<rect x="8" y="10" width="4" height="10" fill="#333" opacity="0.2">
<animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.15s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite" />
</rect>
<rect x="16" y="10" width="4" height="10" fill="#333" opacity="0.2">
<animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.3s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite" />
</rect>
</svg>
{{/svg}}
{{#svg logo app}}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#ffffff" width="48px" height="48px">
<path d="M18 4l2 4h-3l-2-4h-2l2 4h-3l-2-4H8l2 4H7L5 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4h-4z"/>
<path d="M0 0h24v24H0z" fill="none"/>
</svg>
{{/svg}}
{{#svg excel app}}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px">
<path fill="#4CAF50" d="M41,10H25v28h16c0.553,0,1-0.447,1-1V11C42,10.447,41.553,10,41,10z"/>
<path fill="#FFF" d="M32 15H39V18H32zM32 25H39V28H32zM32 30H39V33H32zM32 20H39V23H32zM25 15H30V18H25zM25 25H30V28H25zM25 30H30V33H25zM25 20H30V23H25z"/>
<path fill="#2E7D32" d="M27 42L6 38 6 10 27 6z"/>
<path fill="#FFF" d="M19.129,31l-2.411-4.561c-0.092-0.171-0.186-0.483-0.284-0.938h-0.037c-0.046,0.215-0.154,0.541-0.324,0.979L13.652,31H9.895l4.462-7.001L10.274,17h3.837l2.001,4.196c0.156,0.331,0.296,0.725,0.42,1.179h0.04c0.078-0.271,0.224-0.68,0.439-1.22L19.237,17h3.515l-4.199,6.939l4.316,7.059h-3.74V31z"/>
</svg>
{{/svg}}
{{htmlError}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link href="/metadata/svg/servicestack.svg?fill=%23000" rel="icon">
<link rel="stylesheet" href="/lib/css/bootstrap/bootstrap.css">
<title>{{ title ?? 'Studio' }}</title>
</head>
<body>
{{ 'buttons' |> cssIncludes }}
{{ 'svg-auth,app' |> cssIncludes |> svgFill('#212529') }}
{{#if fileExists('/bundle.css') }}
<link rel="stylesheet" href="/bundle.css">
{{else}}
{{ 'content:/src/css/' |> bundleCss({ minify:false, cache:false, out:'/app.bundle.css' }) }}
{{/if}}
<style>
{{ {
'.home-link': ['home','#4183B8'],
'.first-link': ['chevron-first','#4183B8'],
'.left-link': ['chevron-left','#4183B8'],
'.right-link': ['chevron-right','#4183B8'],
'.last-link': ['chevron-last','#4183B8'],
'.db-link': ['db','#4183B8'],
'.lock-link': ['lock','#4183B8'],
'.save-link': ['save','#4183B8'],
'.users-link': ['users','#4183B8'],
'.help-muted': ['help','#999'],
'.history-muted': ['history','#999'],
'.bool-off-muted': ['check_box_off','#999'],
'.bool-on-muted': ['check_box_on','#999'],
'.db-dark': ['db','#6c757d'],
'.lock-dark': ['lock','#6c757d'],
'.auth-warning': ['auth','#ffc107'],
'.done-success': ['done','#28a745'],
'.block-danger': ['block','#dc3545'],
} |> toList |> map => `${it.Key} { ${it.Value[0].svgBackgroundImageCss(it.Value[1])} }` |> joinln |> raw }}
.text-close::after { content:'\00D7'; }
</style>
<i hidden>{{ '/js/hot-fileloader.js' |> ifDebugIncludeScript }}</i>
<script>
CONFIG = {
debug: {{ debugMode |> json }},
desktop: {{ desktopInfo |> json }},
hasExcel:{{ (isWin ? typeofProgId('Excel.Application') != null : false) |> json }},
connect: {{ connect |> json }},
nav: {{ 'GetNavItems' |> execService |> json }},
auth: {{ 'Authenticate' |> execService({ ifErrorReturn: "null" }) |> json }}
}
</script>
<noscript>You need to enable JavaScript to run this app.</noscript>
{{page}}
{{ [
`/lib/js/vue/vue.min.js`,
`/lib/js/vue-router/vue-router.min.js`,
`/lib/js/vue-class-component/vue-class-component.min.js`,
`/lib/js/vue-property-decorator/vue-property-decorator.min.js`,
`/lib/js/@servicestack/desktop/servicestack-desktop.min.js`,
`/lib/js/@servicestack/client/servicestack-client.min.js`,
`/lib/js/@servicestack/vue/servicestack-vue.min.js`,
] |> map => `<script src="${it}"></script>` |> joinln |> raw }}
<script>
var ALIASES = {
'vue': { default: Vue },
'vue-router': { default: VueRouter },
'vue-class-component': VueClassComponent,
'vue-property-decorator': VuePropertyDecorator,
'@servicestack/vue': ServiceStackVue
};
var global = window;
window.exports = {};
window.require = function(name) {
return ALIASES[name] || exports[name] || window[name] || exports;
};
Object.assign(window, window["@servicestack/desktop"], window["@servicestack/client"]);
</script>
{{#if fileExists('/bundle.js') }}
<script src="/bundle.js"></script>
{{else}}
{{ [
'content:/src/components/',
'content:/src/shared/',
'content:/src/',
] |> bundleJs({ minify:false, cache:false, iife:true, out:`/app.bundle.js` }) }}
{{/if}}
{{ scripts |> raw }}
{{initError |> htmlError}}
{{htmlError}}
</body>
</html>
name Studio
port 5002
debug false
CefConfig {}
appName studio
description Admin UI for managing ServiceStack Instances (v5.9+)
tags servicestack
.grid-layout{display:grid;width:100vw;height:100vh;grid-column-gap:5px;grid-template-columns:300px 4fr 1fr;grid-template-rows:80px auto 20%;grid-template-areas:"head head head" "nav main main" "nav foot foot"}.grid-layout.collapse-footer{grid-template-areas:"head head head" "nav main main" "nav main main"}.grid-layout.no-sidebar{grid-template-areas:"head head head" "main main main" "foot foot foot"}.grid-layout.no-sidebar.collapse-footer{grid-template-areas:"head head head" "main main main" "main main main"}.grid-layout.collapse-footer #footer{display:none}header{background:#fff;grid-area:head;display:grid;grid-template-columns:auto auto;grid-template-areas:"breadcrumb auth"}#auth{padding:5px 5px 0 0;text-align:right}.site-breadcrumbs{padding-left:0;height:80px}nav{background:#fff;grid-area:nav;padding:0 2px 0 10px;overflow-x:hidden;overflow-y:auto;display:grid;grid-template-rows:40px auto;grid-template-areas:"filter" "sidebar"}#nav-filter{grid-area:filter;margin:2px 0 0 0}#sidebar{grid-area:sidebar;overflow-x:hidden;overflow-y:scroll}main{background:#fff;grid-area:main;padding:2px;grid-row-gap:5px;overflow:auto;display:grid;grid-template-rows:40px auto;grid-template-areas:"query" "results"}#validation main{grid-template-areas:"results" "results"}.query-form{grid-area:query}.main-query{height:38px;font-size:20px;padding-top:1px}.main-container{grid-area:results;overflow-y:scroll}footer{grid-column:foot;Aoverflow-x:hidden;overflow-y:scroll}#footer{border:1px solid #eee;position:fixed;right:0;bottom:0;width:100%;height:30%;max-height:300px}.collapse-footer #footer .text-close{display:none}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background-color:#f1f1f1}.navbar{border-radius:0;background:#4183b8 !important}a{color:#4183b8;text-decoration:none}a:hover{text-decoration:none}.sq-xs{width:12px;height:12px}.sq-sm{width:14px;height:14px}.sq-md{width:18px;height:18px}.sq-lg{width:24px;height:24px}.sq-2x{width:32px;height:32px}.sq-3x{width:48px;height:48px}.sq-4x{width:64px;height:64px}.sq-5x{width:80px;height:80px}.sq-6x{width:96px;height:96px}.sq-7x{width:112px;height:112px}.sq-8x{width:128px;height:128px}.sq-9x{width:144px;height:144px}.sq-10x{width:160px;height:160px}.sq-11x{width:180px;height:180px}.sq-12x{width:204px;height:204px}.sq-13x{width:232px;height:232px}.sq-14x{width:264px;height:264px}.form-check.form-control{padding-left:1.75rem;height:auto}span.nav-link{cursor:pointer}.fade-in{animation:fadein 2s;-moz-animation:fadein 2s;-webkit-animation:fadein 2s;-o-animation:fadein 2s}.fadein-5s{animation:fadein 5s;-moz-animation:fadein 5s;-webkit-animation:fadein 5s;-o-animation:fadein 5s}@keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-o-keyframes fadein{from{opacity:0;}to{opacity:1;}}#debug-links{position:absolute;bottom:1em;right:1em}#desktop input[type=number]{width:100px}#sig{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;width:100%;text-align:center;color:#7f8c8d;font-size:.85rem;z-index:1}.result{margin:10px;color:#349268}.site small{color:#999}.modal,.modal-inline{z-index:1}.stacktrace{background:#f1f1f1;padding:1em;margin:1em 0 .5em 0;border-radius:5px;border:1px solid #ccc;white-space:pre-wrap}#authModal{width:760px;height:700px;top:250px;left:50%;margin-left:-350px}#authModal .modal-dialog{max-width:700px;max-height:600px}#authModal .modal-body{padding:0}#authModal iframe{width:700px;height:600px;border:none}#eventsModal{right:10px}.custom-select{min-width:130px}.nav-query .nav-link{padding:.4rem 1rem;cursor:pointer}.nav-query .nav-link:hover{color:rgba(255,255,255,.8) !important}.site-breadcrumbs .breadcrumb{background:none}.site-breadcrumbs .breadcrumb-item+.breadcrumb-item::before{color:#ddd}.results-none{color:#6c757d}table.results{border:1px solid #eee;background:#fefefe}table.results thead tr{background:#eee}table.results th{text-align:left;color:#757575;font-size:13px;line-height:18px;border-bottom:1px solid #e0e0e0;padding:5px;overflow:hidden;white-space:nowrap}table.results td{color:#212121;font-size:12px;padding:5px;max-width:300px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}th .modal-content,td .modal-content{font-size:1rem}table.results .filters td{padding:0 1px;margin:0}.filters input{min-width:50px;width:100%;font-size:11px}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.auth{color:#aaa;pointer-events:none;background-size:22px 22px;background-position:center right;background-repeat:no-repeat;display:block}.lnk-help{width:20px;height:20px;float:right;margin:-1em .25em 0 0;background-size:18px 18px;background-position:center right;background-repeat:no-repeat;display:block}.has-auth .auth a{pointer-events:auto;color:#4183b8}.svg-btn,.btn-link,.th-link{cursor:pointer;user-select:none}.btn-link{text-decoration:none}.results td{background:#f9f9f9}td.partial{border:1px dashed #ccc;background:#fff;cursor:default}table.results td.editing{background:#fff3cd;padding:0}.modal-mini .close{margin-top:-10px;margin-left:-5px}.modal-inline{display:block;position:absolute}.modal-inline .modal-dialog{min-width:500px;margin:-12px 0 0 -31px;white-space:normal}.modal-inline-lg .modal-dialog{min-width:700px}.results tr.selected td{background:#ffffe0}.results tr.selected td.selected{background:#6495ed;color:#fff}.modal-dialog{color:#212121;text-align:left}::placeholder{color:#aaa !important}.disabled.md{font-size:1rem}.disabled.lg{font-size:1.25rem}.confirm-delete .form-check-input{margin:10px 0 0 -10px}.confirm-delete .form-check-label{font-size:1rem;margin:0 .5em;user-select:none;cursor:pointer}#sidebar .selected{font-weight:bold}.close,.text-close{user-select:none}.text-close{cursor:pointer;font-size:1.5em;color:#999}.text-close:hover{color:#666}#footer .text-close{position:fixed;right:10px;margin:-10px 0 0 0}#output-group{position:fixed;right:0;bottom:0;background:#fff}#output-group .btn{border-radius:0}.log-entry,.log-entry h4,.log-entry dl{font-size:13px;line-height:22px}.log-entry{padding:5px 20px 5px 5px}.log-entry h4,.log-entry dl,.log-entry dt,.log-entry dd,dl.h-kvp,ul.event{margin:0;padding:0}.log-entry i{font-style:normal}.log-entry h4 i{display:inline-block;background:#f1f1f1;width:60px;padding:0 5px;border:1px solid #f1f1f1}.log-entry h4 b{display:inline-block;padding:0 10px;border:1px solid #f1f1f1}.log-entry .body{border:1px solid #f1f1f1;padding:0 0 4px 0;margin:-2px 0 0 0}dl.v-kvp{vertical-align:top;border:1px solid #f1f1f1;display:inline-block;margin:4px 0 0 4px}dl.v-kvp>dt{border-bottom:1px solid #f1f1f1;font-weight:normal;background:#f1f1f1}dl.v-kvp>dt,dl.v-kvp>dd{padding:1px 4px;max-width:400px;overflow:hidden;text-overflow:ellipsis}dl.v-kvp.log-response,dl.v-kvp.log-response>dt,dl.v-kvp.log-response>dd,dl.v-kvp.log-response .jsonviewer dd{max-width:none}dl.v-kvp.log-response>dt{cursor:pointer;user-select:none}dl.h-kvp{border:1px solid #f8f9fa;display:inline-block;height:31px}dl.h-kvp>dt,dl.h-kvp>dd{margin:0;padding:.25em .5em;line-height:22px;display:inline-block;max-width:400px;overflow:hidden;text-overflow:ellipsis}dl.h-kvp>dt{border-right:1px solid #f8f9fa;background:#f8f9fa}.rule dl{min-width:300px}.rule dl>dt{min-width:83px}.rule button{vertical-align:top}ul.event,ul.event li{display:inline-block}li.by span,li.on span{padding-left:.5em}li.by b,li.on b{padding-left:.25em}li.on b{font-weight:normal}li.by b i,li.on b i{font-weight:normal;color:#aaa;font-style:normal}.event-line{white-space:nowrap;overflow-x:hidden}.event.summary{cursor:pointer}.event.summary b{font-weight:normal}.event.summary li.on b{font-weight:normal;color:#aaa}.event-detail{margin:0 0 5px 22px}.event .type{min-width:56px}.event .ip{border:1px solid #f1f1f1;padding:0 5px 0 0;margin:2px 0 0 5px}.event .ip span{background:#f1f1f1;padding:1px 5px;margin:0 5px 0 0}.ellipsis{max-width:200px;text-overflow:ellipsis}#validation-rules{width:100%;max-width:900px}#validation-rules th{font-size:1.4em;font-weight:normal;padding:0 0 .5em 0}#validation-rules th,#validation-rules td{width:50%;vertical-align:top}.type-rule{margin-bottom:10px}.datamodel-nav .router-link-exact-active{font-weight:bold}.invalid-feedback{font-size:inherit}.btn-compact.btn-sm{padding:.1rem .4rem}#adminusers #txtQuery{width:290px}em{font-style:normal;line-height:1.5em;padding:2px 5px;margin:0;background-color:rgba(0,0,0,.04);color:#c7254e;border-radius:3px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f3f4f6;border:1px solid #d1d5db}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}pre{white-space:pre-wrap}.copy-cmd i.svg-copy{display:inline-block;vertical-align:middle;background-image:url("data:image/svg+xml,%3Csvg fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2'%3E%3C/path%3E%3C/svg%3E")}.copy-cmd pre.sh::before{content:"$ ";color:#999}.copy-cmd pre b{visibility:hidden}.copy-cmd pre.copied b{visibility:visible}.copy-cmd pre.copied i.svg-copy{opacity:50%}.copy-cmd pre.sh i:hover{opacity:.5;transition:opacity .4s}.jsonviewer .ib{display:inline-block}.jsonviewer table{border-collapse:collapse;border:solid 1px #ccc;clear:left}.jsonviewer th{text-align:left;padding:4px 8px;text-shadow:#fff 1px 1px -1px;background:#f1f1f1;white-space:nowrap;font-weight:bold}.jsonviewer td{padding:8px 8px 0 8px;vertical-align:top;line-height:18px}.jsonviewer dl{margin:0;clear:left}.jsonviewer dt{font-weight:bold;width:160px;clear:left;float:left;display:block;white-space:nowrap;line-height:26px}.jsonviewer dd{display:block;float:left;line-height:26px;max-width:600px;margin:0}.jsonviewer dl dl dt{font-weight:bold}.jsonviewer hr{display:none}.jsonviewer td dl HR{display:block;padding:0;clear:left;border:none}.jsonviewer td dl{padding:4px;margin:0;height:100%;max-width:700px}.jsonviewer dl td dl dt{padding:2px;margin:0 10px 0 0;font-weight:bold;width:120px;overflow:hidden;clear:left;float:left;display:block}.jsonviewer dl td dl dd{margin:0;padding:2px;display:block;float:left}.jsonviewer tbody>tr:last-child>td{padding:8px}
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},__spreadArrays=this&&this.__spreadArrays||function(){for(var i=0,n=0,r=arguments.length;n<r;n++)i+=arguments[n].length;for(var u=Array(i),f=0,n=0;n<r;n++)for(var e=arguments[n],t=0,o=e.length;t<o;t++,f++)u[f]=e[t];return u};Object.defineProperty(exports,"__esModule",{value:!0});exports.CreateUserModal=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),client_1=require("@servicestack/client"),CreateUserModal=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.row=null,t.showAdvanced=!1,t.value="",t.model={},t.roles=[],t.permissions=[],t.newRole=null,t.newPermission=null,t.loading=!1,t.responseStatus=null,t.confirmDelete=!1,t.grid=[["UserName"],["Email"],["FirstName","LastName"],["DisplayName"],["Company"],["Address"],["Address2"],["City","State"],["Country","PostalCode"],["PhoneNumber"],["LockedDate"],],t}return __extends(t,n),Object.defineProperty(t.prototype,"gridProps",{get:function(){return shared_1.gridProps(this.grid,this.type.properties.filter(function(n){return n.name!="LockedDate"&&!n.isPrimaryKey}))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"plugin",{get:function(){return this.app&&this.app.plugins.adminUsers},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return!!this.plugin},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"size",{get:function(){return"md"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"type",{get:function(){return this.plugin.userAuth},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"missingRoles",{get:function(){var n=this;return this.plugin.allRoles.filter(function(t){return n.roles.indexOf(t)==-1})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"missingPermissions",{get:function(){var n=this;return this.plugin.allPermissions.filter(function(t){return n.permissions.indexOf(t)==-1})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"canSubmit",{get:function(){return(this.model.UserName||this.model.Email)&&this.model.Password},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"labelButton",{get:function(){return"Create User"},enumerable:!1,configurable:!0}),t.prototype.fieldValue=function(n){return shared_1.editValue(n,this.model[n.name])},t.prototype.humanize=function(n){return client_1.humanize(n)},t.prototype.reset=function(n){return n===void 0&&(n=null),__awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(){return this.row={},this.type.properties.forEach(function(t){n.$set(n.model,t.name,shared_1.editValue(t,client_1.getField(n.row,t.name)))}),this.roles=[],this.permissions=[],[2]})})},t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return shared_1.log("EditUserModal.mounted()"),shared_1.initInlineModal("#createUserModal"),[4,this.reset()];case 1:return n.sent(),this.$nextTick(function(){var n;(n=document.querySelector("#createUserModal input:first-child"))===null||n===void 0?void 0:n.select()}),[2]}})})},t.prototype.updateUser=function(n,t){return __awaiter(this,void 0,void 0,function(){var i=this;return __generator(this,function(r){switch(r.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(i,void 0,void 0,function(){return __generator(this,function(i){switch(i.label){case 0:return[4,shared_1.putSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:"AdminUpdateUser",args:__spreadArrays(["Id",this.id],n)}))];case 1:return i.sent(),[4,this.reset(t)];case 2:return i.sent(),[2]}})})})];case 1:return r.sent(),[2]}})})},t.prototype.changePassword=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return shared_1.log("changePassword"),[4,this.updateUser(["Password",this.model.Password],"Password was changed")];case 1:return n.sent(),this.model.Password="",[2]}})})},t.prototype.addRole=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(){return this.newRole?(this.roles.push(this.newRole),this.newRole=null,[2]):[2]})})},t.prototype.removeRole=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(){return n?(this.roles=this.roles.filter(function(t){return t!=n}),[2]):[2]})})},t.prototype.addPermission=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(){return this.newPermission?(this.permissions.push(this.newPermission),this.newPermission=null,[2]):[2]})})},t.prototype.removePermission=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(){return n?(this.permissions=this.permissions.filter(function(t){return t!=n}),[2]):[2]})})},t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return this.canSubmit?[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var r,n,f,u,t,i;return __generator(this,function(e){switch(e.label){case 0:r=shared_1.sanitizedModel(this.model);shared_1.log("CreateUserModal.submit()",r);n=new dtos_1.AdminCreateUser({userAuthProperties:{},roles:this.roles,permissions:this.permissions});f=["id","roles","permissions"];for(u in r)t=u.toLowerCase(),i=r[u],t==="username"&&(n.userName=i),t==="password"?n.password=i:t==="email"?n.email=i:t==="displayname"?n.displayName=i:t==="firstname"?n.firstName=i:t==="lastname"?n.lastName=i:t==="profileurl"?n.profileUrl=i:f.indexOf(t)==-1&&(n.userAuthProperties[u]=i);return[4,shared_1.postSiteProxy(new dtos_1.SiteProxy({slug:this.slug,request:client_1.nameOf(new dtos_1.AdminCreateUser)}),n)];case 1:return e.sent(),this.$emit("done",r),[2]}})})})]:[2];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"id",void 0),__decorate([vue_property_decorator_1.Component({template:'<div id="createUserModal" class="modal-inline modal-inline-lg" tabindex="-1" role="dialog" @keyup.esc="$emit(\'done\')" title="">\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title">\n Create New User\n <\/h5>\n <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="$emit(\'done\')"><\/button>\n <\/div>\n <div class="modal-body">\n <form @submit.prevent="submit" :class="{ error:responseStatus, loading }" >\n <div class="mb-3">\n <error-summary :except="type.properties.map(x => x.name)" :responseStatus="responseStatus" />\n <\/div>\n <div class="row">\n <div class="col col-7">\n <div class="mb-3">\n <template v-for="rowProps in gridProps">\n <div class="row mb-3">\n <template v-for="f in rowProps">\n <div class="col">\n <v-input-type :property="f" :model="model" :size="size" :responseStatus="responseStatus" />\n <\/div>\n <\/template>\n <\/div>\n <\/template>\n <\/div>\n <\/div>\n <div class="col col-5">\n <div class="row mb-3">\n <div class="col">\n <v-input type="password" id="Password" v-model="model.Password" :responseStatus="responseStatus" \n placeholder="Password" :inputClass="[\'form-control-\' + size]" help="New Password" \n @keypress.enter.native.prevent="changePassword()" /> \n <\/div>\n <\/div>\n <div class="row mb-3" v-if="roles.length">\n <div class="col">\n <h4>Roles<\/h4>\n <div v-for="role in roles">\n <button @click.prevent="removeRole(role)" class="btn btn-sm btn-link" title="Remove Role"><i class="svg svg-md svg-delete"><\/i><\/button> \n <span class="align-middle">{{ role }}<\/span>\n <\/div>\n <\/div>\n <\/div>\n <div class="row mb-3" v-if="missingRoles.length">\n <div class="col col-8">\n <v-select id="roles" :values="[\'\',...missingRoles]" :responseStatus="responseStatus"\n v-model="newRole" selectClass="custom-select" help="Add Role">\n <\/v-select>\n <\/div>\n <div class="col col-4 p-0">\n <button :disabled="!newRole" @click.prevent="addRole()" class="btn btn-outline-secondary" title="Add Role">Add<\/button> \n <\/div>\n <\/div>\n <div class="row mb-3" v-if="permissions.length">\n <div class="col">\n <h4>Permissions<\/h4>\n <div v-for="perm in permissions">\n <button @click.prevent="removePermission(perm)" class="btn btn-sm btn-link" title="Remove Permission"><i class="svg svg-md svg-delete"><\/i><\/button> \n <span class="align-middle">{{ perm }}<\/span>\n <\/div>\n <\/div>\n <\/div>\n <div class="row mb-3" v-if="missingPermissions.length">\n <div class="col col-8">\n <v-select id="permissions" :values="[\'\',...missingPermissions]" :responseStatus="responseStatus"\n v-model="newPermission" selectClass="custom-select" help="Add Permission">\n <\/v-select>\n <\/div>\n <div class="col col-4 p-0">\n <button :disabled="!newPermission" @click.prevent="addPermission()" class="btn btn-outline-secondary" title="Add Permission">Add<\/button> \n <\/div>\n <\/div>\n <\/div> \n <\/div>\n <div class="row pt-3 border-top border-top-primary">\n <div class="col text-end">\n <span class="btn btn-link" @click="$emit(\'done\')">close<\/span>\n <button :disabled="!canSubmit" type="submit" class="btn btn-primary">{{labelButton}}<\/button>\n <\/div>\n <\/div>\n <\/form>\n <\/div>\n <\/div>\n <\/div>\n<\/div>'})],t)}(vue_property_decorator_1.Vue);exports.CreateUserModal=CreateUserModal;exports.default=CreateUserModal;vue_property_decorator_1.Vue.component("create-user-modal",CreateUserModal);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},__spreadArrays=this&&this.__spreadArrays||function(){for(var i=0,n=0,r=arguments.length;n<r;n++)i+=arguments[n].length;for(var u=Array(i),f=0,n=0;n<r;n++)for(var e=arguments[n],t=0,o=e.length;t<o;t++,f++)u[f]=e[t];return u};Object.defineProperty(exports,"__esModule",{value:!0});exports.EditUserModal=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),client_1=require("@servicestack/client"),EditUserModal=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.row=null,t.showAdvanced=!1,t.value="",t.model={},t.roles=[],t.permissions=[],t.newRole=null,t.newPermission=null,t.loading=!1,t.responseStatus=null,t.success=null,t.confirmDelete=!1,t.grid=[["UserName"],["Email"],["FirstName","LastName"],["DisplayName"],["Company"],["Address"],["Address2"],["City","State"],["Country","PostalCode"],["PhoneNumber"],["LockedDate"],],t}return __extends(t,n),Object.defineProperty(t.prototype,"gridProps",{get:function(){return shared_1.gridProps(this.grid,this.type.properties.filter(function(n){return n.name!="LockedDate"&&!n.isPrimaryKey}))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"plugin",{get:function(){return this.app&&this.app.plugins.adminUsers},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return!!this.plugin},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"size",{get:function(){return"md"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"type",{get:function(){return this.plugin.userAuth},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"missingRoles",{get:function(){var n=this;return this.plugin.allRoles.filter(function(t){return n.roles.indexOf(t)==-1})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"missingPermissions",{get:function(){var n=this;return this.plugin.allPermissions.filter(function(t){return n.permissions.indexOf(t)==-1})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"canSubmit",{get:function(){return this.model.UserName||this.model.Email||!this.hasProp("UserName")&&!this.hasProp("Email")},enumerable:!1,configurable:!0}),t.prototype.hasProp=function(n){return this.type.properties.find(function(t){return t.name.toLowerCase()==n.toLowerCase()})!=null},Object.defineProperty(t.prototype,"displayName",{get:function(){var i=client_1.getField(this.row,"displayName")||client_1.getField(this.row,"userName"),n,t;return i?i:(n=client_1.getField(this.row,"firstName"),t=client_1.getField(this.row,"lastName"),n||t)?(n||"")+" "+(t||""):""},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"labelButton",{get:function(){return"Update User"},enumerable:!1,configurable:!0}),t.prototype.fieldValue=function(n){return shared_1.editValue(n,this.model[n.name])},t.prototype.humanize=function(n){return client_1.humanize(n)},t.prototype.reset=function(n){return n===void 0&&(n=null),__awaiter(this,void 0,void 0,function(){var i,r,t=this;return __generator(this,function(u){switch(u.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(t,void 0,void 0,function(){var n,t;return __generator(this,function(i){switch(i.label){case 0:return[4,shared_1.getSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:"AdminGetUser",args:["Id",this.id]}))];case 1:return n=i.sent(),t=JSON.parse(n),this.row=client_1.getField(t,"Result"),[2]}})})})];case 1:return u.sent(),this.success=n,this.type.properties.forEach(function(n){t.$set(t.model,n.name,shared_1.editValue(n,client_1.getField(t.row,n.name)))}),i=client_1.getField(this.row,"Roles"),i&&(this.roles=__spreadArrays(i)),r=client_1.getField(this.row,"Permissions"),r&&(this.permissions=__spreadArrays(r)),[2]}})})},t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return shared_1.log("EditUserModal.mounted()"),shared_1.initInlineModal("#editUserModal"),[4,this.reset()];case 1:return n.sent(),this.$nextTick(function(){var n;(n=document.querySelector("#editUserModal input:first-child"))===null||n===void 0?void 0:n.select()}),[2]}})})},t.prototype.updateUser=function(n,t){return __awaiter(this,void 0,void 0,function(){var i=this;return __generator(this,function(r){switch(r.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(i,void 0,void 0,function(){return __generator(this,function(i){switch(i.label){case 0:return[4,shared_1.putSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:"AdminUpdateUser",args:__spreadArrays(["Id",this.id],n)}))];case 1:return i.sent(),[4,this.reset(t)];case 2:return i.sent(),[2]}})})})];case 1:return r.sent(),[2]}})})},t.prototype.lockUser=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return shared_1.log("lockUser"),[4,this.updateUser(["LockUser","true"])];case 1:return n.sent(),[2]}})})},t.prototype.unlockUser=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return shared_1.log("unlockUser"),[4,this.updateUser(["UnlockUser","true"])];case 1:return n.sent(),[2]}})})},t.prototype.changePassword=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return shared_1.log("changePassword"),[4,this.updateUser(["Password",this.model.Password],"Password was changed")];case 1:return n.sent(),this.model.Password="",[2]}})})},t.prototype.addRole=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(){return this.newRole?(this.roles.push(this.newRole),this.newRole=null,[2]):[2]})})},t.prototype.removeRole=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(){return n?(this.roles=this.roles.filter(function(t){return t!=n}),[2]):[2]})})},t.prototype.addPermission=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(){return this.newPermission?(this.permissions.push(this.newPermission),this.newPermission=null,[2]):[2]})})},t.prototype.removePermission=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(){return n?(this.permissions=this.permissions.filter(function(t){return t!=n}),[2]):[2]})})},t.prototype.deleteUser=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return[4,shared_1.deleteSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:"AdminDeleteUser",args:["Id",this.id]}))];case 1:return n.sent(),this.$emit("done",this.model),[2]}})})})];case 1:return t.sent(),[2]}})})},t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return this.canSubmit?[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var r,n,l,u,t,i,f,e,o,s,h,c,a=this;return __generator(this,function(v){switch(v.label){case 0:r=shared_1.sanitizedModel(this.model);shared_1.log("EditUserModal.submit()",r);n=new dtos_1.AdminUpdateUser({id:this.id,userAuthProperties:{}});l=["id","roles","permissions"];for(u in r)t=u.toLowerCase(),i=r[u],t==="username"?n.userName=i:t==="email"?n.email=i:t==="displayname"?n.displayName=i:t==="firstname"?n.firstName=i:t==="lastname"?n.lastName=i:t==="profileurl"?n.profileUrl=i:l.indexOf(t)==-1&&(n.userAuthProperties[u]=i);return f=client_1.getField(this.row,"Roles")||[],e=this.roles.filter(function(n){return f.indexOf(n)==-1}),e.length>0&&(n.addRoles=e),o=f.filter(function(n){return a.roles.indexOf(n)==-1}),o.length>0&&(n.removeRoles=o),s=client_1.getField(this.row,"Permissions")||[],h=this.permissions.filter(function(n){return s.indexOf(n)==-1}),h.length>0&&(n.addPermissions=h),c=s.filter(function(n){return a.permissions.indexOf(n)==-1}),c.length>0&&(n.removePermissions=c),[4,shared_1.putSiteProxy(new dtos_1.SiteProxy({slug:this.slug,request:client_1.nameOf(new dtos_1.AdminUpdateUser)}),n)];case 1:return v.sent(),this.$emit("done",r),[2]}})})})]:[2];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"id",void 0),__decorate([vue_property_decorator_1.Component({template:'<div id="editUserModal" class="modal-inline modal-inline-lg" tabindex="-1" role="dialog" @keyup.esc="$emit(\'done\')" title="">\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title">\n Edit User {{ getField(row,\'id\') }}: {{ displayName }}\n <\/h5>\n <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="$emit(\'done\')"><\/button>\n <\/div>\n <div class="modal-body">\n <form @submit.prevent="submit" :class="{ error:responseStatus, loading }" >\n <div class="mb-3">\n <alert-success :message="success" /> \n <error-summary :except="type.properties.map(x => x.name)" :responseStatus="responseStatus" />\n <\/div>\n <div class="row">\n <div class="col col-7">\n <div class="mb-3">\n <template v-for="rowProps in gridProps">\n <div class="row mb-3">\n <template v-for="f in rowProps">\n <div class="col">\n <v-input-type :property="f" :model="model" :size="size" :responseStatus="responseStatus" />\n <\/div>\n <\/template>\n <\/div>\n <\/template>\n <\/div>\n <\/div>\n <div class="col col-5">\n <div class="row mb-3">\n <div class="col col-8">\n <v-input type="password" id="Password" v-model="model.Password" :responseStatus="responseStatus" \n placeholder="Password" :inputClass="[\'form-control-\' + size]" help="New Password" \n @keypress.enter.native.prevent="changePassword()" /> \n <\/div>\n <div class="col col-4 p-0">\n <button @click.prevent="changePassword()" class="btn btn-outline-danger" :disabled="loading">Change<\/button> \n <\/div>\n <\/div>\n <div class="row mb-3">\n <template v-if="model.LockedDate">\n <div class="col col-8 pe-0">\n <label>Locked on {{ model.LockedDate | datefmt }}<\/label>\n <\/div>\n <div class="col col-4 p-0">\n <button @click.prevent="unlockUser()" class="btn btn-outline-danger" :disabled="loading">Unlock<\/button>\n <\/div> \n <\/template>\n <div v-else class="col">\n <button @click.prevent="lockUser()" class="btn btn-outline-danger" :disabled="loading">Lock User<\/button>\n <\/div> \n <\/div>\n <div class="row mb-3" v-if="roles.length">\n <div class="col">\n <h4>Roles<\/h4>\n <div v-for="role in roles">\n <button @click.prevent="removeRole(role)" class="btn btn-sm btn-link" title="Remove Role"><i class="svg svg-md svg-delete"><\/i><\/button> \n <span class="align-middle">{{ role }}<\/span>\n <\/div>\n <\/div>\n <\/div>\n <div class="row mb-3" v-if="missingRoles.length">\n <div class="col col-8">\n <v-select id="roles" :values="[\'\',...missingRoles]" :responseStatus="responseStatus"\n v-model="newRole" selectClass="custom-select" help="Add Role">\n <\/v-select>\n <\/div>\n <div class="col col-4 p-0">\n <button :disabled="!newRole" @click.prevent="addRole()" class="btn btn-outline-secondary" title="Add Role">Add<\/button> \n <\/div>\n <\/div>\n <div class="row mb-3" v-if="permissions.length">\n <div class="col">\n <h4>Permissions<\/h4>\n <div v-for="perm in permissions">\n <button @click.prevent="removePermission(perm)" class="btn btn-sm btn-link" title="Remove Permission"><i class="svg svg-md svg-delete"><\/i><\/button> \n <span class="align-middle">{{ perm }}<\/span>\n <\/div>\n <\/div>\n <\/div>\n <div class="row mb-3" v-if="missingPermissions.length">\n <div class="col col-8">\n <v-select id="permissions" :values="[\'\',...missingPermissions]" :responseStatus="responseStatus"\n v-model="newPermission" selectClass="custom-select" help="Add Permission">\n <\/v-select>\n <\/div>\n <div class="col col-4 p-0">\n <button :disabled="!newPermission" @click.prevent="addPermission()" class="btn btn-outline-secondary" title="Add Permission">Add<\/button> \n <\/div>\n <\/div>\n <\/div>\n <\/div>\n <div class="row mt-3 pt-3 border-top border-top-primary">\n <div class="col-6 confirm-delete ps-4">\n <input id="chkDelete" type="checkbox" class="form-check-input" @change="confirmDelete=!confirmDelete"/> \n <label for="chkDelete" class="form-check-label">confirm<\/label>\n <button class="btn btn-danger" @click.prevent="confirmDelete && deleteUser()" :disabled="!confirmDelete">Delete<\/button>\n <\/div>\n <div class="col text-end"> \n <span class="btn btn-link" @click="$emit(\'done\')">close<\/span>\n <button :disabled="!canSubmit || loading" type="submit" class="btn btn-primary">{{labelButton}}<\/button>\n <\/div>\n <\/div>\n <\/form>\n <\/div>\n <\/div>\n <\/div>\n<\/div>'})],t)}(vue_property_decorator_1.Vue);exports.EditUserModal=EditUserModal;exports.default=EditUserModal;vue_property_decorator_1.Vue.component("edit-user-modal",EditUserModal);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.AdminUsers=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),client_1=require("@servicestack/client"),AdminUsers=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.txtQuery="",t.showCreate=!1,t.orderBy="",t.skip=0,t.take=50,t.pageSize=50,t.selectedField=null,t.editingRow=null,t.fields=[],t.results=[],t.loading=!1,t.responseStatus=null,t}return __extends(t,n),t.prototype.onUrlChange=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return shared_1.log("onUrlChange",n),[4,this.reset()];case 1:return t.sent(),[2]}})})},t.prototype.reset=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return shared_1.log("AdminUsers.reset()"),[4,this.search()];case 1:return n.sent(),[2]}})})},t.prototype.clearQuery=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return this.txtQuery="",[4,this.search()];case 1:return n.sent(),[2]}})})},t.prototype.search=function(){return __awaiter(this,void 0,void 0,function(){var n,t=this;return __generator(this,function(i){switch(i.label){case 0:return n=["query",this.txtQuery,"orderBy",this.orderBy,"skip",""+this.skip,"take",""+this.take],shared_1.log("AdminUsers.search(): "+n),[4,shared_1.exec(this,function(){return __awaiter(t,void 0,void 0,function(){var i,t;return __generator(this,function(r){switch(r.label){case 0:return[4,shared_1.getSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:"AdminQueryUsers",args:n}))];case 1:return i=r.sent(),t=JSON.parse(i),console.log(t),this.results=client_1.getField(t,"Results"),[2]}})})})];case 1:return i.sent(),[2]}})})},Object.defineProperty(t.prototype,"store",{get:function(){return shared_1.store},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bus",{get:function(){return shared_1.bus},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"slug",{get:function(){return this.$route.params.slug},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"site",{get:function(){return shared_1.store.getSite(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"plugin",{get:function(){var n;if((n=shared_1.store.getApp(this.slug))!==null&&n!==void 0)return n.plugins.adminUsers},enumerable:!1,configurable:!0}),t.prototype.hasFeature=function(n){return this.plugin.enabled.find(function(t){return t===n})!=null},Object.defineProperty(t.prototype,"enabled",{get:function(){return!!this.plugin},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"accessible",{get:function(){return this.enabled&&shared_1.store.hasRole(this.slug,this.plugin.accessRole)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"session",{get:function(){return shared_1.store.getSession(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"windowStyles",{get:function(){return!this.accessible||shared_1.collapsed(this.slug,"footer")?"collapse-footer":""},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"fieldNames",{get:function(){var i=this,n,t=((n=this.plugin)===null||n===void 0?void 0:n.queryUserAuthProperties)||shared_1.allKeys(this.results);return this.fields.length>0&&(t=t.filter(function(n){return i.fields.indexOf(n)>=0})),t},enumerable:!1,configurable:!0}),t.prototype.show=function(n,t){this.selectedField=null;this.showCreate=!1;this.editingRow=null;n==="Create"?this.showCreate=!0:n=="Edit"&&typeof t=="number"&&(this.editingRow=t)},t.prototype.handleDone=function(n,t){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(i){switch(i.label){case 0:return(shared_1.log("handleDone",n,t),this.showCreate=!1,this.editingRow=null,!t)?[3,2]:[4,this.search()];case 1:i.sent();i.label=2;case 2:return[2]}})})},t.prototype.viewNext=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return this.skip+=n,[4,this.search()];case 1:return t.sent(),[2]}})})},t.prototype.setOrderBy=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return this.orderBy=this.orderBy==n?"-"+n:this.orderBy=="-"+n?"":n,[4,this.search()];case 1:return t.sent(),[2]}})})},t.prototype.humanize=function(n){return client_1.humanize(n)},t.prototype.renderValue=function(n){return shared_1.renderValue(n)},t.prototype.getField=function(n,t){return client_1.getField(n,t)},t.prototype.selectedRow=function(n){return this.selectedField&&this.selectedField[0]==n},t.prototype.selectedCell=function(){return!1},t.prototype.selectField=function(n,t){this.selectedField=[n,t]},t.prototype.isEditingRow=function(n){return this.editingRow===n},t.prototype.editRow=function(n){this.editingRow=n;this.selectedField=[n,0]},t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return shared_1.log("AdminUsers.mounted()"),[4,shared_1.loadSite(this.slug)];case 1:return t.sent(),[4,this.reset()];case 2:return t.sent(),shared_1.bus.$on("signedin",function(){shared_1.log("signedin");n.reset()}),[2]}})})},__decorate([vue_property_decorator_1.Watch("$route",{immediate:!0,deep:!0})],t.prototype,"onUrlChange",null),__decorate([vue_property_decorator_1.Component({template:'<section v-if="enabled" id="adminusers" :class="[\'grid-layout\',\'no-sidebar\',windowStyles]">\n\n <header id="header">\n <h1 v-if="site">\n <nav class="site-breadcrumbs">\n <ol class="breadcrumb">\n <li class="breadcrumb-item">\n <router-link to="/"><i class="home-link svg-3x mb-1" title="home" /><\/router-link>\n <\/li>\n <li :class="[\'breadcrumb-item\']">\n <img v-if="site.iconUrl" :src="site.iconUrl" class="sq-3x mb-1">\n <span v-else>{{site.name}}<\/span>\n <\/li>\n <li v-if="loading"><i class="svg-loading svg-lg ms-2 mb-1" title="loading..." /><\/li>\n <\/ol>\n <\/nav>\n <\/h1>\n <h1 v-else-if="loading">\n <i class="fab fa-loading"><\/i>\n Loading...\n <\/h1>\n <div v-else-if="responseStatus">\n <error-summary :responseStatus="responseStatus" />\n <router-link to="/">&lt; back to sites<\/router-link>\n <\/div>\n <auth id="auth" v-if="site && app" :slug="slug" feature="adminusers" /> \n <\/header>\n \n <main>\n <div v-if="!loading && session && accessible">\n <div class="main-container p-2">\n <form class="mb-2 row g-1" @submit.prevent="search()">\n <div class="col-auto">\n <i v-if="txtQuery" class="text-close" style="position:absolute;margin:0 0 3px 265px;" title="clear" @click="clearQuery()"><\/i>\n <v-input v-model="txtQuery" id="txtQuery" \n :placeholder="hasFeature(\'query\') ? \'Search Users\' : \'Username or Email\'" inputClass="form-control" />\n <\/div>\n <div class="col-auto">\n <button @click="search()" class="ms-1 btn btn-outline-primary">Go<\/button>\n <\/div>\n <div class="col-auto">\n <span class="main-query ms-2">\n <button class="btn left-link svg-2x" :disabled="skip==0" title="< previous" @click="viewNext(-pageSize)"><\/button>\n <button class="btn right-link svg-2x" :disabled="results.length < take" title="next >" @click="viewNext(pageSize)"><\/button>\n <\/span>\n <span v-if="results.length" class="text-muted">\n Showing results: {{skip+1}}-{{skip+results.length}}\n <\/span>\n <span v-else class="text-muted">No results<\/span>\n <\/div>\n <\/form>\n <div v-if="results.length">\n <table class="results">\n <thead><tr class="noselect">\n <th>\n <i class="svg svg-btn svg-create svg-md" title="New User" @click="show(\'Create\')"/>\n <\/th>\n <th v-for="f in fieldNames" :key="f" @click="setOrderBy(f)" class="th-link">\n <div class="text-nowrap">\n {{ humanize(f) }}\n <span v-if="orderBy==f" class="svg svg-chevron-up svg-md align-top"><\/span>\n <span v-else-if="orderBy==\'-\'+f" class="svg svg-chevron-down svg-md align-top"><\/span>\n <\/div>\n <\/th>\n <\/tr><\/thead>\n <tbody>\n <template v-for="(r,i) in results">\n <tr :key="i" :class="{ selected:selectedRow(i) }">\n <td>\n <span>\n <i class="svg svg-btn svg-update svg-sm" title="Update User" @click="editRow(i)" />\n <\/span>\n <\/td> \n <td v-for="(f,j) in fieldNames" :key="j" :title="renderValue(getField(r,f))" \n :class="{ selected:selectedCell(i,j) }" \n @click="selectField(i,j)"> \n <span v-if="i==0 && j==0 && showCreate">\n <create-user-modal :slug="slug" @done="handleDone(\'Create\',$event)" />\n <\/span>\n <div v-else-if="isEditingRow(i) && j == 0">\n <edit-user-modal :slug="slug" :id="getField(r,\'id\')" @done="handleDone(\'Edit\',$event)" />\n <\/div>\n <format v-else :value="getField(r,f)" />\n <\/td>\n <\/tr>\n <\/template>\n <\/tbody>\n <\/table>\n <error-view :responseStatus="responseStatus" />\n <\/div>\n <div class="actions mt-2">\n <button @click="show(\'Create\')" class="btn btn-outline-primary">\n New User\n <\/button>\n <\/div>\n <\/div>\n <\/div>\n <div v-else-if="!session" class="text-center" style="position:absolute;left:50%;margin:50px 0 0 -100px">\n <i class="svg svg-users svg-10x" />\n <h3 class="mb-4">Manage Users<\/h3>\n <button v-if="!loading" @click="bus.$emit(\'signin\')" class="btn btn-outline-primary">\n Sign In\n <\/button>\n <\/div>\n <div v-else-if="!accessible" class="text-danger"> \n <h4>\n <i class="svg block-danger svg-2x" />\n Only {{plugin.accessRole}} Users can manage all users\n <\/h4> \n <\/div>\n <\/main>\n \n <Footer v-if="app" :slug="slug"/>\n \n <\/section>\n <no-plugin v-else :slug="slug" plugin="adminusers" />'})],t)}(vue_property_decorator_1.Vue);exports.AdminUsers=AdminUsers;exports.default=AdminUsers;vue_property_decorator_1.Vue.component("admin-users",AdminUsers);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u};Object.defineProperty(exports,"__esModule",{value:!0});exports.AuthModal=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),AuthModal=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.loading=!1,t.responseStatus=null,t}return __extends(t,n),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&this.app.plugins.auth},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"providerUrl",{get:function(){return this.provider?this.app.app.baseUrl+"/auth/"+this.provider:this.app.app.baseUrl+"/auth?noredirect"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"displayUrl",{get:function(){return shared_1.splitOnFirst(this.providerUrl,"?")[0]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"url",{get:function(){var n=this.app.app.baseUrl,t=this.provider?"/"+this.provider+("?continue="+encodeURIComponent("/auth")+"&"):"?";return n+"/auth"+t+"noredirect"},enumerable:!1,configurable:!0}),t.prototype.mounted=function(){var t=this,n=document.querySelector("#auth-frame");window.addEventListener("message",function(i){var r;i.source==(n===null||n===void 0?void 0:n.contentWindow)&&((r=i.data)===null||r===void 0?void 0:r.copy)&&t.$emit("done",i.data.copy)})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"provider",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="enabled" id="authModal" class="modal" tabindex="-1" role="dialog" style="display:block">\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <div v-if="url">\n <h5 class="modal-title">\n Session for <a :href="providerUrl" target="_blank">{{displayUrl}}<\/a>\n <\/h5>\n <\/div>\n <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="$emit(\'done\')"><\/button>\n <\/div>\n <div class="modal-body">\n <iframe id="auth-frame" v-if="url" :src="url" />\n <\/div>\n <\/div>\n <\/div>\n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.AuthModal=AuthModal;exports.default=AuthModal;vue_property_decorator_1.Vue.component("auth-modal",AuthModal);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.AuthSecret=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),AuthSecret=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.loading=!1,t.responseStatus=null,t.token="",t}return __extends(t,n),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&shared_1.store.hasPlugin(this.slug,"auth")},enumerable:!1,configurable:!0}),t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.client.post(new dtos_1.SiteAuthenticate({slug:this.slug,provider:"authsecret",accessToken:this.token}))];case 1:return n=t.sent(),shared_1.bus.$emit("appSession",{slug:this.slug,result:n}),this.$emit("done"),[2]}})})})];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="enabled">\n <form ref="form" @submit.prevent="submit" :class="{ error:responseStatus, loading }" >\n <div class="mb-3">\n <error-summary except="token" :responseStatus="responseStatus" />\n <\/div>\n <div class="mb-3">\n <v-input id="token" type="password" v-model="token" placeholder="AuthSecret" \n help="The configured AdminAuthSecret" :responseStatus="responseStatus" />\n <a href="https://docs.servicestack.net/debugging#authsecret" class="lnk-help help-muted" target="_blank" title="help"><\/a> \n <\/div>\n <div class="mb-3">\n <button type="submit" class="btn btn-lg btn-outline-primary">Login<\/button>\n <\/div>\n <\/form>\n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.AuthSecret=AuthSecret;exports.default=AuthSecret;vue_property_decorator_1.Vue.component("auth-secret",AuthSecret);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.BearerToken=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),BearerToken=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.loading=!1,t.responseStatus=null,t.token="",t}return __extends(t,n),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&shared_1.store.hasPlugin(this.slug,"auth")},enumerable:!1,configurable:!0}),t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.client.post(new dtos_1.SiteAuthenticate({slug:this.slug,provider:"bearer",accessToken:this.token}))];case 1:return n=t.sent(),shared_1.bus.$emit("appSession",{slug:this.slug,result:n}),this.$emit("done"),[2]}})})})];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="enabled">\n <form ref="form" @submit.prevent="submit" :class="{ error:responseStatus, loading }" >\n <div class="mb-3">\n <error-summary except="token" :responseStatus="responseStatus" />\n <\/div>\n <div class="mb-3">\n <v-input id="token" v-model="token" placeholder="Bearer Token" :responseStatus="responseStatus" \n help="Any BearerToken Auth Providers, e.g. JWT or API Key" />\n <\/div>\n <div class="mb-3">\n <button type="submit" class="btn btn-lg btn-outline-primary">Login<\/button>\n <\/div>\n <\/form>\n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.BearerToken=BearerToken;exports.default=BearerToken;vue_property_decorator_1.Vue.component("bearer-token",BearerToken);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.Credentials=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),Credentials=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.loading=!1,t.responseStatus=null,t.userName="",t.password="",t}return __extends(t,n),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&shared_1.store.hasPlugin(this.slug,"auth")},enumerable:!1,configurable:!0}),t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.client.post(new dtos_1.SiteAuthenticate({slug:this.slug,provider:"credentials",userName:this.userName,password:this.password,rememberMe:!0}))];case 1:return n=t.sent(),shared_1.bus.$emit("appSession",{slug:this.slug,result:n}),this.$emit("done"),[2]}})})})];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="enabled">\n <form ref="form" @submit.prevent="submit" :class="{ error:responseStatus, loading }" >\n <div class="mb-3">\n <error-summary except="userName,password" :responseStatus="responseStatus" />\n <\/div>\n <div class="mb-3">\n <v-input id="userName" v-model="userName" placeholder="Username" :responseStatus="responseStatus" \n help="Username or Email you signed up with" />\n <\/div>\n <div class="mb-3">\n <v-input type="password" id="password" v-model="password" placeholder="Password" :responseStatus="responseStatus" />\n <\/div>\n <div class="mb-3">\n <button type="submit" class="btn btn-lg btn-outline-primary">Login<\/button>\n <\/div>\n <\/form>\n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.Credentials=Credentials;exports.default=Credentials;vue_property_decorator_1.Vue.component("credentials",Credentials);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.Auth=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),router_1=require("../../shared/router"),Auth=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.loading=!1,t.responseStatus=null,t.showAuthDialog=!1,t.showUserPopup=!1,t.tab="",t.userName="",t.password="",t.rememberMe=!0,t}return __extends(t,n),Object.defineProperty(t.prototype,"store",{get:function(){return shared_1.store},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"site",{get:function(){return shared_1.store.getSite(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"appInfo",{get:function(){return shared_1.store.getApp(this.slug).app},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&shared_1.store.hasPlugin(this.slug,"auth")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"plugin",{get:function(){var n;if((n=this.app)!==null&&n!==void 0)return n.plugins.auth},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"session",{get:function(){return shared_1.store.getSession(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"prefsDirty",{get:function(){return shared_1.store.isDirty(this.slug)},enumerable:!1,configurable:!0}),t.prototype.goto=function(n){switch(n){case"adminusers":this.$router.push(router_1.adminUsersRoute(this.slug,null));break;case"autoquery":this.$router.push(router_1.autoQueryRoute(this.slug,this.op?{op:this.op}:null));break;case"validation":this.$router.push(router_1.validationRoute(this.slug,this.op?{op:this.op}:null))}},Object.defineProperty(t.prototype,"authProviders",{get:function(){var n;return((n=this.plugin)===null||n===void 0?void 0:n.authProviders)||[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tabActive",{get:function(){var n;if((n=this.authProviders[0])!==null&&n!==void 0)return n.name},enumerable:!1,configurable:!0}),t.prototype.activeTab=function(n){var t;return this.tab?this.tab==n:((t=this.authProviders[0])===null||t===void 0?void 0:t.type)==n},t.prototype.hasProvider=function(n){return this.authProviders.some(function(t){return t.name==n})},Object.defineProperty(t.prototype,"hasBearer",{get:function(){return this.authProviders.some(function(n){return n.type=="Bearer"})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasOAuth",{get:function(){return this.authProviders.some(function(n){return n.type=="oauth"})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"oauthProviders",{get:function(){return this.authProviders.filter(function(n){return n.type=="oauth"})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasSession",{get:function(){return this.authProviders.some(function(n){return n.type=="session"||n.type=="credentials"||n.type=="oauth"})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasAuthSecret",{get:function(){return this.plugin.hasAuthSecret},enumerable:!1,configurable:!0}),t.prototype.modalKeyDown=function(n){if(this.showAuthDialog&&n.key=="Escape"){this.showAuthDialog=!1;return}if(n.ctrlKey&&n.key==="s"){this.savePrefs();n.preventDefault();return}},t.prototype.beforeDestroy=function(){window.removeEventListener("keydown",this.modalKeyDown)},t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return window.addEventListener("keydown",this.modalKeyDown),shared_1.bus.$on("signin",function(){shared_1.log("signin",n.session);n.session||(n.showAuthDialog=!0)}),[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n,t;return __generator(this,function(i){switch(i.label){case 0:if(!(this.app&&!this.session))return[3,4];i.label=1;case 1:return i.trys.push([1,3,,4]),[4,shared_1.client.post(new dtos_1.SiteAuthenticate({slug:this.slug}))];case 2:return n=i.sent(),shared_1.bus.$emit("appSession",{slug:this.slug,result:n}),[3,4];case 3:t=i.sent();shared_1.bus.$emit("appSession",{slug:this.slug,result:null});throw t;case 4:return[2]}})})})];case 1:return t.sent(),[2]}})})},t.prototype.savePrefs=function(){var n=this;this.loading=!0;setTimeout(function(){return n.loading=!1},300);shared_1.bus.$emit("savePrefs",{slug:this.slug})},t.prototype.logout=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var t,n=this;return __generator(this,function(i){switch(i.label){case 0:return[4,shared_1.client.post(new dtos_1.SiteAuthenticate({slug:this.slug,provider:"logout"}))];case 1:return t=i.sent(),shared_1.bus.$emit("savePrefs",{slug:this.slug,callback:function(){shared_1.bus.$emit("signout",{slug:n.slug});n.showUserPopup=!1}}),[2]}})})})];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"feature",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"op",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="enabled">\n <button v-if="!session && !loading" @click="showAuthDialog=true" class="btn btn-outline-primary">\n Sign In\n <\/button>\n <span v-if="session">\n \n <div class="btn-group" role="group">\n <button v-if="feature != \'adminusers\'" class="btn btn-light btn-sm" @click="goto(\'adminusers\')"\n title="Go to Admin Users"><i class="users-link svg-lg"/><\/button>\n <button v-if="feature != \'autoquery\'" class="btn btn-light btn-sm" @click="goto(\'autoquery\')"\n title="Go to AutoQuery"><i class="db-link svg-lg"/><\/button>\n <button v-if="feature != \'validation\'" class="btn btn-light btn-sm" @click="goto(\'validation\')"\n title="Go to Validation"><i class="lock-link svg-lg"/><\/button>\n <button v-if="prefsDirty || loading" @click="savePrefs()" title="Save Preferences" \n class="btn btn-light btn-sm"><i :class="(loading ? \'svg-loading\' : \'save-link\') + \' svg-lg\'" /><\/button> \n <div class="btn-group" role="group">\n <button @click="showUserPopup=!showUserPopup" id="btnGroupDrop1" type="button" class="btn btn-light dropdown-toggle">\n <img v-if="session.profileUrl" :src="session.profileUrl" class="sq-lg me-1 mb-1">\n <i v-else class="svg-auth svg-2x mb-1" />\n {{session.displayName || session.userName || session.email}}\n <\/button>\n <div :class="[\'dropdown-menu\',{show:showUserPopup}]" style="top:45px;left:auto">\n <a class="dropdown-item" href="javascript:void(0)" @click="logout()">Sign Out<\/a>\n <\/div> \n <\/div>\n <\/div>\n \n <\/span>\n <div v-if="showAuthDialog" id="signInModal" class="modal" tabindex="-1" role="dialog" \n :style="{ display:showAuthDialog?\'block\':\'none\', background:\'rgba(0,0,0,.25)\'}">\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title">Sign into {{ appInfo.serviceName }}<\/h5>\n <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="showAuthDialog=false"><\/button>\n <\/div>\n <div class="modal-body">\n <ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">\n <li class="nav-item" v-if="hasProvider(\'credentials\')" @click="tab=\'credentials\'">\n <span :class="[\'nav-link\', {active:activeTab(\'credentials\')}]">Credentials<\/span>\n <\/li>\n <li class="nav-item" v-if="hasOAuth" @click="tab=\'oauth\'">\n <span :class="[\'nav-link\', {active:activeTab(\'oauth\')}]">OAuth<\/span>\n <\/li>\n <li class="nav-item" v-if="hasBearer" @click="tab=\'Bearer\'">\n <span :class="[\'nav-link\', {active:activeTab(\'Bearer\')}]">Token<\/span>\n <\/li>\n <li class="nav-item" v-if="hasSession" @click="tab=\'session\'">\n <span :class="[\'nav-link\', {active:activeTab(\'session\')}]">Session<\/span>\n <\/li>\n <li class="nav-item" v-if="hasAuthSecret" @click="tab=\'authsecret\'">\n <span :class="[\'nav-link\', {active:activeTab(\'authsecret\')}]">AuthSecret<\/span>\n <\/li>\n <\/ul>\n <div class="tab-content" id="pills-tabContent">\n <div v-if="hasProvider(\'credentials\')" :class="[\'tab-pane\', {active:activeTab(\'credentials\')}]" id="pills-credentials" role="tabpanel">\n <credentials :slug="slug" @done="showAuthDialog=false" />\n <\/div>\n <div v-if="hasOAuth" :class="[\'tab-pane\', {active:activeTab(\'oauth\')}]" id="pills-oauth" role="tabpanel">\n <oauth-secret :slug="slug" :providers="oauthProviders" @done="showAuthDialog=false" />\n <\/div>\n <div v-if="hasBearer" :class="[\'tab-pane\', {active:activeTab(\'Bearer\')}]" id="pills-bearer" role="tabpanel">\n <bearer-token :slug="slug" @done="showAuthDialog=false" />\n <\/div>\n <div v-if="hasSession" :class="[\'tab-pane\', {active:activeTab(\'session\')}]" id="pills-session" role="tabpanel">\n <session-id :slug="slug" @done="showAuthDialog=false" />\n <\/div>\n <div v-if="hasAuthSecret" :class="[\'tab-pane\', {active:activeTab(\'authsecret\')}]" id="pills-authsecret" role="tabpanel">\n <auth-secret :slug="slug" @done="showAuthDialog=false" />\n <\/div>\n <\/div>\n <\/div>\n <\/div>\n <\/div>\n <\/div> \n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.Auth=Auth;exports.default=Auth;vue_property_decorator_1.Vue.component("auth",Auth);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},__spreadArrays=this&&this.__spreadArrays||function(){for(var i=0,n=0,r=arguments.length;n<r;n++)i+=arguments[n].length;for(var u=Array(i),f=0,n=0;n<r;n++)for(var e=arguments[n],t=0,o=e.length;t<o;t++,f++)u[f]=e[t];return u};Object.defineProperty(exports,"__esModule",{value:!0});exports.OAuthSecret=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),desktop_1=require("@servicestack/desktop"),OAuthSecret=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.loading=!1,t.responseStatus=null,t.showOAuthModal="",t.tab="session",t.tokenProvider="session",t.selectedProvider="session",t.token="",t.sessionId="",t.originalClip="",t.monitorClip=!1,t}return __extends(t,n),Object.defineProperty(t.prototype,"authProviders",{get:function(){return __spreadArrays([{name:"session"}],this.providers.filter(function(n){return n.type=="oauth"}))},enumerable:!1,configurable:!0}),t.prototype.showProvider=function(n){return __awaiter(this,void 0,void 0,function(){var t,i;return __generator(this,function(r){switch(r.label){case 0:return this.monitorClip=!1,this.tokenProvider=n,t=n=="session"?"/auth?noredirect&copy=session":"/auth/"+n+"?continue="+encodeURIComponent("/auth?noredirect&copy=session,"+n),[4,shared_1.openUrl(this.app.app.baseUrl+t)];case 1:return(r.sent(),!shared_1.store.desktop)?[3,4]:(this.selectedProvider=this.tokenProvider,this.monitorClip=!0,i=this,[4,desktop_1.clipboard()]);case 2:return i.originalClip=r.sent(),shared_1.log("monitorClipboard originalClip: "+this.originalClip),[4,this.monitorClipboard()];case 3:r.sent();r.label=4;case 4:return[2]}})})},t.prototype.monitorClipboard=function(){return __awaiter(this,void 0,void 0,function(){var n,t,i=this;return __generator(this,function(r){switch(r.label){case 0:return[4,desktop_1.clipboard()];case 1:return(n=r.sent(),!(n&&n!=this.originalClip))?[3,4]:(this.monitorClip=!1,n.length<25?(this.selectedProvider="session",this.sessionId=n):(this.selectedProvider=this.tokenProvider,this.token=n),[4,desktop_1.windowSendToForeground()]);case 2:return t=r.sent(),shared_1.log("monitorClipboard copy detected: '"+n+"', sendToForeground: "+t),[4,this.submit()];case 3:r.sent();r.label=4;case 4:return this.monitorClip&&setTimeout(function(){return i.monitorClipboard()},200),[2]}})})},Object.defineProperty(t.prototype,"oauthModalProvider",{get:function(){return this.showOAuthModal==="session"?"":this.showOAuthModal},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"includesOAuthTokens",{get:function(){return this.app.plugins.auth.includesOAuthTokens},enumerable:!1,configurable:!0}),t.prototype.activeTab=function(n){return this.tab==n},Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&this.app.plugins.auth},enumerable:!1,configurable:!0}),t.prototype.modalDone=function(n){n&&Object.keys(n).length==1&&(this.tokenProvider=Object.keys(n)[0],this.token=n[this.tokenProvider],this.tokenProvider==="sessionid"&&(this.tokenProvider="session"));this.showOAuthModal=""},t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return(this.monitorClip=!1,!this.sessionId&&!this.token)?[2]:[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.client.post(new dtos_1.SiteAuthenticate({slug:this.slug,provider:this.selectedProvider,accessToken:this.selectedProvider=="session"?this.sessionId:this.token}))];case 1:return n=t.sent(),shared_1.bus.$emit("appSession",{slug:this.slug,result:n}),this.$emit("done"),[2]}})})})];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop({"default":[]})],t.prototype,"providers",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="enabled">\n <form ref="form" @submit.prevent="" :class="{ error:responseStatus, loading }" >\n <div class="mb-3">\n <error-summary except="token" :responseStatus="responseStatus" />\n <\/div>\n <div class="mb-3">\n <p class="text-muted">\n 1. Sign In\n <\/p>\n <div class="mb-3">\n <button v-for="x in authProviders" class="btn btn-outline-primary btn-sm me-1" @click="showProvider(x.name)">{{x.name}}<\/button>\n <\/div>\n \n <auth-modal v-if="showOAuthModal" :slug="slug" :provider="oauthModalProvider" @done="modalDone" />\n \n <p class="text-muted">\n 2. Copy Session Id \n <span v-if="includesOAuthTokens">or OAuth AccessToken<\/span>\n <\/p>\n \n <ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">\n <li class="nav-item btn-outline-secondary" @click="selectedProvider=\'session\'">\n <span :class="[\'nav-link\',\'btn-outline-secondary\', {active:selectedProvider==\'session\'}]">sessionId<\/span>\n <\/li>\n <li v-if="tokenProvider != \'session\'" class="nav-item btn-outline-secondary" @click="selectedProvider=tokenProvider">\n <span :class="[\'nav-link\',\'btn-outline-secondary\', {active:selectedProvider==tokenProvider}]">{{tokenProvider}}<\/span>\n <\/li>\n <\/ul>\n <div class="tab-content">\n <div :class="[\'tab-pane\', {active:selectedProvider==\'session\'}]" role="tabpanel">\n <div class="mb-3">\n <v-input id="sessionId" v-model="sessionId" placeholder="Session Id" :responseStatus="responseStatus" />\n <\/div>\n <\/div>\n <div v-if="tokenProvider != \'session\'" :class="[\'tab-pane\', {active:selectedProvider==tokenProvider}]" role="tabpanel">\n <div class="mb-3">\n <v-input id="token" v-model="token" placeholder="Token" :responseStatus="responseStatus" />\n <\/div>\n <\/div>\n <div class="mb-3">\n <button class="btn btn-lg btn-outline-primary" @click="submit" :disabled="loading">Login<\/button>\n <i v-if="loading" class="svg-loading svg-lg ms-2"><\/i>\n <\/div>\n <\/div>\n \n <\/div>\n <\/form>\n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.OAuthSecret=OAuthSecret;exports.default=OAuthSecret;vue_property_decorator_1.Vue.component("oauth-secret",OAuthSecret);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.SessionId=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),SessionId=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.showSessionModal=!1,t.loading=!1,t.responseStatus=null,t.token="",t}return __extends(t,n),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&shared_1.store.hasPlugin(this.slug,"auth")},enumerable:!1,configurable:!0}),t.prototype.modalDone=function(n){this.token=n&&n.sessionid||"";this.showSessionModal=!1},t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.client.post(new dtos_1.SiteAuthenticate({slug:this.slug,provider:"session",accessToken:this.token}))];case 1:return n=t.sent(),shared_1.bus.$emit("appSession",{slug:this.slug,result:n}),this.$emit("done"),[2]}})})})];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop({"default":!1})],t.prototype,"hideViewSession",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="enabled">\n <form ref="form" @submit.prevent="submit" :class="{ error:responseStatus, loading }" >\n <div class="mb-3">\n <error-summary except="token" :responseStatus="responseStatus" />\n <\/div>\n <div class="mb-3">\n <span v-if="!hideViewSession" class="btn btn-sm btn-outline-primary mb-2" @click="showSessionModal=!showSessionModal">session<\/span>\n <auth-modal v-if="showSessionModal" :slug="slug" @done="modalDone" />\n <v-input id="token" v-model="token" placeholder="Session Id" :responseStatus="responseStatus" \n help="Copy your Authenticated Session Id" />\n <\/div>\n <div class="mb-3">\n <button type="submit" class="btn btn-lg btn-outline-primary">Login<\/button>\n <\/div>\n <\/form>\n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.SessionId=SessionId;exports.default=SessionId;vue_property_decorator_1.Vue.component("session-id",SessionId);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.CreateModal=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),client_1=require("@servicestack/client"),CreateModal=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.value="",t.model={},t.loading=!1,t.responseStatus=null,t}return __extends(t,n),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&this.app.plugins.autoQuery},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"allProperties",{get:function(){return this.op.request.properties},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"size",{get:function(){return this.allProperties.length<=10?"lg":"md"},enumerable:!1,configurable:!0}),t.prototype.humanize=function(n){return client_1.humanize(n)},t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(){return shared_1.log("CreateModal.mounted()",this.op),shared_1.initInlineModal("#createModal"),this.type.properties.forEach(function(t){n.$set(n.model,t.name,shared_1.defaultValue(t))}),this.$nextTick(function(){var n;(n=document.querySelector("#createModal input:first-child"))===null||n===void 0?void 0:n.select()}),[2]})})},t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n;return __generator(this,function(t){switch(t.label){case 0:return n=shared_1.sanitizedModel(this.model),shared_1.log("CreateModal.submit()",n),[4,shared_1.postSiteProxy(new dtos_1.SiteProxy({slug:this.slug,request:this.op.request.name}),n)];case 1:return t.sent(),this.$emit("done",n),[2]}})})})];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"op",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"type",void 0),__decorate([vue_property_decorator_1.Component({template:'<div id="createModal" class="modal-inline" tabindex="-1" role="dialog" @keyup.esc="$emit(\'done\')">\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title">\n New {{type.name}}\n <\/h5>\n <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="$emit(\'done\')"><\/button>\n <\/div>\n <div class="modal-body">\n <form @submit.prevent="submit" :class="{ error:responseStatus, loading }" >\n <div class="mb-3">\n <error-summary :except="allProperties.map(x => x.name)" :responseStatus="responseStatus" />\n <\/div> \n <div v-for="f in allProperties" :key="f.name" class="mb-3">\n <v-input-type :property="f" :model="model" :size="size" :responseStatus="responseStatus" />\n <\/div>\n <div class="mb-3 text-end">\n <span class="btn btn-link" @click="$emit(\'done\')">Close<\/span>\n <button type="submit" class="btn btn-primary">Create {{type.name}}<\/button>\n <\/div>\n <\/form>\n <\/div>\n <\/div>\n <\/div>\n<\/div>'})],t)}(vue_property_decorator_1.Vue);exports.CreateModal=CreateModal;exports.default=CreateModal;vue_property_decorator_1.Vue.component("create-modal",CreateModal);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.EditModal=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),client_1=require("@servicestack/client"),EditModal=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.value="",t.model={},t.confirmDelete=!1,t.loading=!1,t.responseStatus=null,t}return __extends(t,n),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&this.app.plugins.autoQuery},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"allProperties",{get:function(){var n,t,i;return(i=(t=(n=this.updateOp)!==null&&n!==void 0?n:this.patchOp)===null||t===void 0?void 0:t.request.properties)!==null&&i!==void 0?i:[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"size",{get:function(){return this.allProperties.length<=10?"lg":"md"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"labelButton",{get:function(){return this.type.name.length<=13?"Update "+this.type.name:"Update"},enumerable:!1,configurable:!0}),t.prototype.humanize=function(n){return client_1.humanize(n)},t.prototype.fieldValue=function(n){return shared_1.editValue(n,this.model[n.name])},t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(){return shared_1.log("EditModal.mounted()",this.type,this.model,this.row,this.updateOp,this.patchOp),shared_1.initInlineModal("#editModal"),this.type.properties.forEach(function(t){n.$set(n.model,t.name,client_1.getField(n.row,t.name))}),this.$nextTick(function(){var n;(n=document.querySelector("#createModal input:first-child"))===null||n===void 0?void 0:n.select()}),[2]})})},t.prototype.deleteRow=function(){return __awaiter(this,void 0,void 0,function(){var n,t,i=this;return __generator(this,function(r){switch(r.label){case 0:return n=this.type.properties.find(function(n){return n.isPrimaryKey}),t=n&&client_1.getField(this.row,n.name),[4,shared_1.exec(this,function(){return __awaiter(i,void 0,void 0,function(){var i;return __generator(this,function(r){switch(r.label){case 0:if(shared_1.log("EditModal.deleteRow()"),!t)throw{errorCode:"InvalidState",message:"Could not resolve Primary Key"};return i=[n.name,t],[4,shared_1.deleteSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:this.deleteOp.request.name,args:i}))];case 1:return r.sent(),this.$emit("done",this.model),[2]}})})})];case 1:return r.sent(),[2]}})})},t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return!this.updateOp&&!this.patchOp?[2]:[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var t,n,i,r,u=this;return __generator(this,function(f){switch(f.label){case 0:return(t=shared_1.sanitizedModel(this.model),shared_1.log("EditModal.submit("+(this.updateOp?"Update":"Patch")+")",t),!this.updateOp)?[3,2]:[4,shared_1.postSiteProxy(new dtos_1.SiteProxy({slug:this.slug,request:this.updateOp.request.name}),t)];case 1:return f.sent(),[3,4];case 2:return n={},i=[],this.type.properties.forEach(function(t){var f=client_1.getField(u.row,t.name),r;if(t.isPrimaryKey){n[t.name]=f;return}r=u.model[t.name];f!==r&&(r?n[t.name]=r:i.push(t.name))}),r=i.length>0?shared_1.dtoAsArgs({reset:i}):[],shared_1.log("PATCH "+this.patchOp.request.name+": ",n,r),[4,shared_1.putSiteProxy(new dtos_1.SiteProxy({slug:this.slug,request:this.patchOp.request.name,query:r}),n)];case 3:f.sent();f.label=4;case 4:return this.$emit("done",t),[2]}})})})];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"updateOp",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"patchOp",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"deleteOp",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"type",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"field",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"row",void 0),__decorate([vue_property_decorator_1.Component({template:'<div id="editModal" class="modal-inline" tabindex="-1" role="dialog" @keyup.esc="$emit(\'done\')" title="">\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title">\n Edit {{type.name}}\n <\/h5>\n <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="$emit(\'done\')"><\/button>\n <\/div>\n <div class="modal-body">\n <form @submit.prevent="submit" :class="{ error:responseStatus, loading }" >\n <div class="mb-3">\n <error-summary :except="allProperties.map(x => x.name)" :responseStatus="responseStatus" />\n <\/div> \n <div v-for="f in allProperties.filter(f => !f.isPrimaryKey)" :key="f.name" class="mb-3">\n <v-input-type :property="f" :model="model" :size="size" :responseStatus="responseStatus" />\n <\/div>\n <div class="mb-3 text-end">\n <span class="btn btn-link" @click="$emit(\'done\')">close<\/span>\n <button v-if="allProperties.length > 0" type="submit" class="btn btn-primary">{{labelButton}}<\/button>\n <\/div>\n <div v-if="deleteOp" class="confirm-delete" style="margin:-54px 0 0 20px">\n <input id="chkDelete" type="checkbox" class="form-check-input" @change="confirmDelete=!confirmDelete"/> \n <label for="chkDelete" class="form-check-label">confirm<\/label>\n <button class="btn btn-danger " @click.prevent="confirmDelete && deleteRow()" :disabled="!confirmDelete">Delete<\/button>\n <\/div>\n <\/form>\n <\/div>\n <\/div>\n <\/div>\n<\/div>'})],t)}(vue_property_decorator_1.Vue);exports.EditModal=EditModal;exports.default=EditModal;vue_property_decorator_1.Vue.component("edit-modal",EditModal);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.EventsModal=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),client_1=require("@servicestack/client"),EventsModal=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.results=[],t.expandIds=[],t.loading=!1,t.responseStatus=null,t}return __extends(t,n),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"plugin",{get:function(){var n;if((n=this.app)!==null&&n!==void 0)return n.plugins.autoQuery},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){var n;return this.plugin.crudEventsServices&&shared_1.store.hasRole(this.slug,(n=this.plugin)===null||n===void 0?void 0:n.accessRole)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pk",{get:function(){return this.type.properties.find(function(n){return n.isPrimaryKey})},enumerable:!1,configurable:!0}),t.prototype.dateFmt=function(n){return client_1.dateFmt(client_1.toDate(n))+" "+client_1.timeFmt12(client_1.toDate(n))},t.prototype.expanded=function(n){return this.expandIds.indexOf(n)>=0},t.prototype.toggle=function(n){this.expanded(n)?this.expandIds=this.expandIds.filter(function(t){return t!=n}):this.expandIds.push(n)},t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return this.enabled?(shared_1.log("EventsModal.mounted()",this.slug,this.type.name,this.id),shared_1.initInlineModal("#eventsModal"),[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n,t;return __generator(this,function(i){switch(i.label){case 0:return[4,shared_1.getSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:"GetCrudEvents",args:["model",this.type.name,"modelId",this.id]}))];case 1:return n=i.sent(),t=JSON.parse(n),this.results=t.results.reverse(),[2]}})})})]):[2];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"type",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"id",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="enabled" id="eventsModal" class="modal-inline" tabindex="-1" role="dialog" @keyup.esc="$emit(\'done\')">\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title">\n {{type.name}} Events\n <\/h5>\n <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="$emit(\'done\')"><\/button>\n <\/div>\n <div class="modal-body">\n <error-summary :responseStatus="responseStatus" />\n <dl class="h-kvp mb-3">\n <dt>{{pk.name}}<\/dt>\n <dd>{{id}}<\/dd>\n <\/dl>\n <div v-for="x in results" :key="x.id" class="event-line">\n <i v-if="!expanded(x.id)" class="svg svg-chevron-right svg-btn svg-md" title="expand" @click="toggle(x.id)"><\/i>\n <i v-else class="svg svg-chevron-down svg-btn svg-md" title="collapse" @click="toggle(x.id)"><\/i>\n <ul class="event summary" @click="toggle(x.id)">\n <li class="type">{{x.eventType | upper}}<\/li>\n <li class="by"><b><i>[{{x.userAuthId}}]<\/i> {{x.userAuthName}}<\/b><\/li>\n <li class="on"><b :title="dateFmt(x.eventDate)">{{dateFmt(x.eventDate)}}<\/b><\/li>\n <\/ul>\n <div v-if="expanded(x.id)" class="event-detail">\n <ul class="event">\n <li class="op">{{x.requestType}}<\/li>\n <li class="ip"><span>ip<\/span>{{x.remoteIp}}<\/li>\n <\/ul>\n <jsonviewer :json="x.requestBody"/>\n <\/div>\n <\/div>\n <\/div>\n <\/div>\n <\/div>\n<\/div>'})],t)}(vue_property_decorator_1.Vue);exports.EventsModal=EventsModal;exports.default=EventsModal;vue_property_decorator_1.Vue.component("events-modal",EventsModal);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},__spreadArrays=this&&this.__spreadArrays||function(){for(var i=0,n=0,r=arguments.length;n<r;n++)i+=arguments[n].length;for(var u=Array(i),f=0,n=0;n<r;n++)for(var e=arguments[n],t=0,o=e.length;t<o;t++,f++)u[f]=e[t];return u};Object.defineProperty(exports,"__esModule",{value:!0});exports.AutoQuery=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),client_1=require("@servicestack/client"),desktop_1=require("@servicestack/desktop"),AutoQuery=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.txtFilter="",t.showSelectColumns=!1,t.searchField="",t.searchType="",t.searchText="",t.skip=0,t.take=100,t.orderBy="",t.filters={},t.fields=[],t.resetPulse=!1,t.total=null,t.responseJson="",t.response=null,t.results=[],t.eventIds=null,t.loading=!1,t.responseStatus=null,t}return __extends(t,n),Object.defineProperty(t.prototype,"store",{get:function(){return shared_1.store},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"slug",{get:function(){return this.$route.params.slug},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"op",{get:function(){return this.$route.query.op},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"windowStyles",{get:function(){return shared_1.collapsed(this.slug,"footer")?"collapse-footer":""},enumerable:!1,configurable:!0}),t.prototype.onUrlChange=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return[4,this.restore()];case 1:return n.sent(),[2]}})})},t.prototype.resetQuery=function(){var n;return __awaiter(this,void 0,void 0,function(){var t;return __generator(this,function(i){switch(i.label){case 0:return t=(n=this.model)===null||n===void 0?void 0:n.properties.find(function(n){return n.isPrimaryKey}),this.searchField=this.$route.query.field||(t===null||t===void 0?void 0:t.name)||"",this.searchType=this.$route.query.type||"%",this.searchText=this.$route.query.q||"",this.skip=this.$route.query.skip&&parseInt(this.$route.query.skip)||0,this.take=this.$route.query.take&&parseInt(this.$route.query.take)||100,this.orderBy=this.$route.query.orderBy||"",this.fields=this.$route.query.fields&&this.$route.query.fields.split(",")||[],this.filters={},this.resetPulse=!this.resetPulse,[4,this.search()];case 1:return i.sent(),[2]}})})},t.prototype.restore=function(){var n,t;return __awaiter(this,void 0,void 0,function(){var r,i;return __generator(this,function(u){switch(u.label){case 0:return shared_1.log("reset",this.op,this.modelRef,this.model),this.responseStatus=null,this.responseJson="",r=(n=this.model)===null||n===void 0?void 0:n.properties.find(function(n){return n.isPrimaryKey}),i=((t=shared_1.store.getAppPrefs(this.slug))===null||t===void 0?void 0:t.query[this.op])||{},this.searchField=this.$route.query.field||(i===null||i===void 0?void 0:i.searchField)||(r===null||r===void 0?void 0:r.name)||"",this.searchType=this.$route.query.type||(i===null||i===void 0?void 0:i.searchType)||"%",this.searchText=this.$route.query.q||(i===null||i===void 0?void 0:i.searchText)||"",this.skip=this.$route.query.skip&&parseInt(this.$route.query.skip)||(i===null||i===void 0?void 0:i.skip)||0,this.take=this.$route.query.take&&parseInt(this.$route.query.take)||(i===null||i===void 0?void 0:i.take)||100,this.orderBy=this.$route.query.orderBy||(i===null||i===void 0?void 0:i.orderBy)||"",this.fields=this.$route.query.fields&&this.$route.query.fields.split(",")||(i===null||i===void 0?void 0:i.fields)||[],this.filters=(i===null||i===void 0?void 0:i.filters)||{},[4,this.search()];case 1:return u.sent(),[2]}})})},Object.defineProperty(t.prototype,"site",{get:function(){return shared_1.store.getSite(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"api",{get:function(){var n;if((n=this.app)!==null&&n!==void 0)return n.api},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"plugin",{get:function(){var n;if((n=shared_1.store.getApp(this.slug))!==null&&n!==void 0)return n.plugins.autoQuery},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&shared_1.store.hasPlugin(this.slug,"autoquery")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enableEvents",{get:function(){var n;return((n=this.plugin)===null||n===void 0?void 0:n.crudEvents)&&this.store.hasRole(this.slug,this.plugin.accessRole)},enumerable:!1,configurable:!0}),t.prototype.min=function(n,t){return Math.min(n,t)},Object.defineProperty(t.prototype,"dirty",{get:function(){return this.hasSelectedCondition||this.skip||this.orderBy||Object.keys(this.filters).length>0||this.fields.length>0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"modelRef",{get:function(){var i=this,n,t;if((t=(n=this.api)===null||n===void 0?void 0:n.operations.find(function(n){return n.request.name===i.$route.query.op}))!==null&&t!==void 0)return t.dataModel},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"model",{get:function(){return shared_1.store.getType(this.slug,this.modelRef)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"modelProps",{get:function(){var n;return __spreadArrays([{key:"",value:"Columns..."}],((n=this.model)===null||n===void 0?void 0:n.properties.map(function(n){return{key:n.name,value:n.name}}))||[])},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"columns",{get:function(){var n;if((n=this.model)!==null&&n!==void 0)return n.properties.map(function(n){return{columnName:n.name,dataType:n.typeNamespace?n.typeNamespace+"."+n.type:n.type}})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"viewerConventions",{get:function(){var n;return __spreadArrays([{key:"",value:"Filters..."}],((n=this.plugin)===null||n===void 0?void 0:n.viewerConventions.map(function(n){return{key:n.value,value:n.name}}))||[])},enumerable:!1,configurable:!0}),t.prototype.matchesType=function(n,t){return shared_1.matchesType(n,t)},t.prototype.typeKey=function(n){return(n.namespace||"")+"."+n.name},Object.defineProperty(t.prototype,"operations",{get:function(){var t=this,n;return this.app?((n=this.api)===null||n===void 0?void 0:n.operations.filter(function(n){return shared_1.matchesType(n.dataModel,t.modelRef)}))||[]:[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"queryOps",{get:function(){return this.operations.filter(shared_1.isQuery)},enumerable:!1,configurable:!0}),t.prototype.filterOperations=function(n){var u=this,t;if(!this.app)return[];var i=[],f=shared_1.store.appTypes[this.slug],r={},e=this.txtFilter.toLowerCase();return(t=this.api)===null||t===void 0?void 0:t.operations.forEach(function(t){var o,s;t.dataModel&&((o=u.typeKey(t.request),r[o])||(r[o]=!0,s=f[o],s?s.name.toLowerCase().indexOf(e)>=0&&(!n||n(t,s))&&i.push(t):console.warn("Type does not exist",t.dataModel)))}),i.sort(function(n,t){return n.dataModel.name.localeCompare(t.dataModel.name)}),i},Object.defineProperty(t.prototype,"autoQueryTables",{get:function(){return this.filterOperations(function(n){return shared_1.isQuery(n)})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"accessibleAutoQueryTables",{get:function(){var n=this;return this.filterOperations(function(t){return shared_1.isQuery(t)&&shared_1.canAccess(n.slug,t)})},enumerable:!1,configurable:!0}),t.prototype.hasMultiple=function(n){return this.accessibleAutoQueryTables.filter(function(t){var i;return((i=t.dataModel)===null||i===void 0?void 0:i.name)===n}).length>1},Object.defineProperty(t.prototype,"crudOperations",{get:function(){var n=this;return this.filterOperations(function(t){return shared_1.isCrud(t)&&shared_1.matchesType(t.dataModel,n.modelRef)})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"canQuery",{get:function(){var n=this;return this.accessibleAutoQueryTables.some(function(t){return n.op==t.request.name})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"convention",{get:function(){var t=this,n;if((n=this.plugin)!==null&&n!==void 0)return n.viewerConventions.find(function(n){return n.value===t.searchType})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasSelectedCondition",{get:function(){var n;return this.searchField&&this.searchType&&(this.searchText||((n=this.convention)===null||n===void 0?void 0:n.valueType)=="none")},enumerable:!1,configurable:!0}),t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.loadSite(this.slug)];case 1:return t.sent(),[4,this.restore()];case 2:return t.sent(),shared_1.bus.$on("signedin",function(){n.restore()}),[2]}})})},t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return(shared_1.log("submit",this.hasSelectedCondition),!this.hasSelectedCondition)?[2]:[4,this.search()];case 1:return[2,n.sent()]}})})},t.prototype.search=function(){return __awaiter(this,void 0,void 0,function(){var n,t=this;return __generator(this,function(i){switch(i.label){case 0:return this.op?this.canQuery?(n=shared_1.toInvokeArgs(this.searchArgs()),[4,shared_1.exec(this,function(){return __awaiter(t,void 0,void 0,function(){var t,i;return __generator(this,function(r){switch(r.label){case 0:return t=new dtos_1.SiteInvoke({slug:this.slug,request:this.op,args:n}),shared_1.log("siteInvoke",t),i=this,[4,shared_1.getSiteInvoke(t)];case 1:return i.responseJson=r.sent(),this.response=JSON.parse(this.responseJson),this.results=this.response&&(this.response.results||this.response.Results),this.total=this.response&&(this.response.total||this.response.Total),shared_1.bus.$emit("appPrefs",{slug:this.slug,request:this.op,query:this.query}),[4,this.loadEvents()];case 2:return r.sent(),[2]}})})})]):[2]:[2];case 1:return i.sent(),[2]}})})},t.prototype.openCsv=function(){return __awaiter(this,void 0,void 0,function(){var n,t,i=this;return __generator(this,function(r){switch(r.label){case 0:return n=this.searchArgs().filter(function(n){return!n.take}),n.push({jsconfig:"edv"}),t=shared_1.toInvokeArgs(n),[4,shared_1.exec(this,function(){return __awaiter(i,void 0,void 0,function(){var n,i,r;return __generator(this,function(u){switch(u.label){case 0:return n=new dtos_1.SiteInvoke({slug:this.slug,request:this.op,args:t}),i=shared_1.client.createUrlFromDto("GET",n).replace("/json/","/csv/"),shared_1.log("openCsv",n,i),r=desktop_1.desktopSaveDownloadUrl(this.op+"-"+shared_1.dateFmtHMS()+".csv",i)+"?open=true",shared_1.store.hasExcel&&(r+="&start=excel"),[4,fetch(r)];case 1:return u.sent(),[2]}})})})];case 1:return r.sent(),[2]}})})},t.prototype.copyUrl=function(){return __awaiter(this,void 0,void 0,function(){var t,n;return __generator(this,function(i){switch(i.label){case 0:return t=this.searchArgs(),t.push({jsconfig:"edv"}),n=client_1.combinePaths(this.site.baseUrl,"json","reply",this.op),t.forEach(function(t){return Object.keys(t).forEach(function(i){n+=n.indexOf("?")>=0?"&":"?";n+=i+"="+encodeURIComponent(t[i])})}),shared_1.log("copyUrl",n),[4,desktop_1.setClipboard(n)];case 1:return i.sent(),[2]}})})},t.prototype.loadEvents=function(){var n;return __awaiter(this,void 0,void 0,function(){var t,i,u,r,f;return __generator(this,function(e){switch(e.label){case 0:return this.enableEvents?(t=(n=this.model)===null||n===void 0?void 0:n.properties.find(function(n){return n.isPrimaryKey}),i=t!=null?this.results.map(function(n){return client_1.getField(n,t.name)}).filter(function(n){return n!=null}):[],i.length==0)?[2]:(u=i.join(","),[4,shared_1.postSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:"CheckCrudEvents",args:["model",this.model.name,"ids",u]}))]):[2];case 1:return r=e.sent(),shared_1.log("loadEvents",r),f=JSON.parse(r),this.eventIds=f.results,[2]}})})},t.prototype.isValidCondition=function(){return this.searchField&&this.searchType&&this.searchText&&(this.searchType.toLowerCase()!=="between"||this.searchText.indexOf(",")>0&&this.searchText.indexOf(",")<this.searchText.length-1)},Object.defineProperty(t.prototype,"query",{get:function(){return{searchField:this.searchField,searchType:this.searchType,searchText:this.searchText,skip:this.skip,take:this.take,orderBy:this.orderBy,filters:this.filters,fields:this.fields}},enumerable:!1,configurable:!0}),t.prototype.searchArgs=function(){var t,r=this,n=[],i;return n.push({include:"total"}),this.fields.length>0&&n.push({fields:this.fields.join(",")}),Object.keys(this.filters).length>0&&Object.keys(this.filters).forEach(function(t){var u,f,e,o,s,h,c,l,a,v,y,p,w,i=r.filters[t];i=="=null"?n.push((u={},u[t+"IsNull"]="",u)):i=="!=null"?n.push((f={},f[t+"IsNotNull"]="",f)):i.startsWith("<=")?n.push((e={},e[t+"<"]=i.substring(2),e)):i.startsWith(">=")?n.push((o={},o[">"+t]=i.substring(2),o)):i.startsWith("<>")||i.startsWith("!=")?n.push((s={},s[t+"!"]=i.substring(2),s)):i.startsWith("<")?n.push((h={},h["<"+t]=i.substring(1),h)):i.startsWith(">")?n.push((c={},c[t+">"]=i.substring(1),c)):i.endsWith(",")?n.push((l={},l[t+"In"]=i.substring(0,i.length-1),l)):i.startsWith("%")&&i.endsWith("%")?n.push((a={},a[t+"Contains"]=i.substring(1,i.length-1),a)):i.startsWith("%")?n.push((v={},v[t+"EndsWith"]=i.substring(1),v)):i.endsWith("%")?n.push((y={},y[t+"StartsWith"]=i.substring(0,i.length-1),y)):i.startsWith("=")?n.push((p={},p[t]=i.substring(1),p)):n.push((w={},w[t]=i,w))}),this.orderBy&&n.push({orderBy:this.orderBy}),this.skip&&n.push({skip:""+this.skip}),this.take&&n.push({take:""+this.take}),this.convention&&(this.searchText||this.convention.valueType=="none")&&(i=this.convention.value.replace("%",this.searchField),n.push((t={},t[i]=this.searchText,t))),n},t.prototype.handleError=function(n){this.responseStatus=n},t.prototype.handleSelectColumns=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return this.showSelectColumns=!1,[4,this.search()];case 1:return n.sent(),[2]}})})},t.prototype.viewNext=function(n){return __awaiter(this,void 0,void 0,function(){var t;return __generator(this,function(i){switch(i.label){case 0:return(this.skip+=n,typeof this.total!="number")?[2]:(t=Math.floor(this.total/100)*100,this.skip>t&&(this.skip=t),this.skip<0&&(this.skip=0),[4,this.search()]);case 1:return i.sent(),[2]}})})},t.prototype.setOrderBy=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return this.orderBy=this.orderBy==n?"-"+n:this.orderBy=="-"+n?"":n,[4,this.search()];case 1:return t.sent(),[2]}})})},t.prototype.filterSearch=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return shared_1.log("filterSearch",n),this.filters=n,[4,this.search()];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop({"default":""})],t.prototype,"name",void 0),__decorate([vue_property_decorator_1.Watch("$route",{immediate:!0,deep:!0})],t.prototype,"onUrlChange",null),__decorate([vue_property_decorator_1.Component({template:'<section v-if="enabled" id="autoquery" :class="[\'grid-layout\',windowStyles]">\n\n <header id="header">\n <h1 v-if="site">\n <nav class="site-breadcrumbs">\n <ol class="breadcrumb">\n <li class="breadcrumb-item">\n <router-link to="/"><i class="home-link svg-3x mb-1" title="home" /><\/router-link>\n <\/li>\n <li :class="[\'breadcrumb-item\',{active:!model}]">\n <img v-if="site.iconUrl" :src="site.iconUrl" class="sq-3x mb-1">\n <i v-else class="svg db-dark svg-3x mb-1" \n /><router-link v-if="model" to="?">{{site.name}}<\/router-link> \n <span v-else>{{site.name}}<\/span>\n <\/li>\n <li v-if="model" class="breadcrumb-item active">{{$route.query.op}}<\/li>\n <li v-if="loading"><i class="svg-loading svg-lg ms-2 mb-1" title="loading..." /><\/li>\n <\/ol>\n <\/nav>\n <\/h1>\n <h1 v-else-if="loading">\n <i class="fab fa-loading"><\/i>\n Loading...\n <\/h1>\n <div v-else-if="responseStatus">\n <error-summary :responseStatus="responseStatus" />\n <router-link to="/">&lt; back to sites<\/router-link>\n <\/div>\n <auth id="auth" v-if="site && app" :slug="slug" feature="autoquery" :op="op" /> \n <\/header>\n \n <nav v-if="app" id="left">\n <div id="nav-filter">\n <i v-if="txtFilter" class="text-close" style="position:absolute;margin:0 0 0 265px;" title="clear" @click="txtFilter=\'\'"><\/i>\n <v-input v-model="txtFilter" id="txtFilter" placeholder="filter" inputClass="form-control" />\n <\/div>\n <div id="sidebar" class="">\n <div class="ps-2">\n <div v-for="op in accessibleAutoQueryTables" :key="typeKey(op.request)" \n :class="[\'datamodel\',{selected:$route.query.op === op.request.name}]" :title="op.dataModel.name">\n <router-link :to="{ query: { op:op.request.name } }">\n {{op.dataModel.name}}\n <small v-if="hasMultiple(op.dataModel.name)">({{op.request.name}})<\/small>\n <\/router-link>\n <\/div>\n <\/div>\n <\/div>\n <\/nav>\n \n <main v-if="app">\n <div v-if="model && canQuery" class="query-form">\n <div class="tab-content" id="v-pills-tabContent">\n <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">\n <form class="row g-1" @submit.prevent="submit">\n <div class="col-auto">\n <v-select id="listColumns" :values="modelProps" :value="searchField" :responseStatus="responseStatus"\n v-model="searchField" selectClass="custom-select">\n <\/v-select>\n <\/div>\n <div class="col-auto">\n <v-select id="listFilters" :values="viewerConventions" :value="searchType" :responseStatus="responseStatus"\n v-model="searchType" selectClass="custom-select">\n <\/v-select> \n <\/div>\n <div class="col-auto">\n <v-input v-model="searchText" placeholder="value" class="" inputClass="form-control" />\n <\/div>\n <div class="col-auto">\n <button type="submit" :disabled="!hasSelectedCondition" class="btn btn-outline-primary" title="Search">\n Search\n <\/button>\n <i v-if="dirty" class="text-close ms-2" style="line-height:.5em" title="reset query" @click="resetQuery()"/>\n <\/div>\n <\/form>\n <\/div>\n <\/div>\n <\/div>\n <div v-if="model && response" class="main-container">\n <div v-if="responseStatus"><error-view :responseStatus="responseStatus" class="" /><\/div>\n <div v-if="showSelectColumns">\n <select-columns :columns="columns" v-model="fields" @done="handleSelectColumns($event)" />\n <\/div>\n <div class="main-query" v-if="results.length">\n <span class="btn svg svg-fields svg-2x" title="View Columns" @click="showSelectColumns=!showSelectColumns"><\/span>\n <button class="btn first-link svg-2x" :disabled="skip==0" title="<< first" @click="viewNext(-total)"><\/button>\n <button class="btn left-link svg-2x" :disabled="skip==0" title="< previous" @click="viewNext(-100)"><\/button>\n <button class="btn right-link svg-2x" :disabled="results.length < take" title="next >" @click="viewNext(100)"><\/button>\n <button class="btn last-link svg-2x" :disabled="results.length < take" title="last >>" @click="viewNext(total)"><\/button>\n <span class="px-1 results-label">Showing Results {{skip+1}} - {{min(skip + results.length,total)}} <span v-if="total!=null">of {{total}}<\/span><\/span>\n <button class="btn btn-outline-success btn-sm btn-compact" @click="openCsv()" \n :title="store.hasExcel ? \'Open in Excel\' : \'Open CSV\'"><i class="svg-md svg-excel"><\/i>{{store.hasExcel ? \'excel\' : \'csv\' }}<\/button>\n <button class="btn btn-sm btn-compact" @click="copyUrl()" \n title="Copy URL"><i class="svg-md svg-copy"><\/i> Copy URL<\/button>\n <\/div>\n <results :slug="slug" :results="results" :defaultFilters="filters" :fields="fields" :orderBy="orderBy" :type="model" \n :crud="crudOperations" :eventIds="eventIds" :resetPulse="resetPulse"\n @orderBy="setOrderBy($event)" @refresh="restore()" @filterSearch="filterSearch($event)" />\n <\/div>\n <\/main>\n \n <Footer v-if="app" :slug="slug"/>\n \n <\/section>\n <no-plugin v-else :slug="slug" plugin="autoquery" />'})],t)}(vue_property_decorator_1.Vue);exports.AutoQuery=AutoQuery;exports.default=AutoQuery;vue_property_decorator_1.Vue.component("autoquery",AutoQuery);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.PartialModal=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),client_1=require("@servicestack/client"),PartialModal=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.value="",t.loading=!1,t.responseStatus=null,t}return __extends(t,n),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&this.app.plugins.autoQuery},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"modalStyle",{get:function(){return{display:"block",top:this.y-10+"px",left:this.x-20+"px",position:"absolute"}},enumerable:!1,configurable:!0}),t.prototype.modalKeyDown=function(n){n.key=="Escape"&&this.$emit("done")},t.prototype.beforeDestroy=function(){window.removeEventListener("keydown",this.modalKeyDown)},Object.defineProperty(t.prototype,"origValue",{get:function(){return client_1.getField(this.row,this.field)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dirty",{get:function(){return this.value!=this.origValue},enumerable:!1,configurable:!0}),t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(){return window.addEventListener("keydown",this.modalKeyDown),this.value=this.origValue,shared_1.log("PartialModal.mounted()"),[2]})})},t.prototype.submit=function(){this.dirty&&(shared_1.log("saving...",this.value,this.dirty),this.$emit("done",this.value))},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"type",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"row",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"field",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"x",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"y",void 0),__decorate([vue_property_decorator_1.Component({template:'<div id="partialModal" class="modal-mini" tabindex="-1" role="dialog" :style="modalStyle">\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-body">\n <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="$emit(\'done\')"><\/button>\n <form @submit.prevent="submit">\n <v-input v-model="value" :label="field" inputClass="md" />\n <i v-if="dirty" class="svg done-success svg-md svg-btn" title="save" @click="submit()" style="float:right;margin:-27px 5px 0 0;"/>\n <\/form>\n <\/div>\n <\/div>\n <\/div>\n<\/div>'})],t)}(vue_property_decorator_1.Vue);exports.PartialModal=PartialModal;exports.default=PartialModal;vue_property_decorator_1.Vue.component("partial-modal",PartialModal);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},Results;Object.defineProperty(exports,"__esModule",{value:!0});exports.Results=void 0;var vue_1=require("vue"),vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),client_1=require("@servicestack/client"),FormatString=function(n){function t(){return n!==null&&n.apply(this,arguments)||this}return __extends(t,n),Object.defineProperty(t.prototype,"lower",{get:function(){return(""+this.value).toLowerCase()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isUrl",{get:function(){return typeof this.value=="string"&&this.value.startsWith("http")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"url",{get:function(){return typeof this.value=="string"&&this.value.substring(this.value.indexOf("://")+3)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"format",{get:function(){return typeof this.value=="string"&&this.value.startsWith("/Date(")?client_1.toDateFmt(this.value):this.value},enumerable:!1,configurable:!0}),__decorate([vue_property_decorator_1.Prop({"default":""})],t.prototype,"value",void 0),__decorate([vue_property_decorator_1.Component({template:'<a v-if="isUrl" :href="value" target="_blank">{{url}}<\/a>\n <i v-else-if="lower == \'false\'" class="svg svg-md bool-off-muted"><\/i>\n <i v-else-if="lower == \'true\'" class="svg svg-md bool-on-muted"><\/i>\n <span v-else>{{format}}<\/span>\n'})],t)}(vue_1.default);vue_1.default.component("format",FormatString);Results=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.filters={},t.loading=!1,t.responseStatus=null,t.showCreate=!1,t.showEvents=!1,t.editingValue="",t.editingRow=null,t.editingField=null,t.selectedField=null,t.cancelBlur=!1,t}return __extends(t,n),t.prototype.onUrlChange=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(){return this.resetEdit(),this.show(),[2]})})},Object.defineProperty(t.prototype,"bus",{get:function(){return shared_1.bus},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"store",{get:function(){return shared_1.store},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"session",{get:function(){return shared_1.store.getSession(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"plugin",{get:function(){return shared_1.store.getApp(this.slug).plugins.autoQuery},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"authPlugin",{get:function(){return shared_1.store.getApp(this.slug).plugins.auth},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasFilters",{get:function(){return Object.keys(this.filters).length>0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"typeProperties",{get:function(){return shared_1.store.getTypeProperties(this.slug,this.type)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enableEvents",{get:function(){var n;return this.crud.length>0&&this.plugin.crudEventsServices&&shared_1.store.hasRole(this.slug,(n=this.plugin)===null||n===void 0?void 0:n.accessRole)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"fieldNames",{get:function(){var t=this,n=this.typeProperties.map(function(n){return n.name});return this.fields.length>0&&(n=n.filter(function(n){return t.fields.indexOf(n)>=0})),n},enumerable:!1,configurable:!0}),t.prototype.show=function(n,t){this.selectedField=null;this.showCreate=!1;this.showEvents=!1;this.editingRow=null;n==="Create"?this.showCreate=!0:n=="Edit"&&typeof t=="number"?this.editingRow=t:n=="Events"&&typeof t=="number"&&(this.selectedField=[t,this.fieldNames.length-1],this.showEvents=!0)},t.prototype.handleDone=function(n,t){shared_1.log("handleDone",n,t);this.showCreate=!1;this.showEvents=!1;this.editingRow=null;t&&this.$emit("refresh")},Object.defineProperty(t.prototype,"createOp",{get:function(){var n=this;return this.crud.find(function(t){return shared_1.canAccess(n.slug,t)&&t.request.implements.some(function(n){return n.name=="ICreateDb`1"})})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"updateOp",{get:function(){var n=this;return this.crud.find(function(t){return shared_1.canAccess(n.slug,t)&&t.request.implements.some(function(n){return n.name=="IUpdateDb`1"})})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"patchOp",{get:function(){var n=this;return this.crud.find(function(t){return shared_1.canAccess(n.slug,t)&&t.request.implements.some(function(n){return n.name=="IPatchDb`1"})})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"deleteOp",{get:function(){var n=this;return this.crud.find(function(t){return shared_1.canAccess(n.slug,t)&&t.request.implements.some(function(n){return n.name=="IDeleteDb`1"})})},enumerable:!1,configurable:!0}),t.prototype.isPartialField=function(n){return this.partialFields.indexOf(n)>=0},Object.defineProperty(t.prototype,"partialFields",{get:function(){var n=this,t=this.crud.filter(function(t){return shared_1.canAccess(n.slug,t)&&t.request.implements.some(function(n){return n.name=="IPatchDb`1"})}).map(function(t){return shared_1.store.getType(n.slug,t.dataModel)}).map(function(n){if(n!==null&&n!==void 0)return n.properties.filter(function(n){return!n.isPrimaryKey}).map(function(n){return n.name})}).reduce(function(n,t){if(n!==null&&n!==void 0)return n.concat(t||[])},[]);return t||[]},enumerable:!1,configurable:!0}),t.prototype.hasAccessibleCrud=function(n){var t=this,i=n.map(function(n){return"I"+n+"Db`1"});return this.crud.some(function(n){var r;return shared_1.canAccess(t.slug,n)&&((r=n.request.implements)===null||r===void 0?void 0:r.some(function(n){return i.indexOf(n.name)>=0}))})},t.prototype.hasCrud=function(n){var t=n.map(function(n){return"I"+n+"Db`1"});return this.crud.some(function(n){var i;if((i=n.request.implements)!==null&&i!==void 0)return i.some(function(n){return t.indexOf(n.name)>=0})})},t.prototype.humanize=function(n){return client_1.humanize(n)},t.prototype.renderValue=function(n){return shared_1.renderValue(n)},Object.defineProperty(t.prototype,"createLabel",{get:function(){return"New "+this.type.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"updateLabel",{get:function(){return"Edit "+this.type.name},enumerable:!1,configurable:!0}),t.prototype.getField=function(n,t){return client_1.getField(n,t)},t.prototype.getId=function(n){return shared_1.getId(this.type,n)},t.prototype.hasEvent=function(n){var t=""+shared_1.getId(this.type,n);return t&&this.eventIds&&this.eventIds.indexOf(t)>=0},t.prototype.moveSelected=function(n,t){var u,i,r;this.selectedField&&((u=document.activeElement)===null||u===void 0?void 0:u.tagName)!="INPUT"&&(n!=0&&(i=this.selectedField[0],this.$set(this.selectedField,0,i+n>=this.results.length?0:i+n<0?this.results.length-1:i+n)),t!=0&&(r=this.selectedField[1],this.$set(this.selectedField,1,r+t>=this.fieldNames.length?0:r+t<0?this.fieldNames.length-1:r+t)),typeof this.editingRow=="number"&&(this.editingRow=this.selectedField[0]),this.showEvents&&!this.hasEvent(this.results[this.selectedField[0]])&&(this.showEvents=!1))},t.prototype.onKeyDown=function(n){var t;if(n.key=="Escape")this.resetEdit(),this.show("");else if(this.selectedField){if((t=document.activeElement)===null||t===void 0?void 0:t.form)return;this.editingField||n.key!="Enter"?n.key=="ArrowUp"?this.moveSelected(-1,0):n.key=="ArrowDown"?this.moveSelected(1,0):n.key=="ArrowLeft"?this.moveSelected(0,-1):n.key=="ArrowRight"?this.moveSelected(0,1):n.key=="Home"?(this.$set(this.selectedField,1,0),this.focusSelected(),n.preventDefault()):n.key=="End"&&(this.$set(this.selectedField,1,this.fieldNames.length-1),this.focusSelected(),n.preventDefault()):this.editField(this.selectedField[0],this.selectedField[1])}},t.prototype.focusSelected=function(){this.$nextTick(function(){var n;if((n=document.querySelector(".results td.selected"))!==null&&n!==void 0)return n.scrollIntoView()})},t.prototype.beforeDestroy=function(){window.removeEventListener("keydown",this.onKeyDown)},t.prototype.mounted=function(){window.addEventListener("keydown",this.onKeyDown);shared_1.log("Results.mounted()")},t.prototype.updated=function(){this.filters=this.defaultFilters},t.prototype.isEditingRow=function(n){return this.editingRow===n},t.prototype.isEditingField=function(n,t){return this.editingField&&this.editingField[0]===n&&this.editingField[1]===t},Object.defineProperty(t.prototype,"dirty",{get:function(){return this.editingField&&this.editingValue!=client_1.getField(this.results[this.editingField[0]],this.fieldNames[this.editingField[1]])},enumerable:!1,configurable:!0}),t.prototype.selectedRow=function(n){return this.selectedField&&this.selectedField[0]==n},t.prototype.selectedCell=function(n,t){return this.selectedField&&this.selectedField[0]==n&&this.selectedField[1]==t},t.prototype.selectField=function(n,t){this.selectedField=[n,t]},t.prototype.editRow=function(n){this.handleDone();this.editingRow=n;this.selectedField=[n,0]},t.prototype.editField=function(n,t){var i;this.isPartialField(this.fieldNames[t])&&((i=window.getSelection())===null||i===void 0?void 0:i.removeAllRanges(),this.editingField=[n,t],this.editingValue=client_1.getField(this.results[n],this.fieldNames[t]),this.$nextTick(function(){var n;(n=document.querySelector(".results .editing input"))===null||n===void 0?void 0:n.select()}))},t.prototype.onEditBlur=function(){var n=this;this.cancelBlur=!1;setTimeout(function(){n.cancelBlur||n.cancelEdit()},300)},t.prototype.cancelEdit=function(){this.editingField&&(shared_1.log("cancelEdit"),this.resetEdit())},t.prototype.resetEdit=function(){this.responseStatus=null;this.editingField=null;this.editingValue="";this.filters=this.defaultFilters},t.prototype.findKey=function(n,t){var i=Object.keys(this.results[n]).find(function(n){return client_1.normalizeKey(n)==client_1.normalizeKey(t)}),r;if(i)return i;for(r=0;r<this.results.length;r++)if(i=Object.keys(this.results[r]).find(function(n){return client_1.normalizeKey(n)==client_1.normalizeKey(t)}),i)return i;return client_1.toCamelCase(t)},t.prototype.saveEdit=function(){return __awaiter(this,void 0,void 0,function(){var f,s,e,n,t,i,r,o,u,h=this;return __generator(this,function(c){switch(c.label){case 0:return(this.cancelBlur=!0,f=this.editingField[0],s=this.editingField[1],e=this.results[f],n=this.fieldNames[s],t=this.crud.find(function(t){return t.request.implements.some(function(n){return n.name=="IPatchDb`1"})&&t.request.properties.some(function(t){return t.name==n})}),i=this.typeProperties.find(function(n){return n.isPrimaryKey}),r=i&&client_1.getField(e,i.name),!n||!t||!i||!r)?(this.responseStatus={errorCode:"InvalidState",message:"Results.saveEdit(): "+n+", "+t+", "+r},[2]):(o=this.findKey(f,n),u=this.editingValue,shared_1.log("saveEdit",o,n,this.editingValue,this.dirty,t===null||t===void 0?void 0:t.request.name),!this.dirty)?(this.cancelEdit(),[2]):[4,shared_1.exec(this,function(){return __awaiter(h,void 0,void 0,function(){var f;return __generator(this,function(s){switch(s.label){case 0:return f=[i.name,r],u?(f.push(n),f.push(u)):(f.push("reset"),f.push(n)),[4,shared_1.patchSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:t.request.name,args:f}))];case 1:return s.sent(),this.$set(e,o,u),this.resetEdit(),this.$emit("refresh"),[2]}})})})];case 1:return c.sent(),[2]}})})},t.prototype.setOrderBy=function(n){this.$emit("orderBy",n)},t.prototype.filterSearch=function(){var n=this;Object.keys(this.filters).forEach(function(t){n.filters[t]===""&&delete n.filters[t]});this.$emit("filterSearch",this.filters)},t.prototype.helpFilters=function(){return"Search Filters:\nUse '=null' or '!=null' to search NULL columns\nUse '<= < > >= <> !=' prefix to search with that operator\nUse ',' suffix to perform an IN(values) search on integers\nUse '%' prefix or suffix to perform a LIKE wildcard search"},__decorate([vue_property_decorator_1.Prop({"default":""})],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"results",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"fields",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"defaultFilters",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"orderBy",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"eventIds",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"type",void 0),__decorate([vue_property_decorator_1.Prop({"default":[]})],t.prototype,"crud",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"resetPulse",void 0),__decorate([vue_property_decorator_1.Watch("$route",{immediate:!0,deep:!0})],t.prototype,"onUrlChange",null),__decorate([vue_property_decorator_1.Component({template:'<div v-if="results.length">\n <table class="results">\n <thead><tr class="noselect">\n <th>\n <i v-if="createOp" class="svg svg-btn svg-create svg-md" :title="createLabel" @click="show(\'Create\')"/>\n <i v-else-if="!session && authPlugin" class="svg svg-btn svg-auth svg-md" title="Sign In to Edit" @click="bus.$emit(\'signin\')" />\n <\/th>\n <th v-for="f in fieldNames" :key="f" :class="{partial:isPartialField(f)}" @click="setOrderBy(f)" class="th-link">\n <div class="text-nowrap">\n {{ humanize(f) }}\n <span v-if="orderBy==f" class="svg svg-chevron-up svg-md align-top"><\/span>\n <span v-else-if="orderBy==\'-\'+f" class="svg svg-chevron-down svg-md align-top"><\/span>\n <\/div>\n <\/th>\n <th v-if="enableEvents">\n <i class="svg svg-history history-muted svg-md" title="Event History" />\n <\/th>\n <\/tr><\/thead>\n <tbody>\n <tr class="filters">\n <td><span><i class="ms-1 svg svg-btn svg-filter svg-md" :title="helpFilters()" /><\/span><\/td>\n <td v-for="(f,j) in fieldNames">\n <input type="text" v-model="filters[f]" @keydown.enter.stop="filterSearch()">\n <\/td>\n <td v-if="enableEvents"><\/td>\n <\/tr>\n <template v-for="(r,i) in results">\n <tr :key="i" :class="{ selected:selectedRow(i) }">\n <td>\n <span v-if="hasCrud([\'Update\',\'Patch\',\'Delete\'])">\n <i v-if="hasAccessibleCrud([\'Update\',\'Patch\',\'Delete\'])" class="svg svg-btn svg-update svg-sm" :title="updateLabel" \n @click="editRow(i)" />\n <i v-else-if="!session && authPlugin" class="svg svg-btn svg-auth auth-warning svg-md" title="Sign In" @click="bus.$emit(\'signin\')" />\n <\/span>\n <\/td>\n <td v-for="(f,j) in fieldNames" :key="j" :title="renderValue(getField(r,f))" \n :class="{partial:isPartialField(f),editing:isEditingField(i,j), selected:selectedCell(i,j) }" \n @click="selectField(i,j)" @dblclick="isPartialField(f) && editField(i,j)"> \n <div v-if="isEditingField(i,j)">\n <input v-model="editingValue" class="form-control form-control-sm" \n @keydown.enter.stop="saveEdit()" @keydown.esc.stop="cancelEdit()" @blur="onEditBlur()" /> \n <i v-if="dirty" class="svg done-success svg-md svg-btn" title="save" @click="saveEdit()" style="float:right;margin:-27px 5px 0 0;"/>\n <\/div>\n <template v-else>\n <span v-if="i==0 && j==0 && showCreate">\n <create-modal v-if="createOp" :slug="slug" :op="createOp" :type="type" @done="handleDone(\'Create\',$event)" />\n <\/span>\n <div v-else-if="isEditingRow(i) && j == 0">\n <edit-modal v-if="updateOp || patchOp || deleteOp" :slug="slug" :updateOp="updateOp" :patchOp="patchOp" :deleteOp="deleteOp" :type="type" :row="r" \n @done="handleDone(\'Edit\',$event)" />\n <\/div>\n <format :value="getField(r,f)" />\n <\/template>\n <\/td>\n <td v-if="enableEvents">\n <span v-if="selectedRow(i) && showEvents">\n <events-modal :slug="slug" :type="type" :id="getId(r)" @done="handleDone(\'Events\')" /> \n <\/span>\n <i v-if="hasEvent(r)" class="svg svg-history history-muted svg-btn svg-md" title="Event History" @click="show(\'Events\',i)" />\n <\/td>\n <\/tr>\n <\/template>\n <\/tbody>\n <\/table>\n <error-view :responseStatus="responseStatus" />\n<\/div>\n<div v-else class="results-none">\n <div class="ms-1 mb-3">\n <span class="me-1 d-inline-block">There were no results<\/span> \n <button v-if="hasFilters" class="btn btn-outline-secondary btn-sm" @click="filterSearch(filters={})"\n >&times;\n reset filters\n <\/button>\n <button v-if="session && createOp" class="btn btn-outline-primary btn-sm" :title="createLabel" @click="show(\'Create\')"\n >&plus;\n New {{type.name}}\n <\/button>\n <\/div>\n <create-modal v-if="session && createOp && showCreate" :slug="slug" :op="createOp" :type="type" @done="handleDone(\'Create\',$event)" />\n<\/div>'})],t)}(vue_1.default);exports.Results=Results;exports.default=Results;vue_1.default.component("results",Results);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u};Object.defineProperty(exports,"__esModule",{value:!0});var vue_1=require("vue"),vue_property_decorator_1=require("vue-property-decorator"),SelectColumns=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.selectedColumns=[],t}return __extends(t,n),t.prototype.mounted=function(){this.selectedColumns=this.value;this.$nextTick(function(){var n;if((n=document.querySelector(".modal"))!==null&&n!==void 0)return n.focus()})},t.prototype.onInputValues=function(){return this.selectedColumns},__decorate([vue_property_decorator_1.Prop()],t.prototype,"columns",void 0),__decorate([vue_property_decorator_1.Prop({"default":function(){return[]}})],t.prototype,"value",void 0),__decorate([vue_property_decorator_1.Emit("input")],t.prototype,"onInputValues",null),__decorate([vue_property_decorator_1.Component({template:'<div class="modal" tabindex="-1" role="dialog" @keyup.esc="$emit(\'done\')" style="display:block;background:rgba(0,0,0,.25)">\n <div class="modal-dialog" role="document" style="margin-top:120px">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title noselect">\n Column Preferences\n <\/h5>\n <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="$emit(\'done\')"><\/button>\n <\/div>\n <div class="modal-body ms-2">\n <div class="form-check">\n <input class="form-check-input" type="radio" name="exampleRadios" id="allColumns" :checked="selectedColumns.length==0" \n @click="selectedColumns=[]" @change="onInputValues">\n <label class="form-check-label noselect" for="allColumns">View all columns<\/label>\n <\/div>\n <hr>\n <div v-for="c in columns" :key="c.columnName" class="form-check">\n <input class="form-check-input" type="checkbox" :id="c.columnName" :value="c.columnName" v-model="selectedColumns" @change="onInputValues">\n <label class="form-check-label noselect" :for="c.columnName">{{c.columnName}}<\/label>\n <\/div>\n <div class="row mt-3 pt-3 border-top border-top-primary">\n <div class="col mb-3 text-end">\n <span class="btn btn-link" @click="$emit(\'done\')">Close<\/span>\n <button class="btn btn-primary" @click="$emit(\'done\')">Done<\/button>\n <\/div>\n <\/div>\n <\/div>\n <\/div>\n <\/div>\n<\/div>'})],t)}(vue_1.default);vue_1.default.component("select-columns",SelectColumns);
})();
(function(){
"use strict";function copyCmd(n){console.log(n);var t=document.createElement("input"),i=n.parentElement,r=i.firstElementChild;t.setAttribute("value",r.innerText);document.body.appendChild(t);t.select();document.execCommand("copy");document.body.removeChild(t);i.classList.add("copied")}function versionScore(n){var t=n.split(".");return parseInt(t[0])*1e3+parseInt(t[1])*100+parseInt(t[2])}var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},Home;Object.defineProperty(exports,"__esModule",{value:!0});exports.Home=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),router_1=require("../../shared/router"),dtos_1=require("../../shared/dtos");Home=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.txtBaseUrl="",t.loading=!1,t.responseStatus=null,t}return __extends(t,n),Object.defineProperty(t.prototype,"store",{get:function(){return shared_1.store},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"desktop",{get:function(){return window.CONFIG.desktop},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tool",{get:function(){return this.desktop&&this.desktop.tool},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"toolVersion",{get:function(){return this.desktop&&this.desktop.toolVersion?versionScore(this.desktop.toolVersion):null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasUpdate",{get:function(){return this.toolVersion&&this.toolVersion<versionScore("5.1.30")},enumerable:!1,configurable:!0}),t.prototype.routeAutoQuery=function(n){return router_1.autoQueryRoute(n)},t.prototype.routeValidation=function(n){return router_1.validationRoute(n)},t.prototype.routeAdminUsers=function(n){return router_1.adminUsersRoute(n)},t.prototype.hasPlugin=function(n,t){var i;return((i=n.plugins)===null||i===void 0?void 0:i.indexOf(t))>=0},t.prototype.deleteSite=function(n){var t=this;confirm("Are you sure you want to remove '"+n.baseUrl+"' ?")&&shared_1.exec(this,function(){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.client.delete(new dtos_1.ModifyConnection({removeSlug:n.slug}))];case 1:return t.sent(),shared_1.bus.$emit("removeSite",n.slug),[2]}})})})},t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){var t,n;return __generator(this,function(i){switch(i.label){case 0:return[4,shared_1.client.get(new dtos_1.GetSites)];case 1:return(t=i.sent(),shared_1.bus.$emit("sites",t.sites),n=this.$route.query.connect||shared_1.store.connect,!n)?[3,3]:(this.txtBaseUrl=n,[4,this.submit(!0)]);case 2:i.sent();i.label=3;case 3:return[2]}})})},t.prototype.submit=function(n){return n===void 0&&(n=!1),__awaiter(this,void 0,void 0,function(){var t,i;return __generator(this,function(r){switch(r.label){case 0:return r.trys.push([0,4,5,6]),this.loading=!0,this.responseStatus=null,[4,shared_1.client.post(new dtos_1.ModifyConnection({addBaseUrl:this.txtBaseUrl}))];case 1:return(t=r.sent(),shared_1.bus.$emit("sites",t.sites),shared_1.bus.$emit("app",t),this.txtBaseUrl="",shared_1.log("/sites/"+t.slug),this.$router.push("/sites/"+t.slug),!n)?[3,3]:[4,shared_1.loadSite(t.slug)];case 2:r.sent();r.label=3;case 3:return[3,6];case 4:return i=r.sent(),this.responseStatus=i.responseStatus||i,[3,6];case 5:return this.loading=!1,[7];case 6:return[2]}})})},t.prototype.copyCmd=function(n){return copyCmd(document.querySelector(n))},__decorate([vue_property_decorator_1.Prop({"default":""})],t.prototype,"name",void 0),__decorate([vue_property_decorator_1.Component({template:'<div id="content" class="container mt-4">\n <div id="title">\n <h1>\n <i class="svg-logo svg-4x" />\n ServiceStack Studio\n <\/h1>\n <\/div>\n <div class="row justify-content-between">\n <div class="col mt-5 ms-4">\n <p class="lead" style="font-size: 1.5em">\n <i class="svg-connect svg-2x me-1 mb-1" />\n Connect to ServiceStack Instance:\n <\/p>\n \n <form ref="form" @submit.prevent="submit" :class="{ error:responseStatus, loading }" >\n <div class="mb-3">\n <error-summary except="baseUrl" :responseStatus="responseStatus" />\n <\/div>\n <div class="input-group">\n <v-input id="baseUrl" v-model="txtBaseUrl" placeholder="BaseUrl" :responseStatus="responseStatus" \n help="BaseUrl of remote ServiceStack App" style="width: 24em" />\n <button class="btn btn-social-icon btn-play btn-lg">\n <i v-if="!loading" class="fab fa-play"><\/i>\n <i v-if="loading" class="fab fa-loading"><\/i>\n <\/button>\n <\/div>\n <\/form> \n <\/div>\n <\/div>\n <div class="row mt-4 ms-3">\n <div class="col col-auto">\n <table class="site">\n <tbody>\n <tr v-for="x in store.sites" :key="x.baseUrl">\n <td>\n <img v-if="x.iconUrl" :src="x.iconUrl" class="sq-lg me-1 mb-1">\n <i v-else class="svg-servicestack svg-lg me-1 mb-1" />\n {{ x.name }} <small>({{ x.baseUrl }})<\/small>\n <\/td>\n <td class="ps-4">\n <button v-if="hasPlugin(x,\'adminusers\')" @click="$router.push(routeAdminUsers(x.slug))" class="btn btn-light">\n <i class="svg-users svg-md mb-1" />\n Users\n <\/button>\n <\/td>\n <td>\n <button v-if="hasPlugin(x,\'autoquery\')" @click="$router.push(routeAutoQuery(x.slug))" class="btn btn-light">\n <i class="svg-db svg-md mb-1" />\n AutoQuery\n <\/button>\n <\/td>\n <td>\n <button v-if="hasPlugin(x,\'validation\')" @click="$router.push(routeValidation(x.slug))" class="btn btn-light">\n <i class="svg-lock svg-md mb-1" />\n Validation\n <\/button>\n <\/td>\n <td>\n <button class="btn btn-social-icon btn-sm mx-1" @click="deleteSite(x)">\n <i class="fab fa-delete"><\/i>\n <\/button> \n <\/td>\n <\/tr>\n <\/tbody>\n <\/table>\n <\/div>\n <\/div>\n <div v-if="hasUpdate" class="mt-5">\n <h4>New {{tool}} version available<\/h4>\n <div style="display:flex;">\n <div class="copy-cmd">\n <pre class="sh" style="border-radius:0.375rem;border-color:rgba(243,244,246,1);background-color:rgba(243,244,246,1);display:flex;font-size:1.125rem;line-height: 1.75rem;"> \n <label style="flex-grow:1;text-align:left;">dotnet tool update -g {{tool}}<\/label>\n <b style="padding-left:0.75rem;padding-right:0.25rem;white-space:nowrap;color:rgba(156,163,175,1);display:inline-block;font-size: 0.875rem;line-height: 1.25rem;"> copied<\/b>\n <i class="svg-copy" style="cursor:pointer;min-width:1.5rem;height:1.5rem;width:1.5rem;display:inline-block;" title="copy" @click="copyCmd(\'.copy-cmd i\')"><\/i>\n <\/pre>\n <\/div>\n <\/div>\n <p class="text-muted">please upgrade by running in a Terminal or Windows Run dialog (<em>WIN+R<\/em>) then restarting studio<\/p>\n <\/div>\n <div id="debug-links">\n <button v-if="store.debug" class="btn btn-light btn-sm" @click="$router.push(\'/desktop\')"\n title="Go to Desktop"><i class="svg-debug svg-lg"/><\/button>\n <\/div>\n <\/div>',components:{}})],t)}(vue_property_decorator_1.Vue);exports.Home=Home;exports.default=Home;
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.EditValidationRule=void 0;var vue_property_decorator_1=require("vue-property-decorator"),dtos_1=require("../../shared/dtos"),shared_1=require("../../shared"),client_1=require("@servicestack/client"),EditValidationRule=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.field=null,t.validator="",t.condition="",t.errorCode="",t.message="",t.notes="",t.typeTab="validator",t.allowDelete=!1,t.loading=!1,t.responseStatus=null,t.typesWrapper={"String[]":function(n){return"['"+n+"']"},String:function(n){return"'"+n+"'"}},t}return __extends(t,n),Object.defineProperty(t.prototype,"isTypeValidator",{get:function(){return!this.properties},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"placeholderValidator",{get:function(){return(this.isTypeValidator?"Type":"Property")+" Validator"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"conditionValidator",{get:function(){return"Condition e.g: "+(this.isTypeValidator?"dto.Prop1 != dto.Prop2":"it.isOdd()")},enumerable:!1,configurable:!0}),t.prototype.id=function(n){return this.ruleType+"-"+n},Object.defineProperty(t.prototype,"ruleType",{get:function(){return this.isTypeValidator?"type":"prop"},enumerable:!1,configurable:!0}),t.prototype.mounted=function(){var n;(this.condition&&(this.typeTab="condition"),this.field=this.properties&&((n=this.properties[0])===null||n===void 0?void 0:n.name)||null,this.rule)&&(this.field=this.rule.field,this.validator=this.rule.validator,this.condition=this.rule.condition,this.errorCode=this.rule.errorCode,this.message=this.rule.message,this.notes=this.rule.notes)},t.prototype.setTypeTab=function(n){this.typeTab=n},t.prototype.activeTypeTab=function(n){return this.typeTab==n},t.prototype.focusValidator=function(n){var t=document.querySelector(n),u=!0,i=t===null||t===void 0?void 0:t.value.indexOf("'"),r=t===null||t===void 0?void 0:t.value.indexOf("'",i+1);i>=0&&r>=0||(u=!1,i=t===null||t===void 0?void 0:t.value.indexOf("{"),r=t===null||t===void 0?void 0:t.value.indexOf("}",i));t&&i>=0&&r>=0&&(t.selectionStart=u?i+1:i,t.selectionEnd=u?r:r+1,t.focus())},t.prototype.editValidator=function(n){return __awaiter(this,void 0,void 0,function(){var t=this;return __generator(this,function(){return this.validator=this.editfmt(n),[2,this.$nextTick(function(){return t.focusValidator("#"+t.id("validator"))})]})})},t.prototype.wrap=function(n,t){var i=this.typesWrapper[n];return i&&i(t)||"{"+t+"}"},t.prototype.editfmt=function(n){var i=this,t;return n.name+(((t=n.paramNames)===null||t===void 0?void 0:t.length)>0?"("+n.paramNames.map(function(t,r){return i.wrap(n.paramTypes[r],t)}).join(",")+")":"")},t.prototype.fmt=function(n){var t;return n.name+(((t=n.paramNames)===null||t===void 0?void 0:t.length)>0?"("+n.paramNames.join(",")+")":"")},t.prototype.submitDelete=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return shared_1.log("submitDelete"),[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n;return __generator(this,function(t){switch(t.label){case 0:return n=new dtos_1.ModifyValidationRules({deleteRuleIds:[this.rule.id]}),[4,shared_1.deleteSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:client_1.nameOf(n),args:shared_1.dtoAsArgs(n)}))];case 1:return t.sent(),this.$emit("done",this.rule),[2]}})})})];case 1:return t.sent(),[2]}})})},t.prototype.submit=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n;return __generator(this,function(t){switch(t.label){case 0:return n=new dtos_1.ValidationRule({type:this.type.name}),this.validator?n.validator=this.validator:this.condition&&(n.condition=this.condition),this.field&&(n.field=this.field),this.errorCode&&(n.errorCode=this.errorCode),this.message&&(n.message=this.message),this.notes&&(n.notes=this.notes),this.rule&&(n.id=this.rule.id),[4,shared_1.postSiteProxy(new dtos_1.SiteProxy({slug:this.slug,request:client_1.nameOf(new dtos_1.ModifyValidationRules)}),new dtos_1.ModifyValidationRules({saveRules:[n]}))];case 1:return t.sent(),this.$emit("done",n),[2]}})})})];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop()],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"validators",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"type",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"properties",void 0),__decorate([vue_property_decorator_1.Prop()],t.prototype,"rule",void 0),__decorate([vue_property_decorator_1.Component({template:'\n<form @submit.prevent.stop="submit()" class="create-property-rule m-2">\n <i class="text-close float-right" title="close" @click="$emit(\'done\',{field:field})" />\n <error-summary except="validator,condition,errorCode,message,notes" :responseStatus="responseStatus" />\n \n <ul class="nav nav-pills mb-1" role="tablist">\n <li class="nav-item" @click="setTypeTab(\'validator\')">\n <span :class="[\'nav-link\', {active:activeTypeTab(\'validator\')}]">Validator<\/span>\n <\/li>\n <li class="nav-item" @click="setTypeTab(\'condition\')">\n <span :class="[\'nav-link\', {active:activeTypeTab(\'condition\')}]">Script<\/span>\n <\/li>\n <\/ul>\n <div class="tab-content" :class="[isTypeValidator ? \'type-rule\' : null]">\n <div :class="[\'tab-pane\', {active:activeTypeTab(\'validator\')}]" role="tabpanel">\n <v-input :id="id(\'validator\')" statusField="Validator" v-model="validator" :responseStatus="responseStatus" \n :placeholder="placeholderValidator" spellcheck="false"\n help="Choose from any of the pre-defined validator\'s below" /> \n <\/div>\n <div :class="[\'tab-pane\', {active:activeTypeTab(\'condition\')}]" role="tabpanel">\n <v-input statusField="condition" v-model="condition" :responseStatus="responseStatus" \n :placeholder="conditionValidator" spellcheck="false" \n help="Script Expression that must evaluate to true, see: sharpscript.net" />\n <\/div>\n <\/div>\n\n <v-select v-if="properties" class="mt-2" statusField="field" v-model="field" :responseStatus="responseStatus" \n help="The property this rule applies to" :values="properties.map(x => x.name)">\n <\/v-select>\n\n <v-input statusField="errorCode" v-model="errorCode" inputClass="form-control-md mt-3" :responseStatus="responseStatus" \n placeholder="ErrorCode" help="Override with custom error code?" /> \n <v-input statusField="message" v-model="message" inputClass="form-control-md mt-1" :responseStatus="responseStatus" \n placeholder="Error Message" help="Override with custom message?" /> \n <v-input statusField="notes" v-model="notes" inputClass="form-control-md mt-1" :responseStatus="responseStatus" \n placeholder="Notes" help="Attach a note to this rule?" /> \n\n <div class="text-end mt-3">\n <span class="btn btn-link" @click="$emit(\'done\',{field:field})">close<\/span>\n <button type="submit" class="btn btn-primary">&plus;\n <span v-if="rule">Update Rule<\/span>\n <span v-else>Create Rule<\/span>\n <\/button>\n <\/div>\n <div v-if="rule" class="confirm-delete" style="margin:-38px 0 0 20px;line-height: 30px;">\n <input type="checkbox" class="form-check-input" @change="allowDelete=!allowDelete" :id="id(\'confirm\')"/>\n <label :for="id(\'confirm\')" class="form-check-label" >confirm<\/label>\n <button class="btn btn-danger" @click.prevent="submitDelete()" :disabled="!allowDelete">delete<\/button>\n <\/div>\n \n <h4 class="my-3">Quick Select {{isTypeValidator ? \'Type\' : \'Property\'}} Validator<\/h4>\n\n <div v-for="x in validators" :key="x.name + x.paramNames">\n <span class="btn btn-sm btn-outline-secondary mt-1" @click="editValidator(x)">{{fmt(x)}}<\/span>\n <\/div>\n<\/form>\n'})],t)}(vue_property_decorator_1.Vue);exports.EditValidationRule=EditValidationRule;
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},Validation;Object.defineProperty(exports,"__esModule",{value:!0});exports.Validation=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../../shared"),dtos_1=require("../../shared/dtos"),client_1=require("@servicestack/client"),EditValidationRule_1=require("./EditValidationRule");vue_property_decorator_1.Vue.component("edit-validation-rule",EditValidationRule_1.EditValidationRule);Validation=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.txtFilter="",t.showTypeForm=!1,t.editTypeRule=null,t.showPropertyForm=!1,t.editPropertyRule=null,t.results=[],t.loading=!1,t.responseStatus=null,t}return __extends(t,n),t.prototype.viewTypeForm=function(n){n===void 0&&(n=null);this.showTypeForm=!0;this.editTypeRule=n},t.prototype.viewPropertyForm=function(n){n===void 0&&(n=null);this.showPropertyForm=!0;this.editPropertyRule=n},t.prototype.onUrlChange=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return[4,this.reset()];case 1:return n.sent(),[2]}})})},t.prototype.reset=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return shared_1.log("Validation.reset()",this.op),this.responseStatus=null,this.showTypeForm=this.showPropertyForm=!1,this.editTypeRule=this.editPropertyRule=null,[4,shared_1.exec(this,function(){return __awaiter(n,void 0,void 0,function(){var n,t;return __generator(this,function(i){switch(i.label){case 0:return this.operation?[4,shared_1.getSiteInvoke(new dtos_1.SiteInvoke({slug:this.slug,request:client_1.nameOf(new dtos_1.GetValidationRules),args:shared_1.dtoAsArgs(new dtos_1.GetValidationRules({type:this.op}))}))]:[2];case 1:return n=i.sent(),t=JSON.parse(n),this.results=t.results,[2]}})})})];case 1:return t.sent(),[2]}})})},Object.defineProperty(t.prototype,"store",{get:function(){return shared_1.store},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bus",{get:function(){return shared_1.bus},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"slug",{get:function(){return this.$route.params.slug},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"op",{get:function(){return this.$route.query.op},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"operation",{get:function(){var n=this;return this.api.operations.find(function(t){return t.request.name==n.op})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasProperties",{get:function(){var n,t,i;return(i=(t=(n=this.operation)===null||n===void 0?void 0:n.request.properties)===null||t===void 0?void 0:t.length)!==null&&i!==void 0?i:!1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"site",{get:function(){return shared_1.store.getSite(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"app",{get:function(){return shared_1.store.getApp(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"api",{get:function(){var n;if((n=this.app)!==null&&n!==void 0)return n.api},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"plugin",{get:function(){var n;if((n=shared_1.store.getApp(this.slug))!==null&&n!==void 0)return n.plugins.validation},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"enabled",{get:function(){return this.app&&shared_1.store.hasPlugin(this.slug,"validation")},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"accessible",{get:function(){return this.enabled&&shared_1.store.hasRole(this.slug,this.plugin.accessRole)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"session",{get:function(){return shared_1.store.getSession(this.slug)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"windowStyles",{get:function(){return!this.accessible||shared_1.collapsed(this.slug,"footer")?"collapse-footer":""},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"autoQueryOp",{get:function(){var t,i=(t=this.operation)===null||t===void 0?void 0:t.dataModel,n;return i?(n=this.api.operations.find(function(n){return shared_1.matchesType(n.dataModel,i)&&shared_1.isQuery(n)}),n===null||n===void 0?void 0:n.request.name):null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dataModelOps",{get:function(){var n,t=(n=this.operation)===null||n===void 0?void 0:n.dataModel;return t?this.api.operations.filter(function(n){return shared_1.matchesType(n.dataModel,t)}):[]},enumerable:!1,configurable:!0}),t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){var n=this;return __generator(this,function(t){switch(t.label){case 0:return[4,shared_1.loadSite(this.slug)];case 1:return t.sent(),[4,this.reset()];case 2:return t.sent(),shared_1.bus.$on("signedin",function(){n.reset()}),[2]}})})},t.prototype.matchesType=function(n,t){return shared_1.matchesType(n,t)},t.prototype.typeKey=function(n){return(n.namespace||"")+"."+n.name},Object.defineProperty(t.prototype,"operations",{get:function(){if(!this.app||!this.accessible)return[];var n=this.txtFilter.toLowerCase();return this.api.operations.filter(function(t){return t.request.name.toLowerCase().indexOf(n)>=0})},enumerable:!1,configurable:!0}),t.prototype.handleDone=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return(shared_1.log("handleDone",n),n.field?(this.showPropertyForm=!1,this.editPropertyRule=null):(this.showTypeForm=!1,this.editTypeRule=null),!(n.validator||n.condition))?[3,2]:[4,this.reset()];case 1:t.sent();t.label=2;case 2:return[2]}})})},__decorate([vue_property_decorator_1.Watch("$route",{immediate:!0,deep:!0})],t.prototype,"onUrlChange",null),__decorate([vue_property_decorator_1.Component({template:'<section v-if="enabled" id="validation" :class="[\'grid-layout\',windowStyles]">\n\n <header id="header">\n <h1 v-if="site">\n <nav class="site-breadcrumbs">\n <ol class="breadcrumb">\n <li class="breadcrumb-item">\n <router-link to="/"><i class="home-link svg-3x mb-1" title="home" /><\/router-link>\n <\/li>\n <li :class="[\'breadcrumb-item\',{active:!operation}]">\n <img v-if="site.iconUrl" :src="site.iconUrl" class="sq-3x mb-1">\n <i v-else class="svg lock-dark svg-3x mb-1" \n /><router-link v-if="operation" to="?">{{site.name}}<\/router-link> \n <span v-else>{{site.name}}<\/span>\n <\/li>\n <li v-if="operation" class="breadcrumb-item active">{{operation.request.name}}<\/li>\n <li v-if="loading"><i class="svg-loading svg-lg ms-2 mb-1" title="loading..." /><\/li>\n <\/ol>\n <\/nav>\n <\/h1>\n <h1 v-else-if="loading">\n <i class="fab fa-loading"><\/i>\n Loading...\n <\/h1>\n <div v-else-if="responseStatus">\n <error-summary :responseStatus="responseStatus" />\n <router-link to="/">&lt; back to sites<\/router-link>\n <\/div>\n <auth id="auth" v-if="site && app" :slug="slug" feature="validation" :op="autoQueryOp" /> \n <\/header>\n \n <nav id="left">\n <div v-if="accessible">\n <div id="nav-filter">\n <i v-if="txtFilter" class="text-close" style="position:absolute;margin:0 0 0 265px;" title="clear" @click="txtFilter=\'\'"><\/i>\n <v-input v-model="txtFilter" id="txtFilter" placeholder="filter" inputClass="form-control" />\n <\/div>\n <div id="sidebar" class="">\n <div class="ps-2">\n <div v-for="x in operations" :key="typeKey(x.request)" \n :class="[\'datamodel\',{selected:x.request.name==op}]" :title="x.request.name">\n <router-link :to="{ query: { op:x.request.name } }">{{x.request.name}}<\/router-link>\n <\/div>\n <\/div>\n <\/div>\n <\/div>\n <\/nav>\n \n <main>\n <div v-if="operation && !loading && session">\n <div v-if="accessible" class="main-container">\n <div style="min-height:200px">\n <table id="validation-rules" class="ms-2">\n <thead>\n <tr>\n <th>\n <i class="svg svg-lock svg-lg"/> Type Validation Rules\n <\/th>\n <th>\n <div v-if="hasProperties">\n <i class="svg svg-lock svg-lg"/> Property Validation Rules\n <\/div>\n <\/th>\n <\/tr>\n <\/thead>\n <tbody>\n <tr>\n <td class="pe-3">\n <div v-for="x in results.filter(x => x.field == null)" :key="x.id" class="rule">\n <edit-validation-rule v-if="editTypeRule==x.id" :slug="slug" :type="operation.request" :rule="x" \n :validators="plugin.typeValidators" @done="handleDone($event)" />\n <div v-else>\n <button class="btn btn-light btn-sm edit-rule" @click="viewTypeForm(x.id)"\n title="Edit Rule"><i class="svg-update svg-md"/><\/button>\n <dl class="h-kvp">\n <dt>{{x.validator ? \'validator\':\'script\'}}<\/dt>\n <dd><b class="field">{{x.field}}<\/b>{{x.validator ?? x.condition}}<\/dd>\n <\/dl>\n <\/div>\n <\/div>\n \n <button v-if="!showTypeForm" class="btn btn-outline-primary btn-lg" @click="viewTypeForm()">&plus;\n Add Type Validation Rule \n <\/button>\n <edit-validation-rule v-else-if="editTypeRule==null" :slug="slug" :type="operation.request" \n :validators="plugin.typeValidators" @done="handleDone($event)" />\n <\/td>\n <td>\n <div v-for="x in results.filter(x => x.field != null)" :key="x.id" class="h-kvp rule">\n <edit-validation-rule v-if="editPropertyRule==x.id" :slug="slug" :type="operation.request" :rule="x" \n :validators="plugin.propertyValidators" :properties="operation.request.properties" \n @done="handleDone($event)" />\n <div v-else>\n <button class="btn btn-light btn-sm edit-rule" @click="viewPropertyForm(x.id)"\n title="Edit Rule"><i class="svg-update svg-md"/><\/button>\n <dl class="h-kvp">\n <dt>{{x.field}} {{x.validator ? \'validator\':\'script\'}}<\/dt>\n <dd>{{x.validator ?? x.condition}}<\/dd>\n <\/dl>\n <\/div>\n <\/div>\n \n <button v-if="!showPropertyForm" class="btn btn-outline-primary btn-lg" @click="viewPropertyForm()">&plus;\n Add Property Validation Rule \n <\/button>\n <edit-validation-rule v-else-if="editPropertyRule==null" :slug="slug" :type="operation.request" \n :validators="plugin.propertyValidators" @done="handleDone($event)" \n :properties="operation.request.properties" />\n <\/td>\n <\/tr>\n <\/tbody>\n <\/table>\n <\/div>\n \n <div v-if="dataModelOps.length" class="datamodel-nav mt-5">\n <b class="float-left" style="line-height: 40px">Quick Jump:<\/b>\n <ul class="nav">\n <li v-for="x in dataModelOps" class="nav-item">\n <router-link :class="[\'nav-link\',{active:x.request.name==op}]" \n :to="{ query: { op:x.request.name } }">{{x.request.name}}<\/router-link>\n <\/li>\n <\/ul>\n <\/div>\n <\/div>\n <\/div>\n <div v-else-if="!session" class="text-center" style="position:absolute;left:50%;margin:50px 0 0 -100px">\n <i class="svg svg-lock svg-10x mb-1" />\n <h3 class="mb-3">Validation<\/h3>\n <button v-if="!loading" @click="bus.$emit(\'signin\')" class="btn btn-outline-primary">\n Sign In\n <\/button>\n <\/div>\n <div v-else-if="op && !operation || !accessible" class="text-danger"> \n <h4>\n <i class="svg block-danger svg-2x" />\n Only {{plugin.accessRole}} Users can maintain Validation Rules\n <\/h4> \n <\/div>\n <\/main>\n \n <Footer v-if="app" :slug="slug"/>\n \n <\/section>\n <no-plugin v-else :slug="slug" plugin="validation" />'})],t)}(vue_property_decorator_1.Vue);exports.Validation=Validation;exports.default=Validation;vue_property_decorator_1.Vue.component("validation",Validation);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},vue_property_decorator_1,AlertSuccess;Object.defineProperty(exports,"__esModule",{value:!0});exports.AlertSuccess=void 0;vue_property_decorator_1=require("vue-property-decorator");AlertSuccess=function(n){function t(){return n!==null&&n.apply(this,arguments)||this}return __extends(t,n),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"message",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="message" class="alert alert-success">{{message}} <i class="svg svg-lg done-success"><\/i><\/div>'})],t)}(vue_property_decorator_1.Vue);exports.AlertSuccess=AlertSuccess;exports.default=AlertSuccess;vue_property_decorator_1.Vue.component("alert-success",AlertSuccess);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},vue_property_decorator_1,ErrorView;Object.defineProperty(exports,"__esModule",{value:!0});exports.ErrorView=void 0;vue_property_decorator_1=require("vue-property-decorator");ErrorView=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.showStackTrace=!1,t}return __extends(t,n),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"responseStatus",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="responseStatus" class="noplugin-error alert alert-danger mt-3 me-3">\n <div>{{responseStatus.errorCode}}: {{responseStatus.message}}<\/div>\n <div v-if="responseStatus.stackTrace">\n <button v-if="!showStackTrace" class="btn btn-link" style="margin-left: -1em" @click="showStackTrace=true">\n <i class="svg-chevron-right svg-lg mb-1" title="expand" />StackTrace<\/button>\n <div v-if="showStackTrace" class="stacktrace">{{responseStatus.stackTrace}}<\/div>\n <\/div>\n<\/div>'})],t)}(vue_property_decorator_1.Vue);exports.ErrorView=ErrorView;exports.default=ErrorView;vue_property_decorator_1.Vue.component("error-view",ErrorView);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},__spreadArrays=this&&this.__spreadArrays||function(){for(var i=0,n=0,r=arguments.length;n<r;n++)i+=arguments[n].length;for(var u=Array(i),f=0,n=0;n<r;n++)for(var e=arguments[n],t=0,o=e.length;t<o;t++,f++)u[f]=e[t];return u};Object.defineProperty(exports,"__esModule",{value:!0});exports.Footer=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../shared"),client_1=require("@servicestack/client"),desktop_1=require("@servicestack/desktop"),Footer=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.showResponseIds=[],t}return __extends(t,n),Object.defineProperty(t.prototype,"store",{get:function(){return shared_1.store},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"views",{get:function(){return this.store.getAppPrefs(this.slug).views||[]},set:function(n){vue_property_decorator_1.Vue.set(this.store.getAppPrefs(this.slug),"views",n)},enumerable:!1,configurable:!0}),t.prototype.collapsed=function(n){return shared_1.collapsed(this.slug,n)},t.prototype.kvps=function(n){return shared_1.argsAsKvps(n)},t.prototype.showView=function(n){this.views=__spreadArrays(this.views,[n])},t.prototype.hideView=function(n){this.views=this.views.filter(function(t){return t!=n})},t.prototype.responseVisible=function(n){return this.showResponseIds.indexOf(n)>=0},t.prototype.toggleResponse=function(n){this.responseVisible(n)?this.showResponseIds=this.showResponseIds.filter(function(t){return t!=n}):this.showResponseIds.push(n)},Object.defineProperty(t.prototype,"logEntries",{get:function(){return this.store.appLogEntries[this.slug]||[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"baseUrl",{get:function(){return shared_1.store.getSite(this.slug).baseUrl},enumerable:!1,configurable:!0}),t.prototype.createUrl=function(n){var i,r,e,t;if(n){var u=(i=shared_1.store.getApp(this.slug).api.operations)===null||i===void 0?void 0:i.find(function(t){return t.request.name==n.request}),o=(r=u===null||u===void 0?void 0:u.routes)===null||r===void 0?void 0:r.find(function(n){return n.path.indexOf("{")==-1}),f=o?client_1.combinePaths(this.baseUrl,o.path):client_1.combinePaths(this.baseUrl,"json","reply",n.request);for(t=0;!0&&e!==void 0?e:0;t+=2)f+=t==0?"?":"&",f+=n.args[t]+"="+encodeURIComponent(n.args[t+1]);return f}},t.prototype.copy=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return shared_1.log("copy",n),[4,desktop_1.setClipboard(n)];case 1:return t.sent(),[2]}})})},__decorate([vue_property_decorator_1.Prop()],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Component({template:'<footer id="footer" v-if="!collapsed(\'footer\')">\n <i class="text-close" title="close" @click="hideView(\'footer\')"/>\n <div id="panels">\n <div v-for="x in logEntries" class="log-entry">\n <div v-if="x.invoke" class="invoke">\n <h4><i>{{x.method}}<\/i><b>{{x.invoke.request}}<\/b>\n <a v-if="store.desktop && x.method == \'GET\'" href="javascript:void(0)" @click="copy(createUrl(x.invoke))" title="copy url" \n class="svg-copy svg-md mb-1"><\/a> \n <a v-if="x.method == \'GET\'" :href="createUrl(x.invoke)" :title="createUrl(x.invoke)" \n class="svg-external-link svg-md mb-1" target="_blank"><\/a> \n <\/h4>\n <div v-if="x.invoke.args.length" class="body">\n <dl v-for="x in kvps(x.invoke.args)" class="v-kvp">\n <dt>{{x.key}}<\/dt>\n <dd v-if="x.value!=\'\'" :title="x.value">{{x.value}}<\/dd>\n <\/dl>\n <dl v-if="x.response" class="v-kvp log-response">\n <dt v-if="responseVisible(x.id)" @click="toggleResponse(x.id)"><i class="svg svg-chevron-down svg-sm"/>response<\/dt>\n <dt v-else @click="toggleResponse(x.id)"><i class="svg svg-chevron-right svg-sm"/>response<\/dt>\n <dd v-if="responseVisible(x.id)"><jsonviewer :json="x.response"/><\/dd>\n <\/dl>\n <\/div>\n <\/div>\n <\/div>\n <\/div>\n <\/footer>\n <div v-else id="output-group">\n <button class="btn btn-outline-secondary btn-sm" @click="showView(\'footer\')">output<\/button> \n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.Footer=Footer;vue_property_decorator_1.Vue.component("Footer",Footer);
})();
(function(){
"use strict";function getInputType(n){var r,t=realType(n),i=n.name;if(t==="Boolean")return"checkbox";if(numberTypes.indexOf(t)>=0||realTypes.indexOf(t)>=0)return"number";if(t==="DateTime"||t==="DateTimeOffset")return"datetime-local";if(n.isEnum&&((r=n.allowableValues)===null||r===void 0?void 0:r.length)>0)return"select";if(i){if(i.endsWith("Password"))return"password";if(i.endsWith("Email"))return"email";if(i.endsWith("Url"))return"url";if(i.indexOf("Phone")>=0)return"tel"}return!n.isValueType&&t!=="String"?"textarea":"text"}function realType(n){return n.type==="Nullable`1"?n.genericArgs[0]:n.type}var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},InputType;Object.defineProperty(exports,"__esModule",{value:!0});exports.realType=exports.getInputType=void 0;var vue_property_decorator_1=require("vue-property-decorator"),client_1=require("@servicestack/client"),shared_1=require("../shared"),numberTypes=["SByte","Byte","Int16","Int32","Int64","UInt16","UInt32","UInt64"],realTypes=["Single","Double","Decimal"];exports.getInputType=getInputType;exports.realType=realType;InputType=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.value=null,t.values=[],t.preInput=!0,t}return __extends(t,n),Object.defineProperty(t.prototype,"help",{get:function(){return this.realType!=="Boolean"?client_1.humanize(this.f.name):""},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"realType",{get:function(){return realType(this.f)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"inputType",{get:function(){return getInputType(this.f)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"f",{get:function(){return this.property},enumerable:!1,configurable:!0}),t.prototype.humanize=function(n){return client_1.humanize(n)},t.prototype.mounted=function(){shared_1.log("InputType.mounted()",this.inputType)},t.prototype.onModelChange=function(){this.preInput&&(this.value=this.editValue(),shared_1.log("onModelChange()",this.value,this.realType))},t.prototype.onInput=function(n,t){var i,r;this.preInput=!1;shared_1.log("onInput",this.realType,n,t);this.inputType==="datetime-local"?(r=(i=t===null||t===void 0?void 0:t.target)===null||i===void 0?void 0:i.valueAsNumber,typeof r=="number"&&(this.model[this.f.name]="/Date("+r+")/")):this.model[this.f.name]=this.realType==="Boolean"?n.length==1:this.inputType==="textarea"&&n&&(n[0]=="{"||n[0]=="[")?JSON.parse(n):n},t.prototype.editValue=function(){var n=this.model[this.f.name];if(this.inputType=="select")return this.values=this.f.allowableValues,[this.f.name];if(typeof n=="string"){if(n!==""){if(n.startsWith("/Date(")||this.inputType==="datetime-local")return client_1.toLocalISOString(client_1.toDate(n));if(this.realType==="TimeSpan"&&n&&n[0]==="P")return client_1.toTimeSpanFmt(client_1.fromXsdDuration(n))}}else{if(this.inputType==="textarea"&&typeof n=="object")return JSON.stringify(n);if(this.realType==="Boolean")return this.values=[this.f.name],n?[this.f.name]:[]}return n},__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"model",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"property",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"responseStatus",void 0),__decorate([vue_property_decorator_1.Prop({"default":"md"})],t.prototype,"size",void 0),__decorate([vue_property_decorator_1.Watch("model",{immediate:!0,deep:!0})],t.prototype,"onModelChange",null),__decorate([vue_property_decorator_1.Component({template:'<template>\n <v-select v-if="inputType==\'select\'" :selectClass="[\'form-control-\' + size]" :responseStatus="responseStatus" :values="values" \n v-model="model[f.name]" :help="help" />\n <v-input v-else :type="inputType" :id="f.name" v-model="value" :responseStatus="responseStatus" :values="values"\n :placeholder="humanize(f.name)" :inputClass="[\'form-control-\' + size]" :help="help" step="any" \n @input="onInput" />\n<\/template>'})],t)}(vue_property_decorator_1.Vue);vue_property_decorator_1.Vue.component("v-input-type",InputType);exports.default=InputType;
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u};Object.defineProperty(exports,"__esModule",{value:!0});exports.JsonViewer=void 0;var vue_property_decorator_1=require("vue-property-decorator"),client_1=require("@servicestack/client"),show=function(n){return typeof n!="string"||n.substr(0,2)!=="__"},keyFmt=function(n){return client_1.humanize(client_1.toPascalCase(n))},uniqueKeys=function(n){for(var r,t,u={},i=0,f=n.length;i<f;i++){r=n[i];for(t in r)r.hasOwnProperty(t)&&show(t)&&(u[t]=t)}return u},valueFmt=function(n,t,i){return i},num=function(n){return n},date=function(n){return client_1.toDate(n)},pad=function(n){return n<10?"0"+n:n},dmft=function(n){return n.getFullYear()+"/"+pad(n.getMonth()+1)+"/"+pad(n.getDate())},str=function(n){return n.substr(0,6)==="/Date("?dmft(date(n)):n},obj=function(n){return"<dl>\n "+Object.keys(n).filter(show).map(function(t){return'<dt class="ib">'+keyFmt(t)+"<\/dt><dd>"+valueFmt(t,n[t],val(n[t]))+"<\/dd>"}).join("")+"\n <\/dl>"},arr=function(n){if(typeof n[0]=="string"||typeof n[0]=="number")return"<span>"+n.join(", ")+"<\/span>";var t=uniqueKeys(n);return"\n <table>\n <caption><\/caption>\n <thead>\n <tr>\n "+Object.keys(t).map(function(n){return"<th><b><\/b>"+keyFmt(n)+"<\/th>"}).join("")+"\n <\/tr>\n <\/thead>\n <tbody>\n "+n.map(function(n){return"<tr>\n "+Object.keys(t).filter(show).map(function(t){return"<td>"+valueFmt(t,n[t],val(n[t]))+"<\/td>"}).join("")+"\n <\/tr>"}).join("")+"\n <\/tbody>\n <\/table>"},val=function(n,t){return(t&&(valueFmt=t),n==null)?"":typeof n=="number"?""+num(n):typeof n=="string"?str(n):typeof n=="boolean"?n?"true":"false":n.length?arr(n):obj(n)},JsonViewer=function(n){function t(){return n!==null&&n.apply(this,arguments)||this}return __extends(t,n),Object.defineProperty(t.prototype,"html",{get:function(){return this.json?val(JSON.parse(this.json)):val(this.value)},enumerable:!1,configurable:!0}),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"value",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"json",void 0),__decorate([vue_property_decorator_1.Component({template:'<div class="jsonviewer">\n <div v-html="html"><\/div>\n <span class="clearfix"><\/span>\n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.JsonViewer=JsonViewer;exports.default=JsonViewer;vue_property_decorator_1.Vue.component("jsonviewer",JsonViewer);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},NoPlugin;Object.defineProperty(exports,"__esModule",{value:!0});exports.NoPlugin=exports.siteError=void 0;var vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../shared"),messages={auth:"Auth",autoquery:"AutoQuery"};exports.siteError=function(n){var t=shared_1.store.appErrors[n];return t?t.errorCode+": "+t.message:""};NoPlugin=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.showStackTrace=!1,t}return __extends(t,n),Object.defineProperty(t.prototype,"siteError",{get:function(){return shared_1.store.appErrors[this.slug]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"loading",{get:function(){return shared_1.store.appLoading[this.slug]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"errorMessage",{get:function(){return this.message||(messages[this.plugin]||"This plugin")+" is not enabled for this site"},enumerable:!1,configurable:!0}),t.prototype.mounted=function(){shared_1.log("NoPlugin mounted()")},t.errorHtml=function(n,t){var r=shared_1.store.appLoading[n],i;return r?'<div class="noplugin-loading m-3">\n <i class="svg-loading svg-lg me-1 mb-1"><\/i> loading...\n <\/div>':(i=shared_1.store.appErrors[n],i)?'<div class="noplugin-error alert alert-danger m-3">'+i.errorCode+": "+i.message+(i.stackTrace?'<div class="stacktrace">'+i.stackTrace+"<\/div>":"")+"<\/div>":'<div class="noplugin-error alert alert-danger m-3">'+(messages[t]||"This plugin")+" is not enabled for this site<\/div>"},__decorate([vue_property_decorator_1.Prop()],t.prototype,"slug",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"plugin",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"message",void 0),__decorate([vue_property_decorator_1.Component({template:'<div>\n <div v-if="loading" class="noplugin-loading m-3">\n <i class="svg-loading svg-lg me-1 mb-1" /> loading...\n <\/div>\n <div v-else>\n <div v-if="siteError" class="noplugin-error alert alert-danger m-3">\n <div>{{siteError.errorCode}}: {{siteError.message}}<\/div>\n <div v-if="siteError.stackTrace">\n <button v-if="!showStackTrace" class="btn btn-link" style="margin-left: -1em" @click="showStackTrace=true">\n <i class="svg-chevron-right svg-lg mb-1" title="expand" />StackTrace<\/button>\n <div v-if="showStackTrace" class="stacktrace">{{siteError.stackTrace}}<\/div>\n <\/div>\n <\/div>\n <div v-else class="noplugin-error alert alert-danger m-3">\n {{errorMessage}}\n <\/div>\n <a href="/" class="ms-4">&lt; home<\/a>\n <\/div>\n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.NoPlugin=NoPlugin;exports.default=NoPlugin;vue_property_decorator_1.Vue.component("no-plugin",NoPlugin);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),AuditBase,QueryPrefs,AppPrefs,SiteSetting,ResponseError,ResponseStatus,AppInfo,NavItem,MetaAuthProvider,AuthInfo,AutoQueryConvention,AutoQueryInfo,ScriptMethodType,ValidationInfo,SharpPagesInfo,RequestLogsInfo,MetadataTypeName,MetadataDataContract,MetadataDataMember,MetadataAttribute,MetadataPropertyType,MetadataType,AdminUsersInfo,PluginInfo,CustomPlugin,MetadataTypesConfig,MetadataRoute,MetadataOperationType,MetadataTypes,AppMetadata,QueryBase,QueryDb,CrudEvent,ValidateRule,ValidationRule,AdminUserBase,ExportTypes,GetSitesResponse,AuthenticateResponse,GetAppMetadataResponse,ModifyConnectionResponse,QueryResponse,GetValidationRulesResponse,AdminUserResponse,AdminUsersResponse,AdminDeleteUserResponse,AssignRolesResponse,UnAssignRolesResponse,RegisterResponse,GetSites,SiteAuthenticate,GetAppMetadata,SiteInvoke,SiteProxy,ModifyConnection,GetSiteAppPrefs,SaveSiteAppPrefs,GetCrudEvents,GetValidationRules,ModifyValidationRules,AdminGetUser,AdminQueryUsers,AdminCreateUser,AdminUpdateUser,AdminDeleteUser,EvalScript,DesktopDownloadUrl,Authenticate,AssignRoles,UnAssignRoles,Register;Object.defineProperty(exports,"__esModule",{value:!0});exports.Register=exports.UnAssignRoles=exports.AssignRoles=exports.Authenticate=exports.DesktopDownloadUrl=exports.EvalScript=exports.AdminDeleteUser=exports.AdminUpdateUser=exports.AdminCreateUser=exports.AdminQueryUsers=exports.AdminGetUser=exports.ModifyValidationRules=exports.GetValidationRules=exports.GetCrudEvents=exports.SaveSiteAppPrefs=exports.GetSiteAppPrefs=exports.ModifyConnection=exports.SiteProxy=exports.SiteInvoke=exports.GetAppMetadata=exports.SiteAuthenticate=exports.GetSites=exports.RegisterResponse=exports.UnAssignRolesResponse=exports.AssignRolesResponse=exports.AdminDeleteUserResponse=exports.AdminUsersResponse=exports.AdminUserResponse=exports.GetValidationRulesResponse=exports.QueryResponse=exports.ModifyConnectionResponse=exports.GetAppMetadataResponse=exports.AuthenticateResponse=exports.GetSitesResponse=exports.ExportTypes=exports.AdminUserBase=exports.ValidationRule=exports.ValidateRule=exports.CrudEvent=exports.QueryDb=exports.QueryBase=exports.AppMetadata=exports.MetadataTypes=exports.MetadataOperationType=exports.MetadataRoute=exports.MetadataTypesConfig=exports.CustomPlugin=exports.PluginInfo=exports.AdminUsersInfo=exports.MetadataType=exports.MetadataPropertyType=exports.MetadataAttribute=exports.MetadataDataMember=exports.MetadataDataContract=exports.MetadataTypeName=exports.RequestLogsInfo=exports.SharpPagesInfo=exports.ValidationInfo=exports.ScriptMethodType=exports.AutoQueryInfo=exports.AutoQueryConvention=exports.AuthInfo=exports.MetaAuthProvider=exports.NavItem=exports.AppInfo=exports.ResponseStatus=exports.ResponseError=exports.SiteSetting=exports.AppPrefs=exports.QueryPrefs=exports.AuditBase=void 0;AuditBase=function(){function n(n){Object.assign(this,n)}return n}();exports.AuditBase=AuditBase;QueryPrefs=function(){function n(n){Object.assign(this,n)}return n}();exports.QueryPrefs=QueryPrefs;AppPrefs=function(){function n(n){Object.assign(this,n)}return n}();exports.AppPrefs=AppPrefs;SiteSetting=function(){function n(n){Object.assign(this,n)}return n}();exports.SiteSetting=SiteSetting;ResponseError=function(){function n(n){Object.assign(this,n)}return n}();exports.ResponseError=ResponseError;ResponseStatus=function(){function n(n){Object.assign(this,n)}return n}();exports.ResponseStatus=ResponseStatus;AppInfo=function(){function n(n){Object.assign(this,n)}return n}();exports.AppInfo=AppInfo;NavItem=function(){function n(n){Object.assign(this,n)}return n}();exports.NavItem=NavItem;MetaAuthProvider=function(){function n(n){Object.assign(this,n)}return n}();exports.MetaAuthProvider=MetaAuthProvider;AuthInfo=function(){function n(n){Object.assign(this,n)}return n}();exports.AuthInfo=AuthInfo;AutoQueryConvention=function(){function n(n){Object.assign(this,n)}return n}();exports.AutoQueryConvention=AutoQueryConvention;AutoQueryInfo=function(){function n(n){Object.assign(this,n)}return n}();exports.AutoQueryInfo=AutoQueryInfo;ScriptMethodType=function(){function n(n){Object.assign(this,n)}return n}();exports.ScriptMethodType=ScriptMethodType;ValidationInfo=function(){function n(n){Object.assign(this,n)}return n}();exports.ValidationInfo=ValidationInfo;SharpPagesInfo=function(){function n(n){Object.assign(this,n)}return n}();exports.SharpPagesInfo=SharpPagesInfo;RequestLogsInfo=function(){function n(n){Object.assign(this,n)}return n}();exports.RequestLogsInfo=RequestLogsInfo;MetadataTypeName=function(){function n(n){Object.assign(this,n)}return n}();exports.MetadataTypeName=MetadataTypeName;MetadataDataContract=function(){function n(n){Object.assign(this,n)}return n}();exports.MetadataDataContract=MetadataDataContract;MetadataDataMember=function(){function n(n){Object.assign(this,n)}return n}();exports.MetadataDataMember=MetadataDataMember;MetadataAttribute=function(){function n(n){Object.assign(this,n)}return n}();exports.MetadataAttribute=MetadataAttribute;MetadataPropertyType=function(){function n(n){Object.assign(this,n)}return n}();exports.MetadataPropertyType=MetadataPropertyType;MetadataType=function(){function n(n){Object.assign(this,n)}return n}();exports.MetadataType=MetadataType;AdminUsersInfo=function(){function n(n){Object.assign(this,n)}return n}();exports.AdminUsersInfo=AdminUsersInfo;PluginInfo=function(){function n(n){Object.assign(this,n)}return n}();exports.PluginInfo=PluginInfo;CustomPlugin=function(){function n(n){Object.assign(this,n)}return n}();exports.CustomPlugin=CustomPlugin;MetadataTypesConfig=function(){function n(n){Object.assign(this,n)}return n}();exports.MetadataTypesConfig=MetadataTypesConfig;MetadataRoute=function(){function n(n){Object.assign(this,n)}return n}();exports.MetadataRoute=MetadataRoute;MetadataOperationType=function(){function n(n){Object.assign(this,n)}return n}();exports.MetadataOperationType=MetadataOperationType;MetadataTypes=function(){function n(n){Object.assign(this,n)}return n}();exports.MetadataTypes=MetadataTypes;AppMetadata=function(){function n(n){Object.assign(this,n)}return n}();exports.AppMetadata=AppMetadata;QueryBase=function(){function n(n){Object.assign(this,n)}return n}();exports.QueryBase=QueryBase;QueryDb=function(n){function t(t){var i=n.call(this,t)||this;return Object.assign(i,t),i}return __extends(t,n),t}(QueryBase);exports.QueryDb=QueryDb;CrudEvent=function(){function n(n){Object.assign(this,n)}return n}();exports.CrudEvent=CrudEvent;ValidateRule=function(){function n(n){Object.assign(this,n)}return n}();exports.ValidateRule=ValidateRule;ValidationRule=function(n){function t(t){var i=n.call(this,t)||this;return Object.assign(i,t),i}return __extends(t,n),t}(ValidateRule);exports.ValidationRule=ValidationRule;AdminUserBase=function(){function n(n){Object.assign(this,n)}return n}();exports.AdminUserBase=AdminUserBase;ExportTypes=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new n},n.prototype.getTypeName=function(){return"ExportTypes"},n}();exports.ExportTypes=ExportTypes;GetSitesResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.GetSitesResponse=GetSitesResponse;AuthenticateResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.AuthenticateResponse=AuthenticateResponse;GetAppMetadataResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.GetAppMetadataResponse=GetAppMetadataResponse;ModifyConnectionResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.ModifyConnectionResponse=ModifyConnectionResponse;QueryResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.QueryResponse=QueryResponse;GetValidationRulesResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.GetValidationRulesResponse=GetValidationRulesResponse;AdminUserResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.AdminUserResponse=AdminUserResponse;AdminUsersResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.AdminUsersResponse=AdminUsersResponse;AdminDeleteUserResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.AdminDeleteUserResponse=AdminDeleteUserResponse;AssignRolesResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.AssignRolesResponse=AssignRolesResponse;UnAssignRolesResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.UnAssignRolesResponse=UnAssignRolesResponse;RegisterResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.RegisterResponse=RegisterResponse;GetSites=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new GetSitesResponse},n.prototype.getTypeName=function(){return"GetSites"},n}();exports.GetSites=GetSites;SiteAuthenticate=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new AuthenticateResponse},n.prototype.getTypeName=function(){return"SiteAuthenticate"},n}();exports.SiteAuthenticate=SiteAuthenticate;GetAppMetadata=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new GetAppMetadataResponse},n.prototype.getTypeName=function(){return"GetAppMetadata"},n}();exports.GetAppMetadata=GetAppMetadata;SiteInvoke=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return""},n.prototype.getTypeName=function(){return"SiteInvoke"},n}();exports.SiteInvoke=SiteInvoke;SiteProxy=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new Uint8Array(0)},n.prototype.getTypeName=function(){return"SiteProxy"},n}();exports.SiteProxy=SiteProxy;ModifyConnection=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new ModifyConnectionResponse},n.prototype.getTypeName=function(){return"ModifyConnection"},n}();exports.ModifyConnection=ModifyConnection;GetSiteAppPrefs=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new AppPrefs},n.prototype.getTypeName=function(){return"GetSiteAppPrefs"},n}();exports.GetSiteAppPrefs=GetSiteAppPrefs;SaveSiteAppPrefs=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){},n.prototype.getTypeName=function(){return"SaveSiteAppPrefs"},n}();exports.SaveSiteAppPrefs=SaveSiteAppPrefs;GetCrudEvents=function(n){function t(t){var i=n.call(this,t)||this;return Object.assign(i,t),i}return __extends(t,n),t.prototype.createResponse=function(){return new QueryResponse},t.prototype.getTypeName=function(){return"GetCrudEvents"},t}(QueryDb);exports.GetCrudEvents=GetCrudEvents;GetValidationRules=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new GetValidationRulesResponse},n.prototype.getTypeName=function(){return"GetValidationRules"},n}();exports.GetValidationRules=GetValidationRules;ModifyValidationRules=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){},n.prototype.getTypeName=function(){return"ModifyValidationRules"},n}();exports.ModifyValidationRules=ModifyValidationRules;AdminGetUser=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new AdminUserResponse},n.prototype.getTypeName=function(){return"AdminGetUser"},n}();exports.AdminGetUser=AdminGetUser;AdminQueryUsers=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new AdminUsersResponse},n.prototype.getTypeName=function(){return"AdminQueryUsers"},n}();exports.AdminQueryUsers=AdminQueryUsers;AdminCreateUser=function(n){function t(t){var i=n.call(this,t)||this;return Object.assign(i,t),i}return __extends(t,n),t.prototype.createResponse=function(){return new AdminUserResponse},t.prototype.getTypeName=function(){return"AdminCreateUser"},t}(AdminUserBase);exports.AdminCreateUser=AdminCreateUser;AdminUpdateUser=function(n){function t(t){var i=n.call(this,t)||this;return Object.assign(i,t),i}return __extends(t,n),t.prototype.createResponse=function(){return new AdminUserResponse},t.prototype.getTypeName=function(){return"AdminUpdateUser"},t}(AdminUserBase);exports.AdminUpdateUser=AdminUpdateUser;AdminDeleteUser=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new AdminDeleteUserResponse},n.prototype.getTypeName=function(){return"AdminDeleteUser"},n}();exports.AdminDeleteUser=AdminDeleteUser;EvalScript=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return""},n.prototype.getTypeName=function(){return"EvalScript"},n}();exports.EvalScript=EvalScript;DesktopDownloadUrl=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){},n.prototype.getTypeName=function(){return"DesktopDownloadUrl"},n}();exports.DesktopDownloadUrl=DesktopDownloadUrl;Authenticate=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new AuthenticateResponse},n.prototype.getTypeName=function(){return"Authenticate"},n}();exports.Authenticate=Authenticate;AssignRoles=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new AssignRolesResponse},n.prototype.getTypeName=function(){return"AssignRoles"},n}();exports.AssignRoles=AssignRoles;UnAssignRoles=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new UnAssignRolesResponse},n.prototype.getTypeName=function(){return"UnAssignRoles"},n}();exports.UnAssignRoles=UnAssignRoles;Register=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new RegisterResponse},n.prototype.getTypeName=function(){return"Register"},n}();exports.Register=Register;
})();
(function(){
"use strict";function isAdminAuth(n){return n&&n.roles&&n.roles.indexOf("Admin")>=0}function log(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return exports.store.debug&&console.log.apply(console,arguments),t}function openUrl(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return exports.store.desktop?[4,desktop_1.evaluateCode("openUrl('"+n+"')")]:[3,2];case 1:return t.sent(),[3,3];case 2:window.open(n);t.label=3;case 3:return[2]}})})}function sanitizedModel(n){var t={};return Object.keys(n).forEach(function(i){n[i]!==""&&(t[i]=n[i])}),t}function toPropsMap(n){for(var i,r={},t=0;t<n.length;t++)i=n[t],r[i.name]=i;return r}function renderValue(n){return Array.isArray(n)?n.join(", "):typeof n=="undefined"?"":typeof n=="object"?JSON.stringify(n):n+""}function allKeys(n){var t={};return(n===null||n===void 0?void 0:n.length)>0&&n.forEach(function(n){return Object.keys(n).forEach(function(n){return t[n]=n})}),Object.keys(t)}function gridProps(n,t){var i=[],u={},r;return t.forEach(function(n){return u[n.name]=n}),r={},n.forEach(function(n){var t=[];n.forEach(function(n){var i=u[n];i!=null&&(t.push(i),r[n]=n)});t.length>0&&i.push(t)}),t.filter(function(n){return!r[n.name]}).forEach(function(n){return i.push([n])}),i}function initInlineModal(n){var t=document.querySelector(n),i=t.parentElement.getBoundingClientRect();t.style.top=i.top+"px"}function siteExec(n,t){return __awaiter(this,void 0,void 0,function(){var r,i;return __generator(this,function(u){switch(u.label){case 0:return u.trys.push([0,2,,3]),[4,t()];case 1:return r=u.sent(),[2,r];case 2:i=u.sent();log("siteExec",n,i);(i.responseStatus||i).errorCode==="Unauthorized"&&exports.bus.$emit("signout",{slug:n});throw i;case 3:return[2]}})})}function exec(n,t){return __awaiter(this,void 0,void 0,function(){var i;return __generator(this,function(r){switch(r.label){case 0:return r.trys.push([0,2,3,4]),n.loading=!0,n.responseStatus=null,n.success=null,[4,t()];case 1:return[2,r.sent()];case 2:return i=r.sent(),log(i),n.responseStatus=i.responseStatus||(typeof i=="string"?{errorCode:"Error",message:i}:null)||i,n.$emit("error",n.responseStatus),[3,4];case 3:return n.loading=!1,[7];case 4:return[2]}})})}var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},__spreadArrays=this&&this.__spreadArrays||function(){for(var i=0,n=0,r=arguments.length;n<r;n++)i+=arguments[n].length;for(var u=Array(i),f=0,n=0;n<r;n++)for(var e=arguments[n],t=0,o=e.length;t<o;t++,f++)u[f]=e[t];return u},client_2,Roles,logId,decodeBody,EventBus;Object.defineProperty(exports,"__esModule",{value:!0});exports.checkAuth=exports.loadSite=exports.canAccess=exports.bus=exports.exec=exports.siteExec=exports.initInlineModal=exports.gridProps=exports.allKeys=exports.renderValue=exports.getId=exports.toPropsMap=exports.sanitizedModel=exports.editValue=exports.defaultValue=exports.dateFmtHMS=exports.putSiteProxy=exports.postSiteProxy=exports.deleteSiteInvoke=exports.patchSiteInvoke=exports.putSiteInvoke=exports.postSiteInvoke=exports.getSiteInvoke=exports.dtoAsArgs=exports.KeyCodes=exports.argsAsKvps=exports.invokeValue=exports.toInvokeArgs=exports.collapsed=exports.matchesType=exports.isCrud=exports.crudInterfaces=exports.isQuery=exports.openUrl=exports.log=exports.isAdminAuth=exports.store=exports.Roles=exports.client=void 0;var vue_1=require("vue"),client_1=require("@servicestack/client"),dtos_1=require("./dtos"),desktop_1=require("@servicestack/desktop");exports.client=new client_1.JsonServiceClient("/");client_2=require("@servicestack/client");Object.defineProperty(exports,"errorResponse",{enumerable:!0,get:function(){return client_2.errorResponse}});Object.defineProperty(exports,"errorResponseExcept",{enumerable:!0,get:function(){return client_2.errorResponseExcept}});Object.defineProperty(exports,"splitOnFirst",{enumerable:!0,get:function(){return client_2.splitOnFirst}});Object.defineProperty(exports,"toPascalCase",{enumerable:!0,get:function(){return client_2.toPascalCase}});Object.defineProperty(exports,"queryString",{enumerable:!0,get:function(){return client_2.queryString}}),function(n){n.Admin="Admin"}(Roles=exports.Roles||(exports.Roles={}));logId=0;exports.store={debug:global.CONFIG.debug,desktop:global.CONFIG.desktop,hasExcel:global.CONFIG.hasExcel||!1,connect:global.CONFIG.connect,nav:global.CONFIG.nav,userSession:global.CONFIG.auth,userAttributes:client_1.UserAttributes.fromSession(global.CONFIG.auth),sites:[],apps:{},appTypes:{},appSessions:{},appLoading:{},appErrors:{},appDirty:{},appLogEntries:{},getSite:function(n){return this.sites.filter(function(t){return t.slug==n})[0]},getApp:function(n){return exports.store.apps[n]},getSession:function(n){return exports.store.appSessions[n]},hasRole:function(n,t){var i,r;return t=="AllowAnon"?!0:(i=this.getSession(n),!i)?!1:isAdminAuth(i)?!0:t=="AllowAnyUser"?!0:(r=i.roles||[],t&&r.indexOf(t)>=0||!1)},getAppPrefs:function(n){var i,t=(i=exports.store.getSite(n))===null||i===void 0?void 0:i.prefs;return t&&(t.query||(t.query={})),t},getType:function(n,t){if(!t)return null;var i=exports.store.appTypes[n],r=i&&i[t.namespace+"."+t.name]||i["."+t.name];return r||console.warn("Could not find type",t.namespace,t.name),r},getTypeProperties:function(n,t){for(var u=[],i=this.getType(n,t),r;(i===null||i===void 0?void 0:i.properties)!=null;){for(r=0;r<i.properties.length;r++)u.push(i.properties[r]);i=this.getType(n,i.inherits)}return u},hasPlugin:function(n,t){var i,r;return((r=(i=exports.store.getSite(n))===null||i===void 0?void 0:i.plugins)===null||r===void 0?void 0:r.indexOf(t))>=0},isDirty:function(n){return exports.store.appDirty[n]},logInvoke:function(n,t,i){var r=this.appLogEntries[t.slug]||[],u=__spreadArrays([{id:++logId,method:n,invoke:t,response:i}],r);return vue_1.default.set(this.appLogEntries,t.slug,u),i},logProxy:function(n,t,i,r){log("logProxy",n,t,i);var u=this.appLogEntries[t.slug]||[],f=__spreadArrays([{id:++logId,method:n,proxy:t,body:i,response:r}],u);return vue_1.default.set(this.appLogEntries,t.slug,f),r}},function(){return __awaiter(void 0,void 0,void 0,function(){var n,t;return __generator(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),n=exports.store,[4,desktop_1.desktopInfo()];case 1:return n.desktop=i.sent(),log("In Desktop app:",exports.store.desktop),[3,3];case 2:return t=i.sent(),log("Not in Desktop app:",t),[3,3];case 3:return[2]}})})}();exports.isAdminAuth=isAdminAuth;exports.log=log;exports.openUrl=openUrl;exports.isQuery=function(n){var t,i;if((i=(t=n.request.inherits)===null||t===void 0?void 0:t.name)!==null&&i!==void 0)return i.startsWith("QueryDb`")};exports.crudInterfaces=["ICreateDb`1","IUpdateDb`1","IPatchDb`1","IDeleteDb`1"];exports.isCrud=function(n){var t;if((t=n.request.implements)!==null&&t!==void 0)return t.some(function(n){return exports.crudInterfaces.indexOf(n.name)>=0})};exports.matchesType=function(n,t){return n&&t&&n.name==t.name&&(!n.namespace||!t.namespace||n.namespace==t.namespace)};exports.collapsed=function(n,t){var i;return(((i=exports.store.getAppPrefs(n))===null||i===void 0?void 0:i.views)||[]).indexOf(t)==-1};exports.toInvokeArgs=function(n,t){t===void 0&&(t=!0);var i=[];return n?(n.forEach(function(n){return Object.keys(n).forEach(function(r){i.push(r);i.push(t?exports.invokeValue(n[r]):n[r])})}),i):i};exports.invokeValue=function(n){return n.indexOf(",")>=0?n.replace(/,/g,String.fromCharCode(31)):n};exports.argsAsKvps=function(n){for(var i=[],t=0;t<n.length;t+=2)i.push({key:n[t],value:n[t+1]});return i};exports.KeyCodes={UnitSeparator:"\x1f"};exports.dtoAsArgs=function(n){var i=[],r,t;for(r in n)(t=n[r],typeof t!="function")&&(i.push(r),Array.isArray(t)?i.push(t.join(exports.KeyCodes.UnitSeparator)):i.push(""+t));return i};exports.getSiteInvoke=function(n){return __awaiter(void 0,void 0,void 0,function(){return __generator(this,function(){return[2,siteExec(n.slug,function(){return __awaiter(void 0,void 0,void 0,function(){var t,i,r;return __generator(this,function(u){switch(u.label){case 0:return i=(t=exports.store).logInvoke,r=["GET",n],[4,exports.client.get(n)];case 1:return[2,i.apply(t,r.concat([u.sent()]))]}})})})]})})};exports.postSiteInvoke=function(n){return __awaiter(void 0,void 0,void 0,function(){return __generator(this,function(){return[2,siteExec(n.slug,function(){return __awaiter(void 0,void 0,void 0,function(){var t,i,r;return __generator(this,function(u){switch(u.label){case 0:return i=(t=exports.store).logInvoke,r=["POST",n],[4,exports.client.post(n)];case 1:return[2,i.apply(t,r.concat([u.sent()]))]}})})})]})})};exports.putSiteInvoke=function(n){return __awaiter(void 0,void 0,void 0,function(){return __generator(this,function(){return[2,siteExec(n.slug,function(){return __awaiter(void 0,void 0,void 0,function(){var t,i,r;return __generator(this,function(u){switch(u.label){case 0:return i=(t=exports.store).logInvoke,r=["PUT",n],[4,exports.client.put(n)];case 1:return[2,i.apply(t,r.concat([u.sent()]))]}})})})]})})};exports.patchSiteInvoke=function(n){return __awaiter(void 0,void 0,void 0,function(){return __generator(this,function(){return[2,siteExec(n.slug,function(){return __awaiter(void 0,void 0,void 0,function(){return __generator(this,function(){return[2,siteExec(n.slug,function(){return __awaiter(void 0,void 0,void 0,function(){var t,i,r;return __generator(this,function(u){switch(u.label){case 0:return i=(t=exports.store).logInvoke,r=["PATCH",n],[4,exports.client.patch(n)];case 1:return[2,i.apply(t,r.concat([u.sent()]))]}})})})]})})})]})})};exports.deleteSiteInvoke=function(n){return __awaiter(void 0,void 0,void 0,function(){return __generator(this,function(){return[2,siteExec(n.slug,function(){return __awaiter(void 0,void 0,void 0,function(){var t,i,r;return __generator(this,function(u){switch(u.label){case 0:return i=(t=exports.store).logInvoke,r=["DELETE",n],[4,exports.client.delete(n)];case 1:return[2,i.apply(t,r.concat([u.sent()]))]}})})})]})})};decodeBody=function(n){return n==null?null:n instanceof ArrayBuffer||n instanceof Uint8Array?new TextDecoder("utf-8").decode(n):typeof n=="string"?JSON.parse(n):n};exports.postSiteProxy=function(n,t){return __awaiter(void 0,void 0,void 0,function(){var i,r,u,f;return __generator(this,function(e){switch(e.label){case 0:return r=(i=exports.store).logProxy,u=["POST",n,t],f=decodeBody,[4,exports.client.postBody(n,t)];case 1:return[2,r.apply(i,u.concat([f.apply(void 0,[e.sent()])]))]}})})};exports.putSiteProxy=function(n,t){return __awaiter(void 0,void 0,void 0,function(){var i,r,u,f;return __generator(this,function(e){switch(e.label){case 0:return r=(i=exports.store).logProxy,u=["PUT",n,t],f=decodeBody,[4,exports.client.putBody(n,t)];case 1:return[2,r.apply(i,u.concat([f.apply(void 0,[e.sent()])]))]}})})};var zero=function(){return 0},doubleZero=function(){return 0},types={Byte:zero,Int16:zero,Int32:zero,Int64:zero,SByte:zero,UInt16:zero,UInt32:zero,UInt64:zero,Double:doubleZero,Single:doubleZero,Decimal:doubleZero,DateTime:function(){return(new Date).toISOString()},DateTimeOffset:function(){return(new Date).toISOString()},TimeSpan:function(){return"00:00:00"},Guid:function(){return"00000000000000000000000000000000"},Boolean:function(){return!1}};exports.dateFmtHMS=function(n){return n===void 0&&(n=new Date),""+(n.getFullYear()-2e3)+client_1.padInt(n.getMonth()+1)+client_1.padInt(n.getDate())+"-"+client_1.padInt(n.getHours())+client_1.padInt(n.getMinutes())+client_1.padInt(n.getSeconds())};exports.defaultValue=function(n){var t=types[n.type];return t?t():""};exports.editValue=function(n,t){return t};exports.sanitizedModel=sanitizedModel;exports.toPropsMap=toPropsMap;exports.getId=function(n,t){var i=n.properties.find(function(n){return n.isPrimaryKey});return i&&client_1.getField(t,i.name)};exports.renderValue=renderValue;exports.allKeys=allKeys;exports.gridProps=gridProps;exports.initInlineModal=initInlineModal;exports.siteExec=siteExec;exports.exec=exec;EventBus=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.store=exports.store,t}return __extends(t,n),t}(vue_1.default);exports.bus=new EventBus({data:exports.store});exports.canAccess=function(n,t){var r,u,f,e,i,o,s;return t.requiresAuth?(i=exports.store.appSessions[n],!i)?!1:isAdminAuth(i)?!0:(o=i.roles||[],((r=t.requiredRoles)===null||r===void 0?void 0:r.length)>0&&!t.requiredRoles.every(function(n){return o.indexOf(n)>=0}))?!1:((u=t.requiresAnyRole)===null||u===void 0?void 0:u.length)>0&&!t.requiresAnyRole.some(function(n){return o.indexOf(n)>=0})?!1:(s=i.permissions||[],((f=t.requiredPermissions)===null||f===void 0?void 0:f.length)>0&&!t.requiredRoles.every(function(n){return s.indexOf(n)>=0}))?!1:((e=t.requiresAnyPermission)===null||e===void 0?void 0:e.length)>0&&!t.requiresAnyPermission.every(function(n){return s.indexOf(n)>=0})?!1:!0:!0};exports.loadSite=function(n,t){return __awaiter(void 0,void 0,void 0,function(){var u,f,i,r;return __generator(this,function(e){switch(e.label){case 0:if(exports.store.appErrors[n]&&!t)return[2];log("loading site: "+n+"...");u=exports.store.getSite(n);e.label=1;case 1:return(e.trys.push([1,6,7,8]),exports.bus.$emit("appLoading",{slug:n,result:!0}),!!u)?[3,3]:[4,exports.client.get(new dtos_1.GetSites)];case 2:if(i=e.sent(),exports.bus.$emit("sites",i.sites),!i)return exports.bus.$emit("appError",{slug:n,result:new dtos_1.ResponseStatus({errorCode:"NotFound",message:"Site does not exist '"+n+"'"})}),[2];e.label=3;case 3:return(f=exports.store.getApp(n),!!f)?[3,5]:[4,exports.client.get(new dtos_1.GetAppMetadata({slug:n}))];case 4:i=e.sent();exports.bus.$emit("app",i);e.label=5;case 5:return[3,8];case 6:return r=e.sent(),exports.bus.$emit("appError",{slug:n,result:r.responseStatus||r}),[3,8];case 7:return exports.bus.$emit("appLoading",{slug:n,result:!1}),[7];case 8:return[2]}})})};vue_1.default.filter("upper",function(n){if(n!==null&&n!==void 0)return n.toUpperCase()});vue_1.default.filter("datefmt",function(n){return client_1.toDateFmt(n)});exports.bus.$on("sites",function(n){exports.bus.$set(exports.store,"sites",n)});exports.bus.$on("removeSite",function(n){exports.bus.$set(exports.store,"sites",exports.store.sites.filter(function(t){return t.slug!=n}));exports.bus.$delete(exports.store.apps,n);exports.bus.$delete(exports.store.appTypes,n);exports.bus.$delete(exports.store.appSessions,n);exports.bus.$delete(exports.store.appLoading,n);exports.bus.$delete(exports.store.appErrors,n)});exports.bus.$on("app",function(n){var t,u;log("on$app",n.slug,n.result);t=Object.assign({},exports.store.apps);t[n.slug]=n.result;exports.bus.$set(exports.store,"apps",t);var i={},r=n.result.api,f=__spreadArrays(r.types,r.operations.map(function(n){return n.request}),r.operations.filter(function(n){return n.response}).map(function(n){return n.response}));f.forEach(function(n){n.namespace&&(i[n.namespace+"."+n.name]=n);i["."+n.name]=n});u=Object.assign({},exports.store.appTypes);u[n.slug]=i;exports.bus.$set(exports.store,"appTypes",u)});exports.bus.$on("savePrefs",function(n){return __awaiter(void 0,void 0,void 0,function(){var t,i;return __generator(this,function(r){switch(r.label){case 0:return t=n.slug,i=n.callback,log("savePrefs",t),[4,exports.client.post(new dtos_1.SaveSiteAppPrefs({slug:t,appPrefs:exports.store.getAppPrefs(t)}))];case 1:return r.sent(),vue_1.default.delete(exports.store.appDirty,t),i&&i(),[2]}})})});exports.bus.$on("signout",function(n){var t=n.slug;log("signout",t);exports.bus.$emit("appSession",{slug:t,result:null});exports.bus.$emit("signedout")});exports.bus.$on("appSession",function(n){var t=Object.assign({},exports.store.appSessions);t[n.slug]=n.result;exports.bus.$set(exports.store,"appSessions",t);n.result&&exports.bus.$emit("signedin")});exports.bus.$on("appLoading",function(n){var t=Object.assign({},exports.store.appLoading);t[n.slug]=n.result;exports.bus.$set(exports.store,"appLoading",t)});exports.bus.$on("appError",function(n){log("appError",n.slug,n.result);var t=Object.assign({},exports.store.appErrors);t[n.slug]=n.result;exports.bus.$set(exports.store,"appErrors",t)});exports.bus.$on("appPrefs",function(n){var t=n.slug,e=n.request,r=n.query,u,i,f;(log("appPrefs",t,e,r),u=exports.store.sites.findIndex(function(n){return n.slug==t}),i=exports.store.sites[u],i)&&(r&&(f=i.prefs||new dtos_1.AppPrefs({query:{}}),vue_1.default.set(f.query,e,r),vue_1.default.set(i,"prefs",f),vue_1.default.set(exports.store.sites,u,i)),vue_1.default.set(exports.store.appDirty,t,!0),log("isDirty",exports.store.isDirty(t)),exports.bus.$emit("savePrefs",{slug:t}))});exports.checkAuth=function(){return __awaiter(void 0,void 0,void 0,function(){var n,t,i,r;return __generator(this,function(u){switch(u.label){case 0:return u.trys.push([0,2,,3]),t=(n=exports.bus).$emit,i=["signin"],[4,exports.client.post(new dtos_1.Authenticate)];case 1:return t.apply(n,i.concat([u.sent()])),[3,3];case 2:return r=u.sent(),exports.bus.$emit("signout"),[3,3];case 3:return[2]}})})};
})();
(function(){
"use strict";function requiresAuth(n,t,i){index_1.store.userSession&&i()}function requiresRole(n){return function(t,i,r){index_1.store.userSession&&(!index_1.store.userSession.roles||index_1.store.userSession.roles.indexOf(n)<0?r(Routes.Forbidden+"?role="+encodeURIComponent(n)):r())}}var routes;Object.defineProperty(exports,"__esModule",{value:!0});exports.redirect=exports.router=exports.adminUsersRoute=exports.validationRoute=exports.autoQueryRoute=exports.Routes=void 0;var vue_1=require("vue"),vue_router_1=require("vue-router"),index_1=require("./index"),vue_2=require("@servicestack/vue"),Home_1=require("../components/Home"),AutoQuery_1=require("../components/AutoQuery"),Validation_1=require("../components/Validation"),AdminUsers_1=require("../components/AdminUsers"),client_1=require("@servicestack/client"),Routes;(function(n){n.Home="/";n.AutoQuery="/:slug/autoquery";n.Validation="/:slug/validation";n.AdminUsers="/:slug/users";n.Forbidden="/forbidden"})(Routes=exports.Routes||(exports.Routes={}));vue_1.default.use(vue_router_1.default);routes=[{path:Routes.Home,component:Home_1.Home,props:{name:""}},{path:Routes.AutoQuery,component:AutoQuery_1.AutoQuery},{path:Routes.Validation,component:Validation_1.Validation},{path:Routes.AdminUsers,component:AdminUsers_1.AdminUsers},{path:Routes.Forbidden,component:vue_2.Forbidden},{path:"*",redirect:"/"},];exports.autoQueryRoute=function(n,t){return client_1.appendQueryString(Routes.AutoQuery.replace(":slug",n),t)};exports.validationRoute=function(n,t){return client_1.appendQueryString(Routes.Validation.replace(":slug",n),t)};exports.adminUsersRoute=function(n,t){return client_1.appendQueryString(Routes.AdminUsers.replace(":slug",n),t)};exports.router=new vue_router_1.default({mode:"history",linkActiveClass:"active",routes:routes});exports.default=exports.router;exports.redirect=function(n){index_1.log("redirect",n);var t=n.indexOf("://")>=0;t?location.href=n:exports.router.push({path:n})};
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u};Object.defineProperty(exports,"__esModule",{value:!0});exports.App=void 0;var vue_1=require("vue"),vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("./shared"),App=function(n){function t(){return n!==null&&n.apply(this,arguments)||this}return __extends(t,n),Object.defineProperty(t.prototype,"store",{get:function(){return shared_1.store},enumerable:!1,configurable:!0}),__decorate([vue_property_decorator_1.Component({template:"<div>\n <router-view><\/router-view>\n <\/div>"})],t)}(vue_1.default);exports.App=App;exports.default=App;
})();
(function(){
"use strict";var vue_1,vue_2;Object.defineProperty(exports,"__esModule",{value:!0});require("./app.scss");require("es6-shim");vue_1=require("vue");vue_2=require("@servicestack/vue");vue_1.default.use(vue_2.default);var App_1=require("./App"),router_1=require("./shared/router"),app=new vue_1.default({el:"#app",render:function(n){return n(App_1.App)},router:router_1.router});
})();
{{#raw}}
<div id="app">
<no-plugin :slug="slug" plugin="autoquery" />
<div class="container">
<div class="row p-4">
<div id="content">
<router-view></router-view>
</div>
</div>
</div>
</div>
{{/raw}}
TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAEDAKJX0q0AAAAAAAAAAOAAIgALATAAAJYAAAAIAAAAAAAAqrUAAAAgAAAAwAAAAABAAAAgAAAAAgAABAAAAAAAAAAEAAAAAAAAAAAAAQAAAgAAAAAAAAMAYIUAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAFe1AABPAAAAAMAAADwFAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAwAAACYtAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAsJUAAAAgAAAAlgAAAAIAAAAAAAAAAAAAAAAAACAAAGAucnNyYwAAADwFAAAAwAAAAAYAAACYAAAAAAAAAAAAAAAAAABAAABALnJlbG9jAAAMAAAAAOAAAAACAAAAngAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAACLtQAAAAAAAEgAAAACAAUAdEIAACRyAAABAAAAFQAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4CKBQAAAoqagIoFQAACgIYAv4GAwAABnMWAAAKKBcAAAoqABMwBgCLAAAAAQAAEQLQXwAAASgYAAAKcgEAAHAoGQAACgoG0BoAAAooGwAACnRlAAABKBwAAAoXjRAAAAElFgaiKAEAACsoAgAAKygDAAArJgLQXwAAASgYAAAKcgEAAHAoGQAACgoG0CAAAAooGwAACnRlAAABKBwAAAoXjRAAAAElFgaiKAEAACsoAgAAKygDAAArJioGKgAAABMwBgB4AAAAAgAAEQNvIQAACgoDbyIAAAp+VgAABCUtFyZ+VQAABP4G8gAABnMjAAAKJYBWAAAEGo1tAAABJRYGcyQAAAqiJRcGcyUAAAqiJRgGcyYAAAqiJRkGcycAAAqiFHMoAAAKbykAAAoDbyIAAApzKgAACm8pAAAKA28EAAArKh4CKCwAAAoqHgJ7AQAABCoiAgN9AQAABCoeAnsCAAAEKiICA30CAAAEKh4CewMAAAQqIgIDfQMAAAQqHgIoLQAACioAGzADAGIAAAADAAARKC4AAAoDby8AAAoKBnUiAAABCwYEbzAAAAooMQAACnQFAAACDAgEFCgyAAAKbwgAAAYIA28zAAAKbwoAAAYIKDQAAApzNQAACm8MAAAGBghvNgAACt4KBywGB283AAAK3CoAAAEQAAACABMARFcACgAAAAAeAig4AAAKKp4DflgAAAQlLRcmflcAAAT+BvUAAAZzOQAACiWAWAAABCgFAAArJioTMAkAMgAAAAQAABEDKAYAACsKBig8AAAKAgZyBQAAcHIlAABwcjsAAHAXjX0AAAElFn49AAAKoigTAAAGKloDKAcAACtvPwAACnMPAAAGb0AAAAoqAAAAEzAEADIAAAAFAAARAwRvQQAACi0ocw0AAAYlBG9CAAAKJQVvQwAACgoDBg4EKEQAAAoLAwcOBRQoRQAACioeAigsAAAKKjICKBYAAAYoRgAACipGAihHAAAKKAgAACtvSQAACioeAigsAAAKKgYqtgQoSgAACiwHAyhLAAAKJgNzKAAABiUCKEwAAApzTQAACm9OAAAKKE8AAAomKh4CKFAAAAoqHgJ7BAAABCoiAgN9BAAABCoeAnsFAAAEKiICA30FAAAEKh4CewYAAAQqIgIDfQYAAAQqHgJ7BwAABCoiAgN9BwAABCoeAnsIAAAEKiICA30IAAAEKh4CKCwAAAoqCgMqHgIoLAAACiqSAnJNAABwF42MAAABJRbQIAAAAigYAAAKb1EAAAqiKFIAAAoqAAATMAYArgAAAAAAAAAXKFMAAAoCc1QAAAolAihVAAAKcnUAAHACKFYAAAooVwAACm8JAAArb1kAAAolF29aAAAKJRdvWwAACm9cAAAKAihdAAAKb14AAAosUAIXjX0AAAElFnKBAABwom8KAAArAheNfQAAASUWcqkAAHCibwsAACsCF419AAABJRZy2wAAcKJvDAAAKwIXjX0AAAElFnL/AABwom8NAAArAihgAAAKc2EAAApvKQAACioAABMwBgDYAAAABgAAEQNvIQAACnJ1AABwAyhiAAAKKFcAAApvCQAAKwoDbyIAAApzYwAACiUXc2QA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YwCKDIAEYwCKDIEEYwCKDIMEYwCKDKEEYwCKDKMEYwCKDKkEewCmDcEEYwCKDMMEYwCKDMkEewC3DeEEYwCKDOMEYwCKDOkEewDIDQEFYwCKDAMFYwCKDAkFewCmDSEFYwCKDCMFYwCKDCkFewC3DUEFYwCKDEMFYwCKDEkFewDIDWEFYwCKDGMFYwCKDIEFYwCKDKAFYwCKDKEFYwCKDMAFYwCKDMEFYwCKDOEFYwCKDAAGYwCKDAEGYwCKDCAGYwCKDCEGYwCKDEAGYwCKDEEGYwCKDGAGYwCKDGEGYwCKDIAGYwCKDIEGYwCKDKAGYwCKDKEGYwCKDMEGYwCKDMkGewDZDeAGYwCKDOEGYwCKDAAHYwCKDAEHYwCKDCEHYwCKDEEHYwCKDGAHYwCKDGEHYwCKDIAHYwCKDIEHYwCKDKAHYwCKDKEHYwCKDMAHYwCKDMEHYwCKDOEHYwCKDAAIYwCKDAEIYwCKDCAIYwCKDEAIYwCKDEEIYwCKDGAIYwCKDGEIYwCKDIEIYwCKDKAIYwCKDKEIYwCKDMAIYwCKDMEIYwCKDOAIYwCKDOEIYwCKDAAJYwCKDAEJYwCKDCAJYwCKDCEJYwCKDEAJYwCKDEEJYwCKDGAJYwCKDGEJYwCKDIAJYwCKDIEJYwCKDKEJYwCKDMAJYwCKDMEJYwCKDOAJYwCKDOEJYwCKDAAKYwCKDAEKYwCKDCAKYwCKDCEKYwCKDGAKYwCKDIAKYwCKDKAKYwCKDMAKYwCKDOAKYwCKDAALYwCKDCALYwCKDEALYwCKDGALYwCKDIALYwCKDKALYwCKDMALYwCKDOALYwCKDAAMYwCKDCAMYwCKDEAMYwCKDGAMYwCKDIAMYwCKDKAMYwCKDMAMYwCKDOAMYwCKDAANYwCKDCANYwCKDEANYwCKDGANYwCKDIANYwCKDMANYwCKDOANYwCKDAAOYwCKDCAOYwCKDEAOYwCKDGAOYwCKDKAOYwCKDMAOYwCKDOAOYwCKDAAPYwCKDCAPYwCKDEAPYwCKDGAPYwCKDIAPYwCKDMAPYwCKDOAPYwCKDAAQYwCKDCAQYwCKDGAQYwCKDIAQYwCKDKAQYwCKDMAQYwCKDOAQYwCKDAARYwCKDCARYwCKDEARYwCKDGARYwCKDIARYwCKDKARYwCKDMARYwCKDOARYwCKDAASYwCKDCAS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XAQ3AZ8EOQGrBE0B2QRPAZ8EUQGfBFUBCgVVARwFZQFcBZsBNgapAXsG2wCMBiUBNga1AcQGOQFcBdsB5AABAWQH/wHhB/8BIgj/AVII/wGFCNsArwgAAAA8PjlfXzBfMAA8Q29uZmlndXJlPmJfXzBfMAA8UHJlQ29uZmlndXJlPmJfXzBfMAA8LmN0b3I+Yl9fMF8wADw+Y19fRGlzcGxheUNsYXNzMF8wADw+Y19fRGlzcGxheUNsYXNzMTFfMAA8PjlfXzFfMAA8Q29uZmlndXJlPmJfXzFfMAA8PjlfXzE5XzAAPENyZWF0ZVNpdGVTZXR0aW5ncz5iX18xOV8wADw+Y19fRGlzcGxheUNsYXNzOV8wADxHZXRTaXRlPmJfXzAAPE9uU2F2ZT5iX18wADxDcmVhdGVTaXRlQ2xpZW50PmJfXzAAPD45X18wXzEAPFByZUNvbmZpZ3VyZT5iX18wXzEAPD45X18xOV8xADxDcmVhdGVTaXRlU2V0dGluZ3M+Yl9fMTlfMQA8Q3JlYXRlU2l0ZUNsaWVudD5iX18xADw+dV9fMQBGdW5jYDEATnVsbGFibGVgMQBJRW51bWVyYWJsZWAxAElPcmRlcmVkRW51bWVyYWJsZWAxAFRhc2tgMQBSZWFkT25seVNwYW5gMQBFeHByZXNzaW9uYDEAQWN0aW9uYDEASUNvbGxlY3Rpb25gMQBJUmV0dXJuYDEASUVxdWFsaXR5Q29tcGFyZXJgMQBUYXNrQXdhaXRlcmAxAElWYWxpZGF0b3JgMQBBYnN0cmFjdFZhbGlkYXRvcmAxAElFbnVtZXJhdG9yYDEASGFzaFNldGAxAExpc3RgMQBSZWFkT25seU1lbW9yeWAxAEludDMyADw+OV9fMTlfMgA8Q3JlYXRlU2l0ZVNldHRpbmdzPmJfXzE5XzIAPHFzPjVfXzIAPD51X18yAEZ1bmNgMgBJUnVsZUJ1aWxkZXJJbml0aWFsYDIASVJ1bGVCdWlsZGVyYDIAS2V5VmFsdWVQYWlyYDIASVJ1bGVCdWlsZGVyT3B0aW9uc2AyAENvbmN1cnJlbnREaWN0aW9uYXJ5YDIASW5NZW1vcnlBdXRoUmVwb3NpdG9yeWAyADx3ZWJSZXE+NV9fMwA8PnVfXzMAPHJlcXVlc3RTdHJlYW0+NV9fNAA8PjdfX3dyYXA0ADw+N19fd3JhcDUAPEFueT5kX182ADxBbnk+ZF9fNwBUb1V0ZjgAPD45ADxNb2R1bGU+AFNlcnZpY2VTdGFjay5JTwBTeXN0ZW0uSU8ATGFtYmRhAEluaXRTY2hlbWEAZ2V0X01ldGFkYXRhAHNldF9NZXRhZGF0YQBHZXRBcHBNZXRhZGF0YQBnZXRfTWV0YQBzZXRfTWV0YQBTZXJ2aWNlU3RhY2suV2ViAGdldF9WZXJiADw+YwBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYwBEaXNwb3NlQXN5bmMAV3JpdGVBc3luYwBHZXRSZXF1ZXN0U3RyZWFtQXN5bmMAUHJveHlSZXF1ZXN0QXN5bmMAZ2V0X1VzZXJBdXRoSWQAZ2V0X1Nlc3Npb25JZABzZXRfU2Vzc2lvbklkAEdldFNlc3Npb25JZABTZXRTZXNzaW9uSWQAQWRkAGdldF9Mb2FkZWQAQmVmb3JlUGx1Z2luc0xvYWRlZABBZnRlclBsdWdpbnNMb2FkZWQAVG9VcmxFbmNvZGVkAE9uQXV0aGVudGljYXRlZABBd2FpdFVuc2FmZU9uQ29tcGxldGVkAGdldF9Jc0NvbXBsZXRlZABTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQASVJldHVyblZvaWQAPE1ldGFkYXRhPmtfX0JhY2tpbmdGaWVsZAA8TWV0YT5rX19CYWNraW5nRmllbGQAPFNlc3Npb25JZD5rX19CYWNraW5nRmllbGQAPFNlYXJjaEZpZWxkPmtfX0JhY2tpbmdGaWVsZAA8UGFzc3dvcmQ+a19fQmFja2luZ0ZpZWxkADxSZW1lbWJlck1lPmtfX0JhY2tpbmdGaWVsZAA8VXNlVG9rZW5Db29raWU+a19fQmFja2luZ0ZpZWxkADxUYWtlPmtfX0JhY2tpbmdGaWVsZAA8TmFtZT5rX19CYWNraW5nRmllbGQAPFVzZXJOYW1lPmtfX0JhY2tpbmdGaWVsZAA8c2NvcGU+a19fQmFja2luZ0ZpZWxkADxTZWFyY2hUeXBlPmtfX0JhY2tpbmdGaWVsZAA8QXVkaXRCYXNlPmtfX0JhY2tpbmdGaWVsZAA8SWRSZXNwb25zZT5rX19CYWNraW5nRmllbGQAPFN0cmluZ1Jlc3BvbnNlPmtfX0JhY2tpbmdGaWVsZAA8U3RyaW5nc1Jlc3BvbnNlPmtfX0JhY2tpbmdGaWVsZAA8RW1wdHlSZXNwb25zZT5rX19CYWNraW5nRmllbGQAPEFkZGVkRGF0ZT5rX19CYWNraW5nRmllbGQAPExhc3RMb2dpbkRhdGU+a19fQmFja2luZ0ZpZWxkADxBY2Nlc3NEYXRlPmtfX0JhY2tpbmdGaWVsZAA8U3RhdGU+a19fQmFja2luZ0ZpZWxkADxTbHVnPmtfX0JhY2tpbmdGaWVsZAA8UmVtb3ZlU2x1Zz5rX19CYWNraW5nRmllbGQAPEF1dGg+a19fQmFja2luZ0ZpZWxkADxQcm9maWxlVXJsPmtfX0JhY2tpbmdGaWVsZAA8QmFzZVVybD5rX19CYWNraW5nRmllbGQAPEFkZEJhc2VVcmw+a19fQmFja2luZ0ZpZWxkADxJY29uVXJsPmtfX0JhY2tpbmdGaWVsZAA8UmVxdWVzdFN0cmVhbT5rX19CYWNraW5nRmllbGQAPEJlYXJlclRva2VuPmtfX0JhY2tpbmdGaWVsZAA8QWNjZXNzVG9rZW4+a19fQmFja2luZ0ZpZWxkADxvYXV0aF90b2tlbj5rX19CYWNraW5nRmllbGQAPERlc2NyaXB0aW9uPmtfX0JhY2tpbmdGaWVsZAA8TGFzdExvZ2luSXA+a19fQmFja2luZ0ZpZWxkADxTa2lwPmtfX0JhY2tpbmdGaWVsZAA8cHJvdmlkZXI+a19fQmFja2luZ0ZpZWxkADxvYXV0aF92ZXJpZmllcj5rX19CYWNraW5nRmllbGQAPFVzZXI+a19fQmFja2luZ0ZpZWxkADxGaWVsZHM+a19fQmFja2luZ0ZpZWxkADxTaXRlcz5rX19CYWNraW5nRmllbGQAPFByZWZzPmtfX0JhY2tpbmdGaWVsZAA8QXBwUHJlZnM+a19fQmFja2luZ0ZpZWxkADxBcmdzPmtfX0JhY2tpbmdGaWVsZAA8UGx1Z2lucz5rX19CYWNraW5nRmllbGQAPEZpbHRlcnM+a19fQmFja2luZ0ZpZWxkADxSZXNwb25zZVN0YXR1cz5rX19CYWNraW5nRmllbGQAPFZpZXdzPmtfX0JhY2tpbmdGaWVsZAA8QXV0aFNlY3JldD5rX19CYWNraW5nRmllbGQAPEFjY2Vzc1Rva2VuU2VjcmV0PmtfX0JhY2tpbmdGaWVsZAA8UmVzdWx0PmtfX0JhY2tpbmdGaWVsZAA8UmVxdWVzdD5rX19CYWNraW5nRmllbGQAPFNlYXJjaFRleHQ+a19fQmFja2luZ0ZpZWxkADxPcmRlckJ5PmtfX0JhY2tpbmdGaWVsZAA8UXVlcnk+a19fQmFja2luZ0ZpZWxkAGdldF9TZWFyY2hGaWVsZABzZXRfU2VhcmNoRmllbGQAQnVpbGQAQXBwZW5kAE5vdEZvdW5kAGdldF9QYXNzd29yZABzZXRfUGFzc3dvcmQAZ2V0X0NvbmZpcm1QYXNzd29yZABwYXNzd29yZABnZXRfUmVtZW1iZXJNZQBzZXRfUmVtZW1iZXJNZQBTdHVkaW8uU2VydmljZUludGVyZmFjZQBSZXBsYWNlAElTZXJ2aWNlAGF1dGhTZXJ2aWNlAFJlZ2lzdGVyU2VydmljZQBHZXRWYWxpZGF0aW9uUnVsZXNTZXJ2aWNlAE1vZGlmeVZhbGlkYXRpb25SdWxlc1NlcnZpY2UARXhwb3J0VHlwZXNTZXJ2aWNlAEFkbWluVXNlcnNTZXJ2aWNlAEdldENydWRFdmVudHNTZXJ2aWNlAEluc3RhbmNlAGdldF9EZWJ1Z01vZGUAc2V0X0RlYnVnTW9kZQBzZXRfU3RyaWN0TW9kZQBVcmxEZWNvZGUAVXJsRW5jb2RlAFJldHVybkFuZEZyZWUAU2FmZQBVc2VEZXZlbG9wZXJFeGNlcHRpb25QYWdlAGdldF9NZXNzYWdlAFN0cmluZ0J1aWxkZXJDYWNoZQBnZXRfVXNlVG9rZW5Db29raWUAc2V0X1VzZVRva2VuQ29va2llAGdldF9UYWtlAHNldF9UYWtlAFNpdGVJbnZva2UARW51bWVyYWJsZQBJRGlzcG9zYWJsZQBJQXN5bmNEaXNwb3NhYmxlAFJ1bnRpbWVNZXRob2RIYW5kbGUAUnVudGltZVR5cGVIYW5kbGUAR2V0TWV0aG9kRnJvbUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBGaWxlAHNldF9BY2Nlc3NSb2xlAGdldF9OYW1lAHNldF9OYW1lAGdldF9TZXJ2aWNlTmFtZQByZXF1ZXN0RHRvTmFtZQBTYWZlVmFyTmFtZQBnZXRfVXNlck5hbWUAc2V0X1VzZXJOYW1lAEdldFVzZXJBdXRoQnlVc2VyTmFtZQBnZXRfRGlzcGxheU5hbWUAc2V0X0Rpc3BsYXlOYW1lAEdldERpcmVjdG9yeU5hbWUAbmFtZQBnZXRfU2NoZW1lAHNldF9TY2hlbWUAc2V0X1RhcmdldFNjaGVtZQBEYXRlVGltZQBTeXN0ZW0uUnVudGltZQBDb21iaW5lAElBc3luY1N0YXRlTWFjaGluZQBTZXRTdGF0ZU1hY2hpbmUAc3RhdGVNYWNoaW5lAEpzQ29uZmlnU2NvcGUAQ3JlYXRlSnNTY29wZQBnZXRfc2NvcGUAc2V0X3Njb3BlAFZhbHVlVHlwZQBnZXRfU2VhcmNoVHlwZQBzZXRfU2VhcmNoVHlwZQBzZXRfQ29udGVudFR5cGUATWljcm9zb2Z0LkFzcE5ldENvcmUAUHJlQ29uZmlndXJlAEhvdFJlbG9hZEZlYXR1cmUAQXV0aEZlYXR1cmUAU2Vzc2lvbkZlYXR1cmUAUmVnaXN0cmF0aW9uRmVhdHVyZQBEZXNrdG9wRmVhdHVyZQBTaGFycFBhZ2VzRmVhdHVyZQBDYXB0dXJlAE1ldGhvZEJhc2UASVNlcnZpY2VCYXNlAGdldF9BdWRpdEJhc2UAc2V0X0F1ZGl0QmFzZQBTZXJ2aWNlQ2xpZW50QmFzZQBBcHBIb3N0QmFzZQBnZXRfT3JkaW5hbElnbm9yZUNhc2UASVJlc3BvbnNlAGdldF9SZXNwb25zZQBHZXRBcHBNZXRhZGF0YVJlc3BvbnNlAEh0dHBXZWJSZXNwb25zZQBnZXRfSWRSZXNwb25zZQBzZXRfSWRSZXNwb25zZQBBdXRoZW50aWNhdGVSZXNwb25zZQBnZXRfU3RyaW5nUmVzcG9uc2UAc2V0X1N0cmluZ1Jlc3BvbnNlAE1vZGlmeUNvbm5lY3Rpb25SZXNwb25zZQBQcm94eVRvUmVzcG9uc2UASUh0dHBSZXNwb25zZQBHZXRTaXRlc1Jlc3BvbnNlAGdldF9TdHJpbmdzUmVzcG9uc2UAc2V0X1N0cmluZ3NSZXNwb25zZQBnZXRfRW1wdHlSZXNwb25zZQBzZXRfRW1wdHlSZXNwb25zZQBEaXNwb3NlAFRyeVBhcnNlAGdldF9BZGRlZERhdGUAc2V0X0FkZGVkRGF0ZQBnZXRfTGFzdExvZ2luRGF0ZQBzZXRfTGFzdExvZ2luRGF0ZQBnZXRfQWNjZXNzRGF0ZQBzZXRfQWNjZXNzRGF0ZQBTaXRlQXV0aGVudGljYXRlAEFsbG9jYXRlAENyZWF0ZQBnZXRfU3RhdGUAc2V0X1N0YXRlADw+MV9fc3RhdGUAR2V0U2l0ZQBJbml0U2l0ZQBBc3NlcnRTaXRlAHNpdGUAQ29tcGlsZXJHZW5lcmF0ZWRBdHRyaWJ1dGUARGVidWdnYWJsZUF0dHJpYnV0ZQBBc3NlbWJseVRpdGxlQXR0cmlidXRlAEFzeW5jU3RhdGVNYWNoaW5lQXR0cmlidXRlAFJvdXRlQXR0cmlidXRlAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBEZWJ1Z2dlckhpZGRlbkF0dHJpYnV0ZQBFeHRlbnNpb25BdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0ZQBBc3NlbWJseUluZm9ybWF0aW9uYWxWZXJzaW9uQXR0cmlidXRlAEFzc2VtYmx5Q29uZmlndXJhdGlvbkF0dHJpYnV0ZQBEYXRhTWVtYmVyQXR0cmlidXRlAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUARGF0YUNvbnRyYWN0QXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAZ2V0X1ZhbHVlAFRyeUdldFZhbHVlAHZhbHVlAE9uU2F2ZQBSZXNvbHZlAFRyeVJlbW92ZQBJbmRleE9mAGdldF9TZXNzaW9uQmFnAGdldF9Db25maWcASnNDb25maWcAU2V0Q29uZmlnAEhvc3RDb25maWcAUHJveHlDb25maWcAU3lzdGVtLlRocmVhZGluZwBPcmRlckJ5RGVzY2VuZGluZwBTZXJ2aWNlU3RhY2suQ2FjaGluZwBTeXN0ZW0uUnVudGltZS5WZXJzaW9uaW5nAHNldF9BZGRSZWRpcmVjdFBhcmFtc1RvUXVlcnlTdHJpbmcAU3Vic3RyaW5nAE1pY3Jvc29mdC5Bc3BOZXRDb3JlLkhvc3RpbmcATWljcm9zb2Z0LkV4dGVuc2lvbnMuSG9zdGluZwBTaXRlU2V0dGluZwBnZXRfU2x1ZwBzZXRfU2x1ZwBnZXRfUmVtb3ZlU2x1ZwBzZXRfUmVtb3ZlU2x1ZwBVcmxGcm9tU2x1ZwBVcmxUb1NsdWcAc2x1ZwBFYWNoAEdldEFwcFBhdGgAR2V0Rm9sZGVyUGF0aABHZXRBcHBTZXR0aW5nc1BhdGgAZ2V0X0xlbmd0aABDb21iaW5lV2l0aABTdGFydHNXaXRoAFNlcnZpY2VTdGFjay5BdXRoAGdldF9BdXRoAHNldF9BdXRoAEFkZEJhc2ljQXV0aABDb25maWd1cmVBdXRoAElVc2VyQXV0aABDcmVhdGVVc2VyQXV0aABTYXZlVXNlckF1dGgAR2V0VXNlckF1dGgAVXJpAHVyaQBzZXRfRW5hYmxlU3BhRmFsbGJhY2sAVXNlU2VydmljZVN0YWNrAGdldF9UYXNrAFZhbHVlVGFzawBTdHVkaW8uU2VydmljZU1vZGVsAFN5c3RlbS5Db21wb25lbnRNb2RlbABzZXRfRW1haWwAZW1haWwAU3R1ZGlvLmRsbABnZXRfUHJvZmlsZVVybABzZXRfUHJvZmlsZVVybABHZXRQcm9maWxlVXJsAGdldF9CYXNlVXJsAHNldF9CYXNlVXJsAGdldF9BZGRCYXNlVXJsAHNldF9BZGRCYXNlVXJsAGJhc2VVcmwAR2V0U3RyaW5nRnJvbVVybABHZXRKc29uRnJvbVVybABnZXRfSWNvblVybABzZXRfSWNvblVybABDcmVhdGVTaXRlUmVxdWVzdFVybAB1cmwAZ2V0X1JlcXVlc3RTdHJlYW0Ac2V0X1JlcXVlc3RTdHJlYW0ASVJlcXVpcmVzUmVxdWVzdFN0cmVhbQBQcm9ncmFtAGdldF9JdGVtAHNldF9JdGVtAFN5c3RlbS5JTy5GaWxlU3lzdGVtAFRyaW0AQ2FuY2VsbGF0aW9uVG9rZW4AZ2V0X0JlYXJlclRva2VuAHNldF9CZWFyZXJUb2tlbgBBZGRCZWFyZXJUb2tlbgBnZXRfQWNjZXNzVG9rZW4Ac2V0X0FjY2Vzc1Rva2VuAGdldF9vYXV0aF90b2tlbgBzZXRfb2F1dGhfdG9rZW4ATWFpbgBzZXRfRG9tYWluAElQbHVnaW4ASVByZUluaXRQbHVnaW4ASVBvc3RJbml0UGx1Z2luAEFzc2VydFBsdWdpbgBTZXJ2aWNlU3RhY2suQWRtaW4ASVNlc3Npb24AU2l0ZVNlc3Npb24Ac2l0ZVNlc3Npb24ASUF1dGhTZXNzaW9uAEF1dGhVc2VyU2Vzc2lvbgBDdXN0b21Vc2VyU2Vzc2lvbgBNZW1iZXJFeHByZXNzaW9uAFBhcmFtZXRlckV4cHJlc3Npb24Ac2Vzc2lvbgBTZXJ2aWNlU3RhY2suVmFsaWRhdGlvbgBTZXJ2aWNlU3RhY2suRmx1ZW50VmFsaWRhdGlvbgBTZXJ2aWNlU3RhY2suQ29uZmlndXJhdGlvbgBNaWNyb3NvZnQuRXh0ZW5zaW9ucy5Db25maWd1cmF0aW9uAElDb25maWd1cmF0aW9uAGdldF9Db25maWd1cmF0aW9uAFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24AQWN0aW9uAE1pY3Jvc29mdC5FeHRlbnNpb25zLkRlcGVuZGVuY3lJbmplY3Rpb24AU3lzdGVtLlJlZmxlY3Rpb24ASVNlcnZpY2VDb2xsZWN0aW9uAE5hbWVWYWx1ZUNvbGxlY3Rpb24AU3lzdGVtLk5ldC5XZWJIZWFkZXJDb2xsZWN0aW9uAE1vZGlmeUNvbm5lY3Rpb24AQXJndW1lbnROdWxsRXhjZXB0aW9uAFNldEV4Y2VwdGlvbgBBcmd1bWVudEV4Y2VwdGlvbgBnZXRfRGVzY3JpcHRpb24Ac2V0X0Rlc2NyaXB0aW9uAGdldF9TZXJ2aWNlRGVzY3JpcHRpb24AU2VydmljZVN0YWNrLkNvbW1vbgBBbGxvd0Fub24ARnJvbUpzb24AVG9Kc29uAEluZGVudEpzb24AU3RyaW5nQ29tcGFyaXNvbgBBZGRTaW5nbGV0b24ASVJldHVybgBSdW4AQ29udmVydFRvAEFwcGx5VG8ATWV0aG9kSW5mbwBTaXRlSW5mbwBzaXRlSW5mbwBFeGNlcHRpb25EaXNwYXRjaEluZm8AZ2V0X1BhdGhJbmZvAEF1dGhJbmZvAGF1dGhJbmZvAFBsdWdpbkluZm8AQXBwSW5mbwBEaXJlY3RvcnlJbmZvAFN0dWRpbwBhdXRoUmVwbwBkdG8AZ2V0X0xhc3RMb2dpbklwAHNldF9MYXN0TG9naW5JcABNYXAAZ2V0X1NraXAAc2V0X1NraXAAU2VydmljZVN0YWNrLkRlc2t0b3AAZ2V0X0FwcABhcHAAVXNlTW9kdWxhclN0YXJ0dXAAcmVxAFN5c3RlbS5MaW5xAEZ1bnEAQ2hhcgBJU2VydmljZVByb3ZpZGVyAElWaXJ0dWFsUGF0aFByb3ZpZGVyAElBdXRoUHJvdmlkZXIATWV0YUF1dGhQcm92aWRlcgBHb29nbGVBdXRoUHJvdmlkZXIATWljcm9zb2Z0R3JhcGhBdXRoUHJvdmlkZXIARmFjZWJvb2tBdXRoUHJvdmlkZXIAQ3JlZGVudGlhbHNBdXRoUHJvdmlkZXIATWVtb3J5UHJvdmlkZXIAZ2V0X3Byb3ZpZGVyAHNldF9wcm92aWRlcgBNaWNyb3NvZnQuQXNwTmV0Q29yZS5CdWlsZGVyAEFzeW5jVGFza01ldGhvZEJ1aWxkZXIAU3RyaW5nQnVpbGRlcgBJQXBwbGljYXRpb25CdWlsZGVyAENyZWF0ZURlZmF1bHRCdWlsZGVyAElXZWJIb3N0QnVpbGRlcgA8PnRfX2J1aWxkZXIAU3BlY2lhbEZvbGRlcgBnZXRfb2F1dGhfdmVyaWZpZXIAc2V0X29hdXRoX3ZlcmlmaWVyAFByb3h5RmVhdHVyZUhhbmRsZXIAc2V0X0RhdGVIYW5kbGVyAENvbnRhaW5lcgBjb250YWluZXIAU3RyaW5nQ29tcGFyZXIAZ2V0X1VzZXIAc2V0X1VzZXIAQ3JlYXRlVXNlcgBBcHBVc2VyAHVzZXIAUGFyYW1ldGVyAFZhbHVlVGFza0F3YWl0ZXIAR2V0QXdhaXRlcgBzZXRfUmVxdWVzdEZpbHRlcgBSZWdpc3RlcgBJUmVzb2x2ZXIAU2VydmljZVN0YWNrLlNlcnZlcgBUeXBlU2VyaWFsaXplcgBSdWxlRm9yAEh0dHBFcnJvcgBDdXN0b21SZWdpc3RyYXRpb25WYWxpZGF0b3IASUVudW1lcmF0b3IAR2V0RW51bWVyYXRvcgAuY3RvcgAuY2N0b3IAUmVnaXN0ZXJBcwBNaWNyb3NvZnQuQXNwTmV0Q29yZS5EaWFnbm9zdGljcwBTeXN0ZW0uRGlhZ25vc3RpY3MAZ2V0X0ZpZWxkcwBzZXRfRmllbGRzAEtleXdvcmRzAFNlcnZpY2VTdGFjay5JbnRlcmZhY2VzAElDb25maWd1cmVTZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5FeGNlcHRpb25TZXJ2aWNlcwBTdHVkaW9TZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzAHNlcnZpY2VzAERlYnVnZ2luZ01vZGVzAHNldF9Vc2VTZWN1cmVDb29raWVzAElWaXJ0dWFsRmlsZXMAZ2V0X1ZpcnR1YWxGaWxlcwBzZXRfVmlydHVhbEZpbGVzAEFzc2lnblJvbGVzAHJvbGVzAFJvbGVOYW1lcwBTdHVkaW8uU2VydmljZU1vZGVsLlR5cGVzAEV4cG9ydFR5cGVzAENvbmZpZ3VyZVNoYXJwQXBwRmVhdHVyZXMAZ2V0X1NpdGVzAHNldF9TaXRlcwBHZXRTaXRlcwBnZXRfVmFsdWVzAFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uUHJpbWl0aXZlcwBnZXRfUHJlZnMAc2V0X1ByZWZzAGdldF9BcHBQcmVmcwBzZXRfQXBwUHJlZnMAU2F2ZVNpdGVBcHBQcmVmcwBHZXRTaXRlQXBwUHJlZnMAUXVlcnlQcmVmcwBwcmVmcwBzZXRfUHJveHlDb25maWdzAENyZWF0ZVNpdGVTZXR0aW5ncwBTYXZlU2V0dGluZ3MASUFwcFNldHRpbmdzAGdldF9BcHBTZXR0aW5ncwBzZXRfQXBwU2V0dGluZ3MATG9hZEFwcFNldHRpbmdzAE5ldENvcmVBcHBTZXR0aW5ncwBnZXRfQXJncwBzZXRfQXJncwBhcmdzADw+NF9fdGhpcwBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzAFNldENyZWRlbnRpYWxzAFVzZXJBdXRoRGV0YWlscwBTaXRlVXRpbHMAQXV0b01hcHBpbmdVdGlscwBQYXRoVXRpbHMASHR0cFV0aWxzAFdlYlJlcXVlc3RVdGlscwBnZXRfSW1wb3J0UGFyYW1zAFVybFBhdGhEZWxpbXMASUF1dGhUb2tlbnMAdG9rZW5zAENvbnRhaW5zAGdldF9QbHVnaW5zAHNldF9QbHVnaW5zAFNlcnZpY2VDb2xsZWN0aW9uU2VydmljZUV4dGVuc2lvbnMARGV2ZWxvcGVyRXhjZXB0aW9uUGFnZUV4dGVuc2lvbnMARW51bWVyYWJsZUV4dGVuc2lvbnMAU3RyaW5nRXh0ZW5zaW9ucwBBdXRoU2Vzc2lvbkV4dGVuc2lvbnMAQXBwRXh0ZW5zaW9ucwBNb2R1bGFyRXh0ZW5zaW9ucwBDb250YWluZXJFeHRlbnNpb25zAERlZmF1bHRWYWxpZGF0b3JFeHRlbnNpb25zAFNlcnZpY2VDbGllbnRFeHRlbnNpb25zAEhvc3RpbmdFbnZpcm9ubWVudEV4dGVuc2lvbnMAV2ViSG9zdEV4dGVuc2lvbnMATmV0Q29yZUFwcEhvc3RFeHRlbnNpb25zAEhvc3RFbnZpcm9ubWVudEVudkV4dGVuc2lvbnMAVXNlckF1dGhSZXBvc2l0b3J5RXh0ZW5zaW9ucwBTeXN0ZW0uTGlucS5FeHByZXNzaW9ucwBNaWNyb3NvZnQuQXNwTmV0Q29yZS5Ib3N0aW5nLkFic3RyYWN0aW9ucwBNaWNyb3NvZnQuRXh0ZW5zaW9ucy5Ib3N0aW5nLkFic3RyYWN0aW9ucwBNaWNyb3NvZnQuRXh0ZW5zaW9ucy5Db25maWd1cmF0aW9uLkFic3RyYWN0aW9ucwBNaWNyb3NvZnQuRXh0ZW5zaW9ucy5EZXBlbmRlbmN5SW5qZWN0aW9uLkFic3RyYWN0aW9ucwBNaWNyb3NvZnQuQXNwTmV0Q29yZS5IdHRwLkFic3RyYWN0aW9ucwBTeXN0ZW0uQ29sbGVjdGlvbnMAZ2V0X0hlYWRlcnMAZ2V0X0lnbm9yZUhlYWRlcnMAUmVxdWlyZXNTY2hlbWFQcm92aWRlcnMAZ2V0X0F1dGhQcm92aWRlcnMAbm9uUHJvdmlkZXJzAGdldF9GaWx0ZXJzAHNldF9GaWx0ZXJzAHNldF9BbGxvd0NvcnMAZ2V0X1VzZXJIb3N0QWRkcmVzcwBJQXV0aEV2ZW50cwBnZXRfQXV0aEV2ZW50cwBBcHBVc2VyQXV0aEV2ZW50cwBTeXN0ZW0uTmV0LlJlcXVlc3RzAEV4aXN0cwBnZXRfUmVzcG9uc2VTdGF0dXMAc2V0X1Jlc3BvbnNlU3RhdHVzAGdldF9WaWV3cwBzZXRfVmlld3MAZ2V0X0tleXMAQ29uY2F0AE9iamVjdABHZXQAU3lzdGVtLk5ldABSdWxlU2V0AGdldF9BdXRoU2VjcmV0AHNldF9BdXRoU2VjcmV0AGdldF9BY2Nlc3NUb2tlblNlY3JldABzZXRfQWNjZXNzVG9rZW5TZWNyZXQAb3BfSW1wbGljaXQARmlyc3RPckRlZmF1bHQAZ2V0X1Jlc3VsdABzZXRfUmVzdWx0AEdldFJlc3VsdABTZXRSZXN1bHQAU2VydmljZVN0YWNrLkNsaWVudABJU2VydmljZUNsaWVudABKc29uU2VydmljZUNsaWVudABDcmVhdGVTaXRlQ2xpZW50AElIb3N0aW5nRW52aXJvbm1lbnQAZ2V0X0hvc3RpbmdFbnZpcm9ubWVudABHZXRIb3N0aW5nRW52aXJvbm1lbnQASUhvc3RFbnZpcm9ubWVudABJV2ViSG9zdEVudmlyb25tZW50AElzRGV2ZWxvcG1lbnQAZ2V0X0N1cnJlbnQAU3lzdGVtLkNvbGxlY3Rpb25zLkNvbmN1cnJlbnQAZ2V0X0NvdW50AExhc3RMZWZ0UGFydABSaWdodFBhcnQAU3RhcnQASVJlcXVlc3QAZ2V0X1JlcXVlc3QAc2V0X1JlcXVlc3QAQ3JlYXRlU2l0ZVdlYlJlcXVlc3QASHR0cFdlYlJlcXVlc3QASW5pdFdlYlJlcXVlc3QASUh0dHBSZXF1ZXN0AHJlcXVlc3QAZ2V0X0hvc3QASVdlYkhvc3QAQnVpbGRXZWJIb3N0AFNlcnZpY2VTdGFja0hvc3QASUFwcEhvc3QAZ2V0X0FwcEhvc3QASUNvbmZpZ3VyZUFwcEhvc3QASVByZUNvbmZpZ3VyZUFwcEhvc3QAYXBwSG9zdABQb3N0AE1vdmVOZXh0AFNlcnZpY2VTdGFjay5UZXh0AFN5c3RlbS5UZXh0AGdldF9TZWFyY2hUZXh0AHNldF9TZWFyY2hUZXh0AFJlYWRBbGxUZXh0AFdyaXRlQWxsVGV4dABIb3N0Q29udGV4dABFbnYAZW52AGdldF9Ob3cAZ2V0X1V0Y05vdwBUaHJvdwB4AGdldF9PcmRlckJ5AHNldF9PcmRlckJ5AEhhc1JlcXVlc3RCb2R5AGdldF9LZXkAR2V0S2V5AGdldF9Bc3NlbWJseQBJbmRleE9mQW55AGdldF9RdWVyeQBzZXRfUXVlcnkAQ3JlYXRlRGlyZWN0b3J5AElBdXRoUmVwb3NpdG9yeQBDb25maWd1cmVBdXRoUmVwb3NpdG9yeQBHZXRBdXRoUmVwb3NpdG9yeQBvcF9FcXVhbGl0eQBvcF9JbmVxdWFsaXR5AElzTnVsbE9yRW1wdHkASXNFbXB0eQBOb3RFbXB0eQBQcm9wZXJ0eQBTaXRlUHJveHkAAAAAAAN4AAAfYQBkAG0AaQBuAEAAZQBtAGEAaQBsAC4AYwBvAG0AABVBAGQAbQBpAG4AIABVAHMAZQByAAARcABAADUANQB3AE8AcgBkAAAnUwBlAHIAdgBpAGMAZQBTAHQAYQBjAGsAIABTAHQAdQBkAGkAbwAAC2QAZQBiAHUAZwAAJy8AYwByAHUAZABlAHYAZQBuAHQAcwAvAHsATQBvAGQAZQBsAH0AADEvAHYAYQBsAGkAZABhAHQAaQBvAG4ALwByAHUAbABlAHMALwB7AFQAeQBwAGUAfQAAIy8AdgBhAGwAaQBkAGEAdABpAG8AbgAvAHIAdQBsAGUAcwAAHy8AcwBzAF8AYQBkAG0AaQBuAC8AdQBzAGUAcgBzAAAPYwBvAG4AbgBlAGMAdAAAEWgAdAB0AHAAcwA6AC8ALwAAD2gAdAB0AHAAOgAvAC8AAAMvAAADOgAAC2gAdAB0AHAALgAADWgAdAB0AHAAcwAuAAAHOgAvAC8AAICPSQBuAHYAYQBsAGkAZAAgAG8AZABkACAAbgB1AG0AYgBlAHIAIABvAGYAIABhAHIAZwB1AG0AZQBuAHQAcwAsACAAZQB4AHAAZQBjAHQAZQBkACAAWwBrAGUAeQAxACwAdgBhAGwAdQBlADEALABrAGUAeQAyACwAdgBhAGwAdQBlADIALAAuAC4ALgBdAAAJYQByAGcAcwAAJS8AbQBlAHQAYQBkAGEAdABhAC8AYQBwAHAALgBqAHMAbwBuAAADewAARU4AbwB0ACAAYQAgAHIAZQBtAG8AdABlACAAUwBlAHIAdgBpAGMAZQBTAHQAYQBjAGsAIABJAG4AcwB0AGEAbgBjAGUAABMvAG0AZQB0AGEAZABhAHQAYQAAByoALwAqAAAxaAB0AHQAcABzADoALwAvAHMAZQByAHYAaQBjAGUAcwB0AGEAYwBrAC4AbgBlAHQAAF9TAGUAcgB2AGkAYwBlAFMAdABhAGMAawAgAEkAbgBzAHQAYQBuAGMAZQAgAHYANQAuADgALgAxACAAbwByACAAaABpAGcAaABlAHIAIAByAGUAcQB1AGkAcgBlAGQAAIClQwBvAHUAbABkACAAbgBvAHQAIAByAGUAYQBkACAAQQBwAHAATQBlAHQAYQBkAGEAdABhACwAIAB0AHIAeQAgAHUAcABnAHIAYQBkAGkAbgBnACAAdABoAGkAcwAgAEEAcABwACAAbwByACAAcgBlAG0AbwB0AGUAIABTAGUAcgB2AGkAYwBlAFMAdABhAGMAawAgAEkAbgBzAHQAYQBuAGMAZQAAIXUAcgBuADoAcwBpAHQAZQBzAGUAcwBzAGkAbwBuADoAABVhAHUAdABoAHMAZQBjAHIAZQB0AAANYgBlAGEAcgBlAHIAAA9zAGUAcwBzAGkAbwBuAAANbABvAGcAbwB1AHQAACNYAC0AUABhAHIAYQBtAC0ATwB2AGUAcgByAGkAZABlAC0AAQlBAHIAZwBzAAAnUwBpAHQAZQAgAGQAbwBlAHMAIABuAG8AdAAgAGUAeABpAHMAdAAACVMAbAB1AGcAAAVYAC0AAQVfAF8AAANfAAAVQQBkAGQAQgBhAHMAZQBVAHIAbAAAHVMAaQB0AGUAIABuAG8AdAAgAGYAbwB1AG4AZAAAJ0MAbwB1AGwAZAAgAG4AbwB0ACAAcwBhAHYAZQAgAHQAbwAgACcAAQMnAAEhQwBvAHUAbABkACAAbgBvAHQAIABsAG8AYQBkACAAJwABBycAOgAgAAEbcwBpAHQAZQAuAHMAZQB0AHQAaQBuAGcAcwAAGy4AcwBlAHIAdgBpAGMAZQBzAHQAYQBjAGsAAA1zAHQAdQBkAGkAbwAAH1gALQBGAHIAYQBtAGUALQBPAHAAdABpAG8AbgBzAAEvQwBvAG4AdABlAG4AdAAtAFMAZQBjAHUAcgBpAHQAeQAtAFAAbwBsAGkAYwB5AAEPUgBlAHEAdQBlAHMAdAAAAz8AAENhAHAAcABsAGkAYwBhAHQAaQBvAG4ALwB4AC0AdwB3AHcALQBmAG8AcgBtAC0AdQByAGwAZQBuAGMAbwBkAGUAZAABAFrNKcI0ROBLjs8opHKY4N0AAyAAAQQgAQEIBSABAREVBCABAQ4HFRKArQESKAcVEoCtARI8BxUSgK0BEmQHFRKArQESSAcVEoCtARJQCBUSgK0BEoD9BhUSgK0BDgcVEoCtAR0FBiABARKBKQYgAQESgUkFIAIBHBgIFRKBeQES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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment