From 623bee3ec522748d6596bfc6c26e89e32a998892 Mon Sep 17 00:00:00 2001 From: Omri Gazitt Date: Thu, 6 Feb 2025 16:21:20 -0800 Subject: [PATCH 1/2] add api gateway test runner and interop website scenario --- .../aws-api-gateway/.gitignore | 0 .../aws-api-gateway/authzen.mjs | 0 .../aws-api-gateway/index.mjs | 0 .../openapi/aws-gateway-openapi.json | 0 .../aws-api-gateway/openapi/todo-openapi.json | 0 .../aws-api-gateway/package.json | 0 .../aws-api-gateway/pdps.json | 0 .../aws-api-gateway/scripts/deploy-lambda.sh | 0 .../aws-api-gateway/yarn.lock | 0 .../test-harness/.gitignore | 20 + .../authzen-api-gateways/test-harness/LICENSE | 21 + .../test-harness/README.md | 43 + .../test-harness/package.json | 30 + .../test-harness/test/decisions.json | 408 ++++++ .../test-harness/test/runner.ts | 164 +++ .../test-harness/tsconfig.json | 17 + .../test-harness/yarn.lock | 1170 +++++++++++++++++ interop/authzen-interop-website/docs/intro.md | 39 +- .../scenarios/api-gateway/_category_.json | 8 + .../docs/scenarios/api-gateway/index.md | 420 ++++++ .../api-gateway/results/_category_.json | 7 + .../scenarios/api-gateway/results/aserto.md | 573 ++++++++ .../scenarios/api-gateway/results/cerbos.md | 571 ++++++++ .../results/img/docsVersionDropdown.png | Bin 0 -> 25427 bytes .../results/img/localeDropdown.png | Bin 0 -> 27841 bytes .../scenarios/todo-1.0-id/_category_.json | 2 +- .../docs/scenarios/todo-1.0-id/index.md | 2 +- .../docs/scenarios/todo-1.1/_category_.json | 2 +- .../docs/scenarios/todo-1.1/index.md | 2 +- .../docs/scenarios/todo/_category_.json | 2 +- .../docs/scenarios/todo/index.md | 2 +- .../static/img/enforcement-points.png | Bin 0 -> 170895 bytes 32 files changed, 3494 insertions(+), 9 deletions(-) rename interop/{ => authzen-api-gateways}/aws-api-gateway/.gitignore (100%) rename interop/{ => authzen-api-gateways}/aws-api-gateway/authzen.mjs (100%) rename interop/{ => authzen-api-gateways}/aws-api-gateway/index.mjs (100%) rename interop/{ => authzen-api-gateways}/aws-api-gateway/openapi/aws-gateway-openapi.json (100%) rename interop/{ => authzen-api-gateways}/aws-api-gateway/openapi/todo-openapi.json (100%) rename interop/{ => authzen-api-gateways}/aws-api-gateway/package.json (100%) rename interop/{ => authzen-api-gateways}/aws-api-gateway/pdps.json (100%) rename interop/{ => authzen-api-gateways}/aws-api-gateway/scripts/deploy-lambda.sh (100%) rename interop/{ => authzen-api-gateways}/aws-api-gateway/yarn.lock (100%) create mode 100644 interop/authzen-api-gateways/test-harness/.gitignore create mode 100644 interop/authzen-api-gateways/test-harness/LICENSE create mode 100644 interop/authzen-api-gateways/test-harness/README.md create mode 100644 interop/authzen-api-gateways/test-harness/package.json create mode 100644 interop/authzen-api-gateways/test-harness/test/decisions.json create mode 100644 interop/authzen-api-gateways/test-harness/test/runner.ts create mode 100644 interop/authzen-api-gateways/test-harness/tsconfig.json create mode 100644 interop/authzen-api-gateways/test-harness/yarn.lock create mode 100644 interop/authzen-interop-website/docs/scenarios/api-gateway/_category_.json create mode 100644 interop/authzen-interop-website/docs/scenarios/api-gateway/index.md create mode 100644 interop/authzen-interop-website/docs/scenarios/api-gateway/results/_category_.json create mode 100644 interop/authzen-interop-website/docs/scenarios/api-gateway/results/aserto.md create mode 100644 interop/authzen-interop-website/docs/scenarios/api-gateway/results/cerbos.md create mode 100644 interop/authzen-interop-website/docs/scenarios/api-gateway/results/img/docsVersionDropdown.png create mode 100644 interop/authzen-interop-website/docs/scenarios/api-gateway/results/img/localeDropdown.png create mode 100644 interop/authzen-interop-website/static/img/enforcement-points.png diff --git a/interop/aws-api-gateway/.gitignore b/interop/authzen-api-gateways/aws-api-gateway/.gitignore similarity index 100% rename from interop/aws-api-gateway/.gitignore rename to interop/authzen-api-gateways/aws-api-gateway/.gitignore diff --git a/interop/aws-api-gateway/authzen.mjs b/interop/authzen-api-gateways/aws-api-gateway/authzen.mjs similarity index 100% rename from interop/aws-api-gateway/authzen.mjs rename to interop/authzen-api-gateways/aws-api-gateway/authzen.mjs diff --git a/interop/aws-api-gateway/index.mjs b/interop/authzen-api-gateways/aws-api-gateway/index.mjs similarity index 100% rename from interop/aws-api-gateway/index.mjs rename to interop/authzen-api-gateways/aws-api-gateway/index.mjs diff --git a/interop/aws-api-gateway/openapi/aws-gateway-openapi.json b/interop/authzen-api-gateways/aws-api-gateway/openapi/aws-gateway-openapi.json similarity index 100% rename from interop/aws-api-gateway/openapi/aws-gateway-openapi.json rename to interop/authzen-api-gateways/aws-api-gateway/openapi/aws-gateway-openapi.json diff --git a/interop/aws-api-gateway/openapi/todo-openapi.json b/interop/authzen-api-gateways/aws-api-gateway/openapi/todo-openapi.json similarity index 100% rename from interop/aws-api-gateway/openapi/todo-openapi.json rename to interop/authzen-api-gateways/aws-api-gateway/openapi/todo-openapi.json diff --git a/interop/aws-api-gateway/package.json b/interop/authzen-api-gateways/aws-api-gateway/package.json similarity index 100% rename from interop/aws-api-gateway/package.json rename to interop/authzen-api-gateways/aws-api-gateway/package.json diff --git a/interop/aws-api-gateway/pdps.json b/interop/authzen-api-gateways/aws-api-gateway/pdps.json similarity index 100% rename from interop/aws-api-gateway/pdps.json rename to interop/authzen-api-gateways/aws-api-gateway/pdps.json diff --git a/interop/aws-api-gateway/scripts/deploy-lambda.sh b/interop/authzen-api-gateways/aws-api-gateway/scripts/deploy-lambda.sh similarity index 100% rename from interop/aws-api-gateway/scripts/deploy-lambda.sh rename to interop/authzen-api-gateways/aws-api-gateway/scripts/deploy-lambda.sh diff --git a/interop/aws-api-gateway/yarn.lock b/interop/authzen-api-gateways/aws-api-gateway/yarn.lock similarity index 100% rename from interop/aws-api-gateway/yarn.lock rename to interop/authzen-api-gateways/aws-api-gateway/yarn.lock diff --git a/interop/authzen-api-gateways/test-harness/.gitignore b/interop/authzen-api-gateways/test-harness/.gitignore new file mode 100644 index 0000000..b2d6de3 --- /dev/null +++ b/interop/authzen-api-gateways/test-harness/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/interop/authzen-api-gateways/test-harness/LICENSE b/interop/authzen-api-gateways/test-harness/LICENSE new file mode 100644 index 0000000..f858fc9 --- /dev/null +++ b/interop/authzen-api-gateways/test-harness/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Aserto + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/interop/authzen-api-gateways/test-harness/README.md b/interop/authzen-api-gateways/test-harness/README.md new file mode 100644 index 0000000..d6f7775 --- /dev/null +++ b/interop/authzen-api-gateways/test-harness/README.md @@ -0,0 +1,43 @@ +# AuthZEN API Gateway Test Runner + +## Setup + +### Install dependencies + +To install the application dependencies, run the following command: + +```shell +yarn +``` + +## Run tests against a PDP + +First, build the project using `yarn build`. + +Help for the `test` script: + +```shell +yarn test + +Usage: yarn test [] + + should be one of: + console + markdown + + and defaults to markdown +``` + +### Examples + +Run the test suite, output to console: + +```shell +yarn test https://authorizer.domain.com console +``` + +Run the test suite, output as markdown: + +```shell +yarn test https://authorizer.domain.com markdown +``` diff --git a/interop/authzen-api-gateways/test-harness/package.json b/interop/authzen-api-gateways/test-harness/package.json new file mode 100644 index 0000000..baea13e --- /dev/null +++ b/interop/authzen-api-gateways/test-harness/package.json @@ -0,0 +1,30 @@ +{ + "name": "authzen-api-gateway-test-runner", + "version": "0.1.16", + "description": "AuthZEN API Gateway test runner", + "main": "test/runner.ts", + "scripts": { + "build": "yarn clean && tsc", + "clean": "rm -rf ./build", + "tsc": "tsc --noEmit --incremental", + "test": "node build/runner.js", + "test-clean": "yarn build && yarn test" + }, + "keywords": [], + "author": "Omri Gazitt ", + "license": "MIT", + "dependencies": { + "cli-color": "^2.0.4", + "node-fetch": "^3.3.2" + }, + "devDependencies": { + "@types/cli-color": "^2.0.6", + "@types/node": "^17.0.45", + "@typescript-eslint/eslint-plugin": "^5.17.0", + "@typescript-eslint/parser": "^5.17.0", + "eslint": "^8.12.0", + "ts-node": "^10.7.0", + "typescript": "^4.6.2" + }, + "packageManager": "yarn@1.22.19" +} diff --git a/interop/authzen-api-gateways/test-harness/test/decisions.json b/interop/authzen-api-gateways/test-harness/test/decisions.json new file mode 100644 index 0000000..9e8e2a8 --- /dev/null +++ b/interop/authzen-api-gateways/test-harness/test/decisions.json @@ -0,0 +1,408 @@ +{ + "evaluation": [ + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } + }, + "expected": true + }, + + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } + }, + "expected": true + }, + + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } + }, + "expected": true + }, + + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } + }, + "expected": false + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } + }, + "expected": false + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } + }, + "expected": false + }, + + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } + }, + "expected": true + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } + }, + "expected": false + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } + }, + "expected": false + }, + { + "request": { + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } + }, + "expected": false + } + ] +} diff --git a/interop/authzen-api-gateways/test-harness/test/runner.ts b/interop/authzen-api-gateways/test-harness/test/runner.ts new file mode 100644 index 0000000..7bfce8f --- /dev/null +++ b/interop/authzen-api-gateways/test-harness/test/runner.ts @@ -0,0 +1,164 @@ +import clc from "cli-color"; +import { evaluation } from "./decisions.json"; + +const AUTHZEN_PDP_URL = + process.argv[2] || "https://authzen-gateway-proxy.demo.aserto.com"; +const AUTHZEN_PDP_API_KEY = process.env.AUTHZEN_PDP_API_KEY; + +enum OutputTypes { + MARKDOWN, + CONSOLE, +} + +const FORMAT = + process.argv[3] === "markdown" ? OutputTypes.MARKDOWN : OutputTypes.CONSOLE; + +type Endpoint = "evaluation" | "evaluations"; + +interface Result { + endpoint: Endpoint; + request: (typeof evaluation)[number]["request"]; + expected: (typeof evaluation)[0]["expected"]; + response?: boolean; + status: "PASS" | "FAIL" | "ERROR"; + error?: string; +} + +async function main() { + if (process.argv.length < 3) { + console.log(`Usage: yarn test [] + + should be one of: + console + markdown + + and defaults to markdown + `); + process.exit(0); + } + + const decisionFile ='./decisions.json' + const { evaluation, evaluations } = require(decisionFile); + + const results: Result[] = []; + + for (const decision of evaluation || []) { + const result = await execute(decision, "evaluation"); + results.push(result); + } + + for (const decision of evaluations || []) { + const result = await execute(decision, "evaluations"); + results.push(result); + } + + if (FORMAT === OutputTypes.MARKDOWN) { + console.log( + arrayToTable( + results.map((d) => { + return { + result: d.status, + request: JSON.stringify(d.request, null, 2), + }; + }) + ) + ); + } +} + +async function execute( + decision: (typeof evaluation)[number], + endpoint: Endpoint +): Promise { + const REQ = decision.request; + const EXP = decision.expected; + try { + const response = await fetch(`${AUTHZEN_PDP_URL}/access/v1/${endpoint}`, { + method: "POST", + headers: { + Authorization: AUTHZEN_PDP_API_KEY, + "Content-Type": "application/json", + }, + body: JSON.stringify(REQ), + }); + + const data = await response.json(); + const RSP = + endpoint === "evaluation" + ? data.decision || false + : data.evaluations || []; + + const result: Result = { + endpoint, + request: REQ, + response: RSP, + expected: EXP, + status: JSON.stringify(EXP) === JSON.stringify(RSP) ? "PASS" : "FAIL", + }; + + if (FORMAT === OutputTypes.CONSOLE) logResult(result); + return result; + } catch (error) { + const result: Result = { + endpoint, + request: REQ, + expected: EXP, + status: "ERROR", + error: error.message, + }; + if (FORMAT === OutputTypes.CONSOLE) logResult(result); + return result; + } +} + +function logResult(result: Result) { + switch (result.status) { + case "PASS": + console.log(clc.green("PASS"), "REQ:", JSON.stringify(result.request)); + break; + + case "FAIL": + console.log(clc.red("FAIL"), "REQ:", JSON.stringify(result.request)); + break; + + default: + console.log( + clc.yellow("ERROR"), + "REQ:", + JSON.stringify(result.request), + "Error:", + result.error + ); + break; + } +} + +function arrayToTable(array) { + var cols = Object.keys(array[0]); + var table = ` + + + + +`; + // Generate table body + array.forEach(function (item) { + const bgColor = item.result ? "green" : "red"; + table += ` + + + +`; + }); + + table += "
resultrequest
${String(item.result)} + +`; + table += "```js\r\n" + item.request + "\r\n```\r\n\r\n"; + table += `
"; + + // Return table + return table; +} + +main(); diff --git a/interop/authzen-api-gateways/test-harness/tsconfig.json b/interop/authzen-api-gateways/test-harness/tsconfig.json new file mode 100644 index 0000000..984c6f5 --- /dev/null +++ b/interop/authzen-api-gateways/test-harness/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "CommonJS", + "moduleResolution": "node", + "baseUrl": "src", + "outDir": "./build", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, + "resolveJsonModule": true + }, + "include": ["src", "test", "test/**/*.json"], + "exclude": ["node_modules"] +} diff --git a/interop/authzen-api-gateways/test-harness/yarn.lock b/interop/authzen-api-gateways/test-harness/yarn.lock new file mode 100644 index 0000000..7b76d56 --- /dev/null +++ b/interop/authzen-api-gateways/test-harness/yarn.lock @@ -0,0 +1,1170 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/cli-color@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/cli-color/-/cli-color-2.0.6.tgz#becc4b0c8509bbc938e7c3b2b7a0a8dd64691d08" + integrity sha512-uLK0/0dOYdkX8hNsezpYh1gc8eerbhf9bOKZ3e24sP67703mw9S14/yW6mSTatiaKO9v+mU/a1EVy4rOXXeZTA== + +"@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/node@^17.0.45": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + +"@types/semver@^7.3.12": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + +"@typescript-eslint/eslint-plugin@^5.17.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.17.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@ungap/structured-clone@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +cli-color@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.4.tgz#d658080290968816b322248b7306fad2346fb2c8" + integrity sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA== + dependencies: + d "^1.0.1" + es5-ext "^0.10.64" + es6-iterator "^2.0.3" + memoizee "^0.4.15" + timers-ext "^0.1.7" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.2: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +d@1, d@^1.0.1, d@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" + integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== + dependencies: + es5-ext "^0.10.64" + type "^2.7.2" + +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + +debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.2: + version "0.10.64" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" + integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" + integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== + dependencies: + d "^1.0.2" + ext "^1.7.0" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.12.0: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +ext@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.0.tgz#a82c6b7c2bb4e44766d865f07997785fecfdcb89" + integrity sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA== + dependencies: + reusify "^1.0.4" + +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" + integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== + +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +import-fresh@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +memoizee@^0.4.15: + version "0.4.17" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.17.tgz#942a5f8acee281fa6fb9c620bddc57e3b7382949" + integrity sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA== + dependencies: + d "^1.0.2" + es5-ext "^0.10.64" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-fetch@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +semver@^7.3.7: + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +timers-ext@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.8.tgz#b4e442f10b7624a29dd2aa42c295e257150cf16c" + integrity sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww== + dependencies: + es5-ext "^0.10.64" + next-tick "^1.1.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-node@^10.7.0: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type@^2.7.2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486" + integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== + +typescript@^4.6.2: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +web-streams-polyfill@^3.0.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/interop/authzen-interop-website/docs/intro.md b/interop/authzen-interop-website/docs/intro.md index d0abac9..16b45a4 100644 --- a/interop/authzen-interop-website/docs/intro.md +++ b/interop/authzen-interop-website/docs/intro.md @@ -4,14 +4,47 @@ sidebar_position: 1 # Introduction -The OpenID AuthZEN working group defined an interop scenario in the form of a Todo application. +The [OpenID AuthZEN working group](https://openid.net/wg/authzen) has defined a set of interop scenarios. These all are layered around a Todo application as a Policy Enforcement Point. -This site contains pointers to the scenario, payloads, and expected responses. +:::tip New in February 2025! +For the fourth AuthZEN interop event at Gartner IAM Summit in London (March 25 2025), we have added various [API Gateways](#architecture) as Policy Enforcement Points. +::: -It also contains results for the various vendors that support the AuthZEN protocol and participated in the interop testing. +## What you'll find here + +* Interop [scenarios](/docs/category/scenarios) for various drafts of the AuthZEN 1.0 authorization API +* Specifications for the [payloads](/docs/scenarios/todo-1.1) and expected responses +* Interoperability [results](#results-summary) for the vendors that have participated in the interop testing ## Interop video The following video demonstrates the Todo interop scenario and the structure of the demo application. + +## Architecture + +The latest scenario defines a defense-in-depth architecture, consisting of API gateways as an initial policy enforcement point performing functional / medium-grained authorization at the HTTP route level, and the relying party (Todo app) as another enforcement point, performing fine-grained authorization at the Todo level. + +![enforcement points](/img/enforcement-points.png) + +## Results summary + +| Implementation | [Todo PEP 00](/docs/scenarios/todo/) | [Todo PEP 01](/docs/scenarios/todo-1.0-id) | [Todo PEP 02](/docs/scenarios/todo-1.1/) | AWS Gateway PEP | Envoy PEP | +| -------------------- | -------------------------------------------------------------| ------------------------------------------------------------------- | ---------------------------------------------------------------- | --------------- | --------- | +| Aserto | ✅ [Results](/docs/scenarios/todo/results/aserto) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/aserto) | ✅ [Results](/docs/scenarios/todo-1.1/results/aserto) | ✅ | | +| Axiomatics | ✅ [Results](/docs/scenarios/todo/results/axiomatics) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/axiomatics) | ✅ [Results](/docs/scenarios/todo-1.1/results/axiomatics) | | | +| Cerbos | ✅ [Results](/docs/scenarios/todo/results/cerbos) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/cerbos) | ✅ [Results](/docs/scenarios/todo-1.1/results/cerbos) | ✅ | | +| EmpowerID | Did not participate | ✅ [Results](/docs/scenarios/todo-1.0-id/results/empowerid) | ✅ [Results](/docs/scenarios/todo-1.1/results/empowerid) | | | +| Hexa | ✅ [Results](/docs/scenarios/todo/results/hexa) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/hexa) | ✅ [Results](/docs/scenarios/todo-1.1/results/hexa) | | | +| Indikite | Did not participate | ✅ [Results](/docs/scenarios/todo-1.0-id/results/indikite) | ✅ [Results](/docs/scenarios/todo-1.1/results/indikite) | | | +| Kogito | ✅ [Results](/docs/scenarios/todo/results/kogito) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/kogito) | ✅ [Results](/docs/scenarios/todo-1.1/results/kogito) | | | +| Open Policy Agent | ✅ [Results](/docs/scenarios/todo/results/opa) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/opa) | ✅ [Results](/docs/scenarios/todo-1.1/results/opa) | | | +| Permit | ✅ [Results](/docs/scenarios/todo/results/permit) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/permit) | ✅ [Results](/docs/scenarios/todo-1.1/results/permit) | | | +| Ping Authorize | ✅ [Results](/docs/scenarios/todo/results/pingid) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/pingid) | ✅ [Results](/docs/scenarios/todo-1.1/results/pingid) | | | +| PlainID | ✅ [Results](/docs/scenarios/todo/results/plainid) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/plainid) | ✅ [Results](/docs/scenarios/todo-1.1/results/plainid) | | | +| Real Solid Knowledge | ✅ [Results](/docs/scenarios/todo/results/RockSolidKnowlege) | Did not participate | Did not participate | | | +| SGNL | ✅ [Results](/docs/scenarios/todo/results/sgnl) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/sgnl) | ✅ [Results](/docs/scenarios/todo-1.1/results/sgnl) | | | +| Thales | ✅ [Results](/docs/scenarios/todo/results/authzforce) | Did not participate | Did not participate | | | +| Topaz | ✅ [Results](/docs/scenarios/todo/results/topaz) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/topaz) | ✅ [Results](/docs/scenarios/todo-1.1/results/topaz) | | | +| 3Edges | ✅ [Results](/docs/scenarios/todo/results/3edges) | Replaced by Indikite | Replaced by Indikite | | | diff --git a/interop/authzen-interop-website/docs/scenarios/api-gateway/_category_.json b/interop/authzen-interop-website/docs/scenarios/api-gateway/_category_.json new file mode 100644 index 0000000..9e99dfb --- /dev/null +++ b/interop/authzen-interop-website/docs/scenarios/api-gateway/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "API Gateway (1.0 Draft 02)", + "position": 4, + "link": { + "type": "generated-index", + "description": "Payload spec and results from the AuthZEN 1.0 Draft 02 interop at Gartner IAM Summit Lodndon 2025." + } +} diff --git a/interop/authzen-interop-website/docs/scenarios/api-gateway/index.md b/interop/authzen-interop-website/docs/scenarios/api-gateway/index.md new file mode 100644 index 0000000..0ec68bf --- /dev/null +++ b/interop/authzen-interop-website/docs/scenarios/api-gateway/index.md @@ -0,0 +1,420 @@ +--- +sidebar_position: 1 +--- + +# Payload Spec + +This document lists the request and response payloads for each of the API requests in the API Gateway / Todo interop scenario. + +> Note: These payloads and corresponding interop results are for the [AuthZEN 1.0 Draft 02](https://openid.net/specs/authorization-api-1_0-02.html) version of the spec. + +:::tip +This is a copy of the payload document defined by the AuthZEN WG. The definitive document can be found [here](https://hackmd.io/ecYxP6uxSCm5X0RexkAM2g?view). +::: + +## Context + +The API Gateway scenario layers on top of the existing Todo scenario. + +In this scenario, there are two policy enforcement points - the API gateway, and the Todo app itself. + +![enforcement points](/img/enforcement-points.png) + +## Todo app: fine-grained authorization +Currently, the Todo authorization scenario relies on the application to supply the OwnerID for each Todo. The application retrieves this from a SQLite database, which is not exposed/accessible to the API gateway. + +Therefore, only the application has all the data to be able to correctly formulate the question "can this user perform this action on this specific todo". + +This scenario is documented [here](https://hackmd.io/gNZBRoTfRgWh_PNM0y2wDA) and remains unchanged for the Gartner inteorp. + +## API gateway: medium-grained authorization + +The API Gateway can do "medium-grained authorization" (also known as "functional authorization") in this scenario, formulating the question "can this user invoke this HTTP method on this route". + +The remainder of this document describes the endpoints that the React application invokes (and the API gateway proxies). + +For each endpoint, it documents the payload the AuthZEN requests that participating gateways will issue to AuthZEN-compliant PDPs, and how the PDPs should respond to each request. + +Participating PDPs will, therefore, employ TWO policies: one for the existing fine-grained authorization scenario, and a new policy to handle the route authorization done by the Gateway (which will be referred to as "medium-grained authorization"). + +## Overview of the scenario + +The Todo application manages a shared todo list between a set of users. + +There are 5 actions that the Todo application supports, each with a permission associated with it: + +| Action | Permission | +| -------- | -------- | +| View a user's information | `can_read_user` | +| View all Todos | `can_read_todos` | +| Create a Todo | `can_create_todo` | +| (Un)complete a Todo | `can_update_todo` | +| Delete a Todo | `can_delete_todo` | + + +There are four roles defined: +* `viewer` - able to view the shared todo list (`can_read_todos`), as well as information about each of the owners of a Todo (notably, their picture) (`can_read_user`) +* `editor` - `viewer` + the ability to create new Todos (`can_create_todo`), as well as edit and delete Todos *that are owned by that user* +* `admin` - `editor` + the ability to delete any Todos (`can_delete_todo`) +* `evil_genius` - `editor` + the ability to edit Todos that don't belong to the user (`can_update_todo`) + +There are 5 users defined (based on the "Rick & Morty" cartoon), each with one (or more) roles, defined below in the Subjects section. + +## Component description + +The interop consists of the following components: +- a simple React frontend that manages Todo lists. +- a Node.JS backend that serves 5 routes that the frontend talks to. +- API gateways provided by interop participants, which proxy these 5 routes, and perform route-level (medium-grained) authorization +- external PDPs provided by the interop participants, which the API gateway calls using the AuthZEN API to issue authorization decisions. + +The URIs listed in the document below are the contracts between the React app and the Node.JS backend. + +The payloads listed below are the contract between the API Gateway (the PEP) and the PDP. + +## Subjects + +Note: in every request payload, the subject indicated by `` is one of the following strings: + + +| User | PID | +| -------- | -------- | +| Rick Sanchez | CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs | +| Morty Smith | CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs | +| Summer Smith | CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs | +| Beth Smith | CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs | +| Jerry Smith | CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs | + +This will be extracted from the `sub` claim in the JWT passed in as a bearer token in the Authorization header of each request, and passed into the AuthZEN request. + +## Attributes associated with users (expected to come from PIP) + +These are noted below in JSON format, with the key being the PID string from the table above, and the value being a set of attributes associated with the user. + + +```json= +{ + "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs": { + "id": "rick@the-citadel.com", + "name": "Rick Sanchez", + "email": "rick@the-citadel.com", + "roles": ["admin", "evil_genius"], + "picture": "https://www.topaz.sh/assets/templates/citadel/img/Rick%20Sanchez.jpg" + }, + "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs": { + "id": "beth@the-smiths.com", + "name": "Beth Smith", + "email": "beth@the-smiths.com", + "roles": ["viewer"], + "picture": "https://www.topaz.sh/assets/templates/citadel/img/Beth%20Smith.jpg" + }, + "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs": { + "id": "morty@the-citadel.com", + "name": "Morty Smith", + "email": "morty@the-citadel.com", + "roles": ["editor"], + "picture": "https://www.topaz.sh/assets/templates/citadel/img/Morty%20Smith.jpg" + }, + "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs": { + "id": "summer@the-smiths.com", + "name": "Summer Smith", + "email": "summer@the-smiths.com", + "roles": ["editor"], + "picture": "https://www.topaz.sh/assets/templates/citadel/img/Summer%20Smith.jpg" + }, + "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs": { + "id": "jerry@the-smiths.com", + "name": "Jerry Smith", + "email": "jerry@the-smiths.com", + "roles": ["viewer"], + "picture": "https://www.topaz.sh/assets/templates/citadel/img/Jerry%20Smith.jpg" + } +} +``` + +The PIP can, of course, express this in any way they desire. The policy for each implementation has its own contract with its PIP, and this contract is outside of the scope of the PEP-PDP interop scenario. + +## Requests and payloads + +Unless otherwise noted, these are payloads for the `evaluation` API, and are meant to be sent using the following HTTP(S) request: + +```http= +POST /access/v1/evaluation HTTP/1.1 +Host: mypdp.com +[Authorization: Bearer ] +``` + +### `GET /users/{userId}` + +Get information (e.g. email, picture) associated with a user. This is used by the backend to render the picture of the user that owns each todo. + +For simplicity, the policy always returns `true`. + +#### Request payload + +```json= +{ + "subject": { + "type": "user", + "id": "" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + }, + "context": { + } +} +``` + +> Note: +> Each of the `subject`, `action`, `resource` fields MAY contain additional key/value pairs in the `properties` field - for example, additional information about the subject or resource. In addition, the `context` field MAY contain additional key/value pairs - for example, HTTP headers for the request. +> HTTP Gateways that map these into standard locations as per the [AuthZEN REST API Gateway Profile proposal](https://hackmd.io/MTJPf_vzSmubctNtHis99g) are compliant with these payloads. The PDPs, however, will ignore those extra fields for the purpose of this interop showcase. + +#### Response payload + +For every subject and resource combination: + +```json= +{ + "decision": true +} +``` + +### `GET /todos` + +Get the list of todos. + +#### Evaluation API payload + +For simplicity, the policy always returns `true` for every user. + +##### Evaluation API Request payload + +```json= +{ + "subject": { + "type": "user", + "id": "" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + }, + "context": { + } +} +``` + +> Note: +> Each of the `subject`, `action`, `resource` fields MAY contain additional key/value pairs in the `properties` field - for example, additional information about the subject or resource. In addition, the `context` field MAY contain additional key/value pairs - for example, HTTP headers for the request. +> HTTP Gateways that map these into standard locations as per the [AuthZEN REST API Gateway Profile proposal](https://hackmd.io/MTJPf_vzSmubctNtHis99g) are compliant with these payloads. The PDPs, however, will ignore those extra fields for the purpose of this interop showcase. + +##### Evaluation API Response payload + +For every subject and resource combination: + +```json= +{ + "decision": true +} +``` + +### `POST /todos` + +Create a new todo. + +The policy evaluates the subject's `roles` attribute to determine whether the user can create a new todo. + +#### Request payload + +```json= +{ + "subject": { + "type": "user", + "id": "" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + }, + "context": { + } +} +``` + +> Note: +> Each of the `subject`, `action`, `resource` fields MAY contain additional key/value pairs in the `properties` field - for example, additional information about the subject or resource. In addition, the `context` field MAY contain additional key/value pairs - for example, HTTP headers for the request. +> HTTP Gateways that map these into standard locations as per the [AuthZEN REST API Gateway Profile proposal](https://hackmd.io/MTJPf_vzSmubctNtHis99g) are compliant with these payloads. The PDPs, however, will ignore those extra fields for the purpose of this interop showcase. + +#### Response payload + +Only users with a `roles` attribute that contains `admin` or `editor` return a `true` decision. In the user set above, this includes Rick, Morty, and Summer. + +```json= +{ + "decision": true +} +``` + +For the other two users, Beth and Jerry, the decision is `false`. + +```json= +{ + "decision": false +} +``` + +### `PUT /todos/{todoId}` + +Edit (complete) a todo. + +The policy allows the operation if the subject's `roles` attribute contains the `evil_genius` role OR `editor` role. + +The Node.js back-end allows users with the `evil_genius` role to complete ANY todos, but only allows users with the `editor` role to complete their own Todos. + +However, given the fact that the incoming HTTP request DOES NOT include information about the owner of the Todo, the API Gateway, which only performs **medium-grained authorization**, allows any `editor` or `evil_genius` to execute this operation (which means) passing it to the Todo back-end to perform **fine-grained authorization**. + +#### Request payload + +```json= +{ + "subject": { + "type": "user", + "id": "" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + }, + "context": { + } +} +``` + +> Note: +> Each of the `subject`, `action`, `resource` fields MAY contain additional key/value pairs in the `properties` field - for example, additional information about the subject or resource. In addition, the `context` field MAY contain additional key/value pairs - for example, HTTP headers for the request. +> HTTP Gateways that map these into standard locations as per the [AuthZEN REST API Gateway Profile proposal](https://hackmd.io/MTJPf_vzSmubctNtHis99g) are compliant with these payloads. The PDPs, however, will ignore those extra fields for the purpose of this interop showcase. + +#### Response payload + +Only users with a `roles` attribute that contains `evil_genius` (Rick), OR `editor` (Morty and Summer), return a `true` decision. + +For the user Morty, the following request will return a `true` decision: + +```json= +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + }, + "context": { + } +} +``` + +```json= +{ + "decision": true +} +``` + +For Jerry (who is a `viewer`), the decision will be `false`: + +```json= +{ + "decision": false +} +``` + + +### `DELETE /todos/{todoId}` + +Delete a todo. + +The policy allows the operation if the subject's `roles` attribute contains the `admin` role OR `editor` role. + +The Node.js back-end allows users with the `admin` role to complete ANY todos, but only allows users with the `editor` role to complete their own Todos. + +However, given the fact that the incoming HTTP request DOES NOT include information about the owner of the Todo, the API Gateway, which only performs **medium-grained authorization**, allows any `editor` or `admin` to execute this operation (which means) passing it to the Todo back-end to perform **fine-grained authorization**. + +#### Request payload + +```json= +{ + "subject": { + "type": "user", + "id": "" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{id}" + }, + "context": { + } +} +``` + +> Note: +> Each of the `subject`, `action`, `resource` fields MAY contain additional key/value pairs in the `properties` field - for example, additional information about the subject or resource. In addition, the `context` field MAY contain additional key/value pairs - for example, HTTP headers for the request. +> HTTP Gateways that map these into standard locations as per the [AuthZEN REST API Gateway Profile proposal](https://hackmd.io/MTJPf_vzSmubctNtHis99g) are compliant with these payloads. The PDPs, however, will ignore those extra fields for the purpose of this interop showcase. + +#### Response payload + +Only users with a `roles` attribute that contains `admin` (Rick), OR `editor` (Morty and Summer), return a `true` decision. + +For the user Morty, the following request will return a `true` decision: + +```json= +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + }, + "context": { + } +} +``` + +```json= +{ + "decision": true +} +``` + +For Jerry (who is a `viewer`), the decision will be `false`: + +```json= +{ + "decision": false +} +``` diff --git a/interop/authzen-interop-website/docs/scenarios/api-gateway/results/_category_.json b/interop/authzen-interop-website/docs/scenarios/api-gateway/results/_category_.json new file mode 100644 index 0000000..1a3992b --- /dev/null +++ b/interop/authzen-interop-website/docs/scenarios/api-gateway/results/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Results", + "position": 3, + "link": { + "type": "generated-index" + } +} diff --git a/interop/authzen-interop-website/docs/scenarios/api-gateway/results/aserto.md b/interop/authzen-interop-website/docs/scenarios/api-gateway/results/aserto.md new file mode 100644 index 0000000..78b7873 --- /dev/null +++ b/interop/authzen-interop-website/docs/scenarios/api-gateway/results/aserto.md @@ -0,0 +1,573 @@ +--- +sidebar_position: 1 +--- + +# Aserto + +Interop results for the [Aserto](https://www.aserto.com/) implementation hosted at https://authzen-gateway-proxy.demo.aserto.com. + +For more information, please refer to the [code](https://github.com/aserto-dev/authzen-gateway-proxy). + +## Test results + +```bash +yarn test https://authzen-gateway-proxy.demo.aserto.com markdown +yarn run v1.22.19 +$ node build/runner.js https://authzen-gateway-proxy.demo.aserto.com markdown +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
resultrequest
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
diff --git a/interop/authzen-interop-website/docs/scenarios/api-gateway/results/cerbos.md b/interop/authzen-interop-website/docs/scenarios/api-gateway/results/cerbos.md new file mode 100644 index 0000000..e34c935 --- /dev/null +++ b/interop/authzen-interop-website/docs/scenarios/api-gateway/results/cerbos.md @@ -0,0 +1,571 @@ +--- +sidebar_position: 2 +--- + +# Cerbos + +Interop results for the [Cerbos](https://cerbos.dev) implementation hosted at `https://authzen-proxy-demo.cerbos.dev`. + +## Test results + +```bash +yarn test https://authzen-proxy-demo.cerbos.dev markdown +yarn run v1.22.19 +$ node build/runner.js https://authzen-proxy-demo.cerbos.dev markdown +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
resultrequest
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDA2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDE2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDI2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDM2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/users/{userId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "GET" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "POST" + }, + "resource": { + "type": "route", + "id": "/todos" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "PUT" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
PASS + +```js +{ + "subject": { + "type": "user", + "id": "CiRmZDQ2MTRkMy1jMzlhLTQ3ODEtYjdiZC04Yjk2ZjVhNTEwMGQSBWxvY2Fs" + }, + "action": { + "name": "DELETE" + }, + "resource": { + "type": "route", + "id": "/todos/{todoId}" + } +} +``` + +
diff --git a/interop/authzen-interop-website/docs/scenarios/api-gateway/results/img/docsVersionDropdown.png b/interop/authzen-interop-website/docs/scenarios/api-gateway/results/img/docsVersionDropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..97e4164618b5f8beda34cfa699720aba0ad2e342 GIT binary patch literal 25427 zcmXte1yoes_ckHYAgy#tNK1DKBBcTn3PU5^T}n!qfaD-4ozfv4LwDEEJq$50_3{4x z>pN@insx5o``P<>PR`sD{a#y*n1Gf50|SFt{jJJJ3=B;7$BQ2i`|(aulU?)U*ArVs zEkz8BxRInHAp)8nI>5=Qj|{SgKRHpY8Ry*F2n1^VBGL?Y2BGzx`!tfBuaC=?of zbp?T3T_F&N$J!O-3J!-uAdp9^hx>=e$CsB7C=`18SZ;0}9^jW37uVO<=jZ2lcXu$@ zJsO3CUO~?u%jxN3Xeb0~W^VNu>-zc%jYJ_3NaW)Og*rVsy}P|ZAyHRQ=>7dY5`lPt zBOb#d9uO!r^6>ERF~*}E?CuV73AuO-adQoSc(}f~eKdXqKq64r*Ec7}r}qyJ7w4C& zYnwMWH~06jqoX6}6$F7oAQAA>v$K`84HOb_2fMqxfLvZ)Jm!ypKhlC99vsjyFhih^ zw5~26sa{^4o}S)ZUq8CfFD$QZY~RD-k7(-~+Y5^;Xe9d4YHDVFW_Dp}dhY!E;t~Sc z-`_twJHLiPPmYftdEeaJot~XuLN5Ok;SP3xcYk(%{;1g9?cL4o&HBdH!NCE4sP5eS z5)5{?w7d>Sz@gXBqvPX;d)V3e*~!Vt`NbpN`QF~%>G8?k?d{p=+05MH^2++^>gL7y z`OWR^!qO_h+;V4U=ltx9H&l0NdF}M{WO-%d{NfymLh?uGFRreeSy+L=;K`|3Bnl0M zUM>D-bGEXv<>loyv#@k=dAYW}1%W`P<`!PiGcK&G-`-w7>aw=6xwN*)z{qlNbg;3t z^O)Pi!#xywEfk@@yuK+QDEwCaUH{;SoPy%*&Fy2_>@T??kjrXND+-B>Ysz{4{Q2bO zytdB!)SqeR7Z*b#V`wz;Q9sbwBsm#*a%;Z0xa6Pm3dtYF3Ne7}oV>>#H$FLyfFpTc z@fjI^X>4kV`VsTHpy&bqaD992>*x36$&m_u8MOgAKnr zix1C^4Kv*>^8IV-8_jZkZSn%yscddBFqkpaRTTAnS5A$!9KdgBseck^JSIQS`wRWHIZ&85f`i++% z68t8XiOy$@M67#u+Xi6bxpuq+`HWa<2?N@OcnUhX?Fa0ucuMgFJFc-@1+=(NlQ>>F zRDxG-|GOh}P`zp=#(X0xY7b!pCjittaWhLjHXBB#-Po`?sO81ZebXXp;sg3B6U;yT z7ltQRr)1+s9JQ^V!592xtqynFYr$yy)8J4=_Fovpb*N%#EBk3~TNxng@wp@YN7Lqp zrjUU+o-9X*B{;#FfWF+8xsS-jI`K=*Kw`Xfb@RSO_U)QsNHa<|mWk9yQ?OwtR*_xq zmD=jg&|q#_bdPo=j-*xO@t@Lx#ApL+J`iqWlGkq6;4fv@4RCK_O9tc(xtrrh=-c5R z69GA#i8S&gK?|;>DM8&0G0qF?C*`-kOcVP3)1oi%f47pC4CS=HBdpf`E)$Hno3D*LM*Mxsl@|fX(Xf%aXWP!}X9^S#Vk`h=79=r%L^l^YWXw_fRl+4teQ3x9_*k%}TKmP12k&)U zMNC;?1$T%`tp^#EZUUbydm4SOs@A)}3PP>tiL3j_W06pb3vSHu)DJU-0m)ledRGV0 zJ|rcZ1U@_hCyPE6_-wiimvjR3t);y*Qdi`BKX*PP29RBAsD8W-^u0fLrRq zwCLWC=t#&Nb(JimFikS-+jq}=-klKJuPf|#4pY8f?a%e6U2$1>GPfs~QJLAlns4;O zgz6*qdCCdKNu92Gtjo^ob%T4S7Qi-4NMGg1!+m0yH08I3TITyT6-g}m=2u_lckZ^e zq;^$v+pjrNbh#BOPdii=sJ1bq8F?sZTJcTI5o-P0V#bJPYY`?awnv-41^CJh$BpLP z@aNtrc;&0^lO>O1M4Is=8YA9!yo9_AI^mA7`Aw!579-QByLL>P$1D=@r}QPn38D;% zpBWvkXSRS?b^4Pq$yjf%7Lcq#0#b>rLc!^-G|4-BD83fHp~~6CQ_U~u{@(n0go&P^ zDHT6>h=0KJ)xPF^Wh5@tUEbM@gb&7vU*9YcX;|;ESv3bj^6HmWbTMt;Zj&y(k;?)$ z!J2pIQeCULGqRb5%F}d?EV$v(x+Zqs7+Bj<=5FIW5H^? z1(+h@*b0z+BK^~jWy5DgMK&%&%93L?Zf|KQ%UaTMX@IwfuOw_Jnn?~71naulqtvrM zCrF)bGcGsZVHx6K%gUR%o`btyOIb@);w*? z0002^Q&|A-)1GGX(5lYp#|Rrzxbtv$Z=Yht;8I!nB~-^7QUe4_dcuTfjZzN&*WCjy z{r9Sr^dv=I%5Td#cFz>iZ_RSAK?IMTz<%#W)!YSnmft3Nlq~(I`{`Uk-Wm83Cik$W zA>ZEh#UqV*jtmtV`p(`VsJb>H>??z9lR#V(`9^UEGvTix4$!-_w1?L1)oZ^W!E0k* zCB7_q(G~1Q3x6mPdH1`hse+Jq;+?Cw?F&D*LQhHFoFJdd@$J@~sOg%)cymn7a4znI zCjvkBKBOSb2*i~|Qom$yT*r{rc!0nX+M`4zPT|h~`eXtS!4FPTH0(?%$=fr9Tr*nb z(TR6>{L$7k2WHlqIT4J->W-mYgM)ac(R(z56AY2Kiex&W>I$p+&x#bMNS&|p@eWOy zGD7es5=6U#uG^J26B@SERc=i`I+l4_*`E_OxW=&=4|rH=p;$GB!%As!i|~ypyq`M{ zX5L!TI*|QR-pt7Y$irT5b=w9KcWKG5oX;$>v|GNckJ5XfdZ#KHirMyigcqZ9UvabrO{ z8rDp1z0Fr%{{|@&ZFm^_46S#?HL)}=bp45eUvA1gf(mODfe+cGcF$6-ZaI;NvMu;v zcbHrkC+lE z7RwO#m?)*hw^|}s-z?wPDEMJ2%Ne3)j0Dnt?e(@i?bf<+s^BM?g^S5YKU~rg%aeTl zJf0#GyUY|~Y;9SV_?#uV9<{xsFjl^YeW{@1$61GkUgc9Xv6cL@uB^M?d@o7H zHKV^XV(Q|Q%Geas3dw$Jn&atPqxYB>>Ii<#Zv+@N8GYs#vrxfbS_%zJ#18<+55b3yBCV#A}|5J8EAtdUd zn{=~8r&YaM_GB^l@6D_xfSvmbrbJP^&RZ{np(I^~Osf9d>=xz;@EnY?(Egg`%_&Vt zJA2@>$gsV@XFKh@>0z#d4B>B{^W%bCgT;)f6R|f%yK=!bN2w`BOC_5VHz(Q+!7ID^ zl#oQ>nDe2!w&7tLJ8#8wzN%$7@_>{Hh2xdID<0$kb*>G$17$S3grFXLJQ>4!n!>-B zn>~N~Ri%vU@ccS?y8BTR)1#fe2q zlqzp;&z9I1lrZ*4NJn00*0|iPY)Z0d$3NTJ9HNQ+?JI;37?VSbqMkdoqyCsG=yp1B z-3WO8>t^=Fj^?PT?(-0dZ8y_FL2Z9`D!m-7Dgr7r>V~Rm8RQ@w>_PrbFo$N_#jGzx zKC&6u^^M`8cdv1&AJ-O}jSqCR94J?FnYw!JN3(k7cejfuS`7-j*t4GNaKH@|kkrB_uY?<%tF27r;kVj(nzxph1JsFr z#*%R0;+(NAevpx|F8|sz9}SI%^z@E#+KR{}h1fyNXo6z$e*+nNx|qKR4DoCl0?&Q@ zs8_MHOw&gA$VQz4yIo@Zg{!M@m9v_4{_V!x@I>5ZaG$rcOvUm9O0DW9tR>#oyg@l8O!7%+a(wcN zU}SdcI3?TjNeNXmMJ!GUx@tFbszrKU5?ewMLA zJ)^SSUMDXb)yO8<*A&?2bBN&NEk{+9q~*w%k^+OUs)b@Fs#!)#9E-|}*u zWAn}H61Uy!41$}d1d44D;guxTx^kD367XWM%5Dea)6$5&n;))D;D^r~G=m$CqS7L! zmLX|kejC<`PU-rS#;n2Y0*4;&?(ROps&9eVSDoY%G@-4kyG5AX|Fu&1M5Gm0(-Z6v%1@fS9$`LGCB zlH8i;1e!(dUd#1c@G(-^QedB)$yJ~Yke{h3 z$#|*Md8c7)??v!utM3QJT7mN@DE%_r@BYhvf))3qME|n>shVP(03fO0{Iye<3)wv9 zoYDZ$wDak&n*QW`-s6KKDk5X1OQ_ramOCv4gjh1}jy%9GX!s!hq`NW)&%o9y+YrmT z+u!YGVhHBA*{|c;^}Xg)elpF+dMcpHNALqheHQIX<8J#~;Ah^+Dw~L#CynKWfTWCu zCEbY3ybkQ225nUxd$i6(3SN^?}z{r>!_8$YiwX~LE`rzuT=q!8;h{UbMWDGL@VpWm; zZtr3$23sHj`&Co0No!R|5#Vt7{9}j|TwplkHdT=aUeQ*;9XQ2uW1WUTbA%kHwMR|UUq0xTEetKps9KmNYAS5aY+L31z8w-k=r7r5hSK=6A!^nU z8C>n~S?X}?D5`5c5&2wA0cxo;KgFAi4N2T%LF4fWoMQ=CTo>=1mjvBvW;|iPUB>xW z?K5>~6VIpJYo28I)EFl&7dAhqrB6A-(e-)leVf;X*$GA~eVokc6j+rvRq{{fZth{*dW0`N_!2w6Ll9fV z{aJuKFd-zavy0~QH9hD;H%Q(_Zn7nY>AkaeKuL7Q@G02wArkDPH53Qg5JGaH{_ehi z35yHf_=pB1wY&Ak3EZ-^Ml}MxJh6d_Z}jDN7RTDy68ton&H$4=>#b4w904+;t6CcZ zMtV{hLGR06a?g$sZA#7RlKPF4Bqk=}`#oc=#~O;oUX7hbb^NY3f2Nin?(&;E?zVkm zN}OTyV%mP6T5(MT-syZn(K?c9sk)z$K0AQvvk9#%4%)evu)aOXbB;x-*G5ljx|A;$ zZmCV}y(IS$SYPVS%g#3~I9lE#erA)7BgOkZC}~2)7B_BBStEVtr1+0nv{(A%zhmjT zsE;^zwY5(ZCyf%wwr*SJyK_?Gv_p!Oc-8$W?a03T_8q zb=XB6)**gF9AoG(=dN9-4yO7)FI}g2!0UFua`5ASTp*W2K#(fpZHPv2}6 zuI3YRPb*T9uhpKUc zPNT}NbGpABC}F~2UYA?vuN z*c2)mWKvZn<+PL%-Oq3lAhrw_j}+<$Tfvgoo)dRh((_MP7Iz=PwI|1>aObW5-b8qW zI@O0@c{EbVHN5a6k}i4y2?Jh~=Jd-MZnv)h^T1;2CAllrl%EHm`1{XUiW<7g+6{XS z&hVyh5*+TiVaO)+4PE3HcnsJajGx>gwo1EcWg^*Rn0l!#MVM%(Ywui_UjM8Dgspk@ z4`gne14lZ*`698%UOOx^(v_~kQiYj`WkY>(f5KDC5I{-Wi!KoINK)H^9m|SUliD=d zE;N>?`0x*{61(==UBrN}mpsdhOZ2N~I>oQ1avz|nvyfQQW_R6VAnn;IzqlxDB)0_Zw_Csf#5sdmb4LBwIyBk zv$NL*@acUJc4`FtA^-PzoHR zKXm{;9xP9kWW6MEPYuCeDqX@UiY(8GShF|L{-)R4_acdmp+&W~4nBxde z;pI70##wwE$hfIrpx@VQ`Yc>|xSP$S8~WoVKTg5Z*KMWE)Yp>$m>ZoNQ(u!z-#`mL z1jJZHKZ}Tc5Ap^(*KIg6ol~wx)s~So91kdWaF2c{?F58%EDiT9uV&xYWvS{aFS{hE zg--eu{(>bL!0h)=md^{aR(APus_Mr}+}|%Rb(>B&dHn3fw9>d3rkDH6x0-@)^Dkwj zjb75;-8>7gmW&$y_4x~rPX!&!>l3d<-kfo+g{PIl%s;UQ)Y+u z4&z}r;Sd{hco!{2a3}F*4CAcydj7`#V0_iRg%G&NxtQpm=(5VbGfiRW^NoBJ1rPE# zzYktZRk7>`{fdU((V`a+T{&n=cnr4LaS!S|hDOtXWb>_e-LwH+@FmdGw>6+B9J6~} zcBaNb(<-c6&|ghc-%o3xG(Op-q&pXd1CfV zgPNdKX~vGy-LS;4Q=161sLAoMaXGG7weBcT%KmWHZ${+6bC6yehCjqK36LdH>fR!{ z>Xe}eUaWsRp8U1&?E`K@0*oHDY-p{^+u0T&$b)J}|G6C(lSRuN&WgUd(rH=0h9hUz zj|U@1UmNWdbn)SLk^KR_nRxbB`hNKP>?@ocdEL;;1l||Q0{~Zx5N5FT_ z8{|xM9~@McIdv|?#WPK>1b&f`?=bvMO>?(;W^}|VZ|%*&C_rsnS5&E~%`>$1I#;~* zn=Wx?omuI3X^Q4D$;n_~HEv`6`Rwl7C)iTwB5O~BB+$PgQTGE~V(6h;78q+*a8tK* zi)1P_7BY;9ea2|o@l#u>z4b#X%;a|nTq^l*V({7P;k z=t-%I--DL{uv#dVtaWg|q`lNci7#N7sC(@vBesWbHEY@Gb4`DozcU20N<=vl;-%s5 z!WzFm74mydG1Hjwdk!c_6!|q+Noz5>DrCZ!jSQ+Yjti$3pBqeRl}Wv|eimpd!GOY~ zDw@@tGZHFbmVLNc^ilgjPQ1os7*AOkb2*LRb{O-+C97i_n z2I@>^O)#WwMhxr4s;^U&se%2V#g)$UMXcXHU)C<7ih`meC7t?9h6U9|gRL%vjBW=4 zyJ(KaCRlNg`fO6a(x7h==WMvQG|_Skr4D&0<8t`N`#*Y0lJn{f4xjR5Q%h*qiJ!9l z{{3xuZ%nm38N+XqLO_y}X{{=Z1sg+iy?Wk0(xmzIV8KVwj}M}&csjjc2tOdzyInRf zj&mB~+`^C>=hnyxW|Ah^U8Pcl0}jx|K^QWjuTpX%S?_Y({asp@tk2!qmNiJscA|3v`}jyo*ALZ(Rr*ar91T`}p~N<62j4RJ|PDBQI3t8Cdh) z?R$X25f31}sp@&0jG5+in zs$WmohuauhuK4uZ1iNJsy2T@EuDDT=`&$LT=jKS^o}44OK5cA$zAzZq&gS)a(=xC7 zC(q}(#ncl6@1^p;YG?lVnJ)t^7Ky53%ZtMKP6FKlx|zSaeDQD~}Xbf@cZU>-AI+P+4hN52dWFDA$qg=0!5}U9qLoblC z?2V$GDKb=Lv@me&d%DST)ouSOrEAoGtLxcGg1~Kmzbq?}YUf=NjR9D?F9<}N_ZiNa zZhdC>2_z-iy!(9g9{n11i3|~!hxmAYX6z9olmC=&YcsiKI;&XK#&iSd&6&{u1@Hd^ z&}sU>_G+y}Gi-8`-k*Exr{a$>MNGj_u%u$;s_fOjknwYR-qt1G|mi}nQ%CB|0Vp`=0tc2y(3 zJ}XmzSQQ~(SfJW-|mT1TaDmxNCml#nWVyhIvX z5(>8xARd*joOU-U;Dfj+E+nUJC25bpe>!0L^f@BXZEW73UVfjT$=FTfw8u@h@$hDQ zVua*ub@?Dlc%%H2Kt+bYLb>$(@roZ+vrM&so0RO(eTY12?=Hk4*qI39-0yU@%aQU) zh(=Pxi6yISqhKQ$i^SEeyiioo-1GNY25sM+qoj*Y3&qp^8_)87sMwbecGG~;>|9TP zREo(Axioj6Z+vp*b2~Yp&YghcPwB1H+J6C`1#2tPkLCkZ%eJSah9>34C6}Wx52PW# z^-a1fn~bY&PC$SE9!mvprG5JAMZ8#PQ1utYB%g4fm*YwmC=|j!Ynky<|7ZL;!BWr3 zFawY3dr};&T$Ip3YmV+)De<*8`l~v0VwiNIPNf3|&X$o&6@|n6LRM@CjYQR1 zWBH=K@#i3!;27}0=N!39tP9ZWSn8M>14nC%WHmBMuFJAk%Lb z3uC1S9h$5}_+BVizP47z7mQl9&0QY+JB+^dI{s zw`OaYK6by8i7`3&)Phx%c((j7B1YUWiF2MMqu4sv*rJ!i;BLj(fq}XbxPz*4fPY?O z@*Ky#cmpT^|NpZ9uUqz`68dgR9jtzXj=}e&QRIn}pQRT9PLxt|PUrc*i*0b!XrG!5 zn0}>27K&TEtQcrzD<@JD6Z~^YE+@bp^w7O54P0!hf0Y2>E)Q-^2GDnxCg+6##J=z7 z@ngMS&`rDgl6d+JcSuka%Z?(3I;F~=S0|1#j5>jeKEQlh=sBqfv!hBN|;yTWLomu=my`^LYikzJ(>0epsIY)kU18UXtB-3pcSlnHT_D|^@nAOvSZ&U8G z2j{}BU*x=`J<)n1d{C?*L9G7(UY zOa>7`PWnsf0_A36hyo=b^S{8-brz>TuX+X?u5rOaa-i+Qwt#GO{msTqNOcGW+e>Es zB9jlrN(d>)QU5{6)p@F-7=X4^mJ_o0PmD`XJxKX3yEPtUxGs`3c=nmm=R})T1N{pn z-4`5~hgSH{OLb&X7JJ{Kc!m~cw^Px|bf;E_^&_m2-RyF$>hpwb^&OK2x<&5mZY$DQ zM*Ba9X2yg~f2CrRi%7#Gmj8ToW&RX3woB;vaQS~RStNrN_ip=L(D5O`5ARa1*tbl$ zz*z9~cch#eZ(SfXecVU8>@a)YoW^a+0f3~j0Y?^-$NJeZx)){fSvT?~Oz zr|rs5)}M)5nL!oe|LIs_Tje3%Izv_8s~up;gZHa$tJ2apK4+*%@ezaqN}(Z)Knf?w z50}vMb<0<55q_7mTNOQDi&W|)caK!E^KS2+JE#Q+@^xmQv>inXC5o`mvE&$TOke$B zV8GSwhlTR2rzJ#_;)bk${WP%Ih)i=EYN8{o&z8%2I_q?VymrtR;v$zLkjrg{wpYbS zvAcy#5)@jAvZp4FuHHU2=>%7yAaF;Pr;R4Fs{JD~J3=fZ1&XUJg-%A~!KmHC3n)>YIEi}NEb z%--g1St?_*DOh+gnZHtmEkxs@isI}eRrc0wU8l;2b@mCiAM#Nn997Q+LV*)|qbtKQkb_f0o-p5pdd)@GMF*DshM3Aa+3F#`qRIwJ0hm)o|YEL#OaBEakx*CoYj z!aPt=uH3>5{Lo)X0vnhRQ)s3fJD8{|J(JOpEw+)Rk z`bt&Qmfn=@fB#v0H(jRr&%qMgqOh#^u@wR@511#rdFm|rRDW^uR0I;SFNFONvL|T< zNgTUA$F0a)aQgw8fuB6MGPB@qT?~BCYk5+Jsf=?}Mb;HKNTkLenT0K8t8|H}D?|hE zSgX!{rJBv{`q@9kgrWLKN$Lc=(eX|?lLDj zTIgDs2{@)$i(H$~)t&t0ljddg!CF6;h;#+vfsiOq1m6z-@3HjZf9Cwjssl8*? z-Zk;h*SQd?Jne_EnSeuFHFb<4o#^De>LcvXXN-SWl?t8{*wYg3myaD#!ASmyRX(M* zGTP9W!pDwsi#ZmX__)rLPoItw3NlJ2we~Weclgdr7?3%+JE=SOCt;iGP}}vJ5Q|LG zVyV6tvP?5JtW=tF&6vZPw&HPWnzz1x|7JWQiR85>W`0|GOLyooBAJSsXr;fTClQ*2 zaK)sev-vb*PP9gBV5`_Qo%^@(nz4=7wneRMzW!+lzgV`U{S>?Un=WkYC)GrP*^Co~ z39gtoderj4l0kRRPB`Ahk_XC*5YRAEO&?q0Mzru!IeuE^lBSp;^j8_6-!y50K|n_p zGMdRWFh-Fi>Ry&?gYb(4RdA{FOqob;0q^4FiX*<}mB;zWot5?G&X7RqtC)_A4|jTu z$#`}>b~R$z#yqsMjRktG(!I2WS~hnaPgt1B%D#`8tL9}l{0BaIb*@{Pzt#{=K}Oe* zDAsQ#vX=-a{P_Eyl10+;FIVppTs>K45GY321_I8QO(l>aZ1$65njm1IL>Tmd^bv>K zqvaOE2UgLp-Yu%rF$JfIMhMuRr(^h3Hp`{LBoH54u5@YGjy6Wg?Q*O?XEIX6kMCO~ z<_kZcb1u98AU{a8r7g=xIgs_PH3)hJ5I+6utGV-%RP@*Qi)z02$Wuo9%2dn$3FhdS z;i52o@P_mdzh~c5s^ah~8Ps7Wp+76`e#%y5agtQuPd3{4@zh;+PJ;Ul(o51qE_WV^ zg+~a_eJ|*Xi=4jabrA&e^&&@I6=VSbgQoPeA2W5wnF#LY-O>}Ljj#`MCRMaV%vO{76cz-Og(S_6~uR>qnR(*x+nLISCR#;o3%W_6?D!w;_CpEp6{@(I+A~0_7 zs}lPdr=NoC&$L2h;r!KHMBq)8eU7#yV&?{?? z=4x^BMDRXs3k2G`S|TGIzZ0Hg;o-%T^9GFBO*20Lb>W?krt$`*_Y)pIqLTXjE~di< ziI$JBW{M?JgMOp7XK0RqD!` zyjnzWp^?d+&R3;V!S}YBsE3^$ov%4ipg*$x>0&cLpey(^IE*D!A^->G&P+M7+J2(; zwd>Ep{Zo-~HYh#S%R%s38W8{Ca=WoD??Y3{$m(9%xV*`*LEmoP1$uIW>TgrB$+onv z_ndvbMOIqVFhw~TrM%u2A6A4v!m5V5;SK21dr|_++u|ReV)&#sK6$=&(H*ZZXM7U< z=e@Z}9GCKoq)cAQ9euu8+|}amPkIa3BNZHT6d18a1P&$d5_02Ht2I0xoGDxi-;5;j0tI=XFRNl62_x%#|RTOCW zg*`>@ux)y<;|r##9cIl^Q&4#~Z3CkHHz`X=;xCJy_@caXbk+{w{=u4_bgn+6>EKRa z8dA{~?4*L&vu;0?5LGS{cbn;+@q!-7usGB$?e_1K0#gE|Ot9ixD#X(4>uu)f#}~A3 z3@nGY`HD_hpAqWw8U%*?yVSuzvJm;5G+nq@Cd+=}W!n*06lvdQCuXal{9Xs<5I5oC zcw%nh=Wg?~Ugk@T1@^y}Np7w%vxB-A9tdKDt{<)FX^ubm$7SZacAr-%L-a1JwG)#C1c0gU_I^Cd_qciW@*(2ezbRpD6!<$ zQ+C*RGs|w;)ZO`^revsDl);H7f(3E%K@i2Y%eE!3cq&}mnmjtQ*Z=hEWe2W_A^XH?Nys^bJZp5h>K5an>5p6yjNY zREWvikLx;$(K_`V*R=<8<|J@62`31~=7iCV$p6c%Lg1YAc$h-uj ziA#pcUoF0HIj*$$+!IpLE!H*6%e?c8aHZ~W{8>f@QlFmqcJUBtER_3}jheE>hx}mv zf%%k^5;hsmrzrQC;sDn(d(nBjd1K!gR*&*-DQ4;zv;)vaatjg36nGZ?Rq_l;c6lQA zQhH0eWpKygvHd1%l_?G78|(|eJ53Tsg#N4Hvjo0QDebJQL;DKH#&_8b>p%_AdE^@3 zLP(ASqIYgP6n3POQ=*_HPw&ScHtu&nQK-?0+ z8>8|df?xb$oR$yQ8MoZfbQyr0elR$(MT?`-AAlb&Ga4F{{$^zoyi|S#Y2?CZrv_8g zaK5GIo1kiS5{V~y@0UpiT9TI|Vx*t!eaK9kRthIgdFvr#q?-1&t(a;pT=yrB*xZmb zYw8R5P*fjZoZoV$hSYocS7&0+G_-lb)kFC+Q>p$|lmq`}9KRe3H$HuG_y|Xz*Ykic zBp$CVTqZL0olc9!_rqG86IPu{8Iq!Y?GKoMknsM|jFN<nmkWW$R)0;=-v0xAm_otSVoWlb^RlPVJ7p1U|d^4=E>-zP*-Rmrv6} ze|&GPS7f_&uWb1R`Q&)TSwU~0v1a<`-)o6LgtM9rGA0LiJ@Ue`$XcxSFf)nQC^6NuI4*n18HDDl~3>VPbX+k7zOT>bP zjw?xBP7GAvQDt>BQx!=@sw8)=gBtaH=3ce`T>Xns6feL{J+BW8)Q#=W-7NmHaV*F~ z>UmFhh7MkTGy+xsl^XpR;qG_do8Awha7b-nS4*taqw15O=A{`zjy!fUT4*O~Px9G* z&%KU#?o;#N;>89$=?gplzj3XFNdj^3RMIHRL=~;oyK7Quk=^>0g#CAZ(QGGeUGLU* zWPaROHN4T{eRhQdB8Y!9jcDKvnUVfi)uLU;QxRVsz{0S7@3sEf+Q?Ls|HWY4W83@} zlSXj&#g|UeKk!d^F8}ntYOtDT?R^m4cwFr4JG~o|z8Zm1yM5aW({Yy@f~BU11L!v#Td7eeD4W$>lcjaG!42YE?~f3MI=4r% zoOf_vBji`oQ?lj_PxRf%pt#H=+;A1r#K4^1?Htf{euOeDW4^2m#LA%gz+PfcvYKB@ z{l5(10Q&Plb>;K9_`Jn-xRvcD^qdB-b$9yeMaHX`lv9~f(0}6fFn#1NHFDl)U4XX~ zltY}5+&}s?L_h~eET8)X6I%nfweCW?o!6vD{DiG}w?pr%+YfFCFf-a6yId6Ra|pe; zDl_g&Cv!gUMl0Z_t9nh5KE)coN>{ zg&1(j`%gkFBL`Uj=dI12!|rM*w?!U{waw}fJ_H(zB}-9=p|eJ;sfV<_S)YhAe7eDS z{-N^pB#iLATr#NLu{RO!>S;pwW=9=;trCin9igtoOlB&izD{7ASKh z(CzzkugUVut^bL;3>2f~%R9WEhM%m4uk8P(3g_CM>~SJy%}G!J2{hm1T1XXM;$Nx< zvJ>kKg7*&8803!xLR5KkS8}@!TpVFYhM@Q4tv7{NMwN?-8Ku8G-eOxwZUgt(3=6ku z31x;jRmhmiv^Xlb2w?7W5OlqdT#XaE5q-_MGSi%fF7Ds>Ic$5Otyo1~V#Yyo$>HZh zPZe}g8O%F1w+%SQX;*l^WxmvUQ&N5%JYQ;hfA9Y5s8Xx?TASV~=_EpR32`iLB7uC4Lj=X$lBnh3I zAtk%flc?{lm>QjJhL6FP*IzJugn z5FL63L);PtTf0G#iPK0T&aY7OESEL@kG;N>SRc>->6$NM z2j0(*rwMhfDRh0gf$lx8dvfpYx#D2>k7XT8!~5PqGifS5zl^X|?z;dW>t6;)d<#^U zqpau3c!`tBk%yTSPM>VZLXi$PMqeV1LgvwnFtkPxPgjRfvVg7ax0Xr^R;&%IPtWN` zA5SCheRx72%iHFEbeJaExY1ElK+?^&?iS>TAUdMBcMr@A%n{(^2RH+ud)j7?B;I^^ z7rkfli|k(%_b%e@w{>p57WU-$O{YdI+TV+mby<|-#*lt?XmB#+(b(wfKEBm`AY(B} zAZnYZD|DDnpBb>>Q7ZEq95BDq z&uh}x=%dYlNY1S?M_&pI&)5JYVBPFYqUc-8!Vem&)86BebiW?QAtFDVy}0NH26r_( zC_^CO?cMW|=e_!Nd;`}}wIe#2rjbs;ifve-VvB7)GI_S+Nsq$S5JY$8#w^grTZsOb zUyoAYclwpn;7>Ci@(v@DI(;8$4<&tHXlW*;hWslB|D-5>6-zKX+2bVjkSQ8?!9MgK zl=N~I!}?@~Kx<^NrI^q0srRS28Q~9lflYBLXVmE~H-TOQPE~(*4@#$PheP8^EAU}f zm+WSP;g*ei&p2L;l@4F7HzwvVyZLh&&an%n~F2LIKZGsoGGdXNS^^gkCKD8wC{ zOn978*5SMH1Cf!Pil1ixa+!!Ro4xRSy)@zYLPs7Fyinlr`RnQAu(hV9V3Uz}C;^ z-~Y9jxm+%8+u;v_3xQt^9}E{~dg`y&k_IL-boMLUMr9GA>}o>^!B)g*B8rgz=En8c zEK9pm`|y*X?2q_#wSx_BP5}w*8X6!2tqcCUtG(2FdmF>*`x6R~l!xbak@?Q#VXxG=k(YY-43Z+D2$B08B6(u7e=DG~ z*%5MY)s?k;<$!wd{Mz})9SNS2BBclkhNAYGR=Yc9eI@Gtv!DgL3xps?>l1#V*6K|I z@g6biLi{Ynk8TBO%+c=d^WA~VrcEsG)?TmrPdXwVR*O*orI~)IESKLQEv<$euHRV0 zUPn>T+x>w-@sS`pGlN?9>_rh7SfhqmoWUbl!t=cqsYqT!VHZ?eccRCm5S-9?!v&=- z+Jeh%?!&){ecKh#*;pOrlRLHF|528F&6}$#V0U~vK(#a_$BEQ`{zWkUKYenVJE9>7;rk|eSgj=7Uhnz3xm0Qy^^Hui9 zY7}x$DkL_sWncCgDbupk5VZMn-;o*FQ1Mt z2U`xQCp(2}Bg4`+`iC%H9Tf4sY*L~$W{*be^*Y%4MZV8(`SR)b@`qbsSWL5$uZ%GF zjM=n+$!a%_F=CE3MuW3+McnFQ1MtXU-E6p(YrX)pV>Dqtp-+cnY_W zd6t8G6`!Bvka-in3^?bveED>Ixf3Gl)fQG*Y`aenBlz0qAXALrc|ep17;{X9@R-8v zbs8||w|x0@eEHTEGPjTjRUj%~kJ_aIh4Cph9?uqYMFN32jbQ<|1u4J2l3al~zvauP z$SrpD^VHWJ3&Q$?NSEJQ}*?%ctYZ@oc|`spkf7Fia_oS2yFCcrly1 z1B*s!8Iz$^^q*A|3`=7QzC4t=pD)K`zthg^Ep3E}5G|MBU&RLp#o|IPI}ghR$q+u@ zJc5{|sde-oO!?>VTH%FCKcI-(x=FE!a+1wn)^OP3S z(e#KhTllu^uAeWD&p01Gr5^Y5;c%fFa$K72}j&d--OdYuktp4cwI{afY9wWwjpF#aIES^M$8mK{XJxHGf9|=N=EJAbe+>37@0iVs&W_;h*kQQ?1r-@eW+XFHl4c>?#k=+r=%NW>Ns-Y9A@!k)T?e6*WHg!^ zZ*0Y^BoAG^SUXT#3*y5Xg0uru4D^-_w7Ja<7f}O-7K+riTwU5)p$~=j{lfnLnTbiJ ztqb?QEjgM@GJobA=9_=M^Pe-{{NpBw-~L>F?&eA9|5hLVo9&$cPoK+Qju$*3*X&2z2QXa0Jn?Fjrh&=BsW6$h6(K|%>!6&+!pvWwM{YSE z-2liDar?!20&>3lzSo(znGVlddBXUF`MD5V%%BUKj&q%DB? z?(HOR|MMsL%d7R%4K@2w_Mb<|Q^^Uhgn&XATZ;2|AYPH?##y0*@^LUOfpalPq!6JvF303@uKISoQlV}P z;dN)hq%Sw?ryFYaqwE5Y!yq-CZt6$H z#2>jt`9vS*VVD%krkk(_CHEw{n=AF@X8p8Te_pef?agkSTuDb&SHOk(^L9eyq9lor z*!d1Y5E7ImLI=ua!rZa?6dV^A1}7KA)>ih>xDY`v_jyH+B!yE9gV&ovv`fV)MfWhzOU)&HxmiDL)}Pnx zy8SCjpR-l1*1x;@QGd?Z+JU#FR!L$ZLW}^hTu4yAh@yn@#CC>hw6)NkH2692`O@_X zew2#*_2<$AS*3p3tUs^W8yf!5EHv``gq`TK@^r`*qK;7+j`0vpxpx(Yp5vD$g-eM9 zH6}_iz+3_=Lp3!9T4*(@5+yFCWwqN^Fip$M%(wVx5R#GzQ$J5ljbNE2WqEdanY@g$ zu#n9z9G3g#<^B8jjTQHY4oh$-iHqcKEKeMcz4u4{La%=)7%a6{daG(5?Aa&#PYOXf zh(*(6@=2C8MOG9gPWF`SH10itp@(GrL@D{qK-xH#q@m^9#<5jU(+%Vb85aHSqaLE@AhvVfD_AhL| zf45ltDTva)W|!2{Sm z86>a_1xtQO>^f??ee3bw!=voDab>}uYT0#Y%du9`e(>NYhh83JWevavq&4tvcmd#d z;_(p^-~jm#SBQ@2sfOHC z02lPvx8w_uh2!BT_A)%xW$S;~Ki&T6n&S|1S*MR69`L{Ipy8nczO7)95$-tB%3$2U zd*s~dA7J10>>uCu04Os918r@$0P*WMeK>5jMAh@O1%{n}WWo%C-6V9DbE_=dA^3$v z;=&0(5DPo+ljeOMpEF#a$)zYN0HaVf+J~XyG=CjMy90W5)~h{-pd0i8zCK%x`Yd`n zK(4#{!m{D+`j_%&8Bbr$ID<6}(a6Gy{ft2J7Iu7JKjROc7Z9o;&2Z2{K}W6dJXyxG zWPkS|TMhC-R;OdAAK!qUvB@Mux{Nz{)tT7JFeV`qmK^`4#L|A!aY(Z zaXnwzl^OErpkBLubZKJRdfmO5Co{G%2x?@Qb{mG|qB!qc9iQ|^#ydJrbay9CA>?1f zae%Nz^5qyO>Zb!3wO9aiYuC~eZ@1sF542&fQ0zr}DnZvt-Ej2^*wM>@Xpn4X&Ax6x zj^3q_y~U4m$C*7o)K3-1wcLetu|!?CmVkU);Bh*Pg)FRWKEN|l}@@xnE+VKi1y@|grKE@d29@hVW94nddvm$4qF@#)iA38?`kMa(2 zYwTE)C8**5;vjk5s9+S_|0@ts!2e0iPma&S#*51^=serm*Vs>^+9ku}GMrO_zSE2N zLeCi)PjsKS-2Lz4)Ht~L7z+a;>_RyPM?`hUC>Rl?t)a7BdVJ2?r|sk+=H#KEGo(#& zZW*p_5X@n?UdWo5=92Q)dx8-r=HGd__BDaOFbg${6W zaB?IT;lI3HZAe>L8kYUhKZR}xNvu)P^hf_V7!U?*tOKbv=?^6{11&C*FmiFa+Qv+@ z7TuBr{1{sGj^3^$5iF%wRu?7}XP1$wRwqA7M_Ee?L)mJ}^v?7{7=|v>|Al>?_axO0 z`)^@RYQE07_w+vJxzGE)=bpS5m=6p#whwX|*Bx~(JGp+^cBp%CA>X@EzGo?k?$@gM@@XA3JdtC;1BMaq#z94|#pA zSblq+=4^r@uwC3NLk-o3i=cwX==$aF$juKEYOkB@LO z7Ru4DiFqxeK}|GB3gE`WD&pP4-20>QyG~EoQ+-|lFE5`t>DzEHBLy#Z9w@1G%48NW z4Fp{9R${JLU#Kz(+d1sDLs(*P8P~=FjiqaTe}ntR0cRE0Paiud(=7|WF6K9%o~&*` zcr_OfXP{w#T_ye($O-!CJ-WlTZ*J}r_{;R(FYiO2PYLk^_T*9^r?R}9cp$nmk)TxE zLLpP%2;{HliSvXw)n`_ot#Y&k@&p^-=P1m7357@`u3-dd{0QX(?jMi&NMt_owo5|3 z*FRbQ1L`B1uw2QBL9`9cGBndP3JQ)x?&0xgGBwP|*TSTH%uha9w%}Mi_NO)kopsCt z;=F-KhpRpVuFnPrE0P2CaLM~C`vWxqiCa z)@^h2N`CV)-;8g%d}i8HJw2X*q-RD2bs6@z0&|KP{-tbg?pOHJ^6z~N!Rd3wLBO$S z^XlB?I}nt%ipoO$T_Fqr@6Ha(vz?t+i7f@Wz?Im3dH=a+dqg1Lo>xfI-hD;v=LtDD zJ1>w&G!Wb}*b)8+tQFA+`M&-sX8b=H*wGowqLyfuX_U}X1aW3DnI#R-NCv%*Pj!=2C7QHA3)eS_FkwD{$YQAhj%#G^mTu*B-j@lfSkj3 z^poc>p?)_aRqt;;}`z4RAb{PNh?NI+sq*GA2=eIP*7E%lh$h$p-J6 zTv%Li*t$ErJGuTGKHrT7KVTg6w+F^JnMHgnlc8X!Y1rF>9YegHyH#;ht;kU+hIMes8y?Bjt{=Q~0N`J=28lA*{@BFxf?_V00KyGLc zZ!t8Y6OU8Fump1KRzYqU7>Rplr7P*iDnO2RteG&496k42uW71pli)@!mDYiGPEYHz zvss;xd*U^jxlu4~T5g*v6i4L3x!SVMHrp{-e}03%PyuZbbs`2@8wA5c6|oD!%H)ON zCa>2XeDX&?-hZL5qGBvYp@(xG@WX>|a8^aDBtJL&%tK{7aX5v}+zO&DBQ4|A>6bG(`TZ# z#t%;m-+#Mn7y>yUeB1c`r%>W+0;pyQN~bEcll z0dO;&0@kxSo^;(a2ZABC$8ooW$?$@v^dd}$sMr?UB)@sI%E<_*!OaUnH>boQzc3I= zChIHVk~evWKeit(Nmd4vNlu>M0^GN@#H<4M9;G?N{~!BNH))$pu}_A84zGYu^bDV0mm14lT~SlmoA^kU z@1T)|%^uvM@w{{OEZPX<+`iEGr-zhaLeBjQTEF##Q7qsqij4$vZMHe8|-k-8PCs6~sXt@<3^0X#ifJ zYmAfRN$PmA!`syV!4tdP4wiQ$JNkIFA5EYwXd7@ti=auhPDut>XRFK8MPGDqE!Rot zOZ7#ldYDe*h{U9xj6|jkl15M9Z)=MwqKDoV1-v>57)+cRO6SNW92t%_ZKebcv*00+ zh{Ar$c=+b=t|9Dvw_bboV3YM`PQFz24}X2U{pq{gt9n?#t!=0TWWvl*ogvb1``_9| z|2e!*?|%R6`=4`JAP%T!iMFo)0<>GRt-rK#D&;&Syo-d}DBJLr`-F##e(Lg)-+Y}rKBaBHumqDMK=C9B_F zbjmb!IpS1`Fy!t_OJe}Be}msy8?CC9{M~t5XJ==f4P zs|jyy6^trzzoPUe!!NF=Q8+RB7aW)HNzUF>+RWv|JxHUZ;3TB!nc-c^)Ct%BSx?@I zC>MIn3WN9hf46=q+e~h^egS%Cv(3$|&0n#Hg&*X`TF?3?Dpd&cCR-X><=ZmswITz)b-g- zsQHweYoeX&QRlMC-_2D;2Rj!&bSyaXBI%OZ;`2$l?=xI=YWu~J>N!LSaX=2^PR_?Y zO6O0|tG!Yf2EzVVIY`oqq>_V`lNlTz;ewUr2KTbx-AMfU)^1L@B(UeDw;(`zj{5M*?krKO|L&2$Sxi)o#+n zncgm~q*C7@`JV5o_kG^C-n>B|3azO3xLkTX&ia-=$o}21SrCi^<^Wntv@SlM$an>| zsxUEcwian+o^b&tE-nx)J^2$<6;@yh;lnd1EW~VYpZq9n|C6^5U-7CH(@X#7XPTLJ zKi@#X$DiK)B%UQazkWRZDxH+?1vv4(uNrsXACLb#o=jh-0d(WE0gBtrrgil9ojoDK z_m)K9vlLl^4G+uu@ggYx$C95n-TZyT_}C6>yz@4jDbEVmnMmZJ5MywiiSwA^Fu%eQ zWFXG-nKDs_J%8z5*AExwS^6KJ9_KAl*}wZSP#@v z4OsJ))wG(nW!uS4AR6$|o6zL@H#G{q^A5Y_P^u?qMx{r5_@EDnVfSSytzg{ky{~EmH3< zISG2j=?e(ZWr7#Mfn|ZYNne@+1LX0zKLi~0!wK_OHn}Rk>r9v7^$>oWr#54tv1AZ-) zPmP)NvCQ*~NGm>gNhhl73+p!(|lwi6D8DHy?kYV`#y z9(4PM4}qQU18+e6RX9}m*R8G9?XB%apuhNr(K7be4KX`82S9; zP1um;k%fPd+aT(Nf@RqS<9$^802Vc2r7hmE1p3(l5n zFN3N47|aLpO=z)8Zz6H2Y@90&ubB^pOwc@K=IgVpe}2B}e%f=3s3;yM=%W7I)%V}@ z?_OC^bCIH2q)~@h_f;g(&wRW;jn7uC0`eCkB(843&A$kU1W=Vh6fSUp0m0IeD1VGb z*`Hzm16P5V@9nGx&H}@YH?LRaVKp$tDK?L6!6%?$+nhQKC(+=6FASA ztfDNRJ5IEOxf#;nQS*Skp3ey70>pQPL|>Qn=U{ucG)W~i?BC7$>2OXh!k_rsEoXbh zNzvXC>8}s_csvuNkM7B9Alf>ME=h|h8wBoDC*IqJMT<$o*}S9y#1W72hhyx&%XmR< zhTJVfKr9)}2V*$i=@bgs|Hb~}&hY5t@CcRiaQ>xf%0ky1#k8m&pZ7qekgLQm2sKi# zn`0q3%8hX8;S#7^irtCd}uAhI4M}>Md9A9L0MApc=UB@7ro?1Tm%E- z`q;l4pz}jSL=vX$qicb^YdI_X`>p8Sqn)#l2%o|1?C^=Y_K|S89RHys=WdWywjn2P z$juTI`#+3#q`FshJiC;Z426ZTa zH4`AX7TeU6Wo1UVPp@_v+stDzHbY}r8ev;%wY8W0YRjQpkAvwRkNDXqe;i9&0_d*W z{@sxkFg+Y@5AdPDbt&61nZH~))@PP=!`{!ShA-6$Lx_V0#p%#reg`w<}`0l9$Q+4@@8d9r^X0tj&>w3wavvd2eQAFk%q+^7nQ zN7UQ?<>SNov)Ygel`Dx4G>7}J)(i3u5QF>-*sFz1VaKs~&l8Gr{tY;;+;e#0OL1;f z6G3SzMeR~AXP5#DvL4{6yT|%y&wP(p(d3-&clBM}exJ3|cl&$i?lXru;607vKlY17 z6};!}Z22laDw~K1TPqPtEoY_DTH;I2`^y-=`}x(!x1axR|8m##L0{ay>GB>i;Q-jI z&u5mFHU%O6S}>TZv-U7WII&B7V>85i`F!Iq_Z$jN#OP4-=2vC{#)VF_z7~}AMNEjX zXb~6AmCh16e;f{DQj)zpJvn~xX@BoraiD(p9X~(fvysSvGzqH%JV(@AF}%WYIQ=hv z{L}vBu09kS1WK2`c-wC_U&3OKcm3m&U045; z{@&kyEBbpwzCRv~jKCP;5@i}6v*dh6N5aLH$}9Iv8~^40)- literal 0 HcmV?d00001 diff --git a/interop/authzen-interop-website/docs/scenarios/api-gateway/results/img/localeDropdown.png b/interop/authzen-interop-website/docs/scenarios/api-gateway/results/img/localeDropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..e257edc1f932985396bf59584c7ccfaddf955779 GIT binary patch literal 27841 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 JrC|B>e*nH7H{}2T literal 0 HcmV?d00001 diff --git a/interop/authzen-interop-website/docs/scenarios/todo-1.0-id/_category_.json b/interop/authzen-interop-website/docs/scenarios/todo-1.0-id/_category_.json index 6cd82bd..00246f2 100644 --- a/interop/authzen-interop-website/docs/scenarios/todo-1.0-id/_category_.json +++ b/interop/authzen-interop-website/docs/scenarios/todo-1.0-id/_category_.json @@ -3,6 +3,6 @@ "position": 2, "link": { "type": "generated-index", - "description": "Authorization scenarios defined by the AuthZEN WG." + "description": "Payload spec and results from the AuthZEN 1.0 Draft 01 (First Implementers Draft) interop at Authenticate 2024." } } diff --git a/interop/authzen-interop-website/docs/scenarios/todo-1.0-id/index.md b/interop/authzen-interop-website/docs/scenarios/todo-1.0-id/index.md index 51ddd0c..d39aca8 100644 --- a/interop/authzen-interop-website/docs/scenarios/todo-1.0-id/index.md +++ b/interop/authzen-interop-website/docs/scenarios/todo-1.0-id/index.md @@ -2,7 +2,7 @@ sidebar_position: 2 --- -# Todo Application +# Payload Spec This document lists the request and response payloads for each of the API requests in the Todo interop scenario. diff --git a/interop/authzen-interop-website/docs/scenarios/todo-1.1/_category_.json b/interop/authzen-interop-website/docs/scenarios/todo-1.1/_category_.json index 899e11e..18458ea 100644 --- a/interop/authzen-interop-website/docs/scenarios/todo-1.1/_category_.json +++ b/interop/authzen-interop-website/docs/scenarios/todo-1.1/_category_.json @@ -3,6 +3,6 @@ "position": 2, "link": { "type": "generated-index", - "description": "Authorization scenarios defined by the AuthZEN WG." + "description": "Payload spec and results from the AuthZEN 1.0 Draft 02 interop at Authenticate 2024." } } diff --git a/interop/authzen-interop-website/docs/scenarios/todo-1.1/index.md b/interop/authzen-interop-website/docs/scenarios/todo-1.1/index.md index 6017d2a..a075f24 100644 --- a/interop/authzen-interop-website/docs/scenarios/todo-1.1/index.md +++ b/interop/authzen-interop-website/docs/scenarios/todo-1.1/index.md @@ -2,7 +2,7 @@ sidebar_position: 3 --- -# Todo Application +# Payload Spec This document lists the request and response payloads for each of the API requests in the Todo interop scenario. diff --git a/interop/authzen-interop-website/docs/scenarios/todo/_category_.json b/interop/authzen-interop-website/docs/scenarios/todo/_category_.json index b6890a3..4885cb5 100644 --- a/interop/authzen-interop-website/docs/scenarios/todo/_category_.json +++ b/interop/authzen-interop-website/docs/scenarios/todo/_category_.json @@ -3,6 +3,6 @@ "position": 2, "link": { "type": "generated-index", - "description": "Authorization scenarios defined by the AuthZEN WG." + "description": "Payload spec and results from the AuthZEN 1.0 Draft 00 interop at Identiverse 2024." } } diff --git a/interop/authzen-interop-website/docs/scenarios/todo/index.md b/interop/authzen-interop-website/docs/scenarios/todo/index.md index e94a00e..0666380 100644 --- a/interop/authzen-interop-website/docs/scenarios/todo/index.md +++ b/interop/authzen-interop-website/docs/scenarios/todo/index.md @@ -2,7 +2,7 @@ sidebar_position: 1 --- -# Todo Application +# Payload Spec This document lists the request and response payloads for each of the API requests in the Todo interop scenario. diff --git a/interop/authzen-interop-website/static/img/enforcement-points.png b/interop/authzen-interop-website/static/img/enforcement-points.png new file mode 100644 index 0000000000000000000000000000000000000000..d23aff2a0df01f59d6e83e3df490b2f035a22a24 GIT binary patch literal 170895 zcmeGEbyQSs_XmsvA}Ni8bayj!DJ3D?w1qBC$f^vTv z>mKsTp7_KN@(;GtQ$sKc3T^A}UsQ)7R~Zx(RAVi5J;hU>2PiL6&8IGrKM`F$#Kgqc z*Vo7=Zf|cVCnwL(&xOmrH#RmO9v*IPZXWp4BM^ww)6?zk?c?JUl&G%V-QD%|_5J<* zpFe-DtgI|8E$L)Fsi~=%pPz4UZ*OR5=Kl1YO9zT8(9UaZf%j@Ccf&BnaTujW+(D2>6clXfIhlhu4ZEcH7ic?clnHU+H z=NIPo_IBUVdv*7ko12%yCtaLfKK2h(P0wIkd?I~Bt*W9zNXEZiiZ80EN(dl{14a+ zZA54=l!}_X1H3|7+XDjwUpKcTB*X^<1Ox{LeC{3`Tv|zO8%Rn@(#upZj;rQ(@~RYY^>-XlaS4rOAM1$y8XNRH zQBj3d1n7=x|oHuM`RDm@DNI}}0`G&vM36#v(RXQi)W6+i#}2lekAdNjBK)1MXp zTr9*vb%K44R;>F!3+JJ>_x{g?XACGMh7Zf1lK=Z{D8?jj{?F^PIMIIqzC0mYNBi%V zC|K`6*?1`bzMvO~Qe*wBo6+PiUBBPrq*3|rMJWEC2~pt1IEJ~n=zrNlE+`2RLHYLu zt%qpy&}R%`5dS;gk&BRI3}gKJDfG`zP>d@$En|595zy~N?@(%3fBpNZcXH2=)IJa7 z9=VV9Z}#B|R4D(x@IRsbTZ;b^+W#!=uY3H@JyFpAYYzXP$28X!sL`o~eIpxu?y{8p zGHv)IPWK7g@ndt}%cIo=<+r^7u_&m2VBA&!4Y|5mBB#2gC63d<_wu6Gs{AxJ-UGS)7{>SOgik9_O*>k=)_YNC|GaKqk;s+{?vs=Sorm)M!s>%v zrF)0eaEY4aV*IlL1xwxkhdLO>7XHah^2w_c3i-_J?Vm@9dHzMCEzTOaA795j(NsKufnggxv{?fGEc*G_Q*!MEWvx?2(#nxZfPxCr&eF0b^k zqbTl2gduv9Nsn7n<3XBD;-yYK8(7!oMHC{r?yQFBj;jd5LP>Z-aw$5uBxa+T#zq3E zCmHb!fYkS_)yhOdO1#EbwXdiL+`u2+O?&qYCDzXjP~v`cits8-Z>2?k6$dDF-#_1} zGGD4ocZ2x!F7C2p`qzPBug9N4bQ9crQHhES(4nov&;x4Q6SZMLlU1EZGoV8|_Chw>S5ByDq0mSh*)&Al*^L&t8Hfmtd@Aj9eO7`Bk!quCa)dcbEWxD)ox9W*PV?>kPLQN5ia-=3(T%d?B4qQpl!Hq}k9XwEAsOr3hwt86L`wr z`k_r8aHM`S!ZP2P8lE+A_ZVyTo#?G?%b+z8;@vJaeZnH!bv53xemvXKvfXpOutUX1 zhknNsia+UZ(H9*A5j10WQBF8MZ;}*0j3j?0!7U#N`E^0Kb4 z*shKO7(O;!ukh-{P0OCd{*`I5ZJJb^;p#mQwYkPiVn4cT>c(#x6YN=B%{x-b_y^y& z%3gOaEPF>JUQp9T?hp@pcsK7zQ@+2mt9S3B!PmMgXLAZ{zDc@HtFoYm?5H;wlFgQE&=G&j|fNurY4oSzdi{f`acG!@p| z@GZ;Q)in&kPO#5p*q5Hby5_yFy6~HCm}q}!j8;HeppewwV8XX0QmL3<=QPAd(d}^;M-w{)%+4 zD~ZQ^qY6-lF?4NE(-fm*__Lr6FzB0Uum%ZoyzyK}dcAMZ=J+}qx_5qFP zpjh84^UNOrO%smmYyQnQ{BAI@63QWfvPiV{;DUaYnQ3;{2KN?!=N-VH5YnT+9t3oK zX30}<8_|r#fJgvY`$ho?5lziuj@u_umosNhdtBP2aVt)I2eq*q(7vwyi1eLwDvPAJ zf)Ge{lrwD?o2W9vd*3;fX+yX3$>$_B#B1pnxM4-<>6VF0h$6#C6gN_3wUymcc(|*SvJXJ=#V7HYI^*-?Tz!*__{XqmjU=(delgU45Iida>t{L$xLoSF z@=@*f;%IOGG=vy+j7oO8yUGR&2&W!4ONI58kvzBzHp(t+nrn6~kO+AR=`%f%N^~8Y ztI)9B85byA@N^6S4qSVLPudJR+B#C#H%jv3J2W zcPYMpBbWA3uZl@CNr9{(HrRu>RkdZANh zSc6(Jl(l=*uUFvRcTm=4MyzkA>4cg`^1Lmmx~jWNhEaB_$N4u9CAIdI2wj7@Cwo=B zbQK)AC-sh}y@7vGw36m`C>foZ=1F`&Q*Zv{V6=dJ*b5#VPm1?V_rpceuWI=r!M@Js z<<2xrAb)O{fH&pVxfk10f@~K6A9qG^) zBz%)0T-!Pvn^&#Ri#MwoZIiZQ@Z&|vI#(!?STUfOB3(`d*C9Pk=ANdGP}OVVjn`>2 zx*1CW9Ft?Ar}Wg2B5z0WA__6|e{gB&#qU&tXBTUmc1abS{?;a$!ZQ!c?GenJCsLh3 zG$_N;!_1x+TR?k9$TTp0KqW2I+AawkRjQErM&hlb-i)zKdF~z``Q`VJU)M{(wb_Gb zX3=BZLYnIs9g^v7%S?&`)uT+Samy*0R)iCF5ZH&$JyCv{UxPwkcWO6hm8AGP#3H`I zSPx$j8ooR<1rebB7oHf0xJy!A5)bRE8585Dir+xpet1$u7o_P>awYe+0)^i6j3fd1 zz$+08(0eQ_h-iZ$l?VRJt?d}c!S!{lWdv>ST9ujs0AlhAPKz1LN%2Ko*!078qVN|WHJDm zfT_)^fn0}A%li&S^76g)8@O>_RJNTsx3Kk&T8XoM3(8?>n#i$I$1rZa&Rh1B@#4>F z4_Lz=<{tlqBuXe3B(p8ftIoA%!+A0iFQ(VDwY2cyF0*;gFvMI!`E#`RX})UqPlqA1 zQO*!l@z|ZRoZRYPV%&z0csD4?znQ)@jEH$IEQmJo!}&=cOzKu6=_7D6MCH{-`N_4^ z#Pqix9o-p>_B;|t6g;5?)KmtkRi*58F1aU>AnPNY(9<>8{)POu&N({D8zDW)0cQ=_SnMf? z#BN1Wwj&$?KN^gQ&149X%0Bp>TmFx2PZIY~ zraIa1I=!9st+yLANiDX1lGc!hFsNX3u1?YxG0`r&i?k@{u~@>Ppr9jR$=5WSUPo6i z{WPc!>9M1we~DNEo8?G}2krGzfm+4td2h1u1tlnzg$`c^nF=QI2WE_XuJ-@1^;r`E zJyh@{v$UfVLM>i^Vk>GNYG8!cSX=h_ARNjJBMgNiK^J03u#&*sT+ZR5I{BN2$T9o| z*JhcI-Ufqb-P4b<~;c?l(Q^Z>r@gc=ccs^UZC35ym}T{wbV$qr*+UIP2ee@$o9@?Y30SJhpL?Y0g)jOMXii7h z6biy%`0FzC1ix_y#T!Q|^b_%8Y1nH^l@iJWxUm4_>mgUPOnNy4_im%DT+M#m& z0d4F0nTu>SjWUB52kHnFO%)RnYeleoF*dKOVMmLd7+6dLUgs zw$wn#TAUKSY&;G&5H5O+k^b`bX;bk!E%tx&3i@~d$%`|b6Kl^@6TQa?SzMZ;L$EtC zsrSL|tfwbx>kiK~pGpadhCl7nJWha>JDn>1-ntJU1bVhX%Jg?@mUXBZ4?SJy6JZmf zPoFt9#mP>$s6u!a=I0^qidUxd$%&a2MGStu5zU$KyO}kp_=kQ9iB5HPc8uuW!KTnU@ zXu|$?Pl&ge1MGtn=eBqnaO;`jX`N_+>xchV?vNSXsR-WIa%X1T9AyKuY$cHOe!XqyW<~-Y3sKN^>5Y|O%f+m*F<|~_5Es-`x$+(Z? zbEi#B`d+d;r2jVxIpVR%bd{_en`+?g&^{k^4YT;GVL3uuV)%oP;W4SBKG4G5=;r)X zyBl#LU4j9;>LI&@#70X+rKEwxStym0w)C%9yr!`!jl`CM$}2W~_*UVc9Swf~Dzesu zYTgC%ZIzzSW}DM>J@o8{mKh8A>!u6}_&KK*A1_$13y^L0e80`y1h!> zDx1;6ND%P3(8EorF^y4y+hVi6ZgsTC_dG@v^gp!=dL^Vl4=Jw!Val%&Jl{tEw0O8` zA8jzk79p>eIhL~{I|`VP`ue=UZX$GoRF!5QK;H0$9P#_I1t_W(aTE+wWZ_#$trh#U z`PB4kC^fD8;LmWiDL%;g;Ql$>6m9_(7PuD6=t%H1PD4Ta!&k%%C^-_+t z8V0{%;hAm^xc}{$=jJG^QDBZzM{Az&E`iA*`mMYTI|kKdGN+%Y&LxZSapra75iW&h zg6W~-L1I?s3Nc*g_ez%p2_@tR=^Ei>gTw+_5$@?EOKMi0+*bJ-$1p^Cr(Y(2oO)+@y0}WeAb?}tep=Hh1!rB@44OhW1LiY8pGVI{4p{NIN>bleL zp4Xku8gvD{8S)t*c#{ysHkesOL?K;%Rpn7=QU{8591B+k3x5$lGoZ zE4Kxb2!x5)EWQ{PP;9Zw`lzqaE@0>v zUS`GK52pYu}lU4$|uP$a-r)RDxrw-(FM%;5VJdpHWO^^8e+KyW2 zMHPH80di0QF&5G~s{BXrLGNbDtg6bto(ivLY1ACDz4ecr`L5=^9jqa;=iv`^KE3?< zDIW1n>vfs&zOAG3bpnld65-$M(cwStGinBIa%9)&XIsjDNp4Hm9*`T<_(7r5vrjGR zp75j#aZ<66uMs?PRk$%Z^qs9c6 zKJ}PO-9Vxwzz}(ITqmy!M(9>ax_pKwi(xi9zZ_G6Ct)$*w@ZCRz{n)ljlH;f(ODyFFjXc;_lPr$yAieq z9cKQmj76x!XNdv&o`m&_m%eK=zBF63V@}NlP~%4h#Jv|A76;xW-)=+l{Eh< z0|ko$9oi0%XS8s_QJXLm^0HAGcx;U|aUtd=#rtwHj4z{BP&VeVe84xx}3D zPZ$?NYQUD@JlAuYXD>D&uz6jHlJ${@(?n24mkn#rsFW3dA0Zs_h2%OE+=p#=CXxOn z{4!_ES2Dv_OdDoUlEMz*7%a1zV?c|n@m?LF*fd_5_aD8pP-rMJ`dU9P!qp43;%$mu zc@@a6jU>!Pw-S@KInJ`G4p||&tOmb^auw55>UA}?s2 z%eeX6=hHj~5B!0cu(d19_PrEt`2#d>^LHbBo}Gc3f%dJW(i$SN_;_COnIn@06kn`W zhX6Ty;3L>*dTs_w=+>0t6@E;JKgk_cze0bzEBFGWH0%P84gtoVzbzvj*8lZnF{SF0 zs7QK?>66K;S9!gWY<_QE+$?4;L3p`Mjxp_dWN}rBa*)RcwgvQmv{ZLv3lB~Pxz%9@ zT}{4^KYE$|`}BC^%!v@ERX?Pl?%2iAL2y;CwvJ_s+@0ZnxBC8*BOsO$yH^@E8wQ*L zMJ1j|4);%kgdh@ZWrbBI=E38Vm|Uh;@40ijBN7NMq!UE+{pukXGA!C7u8q_MO=sTb zwX4Brxl3A~3Xm?O_8Rz+00L^SBIqza_(~dtlpr zJHUOeD~3b(F|4NR@Hds?+iG3rd;)vTR?mh8?6SMX?t&2tIuCx^BgqrqfqmJDrQ6omjwbDSO^WO zMMz~g$7tSMNJMv=nGjwi=F`xb_+0Oox&Lyfccs-84L1`?1hKx5R~dBv)KT9!9V;4i zu6gRcvz)GH_Idih$4Qsp$4L`e+UdEv-ir1?{qpHNdY1CEmc!J_Ve$kqv6tFHO*;D; zi)5B6aB|I~CLolzU_I$TC)C5$#|N>jsk$((uOsi3?%f-51z68_KIHc3rT_MMt#^q4 zBS6>+a=!|ju37g5&ArY~(&WS2U8O06Kr89sbVpt*npqmU(_m*wN?%v2zljS9p%%I| z6qFBv0iRkv(9ZVk0zAaPEB0U(Xz|@4Zp#NIBU210*8SB168A35HsP`G)tUB9u~@tr z)@f;)U>xZcWVW$Ts?tFvs@XUE#4zYxUi`M*DR)kd^%3V&5rT2{qGb`cKWXBYs@~3i z!}Yf$ZobI>wqumCw2i?!CWpL37^{Asb+6P}faAK(xbcD{hqDr=9d=HIbT7OPvQxt? zqaukv=Oa5AMZ1xpNJMGReQLhJ_XYh6&@h!)=~$4`Zd!Fta7&L4&Knu(>fbhRB=0#m zyy?Ai^d3_dO|g^XFD#ko*RFp3A}i1Gp3x$jc;y15L0+_SHw)nMzEo#~nkY2jO;X$r zk2f}lugJh<>I2ZW40D2N(yz?aBRR>4Og|_6nWo>S0?}T2J7gBe7nOia2OgV?FW?$c zFucmCwXQr63LG7?NE8IOT8xLUKtsm07Qw|=I1LKaX3M08y%Dl^-v1)}cMIf*qOR1k zRsv6l5m{D{CzQF}@t)q@S^c8cKV?)x*{fr5?YRf2U)c6dw$r&f*Oa~HmefbkWvegX zlvf_{mU%^U1g${fFWB+I&Y~0-h{k{f zLVUGp_ACJ)CUc!!^hLeL8SO3+QzI%wc5T)-JgTpqAii&Xk19^rIiz0QnCvdBdhIS> ztQ~;H?+ctqXL`vFYMwZpmT2z!NwExCe(q4_iz$fjj-9YDYB=YM5@oBdW)n?fvNKWv z=!W-oe^E0#p(D`LB;ez#(#gPQa#TdWQ^{B4C;(W`RhE34>RF_UVN2M-C2H3$&zc z5Fv*aXf2je(EpfS7C!RE_$RVo`WQ~IlQHp(e`;vILXa~MlAG6gnU9PQ^FS!)cZYWm zTIBFTCZ^4DtOAO$PzdH<^A&!GoYcr4w{OhEHLjRF4j8$sBC_KmZwhBgC;^ ze7qZ&Fn2=|lQvVAx)K`z8gSYEv~@>qCz1`YPcdPI6mqk^He!yucNGdDrzu=Z(pMAl zj4Ntg!`SYj{ds1d38iE`$A1ru90WNxe#%65Cr!REl$zDP#kuk67QobtLl1{PH*Bep zFM9K3-%DzD{JXvKF*}~>edmGmT$*8LJ9egfTRxoy0tS)4`t$q`ZhGWF&ohAm3PEcN2iO@dg?clCGJbyQ zHhC>Y*T>Oa6D4ElFa%(0!!7&6pg9>~p*Xxje5c@sN(K`?-7w*2_IUeQy#0L^8onNZ zjz-T#kEx|RgEz%8&M?gtOM%rKa+^duf+0W{YTL6v&Yi6I`>Y`p?aMgpk}Pg?5@Htc z^5LSLVo&1rkwt-Me$8nHyD3kaJs&>4Z{)R82T_;L(V~LjHfo)&Qqm-<6MBQ@oZmkn*p4C=4*WaA0*yx+E^*!+rzz#kt7=#^ zY@4QhF!cVj=LsbWwv9kWjp&?S2_=Tr`-+qkIX0wbQ0TM&L<^*5_;rmdl$q8VAAIII z2Z;v23 z5^z37O`*dAoLtnge}&>N9$Wg&gHTs|oe0`#`Bt z+C`E$Qcf*k8rnb7(xO7Q4gon3SJwg=Pd66cvE~z8BBpMji${j*v>lr?42brMs@T#}B*o zo*Brhch6i*Eh4^jf9u$HULj0 z?$-3IOy^5GCQpMJ+u5eQ;T$JQc4ardjC%U^A|Betk)!w9{xz(dP!dwrQTe-pL^%zj zWR?<7`3KP)kq&(b1)6QQ`LfS#E%U6e$oAit*GlyeZ{wdBUo&kHoS%k(j?CO6pvyX20tWJ?Gh5`rjeIWl5-l+FQ(80%NKwhMzA}V)pQ^7 zivsj*XS&K43X6{t#k7vrv`s15yV}mzm>TPo-*|}G=su{z)cw(b6WaHl@XiV+ADai& ztm3=EFJ;R8oc*N5WG0yyq7@o4OmlcIStSa>+IX)$*${KMY8$k3w78yB)1WQAcaz!; zc*$%dWKR$Bg`R#c)=SG!$d{$7)5~9qJ0y`17yCrAU}*xGRU?z-xR~hy#KpB}>eM9j zpO$Lo?qNR!oGvge{(v0r&-P@r1k2#tiT3!P85h*M4?Hm{0A)s&+Nf^r9Gsk{9gJ;b z-60NvUm>f_I z`xiwHd}l$loY3EwVs?^$xcm^~@m+3F5%6Qn3HET&%)2aAvRrOi(x!d@Khg&k#Kp5{-} zIfPKruA9W(%L6|>0{gCuDoQ=?8nO>L7Qs7O!{?a2GUBwgiR#UrlOHU?^R>^mdy5Kw z_L+~36(OjIimNl~Qjfyow;AYIh!J2=BR1Q#HXLTO*yi{es_eI#b8eez#sJj#+;Z~c zeq|suO6UJ@FZAIz_qvQ28IqQjPkV=E5(6%zU6;DJPCnMzyNqplXQrevvG9_~Aevou zLuxG-(c|NjbtjpbUKJxkE~QeU))O{DBqPx;joF+FsE3|0I%1Bi%?mx;hZe48(A>M_ z*MmMO!=?4L@}Tx3bcyMN&j+l4y=1RMiF9!}80b zjkL0UN*%pV)+PPM{#{|={9T6MU^;heYe&ebVw9;KWjt=9>rr}XE5`Q`{{XYzID6}0 z=0U_WEn|ugcjvHvVl<&PfFB`T;wa`?(PcR5tlbPUqmuBmjie*=60$zFwEw1V9nj+< zRi0j5^GBkOnx$e9mVv!wBsO=H|0M7?T!4bx!|;8G0m@!6 z&bJj=v6svKc&bS=hd)dkR4<(q2Er)VvY7kRdYLJS&ijtxX$2!Eohsu|ZHCmP znvf6*rP#?R3GI=;9(BH@)`fj+ZnYePrx9O<5Pb{@Jet$St0~~- zCbSxbf55T8L60N-#t(pv-e>nTgKsUHFJyOJW-CX9_R5LlU-UUYSyq&y_&l$n9|tR* zKW`NNTN~t8!|KO@=bCz~X;_A2zmZrdBZewz^mk><^IlGu-q#tI*u5qp5~>Yur@W8&CR&TVg@##irr1IGsz}V| ziN~$Ct&a>^E`OY6s5ca`WwIhRhsHAFb=0kjK9U5G%wOBz3-L%=|18KLv&|LjqfSx7 z#_Qz~x$#C8)A{o{b@q*xehg01gxbf$W);THnXe%bVCO(li~Ss$9MU-k>5GvOLUzsNGZR^{&I^tKt! zQNC~0{gb2dvB!o}zBDN*XNc6_lWqS4G@%wiQmJ6IaFGlmlW9;n=(`?1p51QQ zM%9?tw&F>@rz} zRW?L<&CQC*@~PZAVau8<&-UUMHykq8@@%eO&KRyjiFvuTTFol>tufxCQ{w+dSh>cFZAM*k0kRayFj^Dq z6!F5Px6{ON9}k)8o+rMYe*Z+g|8KXQ-vX;24ZfvKKC8BH5i+oyUQmT8iIK5W-mGI8 zb)ceS1Oe8p<|KWz!ZIW#6w?(WNUt!EW#(0yg2i%q*BS3LOcs=`ZbAbI=oHEIV;zyD z7OKFmW#}hjZx$c<5DcUlDRb~fmx9Q;)a9d>p_6|^DC;T9tw{-n^`|58|7t76*h64I zvM1`svcwwL9_VsvPJsRgKFvD`lTk}*f$==1x4#zaAICZBFx3eh{Iud~UaX)CVZHvy zr}nXO;4#$ib-a4!U?qJFvm(zCJU*AqTPjv&t+^cACT@(HBYJ?*49@Ly_OS^?!DXZR zS=@r#~W#qfmYqitv3||x=h`GxUa=oTF(1~e-mdLbnADZ*e3U5k%$Exfz0b86?b)M zpI6JVE2Z(w!P zJtibzof^*_cxo6L4UEkm@rq;f!o<{DRZGhYpMIe@X?dNz&VAqtD_mPx?-O=^KDzvq z!<)xSBA6Z?Z)6;DeGo%n>k^{7>mP;_zX#{$mH>ZM=!oDp*KYEi)R@qmCFmPte4&4| z7N{BD6R004;m(rtCB!}3Idg6%O8PEWrIbTXG=d|>JJsE~F`jKyB*^DE4;(FYO=^48 z$qMn8u3Hj!a{?85M(*pTXpY99aHKx(>1EyQQa6La0V&^>rKS8#*ILvPYw|~`A^75Y zk>vI|+dRNf!Lj)M$uoak9EF=4nXi0*;4m!ALEiVk*MOJY8J4Zg_c`3YV&VI=9}KgX zseqL;UISh74iAr&kYpV~hSo3493W0N%mwWL_vl}`N$Hk~xyL3j7RE+OYo!m3o0S7E zL+!0%!?V>gpA5rN6_~tC8F`=TZ4P{>=&2KH(6rIc0+C5wDY32d?G35)%WE#iwv{dt zd#|L*vb2*ok_@N*rjc}CC%^22F@+G`V_M2_G_w5Fq-U-FA#~Ne1&%`}&B=LhCHBgf zwCE_EAeQdBr!rUtXN9=sZ>ztN2stBu^*C+lEf1UjGMVcyPyE!MR&04g+v=7VX+U?O zm@Gdh@sDgy$%iS-IUnr;5XyB=7n3f-BQweT_$~+1x>+}s)&CGHb(!yb7%Q#nE6N_C zhTj~jw#C9cxT)FoqBerACQFXP1c^J3-b|a_yzf-rw?|!qm@`HK$qNft1A?vy1GmxahKH!G?;j$C_ zG>wAkrs*OkEMq3lL8Nk%Z89u{S*1&TX#O0O{gA-~EW=8OG|S>qL((;<_D!3k4u{m- z&oF<{>5Kt};9gIblRi=Rq(a<<@rxhl_d{cEp!XFARqJz*A*R&KjpQVA?zc@M@pVm6 zQ=yjG_)&6Fr$cAT3BUHI^1)!Czh#<_$j%q5Yf}K-%ZVoK>bI%Utg@w3$q;>=<~Tl` z*-rT#zmMLlM9+Xre5#V-&eEy5KEVgC+pKHdp7iUw!osNBWkM6#OEF2fQi~gn+}62~ zBc6rx3sH93G&CDc%Q_spK*YRuEi!vsS;}Lui154~_nXf~W4Q+4S|GDcG zCaYo_;`$w9X#>^$n<}9--qcZ~q#KZuUWZCy%iJzV!mZEG+;hJZzn6$$PY>tPU|XzxvIE)r~K3ScvzF1?e|>GkxKi%fa1XmM1YKhF5DH3C_xC zK7$_A%>}0@bNfuAw5(k5GUWf{NGRy9!{r)lS3w)8^^;%O-tn4_o;elx`Fb?pdO&_~ zrcymD;FZh+DWxuJh*KOn($e~6xN~d_<;Lg>5s+YYe`;mXDDfD;16_&h(QAV>A)!^*ejWDy*-3NgnI&2VX)S@TEAD^j|f< z8~(!UKXKdWw=dUT43>5;Ay5x1MvN<|!ns4mk%zSdjreqeE2Pyca4$mxqfGY{()vJ8 z-gvlp?t4h*S`$ZQ>6Q?n=gjr9a>vJ0`Tac-^^cZ2J@Qa-Avs`I~|S{ z^#M1b!@Ut9wy)^?*h>->S#`^g)!VgVhoxe8CNa_%2G7^VdwdSL&G9fq+Ddd_>~Y0r zp%AjbI@bMoWDCvXY>gmJqe*1#0dThA5s22yA>?c|L>$U%} zu=7qQDh9Fr%*TT*H9iVo9HHB1Pn#Tg^>c80J4IQj&2>2g(C?Kxayg>`K{DdjHTV9sA|3@H`%!J2q*1zT=vkogA`vaJKQYsT2-zYsLwB?M zg^#>Zm6Nd_|L0v=$dAujql(p_qh|!6Kwt$6!S#PC%vq?vH_am6$8uFfsk1f#VXXW~ zs{C!_QH&2Kvy_y!<;_oPZY$nuMzGxt^v)w2OY8pr^n~n`{`03_R0r<${QoqiXyWny z)i$Y!K=z&N;dH8Z`6aUO=P!Yji6P?G?hLH82`E$avU8$1uYCkD6hG-H(TTJA-?Lr$VD`~>y!R^_bYtaWY zV>yvpp^5Z+e#4;5>n_P#zlm3BzffooCz0Q7;3HBPLqurqr?EYEg`zuj+d?n#0*lZ? z2K|+ZP=|2pnpERubhXAoMMZx|LwaGT%mEKe)Z|lWD#=5O>~3ADRpxd5v@2#s&(4}V z`li2FiBcK_C%#`rMb9AcKfg_^mab}CR_cOLDadXtzljqo@Lf=l0qQ9yLAvHg6{^F- z`|aFVa~haNkC@c=lW(?jS|75>a$b_x;g_60`N1^h#`vQy|H#3btucLj9T@;BROXA! zuuw+;G%!+0;ZF8~AAmMj!TV~&rdTEGOXBxKZ?=UVVZhUdL*>hCNKpH@Oz7Bxl?=~C zA+X6}op>)1B0>}03G3EJJiVyPPXc;9b-&6#GTrKjf<^%O z+)fysP$V^POsy%3lJmiWU{{I=1A58ihZpTa$ns`3NJ3yVG_7)p5CZD~?Nc4ft;UG1 zd+WBYTy+^mN{E&3>m)VS=h0CaZ+FdP(CEmXGOpa01+$WS>N__9vCisPW7KJ0nOoSW zl$@K6KVGbwTBmLR>Wxgx>jOtK8zUaTxod{=7*CF5ppvEd8fD(BZeeedwS2V_?_1e+)nJEADN z`nia@*imxC&Km@~CjZUKbPVO2(akA!LZpJedjO@odEA-wf!`o@mVs*Ls&jkkA<>QY zj#rG0Q~Tv=!Ka{nt`iB#+s||&#zOf;H-HbIAUQcWB)r1JxB||C8(K{jh3hceiIBYh z8ed}Qlr#Q)uT?XZ%~YaEw)b-;YDeu)s+_gs1b5v6a5fWeZ2l57wVyV)ezocH6Tb#{ zZl0HRC)#Lr+@XO~bE!BKse>dV#!#K#I;gdZJbd#6%eVsj`$wB(N_6VB+(!Eyin>+d zXEl>~B^I}Mqiv=eHKXNUy6Ks##`ERI$+B5u0ZkXK&Tt1ir}QN&z31Qp0JBSe|kB;q`o7qBgVUqzJ^|?eip(@nzdxVp?Z3(NAjJ z8lWgykNj3DgoH>tCGvhVPbzyNxNvr=$Too`bNT?euCwErxjCTC)-H;#sKgMGqrdy) zpc@Y|nGv_t^o-rgVJ`g`B=B5hx{AnAycA?nqJ5-ciuN@|?NJcuCe|P*b3o`}lf^4; zqo}i73EQbxN86W+mt0M|Q6UCr$sz)?GY8TO#1H+olYO*P8jGn2(c$)TEQ>_en5brO z2)8b^*lolyfUTrMlN+c7uN=?2wm3M6cH&StXl%zd$;b6`4xRalB{8>`FyMZYw)}*x zJkCaTNC7@ay`5IjVEP#%|5@GI+CGZ0hBqxP>TI>|gF~GrTiScl?l+N+Ydwt@%EZp; z6&Z^3n5bib4)$|`<`e8Cqy(l{SiJ>HHR`*%yfMl#MS{-))(30eqwu2{4_HyVDf_3#WszJH|)X;KXwv`UpagzFJTEWtprU`VN>mQb&ilUu8DJ`2Ns!47$%oeJGjKf4D?Cu|{D_vLPmu1_rdvNo< z%P~ayOp)_y-9|)ooP1qcghbNRVxFXHI@Es8jW1~|sEHgWlgZaebyH;FM9bkn&lc=5 z6#W<6PbZ}`MY#Q{?V&sa0S&?gQQX@_Lq10vQ}Qz#&$`?msJdVy6;0eGC>26}Q^C0} z2B`313InWT_J z#ZM2_cgDjSc)mgawxzorY}D{8uri_~Tv2(LShlw@37UKuAuJrOC5DBLaf8q2Y`daCFlIG-X+z79kfMhAT%NSGm&x(Iy^kC)+<6iPfi_43GARuK25VL7h5m$Uc*Ow#4= zpQJ$Q+$FuY_PTsXOqC(4jx{yc;L~>%FB*FS`1DH|j{cFB3KbjmwhiZ;1_;8F&juO$ z>V}&G@qQ%j<$Q$GJfc{D9M06cJ1$Mkq6AX7XB!*U*Vjw3@)oGLti`einay0ggekMZ zHs_od$;d@RJq8*DzO{CRJF;_X6Hx^AkSB@{)MGO^!B~GXX1uf}{8pFG=D0z*1|=C^ z6h9_Q92OX?Pd(fvz)H&G&_N6+;27uQmWl;!r(Lz{EGS1Nrbu1d+1MzHEji+BZ6(u+ zJ0@}rX5>*GIaGk`rWWKSxEMpVdD?1Ic)ia$^W-j#IG?@u@q!cfGZGE~Xtt3|lKwj3 zLB$smE8}vGncgqOb`<2PUsJjz3rRA67p3l)z;NNrBw}ab=Q8E6_{xW#d~RSHkHc$= z92O*~eucG{Qc??>CT1flJFFVE$E6c$$|+QEdGm-Aw~rbz^MSC&n&dUnAiofnfyrn{ zimLEB`W1lfOGh4W4->&^2Ek8fv0WwbY9ufhqOsGx_05p9M*Z}SF8UW%viLmngW@4W zM{`N{#3G-)LWH2<)`%AU%FHtr*QCfGH6LkFQO{MiB=iUmmxZMa(WZA=gh&KZ92e$} z+m5L|anjIUx@AU*C8u-nc6rlQFEW=SV%;?q=5XX7a06B9s4VE{CB}2zAKkfGScjbh z!Xm66n8cnkYs#v`tr{6(uG{$dJ5o|pQ+M5p)keO|Y{j@f`T**M1xBT)&mQtb@M#rd zg|{x__N8^dTK%0)HsS1}RD3{jw+vYT%kcjm&U+q{%^=b8;q8x->&uE(7B#H&$OOCc zr1MqpNaqbU5*$b8VztJDAgf2-aSPBxFO3W9!CPIM&H;h%KPj8$*h8pxu7o*HA1kf& z4@MmSKYYD)SX5E>KPpH|gCdgBs5C=&*MNwElqd~DNjC!0-7s_wf-p!33@OqvGz{I{ zB^~$h{^EJR&wcLwf99OM_lmvN=d;#2tfM@tzO(5tmM2!i#5nZC6QB-yz!ujq)jnC1 zzocDx_Kq2)eJX}oAWmgi^&mjIWEu;YGH?@>%Ud{|bt@veJI zP}FQF=|^Pt2z!={U^W7vjMF0G=2MlTm9tPPTTt)KJNs?){hWS+KFICAq9a50v2U|->$C#t;@Cf(7RA71NsJx}Qi;JWr6&Pc(`A~K|& zwr5G;j#s@~)$Id;{L8(sS;Y$;olA|R^{&#Xk{gkL#dxCAl6@-w)LZPo?&jD}V}Ioa z>)F!uZN{-6K6C*?0y>{><%k=cWI(|d;%Lzs(>YqCACKUd_2$D-^Bib?;G+-CDMB|4 z^42#4jZJ~YDLlN&cTw4~6zetf9@pA7VrS8?ihF5PL=p~EzflY57hN*xbR$pt-*)#u z{fm&f)w%g@bc2vy-`wruK!01KskB*dzp??kxkaGP5zmv9E!!B;w^czd;H_A(LZ*I@ z;S0OL%&^0*ZU=C_@9~FWCbDUwY@XXMvt_-knm-QAB!$y2X)(DBuX>tN(k=7p_RN~s z*eIVW2H{AdnA|5XnJz_`Ajy5+c5&->7thaxYOKD>3trWRf|=)QIfdeAyL4Ofh8zT= zeZ`&cpbYMwXVhJ}vCPqx@z;le4X1y$;C1<9^Yf(HQHY0q3I2cVs}9ZSr#)T||93JV zEd8)d==P@R;u)pP9Sz;Wk&7SIr|X}!hij#9_R%Q2WjQ>A`R8LBJ=Cfli@o`q^SZ~f zzV_@&xwg}~YtB-wwV#A7w+46L&vhGVI|uIndPDz}j_{cHt>Nf&wmY~=dIV@UwX^=? z@ik@4!+CZUyF#FQu&d^4KbkMk_QmVViwC)RSIwlZ0^D3sD(;u36CPW}BND!7WLj#8 z5ZgcjvXoJ#>)2&{_$-r~G7?ef9;Pw`Y%u!&cY{hA<~T*JUuA@H0f!l~A=iaP(d53P zbv_yck{bru@47mBUfOa%&mD1gpmcRaGbedvG;?+LN?(sSgIEV)x1d4crrnxeVH?K) z27mawP+=JU&nIoW!^~|WU|mPY2=`|pG=eQfIm8%F*muzifb~^=y=wr}^677?+VBAX zU7Bp+jYG~5?-Wu$TF>Dqi8GmF()xAULXlYInHx?4gA?Pb)>Q3A`CRuBYQ-@SmzK3NZUjpmPP_4Fv`9*sW~2AO-yYKDdXVN?5m* z9dHf)kpBeCa6P!nrtW0ur=jWkTd2XuoU&?`a)ia|xE4)%E!@1?xqHGg2y+1^TcM{r zfGJDJJ;JI9s?^!8jpm);V{3%V5)y)fRcDQq0jq?w^?oe9QGsF@jxONJzK08tr^$`K zZL7aa1BKX|_q^!IurA7~!d;u)oMT|(s@UBbiPfupnP@}j!*%Q}hP0DN5TokI4D;^6 zOsM4*QKl2FEKltsKQkKsp5^*%E$iZ0x=}v}CH#A~t9sZ<&sQ^y7xf)8f>S>O$UHzh z3IK6Kr5WWOsw@3Xo~)0@Lm^gD5eLxP_j%p~8P}n!ERK;(WY0K3AsKyn!7Osm-9m7P z71!C^j%}um60S#P(<;RFC)T15J%_ezzV@DzfBxW-6_H!mJ&5#vrIe-n?9zKM>@yXG z|1UWE*%Sl3XSyyo8LRdw41AW4UhBQ57+Dl~Ap#^=Cf*SwG;&u zX@y)n)f4~YZ6bQ9E&e;2c@DEmR0F^{9jbE%|1wC(XymAFDa4$2nGob~nK7z{--Zx1 zI!RI$_FVn!@L-W|GR*2#X!aH%cjK>dFOp-P)j^W9lZ^-bssYT0XFexK0p_TG}e_gcg;+F`4*8}a6E z)KhJP_f-^2GE7+kJyljf@eAjO3UBU(Wen##jXK!|DyQV@mQUp3LjyRHL0T?bSx8R# zwKx&=o%pj!pdG9p_L-UE`XaN{R&#TKrs?pohCyzBmKsU(qGZb%oG%t^&tKbT^wNXh z@@_c8YtVMqXL%<8NJfRvz+VtY`pKJ@w?ykT@|P+@b5P;quoc#I_~U$Y3CBbCDY{jbR7uIl1pc#fR>XL44fx9dV1EZ_ft(%(k72d7C(VGYeqB51&ZuUH?< zu^oH+{f+LX_l{nQ{PUD<8hIR?6h=;`7ny`%QE5@0bFJfI*+ALumV6ydzx4S@nmq*< z2ZB@c#Jsb2lc6VN7B%DFg5CQ)xE({uhY;Vdeyd2MD#53x+gH|8^a`Qb;GlbEm_gbeU(=dP7*Y6eI%T793Cl!eB#g4xAJ;F)juJ9X|=*8 zoM3@8&73UU;Yis`nKiq2=QCkMT(L8VPl)#th5HJ&ND~!(vXMta;KwO{+R*vd>MBK=GFp zG_c;La_V>%_HmH-_`2$mpY%~%%>Li}-_XkFvhcVtECZ>? z5G^YUVb9H*6{6c;;*_TfTN@Md`+iK)Jq+r2q2B?@FLbh&tEcfk<4G8-fkN8)EHh<$ zfqgoMarZQY_YVm#fbF%#-8i6rr*%u0B}%tPYR4dt6Fxx_vM76162&mr*X3DGyc7F& zlo=u=Rxq}v@klKLzE|G;7w}n9&BS8Oeh#M$`~MDd*Rd#HCfv!OGD_Cnzan>)YD+b? zK7P(}usZ2$y3x8~|L|7rRGxOmX(d`d!2%_e)%8BYBJD1(+biZ&G3o7{^N>9(g^rq2 z9`Ti0Gr+w}J#A!v|F17Tz|p@_G8$+Y+q9(GH!P65YTD%KV( z$t*r8DIhMoO-QO;?7cfFe5Uw{LRdwCX>2E5dL?XEJ2xtJc~vnJA&KR%I@lXJ^JI)d z4Yw^09l`SDf{|J#7qDk6kTQ?$2PDqm?Lz!FNZijG)nKm12SgAbeIT=FbA?xO zDk~Y+%zY#KY(o7Sg6GGx9IPXVVcfmMPJLn2tw}uD(+-i0;k5SEsnDRFkEvnd7HP+! zrYXT|yBmRQ6}BQyY8n)h24Cz91nTo;6P`^DlFcyTtZqV&(I-s}`67pxCpvD|Iuv7u ztQyDn`r7*DK8UMh;n}GvM1C?9qn$q}EgVqjYwByeE^ltSa> z2#KN4pP~!>O9g=V&A)%hVFJEM(kyM|-MAzMT=!l?2AAslqZ^Rw4>fJcSv?kCM{x;1 zlloMHrIFcKze|o$d1J2-b>B8D$T7FDk@#QLD78$6t2j5O>0k%dZK3Zuig;Pp{y z=e{V|+f=G9+0e3uN)P)Lv0n;)5KeR()Jo{`MG^fx*#^iLN0B zuvLGBmdb@WlD*{0MEtkrcth<{atEGrf?=2`3%FBER}+%LEy4>csnrDghE`8l2YaiJ z)cp=t+ehSILGIp+Vk=MI7P)M*e?sD;YBW%92(+0n zFaiKJ6zfZ?GW}Zu^!jAc1oi2U@)cC;xiPp1?_X2r+auQlX$@(@yqA9q+d1nSIhPA^ z{T28MrU=B5?WM6Y28jY!=^0|8ey=yS1~U=44#``|VU16VklBQJv;A)WR-I!sR#!Vo zo=xR`%aCgYnUHrq0iu5%We4ODy&TXk#|hAqN&I6;7goY&!3Ba~Hws?_9VTzG`{2oUEP zfv&InqgGOT>h%RgTvr(0=0F6l8l+d21A$klJ#;?Hky)Ynli-8~Z-u3O0vHXP-C47j z0ok*0Ek?VfAEuD?P_CC87V2uvMs(Ht%}_BKK#S7 zW4U5G>>CZATjJ<~EUMHZX}sor5jJ)$Ym1w;esetqe!ck|1ZNFG44fH3iJF+oEeZGP zyN#@dmo68OiI(lRf6ZUU0xRb+#&6Pfi7N8&c&Nu}CVU(4>?Qr`hz{QhHxQftek``# z#~7Orsgw_ZG<*Nc!9YHI@Id!pSW&Scy15T>Qjx6QylLl2A%qjS-C@sJ>&%^YXf)1v zfg^9m-|zlii1Wv&s_1-FQjO*4b>@#@0!173V;H@|co>W2Q{mQ~vICDE9>YNn z@XPRKQaQO^cJncwy482K7u+w)B?Dia_9!~BETFM73Q+qs$kp4bNht&$CM8MGW~EzEoBHTV?po z4~QaJTa5PFj5x^7$#>|{c~L&g zuzGW6YsJy*)X%RU7G(B&CD#ZK?X^{Jv?s_f5Uy*$E_!`^5N@L8JPzjc8CI_BAx+`d zM~Od$^|Ry>&`6{3bB`09cIMPK^1+K_9*{d<72}|D-v(j#?QZukS78w)5Cy-um0~qz z4TG*$Awa3314)-3`NtD;m%xVk#KXwy*Oj~%3<&mT4`;i(P2?PmJ5<%<`~X zvyS7gGv_El3$lEI-W-c-=oGKlvgORl8YcM)PWJkfW4ujXWFdL`f41<8fEKvWYg9@- z$T4hId-MgrH{WdC3JkX{WY7C~wvfwHRi~u0)0>c~($%`vzRRD{zYYmGr(4J4)Ajnd zxAXINXz+FzWI!<@aUXB)*QM>kmFa-bte=?oY&6BkWwuH-7VIBvnx}Uz_N>izl~2~h zYfmmtD!R&R2Y#?!uw6pa58WPgi#6a$od2Iu;?Lu9@4+vjq`X}~8wb|e_%ElfITfq) z@TXit$^w_%X5@0&cv|KOi{>$a#xVd2Smhoiagz0XQ828tK7YnjQ?6<>#4!uqP4jdc z`b>J;8BSU`=`k)hCmmw;mLuBAK*RZ!=*Ii~LYT4n{P+Z2}24#maD ziUclA_LpLG&b^tvCB_|30O=WPDoCFebDIg^+AXq`LXLmZ)tNtn4;NYD_|&lslNvZl zw1Ud>ZaEW#=It`75zQ9rhYQVdQdLuPL_L^ecEN?bh`pxm6QJit(sItV*2N8sPA%^% zB;p#{m}Bo)zjuBTq%oH{sS)s~Zk@^UB`2}_3-sz{7B@46L1(X@ zcE+@xXf=Ip0}lC%SF0)S(K2o(UM!GE0{R>M1BPx$X0pln>xohGMB$qlLc-8Qmn-aQ zAMiGG&dB@Afwp_DrgVOXemws*QPVslrij}Y*@NN2mD{qGGhs6)#vN#i45;B;^E5f0 zntIl6a*DOQcOZ$9b%RYEwVM&|flqWMTsbnC-7eC>YleU!9RGR)V%~%n z{#913Au=xHoo0|=eLR!cgAfc>FVgTGLV#WrI|$rLvBpGpBIvTg$##3zLx`v2&TFoJ z2B6hP2IoIp54{x!7KY+zuHA>|6@^#3sW2IUK3yMB!qyDLWK~;Z*nU zXNg1td5hRoXv;1h!~f&kCos`uxgRnFx|3Bg7oH_?#=L9ej?f<(h)DJ-4e9b;FDC#t zQwJDS{~Ia>%Vk)GwAKVBg z83UTXBk|!HfFhZgTt$t2ccGd=ni(!^`BWJyl5_a%Hr@5HF>((71G0;*2s1a!Gyk4K z5oOmf^OA5W2FNA)Ew>?!(vw&%F*eAVn2x)BS znXq9jxo~*Kn$*JWi_(!+gaOfd(*!eK!=}n5<1(xrYBCu^VgYy}84g=y78F)@0j zq?$tj!fI~*N5+NSTeLr8EQOR8(>=%I@^21CTjb_66mV;F;QLl?MW|zv$!b?BsB_+;+ zG}P5y4e;M7iW=)s%h$1BX5^{F?TZA8hf(!=h1iKWD$BoSvU!DytpD<=w1T8t8kmKI z{X7E;{R4f@Xn?nWLQ-N&t5MY>dsb5i@;p%6xaZzJ+&gE$=qT0U2l`&9W(ZK<0yO}CettauKX08E6dFXM9+g2q8LZ`&Q5IKKM znZwu@)s%RP?Z z736~SKegz$Rb1cbH9zmyds5VY2Rn9&scAV?Z(y>$;t|h1q^8(u%b4~Kjj?;CFFU7`Ez`9A}TwCA#PN!hQVb1@mb*U6scccNjpAz6rc$)6=~4K%PAwl=sJ0Y6HB7sW{_`OLO`LLF>l#vjZ1xhjjiB1 zw1Ir%@q$7)Yi9DLu-GGdxsi;R8ugf-%2^fzt-N2FPW0=A(U9PibxmxOtat|$ootb) z%bNxBh`Ij`G(JPETBw;`ioynDSSL{Z9jWB?brkt`Dqg9~+gM7EO)0-O-%C4oIRwdy zrF;-!#IrYW2{y-w6y-wkc_gU*z9)nC)Se_SL(iHsZu&W{+yHl>`YKGVpinIjGPHA8<;1vU-@TRX`KfjX-VWD)b~8qT;l{LT7(^4Dxd> zo$*p}%mOg^^-QBd=Xiu3zYi!BKSOExv%9y0s^)uCB7_bQ13@MZiaD8`AQw(ovu3tD zc_Fh+NY=Bfi0j9BmTk=ST=tIag@TD0L6EEZbwmbjX13hPUF;jjUBcqgYvh;Y56-=B zoGemEUcXkj9}aMs-A$b8$qKJDC^F?XoA@B-N(a#9GOeI0hbS@G`t=XgR!pe(h9^Y7 zwJPE+%yEUER22CUukFkm?9#blXL7#I%;ICAJKXRQ(NS!m@|IGdyN2|Z2VFp{;e{|;nTJ>i1Ao~6j}|e#omB=X$kICY@es(#pZV`IC&g_XtQRM& z|L_jxNHo5iA!0F_q<5!VWG&n_-yFmkytj8OekZmB<&**N*0}73uD$cdFEukmiBoL} z2~-pwap7j3dK@@m9RBQ83F1##7hKpI8h@P=vkifGg7=sBU1M#A8>@S07!j~-=9cX}b6Bnrd_eF^AJ8KqUN;57>W9 z=V+VQ7Y&1tOvP~qK&xYDGcS94c^yuSVI_I5v4i*K^Fk4mk<3PZZ@*#YTm!8+er9+B zwXh*y#yMB7vUu%UCfLX&W%HfV_wmI4;jE=Fv^vx@mcPSwF$9$T?BD|OstzrxS6d5? z=XOpM(oKYJ{6~!w5Rofo&5xxQOL?B^AE8+eV2Uqrz6-mHvQHbTxi_#(-s|WlrduLH>^caQ#Htx>e-vZLPXk9?cmaz;AL8691%FQ?r3p$qR3wtorEBts)_lS(2sg{c7*r@|6-t zs5Osw{tA>#BB_Z?%N(<9F`L>j0ZeYd7y9w2r_BGWHcy3uBl07F_Z;nBn-X)`t(v(* zfI&V3&;7vXZGRN<16EkJlCxS^X4r_HiEYl6K(J2M*}qjN^e*V?7$z)ObmV~8F*<>+ zD<`oG;wLzX{*U|waq8C#lsHEZ8WNN`hd_@@BZJzURLmF$^g8fF?CT1E!}qT zT@T2_&?)-G_BgB8h8IW;tb$%!&EM8h#C*=lw&7jo7_{5nq+51S;llBiI{Y0!kvQH4 zk}IZ#>B))!*~~CkJt^du0G_MK!)1b{6pD_~EAz)~q~H^B0VtfuK4!UXjzNNo`HV67 zMDg6zi@&p^jCjOA>YLS^!R)c0Hu8VLl~sLMYBaUXxzeoW=j|)JD9__w`hmeC%G`jJ zrWD2SoXY(!Ak2Zl9(ioP^l=@>$8?ZkM3|RC6y7{Lt7W>@C{^-}`+Q8)6=&=2(s(|j z6cL8@sCUjg+Q&ELg@o;2kc*f!I%R(NUymxF`aG=AHq*d=r zhl>ovY!pDkthFetK@&ptib@f6qkMF4dYr4y=(UCUkN!Ng|mM_D*b*g>|;~ZuYUI4`8BLxFSM-zNL#UJb0EPyuf_UkJGx$&Frgw{ zz*Ta?pAVLfm!R*F8C*Zl@B<5WstN2C-l;dkDUV)}XYRBaDVlP39YGbH-}#FERge#J z7*m@+WdlAIaAO|R>!gDF3RNIOy~W4CjRvfo>|4+esl{TP3mE`=`#QYq3I8aTY|wtI zRKKW<7v0+djLOilbS#FUsA6YYv?M;F#8T4#iO{WWLcem7zTh!SCPTQ@mJa!EHSsf! z8#6_Zf>^y?)w_hf(cR}pUXO91d| z;XZf*tI2GY<_cFghAS^`eV7nuH89Qq1L~jl?J>4g zjvm10s0SW|70E;{L*J;y6MtnEC$KmRtjFI+J7GzAmEtW=k~G3gN9{!`VzFXd%Lwa# z7hNH_b@#1~g+j#lR|b0(nfTMfTJY5K7J+gboL2yzrX^O=3VK?ojJ^u{+vfzXE%V;p zv-dOTLtH)vt(SY+UcO2l1v+Ir27)_#G1~iiEw<#i4|JMt%MY|FwnWX=3HV)TLl^;U zkQ$eS;gSCc@gK3%;+&f~N`tMaUV_VhW*2GwebR)Vv~<6ACgMa@OTQk56T!E3xxCKe z{DG`tO|XQ zy%uCw`Ep|J$84;IDFS9mf$iKjOs$w&R3X^#Ol4qoL`a+^A6pdiI-B;I=BjjPte(Z` z)088u|M<~D8IBN@*q5FoV-B2{WV#Zpl^c*UJae&lbC_Mc#mk)kmj_UCboz&lwQfUW z`8BI@dhec;4*xQrX$jYGO%K5-b0x>qo)i^)V6tnhVsn|?H&)s@KRbJkMXyZ+hq2S9 z&!Pc4rQ)C?Sb24hX889Va%F`CNwqgS75D29SXdL+<8YgrR(ZFZe;~d!S{^gkEIiO= z_9vk7t2X5QSSftVhbZ%=bNA0GlZL!mp27QBBsmEya06B<0yiK^qWOw%xJZ>@gOilE ze5^~@6SaqLlxMr(*&-{9*|9|pL=#TmTCM2cVxk|SGVsRr1vNwVqY*D@fMXhdY?daG z7xfq_IDP-+1Yd*m--rpp`ID6uhe6GJ}e zVll%Np%|?HRcP)5-pGOnr$o1jbgG?*FpK<=Aiq=*Fe7=EMRa;M4sLj-o;?4)qGjmG z?t8&y7#r|S;@6MR2md29%rnN@?gr^KlG#C6i#z*?lCp(I?69?y2tQ&>qulKe)8T$- zqkytqV_f>p4w@a6d)Ba)x#X}7>ohz%*^EI;8+AHC7UcqlYDu1Hg^j*~^ED7LZhDyu zD}$ziP)nP2z)D%>lA-JsS(6p z#kh?J5J}%)h(E1&PP-MkF&Sn zCgP{@?9H?L#;Y3(tJ%p=9acaecHUF5sjiSLM)%)3d3m7&&^(^N)%djc>f70{l_cvp)q9RNivDqXQ?<^akuyB~KBWg|Fa4Obr6 z1MjCRXgl8@mZML_WOD{Llx}VU{3jsjg zNl(ebl9UZtxPH%|C!I6WB8V#OHx&R$yP_ns?mS2y9L`aeWK+`|^lE>jiA2jho8q9@ zv2PsIpWLjxc%x=~M9D0|hv(v-UQKzRd^_%}!=_e%@_ zCINU7eDXLf;^$;&+g;p5K5C`J1UT3%14zz$_{i`?z62vp;5o2(EFDhT zGGE|drAC=Ka(i+><=e<}k!Gr~0WAL_I4SUpSHtqtQuJZKaj_o#At82Wf1m;$fLWsw z?O1!QhXb`nE+ecTeu1jgd;8-V!$a9IkU!~9(jImv0pNlzd!rIH4im{Dn#lR!-X5+u zkvQ(t=x!?>pn{BEk(x=Xf&9FUAeC2WZ>5@3-6c`uHLs{(*s=oYgl zR&6~H@<%^9pL>qJrW-t;1%4qRxZGWi!~rJBrbFlkKd}O(V1U~GP=6X!$^Y;Ih4+lK z#@Y{e;QxMt6w1bvVCB;KJ1`z0>eXX;D+zQlAoPE*s|8tm-+wE(JAuF|l+QwWPOrwu zR7M`syL8PM_i#$-M*v0oPLs`i<$+(D0yuIiqigp+7C^W2NgA4>>z=}+lc5>Id-tp9 zhr{e;1HeSv5?o9x9N;hsij~AVZRi2>5!l8pw2=T@Sh`V{``>B6Vs+C?q@?w}0cum5 z6Mq!S=l`JGpT>ZW*gQPVZpw#&=;6K4t}{6d*rTSGwZLX&Uy;V}oID)I3)wEWKvI|M zcDifr`K(98*pYy6O!xjwg85_afzc03LX?N#FeFXd^~Tv5#(J(`Vf+zw)wln3(0V?b z2e7@3=fXiGXb*4MHK#YX(4+lfj*IhLtSh+XCCO6xRBU*=Nx#@bWTHUJ9n2{?cxKW3 z9r!FK`;5&3YCwW>BLodV|58t_Je7y<*}m;r;SdKT*VOK=5uFT;CI|h;+5qh?ySF30 zt+Nqhq~?YVxp+?RqBva!6yalA?ai|b##2_wc=FH$g?p}R`on!jrgb- zXE${`r5n?g&kPvLv~aMYL7nCod~qU*gT~)t=IK4Qgfs1cNhLC#pl_nhuhIj1M7SQ= zRDFLCMo(?9gE#znJ`Dx- z*Q#Q<$%*r?@d7?kGr?D1+MO2z_N{@V7VsBhr$c)1o|g8r4IMc1|EUG=v$9yZg)?g7 zpjrILgK_`Zn+Mp#orRBC5dN{8^({#o4f#JgmY>J{gO{O}-5>tr!s6=_6_%%Q&Jq~E zsdE+~fbiTn%XST_FzWml&&350$?nb#XSDA3o0L(~nXfMls&cX}b@X~z1chb!C@R1} zV4HV4sQYUv9cxRV@d5x^|16HA)O}S`hdU^~Kx^e8;Ec|Nz^1=#?c$F*OAg(5McJZb z9M=o^gD~BH61IXOO7ulU?sAhU#A=$I)Ad^g1kh<+BlB-kd45&m7IT$E1RJ!8omRY# zpAKRK!=e@s_;J{RO&%}AhXUL*zF74;6nTkNDlCDoX~70J`qpHjH&jCJ69ua_M5Ioj zo83c_ZV~Fy{V{#T)fkJ^MpjSv6lrOTc^?%a6*rAIyeh{GfRN100?UxcEHQS=u?d;G) z8;xdHfg1o>zg^ZlmMv@3qiy+-x?UX&Xdri_apZUQTvgL~yD@eFFJL!E+o(p5I`fxa zCczh?0_eD>n^Mm=+z)FRv;i$KtpdjS2vVF_vvNcxJ!1VSwufpCawDTlLT<6cLiozP z%YKy&$p%1z-{v~mxEgyb7xt99-vlU<(%P!t(A8`a6Q8bbC_XQuQ5CeQ!aVRv4aqWb zn75kQN{b$B+KB>J5c32*O2C<3WsP#3q<%1^H`P7{qrZvbvl$$vI z5zhclhFQO$LPnrH*=`ZK6b|%7oTli9>Cv93O$#*H(#*KyxTo4ya#VuqbFq>H(z%)r zA7%c>xSK=lY=%!gldX++z zl*=rgoP0({evXfiyW9w}pnp%A!jYVhi1MEx5 zt?428+_#MUm_j0`_+DC{Qx-J_Rd;a@wmjZ6tZ&KZB+^GiS9gyi9LP_fZad;i|2tm- z_~sw=2;oEfs>Z0H!G%0Dnv$>TiA{iBUBBA?F0 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ʁ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 literal 0 HcmV?d00001 From ae544ff56374c0731cbb1ad83eb2dfcdee458575 Mon Sep 17 00:00:00 2001 From: Omri Gazitt Date: Thu, 6 Feb 2025 16:28:31 -0800 Subject: [PATCH 2/2] fixed broken links --- interop/authzen-interop-website/docs/intro.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/interop/authzen-interop-website/docs/intro.md b/interop/authzen-interop-website/docs/intro.md index 16b45a4..ce41fe0 100644 --- a/interop/authzen-interop-website/docs/intro.md +++ b/interop/authzen-interop-website/docs/intro.md @@ -30,21 +30,21 @@ The latest scenario defines a defense-in-depth architecture, consisting of API g ## Results summary -| Implementation | [Todo PEP 00](/docs/scenarios/todo/) | [Todo PEP 01](/docs/scenarios/todo-1.0-id) | [Todo PEP 02](/docs/scenarios/todo-1.1/) | AWS Gateway PEP | Envoy PEP | -| -------------------- | -------------------------------------------------------------| ------------------------------------------------------------------- | ---------------------------------------------------------------- | --------------- | --------- | -| Aserto | ✅ [Results](/docs/scenarios/todo/results/aserto) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/aserto) | ✅ [Results](/docs/scenarios/todo-1.1/results/aserto) | ✅ | | -| Axiomatics | ✅ [Results](/docs/scenarios/todo/results/axiomatics) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/axiomatics) | ✅ [Results](/docs/scenarios/todo-1.1/results/axiomatics) | | | -| Cerbos | ✅ [Results](/docs/scenarios/todo/results/cerbos) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/cerbos) | ✅ [Results](/docs/scenarios/todo-1.1/results/cerbos) | ✅ | | -| EmpowerID | Did not participate | ✅ [Results](/docs/scenarios/todo-1.0-id/results/empowerid) | ✅ [Results](/docs/scenarios/todo-1.1/results/empowerid) | | | -| Hexa | ✅ [Results](/docs/scenarios/todo/results/hexa) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/hexa) | ✅ [Results](/docs/scenarios/todo-1.1/results/hexa) | | | -| Indikite | Did not participate | ✅ [Results](/docs/scenarios/todo-1.0-id/results/indikite) | ✅ [Results](/docs/scenarios/todo-1.1/results/indikite) | | | -| Kogito | ✅ [Results](/docs/scenarios/todo/results/kogito) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/kogito) | ✅ [Results](/docs/scenarios/todo-1.1/results/kogito) | | | -| Open Policy Agent | ✅ [Results](/docs/scenarios/todo/results/opa) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/opa) | ✅ [Results](/docs/scenarios/todo-1.1/results/opa) | | | -| Permit | ✅ [Results](/docs/scenarios/todo/results/permit) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/permit) | ✅ [Results](/docs/scenarios/todo-1.1/results/permit) | | | -| Ping Authorize | ✅ [Results](/docs/scenarios/todo/results/pingid) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/pingid) | ✅ [Results](/docs/scenarios/todo-1.1/results/pingid) | | | -| PlainID | ✅ [Results](/docs/scenarios/todo/results/plainid) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/plainid) | ✅ [Results](/docs/scenarios/todo-1.1/results/plainid) | | | -| Real Solid Knowledge | ✅ [Results](/docs/scenarios/todo/results/RockSolidKnowlege) | Did not participate | Did not participate | | | -| SGNL | ✅ [Results](/docs/scenarios/todo/results/sgnl) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/sgnl) | ✅ [Results](/docs/scenarios/todo-1.1/results/sgnl) | | | -| Thales | ✅ [Results](/docs/scenarios/todo/results/authzforce) | Did not participate | Did not participate | | | -| Topaz | ✅ [Results](/docs/scenarios/todo/results/topaz) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/topaz) | ✅ [Results](/docs/scenarios/todo-1.1/results/topaz) | | | -| 3Edges | ✅ [Results](/docs/scenarios/todo/results/3edges) | Replaced by Indikite | Replaced by Indikite | | | +| Implementation | [Todo PEP 00](/docs/scenarios/todo/) | [Todo PEP 01](/docs/scenarios/todo-1.0-id) | [Todo PEP 02](/docs/scenarios/todo-1.1/) | AWS Gateway PEP | Envoy PEP | +| -------------------- | ------------------------------------------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------------------- | --------------- | --------- | +| Aserto | ✅ [Results](/docs/scenarios/todo/results/aserto) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/aserto) | ✅ [Results](/docs/scenarios/todo-1.1/results/aserto) | ✅ | | +| Axiomatics | ✅ [Results](/docs/scenarios/todo/results/axiomatics) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/axiomatics) | ✅ [Results](/docs/scenarios/todo-1.1/results/axiomatics) | | | +| Cerbos | ✅ [Results](/docs/scenarios/todo/results/cerbos) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/cerbos) | ✅ [Results](/docs/scenarios/todo-1.1/results/cerbos) | ✅ | | +| EmpowerID | Did not participate | ✅ [Results](/docs/scenarios/todo-1.0-id/results/empowerid) | ✅ [Results](/docs/scenarios/todo-1.1/results/empowerid) | | | +| Hexa | ✅ [Results](/docs/scenarios/todo/results/hexa) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/hexa) | ✅ [Results](/docs/scenarios/todo-1.1/results/hexa) | | | +| Indykite | Did not participate | ✅ [Results](/docs/scenarios/todo-1.0-id/results/indykite) | ✅ [Results](/docs/scenarios/todo-1.1/results/indykite) | | | +| Kogito | ✅ [Results](/docs/scenarios/todo/results/kogito) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/kogito) | ✅ [Results](/docs/scenarios/todo-1.1/results/kogito) | | | +| Open Policy Agent | ✅ [Results](/docs/scenarios/todo/results/opa) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/opa) | ✅ [Results](/docs/scenarios/todo-1.1/results/opa) | | | +| Permit | ✅ [Results](/docs/scenarios/todo/results/permit) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/permit) | ✅ [Results](/docs/scenarios/todo-1.1/results/permit) | | | +| Ping Authorize | Did not participate | ✅ [Results](/docs/scenarios/todo-1.0-id/results/pingid) | ✅ [Results](/docs/scenarios/todo-1.1/results/pingid) | | | +| PlainID | ✅ [Results](/docs/scenarios/todo/results/plainid) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/plainid) | ✅ [Results](/docs/scenarios/todo-1.1/results/plainid) | | | +| Real Solid Knowledge | ✅ [Results](/docs/scenarios/todo/results/RockSolidKnowledge) | Did not participate | Did not participate | | | +| SGNL | ✅ [Results](/docs/scenarios/todo/results/sgnl) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/SGNL) | ✅ [Results](/docs/scenarios/todo-1.1/results/SGNL) | | | +| Thales | ✅ [Results](/docs/scenarios/todo/results/authzforce) | Did not participate | Did not participate | | | +| Topaz | ✅ [Results](/docs/scenarios/todo/results/topaz) | ✅ [Results](/docs/scenarios/todo-1.0-id/results/topaz) | ✅ [Results](/docs/scenarios/todo-1.1/results/topaz) | | | +| 3Edges | ✅ [Results](/docs/scenarios/todo/results/3edges) | Replaced by Indykite | Replaced by Indykite | | |