Skip to content

Commit

Permalink
Add certificate files to production build and fix linting issues
Browse files Browse the repository at this point in the history
  • Loading branch information
etienne committed Feb 15, 2024
1 parent 9d4d4df commit e87fa00
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 69 deletions.
2 changes: 1 addition & 1 deletion backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"type": "module",
"scripts": {
"start": "nodemon",
"start:prod": "tsc && node dist/index.js",
"start:prod": "tsc && cp -r src/cert dist/cert && node dist/index.js",
"build": "tsc",
"test": "echo \"Error: no test specified\" && exit 1"
},
Expand Down
5 changes: 5 additions & 0 deletions backend/src/routes/socket.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,16 @@ import express from "express";
import dotenv from "dotenv";
import path from "path";
import { User } from "../models/user.js";
import { fileURLToPath } from "url";
import { dirname } from "path";

export const app = express();
app.use(cors());
dotenv.config();

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

const options = {
key: fs.readFileSync(path.resolve(__dirname, "../cert/kurama.key")),
cert: fs.readFileSync(path.resolve(__dirname, "../cert/kurama.cert")),
Expand Down
100 changes: 50 additions & 50 deletions frontend/src/app/signin/page.tsx
Original file line number Diff line number Diff line change
@@ -1,63 +1,63 @@
"use client"
import React, { useState } from 'react'
import Link from 'next/link'
import { useRouter } from 'next/router'
import { Container } from './styles'
import Layout from '../layout'

"use client";
import React, { useState } from "react";
import Link from "next/link";
import { useRouter } from "next/router";
import { Container } from "./styles";
import Layout from "../layout";

export default function SignIn() {
const [username, setUsername] = useState('')
const [password, setPassword] = useState('')

const [username, setUsername] = useState("");
const [password, setPassword] = useState("");

const router = useRouter()
const { signIn } = useAuth()
const router = useRouter();
const { signIn } = useAuth();

const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault()
event.preventDefault();

try {
await signIn({ username, password })
router.push('/chat')
await signIn({ username, password });
router.push("/chat");
} catch (error) {
console.error(error)
alert('Erreur de connexion, veuillez vérifier vos identifiants.')
console.error(error);
alert("Erreur de connexion, veuillez vérifier vos identifiants.");
}
}
};

return (

return (
<Container>
<div >
<form data-testid='login-form' onSubmit={handleSubmit}>
<h2>Connectez-vous</h2>
<p> Connectez-vous pour accéder à votre espace </p>

<input
type='text'
placeholder="Entrez votre nom d'utilisateur "
value={username}
onChange={(event) => setUsername(event.target.value)}
/>

<input
type='password'
placeholder='Taper votre mot de passe'
value={password}
onChange={(event) => setPassword(event.target.value)}
/>

<button type='submit'>Connexion</button>
</form>

<Link legacyBehavior href='/signup'>
<a>
Vous n’avez pas de compte ? <span> Créer un compte</span>
</a>
</Link>
</div>
<div>
<form data-testid="login-form" onSubmit={handleSubmit}>
<h2>Connectez-vous</h2>
<p> Connectez-vous pour accéder à votre espace </p>

<input
type="text"
placeholder="Entrez votre nom d'utilisateur "
value={username}
onChange={(event) => setUsername(event.target.value)}
/>

<input
type="password"
placeholder="Taper votre mot de passe"
value={password}
onChange={(event) => setPassword(event.target.value)}
/>

<button type="submit">Connexion</button>
</form>

<Link legacyBehavior href="/signup">
<a>
Vous n’avez pas de compte ? <span> Créer un compte</span>
</a>
</Link>
</div>
</Container>
);
}

)
}
function useAuth(): { signIn: any } {
throw new Error("Function not implemented.");
}
36 changes: 19 additions & 17 deletions frontend/src/app/signup/page.tsx
Original file line number Diff line number Diff line change
@@ -1,56 +1,58 @@
"use client"
import React, { useState, FormEvent, useCallback } from 'react';
import { Container } from './styles';
import Link from 'next/link'
"use client";
import React, { useState, FormEvent, useCallback } from "react";
import { Container } from "./styles";
import Link from "next/link";

