From f17ff37fa5cad5ef6c7a44cdc4ceb8e3c77021f5 Mon Sep 17 00:00:00 2001 From: Joonas Bergius Date: Thu, 20 Jun 2024 13:54:52 -0500 Subject: [PATCH] chore(cloud-hello): Handle UI build in CI Signed-off-by: Joonas Bergius --- .github/workflows/cloud-hello.yml | 22 +++++++- .gitignore | 1 + cloud-hello/ui/dist/assets/index-BrwVprff.css | 1 - cloud-hello/ui/dist/assets/index-CbmWcr-v.js | 26 --------- cloud-hello/ui/dist/index.html | 55 ------------------- 5 files changed, 21 insertions(+), 84 deletions(-) delete mode 100644 cloud-hello/ui/dist/assets/index-BrwVprff.css delete mode 100644 cloud-hello/ui/dist/assets/index-CbmWcr-v.js delete mode 100644 cloud-hello/ui/dist/index.html diff --git a/.github/workflows/cloud-hello.yml b/.github/workflows/cloud-hello.yml index 4e5ab84..57b75d5 100644 --- a/.github/workflows/cloud-hello.yml +++ b/.github/workflows/cloud-hello.yml @@ -20,12 +20,23 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Build the embedded UI + run: | + npm install + npm run build + working-directory: cloud-hello/ui - run: cargo clippy --no-deps working-directory: cloud-hello + build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Build the embedded UI + run: | + npm install + npm run build + working-directory: cloud-hello/ui - run: | rustup target add wasm32-wasi cargo build --target wasm32-wasi @@ -33,7 +44,8 @@ jobs: release: runs-on: ubuntu-latest - needs: [build] + needs: + - build if: startsWith(github.ref, 'refs/tags/cloud-hello-v') permissions: contents: read @@ -53,7 +65,13 @@ jobs: - run: rustup target add wasm32-wasi - uses: taiki-e/install-action@v2 with: - tool: wash-cli@0.27 + tool: wash-cli@0.29.2 + + - name: Build the embedded UI + run: | + npm install + npm run build + working-directory: cloud-hello/ui - name: Build and push run: | diff --git a/.gitignore b/.gitignore index 461b237..972055c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ /dist/ /target **target +cloud-hello/ui/dist/ ## File system .DS_Store diff --git a/cloud-hello/ui/dist/assets/index-BrwVprff.css b/cloud-hello/ui/dist/assets/index-BrwVprff.css deleted file mode 100644 index 6b3a8f3..0000000 --- a/cloud-hello/ui/dist/assets/index-BrwVprff.css +++ /dev/null @@ -1 +0,0 @@ -:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-0{top:0}.top-1\/2{top:50%}.-my-8{margin-top:-2rem;margin-bottom:-2rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-\[3\%\]{margin-top:-3%}.mb-16{margin-bottom:4rem}.mb-8{margin-bottom:2rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.min-h-screen{min-height:100vh}.w-1\/3{width:33.333333%}.w-11{width:2.75rem}.w-full{width:100%}.min-w-80{min-width:20rem}.max-w-4xl{max-width:56rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.grow{flex-grow:1}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-2{--tw-rotate: -2deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-1{--tw-rotate: 1deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes enter{0%{transform:translateY(2rem);opacity:0}to{transform:translateY(0);opacity:1}}.animate-enter{animation:enter 1s ease-in-out both}@keyframes exit{0%{transform:translateY(0);opacity:1}to{transform:translateY(-2rem);opacity:0}}.animate-exit{animation:exit 1s ease-in-out both}.resize{resize:both}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-4{gap:1rem}.gap-8{gap:2rem}.overflow-hidden{overflow:hidden}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-xl{border-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-sky-950\/10{background-color:#082f491a}.bg-sky-950\/20{background-color:#082f4933}.bg-sky-950\/30{background-color:#082f494d}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity))}.bg-slate-300\/80{background-color:#cbd5e1cc}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-gradient-to-bl{background-image:linear-gradient(to bottom left,var(--tw-gradient-stops))}.from-sky-900{--tw-gradient-from: #0c4a6e var(--tw-gradient-from-position);--tw-gradient-to: rgb(12 74 110 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-sky-950{--tw-gradient-to: #082f49 var(--tw-gradient-to-position)}.p-4{padding:1rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.pb-10{padding-bottom:2.5rem}.pb-4{padding-bottom:1rem}.pt-\[1\%\]{padding-top:1%}.pt-\[10\%\]{padding-top:10%}.text-left{text-align:left}.text-center{text-align:center}.font-script{font-family:Permanent Marker,cursive}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.ordinal{--tw-ordinal: ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tracking-widest{letter-spacing:.1em}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity: 1;color:rgb(229 229 229 / var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity))}.text-sky-950{--tw-text-opacity: 1;color:rgb(8 47 73 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.opacity-0{opacity:0}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-black{--tw-shadow-color: #000;--tw-shadow: var(--tw-shadow-colored)}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia: sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.\[writing-mode\:vertical-lr\]{writing-mode:vertical-lr}@media (min-width: 768px){.md\:px-8{padding-left:2rem;padding-right:2rem}}.\[\&_td\]\:p-2 td,.\[\&_th\]\:p-2 th{padding:.5rem}.\[\&_th\]\:align-top th{vertical-align:top}.\[\&_th\]\:text-white th{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))} diff --git a/cloud-hello/ui/dist/assets/index-CbmWcr-v.js b/cloud-hello/ui/dist/assets/index-CbmWcr-v.js deleted file mode 100644 index bb08655..0000000 --- a/cloud-hello/ui/dist/assets/index-CbmWcr-v.js +++ /dev/null @@ -1,26 +0,0 @@ -(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))n(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&n(s)}).observe(document,{childList:!0,subtree:!0});function a(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(t){if(t.ep)return;t.ep=!0;const o=a(t);fetch(t.href,o)}})();const d=3e3;function g(e){e.classList.remove("animate-exit"),e.classList.add("animate-enter")}function m(e){e.classList.add("animate-exit"),e.classList.remove("animate-enter")}function u(e){g(e),setTimeout(()=>m(e),d)}function f(e){const r=document.querySelectorAll(e);r.forEach((a,n)=>{setTimeout(()=>{u(a),setInterval(()=>u(a),r.length*d)},n*d)})}const h={ams:{os:{"Mac OSX":15},browsers:{Chrome:15},visits:15},iad:{os:{Android:3,"Mac OSX":118,UNKNOWN:1,"Windows Phone OS":1,"Windows Vista":1,"Xbox One":1,iPhone:2},browsers:{Chrome:104,Edge:2,Firefox:14,"Internet Explorer":2,Opera:2,Safari:1,"Xbox One":1,"misc crawler":1},visits:127},ord:{os:{Android:3,"Mac OSX":80,UNKNOWN:1,"Windows Vista":1,"Xbox One":1,iPhone:2},browsers:{Chrome:78,Edge:2,Firefox:2,"Internet Explorer":2,Opera:2,Safari:1,"Xbox One":1,"misc crawler":1},visits:89}},p={ams:"Amsterdam, Netherlands",arn:"Stockholm, Sweden",atl:"Atlanta, Georgia (US)",bog:"Bogotá, Colombia",bom:"Mumbai, India",bos:"Boston, Massachusetts (US)",cdg:"Paris, France",den:"Denver, Colorado (US)",dfw:"Dallas, Texas (US)",ewr:"Secaucus, NJ (US)",eze:"Ezeiza, Argentina",fra:"Frankfurt, Germany",gdl:"Guadalajara, Mexico",gig:"Rio de Janeiro, Brazil",gru:"Sao Paulo, Brazil",hkg:"Hong Kong, Hong Kong",iad:"Ashburn, Virginia (US)",jnb:"Johannesburg, South Africa",lax:"Los Angeles, California (US)",lhr:"London, United Kingdom",mad:"Madrid, Spain",mia:"Miami, Florida (US)",nrt:"Tokyo, Japan",ord:"Chicago, Illinois (US)",otp:"Bucharest, Romania",phx:"Phoenix, Arizona (US)",qro:"Querétaro, Mexico",scl:"Santiago, Chile",sea:"Seattle, Washington (US)",sin:"Singapore, Singapore",sjc:"San Jose, California (US)",syd:"Sydney, Australia",waw:"Warsaw, Poland",yul:"Montreal, Canada",yyz:"Toronto, Canada"};function b(e){const r=new Set,a=new Set;for(const s in e){const i=e[s];for(const c in i.os)r.add(c);for(const c in i.browsers)a.add(c)}const n=[...r].sort(),t=[...a].sort(),o=[];for(const s in e){const i=e[s],c=[s,i.visits,...n.map(l=>i.os[l]??0),...t.map(l=>i.browsers[l]??0)];o.push(c)}return{osHeaders:n,browserHeaders:t,regions:o}}function S(e){const r=e.osHeaders,a=e.browserHeaders,{regions:n}=e,t=r.length+a.length+1;return` - - - - - - - - ${n.map(o=>``).join("")} - - - - ${Array.from({length:t}).map((o,s)=>s===0?` - - ${n.map(i=>``).join("")} - `:s<=r.length?` - ${s===1?``:""} - - ${n.map(i=>``).join("")} - `:` - ${s===r.length+1?``:""} - - ${n.map(i=>``).join("")} - `).join("")} - -
VisitsRegion
${p[o[0]]||o[0]}
Total${i[1]}
OS${r[s-1]}${i[s+1]}
Browser${a[s-r.length-1]}${i[s+1]}
`}function w(e){try{return e?JSON.parse(e):h}catch{return h}}function y(e,r){var n;const a=document.querySelector(r);if(a){const t=((n=document.querySelector(e))==null?void 0:n.textContent)??"",o=b(w(t));a.innerHTML=S(o)}}function x(){f(".js-cycle"),y("#data",'[data-js="data-table"]')}x(); diff --git a/cloud-hello/ui/dist/index.html b/cloud-hello/ui/dist/index.html deleted file mode 100644 index e76d538..0000000 --- a/cloud-hello/ui/dist/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - Argo + wasmCloud - - - - - - -
-
-
-
- Argo -
-
- Backstage -
-
- Kubernetes -
-
- + - wasmCloud -
-
-
-

Hello

-

My name is

-
-
-

wasmCloud-{{code}}

-
-
-
- -
{{location}}
-
-
- - - - \ No newline at end of file