const SignUp: React.FC = () => {
const [name, setName] = useState('');
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
const [name, setName] = useState("");
const [username, setUsername] = useState("");
const [password, setPassword] = useState("");

const history = useHistory();

const handleSubmit = useCallback(
async (event: FormEvent) => {
event?.preventDefault();

await api.post('users', {
await api.post("users", {
name,
username,
password,
});

history.push('/');
history.push("/");
},
[history, name, password, username]
);

return (
<Container>
<form data-testid='login-form' onSubmit={handleSubmit}>
<form data-testid="login-form" onSubmit={handleSubmit}>
<h2>Inscription</h2>
<p>Inscrivez-vous pour accéder à votre espace</p>
<input
type='text'
placeholder='Votre nom'
type="text"
placeholder="Votre nom"
value={name}
onChange={(event) => setName(event.target.value)}
/>
<input
type='text'
type="text"
placeholder="Votre nom d'utilisateur"
value={username}
onChange={(event) => setUsername(event.target.value)}
/>
<input
type='password'
placeholder='Tapez votre mot de passe'
type="password"
placeholder="Tapez votre mot de passe"
value={password}
onChange={(event) => setPassword(event.target.value)}
/>
<button type='submit'>Validé</button>
<button type="submit">Validé</button>
</form>
<Link to='/'>Vous avez déja un compte ? <span>Cliquer ici !</span></Link>
<Link to="/signin">
Vous avez déja un compte ? <span>Cliquer ici !</span>
</Link>
</Container>
);
};
Expand Down
11 changes: 10 additions & 1 deletion volumes/traefik/acme/acme.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,15 @@
"PrivateKey": "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",
"KeyType": "4096"
},
"Certificates": null
"Certificates": [
{
"domain": {
"main": "kurama-chat.xyz"
},
"certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUY3RENDQk5TZ0F3SUJBZ0lTQTZ5T3hDLzZrcU5WUFMxMHg4ekV6V1BRTUEwR0NTcUdTSWIzRFFFQkN3VUEKTURJeEN6QUpCZ05WQkFZVEFsVlRNUll3RkFZRFZRUUtFdzFNWlhRbmN5QkZibU55ZVhCME1Rc3dDUVlEVlFRRApFd0pTTXpBZUZ3MHlOREF5TVRVeE1URTFNelJhRncweU5EQTFNVFV4TVRFMU16TmFNQm94R0RBV0JnTlZCQU1UCkQydDFjbUZ0WVMxamFHRjBMbmg1ZWpDQ0FpSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUIKQU9oQXZpRkkzSjIxYzNNZlY2N0N1UjV4Qk00VVhJN1pLbU5wTVN0Q3EzeTM4K3lBTU44N2k5Z2hiNXZ2YkQxYgpTWno0NEdwLy9mTnU0UXhFUGtUNjlNRDVuV1JaOTJMWkVuSTFOazdET3BLbjlpSUxma1ZCY2lzWWVzeW8ySDNECnVQTTIrSjhtdFRaaFBWNnRmSHpiSnhwZjRSbitoVnpNakE2eDhUNjlxeDhUUmlGbU4veGZnKzdHbWlzMm9RdFcKczFTa0ZvSkdqeW1PZGpsZkR5WTdyck4zKy9lMEVaUllrMjlsWW84VHBSTG93S3laNkJTVWNmSzJZVE53Qk0vVwpUN1ptQlpST3hjSVVzQVYzc2pQYXdaMkUrWTNBOVJnVXI4YUwyRTVKM004T1VWM0hhRjNyRVVCRE51L0pQNmt2CjlmcFdpSmcra3NxcVp5b1ZBSFg5MEg4SG1NMXIrUWNwUVRicmxGdUYvdCs4QkFremJ2NG52NWV6T1pTMVYxTzIKTk85Q1lxZUE5ZzNIdXp3OGtSNGMxZG1hbkI4QzU1aEpWWlowYkJFY2ZlQlFlUVgyOFhQWHRCd1RjWlV2YTg2aQozSUdod2QvNWZvOW1kOGpDbkJ0RFUzSEZXRWkzSE9KMnkvWTVPNjhJdGdOYmw0c3NNT0F6eVUzTlhzYzMySUZEClVnTnIxcTlmaDVvVk9ZVUJXTU5iVU10MXRnUWlvekpjdFM5RmV0bnpZbDdRb2VKcGZ4VGlnamJBT2txWENxZmkKWnpnclg3algwSG5GWTF2KzJXSTRFaDc1QlVRL3l3TWw3TS9qZ0w2WXQ0ckdxamVYTXdadkpJL1phZGMyN1U2Qwp2bWFwK0R4cEVMcnlSUVpJbVhjZjJhMlVXSGJEWFpNbmhuK2luaWFmSUdhZkFnTUJBQUdqZ2dJU01JSUNEakFPCkJnTlZIUThCQWY4RUJBTUNCYUF3SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQndNQ01Bd0cKQTFVZEV3RUIvd1FDTUFBd0hRWURWUjBPQkJZRUZLMHhYS2laSmpoWXVVQ3p3SHlmVzF6aEprMlhNQjhHQTFVZApJd1FZTUJhQUZCUXVzeGUzV0ZiTHJsQUpRT1lmcjUyTEZNTEdNRlVHQ0NzR0FRVUZCd0VCQkVrd1J6QWhCZ2dyCkJnRUZCUWN3QVlZVmFIUjBjRG92TDNJekxtOHViR1Z1WTNJdWIzSm5NQ0lHQ0NzR0FRVUZCekFDaGhab2RIUncKT2k4dmNqTXVhUzVzWlc1amNpNXZjbWN2TUJvR0ExVWRFUVFUTUJHQ0QydDFjbUZ0WVMxamFHRjBMbmg1ZWpBVApCZ05WSFNBRUREQUtNQWdHQm1lQkRBRUNBVENDQVFVR0Npc0dBUVFCMW5rQ0JBSUVnZllFZ2ZNQThRQjNBRWl3CjQydmFwa2MwRCtWcUF2cWRNT3NjVWdITFZ0MHNnZG03djZzNTJJUnpBQUFCamF5eGp5VUFBQVFEQUVnd1JnSWgKQU15cWl2MlI1YlBKdkJINE0vZzFwYVZLUjYxOXJLOEY0eWJOZ3lTbGFFT3NBaUVBMm5Pd3FtVCtzaGlpWTdlLwo0WjYzYWhKbkIxaFVXZzRzRm9iSVpZRTJtVk1BZGdBN1UzZDFQaTI1Z0U2TE1Gc0cva0E3WjloUHcvVEh2UUFOCkxYSnY0ZnJVRndBQUFZMnNzWThyQUFBRUF3QkhNRVVDSURQcm1Pa0NXMmRKUUkxZ1RXa1dHZjNWMFlYZGNxbTEKY0RtTC83R1NCM0xFQWlFQTNDTHN1OGVPc2lRSmU5Y2xBSjRYckVzYzg3Vzc2MnZCd1dRTmRiWmFzdDB3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKZERIZzg4TzV1VmhaMHdFNXJBd242bHlRTmpkQWxaNDl4enZzbnh1b2JsCms3a1lOdDNaSHM1UGVTL0kxQS9qdk93Uit5MEFSSjNnanZlZDFhTVM2KzY3QWkvSzhtS3J6UzJOYlRaWlFnTGIKNnNqbnIvaDJxSmp0R1BsMFVKcWhIK0dIbTYySHNQeHRrQkJQdTJ2Zkt0dHlETXZWTVlnbnh0WXdRejBWZE9nRwpwV1RRMkhMMi9hYndzYTlrQ1doZXVNb29tY055VzJBMnJxR3crYXVSVzdydUgzWThoS29CeXk2MGlkc2dpNHRMCnZzL2EzSU1UQjJhclg4VXJoZDE1a0NSMW5CWVdqK25YWWxOTHk1Z0Jhb3JKZWlxZlY2VVRwRkFDSWV6UXJTY08KTUZFVnZJQjhmWkpTWm1LWjVVaEtjQXU5UzMxbWhHZ0oxRHltRFk3MWFTRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZGakNDQXY2Z0F3SUJBZ0lSQUpFckNFclBEQmluVS9iV0xpV25YMW93RFFZSktvWklodmNOQVFFTEJRQXcKVHpFTE1Ba0dBMVVFQmhNQ1ZWTXhLVEFuQmdOVkJBb1RJRWx1ZEdWeWJtVjBJRk5sWTNWeWFYUjVJRkpsYzJWaApjbU5vSUVkeWIzVndNUlV3RXdZRFZRUURFd3hKVTFKSElGSnZiM1FnV0RFd0hoY05NakF3T1RBME1EQXdNREF3CldoY05NalV3T1RFMU1UWXdNREF3V2pBeU1Rc3dDUVlEVlFRR0V3SlZVekVXTUJRR0ExVUVDaE1OVEdWMEozTWcKUlc1amNubHdkREVMTUFrR0ExVUVBeE1DVWpNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFSwpBb0lCQVFDN0FoVW96UGFnbE5NUEV1eU5WWkxEK0lMeG1hWjZRb2luWFNhcXRTdTV4VXl4cjQ1citYWElvOWNQClI1UVVWVFZYako2b29qa1o5WUk4UXFsT2J2VTd3eTdiamNDd1hQTlpPT2Z0ejJud1dnc2J2c0NVSkNXSCtqZHgKc3hQbkhLemhtKy9iNUR0RlVrV1dxY0ZUempUSVV1NjFydTJQM21CdzRxVlVxN1p0RHBlbFFEUnJLOU84WnV0bQpOSHo2YTR1UFZ5bVorREFYWGJweWIvdUJ4YTNTaGxnOUY4Zm5DYnZ4Sy9lRzNNSGFjVjNVUnVQTXJTWEJpTHhnClozVm1zL0VZOTZKYzVsUC9Pb2kyUjZYL0V4anFtQWwzUDUxVCtjOEI1ZldtY0JjVXIyT2svNW16azUzY1U2Y0cKL2tpRkhhRnByaVYxdXhQTVVnUDE3VkdoaTlzVkFnTUJBQUdqZ2dFSU1JSUJCREFPQmdOVkhROEJBZjhFQkFNQwpBWVl3SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdJR0NDc0dBUVVGQndNQk1CSUdBMVVkRXdFQi93UUlNQVlCCkFmOENBUUF3SFFZRFZSME9CQllFRkJRdXN4ZTNXRmJMcmxBSlFPWWZyNTJMRk1MR01COEdBMVVkSXdRWU1CYUEKRkhtMFdlWjd0dVhrQVhPQUNJaklHbGoyNlp0dU1ESUdDQ3NHQVFVRkJ3RUJCQ1l3SkRBaUJnZ3JCZ0VGQlFjdwpBb1lXYUhSMGNEb3ZMM2d4TG1rdWJHVnVZM0l1YjNKbkx6QW5CZ05WSFI4RUlEQWVNQnlnR3FBWWhoWm9kSFJ3Ck9pOHZlREV1WXk1c1pXNWpjaTV2Y21jdk1DSUdBMVVkSUFRYk1Ca3dDQVlHWjRFTUFRSUJNQTBHQ3lzR0FRUUIKZ3Q4VEFRRUJNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUNGeWs1SFBxUDNoVVNGdk5WbmVMS1lZNjExVFI2VwpQVE5sY2xRdGdhRHF3KzM0SUw5ZnpMZHdBTGR1Ty9aZWxON2tJSittNzR1eUErZWl0Ulk4a2M2MDdUa0M1M3dsCmlrZm1aVzQvUnZUWjhNNlVLKzVVemhLOGpDZEx1TUdZTDZLdnpYR1JTZ2kzeUxnamV3UXRDUGtJVno2RDJRUXoKQ2tjaGVBbUNKOE1xeUp1NXpsenlaTWpBdm5uQVQ0NXRSQXhla3JzdTk0c1E0ZWdkUkNuYldTRHRZN2toK0JJbQpsSk5Yb0IxbEJNRUtJcTRRRFVPWG9SZ2ZmdURnaGplMVdyRzlNTCtIYmlzcS95Rk9Hd1hEOVJpWDhGNnN3Nlc0CmF2QXV2RHN6dWU1TDNzejg1SytFQzRZL3dGVkROdlpvNFRZWGFvNlowZitsUUtjMHQ4RFFZemsxT1hWdThycDIKeUpNQzZhbExiQmZPREFMWnZZSDduN2RvMUFabHM0STlkMVA0am5rRHJRb3hCM1VxUTloVmwzTEVLUTczeEYxTwp5SzVHaEREWDhvVmZHS0Y1dStkZWNJc0g0WWFUdzdtUDNHRnhKU3F2MyswbFVGSm9pNUxjNWRhMTQ5cDkwSWRzCmhDRXhyb0wxKzdtcnlJa1hQZUZNNVRnTzlyMHJ2WmFCRk92VjJ6MGdwMzVaMCtMNFdQbGJ1RWpOL2x4UEZpbisKSGxVanI4Z1JzSTNxZkpPUUZ5LzlyS0lKUjBZLzhPbXd0LzhvVFdneTFtZGVIbW1qazdqMW5Zc3ZDOUpTUTZadgpNbGRsVFRLQjN6aFRoVjErWFdZcDZyamQ1SlcxemJWV0VrTE54RTdHSlRoRVVHM3N6Z0JWR1A3cFNXVFVUc3FYCm5MUmJ3SE9vcTdoSHdnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
"key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS2dJQkFBS0NBZ0VBNkVDK0lVamNuYlZ6Y3g5WHJzSzVIbkVFemhSY2p0a3FZMmt4SzBLcmZMZno3SUF3CjN6dUwyQ0Z2bSs5c1BWdEpuUGpnYW4vOTgyN2hERVErUlByMHdQbWRaRm4zWXRrU2NqVTJUc002a3FmMklndCsKUlVGeUt4aDZ6S2pZZmNPNDh6YjRueWExTm1FOVhxMThmTnNuR2wvaEdmNkZYTXlNRHJIeFByMnJIeE5HSVdZMwovRitEN3NhYUt6YWhDMWF6VktRV2drYVBLWTUyT1Y4UEpqdXVzM2Y3OTdRUmxGaVRiMlZpanhPbEV1akFySm5vCkZKUng4clpoTTNBRXo5WlB0bVlGbEU3RndoU3dCWGV5TTlyQm5ZVDVqY0QxR0JTdnhvdllUa25jenc1UlhjZG8KWGVzUlFFTTI3OGsvcVMvMStsYUltRDZTeXFwbktoVUFkZjNRZndlWXpXdjVCeWxCTnV1VVc0WCszN3dFQ1ROdQovaWUvbDdNNWxMVlhVN1kwNzBKaXA0RDJEY2U3UER5UkhoelYyWnFjSHdMbm1FbFZsblJzRVJ4OTRGQjVCZmJ4CmM5ZTBIQk54bFM5cnpxTGNnYUhCMy9sK2oyWjN5TUtjRzBOVGNjVllTTGNjNG5iTDlqazdyd2kyQTF1WGl5d3cKNERQSlRjMWV4emZZZ1VOU0EydldyMStIbWhVNWhRRll3MXRReTNXMkJDS2pNbHkxTDBWNjJmTmlYdENoNG1sLwpGT0tDTnNBNlNwY0twK0puT0N0ZnVOZlFlY1ZqVy83WllqZ1NIdmtGUkQvTEF5WHN6K09BdnBpM2lzYXFONWN6CkJtOGtqOWxwMXpidFRvSytacW40UEdrUXV2SkZCa2laZHgvWnJaUllkc05ka3llR2Y2S2VKcDhnWnA4Q0F3RUEKQVFLQ0FnRUExS2ZMTHlETzJCeDNiRGFMaTNuQ0ZJeDVVTlExOTVvQ2hPbWhXckg5NFFGeDk5OWNZRm5lYnZRVwpoRm9SNnBBMmMrTXhZSEozTFRrZUdLUTN1K05velhVQTF3ekZSaDNxRk9hQ0psWDl3S0RIN2w1RnJOWUMybERjCng1M21OQ2xNcEcxMThndDRLeVdZRXFPWTg1MmFUVHp6R0dFQzdYaGcyV2UyczdMcEIxZ1hnNmRicGRvekxDTnUKc0JpaUZvYTVSc3ZEekY4YzRIa1A2UElRSmZySnVJd3BDcUkyNG5URDhtQ0xnT1FFNXE1MUZOVUxPaVM5dlBXZgpSSURSOXhlTS96Nms1eW5GU3pLMEJSMlc3b0hqZS81d25ZbkxJTlI0S2J5TVB3ckVnbFhpekpJMERxS1l0aFdWCkxMTkJkZ0Z6SVZld1ZHNGU3REJncTVoMVJwUXpIUTVNYkxFZGZlckJMV0xQeHdnTXpZcG9tZ3NnTXlrekt4R1cKc25qLzJvRVR4NGxCYWtMT3M2d1FESSsxcGc1TElrY2d5Z0JuMk5yWXJ6WmJhZG9ja25BY1o1Mkh0WUhGdGZLZApYTnF4aEtJZE9HVGNzUlVNSnFtQW84QWpadEtoeWFSeDdXSjVvTjdHK05QS2FONEtMeWU3eDJvU0R2cTBtMHlUClo1bGQ2VWlnU0srRnh5WFRHZEptQ0FYaFZ4OTBCdmVWd0RuekFqdFFMMk1SdlFvNDA0OVhqelJMNHlNSG5EN2wKVnZqZ3pXN29uR2NodVkxeGpqcGszeXQzWTFjcG5oRG1jOWxTdlFVUmcrWk9WY1Y4bm1RdjhDUVFvVlJldHA0SwpDSTZCdVBXQXlWZzV6UENBaVc5ZEdNSmNCL1FIbldmanRjSExTTE1NWndsNnoxN3lsVWtDZ2dFQkFQbE5JS1V6ClBraU1PTjVJK3AybWtTTDNvYXJIZXEybXFzREFUZlRKdzUvRmtQaXptc1pFVjdxSFlSa2w1alY5MU1jWGs2Yk4KaGdWLy94SWYrSnVwSnArZ3E1QTlFQW9NSjdTZWY1NjRQYklQS3BOdEI3cTRnRmFSNml6UHA4a0tBbzlXSUxFbQpycUUwQ3pHVXRUWHNuNTFLRjVEZzBkUmd2WlZmcGtES3JXWkNsMFJJeEVGL0pIb2FiNkdWa1EybUdaNmRnUmZRClZuaDQreFpLWlpRTVdRUnVyWTJ5RFhabDM2YVdOK2lYejB3TjloOU1WM1ZCdDJsbVd0VUF3clZxUWNTd3dWWE0KZDczQmdUWkN3azNncUhVSXhOelNVcVYxYVhaSUVBeTRNZ09WaGVFUm5NZ1Z6YUI5ckNmUVdWUHZiTmkyekZqNQpwZnc1WXI3UDJONTlqZTBDZ2dFQkFPNStXQi8wd1V1MDFYMC9Ia1ZSZW9lcTM2VUtWNmxrQlpUQVV5d2FDWCt6Cm1ETnZtTWN5ejlpSW0veSt2eWQvWnRUeVZvT1BicnN4OTJrMjNMS21RN0cyT3EyZzJjUGZjUW9OOERURzFjYmUKM1FKU1lReXdGdHkwOWdaQkUxUzFOSWg0bGY2d0Z6MmlGeDhycmtmSlFKVDdFQTFReHVQSDZZYWo4bnRhc1ZGcgovaVRGVmwzQmVNdC9Bc0hEYkM3eUNUbk92T0pnQjZ5Q09jc1RGZmR1Qm1sSXZFbnJPalB2VTZOYzl3eHN2RTNICjY4eVQxeUtDV3NibS8wc2Vzek5lZ0ljNVRZWWQxTWdWU2k1U2xpWHhvMEhYRkw2TCtPemtoejlVN1VPRFlGL3cKNFlnREJ1bFhSZFdYc0owNTlJbkZHd0F6Zms0MlRVc0ZEcENINlo0MVZUc0NnZ0VCQU1TeU1kdWwvckpHMEdleAp0T3JHRFNWRnRHeUdUeWpMbzFYSlpMaUtxS3BhdXZNKzRoTWt3UU1PNVhGdUVhQ0swMkx5R3pFMFgxWGZrMlM5CmpPMWtISEU5MTU5S1RtbGZCY1RnZVZqRmpRZjhKMStDV3VMYng0YUdRZmx4TGJUVkRRZ0NzSENWVUpzbjhOMEIKczZnRU5qdG54Z2d0R2VFekl1SEVRZXhFL1dMOWoxUDFCY09YaVRROXYyNENFQnh3dlM0RW4ySW1vdE1Td1NqcApNaFFKV2dMQlFIWFgwZjlraVgxcWNGbzN6UHI0MlFRQXU5QnNOVVlYMS9yUFN0RFFNV3Y2K2MrMEw1V3NJMEtvCmtaM1liNUZIaGV1a2xraXR4clBvVDZGNWd4eUkwTVN2bkwvUlZCZ1lqOGdwL3hEV2kwN0JpNkYzOTVwMXZJOUkKZHBlMUFGRUNnZ0VBRXlRNDFuZkNlOTBMdFgyM1pFRGg0TG1xTVlqZStFMTYxVEdLZTJPcmw0Qkdtdm85L043cgpKNm52T3gza0lidHIrWE5wMWkxUTZkMWN5aWtKRloyYW1VelM4TlNVSmRCdE5pMWdOaHd2VkVMVzRqVFNiVDVFCjEzbit0UW5NRDJScnp2ZytzYTVZYnkzdlJTVXdXN3FmWUZXMk9CdGZtekNVWWFZTzlDK1hRNzJ6TENoYWdqUGgKQ2hRcm1IbWkyVEc3NDlQZi9SdFFBbHlCWHZjdE1DcTRnUUxCZWYxVE1vL20ycG0vaWxPLzJVNU9jcUQ3QjE0SApBeWZQSGF4ZEhhWmNFbjVhNW9UR2F6aXFONFdSWDRKQlpDdHJFdEFSTHBJNCtMQk1TcnJrcFU2a0MxS1MzMitOCnYxTHBiZlVVMTJubWZPR2xKWW5lTWtNNXBBZ0VqQm9qdVFLQ0FRRUFpOGM4MlZNamI3MnI1S3Y1S2NNZlU2TFMKdlZkS2wxeHhITmdaTWcwNkRnZjd6RXdQSEFJRjd6bmY1dVBvYjRzMUYvNTdPU0ZPQXJ3ZnI3MGpWVlgvWEVsUgpGVUFadkZvcVN0ODZNblBWK2hmU21FRHZ3dDBKVGxxK0hmQmJtT1JZYUsxTi9EQ2JaWmlmMGJSR2NqSFFNUzRyCloxRXkyYjVsVklqNWlVV01sRmo4QUtBS0ZHcTR1QVpQS09PL3YrRmk5eFJCSWtrSlBsWFdrVmR5Q3I1ZWt5a08Ka3NhcmN1MXMvQ0s5WWtlSHZTZXFjZER4dkVIUDdnRlVGbk9TNnA4eE02bG5DYjN0dGZ6UHpuaERyQ2Y4WVloLwpTQk5OSUh1QnFnREtlcEdKeVBsL09jeW1OWFBLbkFabmtGb0JzMndmN0VGNUdpVzdXK3A5cnQxQ3NQVjlqQT09Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==",
"Store": "default"
}
]
}
}

0 comments on commit e87fa00

Please sign in to comment.