From 9bd79ee80182f399a55df8d6a27f644b601ec809 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 3 Dec 2024 19:07:16 +0000
Subject: [PATCH 01/30] =?UTF-8?q?[feat]=20=E8=B3=BC=E5=85=A5=E5=A0=B1?=
 =?UTF-8?q?=E5=91=8A=E5=91=A8=E3=82=8A=E3=81=AEdomain=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/internals/domain/buy_repost.go      | 15 +++++++++++++++
 api/internals/domain/buy_status.go      | 14 ++++++++++++++
 api/internals/domain/payment_receipt.go | 16 ++++++++++++++++
 3 files changed, 45 insertions(+)
 create mode 100644 api/internals/domain/buy_repost.go
 create mode 100644 api/internals/domain/buy_status.go
 create mode 100644 api/internals/domain/payment_receipt.go

diff --git a/api/internals/domain/buy_repost.go b/api/internals/domain/buy_repost.go
new file mode 100644
index 000000000..b66acd45d
--- /dev/null
+++ b/api/internals/domain/buy_repost.go
@@ -0,0 +1,15 @@
+package domain
+
+import (
+	"time"
+)
+
+type BuyReport struct {
+	ID             int       `json:"id"`
+	FestivalItemID int       `json:"festivalItemId"`
+	Amount         int       `json:"amount"`
+	Memo           string    `json:"memo"`
+	PaidBy         string    `json:"paidBy"`
+	CreatedAt      time.Time `json:"createdAt"`
+	UpdatedAt      time.Time `json:"updatedAt"`
+}
diff --git a/api/internals/domain/buy_status.go b/api/internals/domain/buy_status.go
new file mode 100644
index 000000000..752422978
--- /dev/null
+++ b/api/internals/domain/buy_status.go
@@ -0,0 +1,14 @@
+package domain
+
+import (
+	"time"
+)
+
+type BuyStatus struct {
+	ID          int       `json:"id"`
+	BuyReportID int       `json:"buyReportId"`
+	IsPacked    bool      `json:"isPacked"`
+	IsSettled   bool      `json:"isSettled"`
+	CreatedAt   time.Time `json:"createdAt"`
+	UpdatedAt   time.Time `json:"updatedAt"`
+}
diff --git a/api/internals/domain/payment_receipt.go b/api/internals/domain/payment_receipt.go
new file mode 100644
index 000000000..c6164f4b3
--- /dev/null
+++ b/api/internals/domain/payment_receipt.go
@@ -0,0 +1,16 @@
+package domain
+
+import (
+	"time"
+)
+
+type PaymentReceipt struct {
+	ID          int       `json:"id"`
+	BuyReportID int       `json:"buyReportId"`
+	BucketName  string    `json:"bucketName"`
+	FileName    string    `json:"fileName"`
+	FileType    string    `json:"fileType"`
+	Remark      string    `json:"remark"`
+	CreatedAt   time.Time `json:"createdAt"`
+	UpdatedAt   time.Time `json:"updatedAt"`
+}

From 0b574205f8def70d406d28ce777941950d6d880c Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 3 Dec 2024 19:07:50 +0000
Subject: [PATCH 02/30] =?UTF-8?q?[feat]=20=E7=89=A9=E5=93=81=E7=AE=A1?=
 =?UTF-8?q?=E7=90=86=E3=81=AEdomain=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/internals/domain/division.go         | 13 +++++++++++++
 api/internals/domain/festival_item.go    | 14 ++++++++++++++
 api/internals/domain/financial_record.go | 13 +++++++++++++
 api/internals/domain/item_budget.go      | 13 +++++++++++++
 api/internals/domain/user_group.go       | 13 +++++++++++++
 5 files changed, 66 insertions(+)
 create mode 100644 api/internals/domain/division.go
 create mode 100644 api/internals/domain/festival_item.go
 create mode 100644 api/internals/domain/financial_record.go
 create mode 100644 api/internals/domain/item_budget.go
 create mode 100644 api/internals/domain/user_group.go

diff --git a/api/internals/domain/division.go b/api/internals/domain/division.go
new file mode 100644
index 000000000..e7d51198d
--- /dev/null
+++ b/api/internals/domain/division.go
@@ -0,0 +1,13 @@
+package domain
+
+import (
+	"time"
+)
+
+type Division struct {
+	ID                int       `json:"id"`
+	Name              string    `json:"name"`
+	FinancialRecordId int       `json:"financialRecordId"`
+	CreatedAt         time.Time `json:"createdAt"`
+	UpdatedAt         time.Time `json:"updatedAt"`
+}
diff --git a/api/internals/domain/festival_item.go b/api/internals/domain/festival_item.go
new file mode 100644
index 000000000..ea25ea61e
--- /dev/null
+++ b/api/internals/domain/festival_item.go
@@ -0,0 +1,14 @@
+package domain
+
+import (
+	"time"
+)
+
+type FestivalItem struct {
+	ID         int       `json:"id"`
+	Name       string    `json:"name"`
+	Memo       string    `json:"memo"`
+	DivisionID int       `json:"divisionId"`
+	CreatedAt  time.Time `json:"createdAt"`
+	UpdatedAt  time.Time `json:"updatedAt"`
+}
diff --git a/api/internals/domain/financial_record.go b/api/internals/domain/financial_record.go
new file mode 100644
index 000000000..9eeb96df4
--- /dev/null
+++ b/api/internals/domain/financial_record.go
@@ -0,0 +1,13 @@
+package domain
+
+import (
+	"time"
+)
+
+type FinancialRecord struct {
+	ID        int       `json:"id"`
+	Name      string    `json:"name"`
+	YearID    int       `json:"yearId"`
+	CreatedAt time.Time `json:"createdAt"`
+	UpdatedAt time.Time `json:"updatedAt"`
+}
diff --git a/api/internals/domain/item_budget.go b/api/internals/domain/item_budget.go
new file mode 100644
index 000000000..e8159c7b5
--- /dev/null
+++ b/api/internals/domain/item_budget.go
@@ -0,0 +1,13 @@
+package domain
+
+import (
+	"time"
+)
+
+type ItemBudget struct {
+	ID             int       `json:"id"`
+	Amount         int       `json:"amount"`
+	FestivalItemID int       `json:"festivalItemId"`
+	CreatedAt      time.Time `json:"createdAt"`
+	UpdatedAt      time.Time `json:"updatedAt"`
+}
diff --git a/api/internals/domain/user_group.go b/api/internals/domain/user_group.go
new file mode 100644
index 000000000..94f218de8
--- /dev/null
+++ b/api/internals/domain/user_group.go
@@ -0,0 +1,13 @@
+package domain
+
+import (
+	"time"
+)
+
+type UserGroup struct {
+	ID        int       `json:"id"`
+	UserID    int       `json:"userId"`
+	GroupID   int       `json:"groupId"`
+	CreatedAt time.Time `json:"createdAt"`
+	UpdatedAt time.Time `json:"updatedAt"`
+}

From af2fc1ad9bef76118719afc450de265159c6238b Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 3 Dec 2024 19:24:13 +0000
Subject: [PATCH 03/30] =?UTF-8?q?[feat]=20=E8=B3=BC=E5=85=A5=E5=A0=B1?=
 =?UTF-8?q?=E5=91=8A=E5=91=A8=E3=82=8A=E3=81=AEsql=E4=BD=9C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mysql/db/bus_statuses.sql      | 11 +++++++++++
 mysql/db/financial_records.sql | 10 ++++++++++
 mysql/db/payment_receipts.sql  | 13 +++++++++++++
 3 files changed, 34 insertions(+)
 create mode 100644 mysql/db/bus_statuses.sql
 create mode 100644 mysql/db/financial_records.sql
 create mode 100644 mysql/db/payment_receipts.sql

diff --git a/mysql/db/bus_statuses.sql b/mysql/db/bus_statuses.sql
new file mode 100644
index 000000000..52583cd63
--- /dev/null
+++ b/mysql/db/bus_statuses.sql
@@ -0,0 +1,11 @@
+USE finansu_db;
+
+CREATE TABLE buy_statuses (
+    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+    buy_report_id INT(10) UNSIGNED NOT NULL,
+    is_packed BOOLEAN NOT NULL DEFAULT FALSE,
+    is_settled BOOLEAN NOT NULL DEFAULT FALSE,
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    PRIMARY KEY (id)
+);
diff --git a/mysql/db/financial_records.sql b/mysql/db/financial_records.sql
new file mode 100644
index 000000000..ac162312c
--- /dev/null
+++ b/mysql/db/financial_records.sql
@@ -0,0 +1,10 @@
+USE finansu_db;
+
+CREATE TABLE financial_records (
+    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+    name VARCHAR(255) NOT NULL,
+    year_id INT(10) UNSIGNED NOT NULL,
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    PRIMARY KEY (id)
+);
diff --git a/mysql/db/payment_receipts.sql b/mysql/db/payment_receipts.sql
new file mode 100644
index 000000000..93d6400a3
--- /dev/null
+++ b/mysql/db/payment_receipts.sql
@@ -0,0 +1,13 @@
+USE finansu_db;
+
+CREATE TABLE payment_receipts (
+    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+    buy_report_id INT(10) UNSIGNED NOT NULL,
+    bucket_name VARCHAR(255) NOT NULL,
+    file_name VARCHAR(255) NOT NULL,
+    file_type VARCHAR(255) NOT NULL,
+    remark VARCHAR(255),
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    PRIMARY KEY (id)
+);

From 8e0a627cc92fe11a23fbcad650fba32eb895bfe7 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 3 Dec 2024 19:24:29 +0000
Subject: [PATCH 04/30] =?UTF-8?q?[feat]=20=E7=89=A9=E5=93=81=E7=AE=A1?=
 =?UTF-8?q?=E7=90=86=E5=91=A8=E3=82=8A=E3=81=AEsql=E4=BD=9C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mysql/db/buy_reports.sql    | 12 ++++++++++++
 mysql/db/divisions.sql      | 10 ++++++++++
 mysql/db/festival_items.sql | 11 +++++++++++
 mysql/db/item_budget.sql    | 10 ++++++++++
 mysql/db/user_groups.sql    | 10 ++++++++++
 5 files changed, 53 insertions(+)
 create mode 100644 mysql/db/buy_reports.sql
 create mode 100644 mysql/db/divisions.sql
 create mode 100644 mysql/db/festival_items.sql
 create mode 100644 mysql/db/item_budget.sql
 create mode 100644 mysql/db/user_groups.sql

diff --git a/mysql/db/buy_reports.sql b/mysql/db/buy_reports.sql
new file mode 100644
index 000000000..bab7e16d8
--- /dev/null
+++ b/mysql/db/buy_reports.sql
@@ -0,0 +1,12 @@
+USE finansu_db;
+
+CREATE TABLE buy_reports (
+    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+    festival_item_id INT(10) UNSIGNED NOT NULL,
+    amount INT(10) NOT NULL,
+    memo VARCHAR(255) NOT NULL,
+    paid_by VARCHAR(255) NOT NULL,
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    PRIMARY KEY (id)
+);
diff --git a/mysql/db/divisions.sql b/mysql/db/divisions.sql
new file mode 100644
index 000000000..a6ec465fe
--- /dev/null
+++ b/mysql/db/divisions.sql
@@ -0,0 +1,10 @@
+USE finansu_db;
+
+CREATE TABLE divisions (
+    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+    name VARCHAR(255) NOT NULL,
+    financial_record_id INT(10) UNSIGNED NOT NULL,
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    PRIMARY KEY (id)
+);
diff --git a/mysql/db/festival_items.sql b/mysql/db/festival_items.sql
new file mode 100644
index 000000000..a4dbfed6f
--- /dev/null
+++ b/mysql/db/festival_items.sql
@@ -0,0 +1,11 @@
+USE finansu_db;
+
+CREATE TABLE festival_items (
+    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+    name VARCHAR(255) NOT NULL,
+    memo VARCHAR(255) NOT NULL,
+    division_id INT(10) UNSIGNED NOT NULL,
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    PRIMARY KEY (id)
+);
diff --git a/mysql/db/item_budget.sql b/mysql/db/item_budget.sql
new file mode 100644
index 000000000..109aa8ed6
--- /dev/null
+++ b/mysql/db/item_budget.sql
@@ -0,0 +1,10 @@
+USE finansu_db;
+
+CREATE TABLE item_budgets (
+    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+    amount INT(10) NOT NULL,
+    festival_item_id INT(10) UNSIGNED NOT NULL,
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    PRIMARY KEY (id)
+);
diff --git a/mysql/db/user_groups.sql b/mysql/db/user_groups.sql
new file mode 100644
index 000000000..fa2ae1eef
--- /dev/null
+++ b/mysql/db/user_groups.sql
@@ -0,0 +1,10 @@
+USE finansu_db;
+
+CREATE TABLE user_groups (
+    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+    user_id INT(10) NOT NULL,
+    group_id INT(10) NOT NULL,
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    PRIMARY KEY (id),
+);

From 4cf9f3f02c11e8819b01932ee441c06bbbb69bad Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 3 Dec 2024 21:00:05 +0000
Subject: [PATCH 05/30] =?UTF-8?q?[fix]=20codegen=E3=82=B3=E3=83=9E?=
 =?UTF-8?q?=E3=83=B3=E3=83=89=E3=81=AE=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Makefile b/Makefile
index 90803c3d3..f6d643056 100644
--- a/Makefile
+++ b/Makefile
@@ -72,3 +72,6 @@ ent-db:
 # eslintの実行
 run-eslint:
 	docker compose exec view npm run lint
+
+generate-openapi:
+	docker compose run --rm api oapi-codegen -config internals/generated/config.yaml internals/generated/openapi.yaml

From a953a9faf48b8d14c2a490d601a370230fbaf2c2 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 3 Dec 2024 21:00:50 +0000
Subject: [PATCH 06/30] =?UTF-8?q?[fix]=20build=E6=99=82=E3=81=ABoapi?=
 =?UTF-8?q?=E3=82=92go=20install?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/dev.Dockerfile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/api/dev.Dockerfile b/api/dev.Dockerfile
index f6f57215f..687c37974 100644
--- a/api/dev.Dockerfile
+++ b/api/dev.Dockerfile
@@ -19,6 +19,8 @@ ENV GOOS=linux
 # swaggerをinstall
 RUN go install github.com/swaggo/swag/cmd/swag@latest
 
+RUN go install github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen@v2.2.0
+
 # Airをインストール
 RUN go install github.com/air-verse/air@latest
 CMD ["air", "-c", ".air.toml"]

From 8dc559cb66033179f43c77d22714b57c7ac7198b Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 3 Dec 2024 21:01:11 +0000
Subject: [PATCH 07/30] =?UTF-8?q?[fix]=20=E4=BE=9D=E5=AD=98=E9=96=A2?=
 =?UTF-8?q?=E4=BF=82=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/go.mod |  19 ++-
 api/go.sum | 440 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 429 insertions(+), 30 deletions(-)

diff --git a/api/go.mod b/api/go.mod
index 03e1fc7b8..453a9f975 100644
--- a/api/go.mod
+++ b/api/go.mod
@@ -3,22 +3,21 @@ module github.com/NUTFes/FinanSu/api
 go 1.16
 
 require (
+	github.com/go-openapi/jsonpointer v0.20.2 // indirect
+	github.com/go-openapi/swag v0.22.8 // indirect
 	github.com/go-sql-driver/mysql v1.6.0
+	github.com/go-test/deep v1.0.8 // indirect
 	github.com/joho/godotenv v1.4.0
-	github.com/kr/pretty v0.3.1 // indirect
-	github.com/labstack/echo/v4 v4.9.0
-	github.com/mattn/go-colorable v0.1.13 // indirect
-	github.com/mattn/go-isatty v0.0.17 // indirect
+	github.com/labstack/echo/v4 v4.11.4
+	github.com/oapi-codegen/runtime v1.1.1
 	github.com/pkg/errors v0.9.1
+	github.com/rogpeppe/go-internal v1.12.0 // indirect
 	github.com/slack-go/slack v0.13.0
-	github.com/stretchr/testify v1.8.1 // indirect
+	github.com/stretchr/testify v1.9.0 // indirect
 	github.com/swaggo/echo-swagger v1.3.5
 	github.com/swaggo/swag v1.8.1
-	golang.org/x/crypto v0.3.0
-	golang.org/x/net v0.7.0 // indirect
-	golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
-	golang.org/x/tools v0.4.0 // indirect
-	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
+	golang.org/x/crypto v0.23.0
+	golang.org/x/tools v0.21.0 // indirect
 	gorm.io/driver/mysql v1.3.3
 	gorm.io/gorm v1.23.4
 )
diff --git a/api/go.sum b/api/go.sum
index 1ef223379..213215fcb 100644
--- a/api/go.sum
+++ b/api/go.sum
@@ -1,39 +1,155 @@
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno=
+github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4=
+github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
+github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM=
 github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
 github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
+github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=
 github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
 github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
 github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
+github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=
+github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM=
 github.com/agiledragon/gomonkey/v2 v2.3.1 h1:k+UnUY0EMNYUFUAQVETGY9uUTxjMdnUkP0ARyJS1zzs=
 github.com/agiledragon/gomonkey/v2 v2.3.1/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY=
+github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
+github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
+github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=
+github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
+github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
+github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
+github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
+github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
+github.com/bsm/ginkgo/v2 v2.9.5/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
+github.com/bsm/gomega v1.26.0/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
+github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
+github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
+github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM=
+github.com/bytedance/sonic v1.10.0-rc3/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4=
+github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
+github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
+github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
+github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
+github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA=
+github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
+github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
+github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
+github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
 github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
 github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk=
+github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
+github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
+github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=
+github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
+github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
+github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
+github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw=
+github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8=
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
+github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
 github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
 github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q=
+github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs=
 github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs=
 github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns=
 github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M=
 github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I=
 github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM=
 github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-openapi/swag v0.22.5/go.mod h1:Gl91UqO+btAM0plGGxHqJcQZ1ZTy6jbmridBTsDy8A0=
+github.com/go-openapi/swag v0.22.8 h1:/9RjDSQ0vbFR+NyjGMkFTsA1IA0fmhKSThmfGZjicbw=
+github.com/go-openapi/swag v0.22.8/go.mod h1:6QT22icPLEqAM/z/TChgb4WAveCHF92+2gF0CNjHpPI=
+github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
+github.com/go-playground/validator/v10 v10.14.1/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
 github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
-github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho=
+github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
 github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
+github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
+github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
+github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
+github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
+github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
+github.com/gobwas/ws v1.3.0/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
+github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
 github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
 github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
-github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
+github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
+github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
+github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
+github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
+github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
+github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
+github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
+github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA=
+github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0=
+github.com/iris-contrib/httpexpect/v2 v2.15.2/go.mod h1:JLDgIqnFy5loDSUv1OA2j0mb6p/rDhiCqigP22Uq9xE=
+github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA=
 github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
 github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
 github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas=
@@ -42,7 +158,25 @@ github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=
 github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
 github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
+github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
+github.com/kataras/blocks v0.0.7/go.mod h1:UJIU97CluDo0f+zEjbnbkeMRlvYORtmc1304EeyXf4I=
+github.com/kataras/golog v0.1.9/go.mod h1:jlpk/bOaYCyqDqH18pgDHdaJab72yBE6i0O3s30hpWY=
+github.com/kataras/iris/v12 v12.2.6-0.20230908161203-24ba4e8933b9/go.mod h1:ldkoR3iXABBeqlTibQ3MYaviA1oSlPvim6f55biwBh4=
+github.com/kataras/jwt v0.1.10/go.mod h1:xkimAtDhU/aGlQqjwvgtg+VyuPwMiyZHaY8LJRh0mYo=
+github.com/kataras/neffos v0.0.22/go.mod h1:IIJZcUDvwBxJGlDj942dqQgyznVKYDti91f8Ez+RRxE=
+github.com/kataras/pio v0.0.12/go.mod h1:ODK/8XBhhQ5WqrAhKy+9lTPS7sBf6O3KcLhc9klfRcY=
+github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4=
+github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw=
+github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
+github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
+github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
+github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -51,152 +185,415 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/labstack/echo/v4 v4.9.0 h1:wPOF1CE6gvt/kmbMR4dGzWvHMPT+sAEUJOwOTtvITVY=
 github.com/labstack/echo/v4 v4.9.0/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
-github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8=
+github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8=
 github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
+github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
+github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
+github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
+github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18=
 github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
 github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
 github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
 github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
 github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
 github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mediocregopher/radix/v3 v3.8.1/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
+github.com/microcosm-cc/bluemonday v1.0.25/go.mod h1:ZIOjCQp1OrzBBPIJmfX4qDYFuhU02nx4bn030ixfHLE=
+github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
+github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
+github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
+github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/nats-io/jwt/v2 v2.3.0/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k=
+github.com/nats-io/jwt/v2 v2.5.0/go.mod h1:24BeQtRwxRV8ruvC4CojXlx/WQ/VjuwlYiH+vu/+ibI=
+github.com/nats-io/nats-server/v2 v2.9.11/go.mod h1:b0oVuxSlkvS3ZjMkncFeACGyZohbO4XhSqW1Lt7iRRY=
+github.com/nats-io/nats.go v1.19.0/go.mod h1:tLqubohF7t4z3du1QDPYJIQQyhb4wl6DhjxEajSI7UA=
+github.com/nats-io/nats.go v1.28.0/go.mod h1:XpbWUlOElGwTYbMR7imivs7jJj9GtK7ypv321Wp6pjc=
+github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4=
+github.com/nats-io/nkeys v0.4.4/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64=
+github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
+github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
+github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
+github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
+github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
+github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
+github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
+github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
+github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
+github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0=
+github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo=
+github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw=
+github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo=
+github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc=
+github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk=
+github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo=
+github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts=
+github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k=
+github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0=
+github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
+github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
+github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
+github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
+github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
+github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
+github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc=
+github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM=
+github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg=
+github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
+github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
+github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw=
+github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw=
+github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ=
+github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg=
+github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4=
+github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ=
+github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
 github.com/otiai10/copy v1.7.0 h1:hVoPiN+t+7d2nzzwMiDHPSOogsWAStewq3TwU05+clE=
 github.com/otiai10/copy v1.7.0/go.mod h1:rmRl6QPdJj6EiUqXQ/4Nn2lLXoNQjFCQbbNrxgc/t3U=
 github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=
 github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=
 github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
 github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
+github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
+github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
+github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
+github.com/pkg/diff v0.0.0-20200914180035-5b29258ca4f7/go.mod h1:zO8QMzTeZd5cpnIkz/Gn6iK0jDfGicM1nynOkkPIl28=
 github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo=
+github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
+github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
+github.com/redis/go-redis/v9 v9.1.0/go.mod h1:urWj3He21Dj5k4TK1y59xH8Uj6ATueP8AH1cY3lZl4c=
 github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
+github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
+github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=
+github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
+github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
+github.com/shirou/gopsutil/v3 v3.23.8/go.mod h1:7hmCaBn+2ZwaZOr6jmPBZDfawwMGuo1id3C6aM8EDqQ=
+github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
+github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
+github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
 github.com/slack-go/slack v0.13.0 h1:7my/pR2ubZJ9912p9FtvALYpbt0cQPAqkRy2jaSI1PQ=
 github.com/slack-go/slack v0.13.0/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
+github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
+github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
+github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
+github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
+github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
+github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
+github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
+github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
+github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
 github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
 github.com/swaggo/echo-swagger v1.3.5 h1:kCx1wvX5AKhjI6Ykt48l3PTsfL9UD40ZROOx/tYzWyY=
 github.com/swaggo/echo-swagger v1.3.5/go.mod h1:3IMHd2Z8KftdWFEEjGmv6QpWj370LwMCOfovuh7vF34=
 github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a h1:kAe4YSu0O0UFn1DowNo2MY5p6xzqtJ/wQ7LZynSvGaY=
 github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a/go.mod h1:lKJPbtWzJ9JhsTN1k1gZgleJWY/cqq0psdoMmaThG3w=
 github.com/swaggo/swag v1.8.1 h1:JuARzFX1Z1njbCGz+ZytBR15TFJwF2Q7fu8puJHhQYI=
 github.com/swaggo/swag v1.8.1/go.mod h1:ugemnJsPZm/kRwFUnzBlbHRd0JY9zE1M4F+uy2pAaPQ=
+github.com/tailscale/depaware v0.0.0-20210622194025-720c4b409502/go.mod h1:p9lPsd+cx33L3H9nNoecRRxPssFKUwwI50I3pZ0yT+8=
+github.com/tdewolff/minify/v2 v2.12.9/go.mod h1:qOqdlDfL+7v0/fyymB+OP497nIxJYSvX4MQWA8OoiXU=
+github.com/tdewolff/parse/v2 v2.6.8/go.mod h1:XHDhaU6IBgsryfdnpzUXBlT6leW/l25yrFBTEb4eIyM=
+github.com/tdewolff/test v1.0.9/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
+github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
+github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
+github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
+github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
+github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
 github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
-github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
 github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
+github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
+github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
+github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
+github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
+github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
+github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
+github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
+github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0=
+github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=
+github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
+github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
+go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
+go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M=
+go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU=
+golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/arch v0.4.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
 golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A=
-golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
+golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
+golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
+golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
+golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
+golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
+golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
+golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
+golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
+golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
+golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
+golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
 golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA=
+golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
 golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
+golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
+golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
 golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
 golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
 golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
 golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
-golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
+golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
+golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
 golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
+golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
+golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
+golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
+golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
+golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
+golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
+golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
+golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
 golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
+golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
+golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
+golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
+golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
+golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
+golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
+golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
 golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
+golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
+golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
 golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs=
-golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
+golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
 golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4=
+golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
 golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
+golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
+golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
+golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
+golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
+golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw=
+golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
@@ -209,3 +606,6 @@ gorm.io/driver/mysql v1.3.3/go.mod h1:ChK6AHbHgDCFZyJp0F+BmVGb06PSIoh9uVYKAlRbb2
 gorm.io/gorm v1.23.1/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
 gorm.io/gorm v1.23.4 h1:1BKWM67O6CflSLcwGQR7ccfmC4ebOxQrTfOQGRE9wjg=
 gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
+moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE=
+nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
+rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

From 24ab6b9dfdca360fbb876366b77058cd58e4e40d Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 3 Dec 2024 21:01:38 +0000
Subject: [PATCH 08/30] =?UTF-8?q?[feat]=20openapi=E3=81=AEyaml=E4=BD=9C?=
 =?UTF-8?q?=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/internals/generated/openapi.yaml | 2432 ++++++++++++++++++++++++++
 1 file changed, 2432 insertions(+)
 create mode 100644 api/internals/generated/openapi.yaml

diff --git a/api/internals/generated/openapi.yaml b/api/internals/generated/openapi.yaml
new file mode 100644
index 000000000..45545f0de
--- /dev/null
+++ b/api/internals/generated/openapi.yaml
@@ -0,0 +1,2432 @@
+openapi: 3.0.1
+info:
+  title: NUTFes FinanSu API
+  description: FinanSu APIドキュメント
+  contact: {}
+  version: 2.0.0
+servers:
+  - url: http://localhost:1323/
+paths:
+  /activities:
+    get:
+      tags:
+        - activity
+      description: activitiesの一覧を取得
+      responses:
+        "200":
+          description: activitiesの一覧の取得
+          content: {}
+    post:
+      tags:
+        - activity
+      description: activitiesの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity"
+        required: false
+      responses:
+        "200":
+          description: create されたactivityが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity
+  /activities/details:
+    get:
+      tags:
+        - activity
+      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
+      responses:
+        "200":
+          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
+          content: {}
+  /activities/details/{year}:
+    get:
+      tags:
+        - activity
+      description: "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得"
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得"
+          content: {}
+  /activities/filtered_details:
+    get:
+      tags:
+        - activity
+      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
+      requestBody:
+        description: Filter by keyword
+        content:
+          "*/*":
+            schema:
+              type: string
+        required: false
+      responses:
+        "200":
+          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
+          content: {}
+      x-codegen-request-body-name: keyword
+  /activities/filtered_details/{year}:
+    get:
+      tags:
+        - activity
+      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
+      parameters:
+        - name: year
+          in: path
+          description: Filter by year.
+          required: true
+          schema:
+            type: string
+      requestBody:
+        description: Filter by keyword
+        content:
+          "*/*":
+            schema:
+              type: string
+        required: false
+      responses:
+        "200":
+          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
+          content: {}
+      x-codegen-request-body-name: keyword
+  /activities/{id}:
+    get:
+      tags:
+        - activity
+      description: IDで指定されたactivitiesの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activitiesの取得
+          content: {}
+    put:
+      tags:
+        - activity
+      description: activitiesの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity"
+        required: false
+      responses:
+        "200":
+          description: 更新されたactivitiesが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity
+    delete:
+      tags:
+        - activity
+      description: IDを指定してactivitiesの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activitiesの削除完了
+          content: {}
+  /activity_informations:
+    get:
+      tags:
+        - activity_information
+      description: activity_informationの一覧を取得
+      responses:
+        "200":
+          description: activity_informationの一覧の取得
+          content: {}
+    post:
+      tags:
+        - activity_information
+      description: activity_informationの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_information"
+        required: false
+      responses:
+        "200":
+          description: create されたactivity_informationが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_information
+  /activity_informations/{id}:
+    get:
+      tags:
+        - activity_information
+      description: IDで指定されたactivity_informationsの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_informationの取得
+          content: {}
+    put:
+      tags:
+        - activity_information
+      description: activity_informationの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_information"
+        required: false
+      responses:
+        "200":
+          description: 更新されたactivity_informationが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_information
+    delete:
+      tags:
+        - activity_information
+      description: IDを指定してactivity_informationの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_informationの削除完了
+          content: {}
+  /activity_styles:
+    get:
+      tags:
+        - activity_style
+      description: activity_styleの一覧を取得
+      responses:
+        "200":
+          description: activity_styleの一覧の取得
+          content: {}
+    post:
+      tags:
+        - activity_style
+      description: activity_styleの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_style"
+        required: false
+      responses:
+        "200":
+          description: createされたactivity_styleが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_style
+  /activity_styles/{id}:
+    get:
+      tags:
+        - activity_style
+      description: IDで指定されたactivity_styleの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_styleの取得
+          content: {}
+    put:
+      tags:
+        - activity_style
+      description: activity_styleの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_style"
+        required: false
+      responses:
+        "200":
+          description: 更新されたactivity_styleが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_style
+    delete:
+      tags:
+        - activity_style
+      description: IDを指定してactivity_styleの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_styleの削除完了
+          content: {}
+  /budgets:
+    get:
+      tags:
+        - budget
+      description: budgetの一覧を取得
+      responses:
+        "200":
+          description: budgetの一覧の取得
+          content: {}
+    post:
+      tags:
+        - budget
+      description: budgetの作成
+      parameters:
+        - name: price
+          in: query
+          description: price
+          required: true
+          schema:
+            type: integer
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: integer
+        - name: source_id
+          in: query
+          description: source_id
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: create されたbudgetが返ってくる
+          content: {}
+  /budgets/details:
+    get:
+      tags:
+        - budget
+      description: budgetに紐づくyearとsourceの一覧を取得
+      responses:
+        "200":
+          description: budgetに紐づくyearとsourceの一覧を取得
+          content: {}
+  /budgets/details/{year}:
+    get:
+      tags:
+        - budget
+      description: 年度で指定されたbudgetsに紐づく年度とソースを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 年度で指定されたbudgetsに紐づく年度とソースを取得
+          content: {}
+  /budgets/{id}:
+    get:
+      tags:
+        - budget
+      description: IDで指定されたbudgetの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: budgetの取得
+          content: {}
+    put:
+      tags:
+        - budget
+      description: budgetの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: price
+          in: query
+          description: price
+          schema:
+            type: integer
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: integer
+        - name: source_id
+          in: query
+          description: source_id
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 更新されたbudgetが返ってくる
+          content: {}
+    delete:
+      tags:
+        - budget
+      description: IDを指定してbudgetの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: budgetの削除完了
+          content: {}
+  /budgets/{id}/details:
+    get:
+      tags:
+        - budget
+      description: IDで指定されたbudgetに紐づくyearとsourceを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: budgetに紐づくyearとsourceを取得
+          content: {}
+  /bureaus:
+    get:
+      tags:
+        - bureau
+      description: bureauの一覧を取得
+      responses:
+        "200":
+          description: bureauの一覧の取得
+          content: {}
+    post:
+      tags:
+        - bureau
+      description: bureauの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: create されたbureauが返ってくる
+          content: {}
+  /bureaus/{id}:
+    get:
+      tags:
+        - bureau
+      description: IDで指定されたbureauの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: bureauの取得
+          content: {}
+    put:
+      tags:
+        - bureau
+      description: bureauの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたbureauが返ってくる
+          content: {}
+    delete:
+      tags:
+        - bureau
+      description: IDを指定してbureauの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: bureauの削除完了
+          content: {}
+  /departments:
+    get:
+      tags:
+        - department
+      description: departmentの一覧の取得
+      responses:
+        "200":
+          description: departmentの一覧を取得
+          content: {}
+    post:
+      tags:
+        - department
+      description: departmentの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 作成されたdepartmentが返ってくる
+          content: {}
+  /departments/{id}:
+    get:
+      tags:
+        - department
+      description: IDで指定されたdepartmentの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: departmentの取得
+          content: {}
+    put:
+      tags:
+        - department
+      description: departmentの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたdepartmentが返ってくる
+          content: {}
+    delete:
+      tags:
+        - department
+      description: IDを指定してdepartmentの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: departmentの削除完了
+          content: {}
+  /expenses:
+    get:
+      tags:
+        - expense
+      description: expenseの一覧の取得
+      responses:
+        "200":
+          description: expenseの一覧を取得
+          content: {}
+    post:
+      tags:
+        - expense
+      description: expenseの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 作成されたexpenseが返ってくる
+          content: {}
+  /expenses/details:
+    get:
+      tags:
+        - expense
+      description: expenseに紐づくpurchase_itemの一覧を取得
+      responses:
+        "200":
+          description: expenseに紐づくpurchase_itemの一覧を取得
+          content: {}
+  /expenses/{id}:
+    get:
+      tags:
+        - expense
+      description: IDで指定されたexpenseの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: expenseの取得
+          content: {}
+    put:
+      tags:
+        - expense
+      description: expenseの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたexpenseが返ってくる
+          content: {}
+    delete:
+      tags:
+        - expense
+      description: IDを指定してexpenseの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: expenseの削除完了
+          content: {}
+  /expenses/{id}/details:
+    get:
+      tags:
+        - expense
+      description: IDで指定されたexpenseに紐づくpurchase_itemsを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたexpenseに紐づくpurchase_itemsを取得
+          content: {}
+  /expenses/details/{year}:
+    get:
+      tags:
+        - expense
+      description: 年度で指定されたexpenseに紐づく購入申請と購入報告を取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearで指定されたexpenseに紐づく購入申請と購入報告を取得
+          content: {}
+  /expenses/fiscalyear/{year}:
+    get:
+      tags:
+        - expense
+      description: 年度で指定されたexpensesを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearで指定されたexpensesを取得
+          content: {}
+  /fund_informations:
+    get:
+      tags:
+        - fund_information
+      description: fund_informationの一覧を取得
+      responses:
+        "200":
+          description: fund_informationの一覧の取得
+          content: {}
+    post:
+      tags:
+        - fund_information
+      description: fund_informationの作成
+      parameters:
+        - name: user_id
+          in: query
+          description: user_id
+          required: true
+          schema:
+            type: integer
+        - name: teacher_id
+          in: query
+          description: teacher_id
+          required: true
+          schema:
+            type: integer
+        - name: price
+          in: query
+          description: price
+          required: true
+          schema:
+            type: integer
+        - name: remark
+          in: query
+          description: remark
+          schema:
+            type: string
+        - name: is_first_check
+          in: query
+          description: is_first_check
+          schema:
+            type: boolean
+        - name: is_last_check
+          in: query
+          description: is_last_check
+          schema:
+            type: boolean
+        - name: received_at
+          in: query
+          description: received_at
+          schema:
+            type: string
+      responses:
+        "200":
+          description: create されたfund_informationが返ってくる
+          content: {}
+  /fund_informations/details:
+    get:
+      tags:
+        - fund_information
+      description: fund_informationに紐づくteacherとuserの一覧を取得
+      responses:
+        "200":
+          description: fund_informationに紐づくteacherとuserの一覧を取得
+          content: {}
+  /fund_informations/{id}:
+    get:
+      tags:
+        - fund_information
+      description: IDで指定されたfund_informationの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: fund_informationの取得
+          content: {}
+    put:
+      tags:
+        - fund_information
+      description: fund_informationの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: user_id
+          in: query
+          description: user_id
+          required: true
+          schema:
+            type: integer
+        - name: teacher_id
+          in: query
+          description: teacher_id
+          required: true
+          schema:
+            type: integer
+        - name: price
+          in: query
+          description: price
+          required: true
+          schema:
+            type: integer
+        - name: remark
+          in: query
+          description: remark
+          schema:
+            type: string
+        - name: is_first_check
+          in: query
+          description: is_first_check
+          schema:
+            type: boolean
+        - name: is_last_check
+          in: query
+          description: is_last_check
+          schema:
+            type: boolean
+        - name: received_at
+          in: query
+          description: received_at
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたfund_informationが返ってくる
+          content: {}
+    delete:
+      tags:
+        - fund_information
+      description: IDを指定してfund_informationの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: fund_informationの削除完了
+          content: {}
+  /fund_informations/{id}/details:
+    get:
+      tags:
+        - fund_information
+      description: IDで指定されたfund_informatinに紐づくteacherとuserを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: fund_informatinに紐づくteacherとuserを取得
+          content: {}
+  /fund_informations/details/{year}:
+    get:
+      tags:
+        - fund_information
+      description: 年度で指定されたfund_informationsに紐づくデータを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 年度で指定されたfund_informationsに紐づくデータを取得
+          content: {}
+  /password_reset/{id}:
+    post:
+      tags:
+        - password_reset
+      description: password_変更
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/passwordResetData"
+        required: false
+      responses:
+        "200":
+          description: passwordを変更する
+          content: {}
+      x-codegen-request-body-name: passwordResetData
+  /password_reset/request:
+    post:
+      tags:
+        - password_reset
+      description: password_reset_token発行リクエスト
+      parameters:
+        - name: email
+          in: query
+          description: email
+          schema:
+            type: string
+      responses:
+        "200":
+          description: password_reset_tokenをメールアドレスに送信する
+          content: {}
+  /password_reset/{id}/valid:
+    post:
+      tags:
+        - password_reset
+      description: トークンの称号
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: token
+          in: query
+          description: token
+          schema:
+            type: string
+      responses:
+        "200":
+          description: password_reset_tokenが正しい確認する
+          content: {}
+  /purchaseitems:
+    get:
+      tags:
+        - purchase_item
+      description: purchase_itemの一覧を取得
+      responses:
+        "200":
+          description: purchase_itemの一覧の取得
+          content: {}
+    post:
+      tags:
+        - purchase_item
+      description: purchase_itemの作成
+      parameters:
+        - name: item
+          in: query
+          description: item
+          schema:
+            type: string
+        - name: price
+          in: query
+          description: price
+          schema:
+            type: integer
+        - name: quantity
+          in: query
+          description: quantity
+          schema:
+            type: integer
+        - name: detail
+          in: query
+          description: detail
+          schema:
+            type: string
+        - name: url
+          in: query
+          description: url
+          schema:
+            type: string
+        - name: purchase_order_id
+          in: query
+          description: purchase_order_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: createされたpurchase_itemが返ってくる
+          content: {}
+  /purchaseitems/details:
+    get:
+      tags:
+        - purchase_item
+      description: purchase_itemに紐づくuserとpurchase_orderの一覧を取得
+      responses:
+        "200":
+          description: purchase_itemに紐づくuserとpurchase_orderの一覧を取得
+          content: {}
+  /purchaseitems/{id}:
+    get:
+      tags:
+        - purchase_item
+      description: IDで指定されたpurchase_itemの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_itemの取得
+          content: {}
+    put:
+      tags:
+        - purchase_item
+      description: purchase_itemの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: item
+          in: query
+          description: item
+          schema:
+            type: string
+        - name: price
+          in: query
+          description: price
+          schema:
+            type: integer
+        - name: quantity
+          in: query
+          description: quantity
+          schema:
+            type: integer
+        - name: detail
+          in: query
+          description: detail
+          schema:
+            type: string
+        - name: url
+          in: query
+          description: url
+          schema:
+            type: string
+        - name: purchase_order_id
+          in: query
+          description: purchase_order_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: 更新されたpurchase_itemが返ってくる
+          content: {}
+    delete:
+      tags:
+        - purchase_item
+      description: IDを指定してpurchase_itemの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_itemの削除完了
+          content: {}
+  /purchaseitems/{id}/details:
+    get:
+      tags:
+        - purchase_item
+      description: IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得
+          content: {}
+  /purchaseorders:
+    get:
+      tags:
+        - purchase_order
+      description: purchase_orderの一覧を取得
+      responses:
+        "200":
+          description: purchase_orderの一覧の取得
+          content: {}
+    post:
+      tags:
+        - purchase_order
+      description: purchase_orderの作成
+      parameters:
+        - name: deadline
+          in: query
+          description: deadline
+          schema:
+            type: string
+        - name: user_id
+          in: query
+          description: user_id
+          schema:
+            type: integer
+        - name: expense_id
+          in: query
+          description: expense_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: createされたpurchase_orderが返ってくる
+          content: {}
+  /purchaseorders/details:
+    get:
+      tags:
+        - purchase_order
+      description: purchaseorderに紐づくuserとitemの一覧を取得
+      responses:
+        "200":
+          description: purchase_orderに紐づくuserとpurchase_itemの一覧を取得
+          content: {}
+  /purchaseorders/{id}:
+    get:
+      tags:
+        - purchase_order
+      description: IDで指定されたpurchase_orderの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_orderの取得
+          content: {}
+    put:
+      tags:
+        - purchase_order
+      description: purchase_orderの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: deadline
+          in: query
+          description: deadline
+          schema:
+            type: string
+        - name: user_id
+          in: query
+          description: user_id
+          schema:
+            type: integer
+        - name: expense_id
+          in: query
+          description: expense_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: 更新されたpurchase_orderが返ってくる
+          content: {}
+    delete:
+      tags:
+        - purchase_order
+      description: IDを指定してpurchase_orderの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_orderの削除完了
+          content: {}
+  /purchaseorders/{id}/details:
+    get:
+      tags:
+        - purchase_order
+      description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+  /purchaseorders/details/{year}:
+    get:
+      tags:
+        - purchase_order
+      description: 年度で指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+  /purchaseorders/send/{id}:
+    post:
+      tags:
+        - purchase_order
+      description: IDで指定されたpurchase_orderのslackへメッセージ送信
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              type: array
+              items:
+                $ref: "#/components/schemas/purchaseItem"
+        required: true
+      responses:
+        "200":
+          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+      x-codegen-request-body-name: purchase_items
+  /purchaseorders/details/unregistered/{year}:
+    get:
+      tags:
+        - purchase_order
+      description: 年度で指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+  /purchasereports:
+    get:
+      tags:
+        - purchase_report
+      description: purchase_reportの一覧を取得
+      responses:
+        "200":
+          description: purchase_reportの一覧の取得
+          content: {}
+    post:
+      tags:
+        - purchase_report
+      description: purchase_reportの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/purchaseReport"
+        required: false
+      responses:
+        "200":
+          description: 作成されたpurchaseReportが返ってくる
+          content: {}
+      x-codegen-request-body-name: purchaseReport
+  /purchasereports/details:
+    get:
+      tags:
+        - purchase_report
+      description: purchasereportsに紐づくデータの一覧を取得
+      responses:
+        "200":
+          description: purchase_reportに紐づくデータの一覧を取得
+          content: {}
+  /purchasereports/{id}:
+    get:
+      tags:
+        - purchase_report
+      description: IDで指定されたpurchase_reportの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_reportの取得
+          content: {}
+    put:
+      tags:
+        - purchase_report
+      description: purchase_reportの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/purchaseReport"
+        required: false
+      responses:
+        "200":
+          description: 更新されたpurchase_reportが返ってくる
+          content: {}
+      x-codegen-request-body-name: purchaseReport
+    delete:
+      tags:
+        - purchase_report
+      description: IDを指定してpurchase_reportの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_reportの削除完了
+          content: {}
+  /purchasereports/{id}/details:
+    get:
+      tags:
+        - purchase_report
+      description: IDで指定されたpurchase_reportに紐づくデータを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_reportに紐づくデータを取得
+          content: {}
+  /purchasereports/details/{year}:
+    get:
+      tags:
+        - purchase_report
+      description: 年度で指定されたpurchase_reportsに紐づくデータを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 年度で指定されたpurchase_reportsに紐づくデータを取得
+          content: {}
+  /receipts:
+    get:
+      tags:
+        - receipt
+      description: receiptの一覧を取得
+      responses:
+        "200":
+          description: receiptの一覧の取得
+          content: {}
+    post:
+      tags:
+        - receipt
+      description: receiptの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/receipt"
+        required: false
+      responses:
+        "200":
+          description: create されたreceiptが返ってくる
+          content: {}
+      x-codegen-request-body-name: receipt
+  /receipts/{id}:
+    get:
+      tags:
+        - receipt
+      description: IDで指定されたreceiptの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: receiptの取得
+          content: {}
+    put:
+      tags:
+        - receipt
+      description: receiptの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/receipt"
+        required: false
+      responses:
+        "200":
+          description: 更新されたreceiptが返ってくる
+          content: {}
+      x-codegen-request-body-name: receipt
+    delete:
+      tags:
+        - receipt
+      description: IDを指定してreceiptの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: receiptの削除完了
+          content: {}
+  /receipts/reports/{id}:
+    get:
+      tags:
+        - receipt
+      description: purchaseReportIDで指定されたreceiptの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: reportsIDを指定してreceiptの取得
+          content: {}
+  /sources:
+    get:
+      tags:
+        - source
+      description: sourceの一覧の取得
+      responses:
+        "200":
+          description: sourceの一覧を取得
+          content: {}
+    post:
+      tags:
+        - source
+      description: sourceの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 作成されたsourceが返ってくる
+          content: {}
+  /sources/{id}:
+    get:
+      tags:
+        - source
+      description: IDで指定されたsourceの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sourceの取得
+          content: {}
+    put:
+      tags:
+        - source
+      description: sourceの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたsourceが返ってくる
+          content: {}
+    delete:
+      tags:
+        - source
+      description: IDを指定してsourceの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sourceの削除完了
+          content: {}
+  /sponsors:
+    get:
+      tags:
+        - sponsor
+      description: sponsorの一覧の取得
+      responses:
+        "200":
+          description: sponsorsの一覧を取得
+          content: {}
+    post:
+      tags:
+        - sponsor
+      description: sponsorの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsor"
+        required: false
+      responses:
+        "200":
+          description: 作成されたsponsorが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsor
+  /sponsors/{id}:
+    get:
+      tags:
+        - sponsor
+      description: IDで指定されたsponsorの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorの取得
+          content: {}
+    put:
+      tags:
+        - sponsor
+      description: sponsorの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsor"
+        required: false
+      responses:
+        "200":
+          description: 更新されたsponsorが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsor
+    delete:
+      tags:
+        - sponsor
+      description: IDを指定してsponsorの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorの削除完了
+          content: {}
+  /sponsors/periods/{year}:
+    get:
+      tags:
+        - sponsor
+      description: 年度で指定されたsponsorを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorの取得完了
+          content: {}
+  /sponsorstyles:
+    get:
+      tags:
+        - sponsorstyle
+      description: sponsorstyleの一覧の取得
+      responses:
+        "200":
+          description: sponsorstyleの一覧を取得
+          content: {}
+    post:
+      tags:
+        - sponsorstyle
+      description: sponsorstyleの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsorStyle"
+        required: false
+      responses:
+        "200":
+          description: 作成されたsponsorstyleが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsorStyle
+  /sponsorstyles/{id}:
+    get:
+      tags:
+        - sponsorstyle
+      description: IDで指定されたsponsorstyleの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorstyleの取得
+          content: {}
+    put:
+      tags:
+        - sponsorstyle
+      description: sponsorstyleの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsorStyle"
+        required: false
+      responses:
+        "200":
+          description: 更新されたsponsorstyleが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsorStyle
+    delete:
+      tags:
+        - sponsorstyle
+      description: IDを指定してsponsorstyleの論理削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorstyleの論理削除完了
+          content: {}
+  /teachers:
+    get:
+      tags:
+        - teacher
+      description: teacherの一覧を取得
+      responses:
+        "200":
+          description: teacherの一覧を取得
+          content:
+            "*/*":
+              schema:
+                type: array
+    post:
+      tags:
+        - teacher
+      description: teacherの作成
+      parameters:
+        - name: name
+          in: query
+          description: 名前
+          required: true
+          schema:
+            type: string
+        - name: position
+          in: query
+          description: 役職
+          required: true
+          schema:
+            type: string
+        - name: department_id
+          in: query
+          description: 学科ID
+          schema:
+            type: integer
+        - name: room
+          in: query
+          description: 部屋番号
+          schema:
+            type: string
+        - name: is_black
+          in: query
+          description: ブラックリストの真偽
+          schema:
+            type: boolean
+        - name: remark
+          in: query
+          description: 備考
+          schema:
+            type: string
+      responses:
+        "200":
+          description: createされたteacherが返ってくる
+          content: {}
+  /teachers/delete:
+    delete:
+      tags:
+        - teacher
+      description: teacherの複数削除
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/destroyTeacherIDs"
+        required: false
+      responses:
+        "200":
+          description: 複数のteacherをidで削除できる
+          content: {}
+      x-codegen-request-body-name: destroyTeacherIDs
+  /teachers/{id}:
+    get:
+      tags:
+        - teacher
+      description: IDで指定されたteacherの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: teacherの取得
+          content: {}
+    put:
+      tags:
+        - teacher
+      description: teacherの更新
+      parameters:
+        - name: id
+          in: path
+          description: Teacherのid
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: 教員の名前
+          required: true
+          schema:
+            type: string
+        - name: position
+          in: query
+          description: 教員の役職
+          required: true
+          schema:
+            type: string
+        - name: department_id
+          in: query
+          description: 学科ID
+          schema:
+            type: integer
+        - name: room
+          in: query
+          description: 部屋番号
+          schema:
+            type: string
+        - name: is_black
+          in: query
+          description: ブラックリストに入っているか
+          schema:
+            type: boolean
+        - name: remark
+          in: query
+          description: 備考欄
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたteacherが返ってくる
+          content: {}
+    delete:
+      tags:
+        - teacher
+      description: IDを指定してteacherの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: teacherの削除完了
+          content: {}
+  /teachers/fundRegistered/{year}:
+    get:
+      tags:
+        - teacher
+      description: 募金登録済みのteacherのidを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 募金登録済みのteacherのidを取得
+          content: {}
+  /users:
+    get:
+      tags:
+        - user
+      description: userの一覧を取得
+      responses:
+        "200":
+          description: userの一覧を取得
+          content:
+            "*/*":
+              schema:
+                type: array
+    post:
+      tags:
+        - user
+      description: userの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+        - name: bureau_id
+          in: query
+          description: bureau_d
+          required: true
+          schema:
+            type: integer
+        - name: role_id
+          in: query
+          description: role_id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: createされたuserが返ってくる
+          content: {}
+  /users/delete:
+    delete:
+      tags:
+        - user
+      description: userの複数作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/destroyUserIDs"
+        required: false
+      responses:
+        "200":
+          description: 複数のuserをidで削除できる
+          content: {}
+      x-codegen-request-body-name: destroyUserIDs
+  /users/{id}:
+    get:
+      tags:
+        - user
+      description: IDで指定されたuserの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: userの取得
+          content: {}
+    put:
+      tags:
+        - user
+      description: userの更新
+      parameters:
+        - name: id
+          in: path
+          description: userのid
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+        - name: bureau_id
+          in: query
+          description: bureau_d
+          required: true
+          schema:
+            type: integer
+        - name: role_id
+          in: query
+          description: role_id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 更新されたuserが返ってくる
+          content: {}
+    delete:
+      tags:
+        - user
+      description: IDを指定してuserの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: userの削除完了
+          content: {}
+  /years:
+    get:
+      tags:
+        - year
+      description: yearの一覧の取得
+      responses:
+        "200":
+          description: yearの一覧を取得
+          content: {}
+    post:
+      tags:
+        - year
+      description: yearの作成
+      parameters:
+        - name: year
+          in: query
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 作成されたyearが返ってくる
+          content: {}
+  /years/{id}:
+    get:
+      tags:
+        - year
+      description: IDで指定されたyearの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearの取得
+          content: {}
+    put:
+      tags:
+        - year
+      description: yearの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: year
+          in: query
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 更新されたyearが返ってくる
+          content: {}
+    delete:
+      tags:
+        - year
+      description: IDを指定してyearの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearの削除完了
+          content: {}
+  /years/periods:
+    get:
+      tags:
+        - year_periods
+      description: 年度一覧の取得
+      responses:
+        "200":
+          description: year_periodsの一覧を取得
+          content: {}
+    post:
+      tags:
+        - year_periods
+      description: year_periodsの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/year_periods"
+        required: false
+      responses:
+        "200":
+          description: 作成されたyear_periodsが返ってくる
+          content: {}
+      x-codegen-request-body-name: year_periods
+  /years/periods/{id}:
+    put:
+      tags:
+        - year_periods
+      description: year_periodsの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/year_periods"
+        required: false
+      responses:
+        "200":
+          description: 更新されたyear_periodsが返ってくる
+          content: {}
+      x-codegen-request-body-name: year_periods
+    delete:
+      tags:
+        - year_periods
+      description: IDを指定してyear_periodsの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: year_periodsの削除完了
+          content: {}
+components:
+  schemas:
+    activity:
+      required:
+        - expense
+        - feature
+        - isDone
+        - remark
+        - sponsorID
+        - userID
+      type: object
+      properties:
+        sponsorID:
+          type: integer
+          example: 1
+        userID:
+          type: integer
+          example: 1
+        isDone:
+          type: boolean
+          example: false
+        feature:
+          type: string
+          example: なし
+        expense:
+          type: integer
+          example: 0
+        remark:
+          type: string
+          example: なし
+        design:
+          type: integer
+          example: 0
+        url:
+          type: string
+          example: ""
+    activity_information:
+      type: object
+      properties:
+        activityID:
+          type: integer
+          example: 1
+        bucketName:
+          type: string
+          example: なし
+        fileName:
+          type: string
+          example: なし
+        fileType:
+          type: string
+          example: なし
+        designProgress:
+          type: integer
+          example: 1
+        fileInformation:
+          type: string
+          example: ""
+    activity_style:
+      required:
+        - activityID
+        - sponsorStyleID
+      type: object
+      properties:
+        activityID:
+          type: integer
+          example: 1
+        sponsorStyleID:
+          type: integer
+          example: 1
+    sponsorStyle:
+      required:
+        - feature
+        - price
+        - style
+      type: object
+      properties:
+        style:
+          type: string
+          example: 1分の1
+        feature:
+          type: string
+          example: カラー
+        price:
+          type: integer
+          example: 30000
+    sponsor:
+      required:
+        - address
+        - email
+        - name
+        - representative
+        - tel
+      type: object
+      properties:
+        name:
+          type: string
+          example: 企業1
+        tel:
+          type: string
+          example: "09000000000"
+        email:
+          type: string
+          example: test@example.com
+        address:
+          type: string
+          example: ○○1-1
+        representative:
+          type: string
+          example: 長岡太郎(社長)
+    passwordResetData:
+      type: object
+      properties:
+        token:
+          type: string
+          example: ""
+        password:
+          type: string
+          example: ""
+        confirmPassword:
+          type: string
+          example: ""
+    purchaseReport:
+      required:
+        - addition
+        - discount
+        - financeCheck
+        - purchaseOrderID
+        - userID
+      type: object
+      properties:
+        userID:
+          type: integer
+          example: 1
+        discount:
+          type: integer
+          example: 0
+        addition:
+          type: integer
+          example: 0
+        financeCheck:
+          type: boolean
+          example: false
+        purchaseOrderID:
+          type: integer
+          example: 1
+        remark:
+          type: string
+          example: ""
+        buyer:
+          type: string
+          example: ""
+    purchaseItem:
+      required:
+        - financeCheck
+        - item
+        - price
+        - purchaseOrderID
+        - quantity
+      type: object
+      properties:
+        item:
+          type: string
+          example: name
+        price:
+          type: integer
+          example: 0
+        quantity:
+          type: integer
+          example: 0
+        detail:
+          type: string
+          example: ""
+        url:
+          type: string
+          example: ""
+        purchaseOrderID:
+          type: integer
+          example: 1
+        financeCheck:
+          type: boolean
+          example: false
+    destroyTeacherIDs:
+      required:
+        - deleteIDs
+      type: object
+      properties:
+        deleteIDs:
+          type: array
+          example: []
+          items:
+            type: number
+    destroyUserIDs:
+      required:
+        - deleteIDs
+      type: object
+      properties:
+        deleteIDs:
+          type: array
+          example: []
+          items:
+            type: number
+    receipt:
+      required:
+        - purchaseReportID
+      type: object
+      properties:
+        purchaseReportID:
+          type: integer
+          example: 1
+        bucketName:
+          type: string
+          example: ""
+        fileName:
+          type: string
+          example: ""
+        fileType:
+          type: string
+          example: ""
+        remark:
+          type: string
+          example: ""
+    year_periods:
+      required:
+        - endedAt
+        - startedAt
+        - year
+      type: object
+      properties:
+        year:
+          type: integer
+          example: 2024
+        startedAt:
+          type: string
+          example: 0000-00-00T00:00:00Z
+        endedAt:
+          type: string
+          example: 0000-00-00T00:00:00Z
+x-original-swagger-version: "2.0"

From 03da596d5127ffef0724bbca19f67d26be8df47d Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 3 Dec 2024 21:02:05 +0000
Subject: [PATCH 09/30] =?UTF-8?q?[feat]=20gerate=E6=8C=87=E5=AE=9A?=
 =?UTF-8?q?=E3=81=AEconfig=E4=BD=9C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/internals/generated/config.yaml | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 api/internals/generated/config.yaml

diff --git a/api/internals/generated/config.yaml b/api/internals/generated/config.yaml
new file mode 100644
index 000000000..69cbe00c5
--- /dev/null
+++ b/api/internals/generated/config.yaml
@@ -0,0 +1,8 @@
+# yaml-language-server: ...
+# go:generate oapi-codegen --config=config.yaml ../../api.yaml
+
+package: generated
+generate:
+  - server
+  - types
+output: internals/generated/openapi_gen.go

From aa617020483bc57b74d9471634a71d7aab0788a5 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 3 Dec 2024 21:02:29 +0000
Subject: [PATCH 10/30] =?UTF-8?q?[generated]=20=E7=94=9F=E6=88=90=E3=81=95?=
 =?UTF-8?q?=E3=82=8C=E3=81=9F=E3=82=82=E3=81=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/internals/generated/openapi_gen.go | 3188 ++++++++++++++++++++++++
 1 file changed, 3188 insertions(+)
 create mode 100644 api/internals/generated/openapi_gen.go

diff --git a/api/internals/generated/openapi_gen.go b/api/internals/generated/openapi_gen.go
new file mode 100644
index 000000000..52e60dcfe
--- /dev/null
+++ b/api/internals/generated/openapi_gen.go
@@ -0,0 +1,3188 @@
+// Package generated provides primitives to interact with the openapi HTTP API.
+//
+// Code generated by github.com/deepmap/oapi-codegen/v2 version v2.2.0 DO NOT EDIT.
+package generated
+
+import (
+	"fmt"
+	"net/http"
+
+	"github.com/labstack/echo/v4"
+	"github.com/oapi-codegen/runtime"
+)
+
+// Activity defines model for activity.
+type Activity struct {
+	Design    *int    `json:"design,omitempty"`
+	Expense   int     `json:"expense"`
+	Feature   string  `json:"feature"`
+	IsDone    bool    `json:"isDone"`
+	Remark    string  `json:"remark"`
+	SponsorID int     `json:"sponsorID"`
+	Url       *string `json:"url,omitempty"`
+	UserID    int     `json:"userID"`
+}
+
+// ActivityInformation defines model for activity_information.
+type ActivityInformation struct {
+	ActivityID      *int    `json:"activityID,omitempty"`
+	BucketName      *string `json:"bucketName,omitempty"`
+	DesignProgress  *int    `json:"designProgress,omitempty"`
+	FileInformation *string `json:"fileInformation,omitempty"`
+	FileName        *string `json:"fileName,omitempty"`
+	FileType        *string `json:"fileType,omitempty"`
+}
+
+// ActivityStyle defines model for activity_style.
+type ActivityStyle struct {
+	ActivityID     int `json:"activityID"`
+	SponsorStyleID int `json:"sponsorStyleID"`
+}
+
+// DestroyTeacherIDs defines model for destroyTeacherIDs.
+type DestroyTeacherIDs struct {
+	DeleteIDs []float32 `json:"deleteIDs"`
+}
+
+// DestroyUserIDs defines model for destroyUserIDs.
+type DestroyUserIDs struct {
+	DeleteIDs []float32 `json:"deleteIDs"`
+}
+
+// PasswordResetData defines model for passwordResetData.
+type PasswordResetData struct {
+	ConfirmPassword *string `json:"confirmPassword,omitempty"`
+	Password        *string `json:"password,omitempty"`
+	Token           *string `json:"token,omitempty"`
+}
+
+// PurchaseItem defines model for purchaseItem.
+type PurchaseItem struct {
+	Detail          *string `json:"detail,omitempty"`
+	FinanceCheck    bool    `json:"financeCheck"`
+	Item            string  `json:"item"`
+	Price           int     `json:"price"`
+	PurchaseOrderID int     `json:"purchaseOrderID"`
+	Quantity        int     `json:"quantity"`
+	Url             *string `json:"url,omitempty"`
+}
+
+// PurchaseReport defines model for purchaseReport.
+type PurchaseReport struct {
+	Addition        int     `json:"addition"`
+	Buyer           *string `json:"buyer,omitempty"`
+	Discount        int     `json:"discount"`
+	FinanceCheck    bool    `json:"financeCheck"`
+	PurchaseOrderID int     `json:"purchaseOrderID"`
+	Remark          *string `json:"remark,omitempty"`
+	UserID          int     `json:"userID"`
+}
+
+// Receipt defines model for receipt.
+type Receipt struct {
+	BucketName       *string `json:"bucketName,omitempty"`
+	FileName         *string `json:"fileName,omitempty"`
+	FileType         *string `json:"fileType,omitempty"`
+	PurchaseReportID int     `json:"purchaseReportID"`
+	Remark           *string `json:"remark,omitempty"`
+}
+
+// Sponsor defines model for sponsor.
+type Sponsor struct {
+	Address        string `json:"address"`
+	Email          string `json:"email"`
+	Name           string `json:"name"`
+	Representative string `json:"representative"`
+	Tel            string `json:"tel"`
+}
+
+// SponsorStyle defines model for sponsorStyle.
+type SponsorStyle struct {
+	Feature string `json:"feature"`
+	Price   int    `json:"price"`
+	Style   string `json:"style"`
+}
+
+// YearPeriods defines model for year_periods.
+type YearPeriods struct {
+	EndedAt   string `json:"endedAt"`
+	StartedAt string `json:"startedAt"`
+	Year      int    `json:"year"`
+}
+
+// PostBudgetsParams defines parameters for PostBudgets.
+type PostBudgetsParams struct {
+	// Price price
+	Price int `form:"price" json:"price"`
+
+	// YearId year_id
+	YearId *int `form:"year_id,omitempty" json:"year_id,omitempty"`
+
+	// SourceId source_id
+	SourceId *int `form:"source_id,omitempty" json:"source_id,omitempty"`
+}
+
+// PutBudgetsIdParams defines parameters for PutBudgetsId.
+type PutBudgetsIdParams struct {
+	// Price price
+	Price *int `form:"price,omitempty" json:"price,omitempty"`
+
+	// YearId year_id
+	YearId *int `form:"year_id,omitempty" json:"year_id,omitempty"`
+
+	// SourceId source_id
+	SourceId *int `form:"source_id,omitempty" json:"source_id,omitempty"`
+}
+
+// PostBureausParams defines parameters for PostBureaus.
+type PostBureausParams struct {
+	// Name name
+	Name string `form:"name" json:"name"`
+}
+
+// PutBureausIdParams defines parameters for PutBureausId.
+type PutBureausIdParams struct {
+	// Name name
+	Name *string `form:"name,omitempty" json:"name,omitempty"`
+}
+
+// PostDepartmentsParams defines parameters for PostDepartments.
+type PostDepartmentsParams struct {
+	// Name name
+	Name *string `form:"name,omitempty" json:"name,omitempty"`
+}
+
+// PutDepartmentsIdParams defines parameters for PutDepartmentsId.
+type PutDepartmentsIdParams struct {
+	// Name name
+	Name *string `form:"name,omitempty" json:"name,omitempty"`
+}
+
+// PostExpensesParams defines parameters for PostExpenses.
+type PostExpensesParams struct {
+	// Name name
+	Name *string `form:"name,omitempty" json:"name,omitempty"`
+
+	// YearId year_id
+	YearId *string `form:"year_id,omitempty" json:"year_id,omitempty"`
+}
+
+// PutExpensesIdParams defines parameters for PutExpensesId.
+type PutExpensesIdParams struct {
+	// Name name
+	Name *string `form:"name,omitempty" json:"name,omitempty"`
+
+	// YearId year_id
+	YearId *string `form:"year_id,omitempty" json:"year_id,omitempty"`
+}
+
+// PostFundInformationsParams defines parameters for PostFundInformations.
+type PostFundInformationsParams struct {
+	// UserId user_id
+	UserId int `form:"user_id" json:"user_id"`
+
+	// TeacherId teacher_id
+	TeacherId int `form:"teacher_id" json:"teacher_id"`
+
+	// Price price
+	Price int `form:"price" json:"price"`
+
+	// Remark remark
+	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
+
+	// IsFirstCheck is_first_check
+	IsFirstCheck *bool `form:"is_first_check,omitempty" json:"is_first_check,omitempty"`
+
+	// IsLastCheck is_last_check
+	IsLastCheck *bool `form:"is_last_check,omitempty" json:"is_last_check,omitempty"`
+
+	// ReceivedAt received_at
+	ReceivedAt *string `form:"received_at,omitempty" json:"received_at,omitempty"`
+}
+
+// PutFundInformationsIdParams defines parameters for PutFundInformationsId.
+type PutFundInformationsIdParams struct {
+	// UserId user_id
+	UserId int `form:"user_id" json:"user_id"`
+
+	// TeacherId teacher_id
+	TeacherId int `form:"teacher_id" json:"teacher_id"`
+
+	// Price price
+	Price int `form:"price" json:"price"`
+
+	// Remark remark
+	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
+
+	// IsFirstCheck is_first_check
+	IsFirstCheck *bool `form:"is_first_check,omitempty" json:"is_first_check,omitempty"`
+
+	// IsLastCheck is_last_check
+	IsLastCheck *bool `form:"is_last_check,omitempty" json:"is_last_check,omitempty"`
+
+	// ReceivedAt received_at
+	ReceivedAt *string `form:"received_at,omitempty" json:"received_at,omitempty"`
+}
+
+// PostPasswordResetRequestParams defines parameters for PostPasswordResetRequest.
+type PostPasswordResetRequestParams struct {
+	// Email email
+	Email *string `form:"email,omitempty" json:"email,omitempty"`
+}
+
+// PostPasswordResetIdValidParams defines parameters for PostPasswordResetIdValid.
+type PostPasswordResetIdValidParams struct {
+	// Token token
+	Token *string `form:"token,omitempty" json:"token,omitempty"`
+}
+
+// PostPurchaseitemsParams defines parameters for PostPurchaseitems.
+type PostPurchaseitemsParams struct {
+	// Item item
+	Item *string `form:"item,omitempty" json:"item,omitempty"`
+
+	// Price price
+	Price *int `form:"price,omitempty" json:"price,omitempty"`
+
+	// Quantity quantity
+	Quantity *int `form:"quantity,omitempty" json:"quantity,omitempty"`
+
+	// Detail detail
+	Detail *string `form:"detail,omitempty" json:"detail,omitempty"`
+
+	// Url url
+	Url *string `form:"url,omitempty" json:"url,omitempty"`
+
+	// PurchaseOrderId purchase_order_id
+	PurchaseOrderId *int `form:"purchase_order_id,omitempty" json:"purchase_order_id,omitempty"`
+
+	// FinanceCheck finance_check
+	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
+}
+
+// PutPurchaseitemsIdParams defines parameters for PutPurchaseitemsId.
+type PutPurchaseitemsIdParams struct {
+	// Item item
+	Item *string `form:"item,omitempty" json:"item,omitempty"`
+
+	// Price price
+	Price *int `form:"price,omitempty" json:"price,omitempty"`
+
+	// Quantity quantity
+	Quantity *int `form:"quantity,omitempty" json:"quantity,omitempty"`
+
+	// Detail detail
+	Detail *string `form:"detail,omitempty" json:"detail,omitempty"`
+
+	// Url url
+	Url *string `form:"url,omitempty" json:"url,omitempty"`
+
+	// PurchaseOrderId purchase_order_id
+	PurchaseOrderId *int `form:"purchase_order_id,omitempty" json:"purchase_order_id,omitempty"`
+
+	// FinanceCheck finance_check
+	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
+}
+
+// PostPurchaseordersParams defines parameters for PostPurchaseorders.
+type PostPurchaseordersParams struct {
+	// Deadline deadline
+	Deadline *string `form:"deadline,omitempty" json:"deadline,omitempty"`
+
+	// UserId user_id
+	UserId *int `form:"user_id,omitempty" json:"user_id,omitempty"`
+
+	// ExpenseId expense_id
+	ExpenseId *int `form:"expense_id,omitempty" json:"expense_id,omitempty"`
+
+	// FinanceCheck finance_check
+	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
+}
+
+// PutPurchaseordersIdParams defines parameters for PutPurchaseordersId.
+type PutPurchaseordersIdParams struct {
+	// Deadline deadline
+	Deadline *string `form:"deadline,omitempty" json:"deadline,omitempty"`
+
+	// UserId user_id
+	UserId *int `form:"user_id,omitempty" json:"user_id,omitempty"`
+
+	// ExpenseId expense_id
+	ExpenseId *int `form:"expense_id,omitempty" json:"expense_id,omitempty"`
+
+	// FinanceCheck finance_check
+	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
+}
+
+// PostSourcesParams defines parameters for PostSources.
+type PostSourcesParams struct {
+	// Name name
+	Name string `form:"name" json:"name"`
+}
+
+// PutSourcesIdParams defines parameters for PutSourcesId.
+type PutSourcesIdParams struct {
+	// Name name
+	Name string `form:"name" json:"name"`
+}
+
+// PostTeachersParams defines parameters for PostTeachers.
+type PostTeachersParams struct {
+	// Name 名前
+	Name string `form:"name" json:"name"`
+
+	// Position 役職
+	Position string `form:"position" json:"position"`
+
+	// DepartmentId 学科ID
+	DepartmentId *int `form:"department_id,omitempty" json:"department_id,omitempty"`
+
+	// Room 部屋番号
+	Room *string `form:"room,omitempty" json:"room,omitempty"`
+
+	// IsBlack ブラックリストの真偽
+	IsBlack *bool `form:"is_black,omitempty" json:"is_black,omitempty"`
+
+	// Remark 備考
+	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
+}
+
+// PutTeachersIdParams defines parameters for PutTeachersId.
+type PutTeachersIdParams struct {
+	// Name 教員の名前
+	Name string `form:"name" json:"name"`
+
+	// Position 教員の役職
+	Position string `form:"position" json:"position"`
+
+	// DepartmentId 学科ID
+	DepartmentId *int `form:"department_id,omitempty" json:"department_id,omitempty"`
+
+	// Room 部屋番号
+	Room *string `form:"room,omitempty" json:"room,omitempty"`
+
+	// IsBlack ブラックリストに入っているか
+	IsBlack *bool `form:"is_black,omitempty" json:"is_black,omitempty"`
+
+	// Remark 備考欄
+	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
+}
+
+// PostUsersParams defines parameters for PostUsers.
+type PostUsersParams struct {
+	// Name name
+	Name string `form:"name" json:"name"`
+
+	// BureauId bureau_d
+	BureauId int `form:"bureau_id" json:"bureau_id"`
+
+	// RoleId role_id
+	RoleId int `form:"role_id" json:"role_id"`
+}
+
+// PutUsersIdParams defines parameters for PutUsersId.
+type PutUsersIdParams struct {
+	// Name name
+	Name string `form:"name" json:"name"`
+
+	// BureauId bureau_d
+	BureauId int `form:"bureau_id" json:"bureau_id"`
+
+	// RoleId role_id
+	RoleId int `form:"role_id" json:"role_id"`
+}
+
+// PostYearsParams defines parameters for PostYears.
+type PostYearsParams struct {
+	// Year year
+	Year int `form:"year" json:"year"`
+}
+
+// PutYearsIdParams defines parameters for PutYearsId.
+type PutYearsIdParams struct {
+	// Year year
+	Year int `form:"year" json:"year"`
+}
+
+// ServerInterface represents all server handlers.
+type ServerInterface interface {
+
+	// (GET /activities)
+	GetActivities(ctx echo.Context) error
+
+	// (POST /activities)
+	PostActivities(ctx echo.Context) error
+
+	// (GET /activities/details)
+	GetActivitiesDetails(ctx echo.Context) error
+
+	// (GET /activities/details/{year})
+	GetActivitiesDetailsYear(ctx echo.Context, year int) error
+
+	// (GET /activities/filtered_details)
+	GetActivitiesFilteredDetails(ctx echo.Context) error
+
+	// (GET /activities/filtered_details/{year})
+	GetActivitiesFilteredDetailsYear(ctx echo.Context, year string) error
+
+	// (DELETE /activities/{id})
+	DeleteActivitiesId(ctx echo.Context, id int) error
+
+	// (GET /activities/{id})
+	GetActivitiesId(ctx echo.Context, id int) error
+
+	// (PUT /activities/{id})
+	PutActivitiesId(ctx echo.Context, id int) error
+
+	// (GET /activity_informations)
+	GetActivityInformations(ctx echo.Context) error
+
+	// (POST /activity_informations)
+	PostActivityInformations(ctx echo.Context) error
+
+	// (DELETE /activity_informations/{id})
+	DeleteActivityInformationsId(ctx echo.Context, id int) error
+
+	// (GET /activity_informations/{id})
+	GetActivityInformationsId(ctx echo.Context, id int) error
+
+	// (PUT /activity_informations/{id})
+	PutActivityInformationsId(ctx echo.Context, id int) error
+
+	// (GET /activity_styles)
+	GetActivityStyles(ctx echo.Context) error
+
+	// (POST /activity_styles)
+	PostActivityStyles(ctx echo.Context) error
+
+	// (DELETE /activity_styles/{id})
+	DeleteActivityStylesId(ctx echo.Context, id int) error
+
+	// (GET /activity_styles/{id})
+	GetActivityStylesId(ctx echo.Context, id int) error
+
+	// (PUT /activity_styles/{id})
+	PutActivityStylesId(ctx echo.Context, id int) error
+
+	// (GET /budgets)
+	GetBudgets(ctx echo.Context) error
+
+	// (POST /budgets)
+	PostBudgets(ctx echo.Context, params PostBudgetsParams) error
+
+	// (GET /budgets/details)
+	GetBudgetsDetails(ctx echo.Context) error
+
+	// (GET /budgets/details/{year})
+	GetBudgetsDetailsYear(ctx echo.Context, year int) error
+
+	// (DELETE /budgets/{id})
+	DeleteBudgetsId(ctx echo.Context, id int) error
+
+	// (GET /budgets/{id})
+	GetBudgetsId(ctx echo.Context, id int) error
+
+	// (PUT /budgets/{id})
+	PutBudgetsId(ctx echo.Context, id int, params PutBudgetsIdParams) error
+
+	// (GET /budgets/{id}/details)
+	GetBudgetsIdDetails(ctx echo.Context, id int) error
+
+	// (GET /bureaus)
+	GetBureaus(ctx echo.Context) error
+
+	// (POST /bureaus)
+	PostBureaus(ctx echo.Context, params PostBureausParams) error
+
+	// (DELETE /bureaus/{id})
+	DeleteBureausId(ctx echo.Context, id int) error
+
+	// (GET /bureaus/{id})
+	GetBureausId(ctx echo.Context, id int) error
+
+	// (PUT /bureaus/{id})
+	PutBureausId(ctx echo.Context, id int, params PutBureausIdParams) error
+
+	// (GET /departments)
+	GetDepartments(ctx echo.Context) error
+
+	// (POST /departments)
+	PostDepartments(ctx echo.Context, params PostDepartmentsParams) error
+
+	// (DELETE /departments/{id})
+	DeleteDepartmentsId(ctx echo.Context, id int) error
+
+	// (GET /departments/{id})
+	GetDepartmentsId(ctx echo.Context, id int) error
+
+	// (PUT /departments/{id})
+	PutDepartmentsId(ctx echo.Context, id int, params PutDepartmentsIdParams) error
+
+	// (GET /expenses)
+	GetExpenses(ctx echo.Context) error
+
+	// (POST /expenses)
+	PostExpenses(ctx echo.Context, params PostExpensesParams) error
+
+	// (GET /expenses/details)
+	GetExpensesDetails(ctx echo.Context) error
+
+	// (GET /expenses/details/{year})
+	GetExpensesDetailsYear(ctx echo.Context, year int) error
+
+	// (GET /expenses/fiscalyear/{year})
+	GetExpensesFiscalyearYear(ctx echo.Context, year int) error
+
+	// (DELETE /expenses/{id})
+	DeleteExpensesId(ctx echo.Context, id int) error
+
+	// (GET /expenses/{id})
+	GetExpensesId(ctx echo.Context, id int) error
+
+	// (PUT /expenses/{id})
+	PutExpensesId(ctx echo.Context, id int, params PutExpensesIdParams) error
+
+	// (GET /expenses/{id}/details)
+	GetExpensesIdDetails(ctx echo.Context, id int) error
+
+	// (GET /fund_informations)
+	GetFundInformations(ctx echo.Context) error
+
+	// (POST /fund_informations)
+	PostFundInformations(ctx echo.Context, params PostFundInformationsParams) error
+
+	// (GET /fund_informations/details)
+	GetFundInformationsDetails(ctx echo.Context) error
+
+	// (GET /fund_informations/details/{year})
+	GetFundInformationsDetailsYear(ctx echo.Context, year int) error
+
+	// (DELETE /fund_informations/{id})
+	DeleteFundInformationsId(ctx echo.Context, id int) error
+
+	// (GET /fund_informations/{id})
+	GetFundInformationsId(ctx echo.Context, id int) error
+
+	// (PUT /fund_informations/{id})
+	PutFundInformationsId(ctx echo.Context, id int, params PutFundInformationsIdParams) error
+
+	// (GET /fund_informations/{id}/details)
+	GetFundInformationsIdDetails(ctx echo.Context, id int) error
+
+	// (POST /password_reset/request)
+	PostPasswordResetRequest(ctx echo.Context, params PostPasswordResetRequestParams) error
+
+	// (POST /password_reset/{id})
+	PostPasswordResetId(ctx echo.Context, id int) error
+
+	// (POST /password_reset/{id}/valid)
+	PostPasswordResetIdValid(ctx echo.Context, id int, params PostPasswordResetIdValidParams) error
+
+	// (GET /purchaseitems)
+	GetPurchaseitems(ctx echo.Context) error
+
+	// (POST /purchaseitems)
+	PostPurchaseitems(ctx echo.Context, params PostPurchaseitemsParams) error
+
+	// (GET /purchaseitems/details)
+	GetPurchaseitemsDetails(ctx echo.Context) error
+
+	// (DELETE /purchaseitems/{id})
+	DeletePurchaseitemsId(ctx echo.Context, id int) error
+
+	// (GET /purchaseitems/{id})
+	GetPurchaseitemsId(ctx echo.Context, id int) error
+
+	// (PUT /purchaseitems/{id})
+	PutPurchaseitemsId(ctx echo.Context, id int, params PutPurchaseitemsIdParams) error
+
+	// (GET /purchaseitems/{id}/details)
+	GetPurchaseitemsIdDetails(ctx echo.Context, id int) error
+
+	// (GET /purchaseorders)
+	GetPurchaseorders(ctx echo.Context) error
+
+	// (POST /purchaseorders)
+	PostPurchaseorders(ctx echo.Context, params PostPurchaseordersParams) error
+
+	// (GET /purchaseorders/details)
+	GetPurchaseordersDetails(ctx echo.Context) error
+
+	// (GET /purchaseorders/details/unregistered/{year})
+	GetPurchaseordersDetailsUnregisteredYear(ctx echo.Context, year int) error
+
+	// (GET /purchaseorders/details/{year})
+	GetPurchaseordersDetailsYear(ctx echo.Context, year int) error
+
+	// (POST /purchaseorders/send/{id})
+	PostPurchaseordersSendId(ctx echo.Context, id int) error
+
+	// (DELETE /purchaseorders/{id})
+	DeletePurchaseordersId(ctx echo.Context, id int) error
+
+	// (GET /purchaseorders/{id})
+	GetPurchaseordersId(ctx echo.Context, id int) error
+
+	// (PUT /purchaseorders/{id})
+	PutPurchaseordersId(ctx echo.Context, id int, params PutPurchaseordersIdParams) error
+
+	// (GET /purchaseorders/{id}/details)
+	GetPurchaseordersIdDetails(ctx echo.Context, id int) error
+
+	// (GET /purchasereports)
+	GetPurchasereports(ctx echo.Context) error
+
+	// (POST /purchasereports)
+	PostPurchasereports(ctx echo.Context) error
+
+	// (GET /purchasereports/details)
+	GetPurchasereportsDetails(ctx echo.Context) error
+
+	// (GET /purchasereports/details/{year})
+	GetPurchasereportsDetailsYear(ctx echo.Context, year int) error
+
+	// (DELETE /purchasereports/{id})
+	DeletePurchasereportsId(ctx echo.Context, id int) error
+
+	// (GET /purchasereports/{id})
+	GetPurchasereportsId(ctx echo.Context, id int) error
+
+	// (PUT /purchasereports/{id})
+	PutPurchasereportsId(ctx echo.Context, id int) error
+
+	// (GET /purchasereports/{id}/details)
+	GetPurchasereportsIdDetails(ctx echo.Context, id int) error
+
+	// (GET /receipts)
+	GetReceipts(ctx echo.Context) error
+
+	// (POST /receipts)
+	PostReceipts(ctx echo.Context) error
+
+	// (GET /receipts/reports/{id})
+	GetReceiptsReportsId(ctx echo.Context, id int) error
+
+	// (DELETE /receipts/{id})
+	DeleteReceiptsId(ctx echo.Context, id int) error
+
+	// (GET /receipts/{id})
+	GetReceiptsId(ctx echo.Context, id int) error
+
+	// (PUT /receipts/{id})
+	PutReceiptsId(ctx echo.Context, id int) error
+
+	// (GET /sources)
+	GetSources(ctx echo.Context) error
+
+	// (POST /sources)
+	PostSources(ctx echo.Context, params PostSourcesParams) error
+
+	// (DELETE /sources/{id})
+	DeleteSourcesId(ctx echo.Context, id int) error
+
+	// (GET /sources/{id})
+	GetSourcesId(ctx echo.Context, id int) error
+
+	// (PUT /sources/{id})
+	PutSourcesId(ctx echo.Context, id int, params PutSourcesIdParams) error
+
+	// (GET /sponsors)
+	GetSponsors(ctx echo.Context) error
+
+	// (POST /sponsors)
+	PostSponsors(ctx echo.Context) error
+
+	// (GET /sponsors/periods/{year})
+	GetSponsorsPeriodsYear(ctx echo.Context, year int) error
+
+	// (DELETE /sponsors/{id})
+	DeleteSponsorsId(ctx echo.Context, id int) error
+
+	// (GET /sponsors/{id})
+	GetSponsorsId(ctx echo.Context, id int) error
+
+	// (PUT /sponsors/{id})
+	PutSponsorsId(ctx echo.Context, id int) error
+
+	// (GET /sponsorstyles)
+	GetSponsorstyles(ctx echo.Context) error
+
+	// (POST /sponsorstyles)
+	PostSponsorstyles(ctx echo.Context) error
+
+	// (DELETE /sponsorstyles/{id})
+	DeleteSponsorstylesId(ctx echo.Context, id int) error
+
+	// (GET /sponsorstyles/{id})
+	GetSponsorstylesId(ctx echo.Context, id int) error
+
+	// (PUT /sponsorstyles/{id})
+	PutSponsorstylesId(ctx echo.Context, id int) error
+
+	// (GET /teachers)
+	GetTeachers(ctx echo.Context) error
+
+	// (POST /teachers)
+	PostTeachers(ctx echo.Context, params PostTeachersParams) error
+
+	// (DELETE /teachers/delete)
+	DeleteTeachersDelete(ctx echo.Context) error
+
+	// (GET /teachers/fundRegistered/{year})
+	GetTeachersFundRegisteredYear(ctx echo.Context, year int) error
+
+	// (DELETE /teachers/{id})
+	DeleteTeachersId(ctx echo.Context, id int) error
+
+	// (GET /teachers/{id})
+	GetTeachersId(ctx echo.Context, id int) error
+
+	// (PUT /teachers/{id})
+	PutTeachersId(ctx echo.Context, id int, params PutTeachersIdParams) error
+
+	// (GET /users)
+	GetUsers(ctx echo.Context) error
+
+	// (POST /users)
+	PostUsers(ctx echo.Context, params PostUsersParams) error
+
+	// (DELETE /users/delete)
+	DeleteUsersDelete(ctx echo.Context) error
+
+	// (DELETE /users/{id})
+	DeleteUsersId(ctx echo.Context, id int) error
+
+	// (GET /users/{id})
+	GetUsersId(ctx echo.Context, id int) error
+
+	// (PUT /users/{id})
+	PutUsersId(ctx echo.Context, id int, params PutUsersIdParams) error
+
+	// (GET /years)
+	GetYears(ctx echo.Context) error
+
+	// (POST /years)
+	PostYears(ctx echo.Context, params PostYearsParams) error
+
+	// (GET /years/periods)
+	GetYearsPeriods(ctx echo.Context) error
+
+	// (POST /years/periods)
+	PostYearsPeriods(ctx echo.Context) error
+
+	// (DELETE /years/periods/{id})
+	DeleteYearsPeriodsId(ctx echo.Context, id int) error
+
+	// (PUT /years/periods/{id})
+	PutYearsPeriodsId(ctx echo.Context, id int) error
+
+	// (DELETE /years/{id})
+	DeleteYearsId(ctx echo.Context, id int) error
+
+	// (GET /years/{id})
+	GetYearsId(ctx echo.Context, id int) error
+
+	// (PUT /years/{id})
+	PutYearsId(ctx echo.Context, id int, params PutYearsIdParams) error
+}
+
+// ServerInterfaceWrapper converts echo contexts to parameters.
+type ServerInterfaceWrapper struct {
+	Handler ServerInterface
+}
+
+// GetActivities converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivities(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivities(ctx)
+	return err
+}
+
+// PostActivities converts echo context to params.
+func (w *ServerInterfaceWrapper) PostActivities(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostActivities(ctx)
+	return err
+}
+
+// GetActivitiesDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivitiesDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivitiesDetails(ctx)
+	return err
+}
+
+// GetActivitiesDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivitiesDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivitiesDetailsYear(ctx, year)
+	return err
+}
+
+// GetActivitiesFilteredDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivitiesFilteredDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivitiesFilteredDetails(ctx)
+	return err
+}
+
+// GetActivitiesFilteredDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivitiesFilteredDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year string
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivitiesFilteredDetailsYear(ctx, year)
+	return err
+}
+
+// DeleteActivitiesId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteActivitiesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteActivitiesId(ctx, id)
+	return err
+}
+
+// GetActivitiesId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivitiesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivitiesId(ctx, id)
+	return err
+}
+
+// PutActivitiesId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutActivitiesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutActivitiesId(ctx, id)
+	return err
+}
+
+// GetActivityInformations converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivityInformations(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivityInformations(ctx)
+	return err
+}
+
+// PostActivityInformations converts echo context to params.
+func (w *ServerInterfaceWrapper) PostActivityInformations(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostActivityInformations(ctx)
+	return err
+}
+
+// DeleteActivityInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteActivityInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteActivityInformationsId(ctx, id)
+	return err
+}
+
+// GetActivityInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivityInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivityInformationsId(ctx, id)
+	return err
+}
+
+// PutActivityInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutActivityInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutActivityInformationsId(ctx, id)
+	return err
+}
+
+// GetActivityStyles converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivityStyles(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivityStyles(ctx)
+	return err
+}
+
+// PostActivityStyles converts echo context to params.
+func (w *ServerInterfaceWrapper) PostActivityStyles(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostActivityStyles(ctx)
+	return err
+}
+
+// DeleteActivityStylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteActivityStylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteActivityStylesId(ctx, id)
+	return err
+}
+
+// GetActivityStylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivityStylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivityStylesId(ctx, id)
+	return err
+}
+
+// PutActivityStylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutActivityStylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutActivityStylesId(ctx, id)
+	return err
+}
+
+// GetBudgets converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBudgets(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBudgets(ctx)
+	return err
+}
+
+// PostBudgets converts echo context to params.
+func (w *ServerInterfaceWrapper) PostBudgets(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostBudgetsParams
+	// ------------- Required query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "year_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "source_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "source_id", ctx.QueryParams(), &params.SourceId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter source_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostBudgets(ctx, params)
+	return err
+}
+
+// GetBudgetsDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBudgetsDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBudgetsDetails(ctx)
+	return err
+}
+
+// GetBudgetsDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBudgetsDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBudgetsDetailsYear(ctx, year)
+	return err
+}
+
+// DeleteBudgetsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteBudgetsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteBudgetsId(ctx, id)
+	return err
+}
+
+// GetBudgetsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBudgetsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBudgetsId(ctx, id)
+	return err
+}
+
+// PutBudgetsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutBudgetsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutBudgetsIdParams
+	// ------------- Optional query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "year_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "source_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "source_id", ctx.QueryParams(), &params.SourceId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter source_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutBudgetsId(ctx, id, params)
+	return err
+}
+
+// GetBudgetsIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBudgetsIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBudgetsIdDetails(ctx, id)
+	return err
+}
+
+// GetBureaus converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBureaus(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBureaus(ctx)
+	return err
+}
+
+// PostBureaus converts echo context to params.
+func (w *ServerInterfaceWrapper) PostBureaus(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostBureausParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostBureaus(ctx, params)
+	return err
+}
+
+// DeleteBureausId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteBureausId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteBureausId(ctx, id)
+	return err
+}
+
+// GetBureausId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBureausId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBureausId(ctx, id)
+	return err
+}
+
+// PutBureausId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutBureausId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutBureausIdParams
+	// ------------- Optional query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutBureausId(ctx, id, params)
+	return err
+}
+
+// GetDepartments converts echo context to params.
+func (w *ServerInterfaceWrapper) GetDepartments(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetDepartments(ctx)
+	return err
+}
+
+// PostDepartments converts echo context to params.
+func (w *ServerInterfaceWrapper) PostDepartments(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostDepartmentsParams
+	// ------------- Optional query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostDepartments(ctx, params)
+	return err
+}
+
+// DeleteDepartmentsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteDepartmentsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteDepartmentsId(ctx, id)
+	return err
+}
+
+// GetDepartmentsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetDepartmentsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetDepartmentsId(ctx, id)
+	return err
+}
+
+// PutDepartmentsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutDepartmentsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutDepartmentsIdParams
+	// ------------- Optional query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutDepartmentsId(ctx, id, params)
+	return err
+}
+
+// GetExpenses converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpenses(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpenses(ctx)
+	return err
+}
+
+// PostExpenses converts echo context to params.
+func (w *ServerInterfaceWrapper) PostExpenses(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostExpensesParams
+	// ------------- Optional query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Optional query parameter "year_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostExpenses(ctx, params)
+	return err
+}
+
+// GetExpensesDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpensesDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpensesDetails(ctx)
+	return err
+}
+
+// GetExpensesDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpensesDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpensesDetailsYear(ctx, year)
+	return err
+}
+
+// GetExpensesFiscalyearYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpensesFiscalyearYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpensesFiscalyearYear(ctx, year)
+	return err
+}
+
+// DeleteExpensesId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteExpensesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteExpensesId(ctx, id)
+	return err
+}
+
+// GetExpensesId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpensesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpensesId(ctx, id)
+	return err
+}
+
+// PutExpensesId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutExpensesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutExpensesIdParams
+	// ------------- Optional query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Optional query parameter "year_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutExpensesId(ctx, id, params)
+	return err
+}
+
+// GetExpensesIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpensesIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpensesIdDetails(ctx, id)
+	return err
+}
+
+// GetFundInformations converts echo context to params.
+func (w *ServerInterfaceWrapper) GetFundInformations(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetFundInformations(ctx)
+	return err
+}
+
+// PostFundInformations converts echo context to params.
+func (w *ServerInterfaceWrapper) PostFundInformations(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostFundInformationsParams
+	// ------------- Required query parameter "user_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "user_id", ctx.QueryParams(), &params.UserId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
+	}
+
+	// ------------- Required query parameter "teacher_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "teacher_id", ctx.QueryParams(), &params.TeacherId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter teacher_id: %s", err))
+	}
+
+	// ------------- Required query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "remark" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_first_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_first_check", ctx.QueryParams(), &params.IsFirstCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_first_check: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_last_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_last_check", ctx.QueryParams(), &params.IsLastCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_last_check: %s", err))
+	}
+
+	// ------------- Optional query parameter "received_at" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "received_at", ctx.QueryParams(), &params.ReceivedAt)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter received_at: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostFundInformations(ctx, params)
+	return err
+}
+
+// GetFundInformationsDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetFundInformationsDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetFundInformationsDetails(ctx)
+	return err
+}
+
+// GetFundInformationsDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetFundInformationsDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetFundInformationsDetailsYear(ctx, year)
+	return err
+}
+
+// DeleteFundInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteFundInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteFundInformationsId(ctx, id)
+	return err
+}
+
+// GetFundInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetFundInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetFundInformationsId(ctx, id)
+	return err
+}
+
+// PutFundInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutFundInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutFundInformationsIdParams
+	// ------------- Required query parameter "user_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "user_id", ctx.QueryParams(), &params.UserId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
+	}
+
+	// ------------- Required query parameter "teacher_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "teacher_id", ctx.QueryParams(), &params.TeacherId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter teacher_id: %s", err))
+	}
+
+	// ------------- Required query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "remark" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_first_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_first_check", ctx.QueryParams(), &params.IsFirstCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_first_check: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_last_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_last_check", ctx.QueryParams(), &params.IsLastCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_last_check: %s", err))
+	}
+
+	// ------------- Optional query parameter "received_at" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "received_at", ctx.QueryParams(), &params.ReceivedAt)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter received_at: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutFundInformationsId(ctx, id, params)
+	return err
+}
+
+// GetFundInformationsIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetFundInformationsIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetFundInformationsIdDetails(ctx, id)
+	return err
+}
+
+// PostPasswordResetRequest converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPasswordResetRequest(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostPasswordResetRequestParams
+	// ------------- Optional query parameter "email" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "email", ctx.QueryParams(), &params.Email)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter email: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPasswordResetRequest(ctx, params)
+	return err
+}
+
+// PostPasswordResetId converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPasswordResetId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPasswordResetId(ctx, id)
+	return err
+}
+
+// PostPasswordResetIdValid converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPasswordResetIdValid(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostPasswordResetIdValidParams
+	// ------------- Optional query parameter "token" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "token", ctx.QueryParams(), &params.Token)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter token: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPasswordResetIdValid(ctx, id, params)
+	return err
+}
+
+// GetPurchaseitems converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseitems(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseitems(ctx)
+	return err
+}
+
+// PostPurchaseitems converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPurchaseitems(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostPurchaseitemsParams
+	// ------------- Optional query parameter "item" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "item", ctx.QueryParams(), &params.Item)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter item: %s", err))
+	}
+
+	// ------------- Optional query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "quantity" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "quantity", ctx.QueryParams(), &params.Quantity)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter quantity: %s", err))
+	}
+
+	// ------------- Optional query parameter "detail" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "detail", ctx.QueryParams(), &params.Detail)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter detail: %s", err))
+	}
+
+	// ------------- Optional query parameter "url" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "url", ctx.QueryParams(), &params.Url)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter url: %s", err))
+	}
+
+	// ------------- Optional query parameter "purchase_order_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "purchase_order_id", ctx.QueryParams(), &params.PurchaseOrderId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter purchase_order_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "finance_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPurchaseitems(ctx, params)
+	return err
+}
+
+// GetPurchaseitemsDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseitemsDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseitemsDetails(ctx)
+	return err
+}
+
+// DeletePurchaseitemsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeletePurchaseitemsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeletePurchaseitemsId(ctx, id)
+	return err
+}
+
+// GetPurchaseitemsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseitemsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseitemsId(ctx, id)
+	return err
+}
+
+// PutPurchaseitemsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutPurchaseitemsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutPurchaseitemsIdParams
+	// ------------- Optional query parameter "item" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "item", ctx.QueryParams(), &params.Item)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter item: %s", err))
+	}
+
+	// ------------- Optional query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "quantity" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "quantity", ctx.QueryParams(), &params.Quantity)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter quantity: %s", err))
+	}
+
+	// ------------- Optional query parameter "detail" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "detail", ctx.QueryParams(), &params.Detail)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter detail: %s", err))
+	}
+
+	// ------------- Optional query parameter "url" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "url", ctx.QueryParams(), &params.Url)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter url: %s", err))
+	}
+
+	// ------------- Optional query parameter "purchase_order_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "purchase_order_id", ctx.QueryParams(), &params.PurchaseOrderId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter purchase_order_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "finance_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutPurchaseitemsId(ctx, id, params)
+	return err
+}
+
+// GetPurchaseitemsIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseitemsIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseitemsIdDetails(ctx, id)
+	return err
+}
+
+// GetPurchaseorders converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseorders(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseorders(ctx)
+	return err
+}
+
+// PostPurchaseorders converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPurchaseorders(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostPurchaseordersParams
+	// ------------- Optional query parameter "deadline" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "deadline", ctx.QueryParams(), &params.Deadline)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter deadline: %s", err))
+	}
+
+	// ------------- Optional query parameter "user_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "user_id", ctx.QueryParams(), &params.UserId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "expense_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "expense_id", ctx.QueryParams(), &params.ExpenseId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter expense_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "finance_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPurchaseorders(ctx, params)
+	return err
+}
+
+// GetPurchaseordersDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseordersDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseordersDetails(ctx)
+	return err
+}
+
+// GetPurchaseordersDetailsUnregisteredYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseordersDetailsUnregisteredYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseordersDetailsUnregisteredYear(ctx, year)
+	return err
+}
+
+// GetPurchaseordersDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseordersDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseordersDetailsYear(ctx, year)
+	return err
+}
+
+// PostPurchaseordersSendId converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPurchaseordersSendId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPurchaseordersSendId(ctx, id)
+	return err
+}
+
+// DeletePurchaseordersId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeletePurchaseordersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeletePurchaseordersId(ctx, id)
+	return err
+}
+
+// GetPurchaseordersId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseordersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseordersId(ctx, id)
+	return err
+}
+
+// PutPurchaseordersId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutPurchaseordersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutPurchaseordersIdParams
+	// ------------- Optional query parameter "deadline" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "deadline", ctx.QueryParams(), &params.Deadline)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter deadline: %s", err))
+	}
+
+	// ------------- Optional query parameter "user_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "user_id", ctx.QueryParams(), &params.UserId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "expense_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "expense_id", ctx.QueryParams(), &params.ExpenseId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter expense_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "finance_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutPurchaseordersId(ctx, id, params)
+	return err
+}
+
+// GetPurchaseordersIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseordersIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseordersIdDetails(ctx, id)
+	return err
+}
+
+// GetPurchasereports converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchasereports(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchasereports(ctx)
+	return err
+}
+
+// PostPurchasereports converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPurchasereports(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPurchasereports(ctx)
+	return err
+}
+
+// GetPurchasereportsDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchasereportsDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchasereportsDetails(ctx)
+	return err
+}
+
+// GetPurchasereportsDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchasereportsDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchasereportsDetailsYear(ctx, year)
+	return err
+}
+
+// DeletePurchasereportsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeletePurchasereportsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeletePurchasereportsId(ctx, id)
+	return err
+}
+
+// GetPurchasereportsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchasereportsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchasereportsId(ctx, id)
+	return err
+}
+
+// PutPurchasereportsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutPurchasereportsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutPurchasereportsId(ctx, id)
+	return err
+}
+
+// GetPurchasereportsIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchasereportsIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchasereportsIdDetails(ctx, id)
+	return err
+}
+
+// GetReceipts converts echo context to params.
+func (w *ServerInterfaceWrapper) GetReceipts(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetReceipts(ctx)
+	return err
+}
+
+// PostReceipts converts echo context to params.
+func (w *ServerInterfaceWrapper) PostReceipts(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostReceipts(ctx)
+	return err
+}
+
+// GetReceiptsReportsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetReceiptsReportsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetReceiptsReportsId(ctx, id)
+	return err
+}
+
+// DeleteReceiptsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteReceiptsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteReceiptsId(ctx, id)
+	return err
+}
+
+// GetReceiptsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetReceiptsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetReceiptsId(ctx, id)
+	return err
+}
+
+// PutReceiptsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutReceiptsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutReceiptsId(ctx, id)
+	return err
+}
+
+// GetSources converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSources(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSources(ctx)
+	return err
+}
+
+// PostSources converts echo context to params.
+func (w *ServerInterfaceWrapper) PostSources(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostSourcesParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostSources(ctx, params)
+	return err
+}
+
+// DeleteSourcesId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteSourcesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteSourcesId(ctx, id)
+	return err
+}
+
+// GetSourcesId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSourcesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSourcesId(ctx, id)
+	return err
+}
+
+// PutSourcesId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutSourcesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutSourcesIdParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutSourcesId(ctx, id, params)
+	return err
+}
+
+// GetSponsors converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSponsors(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSponsors(ctx)
+	return err
+}
+
+// PostSponsors converts echo context to params.
+func (w *ServerInterfaceWrapper) PostSponsors(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostSponsors(ctx)
+	return err
+}
+
+// GetSponsorsPeriodsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSponsorsPeriodsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSponsorsPeriodsYear(ctx, year)
+	return err
+}
+
+// DeleteSponsorsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteSponsorsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteSponsorsId(ctx, id)
+	return err
+}
+
+// GetSponsorsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSponsorsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSponsorsId(ctx, id)
+	return err
+}
+
+// PutSponsorsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutSponsorsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutSponsorsId(ctx, id)
+	return err
+}
+
+// GetSponsorstyles converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSponsorstyles(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSponsorstyles(ctx)
+	return err
+}
+
+// PostSponsorstyles converts echo context to params.
+func (w *ServerInterfaceWrapper) PostSponsorstyles(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostSponsorstyles(ctx)
+	return err
+}
+
+// DeleteSponsorstylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteSponsorstylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteSponsorstylesId(ctx, id)
+	return err
+}
+
+// GetSponsorstylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSponsorstylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSponsorstylesId(ctx, id)
+	return err
+}
+
+// PutSponsorstylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutSponsorstylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutSponsorstylesId(ctx, id)
+	return err
+}
+
+// GetTeachers converts echo context to params.
+func (w *ServerInterfaceWrapper) GetTeachers(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetTeachers(ctx)
+	return err
+}
+
+// PostTeachers converts echo context to params.
+func (w *ServerInterfaceWrapper) PostTeachers(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostTeachersParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Required query parameter "position" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "position", ctx.QueryParams(), &params.Position)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter position: %s", err))
+	}
+
+	// ------------- Optional query parameter "department_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "department_id", ctx.QueryParams(), &params.DepartmentId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter department_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "room" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "room", ctx.QueryParams(), &params.Room)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter room: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_black" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_black", ctx.QueryParams(), &params.IsBlack)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_black: %s", err))
+	}
+
+	// ------------- Optional query parameter "remark" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostTeachers(ctx, params)
+	return err
+}
+
+// DeleteTeachersDelete converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteTeachersDelete(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteTeachersDelete(ctx)
+	return err
+}
+
+// GetTeachersFundRegisteredYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetTeachersFundRegisteredYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetTeachersFundRegisteredYear(ctx, year)
+	return err
+}
+
+// DeleteTeachersId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteTeachersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteTeachersId(ctx, id)
+	return err
+}
+
+// GetTeachersId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetTeachersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetTeachersId(ctx, id)
+	return err
+}
+
+// PutTeachersId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutTeachersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutTeachersIdParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Required query parameter "position" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "position", ctx.QueryParams(), &params.Position)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter position: %s", err))
+	}
+
+	// ------------- Optional query parameter "department_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "department_id", ctx.QueryParams(), &params.DepartmentId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter department_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "room" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "room", ctx.QueryParams(), &params.Room)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter room: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_black" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_black", ctx.QueryParams(), &params.IsBlack)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_black: %s", err))
+	}
+
+	// ------------- Optional query parameter "remark" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutTeachersId(ctx, id, params)
+	return err
+}
+
+// GetUsers converts echo context to params.
+func (w *ServerInterfaceWrapper) GetUsers(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetUsers(ctx)
+	return err
+}
+
+// PostUsers converts echo context to params.
+func (w *ServerInterfaceWrapper) PostUsers(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostUsersParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Required query parameter "bureau_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "bureau_id", ctx.QueryParams(), &params.BureauId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter bureau_id: %s", err))
+	}
+
+	// ------------- Required query parameter "role_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "role_id", ctx.QueryParams(), &params.RoleId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter role_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostUsers(ctx, params)
+	return err
+}
+
+// DeleteUsersDelete converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteUsersDelete(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteUsersDelete(ctx)
+	return err
+}
+
+// DeleteUsersId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteUsersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteUsersId(ctx, id)
+	return err
+}
+
+// GetUsersId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetUsersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetUsersId(ctx, id)
+	return err
+}
+
+// PutUsersId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutUsersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutUsersIdParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Required query parameter "bureau_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "bureau_id", ctx.QueryParams(), &params.BureauId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter bureau_id: %s", err))
+	}
+
+	// ------------- Required query parameter "role_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "role_id", ctx.QueryParams(), &params.RoleId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter role_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutUsersId(ctx, id, params)
+	return err
+}
+
+// GetYears converts echo context to params.
+func (w *ServerInterfaceWrapper) GetYears(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetYears(ctx)
+	return err
+}
+
+// PostYears converts echo context to params.
+func (w *ServerInterfaceWrapper) PostYears(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostYearsParams
+	// ------------- Required query parameter "year" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "year", ctx.QueryParams(), &params.Year)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostYears(ctx, params)
+	return err
+}
+
+// GetYearsPeriods converts echo context to params.
+func (w *ServerInterfaceWrapper) GetYearsPeriods(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetYearsPeriods(ctx)
+	return err
+}
+
+// PostYearsPeriods converts echo context to params.
+func (w *ServerInterfaceWrapper) PostYearsPeriods(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostYearsPeriods(ctx)
+	return err
+}
+
+// DeleteYearsPeriodsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteYearsPeriodsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteYearsPeriodsId(ctx, id)
+	return err
+}
+
+// PutYearsPeriodsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutYearsPeriodsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutYearsPeriodsId(ctx, id)
+	return err
+}
+
+// DeleteYearsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteYearsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteYearsId(ctx, id)
+	return err
+}
+
+// GetYearsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetYearsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetYearsId(ctx, id)
+	return err
+}
+
+// PutYearsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutYearsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutYearsIdParams
+	// ------------- Required query parameter "year" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "year", ctx.QueryParams(), &params.Year)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutYearsId(ctx, id, params)
+	return err
+}
+
+// This is a simple interface which specifies echo.Route addition functions which
+// are present on both echo.Echo and echo.Group, since we want to allow using
+// either of them for path registration
+type EchoRouter interface {
+	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+}
+
+// RegisterHandlers adds each server route to the EchoRouter.
+func RegisterHandlers(router EchoRouter, si ServerInterface) {
+	RegisterHandlersWithBaseURL(router, si, "")
+}
+
+// Registers handlers, and prepends BaseURL to the paths, so that the paths
+// can be served under a prefix.
+func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
+
+	wrapper := ServerInterfaceWrapper{
+		Handler: si,
+	}
+
+	router.GET(baseURL+"/activities", wrapper.GetActivities)
+	router.POST(baseURL+"/activities", wrapper.PostActivities)
+	router.GET(baseURL+"/activities/details", wrapper.GetActivitiesDetails)
+	router.GET(baseURL+"/activities/details/:year", wrapper.GetActivitiesDetailsYear)
+	router.GET(baseURL+"/activities/filtered_details", wrapper.GetActivitiesFilteredDetails)
+	router.GET(baseURL+"/activities/filtered_details/:year", wrapper.GetActivitiesFilteredDetailsYear)
+	router.DELETE(baseURL+"/activities/:id", wrapper.DeleteActivitiesId)
+	router.GET(baseURL+"/activities/:id", wrapper.GetActivitiesId)
+	router.PUT(baseURL+"/activities/:id", wrapper.PutActivitiesId)
+	router.GET(baseURL+"/activity_informations", wrapper.GetActivityInformations)
+	router.POST(baseURL+"/activity_informations", wrapper.PostActivityInformations)
+	router.DELETE(baseURL+"/activity_informations/:id", wrapper.DeleteActivityInformationsId)
+	router.GET(baseURL+"/activity_informations/:id", wrapper.GetActivityInformationsId)
+	router.PUT(baseURL+"/activity_informations/:id", wrapper.PutActivityInformationsId)
+	router.GET(baseURL+"/activity_styles", wrapper.GetActivityStyles)
+	router.POST(baseURL+"/activity_styles", wrapper.PostActivityStyles)
+	router.DELETE(baseURL+"/activity_styles/:id", wrapper.DeleteActivityStylesId)
+	router.GET(baseURL+"/activity_styles/:id", wrapper.GetActivityStylesId)
+	router.PUT(baseURL+"/activity_styles/:id", wrapper.PutActivityStylesId)
+	router.GET(baseURL+"/budgets", wrapper.GetBudgets)
+	router.POST(baseURL+"/budgets", wrapper.PostBudgets)
+	router.GET(baseURL+"/budgets/details", wrapper.GetBudgetsDetails)
+	router.GET(baseURL+"/budgets/details/:year", wrapper.GetBudgetsDetailsYear)
+	router.DELETE(baseURL+"/budgets/:id", wrapper.DeleteBudgetsId)
+	router.GET(baseURL+"/budgets/:id", wrapper.GetBudgetsId)
+	router.PUT(baseURL+"/budgets/:id", wrapper.PutBudgetsId)
+	router.GET(baseURL+"/budgets/:id/details", wrapper.GetBudgetsIdDetails)
+	router.GET(baseURL+"/bureaus", wrapper.GetBureaus)
+	router.POST(baseURL+"/bureaus", wrapper.PostBureaus)
+	router.DELETE(baseURL+"/bureaus/:id", wrapper.DeleteBureausId)
+	router.GET(baseURL+"/bureaus/:id", wrapper.GetBureausId)
+	router.PUT(baseURL+"/bureaus/:id", wrapper.PutBureausId)
+	router.GET(baseURL+"/departments", wrapper.GetDepartments)
+	router.POST(baseURL+"/departments", wrapper.PostDepartments)
+	router.DELETE(baseURL+"/departments/:id", wrapper.DeleteDepartmentsId)
+	router.GET(baseURL+"/departments/:id", wrapper.GetDepartmentsId)
+	router.PUT(baseURL+"/departments/:id", wrapper.PutDepartmentsId)
+	router.GET(baseURL+"/expenses", wrapper.GetExpenses)
+	router.POST(baseURL+"/expenses", wrapper.PostExpenses)
+	router.GET(baseURL+"/expenses/details", wrapper.GetExpensesDetails)
+	router.GET(baseURL+"/expenses/details/:year", wrapper.GetExpensesDetailsYear)
+	router.GET(baseURL+"/expenses/fiscalyear/:year", wrapper.GetExpensesFiscalyearYear)
+	router.DELETE(baseURL+"/expenses/:id", wrapper.DeleteExpensesId)
+	router.GET(baseURL+"/expenses/:id", wrapper.GetExpensesId)
+	router.PUT(baseURL+"/expenses/:id", wrapper.PutExpensesId)
+	router.GET(baseURL+"/expenses/:id/details", wrapper.GetExpensesIdDetails)
+	router.GET(baseURL+"/fund_informations", wrapper.GetFundInformations)
+	router.POST(baseURL+"/fund_informations", wrapper.PostFundInformations)
+	router.GET(baseURL+"/fund_informations/details", wrapper.GetFundInformationsDetails)
+	router.GET(baseURL+"/fund_informations/details/:year", wrapper.GetFundInformationsDetailsYear)
+	router.DELETE(baseURL+"/fund_informations/:id", wrapper.DeleteFundInformationsId)
+	router.GET(baseURL+"/fund_informations/:id", wrapper.GetFundInformationsId)
+	router.PUT(baseURL+"/fund_informations/:id", wrapper.PutFundInformationsId)
+	router.GET(baseURL+"/fund_informations/:id/details", wrapper.GetFundInformationsIdDetails)
+	router.POST(baseURL+"/password_reset/request", wrapper.PostPasswordResetRequest)
+	router.POST(baseURL+"/password_reset/:id", wrapper.PostPasswordResetId)
+	router.POST(baseURL+"/password_reset/:id/valid", wrapper.PostPasswordResetIdValid)
+	router.GET(baseURL+"/purchaseitems", wrapper.GetPurchaseitems)
+	router.POST(baseURL+"/purchaseitems", wrapper.PostPurchaseitems)
+	router.GET(baseURL+"/purchaseitems/details", wrapper.GetPurchaseitemsDetails)
+	router.DELETE(baseURL+"/purchaseitems/:id", wrapper.DeletePurchaseitemsId)
+	router.GET(baseURL+"/purchaseitems/:id", wrapper.GetPurchaseitemsId)
+	router.PUT(baseURL+"/purchaseitems/:id", wrapper.PutPurchaseitemsId)
+	router.GET(baseURL+"/purchaseitems/:id/details", wrapper.GetPurchaseitemsIdDetails)
+	router.GET(baseURL+"/purchaseorders", wrapper.GetPurchaseorders)
+	router.POST(baseURL+"/purchaseorders", wrapper.PostPurchaseorders)
+	router.GET(baseURL+"/purchaseorders/details", wrapper.GetPurchaseordersDetails)
+	router.GET(baseURL+"/purchaseorders/details/unregistered/:year", wrapper.GetPurchaseordersDetailsUnregisteredYear)
+	router.GET(baseURL+"/purchaseorders/details/:year", wrapper.GetPurchaseordersDetailsYear)
+	router.POST(baseURL+"/purchaseorders/send/:id", wrapper.PostPurchaseordersSendId)
+	router.DELETE(baseURL+"/purchaseorders/:id", wrapper.DeletePurchaseordersId)
+	router.GET(baseURL+"/purchaseorders/:id", wrapper.GetPurchaseordersId)
+	router.PUT(baseURL+"/purchaseorders/:id", wrapper.PutPurchaseordersId)
+	router.GET(baseURL+"/purchaseorders/:id/details", wrapper.GetPurchaseordersIdDetails)
+	router.GET(baseURL+"/purchasereports", wrapper.GetPurchasereports)
+	router.POST(baseURL+"/purchasereports", wrapper.PostPurchasereports)
+	router.GET(baseURL+"/purchasereports/details", wrapper.GetPurchasereportsDetails)
+	router.GET(baseURL+"/purchasereports/details/:year", wrapper.GetPurchasereportsDetailsYear)
+	router.DELETE(baseURL+"/purchasereports/:id", wrapper.DeletePurchasereportsId)
+	router.GET(baseURL+"/purchasereports/:id", wrapper.GetPurchasereportsId)
+	router.PUT(baseURL+"/purchasereports/:id", wrapper.PutPurchasereportsId)
+	router.GET(baseURL+"/purchasereports/:id/details", wrapper.GetPurchasereportsIdDetails)
+	router.GET(baseURL+"/receipts", wrapper.GetReceipts)
+	router.POST(baseURL+"/receipts", wrapper.PostReceipts)
+	router.GET(baseURL+"/receipts/reports/:id", wrapper.GetReceiptsReportsId)
+	router.DELETE(baseURL+"/receipts/:id", wrapper.DeleteReceiptsId)
+	router.GET(baseURL+"/receipts/:id", wrapper.GetReceiptsId)
+	router.PUT(baseURL+"/receipts/:id", wrapper.PutReceiptsId)
+	router.GET(baseURL+"/sources", wrapper.GetSources)
+	router.POST(baseURL+"/sources", wrapper.PostSources)
+	router.DELETE(baseURL+"/sources/:id", wrapper.DeleteSourcesId)
+	router.GET(baseURL+"/sources/:id", wrapper.GetSourcesId)
+	router.PUT(baseURL+"/sources/:id", wrapper.PutSourcesId)
+	router.GET(baseURL+"/sponsors", wrapper.GetSponsors)
+	router.POST(baseURL+"/sponsors", wrapper.PostSponsors)
+	router.GET(baseURL+"/sponsors/periods/:year", wrapper.GetSponsorsPeriodsYear)
+	router.DELETE(baseURL+"/sponsors/:id", wrapper.DeleteSponsorsId)
+	router.GET(baseURL+"/sponsors/:id", wrapper.GetSponsorsId)
+	router.PUT(baseURL+"/sponsors/:id", wrapper.PutSponsorsId)
+	router.GET(baseURL+"/sponsorstyles", wrapper.GetSponsorstyles)
+	router.POST(baseURL+"/sponsorstyles", wrapper.PostSponsorstyles)
+	router.DELETE(baseURL+"/sponsorstyles/:id", wrapper.DeleteSponsorstylesId)
+	router.GET(baseURL+"/sponsorstyles/:id", wrapper.GetSponsorstylesId)
+	router.PUT(baseURL+"/sponsorstyles/:id", wrapper.PutSponsorstylesId)
+	router.GET(baseURL+"/teachers", wrapper.GetTeachers)
+	router.POST(baseURL+"/teachers", wrapper.PostTeachers)
+	router.DELETE(baseURL+"/teachers/delete", wrapper.DeleteTeachersDelete)
+	router.GET(baseURL+"/teachers/fundRegistered/:year", wrapper.GetTeachersFundRegisteredYear)
+	router.DELETE(baseURL+"/teachers/:id", wrapper.DeleteTeachersId)
+	router.GET(baseURL+"/teachers/:id", wrapper.GetTeachersId)
+	router.PUT(baseURL+"/teachers/:id", wrapper.PutTeachersId)
+	router.GET(baseURL+"/users", wrapper.GetUsers)
+	router.POST(baseURL+"/users", wrapper.PostUsers)
+	router.DELETE(baseURL+"/users/delete", wrapper.DeleteUsersDelete)
+	router.DELETE(baseURL+"/users/:id", wrapper.DeleteUsersId)
+	router.GET(baseURL+"/users/:id", wrapper.GetUsersId)
+	router.PUT(baseURL+"/users/:id", wrapper.PutUsersId)
+	router.GET(baseURL+"/years", wrapper.GetYears)
+	router.POST(baseURL+"/years", wrapper.PostYears)
+	router.GET(baseURL+"/years/periods", wrapper.GetYearsPeriods)
+	router.POST(baseURL+"/years/periods", wrapper.PostYearsPeriods)
+	router.DELETE(baseURL+"/years/periods/:id", wrapper.DeleteYearsPeriodsId)
+	router.PUT(baseURL+"/years/periods/:id", wrapper.PutYearsPeriodsId)
+	router.DELETE(baseURL+"/years/:id", wrapper.DeleteYearsId)
+	router.GET(baseURL+"/years/:id", wrapper.GetYearsId)
+	router.PUT(baseURL+"/years/:id", wrapper.PutYearsId)
+
+}

From 9af793f80d0b84c4a36643ea1ecbfa8ff762da22 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 9 Dec 2024 17:53:50 +0000
Subject: [PATCH 11/30] =?UTF-8?q?[fix]=20=E3=82=BF=E3=82=A4=E3=83=9D?=
 =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E3=81=A8foreign=20key=E5=B0=8E=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mysql/db/{bus_statuses.sql => buy_statuses.sql} | 1 +
 mysql/db/{item_budget.sql => item_budgets.sql}  | 1 +
 2 files changed, 2 insertions(+)
 rename mysql/db/{bus_statuses.sql => buy_statuses.sql} (82%)
 rename mysql/db/{item_budget.sql => item_budgets.sql} (78%)

diff --git a/mysql/db/bus_statuses.sql b/mysql/db/buy_statuses.sql
similarity index 82%
rename from mysql/db/bus_statuses.sql
rename to mysql/db/buy_statuses.sql
index 52583cd63..f4f2447e2 100644
--- a/mysql/db/bus_statuses.sql
+++ b/mysql/db/buy_statuses.sql
@@ -8,4 +8,5 @@ CREATE TABLE buy_statuses (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
+    FOREIGN KEY buy_report_id_foreign_key (buy_report_id) REFERENCES buy_statuses (id)
 );
diff --git a/mysql/db/item_budget.sql b/mysql/db/item_budgets.sql
similarity index 78%
rename from mysql/db/item_budget.sql
rename to mysql/db/item_budgets.sql
index 109aa8ed6..4ccdc1d6e 100644
--- a/mysql/db/item_budget.sql
+++ b/mysql/db/item_budgets.sql
@@ -7,4 +7,5 @@ CREATE TABLE item_budgets (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
+    FOREIGN KEY festival_item_id_foreign_key (festival_item_id) REFERENCES item_budgets (id)
 );

From d83204b9d3325279cf55661bbbdb89c210efd4e7 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 9 Dec 2024 17:54:11 +0000
Subject: [PATCH 12/30] =?UTF-8?q?[fix]=20foreign=20key=E5=B0=8E=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mysql/db/buy_reports.sql       | 1 +
 mysql/db/divisions.sql         | 1 +
 mysql/db/festival_items.sql    | 1 +
 mysql/db/financial_records.sql | 1 +
 mysql/db/payment_receipts.sql  | 1 +
 mysql/db/user_groups.sql       | 2 ++
 6 files changed, 7 insertions(+)

diff --git a/mysql/db/buy_reports.sql b/mysql/db/buy_reports.sql
index bab7e16d8..a85948bcf 100644
--- a/mysql/db/buy_reports.sql
+++ b/mysql/db/buy_reports.sql
@@ -9,4 +9,5 @@ CREATE TABLE buy_reports (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
+    FOREIGN KEY festival_item_id_foreign_key (festival_item_id) REFERENCES festival_items (id)
 );
diff --git a/mysql/db/divisions.sql b/mysql/db/divisions.sql
index a6ec465fe..74ee31ef2 100644
--- a/mysql/db/divisions.sql
+++ b/mysql/db/divisions.sql
@@ -7,4 +7,5 @@ CREATE TABLE divisions (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
+    FOREIGN KEY financial_record_id_foreign_key (financial_record_id) REFERENCES divisions (id)
 );
diff --git a/mysql/db/festival_items.sql b/mysql/db/festival_items.sql
index a4dbfed6f..f9290b587 100644
--- a/mysql/db/festival_items.sql
+++ b/mysql/db/festival_items.sql
@@ -8,4 +8,5 @@ CREATE TABLE festival_items (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
+    FOREIGN KEY division_id_foreign_key (division_id) REFERENCES festival_items (id)
 );
diff --git a/mysql/db/financial_records.sql b/mysql/db/financial_records.sql
index ac162312c..2bd647a7b 100644
--- a/mysql/db/financial_records.sql
+++ b/mysql/db/financial_records.sql
@@ -7,4 +7,5 @@ CREATE TABLE financial_records (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
+    FOREIGN KEY year_id_foreign_key (year_id) REFERENCES financial_records (id)
 );
diff --git a/mysql/db/payment_receipts.sql b/mysql/db/payment_receipts.sql
index 93d6400a3..e2d2f6b4e 100644
--- a/mysql/db/payment_receipts.sql
+++ b/mysql/db/payment_receipts.sql
@@ -10,4 +10,5 @@ CREATE TABLE payment_receipts (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
+    FOREIGN KEY buy_report_id_foreign_key (buy_report_id) REFERENCES payment_receipts (id)
 );
diff --git a/mysql/db/user_groups.sql b/mysql/db/user_groups.sql
index fa2ae1eef..95d2a2eb5 100644
--- a/mysql/db/user_groups.sql
+++ b/mysql/db/user_groups.sql
@@ -7,4 +7,6 @@ CREATE TABLE user_groups (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id),
+    FOREIGN KEY user_id_foreign_key (user_id) REFERENCES user_groups (id)
+    FOREIGN KEY group_id_foreign_key (group_id) REFERENCES user_groups (id)
 );

From 443551824081a9c756845c9315f2c04dd2162ce4 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Sun, 15 Dec 2024 07:29:16 +0000
Subject: [PATCH 13/30] [fix] rename sql file

---
 mysql/db/{years.sql => 01_years.sql}                         | 0
 mysql/db/{users.sql => 02_users.sql}                         | 0
 mysql/db/{financial_records.sql => 03_financial_records.sql} | 2 +-
 mysql/db/{divisions.sql => 04_divisions.sql}                 | 2 +-
 mysql/db/{festival_items.sql => 05_festival_items.sql}       | 2 +-
 mysql/db/{item_budgets.sql => 06_item_budgets.sql}           | 2 +-
 mysql/db/{user_groups.sql => 07_user_groups.sql}             | 4 ++--
 mysql/db/{buy_reports.sql => 08_buy_reports.sql}             | 0
 mysql/db/{payment_receipts.sql => 09_payment_receipts.sql}   | 2 +-
 mysql/db/{buy_statuses.sql => 10_buy_statuses.sql}           | 2 +-
 10 files changed, 8 insertions(+), 8 deletions(-)
 rename mysql/db/{years.sql => 01_years.sql} (100%)
 rename mysql/db/{users.sql => 02_users.sql} (100%)
 rename mysql/db/{financial_records.sql => 03_financial_records.sql} (81%)
 rename mysql/db/{divisions.sql => 04_divisions.sql} (91%)
 rename mysql/db/{festival_items.sql => 05_festival_items.sql} (95%)
 rename mysql/db/{item_budgets.sql => 06_item_budgets.sql} (92%)
 rename mysql/db/{user_groups.sql => 07_user_groups.sql} (68%)
 rename mysql/db/{buy_reports.sql => 08_buy_reports.sql} (100%)
 rename mysql/db/{payment_receipts.sql => 09_payment_receipts.sql} (95%)
 rename mysql/db/{buy_statuses.sql => 10_buy_statuses.sql} (95%)

diff --git a/mysql/db/years.sql b/mysql/db/01_years.sql
similarity index 100%
rename from mysql/db/years.sql
rename to mysql/db/01_years.sql
diff --git a/mysql/db/users.sql b/mysql/db/02_users.sql
similarity index 100%
rename from mysql/db/users.sql
rename to mysql/db/02_users.sql
diff --git a/mysql/db/financial_records.sql b/mysql/db/03_financial_records.sql
similarity index 81%
rename from mysql/db/financial_records.sql
rename to mysql/db/03_financial_records.sql
index 2bd647a7b..580b51539 100644
--- a/mysql/db/financial_records.sql
+++ b/mysql/db/03_financial_records.sql
@@ -7,5 +7,5 @@ CREATE TABLE financial_records (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
-    FOREIGN KEY year_id_foreign_key (year_id) REFERENCES financial_records (id)
+    FOREIGN KEY year_id_foreign_key (year_id) REFERENCES years (id)
 );
diff --git a/mysql/db/divisions.sql b/mysql/db/04_divisions.sql
similarity index 91%
rename from mysql/db/divisions.sql
rename to mysql/db/04_divisions.sql
index 74ee31ef2..d7a53c9ce 100644
--- a/mysql/db/divisions.sql
+++ b/mysql/db/04_divisions.sql
@@ -7,5 +7,5 @@ CREATE TABLE divisions (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
-    FOREIGN KEY financial_record_id_foreign_key (financial_record_id) REFERENCES divisions (id)
+    FOREIGN KEY financial_record_id_foreign_key (financial_record_id) REFERENCES financial_records (id)
 );
diff --git a/mysql/db/festival_items.sql b/mysql/db/05_festival_items.sql
similarity index 95%
rename from mysql/db/festival_items.sql
rename to mysql/db/05_festival_items.sql
index f9290b587..fd8da36c5 100644
--- a/mysql/db/festival_items.sql
+++ b/mysql/db/05_festival_items.sql
@@ -8,5 +8,5 @@ CREATE TABLE festival_items (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
-    FOREIGN KEY division_id_foreign_key (division_id) REFERENCES festival_items (id)
+    FOREIGN KEY division_id_foreign_key (division_id) REFERENCES divisions (id)
 );
diff --git a/mysql/db/item_budgets.sql b/mysql/db/06_item_budgets.sql
similarity index 92%
rename from mysql/db/item_budgets.sql
rename to mysql/db/06_item_budgets.sql
index 4ccdc1d6e..8e98bc585 100644
--- a/mysql/db/item_budgets.sql
+++ b/mysql/db/06_item_budgets.sql
@@ -7,5 +7,5 @@ CREATE TABLE item_budgets (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
-    FOREIGN KEY festival_item_id_foreign_key (festival_item_id) REFERENCES item_budgets (id)
+    FOREIGN KEY festival_item_id_foreign_key (festival_item_id) REFERENCES festival_items (id)
 );
diff --git a/mysql/db/user_groups.sql b/mysql/db/07_user_groups.sql
similarity index 68%
rename from mysql/db/user_groups.sql
rename to mysql/db/07_user_groups.sql
index 95d2a2eb5..9832db401 100644
--- a/mysql/db/user_groups.sql
+++ b/mysql/db/07_user_groups.sql
@@ -7,6 +7,6 @@ CREATE TABLE user_groups (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id),
-    FOREIGN KEY user_id_foreign_key (user_id) REFERENCES user_groups (id)
-    FOREIGN KEY group_id_foreign_key (group_id) REFERENCES user_groups (id)
+    FOREIGN KEY user_id_foreign_key (user_id) REFERENCES users (id)
+    FOREIGN KEY group_id_foreign_key (group_id) REFERENCES divisions (id)
 );
diff --git a/mysql/db/buy_reports.sql b/mysql/db/08_buy_reports.sql
similarity index 100%
rename from mysql/db/buy_reports.sql
rename to mysql/db/08_buy_reports.sql
diff --git a/mysql/db/payment_receipts.sql b/mysql/db/09_payment_receipts.sql
similarity index 95%
rename from mysql/db/payment_receipts.sql
rename to mysql/db/09_payment_receipts.sql
index e2d2f6b4e..b3f55009e 100644
--- a/mysql/db/payment_receipts.sql
+++ b/mysql/db/09_payment_receipts.sql
@@ -10,5 +10,5 @@ CREATE TABLE payment_receipts (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
-    FOREIGN KEY buy_report_id_foreign_key (buy_report_id) REFERENCES payment_receipts (id)
+    FOREIGN KEY buy_report_id_foreign_key (buy_report_id) REFERENCES buy_reports (id)
 );
diff --git a/mysql/db/buy_statuses.sql b/mysql/db/10_buy_statuses.sql
similarity index 95%
rename from mysql/db/buy_statuses.sql
rename to mysql/db/10_buy_statuses.sql
index f4f2447e2..a95ec18a8 100644
--- a/mysql/db/buy_statuses.sql
+++ b/mysql/db/10_buy_statuses.sql
@@ -8,5 +8,5 @@ CREATE TABLE buy_statuses (
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id)
-    FOREIGN KEY buy_report_id_foreign_key (buy_report_id) REFERENCES buy_statuses (id)
+    FOREIGN KEY buy_report_id_foreign_key (buy_report_id) REFERENCES buy_reports (id)
 );

From f8adb5e236191c6beefb428afbf371100f2d71bf Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 17 Dec 2024 18:25:01 +0000
Subject: [PATCH 14/30] [fix] missing comma

---
 mysql/db/03_financial_records.sql | 2 +-
 mysql/db/04_divisions.sql         | 2 +-
 mysql/db/06_item_budgets.sql      | 2 +-
 mysql/db/08_buy_reports.sql       | 2 +-
 mysql/db/09_payment_receipts.sql  | 2 +-
 mysql/db/10_buy_statuses.sql      | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/mysql/db/03_financial_records.sql b/mysql/db/03_financial_records.sql
index 580b51539..4b8f18de6 100644
--- a/mysql/db/03_financial_records.sql
+++ b/mysql/db/03_financial_records.sql
@@ -6,6 +6,6 @@ CREATE TABLE financial_records (
     year_id INT(10) UNSIGNED NOT NULL,
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    PRIMARY KEY (id)
+    PRIMARY KEY (id),
     FOREIGN KEY year_id_foreign_key (year_id) REFERENCES years (id)
 );
diff --git a/mysql/db/04_divisions.sql b/mysql/db/04_divisions.sql
index d7a53c9ce..ddcbb4e79 100644
--- a/mysql/db/04_divisions.sql
+++ b/mysql/db/04_divisions.sql
@@ -6,6 +6,6 @@ CREATE TABLE divisions (
     financial_record_id INT(10) UNSIGNED NOT NULL,
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    PRIMARY KEY (id)
+    PRIMARY KEY (id),
     FOREIGN KEY financial_record_id_foreign_key (financial_record_id) REFERENCES financial_records (id)
 );
diff --git a/mysql/db/06_item_budgets.sql b/mysql/db/06_item_budgets.sql
index 8e98bc585..731c004f6 100644
--- a/mysql/db/06_item_budgets.sql
+++ b/mysql/db/06_item_budgets.sql
@@ -6,6 +6,6 @@ CREATE TABLE item_budgets (
     festival_item_id INT(10) UNSIGNED NOT NULL,
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    PRIMARY KEY (id)
+    PRIMARY KEY (id),
     FOREIGN KEY festival_item_id_foreign_key (festival_item_id) REFERENCES festival_items (id)
 );
diff --git a/mysql/db/08_buy_reports.sql b/mysql/db/08_buy_reports.sql
index a85948bcf..b3710f7bc 100644
--- a/mysql/db/08_buy_reports.sql
+++ b/mysql/db/08_buy_reports.sql
@@ -8,6 +8,6 @@ CREATE TABLE buy_reports (
     paid_by VARCHAR(255) NOT NULL,
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    PRIMARY KEY (id)
+    PRIMARY KEY (id),
     FOREIGN KEY festival_item_id_foreign_key (festival_item_id) REFERENCES festival_items (id)
 );
diff --git a/mysql/db/09_payment_receipts.sql b/mysql/db/09_payment_receipts.sql
index b3f55009e..993b2315b 100644
--- a/mysql/db/09_payment_receipts.sql
+++ b/mysql/db/09_payment_receipts.sql
@@ -9,6 +9,6 @@ CREATE TABLE payment_receipts (
     remark VARCHAR(255),
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    PRIMARY KEY (id)
+    PRIMARY KEY (id),
     FOREIGN KEY buy_report_id_foreign_key (buy_report_id) REFERENCES buy_reports (id)
 );
diff --git a/mysql/db/10_buy_statuses.sql b/mysql/db/10_buy_statuses.sql
index a95ec18a8..17fc9c0dd 100644
--- a/mysql/db/10_buy_statuses.sql
+++ b/mysql/db/10_buy_statuses.sql
@@ -7,6 +7,6 @@ CREATE TABLE buy_statuses (
     is_settled BOOLEAN NOT NULL DEFAULT FALSE,
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    PRIMARY KEY (id)
+    PRIMARY KEY (id),
     FOREIGN KEY buy_report_id_foreign_key (buy_report_id) REFERENCES buy_reports (id)
 );

From 7cf891f17373779da4bbd55549264b517b6c2342 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 17 Dec 2024 18:26:33 +0000
Subject: [PATCH 15/30] [fix] Apply UNSIGNED to the foreign key column

---
 mysql/db/07_user_groups.sql | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/mysql/db/07_user_groups.sql b/mysql/db/07_user_groups.sql
index 9832db401..a55b3fb00 100644
--- a/mysql/db/07_user_groups.sql
+++ b/mysql/db/07_user_groups.sql
@@ -2,11 +2,11 @@ USE finansu_db;
 
 CREATE TABLE user_groups (
     id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
-    user_id INT(10) NOT NULL,
-    group_id INT(10) NOT NULL,
+    user_id INT(10) UNSIGNED NOT NULL,
+    group_id INT(10) UNSIGNED NOT NULL,
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
     PRIMARY KEY (id),
-    FOREIGN KEY user_id_foreign_key (user_id) REFERENCES users (id)
+    FOREIGN KEY user_id_foreign_key (user_id) REFERENCES users (id),
     FOREIGN KEY group_id_foreign_key (group_id) REFERENCES divisions (id)
 );

From 7a7891888192c340b18699517c0960dacfca0c1d Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Tue, 17 Dec 2024 18:27:35 +0000
Subject: [PATCH 16/30] [fix] Drop the Not Null from the memo column

---
 mysql/db/05_festival_items.sql | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mysql/db/05_festival_items.sql b/mysql/db/05_festival_items.sql
index fd8da36c5..395ca18aa 100644
--- a/mysql/db/05_festival_items.sql
+++ b/mysql/db/05_festival_items.sql
@@ -3,10 +3,10 @@ USE finansu_db;
 CREATE TABLE festival_items (
     id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
     name VARCHAR(255) NOT NULL,
-    memo VARCHAR(255) NOT NULL,
+    memo VARCHAR(255),
     division_id INT(10) UNSIGNED NOT NULL,
     created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
     updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-    PRIMARY KEY (id)
+    PRIMARY KEY (id),
     FOREIGN KEY division_id_foreign_key (division_id) REFERENCES divisions (id)
 );

From 9abf34a636ecc31ab85bf9d18382b793affb865f Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 23 Dec 2024 17:00:02 +0000
Subject: [PATCH 17/30] =?UTF-8?q?[del]=20api/docs=E3=81=AE=E5=89=8A?=
 =?UTF-8?q?=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/docs/docs.go      | 3049 -----------------------------------------
 api/docs/swagger.json |    7 -
 api/docs/swagger.yaml |    4 -
 3 files changed, 3060 deletions(-)
 delete mode 100644 api/docs/docs.go
 delete mode 100644 api/docs/swagger.json
 delete mode 100644 api/docs/swagger.yaml

diff --git a/api/docs/docs.go b/api/docs/docs.go
deleted file mode 100644
index bb884df32..000000000
--- a/api/docs/docs.go
+++ /dev/null
@@ -1,3049 +0,0 @@
-// Package docs GENERATED BY SWAG; DO NOT EDIT
-// This file was generated by swaggo/swag
-package docs
-
-import "github.com/swaggo/swag"
-
-const docTemplate = `{
-    "schemes": {{ marshal .Schemes }},
-    "swagger": "2.0",
-    "info": {
-        "description": "{{escape .Description}}",
-        "title": "{{.Title}}",
-        "contact": {},
-        "version": "{{.Version}}"
-    },
-    "host": "{{.Host}}",
-    "basePath": "{{.BasePath}}",
-    "paths": {
-        "/activities": {
-            "get": {
-                tags: ["activity"],
-                "description": "activitiesの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "activitiesの一覧の取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["activity"],
-                "description": "activitiesの作成",
-                "parameters": [
-                    {
-                        "in": "body",
-                        "name": "activity",
-                        "schema":{
-                            "$ref": "#/definitions/activity"
-                        },
-                    },
-                ],
-                responses: {
-                    "200": {
-                        "description": "create されたactivityが返ってくる",
-                    }
-                },
-            },
-        },
-        "/activities/details": {
-            "get": {
-                tags: ["activity"],
-                "description": "activitiesとsponsor,sponsorStyle,userの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "activitiesとsponsor,sponsorStyle,userの一覧の取得",
-                    }
-                }
-            },
-        },
-		"/activities/details/{year}": {
-				"get": {
-						tags: ["activity"],
-						"description": "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得",
-						"parameters": [
-								{
-										"name": "year",
-										"in": "path",
-										"description": "year",
-										"required": true,
-										"type": "integer"
-								}
-						],
-						"responses": {
-								"200": {
-										"description": "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得",
-								}
-						}
-				},
-		},
-        "/activities/filtered_details": {
-            "get": {
-                tags: ["activity"],
-                "description": "activitiesとsponsor,sponsorStyle,userの一覧を取得",
-                "parameters": [
-                    {
-                        "name": "is_done",
-                        "in": "query",
-                        "description": "Filter by done status.[true, false, all]",
-                        "required": false,
-                        "schema": {
-                            "type": "string",
-                            "enum": ["true", "false", "all"]
-                        }
-                    },
-                    {
-                        "name": "sponsor_style_id",
-                        "in": "query",
-                        "description": "Filter by sponsor style IDs. ex.) 1,3,6,...",
-                        "required": false,
-                        "schema": {
-                        "type": "array",
-                        "items": {
-                            "type": "integer"
-                        }
-                        },
-                        "style": "form",
-                        "explode": true
-                    },
-                    {
-                        "name": "keyword",
-                        "in": "query",
-                        "description": "Filter by keyword",
-                        "required": false,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                ],
-                "responses": {
-                    "200": {
-                        "description": "activitiesとsponsor,sponsorStyle,userの一覧の取得",
-                    }
-                }
-            },
-        },
-        "/activities/filtered_details/{year}": {
-            "get": {
-                tags: ["activity"],
-                "description": "activitiesとsponsor,sponsorStyle,userの一覧を取得",
-                "parameters": [
-                    {
-                        "name": "year",
-                        "in": "path",
-                        "description": "Filter by year.",
-                        "required": true,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                    {
-                        "name": "is_done",
-                        "in": "query",
-                        "description": "Filter by done status.[true, false, all]",
-                        "required": false,
-                        "schema": {
-                            "type": "string",
-                            "enum": ["true", "false", "all"]
-                        }
-                    },
-                    {
-                        "name": "sponsor_style_id",
-                        "in": "query",
-                        "description": "Filter by sponsor style IDs. ex.) 1,3,6,...",
-                        "required": false,
-                        "schema": {
-                        "type": "array",
-                        "items": {
-                            "type": "integer"
-                        }
-                        },
-                        "style": "form",
-                        "explode": true
-                    },
-                    {
-                        "name": "keyword",
-                        "in": "query",
-                        "description": "Filter by keyword",
-                        "required": false,
-                        "schema": {
-                            "type": "string"
-                        }
-                    },
-                ],
-                "responses": {
-                    "200": {
-                        "description": "activitiesとsponsor,sponsorStyle,userの一覧の取得",
-                    }
-                }
-            },
-        },
-        "/activities/{id}": {
-            "get": {
-                tags: ["activity"],
-                "description": "IDで指定されたactivitiesの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "activitiesの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["activity"],
-                "description": "activitiesの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたactivitiesが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "in": "body",
-                        "name": "activity",
-                        "schema":{
-                            "$ref": "#/definitions/activity"
-                        },
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["activity"],
-                "description": "IDを指定してactivitiesの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "activitiesの削除完了",
-                    }
-                },
-            },
-        },
-        "/activity_informations": {
-            "get": {
-                tags: ["activity_information"],
-                "description": "activity_informationの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "activity_informationの一覧の取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["activity_information"],
-                "description": "activity_informationの作成",
-                "parameters": [
-                    {
-                        "in": "body",
-                        "name": "activity_information",
-                        "schema":{
-                            "$ref": "#/definitions/activity_information"
-                        },
-                    },
-                ],
-                responses: {
-                    "200": {
-                        "description": "create されたactivity_informationが返ってくる",
-                    }
-                },
-            },
-        },
-        "/activity_informations/{id}": {
-            "get": {
-                tags: ["activity_information"],
-                "description": "IDで指定されたactivity_informationsの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "activity_informationの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["activity_information"],
-                "description": "activity_informationの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたactivity_informationが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "in": "body",
-                        "name": "activity_information",
-                        "schema":{
-                            "$ref": "#/definitions/activity_information"
-                        },
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["activity_information"],
-                "description": "IDを指定してactivity_informationの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "activity_informationの削除完了",
-                    }
-                },
-            },
-        },
-        "/activity_styles": {
-            "get": {
-                tags: ["activity_style"],
-                "description": "activity_styleの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "activity_styleの一覧の取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["activity_style"],
-                "description": "activity_styleの作成",
-                "parameters": [
-                    {
-                        "in": "body",
-                        "name": "activity_style",
-                        "schema":{
-                            "$ref": "#/definitions/activity_style"
-                        },
-                    },
-                ],
-                responses: {
-                    "200": {
-                        "description": "createされたactivity_styleが返ってくる",
-                    }
-                },
-            },
-        },
-        "/activity_styles/{id}": {
-            "get": {
-                tags: ["activity_style"],
-                "description": "IDで指定されたactivity_styleの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "activity_styleの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["activity_style"],
-                "description": "activity_styleの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたactivity_styleが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "in": "body",
-                        "name": "activity_style",
-                        "schema":{
-                            "$ref": "#/definitions/activity_style"
-                        },
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["activity_style"],
-                "description": "IDを指定してactivity_styleの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "activity_styleの削除完了",
-                    }
-                },
-            },
-        },
-        "/budgets": {
-            "get": {
-                tags: ["budget"],
-                "description": "budgetの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "budgetの一覧の取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["budget"],
-                "description": "budgetの作成",
-                responses: {
-                    "200": {
-                        "description": "create されたbudgetが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "price",
-                        "in": "query",
-                        "description": "price",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "year_id",
-                        "in": "query",
-                        "description": "year_id",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "source_id",
-                        "in": "query",
-                        "description": "source_id",
-                        "type": "integer"
-                    }
-                ],
-            },
-        },
-        "/budgets/details": {
-            "get": {
-                tags: ["budget"],
-                "description": "budgetに紐づくyearとsourceの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "budgetに紐づくyearとsourceの一覧を取得",
-                    }
-                }
-            },
-        },
-        "/budgets/details/{year}": {
-            "get": {
-                tags: ["budget"],
-                "description": "年度で指定されたbudgetsに紐づく年度とソースを取得",
-                "parameters": [
-                    {
-                        "name": "year",
-                        "in": "path",
-                        "description": "year",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "年度で指定されたbudgetsに紐づく年度とソースを取得",
-                    }
-                }
-            },
-        },
-        "/budgets/{id}": {
-            "get": {
-                tags: ["budget"],
-                "description": "IDで指定されたbudgetの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "budgetの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["budget"],
-                "description": "budgetの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたbudgetが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "price",
-                        "in": "query",
-                        "description": "price",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "year_id",
-                        "in": "query",
-                        "description": "year_id",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "source_id",
-                        "in": "query",
-                        "description": "source_id",
-                        "type": "integer"
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["budget"],
-                "description": "IDを指定してbudgetの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "budgetの削除完了",
-                    }
-                },
-            },
-        },
-        "/budgets/{id}/details": {
-            "get": {
-                tags: ["budget"],
-                "description": "IDで指定されたbudgetに紐づくyearとsourceを取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "budgetに紐づくyearとsourceを取得",
-                    }
-                }
-            },
-        },
-        "/bureaus": {
-            "get": {
-                tags: ["bureau"],
-                "description": "bureauの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "bureauの一覧の取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["bureau"],
-                "description": "bureauの作成",
-                responses: {
-                    "200": {
-                        "description": "create されたbureauが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "name",
-                        "required": true,
-                        "type": "string"
-                    },
-                ],
-            },
-        },
-        "/bureaus/{id}": {
-            "get": {
-                tags: ["bureau"],
-                "description": "IDで指定されたbureauの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "bureauの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["bureau"],
-                "description": "bureauの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたbureauが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "name",
-                        "type": "string"
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["bureau"],
-                "description": "IDを指定してbureauの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "bureauの削除完了",
-                    }
-                },
-            },
-        },
-        "/departments": {
-            "get": {
-                tags: ["department"],
-                "description": "departmentの一覧の取得",
-                "responses": {
-                    "200": {
-                        "description": "departmentの一覧を取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["department"],
-                "description": "departmentの作成",
-                responses: {
-                    "200": {
-                        "description": "作成されたdepartmentが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "name",
-                        "type": "string"
-                    }
-                ],
-            },
-        },
-        "/departments/{id}": {
-            "get": {
-                tags: ["department"],
-                "description": "IDで指定されたdepartmentの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "departmentの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["department"],
-                "description": "departmentの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたdepartmentが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "name",
-                        "type": "string"
-                    }
-                ],
-            },
-            "delete": {
-                tags: ["department"],
-                "description": "IDを指定してdepartmentの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "departmentの削除完了",
-                    }
-                },
-            },
-        },
-        "/expenses": {
-            "get": {
-                tags: ["expense"],
-                "description": "expenseの一覧の取得",
-                "responses": {
-                    "200": {
-                        "description": "expenseの一覧を取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["expense"],
-                "description": "expenseの作成",
-                responses: {
-                    "200": {
-                        "description": "作成されたexpenseが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "name",
-                        "type": "string"
-                    },
-                    {
-                        "name": "year_id",
-                        "in": "query",
-                        "description": "year_id",
-                        "type": "string"
-                    }
-                ],
-            },
-        },
-        "/expenses/details": {
-            "get": {
-                tags: ["expense"],
-                "description": "expenseに紐づくpurchase_itemの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "expenseに紐づくpurchase_itemの一覧を取得",
-                    }
-                }
-            },
-        },
-        "/expenses/{id}": {
-            "get": {
-                tags: ["expense"],
-                "description": "IDで指定されたexpenseの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "expenseの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["expense"],
-                "description": "expenseの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたexpenseが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "name",
-                        "type": "string"
-                    },
-                    {
-                        "name": "year_id",
-                        "in": "query",
-                        "description": "year_id",
-                        "type": "string"
-                    }
-                ],
-            },
-            "delete": {
-                tags: ["expense"],
-                "description": "IDを指定してexpenseの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "expenseの削除完了",
-                    }
-                },
-            },
-        },
-        "/expenses/{id}/details": {
-            "get": {
-                tags: ["expense"],
-                "description": "IDで指定されたexpenseに紐づくpurchase_itemsを取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "IDで指定されたexpenseに紐づくpurchase_itemsを取得",
-                    }
-                }
-            },
-        },
-        "/expenses/details/{year}": {
-            "get": {
-                tags: ["expense"],
-                "description": "年度で指定されたexpenseに紐づく購入申請と購入報告を取得",
-                "parameters": [
-                    {
-                        "name": "year",
-                        "in": "path",
-                        "description": "year",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "yearで指定されたexpenseに紐づく購入申請と購入報告を取得",
-                    }
-                }
-            },
-        },
-				"/expenses/fiscalyear/{year}": {
-					"get": {
-							tags: ["expense"],
-							"description": "年度で指定されたexpensesを取得",
-							"parameters": [
-									{
-											"name": "year",
-											"in": "path",
-											"description": "year",
-											"required": true,
-											"type": "integer"
-									}
-							],
-							"responses": {
-									"200": {
-											"description": "yearで指定されたexpensesを取得",
-									}
-							}
-					},
-			},
-        "/fund_informations": {
-            "get": {
-                tags: ["fund_information"],
-                "description": "fund_informationの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "fund_informationの一覧の取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["fund_information"],
-                "description": "fund_informationの作成",
-                responses: {
-                    "200": {
-                        "description": "create されたfund_informationが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "user_id",
-                        "in": "query",
-                        "description": "user_id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "teacher_id",
-                        "in": "query",
-                        "description": "teacher_id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "price",
-                        "in": "query",
-                        "description": "price",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "remark",
-                        "in": "query",
-                        "description": "remark",
-                        "type": "string"
-                    },
-                    {
-                        "name": "is_first_check",
-                        "in": "query",
-                        "description": "is_first_check",
-                        "type": "boolean"
-                    },
-                    {
-                        "name": "is_last_check",
-                        "in": "query",
-                        "description": "is_last_check",
-                        "type": "boolean"
-                    },
-                    {
-                        "name": "received_at",
-                        "in": "query",
-                        "description": "received_at",
-                        "type": "string"
-                    }
-                ],
-            },
-        },
-        "/fund_informations/details": {
-            "get": {
-                tags: ["fund_information"],
-                "description": "fund_informationに紐づくteacherとuserの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "fund_informationに紐づくteacherとuserの一覧を取得",
-                    }
-                }
-            },
-        },
-        "/fund_informations/{id}": {
-            "get": {
-                tags: ["fund_information"],
-                "description": "IDで指定されたfund_informationの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "fund_informationの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["fund_information"],
-                "description": "fund_informationの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたfund_informationが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "user_id",
-                        "in": "query",
-                        "description": "user_id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "teacher_id",
-                        "in": "query",
-                        "description": "teacher_id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "price",
-                        "in": "query",
-                        "description": "price",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "remark",
-                        "in": "query",
-                        "description": "remark",
-                        "type": "string"
-                    },
-                    {
-                        "name": "is_first_check",
-                        "in": "query",
-                        "description": "is_first_check",
-                        "type": "boolean"
-                    },
-                    {
-                        "name": "is_last_check",
-                        "in": "query",
-                        "description": "is_last_check",
-                        "type": "boolean"
-                    },
-                    {
-                        "name": "received_at",
-                        "in": "query",
-                        "description": "received_at",
-                        "type": "string"
-                    }
-                ],
-            },
-            "delete": {
-                tags: ["fund_information"],
-                "description": "IDを指定してfund_informationの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "fund_informationの削除完了",
-                    }
-                },
-            },
-        },
-        "/fund_informations/{id}/details": {
-            "get": {
-                tags: ["fund_information"],
-                "description": "IDで指定されたfund_informatinに紐づくteacherとuserを取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "fund_informatinに紐づくteacherとuserを取得",
-                    }
-                }
-            },
-        },
-		"/fund_informations/details/{year}": {
-				"get": {
-						tags: ["fund_information"],
-						"description": "年度で指定されたfund_informationsに紐づくデータを取得",
-						"parameters": [
-								{
-										"name": "year",
-										"in": "path",
-										"description": "year",
-										"required": true,
-										"type": "integer"
-								}
-						],
-						"responses": {
-								"200": {
-										"description": "年度で指定されたfund_informationsに紐づくデータを取得",
-								}
-						}
-				},
-		},
-        "/password_reset/{id}": {
-            "post": {
-                tags: ["password_reset"],
-                "description": "password_変更",
-                responses: {
-                    "200": {
-                        "description": "passwordを変更する",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "in": "body",
-                        "name": "passwordResetData",
-                        "schema":{
-                            "$ref": "#/definitions/passwordResetData"
-                        },
-                    },
-                ],
-            },
-        },
-        "/password_reset/request": {
-            "post": {
-                tags: ["password_reset"],
-                "description": "password_reset_token発行リクエスト",
-                responses: {
-                    "200": {
-                        "description": "password_reset_tokenをメールアドレスに送信する",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "email",
-                        "in": "query",
-                        "description": "email",
-                        "type": "string"
-                    },
-                ],
-            },
-        },
-        "/password_reset/{id}/valid": {
-            "post": {
-                tags: ["password_reset"],
-                "description": "トークンの称号",
-                responses: {
-                    "200": {
-                        "description": "password_reset_tokenが正しい確認する",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "token",
-                        "in": "query",
-                        "description": "token",
-                        "type": "string"
-                    },
-                ],
-            },
-        },
-        "/purchaseitems": {
-            "get": {
-                tags: ["purchase_item"],
-                "description": "purchase_itemの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "purchase_itemの一覧の取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["purchase_item"],
-                "description": "purchase_itemの作成",
-                responses: {
-                    "200": {
-                        "description": "createされたpurchase_itemが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "item",
-                        "in": "query",
-                        "description": "item",
-                        "type": "string"
-                    },
-                    {
-                        "name": "price",
-                        "in": "query",
-                        "description": "price",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "quantity",
-                        "in": "query",
-                        "description": "quantity",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "detail",
-                        "in": "query",
-                        "description": "detail",
-                        "type": "string"
-                    },
-                    {
-                        "name": "url",
-                        "in": "query",
-                        "description": "url",
-                        "type": "string"
-                    },
-                    {
-                        "name": "purchase_order_id",
-                        "in": "query",
-                        "description": "purchase_order_id",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "finance_check",
-                        "in": "query",
-                        "description": "finance_check",
-                        "type": "boolean"
-                    }
-                ],
-            },
-        },
-        "/purchaseitems/details": {
-            "get": {
-                tags: ["purchase_item"],
-                "description": "purchase_itemに紐づくuserとpurchase_orderの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "purchase_itemに紐づくuserとpurchase_orderの一覧を取得",
-                    }
-                }
-            },
-        },
-        "/purchaseitems/{id}": {
-            "get": {
-                tags: ["purchase_item"],
-                "description": "IDで指定されたpurchase_itemの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "purchase_itemの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["purchase_item"],
-                "description": "purchase_itemの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたpurchase_itemが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "item",
-                        "in": "query",
-                        "description": "item",
-                        "type": "string"
-                    },
-                    {
-                        "name": "price",
-                        "in": "query",
-                        "description": "price",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "quantity",
-                        "in": "query",
-                        "description": "quantity",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "detail",
-                        "in": "query",
-                        "description": "detail",
-                        "type": "string"
-                    },
-                    {
-                        "name": "url",
-                        "in": "query",
-                        "description": "url",
-                        "type": "string"
-                    },
-                    {
-                        "name": "purchase_order_id",
-                        "in": "query",
-                        "description": "purchase_order_id",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "finance_check",
-                        "in": "query",
-                        "description": "finance_check",
-                        "type": "boolean"
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["purchase_item"],
-                "description": "IDを指定してpurchase_itemの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "purchase_itemの削除完了",
-                    }
-                },
-            },
-        },
-        "/purchaseitems/{id}/details": {
-            "get": {
-                tags: ["purchase_item"],
-                "description": "IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得",
-                    }
-                }
-            },
-        },
-        "/purchaseorders": {
-            "get": {
-                tags: ["purchase_order"],
-                "description": "purchase_orderの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "purchase_orderの一覧の取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["purchase_order"],
-                "description": "purchase_orderの作成",
-                responses: {
-                    "200": {
-                        "description": "createされたpurchase_orderが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "deadline",
-                        "in": "query",
-                        "description": "deadline",
-                        "type": "string"
-                    },
-                    {
-                        "name": "user_id",
-                        "in": "query",
-                        "description": "user_id",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "expense_id",
-                        "in": "query",
-                        "description": "expense_id",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "finance_check",
-                        "in": "query",
-                        "description": "finance_check",
-                        "type": "boolean"
-                    }
-                ],
-            },
-        },
-        "/purchaseorders/details": {
-            "get": {
-                tags: ["purchase_order"],
-                "description": "purchaseorderに紐づくuserとitemの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "purchase_orderに紐づくuserとpurchase_itemの一覧を取得",
-                    }
-                }
-            },
-        },
-        "/purchaseorders/{id}": {
-            "get": {
-                tags: ["purchase_order"],
-                "description": "IDで指定されたpurchase_orderの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "purchase_orderの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["purchase_order"],
-                "description": "purchase_orderの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたpurchase_orderが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "deadline",
-                        "in": "query",
-                        "description": "deadline",
-                        "type": "string"
-                    },
-                    {
-                        "name": "user_id",
-                        "in": "query",
-                        "description": "user_id",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "expense_id",
-                        "in": "query",
-                        "description": "expense_id",
-                        "type": "integer"
-                    },
-                    {
-                        "name": "finance_check",
-                        "in": "query",
-                        "description": "finance_check",
-                        "type": "boolean"
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["purchase_order"],
-                "description": "IDを指定してpurchase_orderの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "purchase_orderの削除完了",
-                    }
-                },
-            },
-        },
-        "/purchaseorders/{id}/details": {
-            "get": {
-                tags: ["purchase_order"],
-                "description": "IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得",
-                    }
-                }
-            },
-        },
-        "/purchaseorders/details/{year}": {
-            "get": {
-                tags: ["purchase_order"],
-                "description": "年度で指定されたpurchase_orderに紐づくuserとpurchase_itemを取得",
-                "parameters": [
-                    {
-                        "name": "year",
-                        "in": "path",
-                        "description": "year",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得",
-                    }
-                }
-            },
-        },
-        "/purchaseorders/send/{id}": {
-            "post": {
-                tags: ["purchase_order"],
-                "description": "IDで指定されたpurchase_orderのslackへメッセージ送信",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "in": "body",
-                        "name": "purchase_items",
-                        "type": "array",
-                        "items":{
-                            "$ref": "#/definitions/purchaseItem"
-                        },
-                    },
-                ]
-            }
-        },
-        "/purchaseorders/details/unregistered/{year}": {
-            "get": {
-                tags: ["purchase_order"],
-                "description": "年度で指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得",
-                "parameters": [
-                    {
-                        "name": "year",
-                        "in": "path",
-                        "description": "year",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "IDで指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得",
-                    }
-                }
-            },
-        },
-        "/purchasereports": {
-            "get": {
-                tags: ["purchase_report"],
-                "description": "purchase_reportの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "purchase_reportの一覧の取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["purchase_report"],
-                "description": "purchase_reportの作成",
-                "parameters": [
-                    {
-                        "in": "body",
-                        "name": "purchaseReport",
-                        "schema":{
-                            "$ref": "#/definitions/purchaseReport"
-                        },
-                    },
-                ],
-                responses: {
-                    "200": {
-                        "description": "作成されたpurchaseReportが返ってくる",
-                    },
-                },
-            },
-        },
-        "/purchasereports/details": {
-            "get": {
-                tags: ["purchase_report"],
-                "description": "purchasereportsに紐づくデータの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "purchase_reportに紐づくデータの一覧を取得",
-                    }
-                }
-            },
-        },
-        "/purchasereports/{id}": {
-            "get": {
-                tags: ["purchase_report"],
-                "description": "IDで指定されたpurchase_reportの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "purchase_reportの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["purchase_report"],
-                "description": "purchase_reportの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたpurchase_reportが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "in": "body",
-                        "name": "purchaseReport",
-                        "schema":{
-                            "$ref": "#/definitions/purchaseReport"
-                        },
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["purchase_report"],
-                "description": "IDを指定してpurchase_reportの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "purchase_reportの削除完了",
-                    }
-                },
-            },
-        },
-        "/purchasereports/{id}/details": {
-            "get": {
-                tags: ["purchase_report"],
-                "description": "IDで指定されたpurchase_reportに紐づくデータを取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "IDで指定されたpurchase_reportに紐づくデータを取得",
-                    }
-                }
-            },
-        },
-        "/purchasereports/details/{year}": {
-            "get": {
-                tags: ["purchase_report"],
-                "description": "年度で指定されたpurchase_reportsに紐づくデータを取得",
-                "parameters": [
-                    {
-                        "name": "year",
-                        "in": "path",
-                        "description": "year",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "年度で指定されたpurchase_reportsに紐づくデータを取得",
-                    }
-                }
-            },
-        },
-        "/receipts": {
-            "get": {
-                tags: ["receipt"],
-                "description": "receiptの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "receiptの一覧の取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["receipt"],
-                "description": "receiptの作成",
-                responses: {
-                    "200": {
-                        "description": "create されたreceiptが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "in": "body",
-                        "name": "receipt",
-                        "schema":{
-                            "$ref": "#/definitions/receipt"
-                        },
-                    },
-                ],
-            },
-        },
-        "/receipts/{id}": {
-            "get": {
-                tags: ["receipt"],
-                "description": "IDで指定されたreceiptの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "receiptの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["receipt"],
-                "description": "receiptの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたreceiptが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "in": "body",
-                        "name": "receipt",
-                        "schema":{
-                            "$ref": "#/definitions/receipt"
-                        },
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["receipt"],
-                "description": "IDを指定してreceiptの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "receiptの削除完了",
-                    }
-                },
-            },
-        },
-        "/receipts/reports/{id}": {
-            "get": {
-                tags: ["receipt"],
-                "description": "purchaseReportIDで指定されたreceiptの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "reportsIDを指定してreceiptの取得",
-                    }
-                }
-            },
-        },
-        "/sources": {
-            "get": {
-                tags: ["source"],
-                "description": "sourceの一覧の取得",
-                "responses": {
-                    "200": {
-                        "description": "sourceの一覧を取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["source"],
-                "description": "sourceの作成",
-                responses: {
-                    "200": {
-                        "description": "作成されたsourceが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "name",
-                        "required": true,
-                        "type": "string"
-                    }
-                ],
-            },
-        },
-        "/sources/{id}": {
-            "get": {
-                tags: ["source"],
-                "description": "IDで指定されたsourceの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "sourceの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["source"],
-                "description": "sourceの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたsourceが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "name",
-                        "required": true,
-                        "type": "string"
-                    }
-                ],
-            },
-            "delete": {
-                tags: ["source"],
-                "description": "IDを指定してsourceの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "sourceの削除完了",
-                    }
-                },
-            },
-        },
-        "/sponsors": {
-            "get": {
-                tags: ["sponsor"],
-                "description": "sponsorの一覧の取得",
-                "responses": {
-                    "200": {
-                        "description": "sponsorsの一覧を取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["sponsor"],
-                "description": "sponsorの作成",
-                "parameters": [
-                    {
-                        "in": "body",
-                        "name": "sponsor",
-                        "schema":{
-                            "$ref": "#/definitions/sponsor"
-                        },
-                    },
-                ],
-                responses: {
-                    "200": {
-                        "description": "作成されたsponsorが返ってくる",
-                    },
-                },
-            },
-        },
-        "/sponsors/{id}": {
-            "get": {
-                tags: ["sponsor"],
-                "description": "IDで指定されたsponsorの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "sponsorの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["sponsor"],
-                "description": "sponsorの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたsponsorが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "in": "body",
-                        "name": "sponsor",
-                        "schema":{
-                            "$ref": "#/definitions/sponsor"
-                        },
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["sponsor"],
-                "description": "IDを指定してsponsorの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "sponsorの削除完了",
-                    }
-                },
-            },
-        },
-		"/sponsors/periods/{year}": {
-			"get": {
-					tags: ["sponsor"],
-					"description": "年度で指定されたsponsorを取得",
-					"parameters": [
-							{
-									"name": "year",
-									"in": "path",
-									"description": "year",
-									"required": true,
-									"type": "integer"
-							}
-					],
-					"responses": {
-							"200": {
-									"description": "sponsorの取得完了",
-							}
-					}
-			},
-        },
-        "/sponsorstyles": {
-            "get": {
-                tags: ["sponsorstyle"],
-                "description": "sponsorstyleの一覧の取得",
-                "responses": {
-                    "200": {
-                        "description": "sponsorstyleの一覧を取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["sponsorstyle"],
-                "description": "sponsorstyleの作成",
-                "parameters": [
-                    {
-                        "in": "body",
-                        "name": "sponsorStyle",
-                        "schema":{
-                            "$ref": "#/definitions/sponsorStyle"
-                        },
-                    },
-                ],
-                responses: {
-                    "200": {
-                        "description": "作成されたsponsorstyleが返ってくる",
-                    },
-                },
-            },
-        },
-        "/sponsorstyles/{id}": {
-            "get": {
-                tags: ["sponsorstyle"],
-                "description": "IDで指定されたsponsorstyleの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "sponsorstyleの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["sponsorstyle"],
-                "description": "sponsorstyleの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたsponsorstyleが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "in": "body",
-                        "name": "sponsorStyle",
-                        "schema":{
-                            "$ref": "#/definitions/sponsorStyle"
-                        },
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["sponsorstyle"],
-                "description": "IDを指定してsponsorstyleの論理削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "sponsorstyleの論理削除完了",
-                    }
-                },
-            },
-        },
-        "/teachers": {
-            "get": {
-                tags: ["teacher"],
-                "description": "teacherの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "teacherの一覧を取得",
-                        "schema": {
-                            "type": "array",
-                        }
-                    }
-                }
-            },
-            "post": {
-                tags: ["teacher"],
-                "description": "teacherの作成",
-                responses: {
-                    "200": {
-                        "description": "createされたteacherが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "名前",
-                        "type": "string",
-                        "required": true
-                    },
-                    {
-                        "name": "position",
-                        "in": "query",
-                        "description": "役職",
-                        "type": "string",
-                        "required": true
-                    },
-                    {
-                        "name": "department_id",
-                        "in": "query",
-                        "description": "学科ID",
-                        "type": "integer",
-                    },
-                    {
-                        "name": "room",
-                        "in": "query",
-                        "description": "部屋番号",
-                        "type": "string",
-                    },
-                    {
-                        "name": "is_black",
-                        "in": "query",
-                        "description": "ブラックリストの真偽",
-                        "type": "boolean",
-                    },
-                    {
-                        "name": "remark",
-                        "in": "query",
-                        "description": "備考",
-                        "type": "string",
-                    },
-                ],
-            },
-        },
-		"/teachers/delete": {
-			"delete": {
-					tags: ["teacher"],
-					"description": "teacherの複数削除",
-					responses: {
-							"200": {
-									"description": "複数のteacherをidで削除できる",
-							}
-					},
-					"parameters": [
-							{
-									"in": "body",
-									"name": "destroyTeacherIDs",
-									"schema":{
-											"$ref": "#/definitions/destroyTeacherIDs"
-									},
-							},
-					],
-			},
-		},
-        "/teachers/{id}": {
-            "get": {
-                tags: ["teacher"],
-                "description": "IDで指定されたteacherの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "teacherの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["teacher"],
-                "description": "teacherの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたteacherが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "Teacherのid",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "教員の名前",
-                        "type": "string",
-                        "required": true
-                    },
-                    {
-                        "name": "position",
-                        "in": "query",
-                        "description": "教員の役職",
-                        "type": "string",
-                        "required": true
-                    },
-                    {
-                        "name": "department_id",
-                        "in": "query",
-                        "description": "学科ID",
-                        "type": "integer",
-                    },
-                    {
-                        "name": "room",
-                        "in": "query",
-                        "description": "部屋番号",
-                        "type": "string",
-                    },
-                    {
-                        "name": "is_black",
-                        "in": "query",
-                        "description": "ブラックリストに入っているか",
-                        "type": "boolean",
-                    },
-                    {
-                        "name": "remark",
-                        "in": "query",
-                        "description": "備考欄",
-                        "type": "string",
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["teacher"],
-                "description": "IDを指定してteacherの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "teacherの削除完了",
-                    }
-                },
-            },
-        },
-				"/teachers/fundRegistered/{year}": {
-            "get": {
-                tags: ["teacher"],
-                "description": "募金登録済みのteacherのidを取得",
-                "parameters": [
-                    {
-                        "name": "year",
-                        "in": "path",
-                        "description": "year",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "募金登録済みのteacherのidを取得",
-                    }
-                }
-            },
-				},
-        "/users": {
-            "get": {
-                tags: ["user"],
-                "description": "userの一覧を取得",
-                "responses": {
-                    "200": {
-                        "description": "userの一覧を取得",
-                        "schema": {
-                            "type": "array",
-                        }
-                    }
-                }
-            },
-            "post": {
-                tags: ["user"],
-                "description": "userの作成",
-                responses: {
-                    "200": {
-                        "description": "createされたuserが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "name",
-                        "type": "string",
-                        "required": true
-                    },
-                    {
-                        "name": "bureau_id",
-                        "in": "query",
-                        "description": "bureau_d",
-                        "type": "integer",
-                        "required": true
-                    },
-                    {
-                        "name": "role_id",
-                        "in": "query",
-                        "description": "role_id",
-                        "type": "integer",
-                        "required": true,
-                    },
-                ],
-            },
-        },
-        "/users/delete": {
-            "delete": {
-                tags: ["user"],
-                "description": "userの複数作成",
-                responses: {
-                    "200": {
-                        "description": "複数のuserをidで削除できる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "in": "body",
-                        "name": "destroyUserIDs",
-                        "schema":{
-                            "$ref": "#/definitions/destroyUserIDs"
-                        },
-                    },
-                ],
-            },
-        },
-        "/users/{id}": {
-            "get": {
-                tags: ["user"],
-                "description": "IDで指定されたuserの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "userの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["user"],
-                "description": "userの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたuserが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "userのid",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "name",
-                        "in": "query",
-                        "description": "name",
-                        "type": "string",
-                        "required": true
-                    },
-                    {
-                        "name": "bureau_id",
-                        "in": "query",
-                        "description": "bureau_d",
-                        "type": "integer",
-                        "required": true
-                    },
-                    {
-                        "name": "role_id",
-                        "in": "query",
-                        "description": "role_id",
-                        "type": "integer",
-                        "required": true,
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["user"],
-                "description": "IDを指定してuserの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "userの削除完了",
-                    }
-                },
-            },
-        },
-        "/years": {
-            "get": {
-                tags: ["year"],
-                "description": "yearの一覧の取得",
-                "responses": {
-                    "200": {
-                        "description": "yearの一覧を取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["year"],
-                "description": "yearの作成",
-                responses: {
-                    "200": {
-                        "description": "作成されたyearが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "year",
-                        "in": "query",
-                        "description": "year",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-            },
-        },
-        "/years/{id}": {
-            "get": {
-                tags: ["year"],
-                "description": "IDで指定されたyearの取得",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                "responses": {
-                    "200": {
-                        "description": "yearの取得",
-                    }
-                }
-            },
-            "put": {
-                tags: ["year"],
-                "description": "yearの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたyearが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "name": "year",
-                        "in": "query",
-                        "description": "year",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-            },
-            "delete": {
-                tags: ["year"],
-                "description": "IDを指定してyearの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "yearの削除完了",
-                    },
-                },
-            },
-        },
-        "/years/periods": {
-            "get": {
-                tags: ["year_periods"],
-                "description": "年度一覧の取得",
-                "responses": {
-                    "200": {
-                        "description": "year_periodsの一覧を取得",
-                    }
-                }
-            },
-            "post": {
-                tags: ["year_periods"],
-                "description": "year_periodsの作成",
-                responses: {
-                    "200": {
-                        "description": "作成されたyear_periodsが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "in": "body",
-                        "name": "year_periods",
-                        "schema":{
-                            "$ref": "#/definitions/year_periods"
-                        },
-                    },
-                ],
-            },
-        },
-        "/years/periods/{id}": {
-            "put": {
-                tags: ["year_periods"],
-                "description": "year_periodsの更新",
-                responses: {
-                    "200": {
-                        "description": "更新されたyear_periodsが返ってくる",
-                    }
-                },
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    },
-                    {
-                        "in": "body",
-                        "name": "year_periods",
-                        "schema":{
-                            "$ref": "#/definitions/year_periods"
-                        },
-                    },
-                ],
-            },
-            "delete": {
-                tags: ["year_periods"],
-                "description": "IDを指定してyear_periodsの削除",
-                "parameters": [
-                    {
-                        "name": "id",
-                        "in": "path",
-                        "description": "id",
-                        "required": true,
-                        "type": "integer"
-                    }
-                ],
-                responses: {
-                    "200": {
-                        "description": "year_periodsの削除完了",
-                    },
-                },
-            },
-        },
-    },
-    "definitions":{
-        "activity":{
-            "properties":{
-                "sponsorID":{
-                    "type": "int",
-                    "example": 1,
-                },
-                "userID":{
-                    "type": "int",
-                    "example": 1,
-                },
-                "isDone":{
-                    "type": "boolean",
-                    "example": false,
-                },
-                "feature":{
-                    "type": "string",
-                    "example": "なし",
-                },
-                "expense":{
-                    "type": "int",
-                    "example": 0,
-                },
-                "remark":{
-                    "type": "string",
-                    "example": "なし",
-                },
-                "design":{
-                    "type": "int",
-                    "example": 0,
-                },
-                "url":{
-                    "type": "string",
-                    "example": "",
-                },
-            },
-            "required":{
-                    "sponsorID",
-                    "userID",
-                    "isDone",
-                    "feature",
-                    "expense",
-                    "remark",
-            },
-        },
-        "activity_information":{
-            "properties":{
-                "activityID":{
-                    "type": "int",
-                    "example": 1,
-
-                },
-                "bucketName":{
-                    "type": "string",
-                    "example": "なし",
-                },
-                "fileName":{
-                    "type": "string",
-                    "example": "なし",
-                },
-                "fileType":{
-                    "type": "string",
-                    "example": "なし",
-
-                },
-                "designProgress":{
-                    "type": "int",
-                    "example": 1,
-                },
-                "fileInformation":{
-                    "type": "string",
-                    "example": "",
-                },
-            },
-        },
-        "activity_style":{
-            "properties":{
-                "activityID":{
-                    "type": "int",
-                    "example": 1,
-
-                },
-                "sponsorStyleID":{
-                    "type": "int",
-                    "example": 1,
-                },
-            },
-            "required":{
-                    "activityID",
-                    "sponsorStyleID",
-            },
-        },
-        "sponsorStyle":{
-            "properties":{
-                "style":{
-                    "type": "string",
-                    "example": "1分の1",
-
-                },
-                "feature":{
-                    "type": "string",
-                    "example": "カラー",
-                },
-                "price":{
-                    "type": "int",
-                    "example": 30000,
-                },
-            },
-            "required":{
-                    "style",
-                    "feature",
-                    "price",
-            },
-        },
-        "sponsor":{
-            "properties":{
-                "name":{
-                    "type": "string",
-                    "example": "企業1",
-
-                },
-                "tel":{
-                    "type": "string",
-                    "example": "09000000000",
-                },
-                "email":{
-                    "type": "string",
-                    "example": "test@example.com",
-                },
-                "address":{
-                    "type": "string",
-                    "example": "○○1-1",
-                },
-                "representative":{
-                    "type": "string",
-                    "example": "長岡太郎(社長)",
-                },
-            },
-            "required":{
-                    "name",
-                    "tel",
-                    "email",
-                    "address",
-                    "representative"
-            },
-        },
-        "passwordResetData":{
-            "properties":{
-                "token":{
-                    "type": "string",
-                    "example": "",
-                },
-                "password":{
-                    "type": "string",
-                    "example": "",
-                },
-                "confirmPassword":{
-                    "type": "string",
-                    "example": "",
-                },
-            },
-            "required":{
-                    "year",
-                    "startedAt",
-                    "endedAt"
-            },
-        },
-        "purchaseReport":{
-            "properties":{
-                "userID":{
-                    "type": "int",
-                    "example": 1,
-
-                },
-                "discount":{
-                    "type": "int",
-                    "example": 0,
-                },
-                "addition":{
-                    "type": "int",
-                    "example": 0,
-                },
-                "financeCheck":{
-                    "type": "boolean",
-                    "example": false,
-                },
-                "purchaseOrderID":{
-                    "type": "int",
-                    "example": 1,
-                },
-                "remark":{
-                    "type": "string",
-                    "example": "",
-                },
-                "buyer":{
-                    "type": "string",
-                    "example": "",
-                },
-            },
-            "required":{
-                    "userID",
-                    "discount",
-                    "addition",
-                    "financeCheck",
-                    "purchaseOrderID"
-            },
-        },
-        "purchaseItem":{
-            "properties":{
-                "item":{
-                    "type": "string",
-                    "example": "name",
-                },
-                "price":{
-                    "type": "int",
-                    "example": 0,
-                },
-                "quantity":{
-                    "type": "int",
-                    "example": 0,
-                },
-                "detail":{
-                    "type": "string",
-                    "example": "",
-                },
-                "url":{
-                    "type": "string",
-                    "example": "",
-                },
-                "purchaseOrderID":{
-                    "type": "int",
-                    "example": 1,
-                },
-                "financeCheck":{
-                    "type": "boolean",
-                    "example": false,
-                },
-            },
-            "required":{
-                    "item",
-                    "price",
-                    "quantity",
-                    "financeCheck",
-                    "purchaseOrderID"
-            },
-        },
-		"destroyTeacherIDs":{
-			"properties":{
-					"deleteIDs":{
-							"type": "array",
-							"items": {
-									"type": "number"
-							},
-							example: []
-					},
-			},
-			"required":{
-							"deleteIDs",
-			},
-		},
-		"destroyUserIDs":{
-			"properties":{
-					"deleteIDs":{
-							"type": "array",
-							"items": {
-									"type": "number"
-							},
-							example: []
-					},
-			},
-			"required":{
-							"deleteIDs",
-			},
-		},
-        "receipt":{
-            "properties":{
-                "purchaseReportID":{
-                    "type": "int",
-                    "example": 1,
-                },
-                "bucketName":{
-                    "type": "string",
-                    "example": "",
-                },
-                "fileName":{
-                    "type": "string",
-                    "example": "",
-                },
-                "fileType":{
-                    "type": "string",
-                    "example": "",
-                },
-                "remark":{
-                    "type": "string",
-                    "example": "",
-                },
-            },
-            "required":{
-                    "purchaseReportID",
-            },
-        },
-        "year_periods":{
-            "properties":{
-                "year":{
-                    "type": "int",
-                    "example": 2024,
-
-                },
-                "startedAt":{
-                    "type": "string",
-                    "example": "0000-00-00T00:00:00Z",
-                },
-                "endedAt":{
-                    "type": "string",
-                    "example": "0000-00-00T00:00:00Z",
-                },
-            },
-            "required":{
-                    "year",
-                    "startedAt",
-                    "endedAt"
-            },
-        },
-    },
-}`
-
-// SwaggerInfo holds exported Swagger Info so clients can modify it
-var SwaggerInfo = &swag.Spec{
-	Version:          "2.0.0",
-	Host:             "localhost:1323",
-	BasePath:         "/",
-	Schemes:          []string{"http"},
-	Title:            "NUTFes FinanSu API",
-	Description:      "FinanSu APIドキュメント",
-	InfoInstanceName: "swagger",
-	SwaggerTemplate:  docTemplate,
-}
-
-func init() {
-	swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
-}
diff --git a/api/docs/swagger.json b/api/docs/swagger.json
deleted file mode 100644
index 46d747ab7..000000000
--- a/api/docs/swagger.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "swagger": "2.0",
-    "info": {
-        "contact": {}
-    },
-    "paths": {}
-}
diff --git a/api/docs/swagger.yaml b/api/docs/swagger.yaml
deleted file mode 100644
index b64379cad..000000000
--- a/api/docs/swagger.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-info:
-  contact: {}
-paths: {}
-swagger: "2.0"

From 426e341422e86dc7e3506f38f1e7e86d5e4dd8bd Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 23 Dec 2024 17:00:27 +0000
Subject: [PATCH 18/30] =?UTF-8?q?[del]=20api/internals/generated=E3=81=AE?=
 =?UTF-8?q?=E5=89=8A=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/internals/generated/config.yaml    |    8 -
 api/internals/generated/openapi.yaml   | 2432 ------------------
 api/internals/generated/openapi_gen.go | 3188 ------------------------
 3 files changed, 5628 deletions(-)
 delete mode 100644 api/internals/generated/config.yaml
 delete mode 100644 api/internals/generated/openapi.yaml
 delete mode 100644 api/internals/generated/openapi_gen.go

diff --git a/api/internals/generated/config.yaml b/api/internals/generated/config.yaml
deleted file mode 100644
index 69cbe00c5..000000000
--- a/api/internals/generated/config.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-# yaml-language-server: ...
-# go:generate oapi-codegen --config=config.yaml ../../api.yaml
-
-package: generated
-generate:
-  - server
-  - types
-output: internals/generated/openapi_gen.go
diff --git a/api/internals/generated/openapi.yaml b/api/internals/generated/openapi.yaml
deleted file mode 100644
index 45545f0de..000000000
--- a/api/internals/generated/openapi.yaml
+++ /dev/null
@@ -1,2432 +0,0 @@
-openapi: 3.0.1
-info:
-  title: NUTFes FinanSu API
-  description: FinanSu APIドキュメント
-  contact: {}
-  version: 2.0.0
-servers:
-  - url: http://localhost:1323/
-paths:
-  /activities:
-    get:
-      tags:
-        - activity
-      description: activitiesの一覧を取得
-      responses:
-        "200":
-          description: activitiesの一覧の取得
-          content: {}
-    post:
-      tags:
-        - activity
-      description: activitiesの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity"
-        required: false
-      responses:
-        "200":
-          description: create されたactivityが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity
-  /activities/details:
-    get:
-      tags:
-        - activity
-      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
-      responses:
-        "200":
-          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
-          content: {}
-  /activities/details/{year}:
-    get:
-      tags:
-        - activity
-      description: "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得"
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得"
-          content: {}
-  /activities/filtered_details:
-    get:
-      tags:
-        - activity
-      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
-      requestBody:
-        description: Filter by keyword
-        content:
-          "*/*":
-            schema:
-              type: string
-        required: false
-      responses:
-        "200":
-          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
-          content: {}
-      x-codegen-request-body-name: keyword
-  /activities/filtered_details/{year}:
-    get:
-      tags:
-        - activity
-      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
-      parameters:
-        - name: year
-          in: path
-          description: Filter by year.
-          required: true
-          schema:
-            type: string
-      requestBody:
-        description: Filter by keyword
-        content:
-          "*/*":
-            schema:
-              type: string
-        required: false
-      responses:
-        "200":
-          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
-          content: {}
-      x-codegen-request-body-name: keyword
-  /activities/{id}:
-    get:
-      tags:
-        - activity
-      description: IDで指定されたactivitiesの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activitiesの取得
-          content: {}
-    put:
-      tags:
-        - activity
-      description: activitiesの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity"
-        required: false
-      responses:
-        "200":
-          description: 更新されたactivitiesが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity
-    delete:
-      tags:
-        - activity
-      description: IDを指定してactivitiesの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activitiesの削除完了
-          content: {}
-  /activity_informations:
-    get:
-      tags:
-        - activity_information
-      description: activity_informationの一覧を取得
-      responses:
-        "200":
-          description: activity_informationの一覧の取得
-          content: {}
-    post:
-      tags:
-        - activity_information
-      description: activity_informationの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity_information"
-        required: false
-      responses:
-        "200":
-          description: create されたactivity_informationが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity_information
-  /activity_informations/{id}:
-    get:
-      tags:
-        - activity_information
-      description: IDで指定されたactivity_informationsの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activity_informationの取得
-          content: {}
-    put:
-      tags:
-        - activity_information
-      description: activity_informationの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity_information"
-        required: false
-      responses:
-        "200":
-          description: 更新されたactivity_informationが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity_information
-    delete:
-      tags:
-        - activity_information
-      description: IDを指定してactivity_informationの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activity_informationの削除完了
-          content: {}
-  /activity_styles:
-    get:
-      tags:
-        - activity_style
-      description: activity_styleの一覧を取得
-      responses:
-        "200":
-          description: activity_styleの一覧の取得
-          content: {}
-    post:
-      tags:
-        - activity_style
-      description: activity_styleの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity_style"
-        required: false
-      responses:
-        "200":
-          description: createされたactivity_styleが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity_style
-  /activity_styles/{id}:
-    get:
-      tags:
-        - activity_style
-      description: IDで指定されたactivity_styleの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activity_styleの取得
-          content: {}
-    put:
-      tags:
-        - activity_style
-      description: activity_styleの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity_style"
-        required: false
-      responses:
-        "200":
-          description: 更新されたactivity_styleが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity_style
-    delete:
-      tags:
-        - activity_style
-      description: IDを指定してactivity_styleの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activity_styleの削除完了
-          content: {}
-  /budgets:
-    get:
-      tags:
-        - budget
-      description: budgetの一覧を取得
-      responses:
-        "200":
-          description: budgetの一覧の取得
-          content: {}
-    post:
-      tags:
-        - budget
-      description: budgetの作成
-      parameters:
-        - name: price
-          in: query
-          description: price
-          required: true
-          schema:
-            type: integer
-        - name: year_id
-          in: query
-          description: year_id
-          schema:
-            type: integer
-        - name: source_id
-          in: query
-          description: source_id
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: create されたbudgetが返ってくる
-          content: {}
-  /budgets/details:
-    get:
-      tags:
-        - budget
-      description: budgetに紐づくyearとsourceの一覧を取得
-      responses:
-        "200":
-          description: budgetに紐づくyearとsourceの一覧を取得
-          content: {}
-  /budgets/details/{year}:
-    get:
-      tags:
-        - budget
-      description: 年度で指定されたbudgetsに紐づく年度とソースを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 年度で指定されたbudgetsに紐づく年度とソースを取得
-          content: {}
-  /budgets/{id}:
-    get:
-      tags:
-        - budget
-      description: IDで指定されたbudgetの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: budgetの取得
-          content: {}
-    put:
-      tags:
-        - budget
-      description: budgetの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: price
-          in: query
-          description: price
-          schema:
-            type: integer
-        - name: year_id
-          in: query
-          description: year_id
-          schema:
-            type: integer
-        - name: source_id
-          in: query
-          description: source_id
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 更新されたbudgetが返ってくる
-          content: {}
-    delete:
-      tags:
-        - budget
-      description: IDを指定してbudgetの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: budgetの削除完了
-          content: {}
-  /budgets/{id}/details:
-    get:
-      tags:
-        - budget
-      description: IDで指定されたbudgetに紐づくyearとsourceを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: budgetに紐づくyearとsourceを取得
-          content: {}
-  /bureaus:
-    get:
-      tags:
-        - bureau
-      description: bureauの一覧を取得
-      responses:
-        "200":
-          description: bureauの一覧の取得
-          content: {}
-    post:
-      tags:
-        - bureau
-      description: bureauの作成
-      parameters:
-        - name: name
-          in: query
-          description: name
-          required: true
-          schema:
-            type: string
-      responses:
-        "200":
-          description: create されたbureauが返ってくる
-          content: {}
-  /bureaus/{id}:
-    get:
-      tags:
-        - bureau
-      description: IDで指定されたbureauの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: bureauの取得
-          content: {}
-    put:
-      tags:
-        - bureau
-      description: bureauの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: name
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたbureauが返ってくる
-          content: {}
-    delete:
-      tags:
-        - bureau
-      description: IDを指定してbureauの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: bureauの削除完了
-          content: {}
-  /departments:
-    get:
-      tags:
-        - department
-      description: departmentの一覧の取得
-      responses:
-        "200":
-          description: departmentの一覧を取得
-          content: {}
-    post:
-      tags:
-        - department
-      description: departmentの作成
-      parameters:
-        - name: name
-          in: query
-          description: name
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 作成されたdepartmentが返ってくる
-          content: {}
-  /departments/{id}:
-    get:
-      tags:
-        - department
-      description: IDで指定されたdepartmentの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: departmentの取得
-          content: {}
-    put:
-      tags:
-        - department
-      description: departmentの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: name
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたdepartmentが返ってくる
-          content: {}
-    delete:
-      tags:
-        - department
-      description: IDを指定してdepartmentの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: departmentの削除完了
-          content: {}
-  /expenses:
-    get:
-      tags:
-        - expense
-      description: expenseの一覧の取得
-      responses:
-        "200":
-          description: expenseの一覧を取得
-          content: {}
-    post:
-      tags:
-        - expense
-      description: expenseの作成
-      parameters:
-        - name: name
-          in: query
-          description: name
-          schema:
-            type: string
-        - name: year_id
-          in: query
-          description: year_id
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 作成されたexpenseが返ってくる
-          content: {}
-  /expenses/details:
-    get:
-      tags:
-        - expense
-      description: expenseに紐づくpurchase_itemの一覧を取得
-      responses:
-        "200":
-          description: expenseに紐づくpurchase_itemの一覧を取得
-          content: {}
-  /expenses/{id}:
-    get:
-      tags:
-        - expense
-      description: IDで指定されたexpenseの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: expenseの取得
-          content: {}
-    put:
-      tags:
-        - expense
-      description: expenseの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: name
-          schema:
-            type: string
-        - name: year_id
-          in: query
-          description: year_id
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたexpenseが返ってくる
-          content: {}
-    delete:
-      tags:
-        - expense
-      description: IDを指定してexpenseの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: expenseの削除完了
-          content: {}
-  /expenses/{id}/details:
-    get:
-      tags:
-        - expense
-      description: IDで指定されたexpenseに紐づくpurchase_itemsを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたexpenseに紐づくpurchase_itemsを取得
-          content: {}
-  /expenses/details/{year}:
-    get:
-      tags:
-        - expense
-      description: 年度で指定されたexpenseに紐づく購入申請と購入報告を取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: yearで指定されたexpenseに紐づく購入申請と購入報告を取得
-          content: {}
-  /expenses/fiscalyear/{year}:
-    get:
-      tags:
-        - expense
-      description: 年度で指定されたexpensesを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: yearで指定されたexpensesを取得
-          content: {}
-  /fund_informations:
-    get:
-      tags:
-        - fund_information
-      description: fund_informationの一覧を取得
-      responses:
-        "200":
-          description: fund_informationの一覧の取得
-          content: {}
-    post:
-      tags:
-        - fund_information
-      description: fund_informationの作成
-      parameters:
-        - name: user_id
-          in: query
-          description: user_id
-          required: true
-          schema:
-            type: integer
-        - name: teacher_id
-          in: query
-          description: teacher_id
-          required: true
-          schema:
-            type: integer
-        - name: price
-          in: query
-          description: price
-          required: true
-          schema:
-            type: integer
-        - name: remark
-          in: query
-          description: remark
-          schema:
-            type: string
-        - name: is_first_check
-          in: query
-          description: is_first_check
-          schema:
-            type: boolean
-        - name: is_last_check
-          in: query
-          description: is_last_check
-          schema:
-            type: boolean
-        - name: received_at
-          in: query
-          description: received_at
-          schema:
-            type: string
-      responses:
-        "200":
-          description: create されたfund_informationが返ってくる
-          content: {}
-  /fund_informations/details:
-    get:
-      tags:
-        - fund_information
-      description: fund_informationに紐づくteacherとuserの一覧を取得
-      responses:
-        "200":
-          description: fund_informationに紐づくteacherとuserの一覧を取得
-          content: {}
-  /fund_informations/{id}:
-    get:
-      tags:
-        - fund_information
-      description: IDで指定されたfund_informationの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: fund_informationの取得
-          content: {}
-    put:
-      tags:
-        - fund_information
-      description: fund_informationの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: user_id
-          in: query
-          description: user_id
-          required: true
-          schema:
-            type: integer
-        - name: teacher_id
-          in: query
-          description: teacher_id
-          required: true
-          schema:
-            type: integer
-        - name: price
-          in: query
-          description: price
-          required: true
-          schema:
-            type: integer
-        - name: remark
-          in: query
-          description: remark
-          schema:
-            type: string
-        - name: is_first_check
-          in: query
-          description: is_first_check
-          schema:
-            type: boolean
-        - name: is_last_check
-          in: query
-          description: is_last_check
-          schema:
-            type: boolean
-        - name: received_at
-          in: query
-          description: received_at
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたfund_informationが返ってくる
-          content: {}
-    delete:
-      tags:
-        - fund_information
-      description: IDを指定してfund_informationの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: fund_informationの削除完了
-          content: {}
-  /fund_informations/{id}/details:
-    get:
-      tags:
-        - fund_information
-      description: IDで指定されたfund_informatinに紐づくteacherとuserを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: fund_informatinに紐づくteacherとuserを取得
-          content: {}
-  /fund_informations/details/{year}:
-    get:
-      tags:
-        - fund_information
-      description: 年度で指定されたfund_informationsに紐づくデータを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 年度で指定されたfund_informationsに紐づくデータを取得
-          content: {}
-  /password_reset/{id}:
-    post:
-      tags:
-        - password_reset
-      description: password_変更
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/passwordResetData"
-        required: false
-      responses:
-        "200":
-          description: passwordを変更する
-          content: {}
-      x-codegen-request-body-name: passwordResetData
-  /password_reset/request:
-    post:
-      tags:
-        - password_reset
-      description: password_reset_token発行リクエスト
-      parameters:
-        - name: email
-          in: query
-          description: email
-          schema:
-            type: string
-      responses:
-        "200":
-          description: password_reset_tokenをメールアドレスに送信する
-          content: {}
-  /password_reset/{id}/valid:
-    post:
-      tags:
-        - password_reset
-      description: トークンの称号
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: token
-          in: query
-          description: token
-          schema:
-            type: string
-      responses:
-        "200":
-          description: password_reset_tokenが正しい確認する
-          content: {}
-  /purchaseitems:
-    get:
-      tags:
-        - purchase_item
-      description: purchase_itemの一覧を取得
-      responses:
-        "200":
-          description: purchase_itemの一覧の取得
-          content: {}
-    post:
-      tags:
-        - purchase_item
-      description: purchase_itemの作成
-      parameters:
-        - name: item
-          in: query
-          description: item
-          schema:
-            type: string
-        - name: price
-          in: query
-          description: price
-          schema:
-            type: integer
-        - name: quantity
-          in: query
-          description: quantity
-          schema:
-            type: integer
-        - name: detail
-          in: query
-          description: detail
-          schema:
-            type: string
-        - name: url
-          in: query
-          description: url
-          schema:
-            type: string
-        - name: purchase_order_id
-          in: query
-          description: purchase_order_id
-          schema:
-            type: integer
-        - name: finance_check
-          in: query
-          description: finance_check
-          schema:
-            type: boolean
-      responses:
-        "200":
-          description: createされたpurchase_itemが返ってくる
-          content: {}
-  /purchaseitems/details:
-    get:
-      tags:
-        - purchase_item
-      description: purchase_itemに紐づくuserとpurchase_orderの一覧を取得
-      responses:
-        "200":
-          description: purchase_itemに紐づくuserとpurchase_orderの一覧を取得
-          content: {}
-  /purchaseitems/{id}:
-    get:
-      tags:
-        - purchase_item
-      description: IDで指定されたpurchase_itemの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_itemの取得
-          content: {}
-    put:
-      tags:
-        - purchase_item
-      description: purchase_itemの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: item
-          in: query
-          description: item
-          schema:
-            type: string
-        - name: price
-          in: query
-          description: price
-          schema:
-            type: integer
-        - name: quantity
-          in: query
-          description: quantity
-          schema:
-            type: integer
-        - name: detail
-          in: query
-          description: detail
-          schema:
-            type: string
-        - name: url
-          in: query
-          description: url
-          schema:
-            type: string
-        - name: purchase_order_id
-          in: query
-          description: purchase_order_id
-          schema:
-            type: integer
-        - name: finance_check
-          in: query
-          description: finance_check
-          schema:
-            type: boolean
-      responses:
-        "200":
-          description: 更新されたpurchase_itemが返ってくる
-          content: {}
-    delete:
-      tags:
-        - purchase_item
-      description: IDを指定してpurchase_itemの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_itemの削除完了
-          content: {}
-  /purchaseitems/{id}/details:
-    get:
-      tags:
-        - purchase_item
-      description: IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得
-          content: {}
-  /purchaseorders:
-    get:
-      tags:
-        - purchase_order
-      description: purchase_orderの一覧を取得
-      responses:
-        "200":
-          description: purchase_orderの一覧の取得
-          content: {}
-    post:
-      tags:
-        - purchase_order
-      description: purchase_orderの作成
-      parameters:
-        - name: deadline
-          in: query
-          description: deadline
-          schema:
-            type: string
-        - name: user_id
-          in: query
-          description: user_id
-          schema:
-            type: integer
-        - name: expense_id
-          in: query
-          description: expense_id
-          schema:
-            type: integer
-        - name: finance_check
-          in: query
-          description: finance_check
-          schema:
-            type: boolean
-      responses:
-        "200":
-          description: createされたpurchase_orderが返ってくる
-          content: {}
-  /purchaseorders/details:
-    get:
-      tags:
-        - purchase_order
-      description: purchaseorderに紐づくuserとitemの一覧を取得
-      responses:
-        "200":
-          description: purchase_orderに紐づくuserとpurchase_itemの一覧を取得
-          content: {}
-  /purchaseorders/{id}:
-    get:
-      tags:
-        - purchase_order
-      description: IDで指定されたpurchase_orderの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_orderの取得
-          content: {}
-    put:
-      tags:
-        - purchase_order
-      description: purchase_orderの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: deadline
-          in: query
-          description: deadline
-          schema:
-            type: string
-        - name: user_id
-          in: query
-          description: user_id
-          schema:
-            type: integer
-        - name: expense_id
-          in: query
-          description: expense_id
-          schema:
-            type: integer
-        - name: finance_check
-          in: query
-          description: finance_check
-          schema:
-            type: boolean
-      responses:
-        "200":
-          description: 更新されたpurchase_orderが返ってくる
-          content: {}
-    delete:
-      tags:
-        - purchase_order
-      description: IDを指定してpurchase_orderの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_orderの削除完了
-          content: {}
-  /purchaseorders/{id}/details:
-    get:
-      tags:
-        - purchase_order
-      description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
-          content: {}
-  /purchaseorders/details/{year}:
-    get:
-      tags:
-        - purchase_order
-      description: 年度で指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
-          content: {}
-  /purchaseorders/send/{id}:
-    post:
-      tags:
-        - purchase_order
-      description: IDで指定されたpurchase_orderのslackへメッセージ送信
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              type: array
-              items:
-                $ref: "#/components/schemas/purchaseItem"
-        required: true
-      responses:
-        "200":
-          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
-          content: {}
-      x-codegen-request-body-name: purchase_items
-  /purchaseorders/details/unregistered/{year}:
-    get:
-      tags:
-        - purchase_order
-      description: 年度で指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得
-          content: {}
-  /purchasereports:
-    get:
-      tags:
-        - purchase_report
-      description: purchase_reportの一覧を取得
-      responses:
-        "200":
-          description: purchase_reportの一覧の取得
-          content: {}
-    post:
-      tags:
-        - purchase_report
-      description: purchase_reportの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/purchaseReport"
-        required: false
-      responses:
-        "200":
-          description: 作成されたpurchaseReportが返ってくる
-          content: {}
-      x-codegen-request-body-name: purchaseReport
-  /purchasereports/details:
-    get:
-      tags:
-        - purchase_report
-      description: purchasereportsに紐づくデータの一覧を取得
-      responses:
-        "200":
-          description: purchase_reportに紐づくデータの一覧を取得
-          content: {}
-  /purchasereports/{id}:
-    get:
-      tags:
-        - purchase_report
-      description: IDで指定されたpurchase_reportの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_reportの取得
-          content: {}
-    put:
-      tags:
-        - purchase_report
-      description: purchase_reportの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/purchaseReport"
-        required: false
-      responses:
-        "200":
-          description: 更新されたpurchase_reportが返ってくる
-          content: {}
-      x-codegen-request-body-name: purchaseReport
-    delete:
-      tags:
-        - purchase_report
-      description: IDを指定してpurchase_reportの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_reportの削除完了
-          content: {}
-  /purchasereports/{id}/details:
-    get:
-      tags:
-        - purchase_report
-      description: IDで指定されたpurchase_reportに紐づくデータを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたpurchase_reportに紐づくデータを取得
-          content: {}
-  /purchasereports/details/{year}:
-    get:
-      tags:
-        - purchase_report
-      description: 年度で指定されたpurchase_reportsに紐づくデータを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 年度で指定されたpurchase_reportsに紐づくデータを取得
-          content: {}
-  /receipts:
-    get:
-      tags:
-        - receipt
-      description: receiptの一覧を取得
-      responses:
-        "200":
-          description: receiptの一覧の取得
-          content: {}
-    post:
-      tags:
-        - receipt
-      description: receiptの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/receipt"
-        required: false
-      responses:
-        "200":
-          description: create されたreceiptが返ってくる
-          content: {}
-      x-codegen-request-body-name: receipt
-  /receipts/{id}:
-    get:
-      tags:
-        - receipt
-      description: IDで指定されたreceiptの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: receiptの取得
-          content: {}
-    put:
-      tags:
-        - receipt
-      description: receiptの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/receipt"
-        required: false
-      responses:
-        "200":
-          description: 更新されたreceiptが返ってくる
-          content: {}
-      x-codegen-request-body-name: receipt
-    delete:
-      tags:
-        - receipt
-      description: IDを指定してreceiptの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: receiptの削除完了
-          content: {}
-  /receipts/reports/{id}:
-    get:
-      tags:
-        - receipt
-      description: purchaseReportIDで指定されたreceiptの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: reportsIDを指定してreceiptの取得
-          content: {}
-  /sources:
-    get:
-      tags:
-        - source
-      description: sourceの一覧の取得
-      responses:
-        "200":
-          description: sourceの一覧を取得
-          content: {}
-    post:
-      tags:
-        - source
-      description: sourceの作成
-      parameters:
-        - name: name
-          in: query
-          description: name
-          required: true
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 作成されたsourceが返ってくる
-          content: {}
-  /sources/{id}:
-    get:
-      tags:
-        - source
-      description: IDで指定されたsourceの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sourceの取得
-          content: {}
-    put:
-      tags:
-        - source
-      description: sourceの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: name
-          required: true
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたsourceが返ってくる
-          content: {}
-    delete:
-      tags:
-        - source
-      description: IDを指定してsourceの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sourceの削除完了
-          content: {}
-  /sponsors:
-    get:
-      tags:
-        - sponsor
-      description: sponsorの一覧の取得
-      responses:
-        "200":
-          description: sponsorsの一覧を取得
-          content: {}
-    post:
-      tags:
-        - sponsor
-      description: sponsorの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/sponsor"
-        required: false
-      responses:
-        "200":
-          description: 作成されたsponsorが返ってくる
-          content: {}
-      x-codegen-request-body-name: sponsor
-  /sponsors/{id}:
-    get:
-      tags:
-        - sponsor
-      description: IDで指定されたsponsorの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sponsorの取得
-          content: {}
-    put:
-      tags:
-        - sponsor
-      description: sponsorの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/sponsor"
-        required: false
-      responses:
-        "200":
-          description: 更新されたsponsorが返ってくる
-          content: {}
-      x-codegen-request-body-name: sponsor
-    delete:
-      tags:
-        - sponsor
-      description: IDを指定してsponsorの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sponsorの削除完了
-          content: {}
-  /sponsors/periods/{year}:
-    get:
-      tags:
-        - sponsor
-      description: 年度で指定されたsponsorを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sponsorの取得完了
-          content: {}
-  /sponsorstyles:
-    get:
-      tags:
-        - sponsorstyle
-      description: sponsorstyleの一覧の取得
-      responses:
-        "200":
-          description: sponsorstyleの一覧を取得
-          content: {}
-    post:
-      tags:
-        - sponsorstyle
-      description: sponsorstyleの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/sponsorStyle"
-        required: false
-      responses:
-        "200":
-          description: 作成されたsponsorstyleが返ってくる
-          content: {}
-      x-codegen-request-body-name: sponsorStyle
-  /sponsorstyles/{id}:
-    get:
-      tags:
-        - sponsorstyle
-      description: IDで指定されたsponsorstyleの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sponsorstyleの取得
-          content: {}
-    put:
-      tags:
-        - sponsorstyle
-      description: sponsorstyleの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/sponsorStyle"
-        required: false
-      responses:
-        "200":
-          description: 更新されたsponsorstyleが返ってくる
-          content: {}
-      x-codegen-request-body-name: sponsorStyle
-    delete:
-      tags:
-        - sponsorstyle
-      description: IDを指定してsponsorstyleの論理削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sponsorstyleの論理削除完了
-          content: {}
-  /teachers:
-    get:
-      tags:
-        - teacher
-      description: teacherの一覧を取得
-      responses:
-        "200":
-          description: teacherの一覧を取得
-          content:
-            "*/*":
-              schema:
-                type: array
-    post:
-      tags:
-        - teacher
-      description: teacherの作成
-      parameters:
-        - name: name
-          in: query
-          description: 名前
-          required: true
-          schema:
-            type: string
-        - name: position
-          in: query
-          description: 役職
-          required: true
-          schema:
-            type: string
-        - name: department_id
-          in: query
-          description: 学科ID
-          schema:
-            type: integer
-        - name: room
-          in: query
-          description: 部屋番号
-          schema:
-            type: string
-        - name: is_black
-          in: query
-          description: ブラックリストの真偽
-          schema:
-            type: boolean
-        - name: remark
-          in: query
-          description: 備考
-          schema:
-            type: string
-      responses:
-        "200":
-          description: createされたteacherが返ってくる
-          content: {}
-  /teachers/delete:
-    delete:
-      tags:
-        - teacher
-      description: teacherの複数削除
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/destroyTeacherIDs"
-        required: false
-      responses:
-        "200":
-          description: 複数のteacherをidで削除できる
-          content: {}
-      x-codegen-request-body-name: destroyTeacherIDs
-  /teachers/{id}:
-    get:
-      tags:
-        - teacher
-      description: IDで指定されたteacherの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: teacherの取得
-          content: {}
-    put:
-      tags:
-        - teacher
-      description: teacherの更新
-      parameters:
-        - name: id
-          in: path
-          description: Teacherのid
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: 教員の名前
-          required: true
-          schema:
-            type: string
-        - name: position
-          in: query
-          description: 教員の役職
-          required: true
-          schema:
-            type: string
-        - name: department_id
-          in: query
-          description: 学科ID
-          schema:
-            type: integer
-        - name: room
-          in: query
-          description: 部屋番号
-          schema:
-            type: string
-        - name: is_black
-          in: query
-          description: ブラックリストに入っているか
-          schema:
-            type: boolean
-        - name: remark
-          in: query
-          description: 備考欄
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたteacherが返ってくる
-          content: {}
-    delete:
-      tags:
-        - teacher
-      description: IDを指定してteacherの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: teacherの削除完了
-          content: {}
-  /teachers/fundRegistered/{year}:
-    get:
-      tags:
-        - teacher
-      description: 募金登録済みのteacherのidを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 募金登録済みのteacherのidを取得
-          content: {}
-  /users:
-    get:
-      tags:
-        - user
-      description: userの一覧を取得
-      responses:
-        "200":
-          description: userの一覧を取得
-          content:
-            "*/*":
-              schema:
-                type: array
-    post:
-      tags:
-        - user
-      description: userの作成
-      parameters:
-        - name: name
-          in: query
-          description: name
-          required: true
-          schema:
-            type: string
-        - name: bureau_id
-          in: query
-          description: bureau_d
-          required: true
-          schema:
-            type: integer
-        - name: role_id
-          in: query
-          description: role_id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: createされたuserが返ってくる
-          content: {}
-  /users/delete:
-    delete:
-      tags:
-        - user
-      description: userの複数作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/destroyUserIDs"
-        required: false
-      responses:
-        "200":
-          description: 複数のuserをidで削除できる
-          content: {}
-      x-codegen-request-body-name: destroyUserIDs
-  /users/{id}:
-    get:
-      tags:
-        - user
-      description: IDで指定されたuserの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: userの取得
-          content: {}
-    put:
-      tags:
-        - user
-      description: userの更新
-      parameters:
-        - name: id
-          in: path
-          description: userのid
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: name
-          required: true
-          schema:
-            type: string
-        - name: bureau_id
-          in: query
-          description: bureau_d
-          required: true
-          schema:
-            type: integer
-        - name: role_id
-          in: query
-          description: role_id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 更新されたuserが返ってくる
-          content: {}
-    delete:
-      tags:
-        - user
-      description: IDを指定してuserの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: userの削除完了
-          content: {}
-  /years:
-    get:
-      tags:
-        - year
-      description: yearの一覧の取得
-      responses:
-        "200":
-          description: yearの一覧を取得
-          content: {}
-    post:
-      tags:
-        - year
-      description: yearの作成
-      parameters:
-        - name: year
-          in: query
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 作成されたyearが返ってくる
-          content: {}
-  /years/{id}:
-    get:
-      tags:
-        - year
-      description: IDで指定されたyearの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: yearの取得
-          content: {}
-    put:
-      tags:
-        - year
-      description: yearの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: year
-          in: query
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 更新されたyearが返ってくる
-          content: {}
-    delete:
-      tags:
-        - year
-      description: IDを指定してyearの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: yearの削除完了
-          content: {}
-  /years/periods:
-    get:
-      tags:
-        - year_periods
-      description: 年度一覧の取得
-      responses:
-        "200":
-          description: year_periodsの一覧を取得
-          content: {}
-    post:
-      tags:
-        - year_periods
-      description: year_periodsの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/year_periods"
-        required: false
-      responses:
-        "200":
-          description: 作成されたyear_periodsが返ってくる
-          content: {}
-      x-codegen-request-body-name: year_periods
-  /years/periods/{id}:
-    put:
-      tags:
-        - year_periods
-      description: year_periodsの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/year_periods"
-        required: false
-      responses:
-        "200":
-          description: 更新されたyear_periodsが返ってくる
-          content: {}
-      x-codegen-request-body-name: year_periods
-    delete:
-      tags:
-        - year_periods
-      description: IDを指定してyear_periodsの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: year_periodsの削除完了
-          content: {}
-components:
-  schemas:
-    activity:
-      required:
-        - expense
-        - feature
-        - isDone
-        - remark
-        - sponsorID
-        - userID
-      type: object
-      properties:
-        sponsorID:
-          type: integer
-          example: 1
-        userID:
-          type: integer
-          example: 1
-        isDone:
-          type: boolean
-          example: false
-        feature:
-          type: string
-          example: なし
-        expense:
-          type: integer
-          example: 0
-        remark:
-          type: string
-          example: なし
-        design:
-          type: integer
-          example: 0
-        url:
-          type: string
-          example: ""
-    activity_information:
-      type: object
-      properties:
-        activityID:
-          type: integer
-          example: 1
-        bucketName:
-          type: string
-          example: なし
-        fileName:
-          type: string
-          example: なし
-        fileType:
-          type: string
-          example: なし
-        designProgress:
-          type: integer
-          example: 1
-        fileInformation:
-          type: string
-          example: ""
-    activity_style:
-      required:
-        - activityID
-        - sponsorStyleID
-      type: object
-      properties:
-        activityID:
-          type: integer
-          example: 1
-        sponsorStyleID:
-          type: integer
-          example: 1
-    sponsorStyle:
-      required:
-        - feature
-        - price
-        - style
-      type: object
-      properties:
-        style:
-          type: string
-          example: 1分の1
-        feature:
-          type: string
-          example: カラー
-        price:
-          type: integer
-          example: 30000
-    sponsor:
-      required:
-        - address
-        - email
-        - name
-        - representative
-        - tel
-      type: object
-      properties:
-        name:
-          type: string
-          example: 企業1
-        tel:
-          type: string
-          example: "09000000000"
-        email:
-          type: string
-          example: test@example.com
-        address:
-          type: string
-          example: ○○1-1
-        representative:
-          type: string
-          example: 長岡太郎(社長)
-    passwordResetData:
-      type: object
-      properties:
-        token:
-          type: string
-          example: ""
-        password:
-          type: string
-          example: ""
-        confirmPassword:
-          type: string
-          example: ""
-    purchaseReport:
-      required:
-        - addition
-        - discount
-        - financeCheck
-        - purchaseOrderID
-        - userID
-      type: object
-      properties:
-        userID:
-          type: integer
-          example: 1
-        discount:
-          type: integer
-          example: 0
-        addition:
-          type: integer
-          example: 0
-        financeCheck:
-          type: boolean
-          example: false
-        purchaseOrderID:
-          type: integer
-          example: 1
-        remark:
-          type: string
-          example: ""
-        buyer:
-          type: string
-          example: ""
-    purchaseItem:
-      required:
-        - financeCheck
-        - item
-        - price
-        - purchaseOrderID
-        - quantity
-      type: object
-      properties:
-        item:
-          type: string
-          example: name
-        price:
-          type: integer
-          example: 0
-        quantity:
-          type: integer
-          example: 0
-        detail:
-          type: string
-          example: ""
-        url:
-          type: string
-          example: ""
-        purchaseOrderID:
-          type: integer
-          example: 1
-        financeCheck:
-          type: boolean
-          example: false
-    destroyTeacherIDs:
-      required:
-        - deleteIDs
-      type: object
-      properties:
-        deleteIDs:
-          type: array
-          example: []
-          items:
-            type: number
-    destroyUserIDs:
-      required:
-        - deleteIDs
-      type: object
-      properties:
-        deleteIDs:
-          type: array
-          example: []
-          items:
-            type: number
-    receipt:
-      required:
-        - purchaseReportID
-      type: object
-      properties:
-        purchaseReportID:
-          type: integer
-          example: 1
-        bucketName:
-          type: string
-          example: ""
-        fileName:
-          type: string
-          example: ""
-        fileType:
-          type: string
-          example: ""
-        remark:
-          type: string
-          example: ""
-    year_periods:
-      required:
-        - endedAt
-        - startedAt
-        - year
-      type: object
-      properties:
-        year:
-          type: integer
-          example: 2024
-        startedAt:
-          type: string
-          example: 0000-00-00T00:00:00Z
-        endedAt:
-          type: string
-          example: 0000-00-00T00:00:00Z
-x-original-swagger-version: "2.0"
diff --git a/api/internals/generated/openapi_gen.go b/api/internals/generated/openapi_gen.go
deleted file mode 100644
index 52e60dcfe..000000000
--- a/api/internals/generated/openapi_gen.go
+++ /dev/null
@@ -1,3188 +0,0 @@
-// Package generated provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen/v2 version v2.2.0 DO NOT EDIT.
-package generated
-
-import (
-	"fmt"
-	"net/http"
-
-	"github.com/labstack/echo/v4"
-	"github.com/oapi-codegen/runtime"
-)
-
-// Activity defines model for activity.
-type Activity struct {
-	Design    *int    `json:"design,omitempty"`
-	Expense   int     `json:"expense"`
-	Feature   string  `json:"feature"`
-	IsDone    bool    `json:"isDone"`
-	Remark    string  `json:"remark"`
-	SponsorID int     `json:"sponsorID"`
-	Url       *string `json:"url,omitempty"`
-	UserID    int     `json:"userID"`
-}
-
-// ActivityInformation defines model for activity_information.
-type ActivityInformation struct {
-	ActivityID      *int    `json:"activityID,omitempty"`
-	BucketName      *string `json:"bucketName,omitempty"`
-	DesignProgress  *int    `json:"designProgress,omitempty"`
-	FileInformation *string `json:"fileInformation,omitempty"`
-	FileName        *string `json:"fileName,omitempty"`
-	FileType        *string `json:"fileType,omitempty"`
-}
-
-// ActivityStyle defines model for activity_style.
-type ActivityStyle struct {
-	ActivityID     int `json:"activityID"`
-	SponsorStyleID int `json:"sponsorStyleID"`
-}
-
-// DestroyTeacherIDs defines model for destroyTeacherIDs.
-type DestroyTeacherIDs struct {
-	DeleteIDs []float32 `json:"deleteIDs"`
-}
-
-// DestroyUserIDs defines model for destroyUserIDs.
-type DestroyUserIDs struct {
-	DeleteIDs []float32 `json:"deleteIDs"`
-}
-
-// PasswordResetData defines model for passwordResetData.
-type PasswordResetData struct {
-	ConfirmPassword *string `json:"confirmPassword,omitempty"`
-	Password        *string `json:"password,omitempty"`
-	Token           *string `json:"token,omitempty"`
-}
-
-// PurchaseItem defines model for purchaseItem.
-type PurchaseItem struct {
-	Detail          *string `json:"detail,omitempty"`
-	FinanceCheck    bool    `json:"financeCheck"`
-	Item            string  `json:"item"`
-	Price           int     `json:"price"`
-	PurchaseOrderID int     `json:"purchaseOrderID"`
-	Quantity        int     `json:"quantity"`
-	Url             *string `json:"url,omitempty"`
-}
-
-// PurchaseReport defines model for purchaseReport.
-type PurchaseReport struct {
-	Addition        int     `json:"addition"`
-	Buyer           *string `json:"buyer,omitempty"`
-	Discount        int     `json:"discount"`
-	FinanceCheck    bool    `json:"financeCheck"`
-	PurchaseOrderID int     `json:"purchaseOrderID"`
-	Remark          *string `json:"remark,omitempty"`
-	UserID          int     `json:"userID"`
-}
-
-// Receipt defines model for receipt.
-type Receipt struct {
-	BucketName       *string `json:"bucketName,omitempty"`
-	FileName         *string `json:"fileName,omitempty"`
-	FileType         *string `json:"fileType,omitempty"`
-	PurchaseReportID int     `json:"purchaseReportID"`
-	Remark           *string `json:"remark,omitempty"`
-}
-
-// Sponsor defines model for sponsor.
-type Sponsor struct {
-	Address        string `json:"address"`
-	Email          string `json:"email"`
-	Name           string `json:"name"`
-	Representative string `json:"representative"`
-	Tel            string `json:"tel"`
-}
-
-// SponsorStyle defines model for sponsorStyle.
-type SponsorStyle struct {
-	Feature string `json:"feature"`
-	Price   int    `json:"price"`
-	Style   string `json:"style"`
-}
-
-// YearPeriods defines model for year_periods.
-type YearPeriods struct {
-	EndedAt   string `json:"endedAt"`
-	StartedAt string `json:"startedAt"`
-	Year      int    `json:"year"`
-}
-
-// PostBudgetsParams defines parameters for PostBudgets.
-type PostBudgetsParams struct {
-	// Price price
-	Price int `form:"price" json:"price"`
-
-	// YearId year_id
-	YearId *int `form:"year_id,omitempty" json:"year_id,omitempty"`
-
-	// SourceId source_id
-	SourceId *int `form:"source_id,omitempty" json:"source_id,omitempty"`
-}
-
-// PutBudgetsIdParams defines parameters for PutBudgetsId.
-type PutBudgetsIdParams struct {
-	// Price price
-	Price *int `form:"price,omitempty" json:"price,omitempty"`
-
-	// YearId year_id
-	YearId *int `form:"year_id,omitempty" json:"year_id,omitempty"`
-
-	// SourceId source_id
-	SourceId *int `form:"source_id,omitempty" json:"source_id,omitempty"`
-}
-
-// PostBureausParams defines parameters for PostBureaus.
-type PostBureausParams struct {
-	// Name name
-	Name string `form:"name" json:"name"`
-}
-
-// PutBureausIdParams defines parameters for PutBureausId.
-type PutBureausIdParams struct {
-	// Name name
-	Name *string `form:"name,omitempty" json:"name,omitempty"`
-}
-
-// PostDepartmentsParams defines parameters for PostDepartments.
-type PostDepartmentsParams struct {
-	// Name name
-	Name *string `form:"name,omitempty" json:"name,omitempty"`
-}
-
-// PutDepartmentsIdParams defines parameters for PutDepartmentsId.
-type PutDepartmentsIdParams struct {
-	// Name name
-	Name *string `form:"name,omitempty" json:"name,omitempty"`
-}
-
-// PostExpensesParams defines parameters for PostExpenses.
-type PostExpensesParams struct {
-	// Name name
-	Name *string `form:"name,omitempty" json:"name,omitempty"`
-
-	// YearId year_id
-	YearId *string `form:"year_id,omitempty" json:"year_id,omitempty"`
-}
-
-// PutExpensesIdParams defines parameters for PutExpensesId.
-type PutExpensesIdParams struct {
-	// Name name
-	Name *string `form:"name,omitempty" json:"name,omitempty"`
-
-	// YearId year_id
-	YearId *string `form:"year_id,omitempty" json:"year_id,omitempty"`
-}
-
-// PostFundInformationsParams defines parameters for PostFundInformations.
-type PostFundInformationsParams struct {
-	// UserId user_id
-	UserId int `form:"user_id" json:"user_id"`
-
-	// TeacherId teacher_id
-	TeacherId int `form:"teacher_id" json:"teacher_id"`
-
-	// Price price
-	Price int `form:"price" json:"price"`
-
-	// Remark remark
-	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
-
-	// IsFirstCheck is_first_check
-	IsFirstCheck *bool `form:"is_first_check,omitempty" json:"is_first_check,omitempty"`
-
-	// IsLastCheck is_last_check
-	IsLastCheck *bool `form:"is_last_check,omitempty" json:"is_last_check,omitempty"`
-
-	// ReceivedAt received_at
-	ReceivedAt *string `form:"received_at,omitempty" json:"received_at,omitempty"`
-}
-
-// PutFundInformationsIdParams defines parameters for PutFundInformationsId.
-type PutFundInformationsIdParams struct {
-	// UserId user_id
-	UserId int `form:"user_id" json:"user_id"`
-
-	// TeacherId teacher_id
-	TeacherId int `form:"teacher_id" json:"teacher_id"`
-
-	// Price price
-	Price int `form:"price" json:"price"`
-
-	// Remark remark
-	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
-
-	// IsFirstCheck is_first_check
-	IsFirstCheck *bool `form:"is_first_check,omitempty" json:"is_first_check,omitempty"`
-
-	// IsLastCheck is_last_check
-	IsLastCheck *bool `form:"is_last_check,omitempty" json:"is_last_check,omitempty"`
-
-	// ReceivedAt received_at
-	ReceivedAt *string `form:"received_at,omitempty" json:"received_at,omitempty"`
-}
-
-// PostPasswordResetRequestParams defines parameters for PostPasswordResetRequest.
-type PostPasswordResetRequestParams struct {
-	// Email email
-	Email *string `form:"email,omitempty" json:"email,omitempty"`
-}
-
-// PostPasswordResetIdValidParams defines parameters for PostPasswordResetIdValid.
-type PostPasswordResetIdValidParams struct {
-	// Token token
-	Token *string `form:"token,omitempty" json:"token,omitempty"`
-}
-
-// PostPurchaseitemsParams defines parameters for PostPurchaseitems.
-type PostPurchaseitemsParams struct {
-	// Item item
-	Item *string `form:"item,omitempty" json:"item,omitempty"`
-
-	// Price price
-	Price *int `form:"price,omitempty" json:"price,omitempty"`
-
-	// Quantity quantity
-	Quantity *int `form:"quantity,omitempty" json:"quantity,omitempty"`
-
-	// Detail detail
-	Detail *string `form:"detail,omitempty" json:"detail,omitempty"`
-
-	// Url url
-	Url *string `form:"url,omitempty" json:"url,omitempty"`
-
-	// PurchaseOrderId purchase_order_id
-	PurchaseOrderId *int `form:"purchase_order_id,omitempty" json:"purchase_order_id,omitempty"`
-
-	// FinanceCheck finance_check
-	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
-}
-
-// PutPurchaseitemsIdParams defines parameters for PutPurchaseitemsId.
-type PutPurchaseitemsIdParams struct {
-	// Item item
-	Item *string `form:"item,omitempty" json:"item,omitempty"`
-
-	// Price price
-	Price *int `form:"price,omitempty" json:"price,omitempty"`
-
-	// Quantity quantity
-	Quantity *int `form:"quantity,omitempty" json:"quantity,omitempty"`
-
-	// Detail detail
-	Detail *string `form:"detail,omitempty" json:"detail,omitempty"`
-
-	// Url url
-	Url *string `form:"url,omitempty" json:"url,omitempty"`
-
-	// PurchaseOrderId purchase_order_id
-	PurchaseOrderId *int `form:"purchase_order_id,omitempty" json:"purchase_order_id,omitempty"`
-
-	// FinanceCheck finance_check
-	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
-}
-
-// PostPurchaseordersParams defines parameters for PostPurchaseorders.
-type PostPurchaseordersParams struct {
-	// Deadline deadline
-	Deadline *string `form:"deadline,omitempty" json:"deadline,omitempty"`
-
-	// UserId user_id
-	UserId *int `form:"user_id,omitempty" json:"user_id,omitempty"`
-
-	// ExpenseId expense_id
-	ExpenseId *int `form:"expense_id,omitempty" json:"expense_id,omitempty"`
-
-	// FinanceCheck finance_check
-	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
-}
-
-// PutPurchaseordersIdParams defines parameters for PutPurchaseordersId.
-type PutPurchaseordersIdParams struct {
-	// Deadline deadline
-	Deadline *string `form:"deadline,omitempty" json:"deadline,omitempty"`
-
-	// UserId user_id
-	UserId *int `form:"user_id,omitempty" json:"user_id,omitempty"`
-
-	// ExpenseId expense_id
-	ExpenseId *int `form:"expense_id,omitempty" json:"expense_id,omitempty"`
-
-	// FinanceCheck finance_check
-	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
-}
-
-// PostSourcesParams defines parameters for PostSources.
-type PostSourcesParams struct {
-	// Name name
-	Name string `form:"name" json:"name"`
-}
-
-// PutSourcesIdParams defines parameters for PutSourcesId.
-type PutSourcesIdParams struct {
-	// Name name
-	Name string `form:"name" json:"name"`
-}
-
-// PostTeachersParams defines parameters for PostTeachers.
-type PostTeachersParams struct {
-	// Name 名前
-	Name string `form:"name" json:"name"`
-
-	// Position 役職
-	Position string `form:"position" json:"position"`
-
-	// DepartmentId 学科ID
-	DepartmentId *int `form:"department_id,omitempty" json:"department_id,omitempty"`
-
-	// Room 部屋番号
-	Room *string `form:"room,omitempty" json:"room,omitempty"`
-
-	// IsBlack ブラックリストの真偽
-	IsBlack *bool `form:"is_black,omitempty" json:"is_black,omitempty"`
-
-	// Remark 備考
-	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
-}
-
-// PutTeachersIdParams defines parameters for PutTeachersId.
-type PutTeachersIdParams struct {
-	// Name 教員の名前
-	Name string `form:"name" json:"name"`
-
-	// Position 教員の役職
-	Position string `form:"position" json:"position"`
-
-	// DepartmentId 学科ID
-	DepartmentId *int `form:"department_id,omitempty" json:"department_id,omitempty"`
-
-	// Room 部屋番号
-	Room *string `form:"room,omitempty" json:"room,omitempty"`
-
-	// IsBlack ブラックリストに入っているか
-	IsBlack *bool `form:"is_black,omitempty" json:"is_black,omitempty"`
-
-	// Remark 備考欄
-	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
-}
-
-// PostUsersParams defines parameters for PostUsers.
-type PostUsersParams struct {
-	// Name name
-	Name string `form:"name" json:"name"`
-
-	// BureauId bureau_d
-	BureauId int `form:"bureau_id" json:"bureau_id"`
-
-	// RoleId role_id
-	RoleId int `form:"role_id" json:"role_id"`
-}
-
-// PutUsersIdParams defines parameters for PutUsersId.
-type PutUsersIdParams struct {
-	// Name name
-	Name string `form:"name" json:"name"`
-
-	// BureauId bureau_d
-	BureauId int `form:"bureau_id" json:"bureau_id"`
-
-	// RoleId role_id
-	RoleId int `form:"role_id" json:"role_id"`
-}
-
-// PostYearsParams defines parameters for PostYears.
-type PostYearsParams struct {
-	// Year year
-	Year int `form:"year" json:"year"`
-}
-
-// PutYearsIdParams defines parameters for PutYearsId.
-type PutYearsIdParams struct {
-	// Year year
-	Year int `form:"year" json:"year"`
-}
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (GET /activities)
-	GetActivities(ctx echo.Context) error
-
-	// (POST /activities)
-	PostActivities(ctx echo.Context) error
-
-	// (GET /activities/details)
-	GetActivitiesDetails(ctx echo.Context) error
-
-	// (GET /activities/details/{year})
-	GetActivitiesDetailsYear(ctx echo.Context, year int) error
-
-	// (GET /activities/filtered_details)
-	GetActivitiesFilteredDetails(ctx echo.Context) error
-
-	// (GET /activities/filtered_details/{year})
-	GetActivitiesFilteredDetailsYear(ctx echo.Context, year string) error
-
-	// (DELETE /activities/{id})
-	DeleteActivitiesId(ctx echo.Context, id int) error
-
-	// (GET /activities/{id})
-	GetActivitiesId(ctx echo.Context, id int) error
-
-	// (PUT /activities/{id})
-	PutActivitiesId(ctx echo.Context, id int) error
-
-	// (GET /activity_informations)
-	GetActivityInformations(ctx echo.Context) error
-
-	// (POST /activity_informations)
-	PostActivityInformations(ctx echo.Context) error
-
-	// (DELETE /activity_informations/{id})
-	DeleteActivityInformationsId(ctx echo.Context, id int) error
-
-	// (GET /activity_informations/{id})
-	GetActivityInformationsId(ctx echo.Context, id int) error
-
-	// (PUT /activity_informations/{id})
-	PutActivityInformationsId(ctx echo.Context, id int) error
-
-	// (GET /activity_styles)
-	GetActivityStyles(ctx echo.Context) error
-
-	// (POST /activity_styles)
-	PostActivityStyles(ctx echo.Context) error
-
-	// (DELETE /activity_styles/{id})
-	DeleteActivityStylesId(ctx echo.Context, id int) error
-
-	// (GET /activity_styles/{id})
-	GetActivityStylesId(ctx echo.Context, id int) error
-
-	// (PUT /activity_styles/{id})
-	PutActivityStylesId(ctx echo.Context, id int) error
-
-	// (GET /budgets)
-	GetBudgets(ctx echo.Context) error
-
-	// (POST /budgets)
-	PostBudgets(ctx echo.Context, params PostBudgetsParams) error
-
-	// (GET /budgets/details)
-	GetBudgetsDetails(ctx echo.Context) error
-
-	// (GET /budgets/details/{year})
-	GetBudgetsDetailsYear(ctx echo.Context, year int) error
-
-	// (DELETE /budgets/{id})
-	DeleteBudgetsId(ctx echo.Context, id int) error
-
-	// (GET /budgets/{id})
-	GetBudgetsId(ctx echo.Context, id int) error
-
-	// (PUT /budgets/{id})
-	PutBudgetsId(ctx echo.Context, id int, params PutBudgetsIdParams) error
-
-	// (GET /budgets/{id}/details)
-	GetBudgetsIdDetails(ctx echo.Context, id int) error
-
-	// (GET /bureaus)
-	GetBureaus(ctx echo.Context) error
-
-	// (POST /bureaus)
-	PostBureaus(ctx echo.Context, params PostBureausParams) error
-
-	// (DELETE /bureaus/{id})
-	DeleteBureausId(ctx echo.Context, id int) error
-
-	// (GET /bureaus/{id})
-	GetBureausId(ctx echo.Context, id int) error
-
-	// (PUT /bureaus/{id})
-	PutBureausId(ctx echo.Context, id int, params PutBureausIdParams) error
-
-	// (GET /departments)
-	GetDepartments(ctx echo.Context) error
-
-	// (POST /departments)
-	PostDepartments(ctx echo.Context, params PostDepartmentsParams) error
-
-	// (DELETE /departments/{id})
-	DeleteDepartmentsId(ctx echo.Context, id int) error
-
-	// (GET /departments/{id})
-	GetDepartmentsId(ctx echo.Context, id int) error
-
-	// (PUT /departments/{id})
-	PutDepartmentsId(ctx echo.Context, id int, params PutDepartmentsIdParams) error
-
-	// (GET /expenses)
-	GetExpenses(ctx echo.Context) error
-
-	// (POST /expenses)
-	PostExpenses(ctx echo.Context, params PostExpensesParams) error
-
-	// (GET /expenses/details)
-	GetExpensesDetails(ctx echo.Context) error
-
-	// (GET /expenses/details/{year})
-	GetExpensesDetailsYear(ctx echo.Context, year int) error
-
-	// (GET /expenses/fiscalyear/{year})
-	GetExpensesFiscalyearYear(ctx echo.Context, year int) error
-
-	// (DELETE /expenses/{id})
-	DeleteExpensesId(ctx echo.Context, id int) error
-
-	// (GET /expenses/{id})
-	GetExpensesId(ctx echo.Context, id int) error
-
-	// (PUT /expenses/{id})
-	PutExpensesId(ctx echo.Context, id int, params PutExpensesIdParams) error
-
-	// (GET /expenses/{id}/details)
-	GetExpensesIdDetails(ctx echo.Context, id int) error
-
-	// (GET /fund_informations)
-	GetFundInformations(ctx echo.Context) error
-
-	// (POST /fund_informations)
-	PostFundInformations(ctx echo.Context, params PostFundInformationsParams) error
-
-	// (GET /fund_informations/details)
-	GetFundInformationsDetails(ctx echo.Context) error
-
-	// (GET /fund_informations/details/{year})
-	GetFundInformationsDetailsYear(ctx echo.Context, year int) error
-
-	// (DELETE /fund_informations/{id})
-	DeleteFundInformationsId(ctx echo.Context, id int) error
-
-	// (GET /fund_informations/{id})
-	GetFundInformationsId(ctx echo.Context, id int) error
-
-	// (PUT /fund_informations/{id})
-	PutFundInformationsId(ctx echo.Context, id int, params PutFundInformationsIdParams) error
-
-	// (GET /fund_informations/{id}/details)
-	GetFundInformationsIdDetails(ctx echo.Context, id int) error
-
-	// (POST /password_reset/request)
-	PostPasswordResetRequest(ctx echo.Context, params PostPasswordResetRequestParams) error
-
-	// (POST /password_reset/{id})
-	PostPasswordResetId(ctx echo.Context, id int) error
-
-	// (POST /password_reset/{id}/valid)
-	PostPasswordResetIdValid(ctx echo.Context, id int, params PostPasswordResetIdValidParams) error
-
-	// (GET /purchaseitems)
-	GetPurchaseitems(ctx echo.Context) error
-
-	// (POST /purchaseitems)
-	PostPurchaseitems(ctx echo.Context, params PostPurchaseitemsParams) error
-
-	// (GET /purchaseitems/details)
-	GetPurchaseitemsDetails(ctx echo.Context) error
-
-	// (DELETE /purchaseitems/{id})
-	DeletePurchaseitemsId(ctx echo.Context, id int) error
-
-	// (GET /purchaseitems/{id})
-	GetPurchaseitemsId(ctx echo.Context, id int) error
-
-	// (PUT /purchaseitems/{id})
-	PutPurchaseitemsId(ctx echo.Context, id int, params PutPurchaseitemsIdParams) error
-
-	// (GET /purchaseitems/{id}/details)
-	GetPurchaseitemsIdDetails(ctx echo.Context, id int) error
-
-	// (GET /purchaseorders)
-	GetPurchaseorders(ctx echo.Context) error
-
-	// (POST /purchaseorders)
-	PostPurchaseorders(ctx echo.Context, params PostPurchaseordersParams) error
-
-	// (GET /purchaseorders/details)
-	GetPurchaseordersDetails(ctx echo.Context) error
-
-	// (GET /purchaseorders/details/unregistered/{year})
-	GetPurchaseordersDetailsUnregisteredYear(ctx echo.Context, year int) error
-
-	// (GET /purchaseorders/details/{year})
-	GetPurchaseordersDetailsYear(ctx echo.Context, year int) error
-
-	// (POST /purchaseorders/send/{id})
-	PostPurchaseordersSendId(ctx echo.Context, id int) error
-
-	// (DELETE /purchaseorders/{id})
-	DeletePurchaseordersId(ctx echo.Context, id int) error
-
-	// (GET /purchaseorders/{id})
-	GetPurchaseordersId(ctx echo.Context, id int) error
-
-	// (PUT /purchaseorders/{id})
-	PutPurchaseordersId(ctx echo.Context, id int, params PutPurchaseordersIdParams) error
-
-	// (GET /purchaseorders/{id}/details)
-	GetPurchaseordersIdDetails(ctx echo.Context, id int) error
-
-	// (GET /purchasereports)
-	GetPurchasereports(ctx echo.Context) error
-
-	// (POST /purchasereports)
-	PostPurchasereports(ctx echo.Context) error
-
-	// (GET /purchasereports/details)
-	GetPurchasereportsDetails(ctx echo.Context) error
-
-	// (GET /purchasereports/details/{year})
-	GetPurchasereportsDetailsYear(ctx echo.Context, year int) error
-
-	// (DELETE /purchasereports/{id})
-	DeletePurchasereportsId(ctx echo.Context, id int) error
-
-	// (GET /purchasereports/{id})
-	GetPurchasereportsId(ctx echo.Context, id int) error
-
-	// (PUT /purchasereports/{id})
-	PutPurchasereportsId(ctx echo.Context, id int) error
-
-	// (GET /purchasereports/{id}/details)
-	GetPurchasereportsIdDetails(ctx echo.Context, id int) error
-
-	// (GET /receipts)
-	GetReceipts(ctx echo.Context) error
-
-	// (POST /receipts)
-	PostReceipts(ctx echo.Context) error
-
-	// (GET /receipts/reports/{id})
-	GetReceiptsReportsId(ctx echo.Context, id int) error
-
-	// (DELETE /receipts/{id})
-	DeleteReceiptsId(ctx echo.Context, id int) error
-
-	// (GET /receipts/{id})
-	GetReceiptsId(ctx echo.Context, id int) error
-
-	// (PUT /receipts/{id})
-	PutReceiptsId(ctx echo.Context, id int) error
-
-	// (GET /sources)
-	GetSources(ctx echo.Context) error
-
-	// (POST /sources)
-	PostSources(ctx echo.Context, params PostSourcesParams) error
-
-	// (DELETE /sources/{id})
-	DeleteSourcesId(ctx echo.Context, id int) error
-
-	// (GET /sources/{id})
-	GetSourcesId(ctx echo.Context, id int) error
-
-	// (PUT /sources/{id})
-	PutSourcesId(ctx echo.Context, id int, params PutSourcesIdParams) error
-
-	// (GET /sponsors)
-	GetSponsors(ctx echo.Context) error
-
-	// (POST /sponsors)
-	PostSponsors(ctx echo.Context) error
-
-	// (GET /sponsors/periods/{year})
-	GetSponsorsPeriodsYear(ctx echo.Context, year int) error
-
-	// (DELETE /sponsors/{id})
-	DeleteSponsorsId(ctx echo.Context, id int) error
-
-	// (GET /sponsors/{id})
-	GetSponsorsId(ctx echo.Context, id int) error
-
-	// (PUT /sponsors/{id})
-	PutSponsorsId(ctx echo.Context, id int) error
-
-	// (GET /sponsorstyles)
-	GetSponsorstyles(ctx echo.Context) error
-
-	// (POST /sponsorstyles)
-	PostSponsorstyles(ctx echo.Context) error
-
-	// (DELETE /sponsorstyles/{id})
-	DeleteSponsorstylesId(ctx echo.Context, id int) error
-
-	// (GET /sponsorstyles/{id})
-	GetSponsorstylesId(ctx echo.Context, id int) error
-
-	// (PUT /sponsorstyles/{id})
-	PutSponsorstylesId(ctx echo.Context, id int) error
-
-	// (GET /teachers)
-	GetTeachers(ctx echo.Context) error
-
-	// (POST /teachers)
-	PostTeachers(ctx echo.Context, params PostTeachersParams) error
-
-	// (DELETE /teachers/delete)
-	DeleteTeachersDelete(ctx echo.Context) error
-
-	// (GET /teachers/fundRegistered/{year})
-	GetTeachersFundRegisteredYear(ctx echo.Context, year int) error
-
-	// (DELETE /teachers/{id})
-	DeleteTeachersId(ctx echo.Context, id int) error
-
-	// (GET /teachers/{id})
-	GetTeachersId(ctx echo.Context, id int) error
-
-	// (PUT /teachers/{id})
-	PutTeachersId(ctx echo.Context, id int, params PutTeachersIdParams) error
-
-	// (GET /users)
-	GetUsers(ctx echo.Context) error
-
-	// (POST /users)
-	PostUsers(ctx echo.Context, params PostUsersParams) error
-
-	// (DELETE /users/delete)
-	DeleteUsersDelete(ctx echo.Context) error
-
-	// (DELETE /users/{id})
-	DeleteUsersId(ctx echo.Context, id int) error
-
-	// (GET /users/{id})
-	GetUsersId(ctx echo.Context, id int) error
-
-	// (PUT /users/{id})
-	PutUsersId(ctx echo.Context, id int, params PutUsersIdParams) error
-
-	// (GET /years)
-	GetYears(ctx echo.Context) error
-
-	// (POST /years)
-	PostYears(ctx echo.Context, params PostYearsParams) error
-
-	// (GET /years/periods)
-	GetYearsPeriods(ctx echo.Context) error
-
-	// (POST /years/periods)
-	PostYearsPeriods(ctx echo.Context) error
-
-	// (DELETE /years/periods/{id})
-	DeleteYearsPeriodsId(ctx echo.Context, id int) error
-
-	// (PUT /years/periods/{id})
-	PutYearsPeriodsId(ctx echo.Context, id int) error
-
-	// (DELETE /years/{id})
-	DeleteYearsId(ctx echo.Context, id int) error
-
-	// (GET /years/{id})
-	GetYearsId(ctx echo.Context, id int) error
-
-	// (PUT /years/{id})
-	PutYearsId(ctx echo.Context, id int, params PutYearsIdParams) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// GetActivities converts echo context to params.
-func (w *ServerInterfaceWrapper) GetActivities(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetActivities(ctx)
-	return err
-}
-
-// PostActivities converts echo context to params.
-func (w *ServerInterfaceWrapper) PostActivities(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostActivities(ctx)
-	return err
-}
-
-// GetActivitiesDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetActivitiesDetails(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetActivitiesDetails(ctx)
-	return err
-}
-
-// GetActivitiesDetailsYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetActivitiesDetailsYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetActivitiesDetailsYear(ctx, year)
-	return err
-}
-
-// GetActivitiesFilteredDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetActivitiesFilteredDetails(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetActivitiesFilteredDetails(ctx)
-	return err
-}
-
-// GetActivitiesFilteredDetailsYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetActivitiesFilteredDetailsYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year string
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetActivitiesFilteredDetailsYear(ctx, year)
-	return err
-}
-
-// DeleteActivitiesId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteActivitiesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteActivitiesId(ctx, id)
-	return err
-}
-
-// GetActivitiesId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetActivitiesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetActivitiesId(ctx, id)
-	return err
-}
-
-// PutActivitiesId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutActivitiesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutActivitiesId(ctx, id)
-	return err
-}
-
-// GetActivityInformations converts echo context to params.
-func (w *ServerInterfaceWrapper) GetActivityInformations(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetActivityInformations(ctx)
-	return err
-}
-
-// PostActivityInformations converts echo context to params.
-func (w *ServerInterfaceWrapper) PostActivityInformations(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostActivityInformations(ctx)
-	return err
-}
-
-// DeleteActivityInformationsId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteActivityInformationsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteActivityInformationsId(ctx, id)
-	return err
-}
-
-// GetActivityInformationsId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetActivityInformationsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetActivityInformationsId(ctx, id)
-	return err
-}
-
-// PutActivityInformationsId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutActivityInformationsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutActivityInformationsId(ctx, id)
-	return err
-}
-
-// GetActivityStyles converts echo context to params.
-func (w *ServerInterfaceWrapper) GetActivityStyles(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetActivityStyles(ctx)
-	return err
-}
-
-// PostActivityStyles converts echo context to params.
-func (w *ServerInterfaceWrapper) PostActivityStyles(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostActivityStyles(ctx)
-	return err
-}
-
-// DeleteActivityStylesId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteActivityStylesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteActivityStylesId(ctx, id)
-	return err
-}
-
-// GetActivityStylesId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetActivityStylesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetActivityStylesId(ctx, id)
-	return err
-}
-
-// PutActivityStylesId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutActivityStylesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutActivityStylesId(ctx, id)
-	return err
-}
-
-// GetBudgets converts echo context to params.
-func (w *ServerInterfaceWrapper) GetBudgets(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetBudgets(ctx)
-	return err
-}
-
-// PostBudgets converts echo context to params.
-func (w *ServerInterfaceWrapper) PostBudgets(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostBudgetsParams
-	// ------------- Required query parameter "price" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "price", ctx.QueryParams(), &params.Price)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
-	}
-
-	// ------------- Optional query parameter "year_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
-	}
-
-	// ------------- Optional query parameter "source_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "source_id", ctx.QueryParams(), &params.SourceId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter source_id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostBudgets(ctx, params)
-	return err
-}
-
-// GetBudgetsDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetBudgetsDetails(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetBudgetsDetails(ctx)
-	return err
-}
-
-// GetBudgetsDetailsYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetBudgetsDetailsYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetBudgetsDetailsYear(ctx, year)
-	return err
-}
-
-// DeleteBudgetsId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteBudgetsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteBudgetsId(ctx, id)
-	return err
-}
-
-// GetBudgetsId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetBudgetsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetBudgetsId(ctx, id)
-	return err
-}
-
-// PutBudgetsId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutBudgetsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutBudgetsIdParams
-	// ------------- Optional query parameter "price" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "price", ctx.QueryParams(), &params.Price)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
-	}
-
-	// ------------- Optional query parameter "year_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
-	}
-
-	// ------------- Optional query parameter "source_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "source_id", ctx.QueryParams(), &params.SourceId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter source_id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutBudgetsId(ctx, id, params)
-	return err
-}
-
-// GetBudgetsIdDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetBudgetsIdDetails(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetBudgetsIdDetails(ctx, id)
-	return err
-}
-
-// GetBureaus converts echo context to params.
-func (w *ServerInterfaceWrapper) GetBureaus(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetBureaus(ctx)
-	return err
-}
-
-// PostBureaus converts echo context to params.
-func (w *ServerInterfaceWrapper) PostBureaus(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostBureausParams
-	// ------------- Required query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostBureaus(ctx, params)
-	return err
-}
-
-// DeleteBureausId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteBureausId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteBureausId(ctx, id)
-	return err
-}
-
-// GetBureausId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetBureausId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetBureausId(ctx, id)
-	return err
-}
-
-// PutBureausId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutBureausId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutBureausIdParams
-	// ------------- Optional query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutBureausId(ctx, id, params)
-	return err
-}
-
-// GetDepartments converts echo context to params.
-func (w *ServerInterfaceWrapper) GetDepartments(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetDepartments(ctx)
-	return err
-}
-
-// PostDepartments converts echo context to params.
-func (w *ServerInterfaceWrapper) PostDepartments(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostDepartmentsParams
-	// ------------- Optional query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostDepartments(ctx, params)
-	return err
-}
-
-// DeleteDepartmentsId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteDepartmentsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteDepartmentsId(ctx, id)
-	return err
-}
-
-// GetDepartmentsId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetDepartmentsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetDepartmentsId(ctx, id)
-	return err
-}
-
-// PutDepartmentsId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutDepartmentsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutDepartmentsIdParams
-	// ------------- Optional query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutDepartmentsId(ctx, id, params)
-	return err
-}
-
-// GetExpenses converts echo context to params.
-func (w *ServerInterfaceWrapper) GetExpenses(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetExpenses(ctx)
-	return err
-}
-
-// PostExpenses converts echo context to params.
-func (w *ServerInterfaceWrapper) PostExpenses(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostExpensesParams
-	// ------------- Optional query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// ------------- Optional query parameter "year_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostExpenses(ctx, params)
-	return err
-}
-
-// GetExpensesDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetExpensesDetails(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetExpensesDetails(ctx)
-	return err
-}
-
-// GetExpensesDetailsYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetExpensesDetailsYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetExpensesDetailsYear(ctx, year)
-	return err
-}
-
-// GetExpensesFiscalyearYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetExpensesFiscalyearYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetExpensesFiscalyearYear(ctx, year)
-	return err
-}
-
-// DeleteExpensesId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteExpensesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteExpensesId(ctx, id)
-	return err
-}
-
-// GetExpensesId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetExpensesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetExpensesId(ctx, id)
-	return err
-}
-
-// PutExpensesId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutExpensesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutExpensesIdParams
-	// ------------- Optional query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// ------------- Optional query parameter "year_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutExpensesId(ctx, id, params)
-	return err
-}
-
-// GetExpensesIdDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetExpensesIdDetails(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetExpensesIdDetails(ctx, id)
-	return err
-}
-
-// GetFundInformations converts echo context to params.
-func (w *ServerInterfaceWrapper) GetFundInformations(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetFundInformations(ctx)
-	return err
-}
-
-// PostFundInformations converts echo context to params.
-func (w *ServerInterfaceWrapper) PostFundInformations(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostFundInformationsParams
-	// ------------- Required query parameter "user_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "user_id", ctx.QueryParams(), &params.UserId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
-	}
-
-	// ------------- Required query parameter "teacher_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "teacher_id", ctx.QueryParams(), &params.TeacherId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter teacher_id: %s", err))
-	}
-
-	// ------------- Required query parameter "price" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "price", ctx.QueryParams(), &params.Price)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
-	}
-
-	// ------------- Optional query parameter "remark" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
-	}
-
-	// ------------- Optional query parameter "is_first_check" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "is_first_check", ctx.QueryParams(), &params.IsFirstCheck)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_first_check: %s", err))
-	}
-
-	// ------------- Optional query parameter "is_last_check" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "is_last_check", ctx.QueryParams(), &params.IsLastCheck)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_last_check: %s", err))
-	}
-
-	// ------------- Optional query parameter "received_at" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "received_at", ctx.QueryParams(), &params.ReceivedAt)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter received_at: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostFundInformations(ctx, params)
-	return err
-}
-
-// GetFundInformationsDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetFundInformationsDetails(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetFundInformationsDetails(ctx)
-	return err
-}
-
-// GetFundInformationsDetailsYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetFundInformationsDetailsYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetFundInformationsDetailsYear(ctx, year)
-	return err
-}
-
-// DeleteFundInformationsId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteFundInformationsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteFundInformationsId(ctx, id)
-	return err
-}
-
-// GetFundInformationsId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetFundInformationsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetFundInformationsId(ctx, id)
-	return err
-}
-
-// PutFundInformationsId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutFundInformationsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutFundInformationsIdParams
-	// ------------- Required query parameter "user_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "user_id", ctx.QueryParams(), &params.UserId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
-	}
-
-	// ------------- Required query parameter "teacher_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "teacher_id", ctx.QueryParams(), &params.TeacherId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter teacher_id: %s", err))
-	}
-
-	// ------------- Required query parameter "price" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "price", ctx.QueryParams(), &params.Price)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
-	}
-
-	// ------------- Optional query parameter "remark" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
-	}
-
-	// ------------- Optional query parameter "is_first_check" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "is_first_check", ctx.QueryParams(), &params.IsFirstCheck)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_first_check: %s", err))
-	}
-
-	// ------------- Optional query parameter "is_last_check" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "is_last_check", ctx.QueryParams(), &params.IsLastCheck)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_last_check: %s", err))
-	}
-
-	// ------------- Optional query parameter "received_at" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "received_at", ctx.QueryParams(), &params.ReceivedAt)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter received_at: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutFundInformationsId(ctx, id, params)
-	return err
-}
-
-// GetFundInformationsIdDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetFundInformationsIdDetails(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetFundInformationsIdDetails(ctx, id)
-	return err
-}
-
-// PostPasswordResetRequest converts echo context to params.
-func (w *ServerInterfaceWrapper) PostPasswordResetRequest(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostPasswordResetRequestParams
-	// ------------- Optional query parameter "email" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "email", ctx.QueryParams(), &params.Email)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter email: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostPasswordResetRequest(ctx, params)
-	return err
-}
-
-// PostPasswordResetId converts echo context to params.
-func (w *ServerInterfaceWrapper) PostPasswordResetId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostPasswordResetId(ctx, id)
-	return err
-}
-
-// PostPasswordResetIdValid converts echo context to params.
-func (w *ServerInterfaceWrapper) PostPasswordResetIdValid(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostPasswordResetIdValidParams
-	// ------------- Optional query parameter "token" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "token", ctx.QueryParams(), &params.Token)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter token: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostPasswordResetIdValid(ctx, id, params)
-	return err
-}
-
-// GetPurchaseitems converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchaseitems(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchaseitems(ctx)
-	return err
-}
-
-// PostPurchaseitems converts echo context to params.
-func (w *ServerInterfaceWrapper) PostPurchaseitems(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostPurchaseitemsParams
-	// ------------- Optional query parameter "item" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "item", ctx.QueryParams(), &params.Item)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter item: %s", err))
-	}
-
-	// ------------- Optional query parameter "price" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "price", ctx.QueryParams(), &params.Price)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
-	}
-
-	// ------------- Optional query parameter "quantity" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "quantity", ctx.QueryParams(), &params.Quantity)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter quantity: %s", err))
-	}
-
-	// ------------- Optional query parameter "detail" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "detail", ctx.QueryParams(), &params.Detail)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter detail: %s", err))
-	}
-
-	// ------------- Optional query parameter "url" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "url", ctx.QueryParams(), &params.Url)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter url: %s", err))
-	}
-
-	// ------------- Optional query parameter "purchase_order_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "purchase_order_id", ctx.QueryParams(), &params.PurchaseOrderId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter purchase_order_id: %s", err))
-	}
-
-	// ------------- Optional query parameter "finance_check" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostPurchaseitems(ctx, params)
-	return err
-}
-
-// GetPurchaseitemsDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchaseitemsDetails(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchaseitemsDetails(ctx)
-	return err
-}
-
-// DeletePurchaseitemsId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeletePurchaseitemsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeletePurchaseitemsId(ctx, id)
-	return err
-}
-
-// GetPurchaseitemsId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchaseitemsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchaseitemsId(ctx, id)
-	return err
-}
-
-// PutPurchaseitemsId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutPurchaseitemsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutPurchaseitemsIdParams
-	// ------------- Optional query parameter "item" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "item", ctx.QueryParams(), &params.Item)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter item: %s", err))
-	}
-
-	// ------------- Optional query parameter "price" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "price", ctx.QueryParams(), &params.Price)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
-	}
-
-	// ------------- Optional query parameter "quantity" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "quantity", ctx.QueryParams(), &params.Quantity)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter quantity: %s", err))
-	}
-
-	// ------------- Optional query parameter "detail" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "detail", ctx.QueryParams(), &params.Detail)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter detail: %s", err))
-	}
-
-	// ------------- Optional query parameter "url" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "url", ctx.QueryParams(), &params.Url)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter url: %s", err))
-	}
-
-	// ------------- Optional query parameter "purchase_order_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "purchase_order_id", ctx.QueryParams(), &params.PurchaseOrderId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter purchase_order_id: %s", err))
-	}
-
-	// ------------- Optional query parameter "finance_check" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutPurchaseitemsId(ctx, id, params)
-	return err
-}
-
-// GetPurchaseitemsIdDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchaseitemsIdDetails(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchaseitemsIdDetails(ctx, id)
-	return err
-}
-
-// GetPurchaseorders converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchaseorders(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchaseorders(ctx)
-	return err
-}
-
-// PostPurchaseorders converts echo context to params.
-func (w *ServerInterfaceWrapper) PostPurchaseorders(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostPurchaseordersParams
-	// ------------- Optional query parameter "deadline" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "deadline", ctx.QueryParams(), &params.Deadline)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter deadline: %s", err))
-	}
-
-	// ------------- Optional query parameter "user_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "user_id", ctx.QueryParams(), &params.UserId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
-	}
-
-	// ------------- Optional query parameter "expense_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "expense_id", ctx.QueryParams(), &params.ExpenseId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter expense_id: %s", err))
-	}
-
-	// ------------- Optional query parameter "finance_check" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostPurchaseorders(ctx, params)
-	return err
-}
-
-// GetPurchaseordersDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchaseordersDetails(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchaseordersDetails(ctx)
-	return err
-}
-
-// GetPurchaseordersDetailsUnregisteredYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchaseordersDetailsUnregisteredYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchaseordersDetailsUnregisteredYear(ctx, year)
-	return err
-}
-
-// GetPurchaseordersDetailsYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchaseordersDetailsYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchaseordersDetailsYear(ctx, year)
-	return err
-}
-
-// PostPurchaseordersSendId converts echo context to params.
-func (w *ServerInterfaceWrapper) PostPurchaseordersSendId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostPurchaseordersSendId(ctx, id)
-	return err
-}
-
-// DeletePurchaseordersId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeletePurchaseordersId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeletePurchaseordersId(ctx, id)
-	return err
-}
-
-// GetPurchaseordersId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchaseordersId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchaseordersId(ctx, id)
-	return err
-}
-
-// PutPurchaseordersId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutPurchaseordersId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutPurchaseordersIdParams
-	// ------------- Optional query parameter "deadline" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "deadline", ctx.QueryParams(), &params.Deadline)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter deadline: %s", err))
-	}
-
-	// ------------- Optional query parameter "user_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "user_id", ctx.QueryParams(), &params.UserId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
-	}
-
-	// ------------- Optional query parameter "expense_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "expense_id", ctx.QueryParams(), &params.ExpenseId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter expense_id: %s", err))
-	}
-
-	// ------------- Optional query parameter "finance_check" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutPurchaseordersId(ctx, id, params)
-	return err
-}
-
-// GetPurchaseordersIdDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchaseordersIdDetails(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchaseordersIdDetails(ctx, id)
-	return err
-}
-
-// GetPurchasereports converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchasereports(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchasereports(ctx)
-	return err
-}
-
-// PostPurchasereports converts echo context to params.
-func (w *ServerInterfaceWrapper) PostPurchasereports(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostPurchasereports(ctx)
-	return err
-}
-
-// GetPurchasereportsDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchasereportsDetails(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchasereportsDetails(ctx)
-	return err
-}
-
-// GetPurchasereportsDetailsYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchasereportsDetailsYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchasereportsDetailsYear(ctx, year)
-	return err
-}
-
-// DeletePurchasereportsId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeletePurchasereportsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeletePurchasereportsId(ctx, id)
-	return err
-}
-
-// GetPurchasereportsId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchasereportsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchasereportsId(ctx, id)
-	return err
-}
-
-// PutPurchasereportsId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutPurchasereportsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutPurchasereportsId(ctx, id)
-	return err
-}
-
-// GetPurchasereportsIdDetails converts echo context to params.
-func (w *ServerInterfaceWrapper) GetPurchasereportsIdDetails(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetPurchasereportsIdDetails(ctx, id)
-	return err
-}
-
-// GetReceipts converts echo context to params.
-func (w *ServerInterfaceWrapper) GetReceipts(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetReceipts(ctx)
-	return err
-}
-
-// PostReceipts converts echo context to params.
-func (w *ServerInterfaceWrapper) PostReceipts(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostReceipts(ctx)
-	return err
-}
-
-// GetReceiptsReportsId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetReceiptsReportsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetReceiptsReportsId(ctx, id)
-	return err
-}
-
-// DeleteReceiptsId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteReceiptsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteReceiptsId(ctx, id)
-	return err
-}
-
-// GetReceiptsId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetReceiptsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetReceiptsId(ctx, id)
-	return err
-}
-
-// PutReceiptsId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutReceiptsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutReceiptsId(ctx, id)
-	return err
-}
-
-// GetSources converts echo context to params.
-func (w *ServerInterfaceWrapper) GetSources(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetSources(ctx)
-	return err
-}
-
-// PostSources converts echo context to params.
-func (w *ServerInterfaceWrapper) PostSources(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostSourcesParams
-	// ------------- Required query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostSources(ctx, params)
-	return err
-}
-
-// DeleteSourcesId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteSourcesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteSourcesId(ctx, id)
-	return err
-}
-
-// GetSourcesId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetSourcesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetSourcesId(ctx, id)
-	return err
-}
-
-// PutSourcesId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutSourcesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutSourcesIdParams
-	// ------------- Required query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutSourcesId(ctx, id, params)
-	return err
-}
-
-// GetSponsors converts echo context to params.
-func (w *ServerInterfaceWrapper) GetSponsors(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetSponsors(ctx)
-	return err
-}
-
-// PostSponsors converts echo context to params.
-func (w *ServerInterfaceWrapper) PostSponsors(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostSponsors(ctx)
-	return err
-}
-
-// GetSponsorsPeriodsYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetSponsorsPeriodsYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetSponsorsPeriodsYear(ctx, year)
-	return err
-}
-
-// DeleteSponsorsId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteSponsorsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteSponsorsId(ctx, id)
-	return err
-}
-
-// GetSponsorsId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetSponsorsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetSponsorsId(ctx, id)
-	return err
-}
-
-// PutSponsorsId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutSponsorsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutSponsorsId(ctx, id)
-	return err
-}
-
-// GetSponsorstyles converts echo context to params.
-func (w *ServerInterfaceWrapper) GetSponsorstyles(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetSponsorstyles(ctx)
-	return err
-}
-
-// PostSponsorstyles converts echo context to params.
-func (w *ServerInterfaceWrapper) PostSponsorstyles(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostSponsorstyles(ctx)
-	return err
-}
-
-// DeleteSponsorstylesId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteSponsorstylesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteSponsorstylesId(ctx, id)
-	return err
-}
-
-// GetSponsorstylesId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetSponsorstylesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetSponsorstylesId(ctx, id)
-	return err
-}
-
-// PutSponsorstylesId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutSponsorstylesId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutSponsorstylesId(ctx, id)
-	return err
-}
-
-// GetTeachers converts echo context to params.
-func (w *ServerInterfaceWrapper) GetTeachers(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetTeachers(ctx)
-	return err
-}
-
-// PostTeachers converts echo context to params.
-func (w *ServerInterfaceWrapper) PostTeachers(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostTeachersParams
-	// ------------- Required query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// ------------- Required query parameter "position" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "position", ctx.QueryParams(), &params.Position)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter position: %s", err))
-	}
-
-	// ------------- Optional query parameter "department_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "department_id", ctx.QueryParams(), &params.DepartmentId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter department_id: %s", err))
-	}
-
-	// ------------- Optional query parameter "room" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "room", ctx.QueryParams(), &params.Room)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter room: %s", err))
-	}
-
-	// ------------- Optional query parameter "is_black" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "is_black", ctx.QueryParams(), &params.IsBlack)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_black: %s", err))
-	}
-
-	// ------------- Optional query parameter "remark" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostTeachers(ctx, params)
-	return err
-}
-
-// DeleteTeachersDelete converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteTeachersDelete(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteTeachersDelete(ctx)
-	return err
-}
-
-// GetTeachersFundRegisteredYear converts echo context to params.
-func (w *ServerInterfaceWrapper) GetTeachersFundRegisteredYear(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "year" -------------
-	var year int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetTeachersFundRegisteredYear(ctx, year)
-	return err
-}
-
-// DeleteTeachersId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteTeachersId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteTeachersId(ctx, id)
-	return err
-}
-
-// GetTeachersId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetTeachersId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetTeachersId(ctx, id)
-	return err
-}
-
-// PutTeachersId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutTeachersId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutTeachersIdParams
-	// ------------- Required query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// ------------- Required query parameter "position" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "position", ctx.QueryParams(), &params.Position)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter position: %s", err))
-	}
-
-	// ------------- Optional query parameter "department_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "department_id", ctx.QueryParams(), &params.DepartmentId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter department_id: %s", err))
-	}
-
-	// ------------- Optional query parameter "room" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "room", ctx.QueryParams(), &params.Room)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter room: %s", err))
-	}
-
-	// ------------- Optional query parameter "is_black" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "is_black", ctx.QueryParams(), &params.IsBlack)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_black: %s", err))
-	}
-
-	// ------------- Optional query parameter "remark" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutTeachersId(ctx, id, params)
-	return err
-}
-
-// GetUsers converts echo context to params.
-func (w *ServerInterfaceWrapper) GetUsers(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetUsers(ctx)
-	return err
-}
-
-// PostUsers converts echo context to params.
-func (w *ServerInterfaceWrapper) PostUsers(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostUsersParams
-	// ------------- Required query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// ------------- Required query parameter "bureau_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "bureau_id", ctx.QueryParams(), &params.BureauId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter bureau_id: %s", err))
-	}
-
-	// ------------- Required query parameter "role_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "role_id", ctx.QueryParams(), &params.RoleId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter role_id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostUsers(ctx, params)
-	return err
-}
-
-// DeleteUsersDelete converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteUsersDelete(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteUsersDelete(ctx)
-	return err
-}
-
-// DeleteUsersId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteUsersId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteUsersId(ctx, id)
-	return err
-}
-
-// GetUsersId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetUsersId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetUsersId(ctx, id)
-	return err
-}
-
-// PutUsersId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutUsersId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutUsersIdParams
-	// ------------- Required query parameter "name" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
-	}
-
-	// ------------- Required query parameter "bureau_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "bureau_id", ctx.QueryParams(), &params.BureauId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter bureau_id: %s", err))
-	}
-
-	// ------------- Required query parameter "role_id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "role_id", ctx.QueryParams(), &params.RoleId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter role_id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutUsersId(ctx, id, params)
-	return err
-}
-
-// GetYears converts echo context to params.
-func (w *ServerInterfaceWrapper) GetYears(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetYears(ctx)
-	return err
-}
-
-// PostYears converts echo context to params.
-func (w *ServerInterfaceWrapper) PostYears(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PostYearsParams
-	// ------------- Required query parameter "year" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "year", ctx.QueryParams(), &params.Year)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostYears(ctx, params)
-	return err
-}
-
-// GetYearsPeriods converts echo context to params.
-func (w *ServerInterfaceWrapper) GetYearsPeriods(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetYearsPeriods(ctx)
-	return err
-}
-
-// PostYearsPeriods converts echo context to params.
-func (w *ServerInterfaceWrapper) PostYearsPeriods(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PostYearsPeriods(ctx)
-	return err
-}
-
-// DeleteYearsPeriodsId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteYearsPeriodsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteYearsPeriodsId(ctx, id)
-	return err
-}
-
-// PutYearsPeriodsId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutYearsPeriodsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutYearsPeriodsId(ctx, id)
-	return err
-}
-
-// DeleteYearsId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteYearsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.DeleteYearsId(ctx, id)
-	return err
-}
-
-// GetYearsId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetYearsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.GetYearsId(ctx, id)
-	return err
-}
-
-// PutYearsId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutYearsId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "id" -------------
-	var id int
-
-	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params PutYearsIdParams
-	// ------------- Required query parameter "year" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "year", ctx.QueryParams(), &params.Year)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshaled arguments
-	err = w.Handler.PutYearsId(ctx, id, params)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.GET(baseURL+"/activities", wrapper.GetActivities)
-	router.POST(baseURL+"/activities", wrapper.PostActivities)
-	router.GET(baseURL+"/activities/details", wrapper.GetActivitiesDetails)
-	router.GET(baseURL+"/activities/details/:year", wrapper.GetActivitiesDetailsYear)
-	router.GET(baseURL+"/activities/filtered_details", wrapper.GetActivitiesFilteredDetails)
-	router.GET(baseURL+"/activities/filtered_details/:year", wrapper.GetActivitiesFilteredDetailsYear)
-	router.DELETE(baseURL+"/activities/:id", wrapper.DeleteActivitiesId)
-	router.GET(baseURL+"/activities/:id", wrapper.GetActivitiesId)
-	router.PUT(baseURL+"/activities/:id", wrapper.PutActivitiesId)
-	router.GET(baseURL+"/activity_informations", wrapper.GetActivityInformations)
-	router.POST(baseURL+"/activity_informations", wrapper.PostActivityInformations)
-	router.DELETE(baseURL+"/activity_informations/:id", wrapper.DeleteActivityInformationsId)
-	router.GET(baseURL+"/activity_informations/:id", wrapper.GetActivityInformationsId)
-	router.PUT(baseURL+"/activity_informations/:id", wrapper.PutActivityInformationsId)
-	router.GET(baseURL+"/activity_styles", wrapper.GetActivityStyles)
-	router.POST(baseURL+"/activity_styles", wrapper.PostActivityStyles)
-	router.DELETE(baseURL+"/activity_styles/:id", wrapper.DeleteActivityStylesId)
-	router.GET(baseURL+"/activity_styles/:id", wrapper.GetActivityStylesId)
-	router.PUT(baseURL+"/activity_styles/:id", wrapper.PutActivityStylesId)
-	router.GET(baseURL+"/budgets", wrapper.GetBudgets)
-	router.POST(baseURL+"/budgets", wrapper.PostBudgets)
-	router.GET(baseURL+"/budgets/details", wrapper.GetBudgetsDetails)
-	router.GET(baseURL+"/budgets/details/:year", wrapper.GetBudgetsDetailsYear)
-	router.DELETE(baseURL+"/budgets/:id", wrapper.DeleteBudgetsId)
-	router.GET(baseURL+"/budgets/:id", wrapper.GetBudgetsId)
-	router.PUT(baseURL+"/budgets/:id", wrapper.PutBudgetsId)
-	router.GET(baseURL+"/budgets/:id/details", wrapper.GetBudgetsIdDetails)
-	router.GET(baseURL+"/bureaus", wrapper.GetBureaus)
-	router.POST(baseURL+"/bureaus", wrapper.PostBureaus)
-	router.DELETE(baseURL+"/bureaus/:id", wrapper.DeleteBureausId)
-	router.GET(baseURL+"/bureaus/:id", wrapper.GetBureausId)
-	router.PUT(baseURL+"/bureaus/:id", wrapper.PutBureausId)
-	router.GET(baseURL+"/departments", wrapper.GetDepartments)
-	router.POST(baseURL+"/departments", wrapper.PostDepartments)
-	router.DELETE(baseURL+"/departments/:id", wrapper.DeleteDepartmentsId)
-	router.GET(baseURL+"/departments/:id", wrapper.GetDepartmentsId)
-	router.PUT(baseURL+"/departments/:id", wrapper.PutDepartmentsId)
-	router.GET(baseURL+"/expenses", wrapper.GetExpenses)
-	router.POST(baseURL+"/expenses", wrapper.PostExpenses)
-	router.GET(baseURL+"/expenses/details", wrapper.GetExpensesDetails)
-	router.GET(baseURL+"/expenses/details/:year", wrapper.GetExpensesDetailsYear)
-	router.GET(baseURL+"/expenses/fiscalyear/:year", wrapper.GetExpensesFiscalyearYear)
-	router.DELETE(baseURL+"/expenses/:id", wrapper.DeleteExpensesId)
-	router.GET(baseURL+"/expenses/:id", wrapper.GetExpensesId)
-	router.PUT(baseURL+"/expenses/:id", wrapper.PutExpensesId)
-	router.GET(baseURL+"/expenses/:id/details", wrapper.GetExpensesIdDetails)
-	router.GET(baseURL+"/fund_informations", wrapper.GetFundInformations)
-	router.POST(baseURL+"/fund_informations", wrapper.PostFundInformations)
-	router.GET(baseURL+"/fund_informations/details", wrapper.GetFundInformationsDetails)
-	router.GET(baseURL+"/fund_informations/details/:year", wrapper.GetFundInformationsDetailsYear)
-	router.DELETE(baseURL+"/fund_informations/:id", wrapper.DeleteFundInformationsId)
-	router.GET(baseURL+"/fund_informations/:id", wrapper.GetFundInformationsId)
-	router.PUT(baseURL+"/fund_informations/:id", wrapper.PutFundInformationsId)
-	router.GET(baseURL+"/fund_informations/:id/details", wrapper.GetFundInformationsIdDetails)
-	router.POST(baseURL+"/password_reset/request", wrapper.PostPasswordResetRequest)
-	router.POST(baseURL+"/password_reset/:id", wrapper.PostPasswordResetId)
-	router.POST(baseURL+"/password_reset/:id/valid", wrapper.PostPasswordResetIdValid)
-	router.GET(baseURL+"/purchaseitems", wrapper.GetPurchaseitems)
-	router.POST(baseURL+"/purchaseitems", wrapper.PostPurchaseitems)
-	router.GET(baseURL+"/purchaseitems/details", wrapper.GetPurchaseitemsDetails)
-	router.DELETE(baseURL+"/purchaseitems/:id", wrapper.DeletePurchaseitemsId)
-	router.GET(baseURL+"/purchaseitems/:id", wrapper.GetPurchaseitemsId)
-	router.PUT(baseURL+"/purchaseitems/:id", wrapper.PutPurchaseitemsId)
-	router.GET(baseURL+"/purchaseitems/:id/details", wrapper.GetPurchaseitemsIdDetails)
-	router.GET(baseURL+"/purchaseorders", wrapper.GetPurchaseorders)
-	router.POST(baseURL+"/purchaseorders", wrapper.PostPurchaseorders)
-	router.GET(baseURL+"/purchaseorders/details", wrapper.GetPurchaseordersDetails)
-	router.GET(baseURL+"/purchaseorders/details/unregistered/:year", wrapper.GetPurchaseordersDetailsUnregisteredYear)
-	router.GET(baseURL+"/purchaseorders/details/:year", wrapper.GetPurchaseordersDetailsYear)
-	router.POST(baseURL+"/purchaseorders/send/:id", wrapper.PostPurchaseordersSendId)
-	router.DELETE(baseURL+"/purchaseorders/:id", wrapper.DeletePurchaseordersId)
-	router.GET(baseURL+"/purchaseorders/:id", wrapper.GetPurchaseordersId)
-	router.PUT(baseURL+"/purchaseorders/:id", wrapper.PutPurchaseordersId)
-	router.GET(baseURL+"/purchaseorders/:id/details", wrapper.GetPurchaseordersIdDetails)
-	router.GET(baseURL+"/purchasereports", wrapper.GetPurchasereports)
-	router.POST(baseURL+"/purchasereports", wrapper.PostPurchasereports)
-	router.GET(baseURL+"/purchasereports/details", wrapper.GetPurchasereportsDetails)
-	router.GET(baseURL+"/purchasereports/details/:year", wrapper.GetPurchasereportsDetailsYear)
-	router.DELETE(baseURL+"/purchasereports/:id", wrapper.DeletePurchasereportsId)
-	router.GET(baseURL+"/purchasereports/:id", wrapper.GetPurchasereportsId)
-	router.PUT(baseURL+"/purchasereports/:id", wrapper.PutPurchasereportsId)
-	router.GET(baseURL+"/purchasereports/:id/details", wrapper.GetPurchasereportsIdDetails)
-	router.GET(baseURL+"/receipts", wrapper.GetReceipts)
-	router.POST(baseURL+"/receipts", wrapper.PostReceipts)
-	router.GET(baseURL+"/receipts/reports/:id", wrapper.GetReceiptsReportsId)
-	router.DELETE(baseURL+"/receipts/:id", wrapper.DeleteReceiptsId)
-	router.GET(baseURL+"/receipts/:id", wrapper.GetReceiptsId)
-	router.PUT(baseURL+"/receipts/:id", wrapper.PutReceiptsId)
-	router.GET(baseURL+"/sources", wrapper.GetSources)
-	router.POST(baseURL+"/sources", wrapper.PostSources)
-	router.DELETE(baseURL+"/sources/:id", wrapper.DeleteSourcesId)
-	router.GET(baseURL+"/sources/:id", wrapper.GetSourcesId)
-	router.PUT(baseURL+"/sources/:id", wrapper.PutSourcesId)
-	router.GET(baseURL+"/sponsors", wrapper.GetSponsors)
-	router.POST(baseURL+"/sponsors", wrapper.PostSponsors)
-	router.GET(baseURL+"/sponsors/periods/:year", wrapper.GetSponsorsPeriodsYear)
-	router.DELETE(baseURL+"/sponsors/:id", wrapper.DeleteSponsorsId)
-	router.GET(baseURL+"/sponsors/:id", wrapper.GetSponsorsId)
-	router.PUT(baseURL+"/sponsors/:id", wrapper.PutSponsorsId)
-	router.GET(baseURL+"/sponsorstyles", wrapper.GetSponsorstyles)
-	router.POST(baseURL+"/sponsorstyles", wrapper.PostSponsorstyles)
-	router.DELETE(baseURL+"/sponsorstyles/:id", wrapper.DeleteSponsorstylesId)
-	router.GET(baseURL+"/sponsorstyles/:id", wrapper.GetSponsorstylesId)
-	router.PUT(baseURL+"/sponsorstyles/:id", wrapper.PutSponsorstylesId)
-	router.GET(baseURL+"/teachers", wrapper.GetTeachers)
-	router.POST(baseURL+"/teachers", wrapper.PostTeachers)
-	router.DELETE(baseURL+"/teachers/delete", wrapper.DeleteTeachersDelete)
-	router.GET(baseURL+"/teachers/fundRegistered/:year", wrapper.GetTeachersFundRegisteredYear)
-	router.DELETE(baseURL+"/teachers/:id", wrapper.DeleteTeachersId)
-	router.GET(baseURL+"/teachers/:id", wrapper.GetTeachersId)
-	router.PUT(baseURL+"/teachers/:id", wrapper.PutTeachersId)
-	router.GET(baseURL+"/users", wrapper.GetUsers)
-	router.POST(baseURL+"/users", wrapper.PostUsers)
-	router.DELETE(baseURL+"/users/delete", wrapper.DeleteUsersDelete)
-	router.DELETE(baseURL+"/users/:id", wrapper.DeleteUsersId)
-	router.GET(baseURL+"/users/:id", wrapper.GetUsersId)
-	router.PUT(baseURL+"/users/:id", wrapper.PutUsersId)
-	router.GET(baseURL+"/years", wrapper.GetYears)
-	router.POST(baseURL+"/years", wrapper.PostYears)
-	router.GET(baseURL+"/years/periods", wrapper.GetYearsPeriods)
-	router.POST(baseURL+"/years/periods", wrapper.PostYearsPeriods)
-	router.DELETE(baseURL+"/years/periods/:id", wrapper.DeleteYearsPeriodsId)
-	router.PUT(baseURL+"/years/periods/:id", wrapper.PutYearsPeriodsId)
-	router.DELETE(baseURL+"/years/:id", wrapper.DeleteYearsId)
-	router.GET(baseURL+"/years/:id", wrapper.GetYearsId)
-	router.PUT(baseURL+"/years/:id", wrapper.PutYearsId)
-
-}

From fdb3a081d42e86372ddfa8e72e90b0445998baa1 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 23 Dec 2024 17:02:47 +0000
Subject: [PATCH 19/30] =?UTF-8?q?[fix]=20swagger-ui=E3=81=AE=E5=88=87?=
 =?UTF-8?q?=E3=82=8A=E9=9B=A2=E3=81=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 compose.swagger.yml     |   10 +
 swagger-ui/swagger.yaml | 2432 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 2442 insertions(+)
 create mode 100644 compose.swagger.yml
 create mode 100644 swagger-ui/swagger.yaml

diff --git a/compose.swagger.yml b/compose.swagger.yml
new file mode 100644
index 000000000..4f8637166
--- /dev/null
+++ b/compose.swagger.yml
@@ -0,0 +1,10 @@
+services:
+  swagger-ui:
+    image: swaggerapi/swagger-ui
+    container_name: "nutfes-finansu-swagger-ui"
+    ports:
+      - "8000:8080"
+    volumes:
+      - ./swagger-ui/swagger.yaml:/swagger.yaml
+    environment:
+      SWAGGER_JSON: /swagger.yaml
diff --git a/swagger-ui/swagger.yaml b/swagger-ui/swagger.yaml
new file mode 100644
index 000000000..45545f0de
--- /dev/null
+++ b/swagger-ui/swagger.yaml
@@ -0,0 +1,2432 @@
+openapi: 3.0.1
+info:
+  title: NUTFes FinanSu API
+  description: FinanSu APIドキュメント
+  contact: {}
+  version: 2.0.0
+servers:
+  - url: http://localhost:1323/
+paths:
+  /activities:
+    get:
+      tags:
+        - activity
+      description: activitiesの一覧を取得
+      responses:
+        "200":
+          description: activitiesの一覧の取得
+          content: {}
+    post:
+      tags:
+        - activity
+      description: activitiesの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity"
+        required: false
+      responses:
+        "200":
+          description: create されたactivityが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity
+  /activities/details:
+    get:
+      tags:
+        - activity
+      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
+      responses:
+        "200":
+          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
+          content: {}
+  /activities/details/{year}:
+    get:
+      tags:
+        - activity
+      description: "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得"
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得"
+          content: {}
+  /activities/filtered_details:
+    get:
+      tags:
+        - activity
+      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
+      requestBody:
+        description: Filter by keyword
+        content:
+          "*/*":
+            schema:
+              type: string
+        required: false
+      responses:
+        "200":
+          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
+          content: {}
+      x-codegen-request-body-name: keyword
+  /activities/filtered_details/{year}:
+    get:
+      tags:
+        - activity
+      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
+      parameters:
+        - name: year
+          in: path
+          description: Filter by year.
+          required: true
+          schema:
+            type: string
+      requestBody:
+        description: Filter by keyword
+        content:
+          "*/*":
+            schema:
+              type: string
+        required: false
+      responses:
+        "200":
+          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
+          content: {}
+      x-codegen-request-body-name: keyword
+  /activities/{id}:
+    get:
+      tags:
+        - activity
+      description: IDで指定されたactivitiesの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activitiesの取得
+          content: {}
+    put:
+      tags:
+        - activity
+      description: activitiesの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity"
+        required: false
+      responses:
+        "200":
+          description: 更新されたactivitiesが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity
+    delete:
+      tags:
+        - activity
+      description: IDを指定してactivitiesの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activitiesの削除完了
+          content: {}
+  /activity_informations:
+    get:
+      tags:
+        - activity_information
+      description: activity_informationの一覧を取得
+      responses:
+        "200":
+          description: activity_informationの一覧の取得
+          content: {}
+    post:
+      tags:
+        - activity_information
+      description: activity_informationの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_information"
+        required: false
+      responses:
+        "200":
+          description: create されたactivity_informationが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_information
+  /activity_informations/{id}:
+    get:
+      tags:
+        - activity_information
+      description: IDで指定されたactivity_informationsの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_informationの取得
+          content: {}
+    put:
+      tags:
+        - activity_information
+      description: activity_informationの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_information"
+        required: false
+      responses:
+        "200":
+          description: 更新されたactivity_informationが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_information
+    delete:
+      tags:
+        - activity_information
+      description: IDを指定してactivity_informationの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_informationの削除完了
+          content: {}
+  /activity_styles:
+    get:
+      tags:
+        - activity_style
+      description: activity_styleの一覧を取得
+      responses:
+        "200":
+          description: activity_styleの一覧の取得
+          content: {}
+    post:
+      tags:
+        - activity_style
+      description: activity_styleの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_style"
+        required: false
+      responses:
+        "200":
+          description: createされたactivity_styleが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_style
+  /activity_styles/{id}:
+    get:
+      tags:
+        - activity_style
+      description: IDで指定されたactivity_styleの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_styleの取得
+          content: {}
+    put:
+      tags:
+        - activity_style
+      description: activity_styleの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_style"
+        required: false
+      responses:
+        "200":
+          description: 更新されたactivity_styleが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_style
+    delete:
+      tags:
+        - activity_style
+      description: IDを指定してactivity_styleの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_styleの削除完了
+          content: {}
+  /budgets:
+    get:
+      tags:
+        - budget
+      description: budgetの一覧を取得
+      responses:
+        "200":
+          description: budgetの一覧の取得
+          content: {}
+    post:
+      tags:
+        - budget
+      description: budgetの作成
+      parameters:
+        - name: price
+          in: query
+          description: price
+          required: true
+          schema:
+            type: integer
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: integer
+        - name: source_id
+          in: query
+          description: source_id
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: create されたbudgetが返ってくる
+          content: {}
+  /budgets/details:
+    get:
+      tags:
+        - budget
+      description: budgetに紐づくyearとsourceの一覧を取得
+      responses:
+        "200":
+          description: budgetに紐づくyearとsourceの一覧を取得
+          content: {}
+  /budgets/details/{year}:
+    get:
+      tags:
+        - budget
+      description: 年度で指定されたbudgetsに紐づく年度とソースを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 年度で指定されたbudgetsに紐づく年度とソースを取得
+          content: {}
+  /budgets/{id}:
+    get:
+      tags:
+        - budget
+      description: IDで指定されたbudgetの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: budgetの取得
+          content: {}
+    put:
+      tags:
+        - budget
+      description: budgetの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: price
+          in: query
+          description: price
+          schema:
+            type: integer
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: integer
+        - name: source_id
+          in: query
+          description: source_id
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 更新されたbudgetが返ってくる
+          content: {}
+    delete:
+      tags:
+        - budget
+      description: IDを指定してbudgetの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: budgetの削除完了
+          content: {}
+  /budgets/{id}/details:
+    get:
+      tags:
+        - budget
+      description: IDで指定されたbudgetに紐づくyearとsourceを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: budgetに紐づくyearとsourceを取得
+          content: {}
+  /bureaus:
+    get:
+      tags:
+        - bureau
+      description: bureauの一覧を取得
+      responses:
+        "200":
+          description: bureauの一覧の取得
+          content: {}
+    post:
+      tags:
+        - bureau
+      description: bureauの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: create されたbureauが返ってくる
+          content: {}
+  /bureaus/{id}:
+    get:
+      tags:
+        - bureau
+      description: IDで指定されたbureauの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: bureauの取得
+          content: {}
+    put:
+      tags:
+        - bureau
+      description: bureauの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたbureauが返ってくる
+          content: {}
+    delete:
+      tags:
+        - bureau
+      description: IDを指定してbureauの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: bureauの削除完了
+          content: {}
+  /departments:
+    get:
+      tags:
+        - department
+      description: departmentの一覧の取得
+      responses:
+        "200":
+          description: departmentの一覧を取得
+          content: {}
+    post:
+      tags:
+        - department
+      description: departmentの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 作成されたdepartmentが返ってくる
+          content: {}
+  /departments/{id}:
+    get:
+      tags:
+        - department
+      description: IDで指定されたdepartmentの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: departmentの取得
+          content: {}
+    put:
+      tags:
+        - department
+      description: departmentの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたdepartmentが返ってくる
+          content: {}
+    delete:
+      tags:
+        - department
+      description: IDを指定してdepartmentの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: departmentの削除完了
+          content: {}
+  /expenses:
+    get:
+      tags:
+        - expense
+      description: expenseの一覧の取得
+      responses:
+        "200":
+          description: expenseの一覧を取得
+          content: {}
+    post:
+      tags:
+        - expense
+      description: expenseの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 作成されたexpenseが返ってくる
+          content: {}
+  /expenses/details:
+    get:
+      tags:
+        - expense
+      description: expenseに紐づくpurchase_itemの一覧を取得
+      responses:
+        "200":
+          description: expenseに紐づくpurchase_itemの一覧を取得
+          content: {}
+  /expenses/{id}:
+    get:
+      tags:
+        - expense
+      description: IDで指定されたexpenseの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: expenseの取得
+          content: {}
+    put:
+      tags:
+        - expense
+      description: expenseの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたexpenseが返ってくる
+          content: {}
+    delete:
+      tags:
+        - expense
+      description: IDを指定してexpenseの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: expenseの削除完了
+          content: {}
+  /expenses/{id}/details:
+    get:
+      tags:
+        - expense
+      description: IDで指定されたexpenseに紐づくpurchase_itemsを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたexpenseに紐づくpurchase_itemsを取得
+          content: {}
+  /expenses/details/{year}:
+    get:
+      tags:
+        - expense
+      description: 年度で指定されたexpenseに紐づく購入申請と購入報告を取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearで指定されたexpenseに紐づく購入申請と購入報告を取得
+          content: {}
+  /expenses/fiscalyear/{year}:
+    get:
+      tags:
+        - expense
+      description: 年度で指定されたexpensesを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearで指定されたexpensesを取得
+          content: {}
+  /fund_informations:
+    get:
+      tags:
+        - fund_information
+      description: fund_informationの一覧を取得
+      responses:
+        "200":
+          description: fund_informationの一覧の取得
+          content: {}
+    post:
+      tags:
+        - fund_information
+      description: fund_informationの作成
+      parameters:
+        - name: user_id
+          in: query
+          description: user_id
+          required: true
+          schema:
+            type: integer
+        - name: teacher_id
+          in: query
+          description: teacher_id
+          required: true
+          schema:
+            type: integer
+        - name: price
+          in: query
+          description: price
+          required: true
+          schema:
+            type: integer
+        - name: remark
+          in: query
+          description: remark
+          schema:
+            type: string
+        - name: is_first_check
+          in: query
+          description: is_first_check
+          schema:
+            type: boolean
+        - name: is_last_check
+          in: query
+          description: is_last_check
+          schema:
+            type: boolean
+        - name: received_at
+          in: query
+          description: received_at
+          schema:
+            type: string
+      responses:
+        "200":
+          description: create されたfund_informationが返ってくる
+          content: {}
+  /fund_informations/details:
+    get:
+      tags:
+        - fund_information
+      description: fund_informationに紐づくteacherとuserの一覧を取得
+      responses:
+        "200":
+          description: fund_informationに紐づくteacherとuserの一覧を取得
+          content: {}
+  /fund_informations/{id}:
+    get:
+      tags:
+        - fund_information
+      description: IDで指定されたfund_informationの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: fund_informationの取得
+          content: {}
+    put:
+      tags:
+        - fund_information
+      description: fund_informationの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: user_id
+          in: query
+          description: user_id
+          required: true
+          schema:
+            type: integer
+        - name: teacher_id
+          in: query
+          description: teacher_id
+          required: true
+          schema:
+            type: integer
+        - name: price
+          in: query
+          description: price
+          required: true
+          schema:
+            type: integer
+        - name: remark
+          in: query
+          description: remark
+          schema:
+            type: string
+        - name: is_first_check
+          in: query
+          description: is_first_check
+          schema:
+            type: boolean
+        - name: is_last_check
+          in: query
+          description: is_last_check
+          schema:
+            type: boolean
+        - name: received_at
+          in: query
+          description: received_at
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたfund_informationが返ってくる
+          content: {}
+    delete:
+      tags:
+        - fund_information
+      description: IDを指定してfund_informationの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: fund_informationの削除完了
+          content: {}
+  /fund_informations/{id}/details:
+    get:
+      tags:
+        - fund_information
+      description: IDで指定されたfund_informatinに紐づくteacherとuserを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: fund_informatinに紐づくteacherとuserを取得
+          content: {}
+  /fund_informations/details/{year}:
+    get:
+      tags:
+        - fund_information
+      description: 年度で指定されたfund_informationsに紐づくデータを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 年度で指定されたfund_informationsに紐づくデータを取得
+          content: {}
+  /password_reset/{id}:
+    post:
+      tags:
+        - password_reset
+      description: password_変更
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/passwordResetData"
+        required: false
+      responses:
+        "200":
+          description: passwordを変更する
+          content: {}
+      x-codegen-request-body-name: passwordResetData
+  /password_reset/request:
+    post:
+      tags:
+        - password_reset
+      description: password_reset_token発行リクエスト
+      parameters:
+        - name: email
+          in: query
+          description: email
+          schema:
+            type: string
+      responses:
+        "200":
+          description: password_reset_tokenをメールアドレスに送信する
+          content: {}
+  /password_reset/{id}/valid:
+    post:
+      tags:
+        - password_reset
+      description: トークンの称号
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: token
+          in: query
+          description: token
+          schema:
+            type: string
+      responses:
+        "200":
+          description: password_reset_tokenが正しい確認する
+          content: {}
+  /purchaseitems:
+    get:
+      tags:
+        - purchase_item
+      description: purchase_itemの一覧を取得
+      responses:
+        "200":
+          description: purchase_itemの一覧の取得
+          content: {}
+    post:
+      tags:
+        - purchase_item
+      description: purchase_itemの作成
+      parameters:
+        - name: item
+          in: query
+          description: item
+          schema:
+            type: string
+        - name: price
+          in: query
+          description: price
+          schema:
+            type: integer
+        - name: quantity
+          in: query
+          description: quantity
+          schema:
+            type: integer
+        - name: detail
+          in: query
+          description: detail
+          schema:
+            type: string
+        - name: url
+          in: query
+          description: url
+          schema:
+            type: string
+        - name: purchase_order_id
+          in: query
+          description: purchase_order_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: createされたpurchase_itemが返ってくる
+          content: {}
+  /purchaseitems/details:
+    get:
+      tags:
+        - purchase_item
+      description: purchase_itemに紐づくuserとpurchase_orderの一覧を取得
+      responses:
+        "200":
+          description: purchase_itemに紐づくuserとpurchase_orderの一覧を取得
+          content: {}
+  /purchaseitems/{id}:
+    get:
+      tags:
+        - purchase_item
+      description: IDで指定されたpurchase_itemの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_itemの取得
+          content: {}
+    put:
+      tags:
+        - purchase_item
+      description: purchase_itemの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: item
+          in: query
+          description: item
+          schema:
+            type: string
+        - name: price
+          in: query
+          description: price
+          schema:
+            type: integer
+        - name: quantity
+          in: query
+          description: quantity
+          schema:
+            type: integer
+        - name: detail
+          in: query
+          description: detail
+          schema:
+            type: string
+        - name: url
+          in: query
+          description: url
+          schema:
+            type: string
+        - name: purchase_order_id
+          in: query
+          description: purchase_order_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: 更新されたpurchase_itemが返ってくる
+          content: {}
+    delete:
+      tags:
+        - purchase_item
+      description: IDを指定してpurchase_itemの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_itemの削除完了
+          content: {}
+  /purchaseitems/{id}/details:
+    get:
+      tags:
+        - purchase_item
+      description: IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得
+          content: {}
+  /purchaseorders:
+    get:
+      tags:
+        - purchase_order
+      description: purchase_orderの一覧を取得
+      responses:
+        "200":
+          description: purchase_orderの一覧の取得
+          content: {}
+    post:
+      tags:
+        - purchase_order
+      description: purchase_orderの作成
+      parameters:
+        - name: deadline
+          in: query
+          description: deadline
+          schema:
+            type: string
+        - name: user_id
+          in: query
+          description: user_id
+          schema:
+            type: integer
+        - name: expense_id
+          in: query
+          description: expense_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: createされたpurchase_orderが返ってくる
+          content: {}
+  /purchaseorders/details:
+    get:
+      tags:
+        - purchase_order
+      description: purchaseorderに紐づくuserとitemの一覧を取得
+      responses:
+        "200":
+          description: purchase_orderに紐づくuserとpurchase_itemの一覧を取得
+          content: {}
+  /purchaseorders/{id}:
+    get:
+      tags:
+        - purchase_order
+      description: IDで指定されたpurchase_orderの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_orderの取得
+          content: {}
+    put:
+      tags:
+        - purchase_order
+      description: purchase_orderの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: deadline
+          in: query
+          description: deadline
+          schema:
+            type: string
+        - name: user_id
+          in: query
+          description: user_id
+          schema:
+            type: integer
+        - name: expense_id
+          in: query
+          description: expense_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: 更新されたpurchase_orderが返ってくる
+          content: {}
+    delete:
+      tags:
+        - purchase_order
+      description: IDを指定してpurchase_orderの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_orderの削除完了
+          content: {}
+  /purchaseorders/{id}/details:
+    get:
+      tags:
+        - purchase_order
+      description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+  /purchaseorders/details/{year}:
+    get:
+      tags:
+        - purchase_order
+      description: 年度で指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+  /purchaseorders/send/{id}:
+    post:
+      tags:
+        - purchase_order
+      description: IDで指定されたpurchase_orderのslackへメッセージ送信
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              type: array
+              items:
+                $ref: "#/components/schemas/purchaseItem"
+        required: true
+      responses:
+        "200":
+          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+      x-codegen-request-body-name: purchase_items
+  /purchaseorders/details/unregistered/{year}:
+    get:
+      tags:
+        - purchase_order
+      description: 年度で指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+  /purchasereports:
+    get:
+      tags:
+        - purchase_report
+      description: purchase_reportの一覧を取得
+      responses:
+        "200":
+          description: purchase_reportの一覧の取得
+          content: {}
+    post:
+      tags:
+        - purchase_report
+      description: purchase_reportの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/purchaseReport"
+        required: false
+      responses:
+        "200":
+          description: 作成されたpurchaseReportが返ってくる
+          content: {}
+      x-codegen-request-body-name: purchaseReport
+  /purchasereports/details:
+    get:
+      tags:
+        - purchase_report
+      description: purchasereportsに紐づくデータの一覧を取得
+      responses:
+        "200":
+          description: purchase_reportに紐づくデータの一覧を取得
+          content: {}
+  /purchasereports/{id}:
+    get:
+      tags:
+        - purchase_report
+      description: IDで指定されたpurchase_reportの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_reportの取得
+          content: {}
+    put:
+      tags:
+        - purchase_report
+      description: purchase_reportの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/purchaseReport"
+        required: false
+      responses:
+        "200":
+          description: 更新されたpurchase_reportが返ってくる
+          content: {}
+      x-codegen-request-body-name: purchaseReport
+    delete:
+      tags:
+        - purchase_report
+      description: IDを指定してpurchase_reportの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_reportの削除完了
+          content: {}
+  /purchasereports/{id}/details:
+    get:
+      tags:
+        - purchase_report
+      description: IDで指定されたpurchase_reportに紐づくデータを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_reportに紐づくデータを取得
+          content: {}
+  /purchasereports/details/{year}:
+    get:
+      tags:
+        - purchase_report
+      description: 年度で指定されたpurchase_reportsに紐づくデータを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 年度で指定されたpurchase_reportsに紐づくデータを取得
+          content: {}
+  /receipts:
+    get:
+      tags:
+        - receipt
+      description: receiptの一覧を取得
+      responses:
+        "200":
+          description: receiptの一覧の取得
+          content: {}
+    post:
+      tags:
+        - receipt
+      description: receiptの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/receipt"
+        required: false
+      responses:
+        "200":
+          description: create されたreceiptが返ってくる
+          content: {}
+      x-codegen-request-body-name: receipt
+  /receipts/{id}:
+    get:
+      tags:
+        - receipt
+      description: IDで指定されたreceiptの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: receiptの取得
+          content: {}
+    put:
+      tags:
+        - receipt
+      description: receiptの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/receipt"
+        required: false
+      responses:
+        "200":
+          description: 更新されたreceiptが返ってくる
+          content: {}
+      x-codegen-request-body-name: receipt
+    delete:
+      tags:
+        - receipt
+      description: IDを指定してreceiptの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: receiptの削除完了
+          content: {}
+  /receipts/reports/{id}:
+    get:
+      tags:
+        - receipt
+      description: purchaseReportIDで指定されたreceiptの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: reportsIDを指定してreceiptの取得
+          content: {}
+  /sources:
+    get:
+      tags:
+        - source
+      description: sourceの一覧の取得
+      responses:
+        "200":
+          description: sourceの一覧を取得
+          content: {}
+    post:
+      tags:
+        - source
+      description: sourceの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 作成されたsourceが返ってくる
+          content: {}
+  /sources/{id}:
+    get:
+      tags:
+        - source
+      description: IDで指定されたsourceの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sourceの取得
+          content: {}
+    put:
+      tags:
+        - source
+      description: sourceの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたsourceが返ってくる
+          content: {}
+    delete:
+      tags:
+        - source
+      description: IDを指定してsourceの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sourceの削除完了
+          content: {}
+  /sponsors:
+    get:
+      tags:
+        - sponsor
+      description: sponsorの一覧の取得
+      responses:
+        "200":
+          description: sponsorsの一覧を取得
+          content: {}
+    post:
+      tags:
+        - sponsor
+      description: sponsorの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsor"
+        required: false
+      responses:
+        "200":
+          description: 作成されたsponsorが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsor
+  /sponsors/{id}:
+    get:
+      tags:
+        - sponsor
+      description: IDで指定されたsponsorの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorの取得
+          content: {}
+    put:
+      tags:
+        - sponsor
+      description: sponsorの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsor"
+        required: false
+      responses:
+        "200":
+          description: 更新されたsponsorが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsor
+    delete:
+      tags:
+        - sponsor
+      description: IDを指定してsponsorの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorの削除完了
+          content: {}
+  /sponsors/periods/{year}:
+    get:
+      tags:
+        - sponsor
+      description: 年度で指定されたsponsorを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorの取得完了
+          content: {}
+  /sponsorstyles:
+    get:
+      tags:
+        - sponsorstyle
+      description: sponsorstyleの一覧の取得
+      responses:
+        "200":
+          description: sponsorstyleの一覧を取得
+          content: {}
+    post:
+      tags:
+        - sponsorstyle
+      description: sponsorstyleの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsorStyle"
+        required: false
+      responses:
+        "200":
+          description: 作成されたsponsorstyleが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsorStyle
+  /sponsorstyles/{id}:
+    get:
+      tags:
+        - sponsorstyle
+      description: IDで指定されたsponsorstyleの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorstyleの取得
+          content: {}
+    put:
+      tags:
+        - sponsorstyle
+      description: sponsorstyleの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsorStyle"
+        required: false
+      responses:
+        "200":
+          description: 更新されたsponsorstyleが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsorStyle
+    delete:
+      tags:
+        - sponsorstyle
+      description: IDを指定してsponsorstyleの論理削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorstyleの論理削除完了
+          content: {}
+  /teachers:
+    get:
+      tags:
+        - teacher
+      description: teacherの一覧を取得
+      responses:
+        "200":
+          description: teacherの一覧を取得
+          content:
+            "*/*":
+              schema:
+                type: array
+    post:
+      tags:
+        - teacher
+      description: teacherの作成
+      parameters:
+        - name: name
+          in: query
+          description: 名前
+          required: true
+          schema:
+            type: string
+        - name: position
+          in: query
+          description: 役職
+          required: true
+          schema:
+            type: string
+        - name: department_id
+          in: query
+          description: 学科ID
+          schema:
+            type: integer
+        - name: room
+          in: query
+          description: 部屋番号
+          schema:
+            type: string
+        - name: is_black
+          in: query
+          description: ブラックリストの真偽
+          schema:
+            type: boolean
+        - name: remark
+          in: query
+          description: 備考
+          schema:
+            type: string
+      responses:
+        "200":
+          description: createされたteacherが返ってくる
+          content: {}
+  /teachers/delete:
+    delete:
+      tags:
+        - teacher
+      description: teacherの複数削除
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/destroyTeacherIDs"
+        required: false
+      responses:
+        "200":
+          description: 複数のteacherをidで削除できる
+          content: {}
+      x-codegen-request-body-name: destroyTeacherIDs
+  /teachers/{id}:
+    get:
+      tags:
+        - teacher
+      description: IDで指定されたteacherの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: teacherの取得
+          content: {}
+    put:
+      tags:
+        - teacher
+      description: teacherの更新
+      parameters:
+        - name: id
+          in: path
+          description: Teacherのid
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: 教員の名前
+          required: true
+          schema:
+            type: string
+        - name: position
+          in: query
+          description: 教員の役職
+          required: true
+          schema:
+            type: string
+        - name: department_id
+          in: query
+          description: 学科ID
+          schema:
+            type: integer
+        - name: room
+          in: query
+          description: 部屋番号
+          schema:
+            type: string
+        - name: is_black
+          in: query
+          description: ブラックリストに入っているか
+          schema:
+            type: boolean
+        - name: remark
+          in: query
+          description: 備考欄
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたteacherが返ってくる
+          content: {}
+    delete:
+      tags:
+        - teacher
+      description: IDを指定してteacherの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: teacherの削除完了
+          content: {}
+  /teachers/fundRegistered/{year}:
+    get:
+      tags:
+        - teacher
+      description: 募金登録済みのteacherのidを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 募金登録済みのteacherのidを取得
+          content: {}
+  /users:
+    get:
+      tags:
+        - user
+      description: userの一覧を取得
+      responses:
+        "200":
+          description: userの一覧を取得
+          content:
+            "*/*":
+              schema:
+                type: array
+    post:
+      tags:
+        - user
+      description: userの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+        - name: bureau_id
+          in: query
+          description: bureau_d
+          required: true
+          schema:
+            type: integer
+        - name: role_id
+          in: query
+          description: role_id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: createされたuserが返ってくる
+          content: {}
+  /users/delete:
+    delete:
+      tags:
+        - user
+      description: userの複数作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/destroyUserIDs"
+        required: false
+      responses:
+        "200":
+          description: 複数のuserをidで削除できる
+          content: {}
+      x-codegen-request-body-name: destroyUserIDs
+  /users/{id}:
+    get:
+      tags:
+        - user
+      description: IDで指定されたuserの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: userの取得
+          content: {}
+    put:
+      tags:
+        - user
+      description: userの更新
+      parameters:
+        - name: id
+          in: path
+          description: userのid
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+        - name: bureau_id
+          in: query
+          description: bureau_d
+          required: true
+          schema:
+            type: integer
+        - name: role_id
+          in: query
+          description: role_id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 更新されたuserが返ってくる
+          content: {}
+    delete:
+      tags:
+        - user
+      description: IDを指定してuserの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: userの削除完了
+          content: {}
+  /years:
+    get:
+      tags:
+        - year
+      description: yearの一覧の取得
+      responses:
+        "200":
+          description: yearの一覧を取得
+          content: {}
+    post:
+      tags:
+        - year
+      description: yearの作成
+      parameters:
+        - name: year
+          in: query
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 作成されたyearが返ってくる
+          content: {}
+  /years/{id}:
+    get:
+      tags:
+        - year
+      description: IDで指定されたyearの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearの取得
+          content: {}
+    put:
+      tags:
+        - year
+      description: yearの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: year
+          in: query
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 更新されたyearが返ってくる
+          content: {}
+    delete:
+      tags:
+        - year
+      description: IDを指定してyearの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearの削除完了
+          content: {}
+  /years/periods:
+    get:
+      tags:
+        - year_periods
+      description: 年度一覧の取得
+      responses:
+        "200":
+          description: year_periodsの一覧を取得
+          content: {}
+    post:
+      tags:
+        - year_periods
+      description: year_periodsの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/year_periods"
+        required: false
+      responses:
+        "200":
+          description: 作成されたyear_periodsが返ってくる
+          content: {}
+      x-codegen-request-body-name: year_periods
+  /years/periods/{id}:
+    put:
+      tags:
+        - year_periods
+      description: year_periodsの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/year_periods"
+        required: false
+      responses:
+        "200":
+          description: 更新されたyear_periodsが返ってくる
+          content: {}
+      x-codegen-request-body-name: year_periods
+    delete:
+      tags:
+        - year_periods
+      description: IDを指定してyear_periodsの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: year_periodsの削除完了
+          content: {}
+components:
+  schemas:
+    activity:
+      required:
+        - expense
+        - feature
+        - isDone
+        - remark
+        - sponsorID
+        - userID
+      type: object
+      properties:
+        sponsorID:
+          type: integer
+          example: 1
+        userID:
+          type: integer
+          example: 1
+        isDone:
+          type: boolean
+          example: false
+        feature:
+          type: string
+          example: なし
+        expense:
+          type: integer
+          example: 0
+        remark:
+          type: string
+          example: なし
+        design:
+          type: integer
+          example: 0
+        url:
+          type: string
+          example: ""
+    activity_information:
+      type: object
+      properties:
+        activityID:
+          type: integer
+          example: 1
+        bucketName:
+          type: string
+          example: なし
+        fileName:
+          type: string
+          example: なし
+        fileType:
+          type: string
+          example: なし
+        designProgress:
+          type: integer
+          example: 1
+        fileInformation:
+          type: string
+          example: ""
+    activity_style:
+      required:
+        - activityID
+        - sponsorStyleID
+      type: object
+      properties:
+        activityID:
+          type: integer
+          example: 1
+        sponsorStyleID:
+          type: integer
+          example: 1
+    sponsorStyle:
+      required:
+        - feature
+        - price
+        - style
+      type: object
+      properties:
+        style:
+          type: string
+          example: 1分の1
+        feature:
+          type: string
+          example: カラー
+        price:
+          type: integer
+          example: 30000
+    sponsor:
+      required:
+        - address
+        - email
+        - name
+        - representative
+        - tel
+      type: object
+      properties:
+        name:
+          type: string
+          example: 企業1
+        tel:
+          type: string
+          example: "09000000000"
+        email:
+          type: string
+          example: test@example.com
+        address:
+          type: string
+          example: ○○1-1
+        representative:
+          type: string
+          example: 長岡太郎(社長)
+    passwordResetData:
+      type: object
+      properties:
+        token:
+          type: string
+          example: ""
+        password:
+          type: string
+          example: ""
+        confirmPassword:
+          type: string
+          example: ""
+    purchaseReport:
+      required:
+        - addition
+        - discount
+        - financeCheck
+        - purchaseOrderID
+        - userID
+      type: object
+      properties:
+        userID:
+          type: integer
+          example: 1
+        discount:
+          type: integer
+          example: 0
+        addition:
+          type: integer
+          example: 0
+        financeCheck:
+          type: boolean
+          example: false
+        purchaseOrderID:
+          type: integer
+          example: 1
+        remark:
+          type: string
+          example: ""
+        buyer:
+          type: string
+          example: ""
+    purchaseItem:
+      required:
+        - financeCheck
+        - item
+        - price
+        - purchaseOrderID
+        - quantity
+      type: object
+      properties:
+        item:
+          type: string
+          example: name
+        price:
+          type: integer
+          example: 0
+        quantity:
+          type: integer
+          example: 0
+        detail:
+          type: string
+          example: ""
+        url:
+          type: string
+          example: ""
+        purchaseOrderID:
+          type: integer
+          example: 1
+        financeCheck:
+          type: boolean
+          example: false
+    destroyTeacherIDs:
+      required:
+        - deleteIDs
+      type: object
+      properties:
+        deleteIDs:
+          type: array
+          example: []
+          items:
+            type: number
+    destroyUserIDs:
+      required:
+        - deleteIDs
+      type: object
+      properties:
+        deleteIDs:
+          type: array
+          example: []
+          items:
+            type: number
+    receipt:
+      required:
+        - purchaseReportID
+      type: object
+      properties:
+        purchaseReportID:
+          type: integer
+          example: 1
+        bucketName:
+          type: string
+          example: ""
+        fileName:
+          type: string
+          example: ""
+        fileType:
+          type: string
+          example: ""
+        remark:
+          type: string
+          example: ""
+    year_periods:
+      required:
+        - endedAt
+        - startedAt
+        - year
+      type: object
+      properties:
+        year:
+          type: integer
+          example: 2024
+        startedAt:
+          type: string
+          example: 0000-00-00T00:00:00Z
+        endedAt:
+          type: string
+          example: 0000-00-00T00:00:00Z
+x-original-swagger-version: "2.0"

From e640feccf29002459ce4cd4589f98a60d0c5576b Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 23 Dec 2024 17:03:15 +0000
Subject: [PATCH 20/30] =?UTF-8?q?[fix]=20openapi=E3=81=AE=E5=88=87?=
 =?UTF-8?q?=E3=82=8A=E9=9B=A2=E3=81=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 openapi/generated/config.yaml    |    8 +
 openapi/generated/openapi.yaml   | 2432 +++++++++++++++++++++++
 openapi/generated/openapi_gen.go | 3188 ++++++++++++++++++++++++++++++
 3 files changed, 5628 insertions(+)
 create mode 100644 openapi/generated/config.yaml
 create mode 100644 openapi/generated/openapi.yaml
 create mode 100644 openapi/generated/openapi_gen.go

diff --git a/openapi/generated/config.yaml b/openapi/generated/config.yaml
new file mode 100644
index 000000000..5903bf1e7
--- /dev/null
+++ b/openapi/generated/config.yaml
@@ -0,0 +1,8 @@
+# yaml-language-server: ...
+# go:generate oapi-codegen --config=config.yaml ../../api.yaml
+
+package: generated
+generate:
+  - server
+  - types
+output: /openapi/generated/openapi_gen.go
diff --git a/openapi/generated/openapi.yaml b/openapi/generated/openapi.yaml
new file mode 100644
index 000000000..45545f0de
--- /dev/null
+++ b/openapi/generated/openapi.yaml
@@ -0,0 +1,2432 @@
+openapi: 3.0.1
+info:
+  title: NUTFes FinanSu API
+  description: FinanSu APIドキュメント
+  contact: {}
+  version: 2.0.0
+servers:
+  - url: http://localhost:1323/
+paths:
+  /activities:
+    get:
+      tags:
+        - activity
+      description: activitiesの一覧を取得
+      responses:
+        "200":
+          description: activitiesの一覧の取得
+          content: {}
+    post:
+      tags:
+        - activity
+      description: activitiesの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity"
+        required: false
+      responses:
+        "200":
+          description: create されたactivityが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity
+  /activities/details:
+    get:
+      tags:
+        - activity
+      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
+      responses:
+        "200":
+          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
+          content: {}
+  /activities/details/{year}:
+    get:
+      tags:
+        - activity
+      description: "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得"
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得"
+          content: {}
+  /activities/filtered_details:
+    get:
+      tags:
+        - activity
+      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
+      requestBody:
+        description: Filter by keyword
+        content:
+          "*/*":
+            schema:
+              type: string
+        required: false
+      responses:
+        "200":
+          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
+          content: {}
+      x-codegen-request-body-name: keyword
+  /activities/filtered_details/{year}:
+    get:
+      tags:
+        - activity
+      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
+      parameters:
+        - name: year
+          in: path
+          description: Filter by year.
+          required: true
+          schema:
+            type: string
+      requestBody:
+        description: Filter by keyword
+        content:
+          "*/*":
+            schema:
+              type: string
+        required: false
+      responses:
+        "200":
+          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
+          content: {}
+      x-codegen-request-body-name: keyword
+  /activities/{id}:
+    get:
+      tags:
+        - activity
+      description: IDで指定されたactivitiesの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activitiesの取得
+          content: {}
+    put:
+      tags:
+        - activity
+      description: activitiesの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity"
+        required: false
+      responses:
+        "200":
+          description: 更新されたactivitiesが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity
+    delete:
+      tags:
+        - activity
+      description: IDを指定してactivitiesの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activitiesの削除完了
+          content: {}
+  /activity_informations:
+    get:
+      tags:
+        - activity_information
+      description: activity_informationの一覧を取得
+      responses:
+        "200":
+          description: activity_informationの一覧の取得
+          content: {}
+    post:
+      tags:
+        - activity_information
+      description: activity_informationの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_information"
+        required: false
+      responses:
+        "200":
+          description: create されたactivity_informationが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_information
+  /activity_informations/{id}:
+    get:
+      tags:
+        - activity_information
+      description: IDで指定されたactivity_informationsの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_informationの取得
+          content: {}
+    put:
+      tags:
+        - activity_information
+      description: activity_informationの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_information"
+        required: false
+      responses:
+        "200":
+          description: 更新されたactivity_informationが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_information
+    delete:
+      tags:
+        - activity_information
+      description: IDを指定してactivity_informationの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_informationの削除完了
+          content: {}
+  /activity_styles:
+    get:
+      tags:
+        - activity_style
+      description: activity_styleの一覧を取得
+      responses:
+        "200":
+          description: activity_styleの一覧の取得
+          content: {}
+    post:
+      tags:
+        - activity_style
+      description: activity_styleの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_style"
+        required: false
+      responses:
+        "200":
+          description: createされたactivity_styleが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_style
+  /activity_styles/{id}:
+    get:
+      tags:
+        - activity_style
+      description: IDで指定されたactivity_styleの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_styleの取得
+          content: {}
+    put:
+      tags:
+        - activity_style
+      description: activity_styleの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/activity_style"
+        required: false
+      responses:
+        "200":
+          description: 更新されたactivity_styleが返ってくる
+          content: {}
+      x-codegen-request-body-name: activity_style
+    delete:
+      tags:
+        - activity_style
+      description: IDを指定してactivity_styleの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: activity_styleの削除完了
+          content: {}
+  /budgets:
+    get:
+      tags:
+        - budget
+      description: budgetの一覧を取得
+      responses:
+        "200":
+          description: budgetの一覧の取得
+          content: {}
+    post:
+      tags:
+        - budget
+      description: budgetの作成
+      parameters:
+        - name: price
+          in: query
+          description: price
+          required: true
+          schema:
+            type: integer
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: integer
+        - name: source_id
+          in: query
+          description: source_id
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: create されたbudgetが返ってくる
+          content: {}
+  /budgets/details:
+    get:
+      tags:
+        - budget
+      description: budgetに紐づくyearとsourceの一覧を取得
+      responses:
+        "200":
+          description: budgetに紐づくyearとsourceの一覧を取得
+          content: {}
+  /budgets/details/{year}:
+    get:
+      tags:
+        - budget
+      description: 年度で指定されたbudgetsに紐づく年度とソースを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 年度で指定されたbudgetsに紐づく年度とソースを取得
+          content: {}
+  /budgets/{id}:
+    get:
+      tags:
+        - budget
+      description: IDで指定されたbudgetの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: budgetの取得
+          content: {}
+    put:
+      tags:
+        - budget
+      description: budgetの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: price
+          in: query
+          description: price
+          schema:
+            type: integer
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: integer
+        - name: source_id
+          in: query
+          description: source_id
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 更新されたbudgetが返ってくる
+          content: {}
+    delete:
+      tags:
+        - budget
+      description: IDを指定してbudgetの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: budgetの削除完了
+          content: {}
+  /budgets/{id}/details:
+    get:
+      tags:
+        - budget
+      description: IDで指定されたbudgetに紐づくyearとsourceを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: budgetに紐づくyearとsourceを取得
+          content: {}
+  /bureaus:
+    get:
+      tags:
+        - bureau
+      description: bureauの一覧を取得
+      responses:
+        "200":
+          description: bureauの一覧の取得
+          content: {}
+    post:
+      tags:
+        - bureau
+      description: bureauの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: create されたbureauが返ってくる
+          content: {}
+  /bureaus/{id}:
+    get:
+      tags:
+        - bureau
+      description: IDで指定されたbureauの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: bureauの取得
+          content: {}
+    put:
+      tags:
+        - bureau
+      description: bureauの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたbureauが返ってくる
+          content: {}
+    delete:
+      tags:
+        - bureau
+      description: IDを指定してbureauの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: bureauの削除完了
+          content: {}
+  /departments:
+    get:
+      tags:
+        - department
+      description: departmentの一覧の取得
+      responses:
+        "200":
+          description: departmentの一覧を取得
+          content: {}
+    post:
+      tags:
+        - department
+      description: departmentの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 作成されたdepartmentが返ってくる
+          content: {}
+  /departments/{id}:
+    get:
+      tags:
+        - department
+      description: IDで指定されたdepartmentの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: departmentの取得
+          content: {}
+    put:
+      tags:
+        - department
+      description: departmentの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたdepartmentが返ってくる
+          content: {}
+    delete:
+      tags:
+        - department
+      description: IDを指定してdepartmentの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: departmentの削除完了
+          content: {}
+  /expenses:
+    get:
+      tags:
+        - expense
+      description: expenseの一覧の取得
+      responses:
+        "200":
+          description: expenseの一覧を取得
+          content: {}
+    post:
+      tags:
+        - expense
+      description: expenseの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 作成されたexpenseが返ってくる
+          content: {}
+  /expenses/details:
+    get:
+      tags:
+        - expense
+      description: expenseに紐づくpurchase_itemの一覧を取得
+      responses:
+        "200":
+          description: expenseに紐づくpurchase_itemの一覧を取得
+          content: {}
+  /expenses/{id}:
+    get:
+      tags:
+        - expense
+      description: IDで指定されたexpenseの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: expenseの取得
+          content: {}
+    put:
+      tags:
+        - expense
+      description: expenseの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          schema:
+            type: string
+        - name: year_id
+          in: query
+          description: year_id
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたexpenseが返ってくる
+          content: {}
+    delete:
+      tags:
+        - expense
+      description: IDを指定してexpenseの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: expenseの削除完了
+          content: {}
+  /expenses/{id}/details:
+    get:
+      tags:
+        - expense
+      description: IDで指定されたexpenseに紐づくpurchase_itemsを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたexpenseに紐づくpurchase_itemsを取得
+          content: {}
+  /expenses/details/{year}:
+    get:
+      tags:
+        - expense
+      description: 年度で指定されたexpenseに紐づく購入申請と購入報告を取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearで指定されたexpenseに紐づく購入申請と購入報告を取得
+          content: {}
+  /expenses/fiscalyear/{year}:
+    get:
+      tags:
+        - expense
+      description: 年度で指定されたexpensesを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearで指定されたexpensesを取得
+          content: {}
+  /fund_informations:
+    get:
+      tags:
+        - fund_information
+      description: fund_informationの一覧を取得
+      responses:
+        "200":
+          description: fund_informationの一覧の取得
+          content: {}
+    post:
+      tags:
+        - fund_information
+      description: fund_informationの作成
+      parameters:
+        - name: user_id
+          in: query
+          description: user_id
+          required: true
+          schema:
+            type: integer
+        - name: teacher_id
+          in: query
+          description: teacher_id
+          required: true
+          schema:
+            type: integer
+        - name: price
+          in: query
+          description: price
+          required: true
+          schema:
+            type: integer
+        - name: remark
+          in: query
+          description: remark
+          schema:
+            type: string
+        - name: is_first_check
+          in: query
+          description: is_first_check
+          schema:
+            type: boolean
+        - name: is_last_check
+          in: query
+          description: is_last_check
+          schema:
+            type: boolean
+        - name: received_at
+          in: query
+          description: received_at
+          schema:
+            type: string
+      responses:
+        "200":
+          description: create されたfund_informationが返ってくる
+          content: {}
+  /fund_informations/details:
+    get:
+      tags:
+        - fund_information
+      description: fund_informationに紐づくteacherとuserの一覧を取得
+      responses:
+        "200":
+          description: fund_informationに紐づくteacherとuserの一覧を取得
+          content: {}
+  /fund_informations/{id}:
+    get:
+      tags:
+        - fund_information
+      description: IDで指定されたfund_informationの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: fund_informationの取得
+          content: {}
+    put:
+      tags:
+        - fund_information
+      description: fund_informationの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: user_id
+          in: query
+          description: user_id
+          required: true
+          schema:
+            type: integer
+        - name: teacher_id
+          in: query
+          description: teacher_id
+          required: true
+          schema:
+            type: integer
+        - name: price
+          in: query
+          description: price
+          required: true
+          schema:
+            type: integer
+        - name: remark
+          in: query
+          description: remark
+          schema:
+            type: string
+        - name: is_first_check
+          in: query
+          description: is_first_check
+          schema:
+            type: boolean
+        - name: is_last_check
+          in: query
+          description: is_last_check
+          schema:
+            type: boolean
+        - name: received_at
+          in: query
+          description: received_at
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたfund_informationが返ってくる
+          content: {}
+    delete:
+      tags:
+        - fund_information
+      description: IDを指定してfund_informationの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: fund_informationの削除完了
+          content: {}
+  /fund_informations/{id}/details:
+    get:
+      tags:
+        - fund_information
+      description: IDで指定されたfund_informatinに紐づくteacherとuserを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: fund_informatinに紐づくteacherとuserを取得
+          content: {}
+  /fund_informations/details/{year}:
+    get:
+      tags:
+        - fund_information
+      description: 年度で指定されたfund_informationsに紐づくデータを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 年度で指定されたfund_informationsに紐づくデータを取得
+          content: {}
+  /password_reset/{id}:
+    post:
+      tags:
+        - password_reset
+      description: password_変更
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/passwordResetData"
+        required: false
+      responses:
+        "200":
+          description: passwordを変更する
+          content: {}
+      x-codegen-request-body-name: passwordResetData
+  /password_reset/request:
+    post:
+      tags:
+        - password_reset
+      description: password_reset_token発行リクエスト
+      parameters:
+        - name: email
+          in: query
+          description: email
+          schema:
+            type: string
+      responses:
+        "200":
+          description: password_reset_tokenをメールアドレスに送信する
+          content: {}
+  /password_reset/{id}/valid:
+    post:
+      tags:
+        - password_reset
+      description: トークンの称号
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: token
+          in: query
+          description: token
+          schema:
+            type: string
+      responses:
+        "200":
+          description: password_reset_tokenが正しい確認する
+          content: {}
+  /purchaseitems:
+    get:
+      tags:
+        - purchase_item
+      description: purchase_itemの一覧を取得
+      responses:
+        "200":
+          description: purchase_itemの一覧の取得
+          content: {}
+    post:
+      tags:
+        - purchase_item
+      description: purchase_itemの作成
+      parameters:
+        - name: item
+          in: query
+          description: item
+          schema:
+            type: string
+        - name: price
+          in: query
+          description: price
+          schema:
+            type: integer
+        - name: quantity
+          in: query
+          description: quantity
+          schema:
+            type: integer
+        - name: detail
+          in: query
+          description: detail
+          schema:
+            type: string
+        - name: url
+          in: query
+          description: url
+          schema:
+            type: string
+        - name: purchase_order_id
+          in: query
+          description: purchase_order_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: createされたpurchase_itemが返ってくる
+          content: {}
+  /purchaseitems/details:
+    get:
+      tags:
+        - purchase_item
+      description: purchase_itemに紐づくuserとpurchase_orderの一覧を取得
+      responses:
+        "200":
+          description: purchase_itemに紐づくuserとpurchase_orderの一覧を取得
+          content: {}
+  /purchaseitems/{id}:
+    get:
+      tags:
+        - purchase_item
+      description: IDで指定されたpurchase_itemの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_itemの取得
+          content: {}
+    put:
+      tags:
+        - purchase_item
+      description: purchase_itemの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: item
+          in: query
+          description: item
+          schema:
+            type: string
+        - name: price
+          in: query
+          description: price
+          schema:
+            type: integer
+        - name: quantity
+          in: query
+          description: quantity
+          schema:
+            type: integer
+        - name: detail
+          in: query
+          description: detail
+          schema:
+            type: string
+        - name: url
+          in: query
+          description: url
+          schema:
+            type: string
+        - name: purchase_order_id
+          in: query
+          description: purchase_order_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: 更新されたpurchase_itemが返ってくる
+          content: {}
+    delete:
+      tags:
+        - purchase_item
+      description: IDを指定してpurchase_itemの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_itemの削除完了
+          content: {}
+  /purchaseitems/{id}/details:
+    get:
+      tags:
+        - purchase_item
+      description: IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得
+          content: {}
+  /purchaseorders:
+    get:
+      tags:
+        - purchase_order
+      description: purchase_orderの一覧を取得
+      responses:
+        "200":
+          description: purchase_orderの一覧の取得
+          content: {}
+    post:
+      tags:
+        - purchase_order
+      description: purchase_orderの作成
+      parameters:
+        - name: deadline
+          in: query
+          description: deadline
+          schema:
+            type: string
+        - name: user_id
+          in: query
+          description: user_id
+          schema:
+            type: integer
+        - name: expense_id
+          in: query
+          description: expense_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: createされたpurchase_orderが返ってくる
+          content: {}
+  /purchaseorders/details:
+    get:
+      tags:
+        - purchase_order
+      description: purchaseorderに紐づくuserとitemの一覧を取得
+      responses:
+        "200":
+          description: purchase_orderに紐づくuserとpurchase_itemの一覧を取得
+          content: {}
+  /purchaseorders/{id}:
+    get:
+      tags:
+        - purchase_order
+      description: IDで指定されたpurchase_orderの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_orderの取得
+          content: {}
+    put:
+      tags:
+        - purchase_order
+      description: purchase_orderの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: deadline
+          in: query
+          description: deadline
+          schema:
+            type: string
+        - name: user_id
+          in: query
+          description: user_id
+          schema:
+            type: integer
+        - name: expense_id
+          in: query
+          description: expense_id
+          schema:
+            type: integer
+        - name: finance_check
+          in: query
+          description: finance_check
+          schema:
+            type: boolean
+      responses:
+        "200":
+          description: 更新されたpurchase_orderが返ってくる
+          content: {}
+    delete:
+      tags:
+        - purchase_order
+      description: IDを指定してpurchase_orderの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_orderの削除完了
+          content: {}
+  /purchaseorders/{id}/details:
+    get:
+      tags:
+        - purchase_order
+      description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+  /purchaseorders/details/{year}:
+    get:
+      tags:
+        - purchase_order
+      description: 年度で指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+  /purchaseorders/send/{id}:
+    post:
+      tags:
+        - purchase_order
+      description: IDで指定されたpurchase_orderのslackへメッセージ送信
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              type: array
+              items:
+                $ref: "#/components/schemas/purchaseItem"
+        required: true
+      responses:
+        "200":
+          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+      x-codegen-request-body-name: purchase_items
+  /purchaseorders/details/unregistered/{year}:
+    get:
+      tags:
+        - purchase_order
+      description: 年度で指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得
+          content: {}
+  /purchasereports:
+    get:
+      tags:
+        - purchase_report
+      description: purchase_reportの一覧を取得
+      responses:
+        "200":
+          description: purchase_reportの一覧の取得
+          content: {}
+    post:
+      tags:
+        - purchase_report
+      description: purchase_reportの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/purchaseReport"
+        required: false
+      responses:
+        "200":
+          description: 作成されたpurchaseReportが返ってくる
+          content: {}
+      x-codegen-request-body-name: purchaseReport
+  /purchasereports/details:
+    get:
+      tags:
+        - purchase_report
+      description: purchasereportsに紐づくデータの一覧を取得
+      responses:
+        "200":
+          description: purchase_reportに紐づくデータの一覧を取得
+          content: {}
+  /purchasereports/{id}:
+    get:
+      tags:
+        - purchase_report
+      description: IDで指定されたpurchase_reportの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_reportの取得
+          content: {}
+    put:
+      tags:
+        - purchase_report
+      description: purchase_reportの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/purchaseReport"
+        required: false
+      responses:
+        "200":
+          description: 更新されたpurchase_reportが返ってくる
+          content: {}
+      x-codegen-request-body-name: purchaseReport
+    delete:
+      tags:
+        - purchase_report
+      description: IDを指定してpurchase_reportの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: purchase_reportの削除完了
+          content: {}
+  /purchasereports/{id}/details:
+    get:
+      tags:
+        - purchase_report
+      description: IDで指定されたpurchase_reportに紐づくデータを取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: IDで指定されたpurchase_reportに紐づくデータを取得
+          content: {}
+  /purchasereports/details/{year}:
+    get:
+      tags:
+        - purchase_report
+      description: 年度で指定されたpurchase_reportsに紐づくデータを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 年度で指定されたpurchase_reportsに紐づくデータを取得
+          content: {}
+  /receipts:
+    get:
+      tags:
+        - receipt
+      description: receiptの一覧を取得
+      responses:
+        "200":
+          description: receiptの一覧の取得
+          content: {}
+    post:
+      tags:
+        - receipt
+      description: receiptの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/receipt"
+        required: false
+      responses:
+        "200":
+          description: create されたreceiptが返ってくる
+          content: {}
+      x-codegen-request-body-name: receipt
+  /receipts/{id}:
+    get:
+      tags:
+        - receipt
+      description: IDで指定されたreceiptの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: receiptの取得
+          content: {}
+    put:
+      tags:
+        - receipt
+      description: receiptの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/receipt"
+        required: false
+      responses:
+        "200":
+          description: 更新されたreceiptが返ってくる
+          content: {}
+      x-codegen-request-body-name: receipt
+    delete:
+      tags:
+        - receipt
+      description: IDを指定してreceiptの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: receiptの削除完了
+          content: {}
+  /receipts/reports/{id}:
+    get:
+      tags:
+        - receipt
+      description: purchaseReportIDで指定されたreceiptの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: reportsIDを指定してreceiptの取得
+          content: {}
+  /sources:
+    get:
+      tags:
+        - source
+      description: sourceの一覧の取得
+      responses:
+        "200":
+          description: sourceの一覧を取得
+          content: {}
+    post:
+      tags:
+        - source
+      description: sourceの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 作成されたsourceが返ってくる
+          content: {}
+  /sources/{id}:
+    get:
+      tags:
+        - source
+      description: IDで指定されたsourceの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sourceの取得
+          content: {}
+    put:
+      tags:
+        - source
+      description: sourceの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたsourceが返ってくる
+          content: {}
+    delete:
+      tags:
+        - source
+      description: IDを指定してsourceの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sourceの削除完了
+          content: {}
+  /sponsors:
+    get:
+      tags:
+        - sponsor
+      description: sponsorの一覧の取得
+      responses:
+        "200":
+          description: sponsorsの一覧を取得
+          content: {}
+    post:
+      tags:
+        - sponsor
+      description: sponsorの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsor"
+        required: false
+      responses:
+        "200":
+          description: 作成されたsponsorが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsor
+  /sponsors/{id}:
+    get:
+      tags:
+        - sponsor
+      description: IDで指定されたsponsorの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorの取得
+          content: {}
+    put:
+      tags:
+        - sponsor
+      description: sponsorの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsor"
+        required: false
+      responses:
+        "200":
+          description: 更新されたsponsorが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsor
+    delete:
+      tags:
+        - sponsor
+      description: IDを指定してsponsorの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorの削除完了
+          content: {}
+  /sponsors/periods/{year}:
+    get:
+      tags:
+        - sponsor
+      description: 年度で指定されたsponsorを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorの取得完了
+          content: {}
+  /sponsorstyles:
+    get:
+      tags:
+        - sponsorstyle
+      description: sponsorstyleの一覧の取得
+      responses:
+        "200":
+          description: sponsorstyleの一覧を取得
+          content: {}
+    post:
+      tags:
+        - sponsorstyle
+      description: sponsorstyleの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsorStyle"
+        required: false
+      responses:
+        "200":
+          description: 作成されたsponsorstyleが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsorStyle
+  /sponsorstyles/{id}:
+    get:
+      tags:
+        - sponsorstyle
+      description: IDで指定されたsponsorstyleの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorstyleの取得
+          content: {}
+    put:
+      tags:
+        - sponsorstyle
+      description: sponsorstyleの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/sponsorStyle"
+        required: false
+      responses:
+        "200":
+          description: 更新されたsponsorstyleが返ってくる
+          content: {}
+      x-codegen-request-body-name: sponsorStyle
+    delete:
+      tags:
+        - sponsorstyle
+      description: IDを指定してsponsorstyleの論理削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: sponsorstyleの論理削除完了
+          content: {}
+  /teachers:
+    get:
+      tags:
+        - teacher
+      description: teacherの一覧を取得
+      responses:
+        "200":
+          description: teacherの一覧を取得
+          content:
+            "*/*":
+              schema:
+                type: array
+    post:
+      tags:
+        - teacher
+      description: teacherの作成
+      parameters:
+        - name: name
+          in: query
+          description: 名前
+          required: true
+          schema:
+            type: string
+        - name: position
+          in: query
+          description: 役職
+          required: true
+          schema:
+            type: string
+        - name: department_id
+          in: query
+          description: 学科ID
+          schema:
+            type: integer
+        - name: room
+          in: query
+          description: 部屋番号
+          schema:
+            type: string
+        - name: is_black
+          in: query
+          description: ブラックリストの真偽
+          schema:
+            type: boolean
+        - name: remark
+          in: query
+          description: 備考
+          schema:
+            type: string
+      responses:
+        "200":
+          description: createされたteacherが返ってくる
+          content: {}
+  /teachers/delete:
+    delete:
+      tags:
+        - teacher
+      description: teacherの複数削除
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/destroyTeacherIDs"
+        required: false
+      responses:
+        "200":
+          description: 複数のteacherをidで削除できる
+          content: {}
+      x-codegen-request-body-name: destroyTeacherIDs
+  /teachers/{id}:
+    get:
+      tags:
+        - teacher
+      description: IDで指定されたteacherの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: teacherの取得
+          content: {}
+    put:
+      tags:
+        - teacher
+      description: teacherの更新
+      parameters:
+        - name: id
+          in: path
+          description: Teacherのid
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: 教員の名前
+          required: true
+          schema:
+            type: string
+        - name: position
+          in: query
+          description: 教員の役職
+          required: true
+          schema:
+            type: string
+        - name: department_id
+          in: query
+          description: 学科ID
+          schema:
+            type: integer
+        - name: room
+          in: query
+          description: 部屋番号
+          schema:
+            type: string
+        - name: is_black
+          in: query
+          description: ブラックリストに入っているか
+          schema:
+            type: boolean
+        - name: remark
+          in: query
+          description: 備考欄
+          schema:
+            type: string
+      responses:
+        "200":
+          description: 更新されたteacherが返ってくる
+          content: {}
+    delete:
+      tags:
+        - teacher
+      description: IDを指定してteacherの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: teacherの削除完了
+          content: {}
+  /teachers/fundRegistered/{year}:
+    get:
+      tags:
+        - teacher
+      description: 募金登録済みのteacherのidを取得
+      parameters:
+        - name: year
+          in: path
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 募金登録済みのteacherのidを取得
+          content: {}
+  /users:
+    get:
+      tags:
+        - user
+      description: userの一覧を取得
+      responses:
+        "200":
+          description: userの一覧を取得
+          content:
+            "*/*":
+              schema:
+                type: array
+    post:
+      tags:
+        - user
+      description: userの作成
+      parameters:
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+        - name: bureau_id
+          in: query
+          description: bureau_d
+          required: true
+          schema:
+            type: integer
+        - name: role_id
+          in: query
+          description: role_id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: createされたuserが返ってくる
+          content: {}
+  /users/delete:
+    delete:
+      tags:
+        - user
+      description: userの複数作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/destroyUserIDs"
+        required: false
+      responses:
+        "200":
+          description: 複数のuserをidで削除できる
+          content: {}
+      x-codegen-request-body-name: destroyUserIDs
+  /users/{id}:
+    get:
+      tags:
+        - user
+      description: IDで指定されたuserの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: userの取得
+          content: {}
+    put:
+      tags:
+        - user
+      description: userの更新
+      parameters:
+        - name: id
+          in: path
+          description: userのid
+          required: true
+          schema:
+            type: integer
+        - name: name
+          in: query
+          description: name
+          required: true
+          schema:
+            type: string
+        - name: bureau_id
+          in: query
+          description: bureau_d
+          required: true
+          schema:
+            type: integer
+        - name: role_id
+          in: query
+          description: role_id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 更新されたuserが返ってくる
+          content: {}
+    delete:
+      tags:
+        - user
+      description: IDを指定してuserの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: userの削除完了
+          content: {}
+  /years:
+    get:
+      tags:
+        - year
+      description: yearの一覧の取得
+      responses:
+        "200":
+          description: yearの一覧を取得
+          content: {}
+    post:
+      tags:
+        - year
+      description: yearの作成
+      parameters:
+        - name: year
+          in: query
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 作成されたyearが返ってくる
+          content: {}
+  /years/{id}:
+    get:
+      tags:
+        - year
+      description: IDで指定されたyearの取得
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearの取得
+          content: {}
+    put:
+      tags:
+        - year
+      description: yearの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+        - name: year
+          in: query
+          description: year
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: 更新されたyearが返ってくる
+          content: {}
+    delete:
+      tags:
+        - year
+      description: IDを指定してyearの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: yearの削除完了
+          content: {}
+  /years/periods:
+    get:
+      tags:
+        - year_periods
+      description: 年度一覧の取得
+      responses:
+        "200":
+          description: year_periodsの一覧を取得
+          content: {}
+    post:
+      tags:
+        - year_periods
+      description: year_periodsの作成
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/year_periods"
+        required: false
+      responses:
+        "200":
+          description: 作成されたyear_periodsが返ってくる
+          content: {}
+      x-codegen-request-body-name: year_periods
+  /years/periods/{id}:
+    put:
+      tags:
+        - year_periods
+      description: year_periodsの更新
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      requestBody:
+        content:
+          "*/*":
+            schema:
+              $ref: "#/components/schemas/year_periods"
+        required: false
+      responses:
+        "200":
+          description: 更新されたyear_periodsが返ってくる
+          content: {}
+      x-codegen-request-body-name: year_periods
+    delete:
+      tags:
+        - year_periods
+      description: IDを指定してyear_periodsの削除
+      parameters:
+        - name: id
+          in: path
+          description: id
+          required: true
+          schema:
+            type: integer
+      responses:
+        "200":
+          description: year_periodsの削除完了
+          content: {}
+components:
+  schemas:
+    activity:
+      required:
+        - expense
+        - feature
+        - isDone
+        - remark
+        - sponsorID
+        - userID
+      type: object
+      properties:
+        sponsorID:
+          type: integer
+          example: 1
+        userID:
+          type: integer
+          example: 1
+        isDone:
+          type: boolean
+          example: false
+        feature:
+          type: string
+          example: なし
+        expense:
+          type: integer
+          example: 0
+        remark:
+          type: string
+          example: なし
+        design:
+          type: integer
+          example: 0
+        url:
+          type: string
+          example: ""
+    activity_information:
+      type: object
+      properties:
+        activityID:
+          type: integer
+          example: 1
+        bucketName:
+          type: string
+          example: なし
+        fileName:
+          type: string
+          example: なし
+        fileType:
+          type: string
+          example: なし
+        designProgress:
+          type: integer
+          example: 1
+        fileInformation:
+          type: string
+          example: ""
+    activity_style:
+      required:
+        - activityID
+        - sponsorStyleID
+      type: object
+      properties:
+        activityID:
+          type: integer
+          example: 1
+        sponsorStyleID:
+          type: integer
+          example: 1
+    sponsorStyle:
+      required:
+        - feature
+        - price
+        - style
+      type: object
+      properties:
+        style:
+          type: string
+          example: 1分の1
+        feature:
+          type: string
+          example: カラー
+        price:
+          type: integer
+          example: 30000
+    sponsor:
+      required:
+        - address
+        - email
+        - name
+        - representative
+        - tel
+      type: object
+      properties:
+        name:
+          type: string
+          example: 企業1
+        tel:
+          type: string
+          example: "09000000000"
+        email:
+          type: string
+          example: test@example.com
+        address:
+          type: string
+          example: ○○1-1
+        representative:
+          type: string
+          example: 長岡太郎(社長)
+    passwordResetData:
+      type: object
+      properties:
+        token:
+          type: string
+          example: ""
+        password:
+          type: string
+          example: ""
+        confirmPassword:
+          type: string
+          example: ""
+    purchaseReport:
+      required:
+        - addition
+        - discount
+        - financeCheck
+        - purchaseOrderID
+        - userID
+      type: object
+      properties:
+        userID:
+          type: integer
+          example: 1
+        discount:
+          type: integer
+          example: 0
+        addition:
+          type: integer
+          example: 0
+        financeCheck:
+          type: boolean
+          example: false
+        purchaseOrderID:
+          type: integer
+          example: 1
+        remark:
+          type: string
+          example: ""
+        buyer:
+          type: string
+          example: ""
+    purchaseItem:
+      required:
+        - financeCheck
+        - item
+        - price
+        - purchaseOrderID
+        - quantity
+      type: object
+      properties:
+        item:
+          type: string
+          example: name
+        price:
+          type: integer
+          example: 0
+        quantity:
+          type: integer
+          example: 0
+        detail:
+          type: string
+          example: ""
+        url:
+          type: string
+          example: ""
+        purchaseOrderID:
+          type: integer
+          example: 1
+        financeCheck:
+          type: boolean
+          example: false
+    destroyTeacherIDs:
+      required:
+        - deleteIDs
+      type: object
+      properties:
+        deleteIDs:
+          type: array
+          example: []
+          items:
+            type: number
+    destroyUserIDs:
+      required:
+        - deleteIDs
+      type: object
+      properties:
+        deleteIDs:
+          type: array
+          example: []
+          items:
+            type: number
+    receipt:
+      required:
+        - purchaseReportID
+      type: object
+      properties:
+        purchaseReportID:
+          type: integer
+          example: 1
+        bucketName:
+          type: string
+          example: ""
+        fileName:
+          type: string
+          example: ""
+        fileType:
+          type: string
+          example: ""
+        remark:
+          type: string
+          example: ""
+    year_periods:
+      required:
+        - endedAt
+        - startedAt
+        - year
+      type: object
+      properties:
+        year:
+          type: integer
+          example: 2024
+        startedAt:
+          type: string
+          example: 0000-00-00T00:00:00Z
+        endedAt:
+          type: string
+          example: 0000-00-00T00:00:00Z
+x-original-swagger-version: "2.0"
diff --git a/openapi/generated/openapi_gen.go b/openapi/generated/openapi_gen.go
new file mode 100644
index 000000000..52e60dcfe
--- /dev/null
+++ b/openapi/generated/openapi_gen.go
@@ -0,0 +1,3188 @@
+// Package generated provides primitives to interact with the openapi HTTP API.
+//
+// Code generated by github.com/deepmap/oapi-codegen/v2 version v2.2.0 DO NOT EDIT.
+package generated
+
+import (
+	"fmt"
+	"net/http"
+
+	"github.com/labstack/echo/v4"
+	"github.com/oapi-codegen/runtime"
+)
+
+// Activity defines model for activity.
+type Activity struct {
+	Design    *int    `json:"design,omitempty"`
+	Expense   int     `json:"expense"`
+	Feature   string  `json:"feature"`
+	IsDone    bool    `json:"isDone"`
+	Remark    string  `json:"remark"`
+	SponsorID int     `json:"sponsorID"`
+	Url       *string `json:"url,omitempty"`
+	UserID    int     `json:"userID"`
+}
+
+// ActivityInformation defines model for activity_information.
+type ActivityInformation struct {
+	ActivityID      *int    `json:"activityID,omitempty"`
+	BucketName      *string `json:"bucketName,omitempty"`
+	DesignProgress  *int    `json:"designProgress,omitempty"`
+	FileInformation *string `json:"fileInformation,omitempty"`
+	FileName        *string `json:"fileName,omitempty"`
+	FileType        *string `json:"fileType,omitempty"`
+}
+
+// ActivityStyle defines model for activity_style.
+type ActivityStyle struct {
+	ActivityID     int `json:"activityID"`
+	SponsorStyleID int `json:"sponsorStyleID"`
+}
+
+// DestroyTeacherIDs defines model for destroyTeacherIDs.
+type DestroyTeacherIDs struct {
+	DeleteIDs []float32 `json:"deleteIDs"`
+}
+
+// DestroyUserIDs defines model for destroyUserIDs.
+type DestroyUserIDs struct {
+	DeleteIDs []float32 `json:"deleteIDs"`
+}
+
+// PasswordResetData defines model for passwordResetData.
+type PasswordResetData struct {
+	ConfirmPassword *string `json:"confirmPassword,omitempty"`
+	Password        *string `json:"password,omitempty"`
+	Token           *string `json:"token,omitempty"`
+}
+
+// PurchaseItem defines model for purchaseItem.
+type PurchaseItem struct {
+	Detail          *string `json:"detail,omitempty"`
+	FinanceCheck    bool    `json:"financeCheck"`
+	Item            string  `json:"item"`
+	Price           int     `json:"price"`
+	PurchaseOrderID int     `json:"purchaseOrderID"`
+	Quantity        int     `json:"quantity"`
+	Url             *string `json:"url,omitempty"`
+}
+
+// PurchaseReport defines model for purchaseReport.
+type PurchaseReport struct {
+	Addition        int     `json:"addition"`
+	Buyer           *string `json:"buyer,omitempty"`
+	Discount        int     `json:"discount"`
+	FinanceCheck    bool    `json:"financeCheck"`
+	PurchaseOrderID int     `json:"purchaseOrderID"`
+	Remark          *string `json:"remark,omitempty"`
+	UserID          int     `json:"userID"`
+}
+
+// Receipt defines model for receipt.
+type Receipt struct {
+	BucketName       *string `json:"bucketName,omitempty"`
+	FileName         *string `json:"fileName,omitempty"`
+	FileType         *string `json:"fileType,omitempty"`
+	PurchaseReportID int     `json:"purchaseReportID"`
+	Remark           *string `json:"remark,omitempty"`
+}
+
+// Sponsor defines model for sponsor.
+type Sponsor struct {
+	Address        string `json:"address"`
+	Email          string `json:"email"`
+	Name           string `json:"name"`
+	Representative string `json:"representative"`
+	Tel            string `json:"tel"`
+}
+
+// SponsorStyle defines model for sponsorStyle.
+type SponsorStyle struct {
+	Feature string `json:"feature"`
+	Price   int    `json:"price"`
+	Style   string `json:"style"`
+}
+
+// YearPeriods defines model for year_periods.
+type YearPeriods struct {
+	EndedAt   string `json:"endedAt"`
+	StartedAt string `json:"startedAt"`
+	Year      int    `json:"year"`
+}
+
+// PostBudgetsParams defines parameters for PostBudgets.
+type PostBudgetsParams struct {
+	// Price price
+	Price int `form:"price" json:"price"`
+
+	// YearId year_id
+	YearId *int `form:"year_id,omitempty" json:"year_id,omitempty"`
+
+	// SourceId source_id
+	SourceId *int `form:"source_id,omitempty" json:"source_id,omitempty"`
+}
+
+// PutBudgetsIdParams defines parameters for PutBudgetsId.
+type PutBudgetsIdParams struct {
+	// Price price
+	Price *int `form:"price,omitempty" json:"price,omitempty"`
+
+	// YearId year_id
+	YearId *int `form:"year_id,omitempty" json:"year_id,omitempty"`
+
+	// SourceId source_id
+	SourceId *int `form:"source_id,omitempty" json:"source_id,omitempty"`
+}
+
+// PostBureausParams defines parameters for PostBureaus.
+type PostBureausParams struct {
+	// Name name
+	Name string `form:"name" json:"name"`
+}
+
+// PutBureausIdParams defines parameters for PutBureausId.
+type PutBureausIdParams struct {
+	// Name name
+	Name *string `form:"name,omitempty" json:"name,omitempty"`
+}
+
+// PostDepartmentsParams defines parameters for PostDepartments.
+type PostDepartmentsParams struct {
+	// Name name
+	Name *string `form:"name,omitempty" json:"name,omitempty"`
+}
+
+// PutDepartmentsIdParams defines parameters for PutDepartmentsId.
+type PutDepartmentsIdParams struct {
+	// Name name
+	Name *string `form:"name,omitempty" json:"name,omitempty"`
+}
+
+// PostExpensesParams defines parameters for PostExpenses.
+type PostExpensesParams struct {
+	// Name name
+	Name *string `form:"name,omitempty" json:"name,omitempty"`
+
+	// YearId year_id
+	YearId *string `form:"year_id,omitempty" json:"year_id,omitempty"`
+}
+
+// PutExpensesIdParams defines parameters for PutExpensesId.
+type PutExpensesIdParams struct {
+	// Name name
+	Name *string `form:"name,omitempty" json:"name,omitempty"`
+
+	// YearId year_id
+	YearId *string `form:"year_id,omitempty" json:"year_id,omitempty"`
+}
+
+// PostFundInformationsParams defines parameters for PostFundInformations.
+type PostFundInformationsParams struct {
+	// UserId user_id
+	UserId int `form:"user_id" json:"user_id"`
+
+	// TeacherId teacher_id
+	TeacherId int `form:"teacher_id" json:"teacher_id"`
+
+	// Price price
+	Price int `form:"price" json:"price"`
+
+	// Remark remark
+	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
+
+	// IsFirstCheck is_first_check
+	IsFirstCheck *bool `form:"is_first_check,omitempty" json:"is_first_check,omitempty"`
+
+	// IsLastCheck is_last_check
+	IsLastCheck *bool `form:"is_last_check,omitempty" json:"is_last_check,omitempty"`
+
+	// ReceivedAt received_at
+	ReceivedAt *string `form:"received_at,omitempty" json:"received_at,omitempty"`
+}
+
+// PutFundInformationsIdParams defines parameters for PutFundInformationsId.
+type PutFundInformationsIdParams struct {
+	// UserId user_id
+	UserId int `form:"user_id" json:"user_id"`
+
+	// TeacherId teacher_id
+	TeacherId int `form:"teacher_id" json:"teacher_id"`
+
+	// Price price
+	Price int `form:"price" json:"price"`
+
+	// Remark remark
+	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
+
+	// IsFirstCheck is_first_check
+	IsFirstCheck *bool `form:"is_first_check,omitempty" json:"is_first_check,omitempty"`
+
+	// IsLastCheck is_last_check
+	IsLastCheck *bool `form:"is_last_check,omitempty" json:"is_last_check,omitempty"`
+
+	// ReceivedAt received_at
+	ReceivedAt *string `form:"received_at,omitempty" json:"received_at,omitempty"`
+}
+
+// PostPasswordResetRequestParams defines parameters for PostPasswordResetRequest.
+type PostPasswordResetRequestParams struct {
+	// Email email
+	Email *string `form:"email,omitempty" json:"email,omitempty"`
+}
+
+// PostPasswordResetIdValidParams defines parameters for PostPasswordResetIdValid.
+type PostPasswordResetIdValidParams struct {
+	// Token token
+	Token *string `form:"token,omitempty" json:"token,omitempty"`
+}
+
+// PostPurchaseitemsParams defines parameters for PostPurchaseitems.
+type PostPurchaseitemsParams struct {
+	// Item item
+	Item *string `form:"item,omitempty" json:"item,omitempty"`
+
+	// Price price
+	Price *int `form:"price,omitempty" json:"price,omitempty"`
+
+	// Quantity quantity
+	Quantity *int `form:"quantity,omitempty" json:"quantity,omitempty"`
+
+	// Detail detail
+	Detail *string `form:"detail,omitempty" json:"detail,omitempty"`
+
+	// Url url
+	Url *string `form:"url,omitempty" json:"url,omitempty"`
+
+	// PurchaseOrderId purchase_order_id
+	PurchaseOrderId *int `form:"purchase_order_id,omitempty" json:"purchase_order_id,omitempty"`
+
+	// FinanceCheck finance_check
+	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
+}
+
+// PutPurchaseitemsIdParams defines parameters for PutPurchaseitemsId.
+type PutPurchaseitemsIdParams struct {
+	// Item item
+	Item *string `form:"item,omitempty" json:"item,omitempty"`
+
+	// Price price
+	Price *int `form:"price,omitempty" json:"price,omitempty"`
+
+	// Quantity quantity
+	Quantity *int `form:"quantity,omitempty" json:"quantity,omitempty"`
+
+	// Detail detail
+	Detail *string `form:"detail,omitempty" json:"detail,omitempty"`
+
+	// Url url
+	Url *string `form:"url,omitempty" json:"url,omitempty"`
+
+	// PurchaseOrderId purchase_order_id
+	PurchaseOrderId *int `form:"purchase_order_id,omitempty" json:"purchase_order_id,omitempty"`
+
+	// FinanceCheck finance_check
+	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
+}
+
+// PostPurchaseordersParams defines parameters for PostPurchaseorders.
+type PostPurchaseordersParams struct {
+	// Deadline deadline
+	Deadline *string `form:"deadline,omitempty" json:"deadline,omitempty"`
+
+	// UserId user_id
+	UserId *int `form:"user_id,omitempty" json:"user_id,omitempty"`
+
+	// ExpenseId expense_id
+	ExpenseId *int `form:"expense_id,omitempty" json:"expense_id,omitempty"`
+
+	// FinanceCheck finance_check
+	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
+}
+
+// PutPurchaseordersIdParams defines parameters for PutPurchaseordersId.
+type PutPurchaseordersIdParams struct {
+	// Deadline deadline
+	Deadline *string `form:"deadline,omitempty" json:"deadline,omitempty"`
+
+	// UserId user_id
+	UserId *int `form:"user_id,omitempty" json:"user_id,omitempty"`
+
+	// ExpenseId expense_id
+	ExpenseId *int `form:"expense_id,omitempty" json:"expense_id,omitempty"`
+
+	// FinanceCheck finance_check
+	FinanceCheck *bool `form:"finance_check,omitempty" json:"finance_check,omitempty"`
+}
+
+// PostSourcesParams defines parameters for PostSources.
+type PostSourcesParams struct {
+	// Name name
+	Name string `form:"name" json:"name"`
+}
+
+// PutSourcesIdParams defines parameters for PutSourcesId.
+type PutSourcesIdParams struct {
+	// Name name
+	Name string `form:"name" json:"name"`
+}
+
+// PostTeachersParams defines parameters for PostTeachers.
+type PostTeachersParams struct {
+	// Name 名前
+	Name string `form:"name" json:"name"`
+
+	// Position 役職
+	Position string `form:"position" json:"position"`
+
+	// DepartmentId 学科ID
+	DepartmentId *int `form:"department_id,omitempty" json:"department_id,omitempty"`
+
+	// Room 部屋番号
+	Room *string `form:"room,omitempty" json:"room,omitempty"`
+
+	// IsBlack ブラックリストの真偽
+	IsBlack *bool `form:"is_black,omitempty" json:"is_black,omitempty"`
+
+	// Remark 備考
+	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
+}
+
+// PutTeachersIdParams defines parameters for PutTeachersId.
+type PutTeachersIdParams struct {
+	// Name 教員の名前
+	Name string `form:"name" json:"name"`
+
+	// Position 教員の役職
+	Position string `form:"position" json:"position"`
+
+	// DepartmentId 学科ID
+	DepartmentId *int `form:"department_id,omitempty" json:"department_id,omitempty"`
+
+	// Room 部屋番号
+	Room *string `form:"room,omitempty" json:"room,omitempty"`
+
+	// IsBlack ブラックリストに入っているか
+	IsBlack *bool `form:"is_black,omitempty" json:"is_black,omitempty"`
+
+	// Remark 備考欄
+	Remark *string `form:"remark,omitempty" json:"remark,omitempty"`
+}
+
+// PostUsersParams defines parameters for PostUsers.
+type PostUsersParams struct {
+	// Name name
+	Name string `form:"name" json:"name"`
+
+	// BureauId bureau_d
+	BureauId int `form:"bureau_id" json:"bureau_id"`
+
+	// RoleId role_id
+	RoleId int `form:"role_id" json:"role_id"`
+}
+
+// PutUsersIdParams defines parameters for PutUsersId.
+type PutUsersIdParams struct {
+	// Name name
+	Name string `form:"name" json:"name"`
+
+	// BureauId bureau_d
+	BureauId int `form:"bureau_id" json:"bureau_id"`
+
+	// RoleId role_id
+	RoleId int `form:"role_id" json:"role_id"`
+}
+
+// PostYearsParams defines parameters for PostYears.
+type PostYearsParams struct {
+	// Year year
+	Year int `form:"year" json:"year"`
+}
+
+// PutYearsIdParams defines parameters for PutYearsId.
+type PutYearsIdParams struct {
+	// Year year
+	Year int `form:"year" json:"year"`
+}
+
+// ServerInterface represents all server handlers.
+type ServerInterface interface {
+
+	// (GET /activities)
+	GetActivities(ctx echo.Context) error
+
+	// (POST /activities)
+	PostActivities(ctx echo.Context) error
+
+	// (GET /activities/details)
+	GetActivitiesDetails(ctx echo.Context) error
+
+	// (GET /activities/details/{year})
+	GetActivitiesDetailsYear(ctx echo.Context, year int) error
+
+	// (GET /activities/filtered_details)
+	GetActivitiesFilteredDetails(ctx echo.Context) error
+
+	// (GET /activities/filtered_details/{year})
+	GetActivitiesFilteredDetailsYear(ctx echo.Context, year string) error
+
+	// (DELETE /activities/{id})
+	DeleteActivitiesId(ctx echo.Context, id int) error
+
+	// (GET /activities/{id})
+	GetActivitiesId(ctx echo.Context, id int) error
+
+	// (PUT /activities/{id})
+	PutActivitiesId(ctx echo.Context, id int) error
+
+	// (GET /activity_informations)
+	GetActivityInformations(ctx echo.Context) error
+
+	// (POST /activity_informations)
+	PostActivityInformations(ctx echo.Context) error
+
+	// (DELETE /activity_informations/{id})
+	DeleteActivityInformationsId(ctx echo.Context, id int) error
+
+	// (GET /activity_informations/{id})
+	GetActivityInformationsId(ctx echo.Context, id int) error
+
+	// (PUT /activity_informations/{id})
+	PutActivityInformationsId(ctx echo.Context, id int) error
+
+	// (GET /activity_styles)
+	GetActivityStyles(ctx echo.Context) error
+
+	// (POST /activity_styles)
+	PostActivityStyles(ctx echo.Context) error
+
+	// (DELETE /activity_styles/{id})
+	DeleteActivityStylesId(ctx echo.Context, id int) error
+
+	// (GET /activity_styles/{id})
+	GetActivityStylesId(ctx echo.Context, id int) error
+
+	// (PUT /activity_styles/{id})
+	PutActivityStylesId(ctx echo.Context, id int) error
+
+	// (GET /budgets)
+	GetBudgets(ctx echo.Context) error
+
+	// (POST /budgets)
+	PostBudgets(ctx echo.Context, params PostBudgetsParams) error
+
+	// (GET /budgets/details)
+	GetBudgetsDetails(ctx echo.Context) error
+
+	// (GET /budgets/details/{year})
+	GetBudgetsDetailsYear(ctx echo.Context, year int) error
+
+	// (DELETE /budgets/{id})
+	DeleteBudgetsId(ctx echo.Context, id int) error
+
+	// (GET /budgets/{id})
+	GetBudgetsId(ctx echo.Context, id int) error
+
+	// (PUT /budgets/{id})
+	PutBudgetsId(ctx echo.Context, id int, params PutBudgetsIdParams) error
+
+	// (GET /budgets/{id}/details)
+	GetBudgetsIdDetails(ctx echo.Context, id int) error
+
+	// (GET /bureaus)
+	GetBureaus(ctx echo.Context) error
+
+	// (POST /bureaus)
+	PostBureaus(ctx echo.Context, params PostBureausParams) error
+
+	// (DELETE /bureaus/{id})
+	DeleteBureausId(ctx echo.Context, id int) error
+
+	// (GET /bureaus/{id})
+	GetBureausId(ctx echo.Context, id int) error
+
+	// (PUT /bureaus/{id})
+	PutBureausId(ctx echo.Context, id int, params PutBureausIdParams) error
+
+	// (GET /departments)
+	GetDepartments(ctx echo.Context) error
+
+	// (POST /departments)
+	PostDepartments(ctx echo.Context, params PostDepartmentsParams) error
+
+	// (DELETE /departments/{id})
+	DeleteDepartmentsId(ctx echo.Context, id int) error
+
+	// (GET /departments/{id})
+	GetDepartmentsId(ctx echo.Context, id int) error
+
+	// (PUT /departments/{id})
+	PutDepartmentsId(ctx echo.Context, id int, params PutDepartmentsIdParams) error
+
+	// (GET /expenses)
+	GetExpenses(ctx echo.Context) error
+
+	// (POST /expenses)
+	PostExpenses(ctx echo.Context, params PostExpensesParams) error
+
+	// (GET /expenses/details)
+	GetExpensesDetails(ctx echo.Context) error
+
+	// (GET /expenses/details/{year})
+	GetExpensesDetailsYear(ctx echo.Context, year int) error
+
+	// (GET /expenses/fiscalyear/{year})
+	GetExpensesFiscalyearYear(ctx echo.Context, year int) error
+
+	// (DELETE /expenses/{id})
+	DeleteExpensesId(ctx echo.Context, id int) error
+
+	// (GET /expenses/{id})
+	GetExpensesId(ctx echo.Context, id int) error
+
+	// (PUT /expenses/{id})
+	PutExpensesId(ctx echo.Context, id int, params PutExpensesIdParams) error
+
+	// (GET /expenses/{id}/details)
+	GetExpensesIdDetails(ctx echo.Context, id int) error
+
+	// (GET /fund_informations)
+	GetFundInformations(ctx echo.Context) error
+
+	// (POST /fund_informations)
+	PostFundInformations(ctx echo.Context, params PostFundInformationsParams) error
+
+	// (GET /fund_informations/details)
+	GetFundInformationsDetails(ctx echo.Context) error
+
+	// (GET /fund_informations/details/{year})
+	GetFundInformationsDetailsYear(ctx echo.Context, year int) error
+
+	// (DELETE /fund_informations/{id})
+	DeleteFundInformationsId(ctx echo.Context, id int) error
+
+	// (GET /fund_informations/{id})
+	GetFundInformationsId(ctx echo.Context, id int) error
+
+	// (PUT /fund_informations/{id})
+	PutFundInformationsId(ctx echo.Context, id int, params PutFundInformationsIdParams) error
+
+	// (GET /fund_informations/{id}/details)
+	GetFundInformationsIdDetails(ctx echo.Context, id int) error
+
+	// (POST /password_reset/request)
+	PostPasswordResetRequest(ctx echo.Context, params PostPasswordResetRequestParams) error
+
+	// (POST /password_reset/{id})
+	PostPasswordResetId(ctx echo.Context, id int) error
+
+	// (POST /password_reset/{id}/valid)
+	PostPasswordResetIdValid(ctx echo.Context, id int, params PostPasswordResetIdValidParams) error
+
+	// (GET /purchaseitems)
+	GetPurchaseitems(ctx echo.Context) error
+
+	// (POST /purchaseitems)
+	PostPurchaseitems(ctx echo.Context, params PostPurchaseitemsParams) error
+
+	// (GET /purchaseitems/details)
+	GetPurchaseitemsDetails(ctx echo.Context) error
+
+	// (DELETE /purchaseitems/{id})
+	DeletePurchaseitemsId(ctx echo.Context, id int) error
+
+	// (GET /purchaseitems/{id})
+	GetPurchaseitemsId(ctx echo.Context, id int) error
+
+	// (PUT /purchaseitems/{id})
+	PutPurchaseitemsId(ctx echo.Context, id int, params PutPurchaseitemsIdParams) error
+
+	// (GET /purchaseitems/{id}/details)
+	GetPurchaseitemsIdDetails(ctx echo.Context, id int) error
+
+	// (GET /purchaseorders)
+	GetPurchaseorders(ctx echo.Context) error
+
+	// (POST /purchaseorders)
+	PostPurchaseorders(ctx echo.Context, params PostPurchaseordersParams) error
+
+	// (GET /purchaseorders/details)
+	GetPurchaseordersDetails(ctx echo.Context) error
+
+	// (GET /purchaseorders/details/unregistered/{year})
+	GetPurchaseordersDetailsUnregisteredYear(ctx echo.Context, year int) error
+
+	// (GET /purchaseorders/details/{year})
+	GetPurchaseordersDetailsYear(ctx echo.Context, year int) error
+
+	// (POST /purchaseorders/send/{id})
+	PostPurchaseordersSendId(ctx echo.Context, id int) error
+
+	// (DELETE /purchaseorders/{id})
+	DeletePurchaseordersId(ctx echo.Context, id int) error
+
+	// (GET /purchaseorders/{id})
+	GetPurchaseordersId(ctx echo.Context, id int) error
+
+	// (PUT /purchaseorders/{id})
+	PutPurchaseordersId(ctx echo.Context, id int, params PutPurchaseordersIdParams) error
+
+	// (GET /purchaseorders/{id}/details)
+	GetPurchaseordersIdDetails(ctx echo.Context, id int) error
+
+	// (GET /purchasereports)
+	GetPurchasereports(ctx echo.Context) error
+
+	// (POST /purchasereports)
+	PostPurchasereports(ctx echo.Context) error
+
+	// (GET /purchasereports/details)
+	GetPurchasereportsDetails(ctx echo.Context) error
+
+	// (GET /purchasereports/details/{year})
+	GetPurchasereportsDetailsYear(ctx echo.Context, year int) error
+
+	// (DELETE /purchasereports/{id})
+	DeletePurchasereportsId(ctx echo.Context, id int) error
+
+	// (GET /purchasereports/{id})
+	GetPurchasereportsId(ctx echo.Context, id int) error
+
+	// (PUT /purchasereports/{id})
+	PutPurchasereportsId(ctx echo.Context, id int) error
+
+	// (GET /purchasereports/{id}/details)
+	GetPurchasereportsIdDetails(ctx echo.Context, id int) error
+
+	// (GET /receipts)
+	GetReceipts(ctx echo.Context) error
+
+	// (POST /receipts)
+	PostReceipts(ctx echo.Context) error
+
+	// (GET /receipts/reports/{id})
+	GetReceiptsReportsId(ctx echo.Context, id int) error
+
+	// (DELETE /receipts/{id})
+	DeleteReceiptsId(ctx echo.Context, id int) error
+
+	// (GET /receipts/{id})
+	GetReceiptsId(ctx echo.Context, id int) error
+
+	// (PUT /receipts/{id})
+	PutReceiptsId(ctx echo.Context, id int) error
+
+	// (GET /sources)
+	GetSources(ctx echo.Context) error
+
+	// (POST /sources)
+	PostSources(ctx echo.Context, params PostSourcesParams) error
+
+	// (DELETE /sources/{id})
+	DeleteSourcesId(ctx echo.Context, id int) error
+
+	// (GET /sources/{id})
+	GetSourcesId(ctx echo.Context, id int) error
+
+	// (PUT /sources/{id})
+	PutSourcesId(ctx echo.Context, id int, params PutSourcesIdParams) error
+
+	// (GET /sponsors)
+	GetSponsors(ctx echo.Context) error
+
+	// (POST /sponsors)
+	PostSponsors(ctx echo.Context) error
+
+	// (GET /sponsors/periods/{year})
+	GetSponsorsPeriodsYear(ctx echo.Context, year int) error
+
+	// (DELETE /sponsors/{id})
+	DeleteSponsorsId(ctx echo.Context, id int) error
+
+	// (GET /sponsors/{id})
+	GetSponsorsId(ctx echo.Context, id int) error
+
+	// (PUT /sponsors/{id})
+	PutSponsorsId(ctx echo.Context, id int) error
+
+	// (GET /sponsorstyles)
+	GetSponsorstyles(ctx echo.Context) error
+
+	// (POST /sponsorstyles)
+	PostSponsorstyles(ctx echo.Context) error
+
+	// (DELETE /sponsorstyles/{id})
+	DeleteSponsorstylesId(ctx echo.Context, id int) error
+
+	// (GET /sponsorstyles/{id})
+	GetSponsorstylesId(ctx echo.Context, id int) error
+
+	// (PUT /sponsorstyles/{id})
+	PutSponsorstylesId(ctx echo.Context, id int) error
+
+	// (GET /teachers)
+	GetTeachers(ctx echo.Context) error
+
+	// (POST /teachers)
+	PostTeachers(ctx echo.Context, params PostTeachersParams) error
+
+	// (DELETE /teachers/delete)
+	DeleteTeachersDelete(ctx echo.Context) error
+
+	// (GET /teachers/fundRegistered/{year})
+	GetTeachersFundRegisteredYear(ctx echo.Context, year int) error
+
+	// (DELETE /teachers/{id})
+	DeleteTeachersId(ctx echo.Context, id int) error
+
+	// (GET /teachers/{id})
+	GetTeachersId(ctx echo.Context, id int) error
+
+	// (PUT /teachers/{id})
+	PutTeachersId(ctx echo.Context, id int, params PutTeachersIdParams) error
+
+	// (GET /users)
+	GetUsers(ctx echo.Context) error
+
+	// (POST /users)
+	PostUsers(ctx echo.Context, params PostUsersParams) error
+
+	// (DELETE /users/delete)
+	DeleteUsersDelete(ctx echo.Context) error
+
+	// (DELETE /users/{id})
+	DeleteUsersId(ctx echo.Context, id int) error
+
+	// (GET /users/{id})
+	GetUsersId(ctx echo.Context, id int) error
+
+	// (PUT /users/{id})
+	PutUsersId(ctx echo.Context, id int, params PutUsersIdParams) error
+
+	// (GET /years)
+	GetYears(ctx echo.Context) error
+
+	// (POST /years)
+	PostYears(ctx echo.Context, params PostYearsParams) error
+
+	// (GET /years/periods)
+	GetYearsPeriods(ctx echo.Context) error
+
+	// (POST /years/periods)
+	PostYearsPeriods(ctx echo.Context) error
+
+	// (DELETE /years/periods/{id})
+	DeleteYearsPeriodsId(ctx echo.Context, id int) error
+
+	// (PUT /years/periods/{id})
+	PutYearsPeriodsId(ctx echo.Context, id int) error
+
+	// (DELETE /years/{id})
+	DeleteYearsId(ctx echo.Context, id int) error
+
+	// (GET /years/{id})
+	GetYearsId(ctx echo.Context, id int) error
+
+	// (PUT /years/{id})
+	PutYearsId(ctx echo.Context, id int, params PutYearsIdParams) error
+}
+
+// ServerInterfaceWrapper converts echo contexts to parameters.
+type ServerInterfaceWrapper struct {
+	Handler ServerInterface
+}
+
+// GetActivities converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivities(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivities(ctx)
+	return err
+}
+
+// PostActivities converts echo context to params.
+func (w *ServerInterfaceWrapper) PostActivities(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostActivities(ctx)
+	return err
+}
+
+// GetActivitiesDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivitiesDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivitiesDetails(ctx)
+	return err
+}
+
+// GetActivitiesDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivitiesDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivitiesDetailsYear(ctx, year)
+	return err
+}
+
+// GetActivitiesFilteredDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivitiesFilteredDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivitiesFilteredDetails(ctx)
+	return err
+}
+
+// GetActivitiesFilteredDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivitiesFilteredDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year string
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivitiesFilteredDetailsYear(ctx, year)
+	return err
+}
+
+// DeleteActivitiesId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteActivitiesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteActivitiesId(ctx, id)
+	return err
+}
+
+// GetActivitiesId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivitiesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivitiesId(ctx, id)
+	return err
+}
+
+// PutActivitiesId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutActivitiesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutActivitiesId(ctx, id)
+	return err
+}
+
+// GetActivityInformations converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivityInformations(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivityInformations(ctx)
+	return err
+}
+
+// PostActivityInformations converts echo context to params.
+func (w *ServerInterfaceWrapper) PostActivityInformations(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostActivityInformations(ctx)
+	return err
+}
+
+// DeleteActivityInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteActivityInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteActivityInformationsId(ctx, id)
+	return err
+}
+
+// GetActivityInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivityInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivityInformationsId(ctx, id)
+	return err
+}
+
+// PutActivityInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutActivityInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutActivityInformationsId(ctx, id)
+	return err
+}
+
+// GetActivityStyles converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivityStyles(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivityStyles(ctx)
+	return err
+}
+
+// PostActivityStyles converts echo context to params.
+func (w *ServerInterfaceWrapper) PostActivityStyles(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostActivityStyles(ctx)
+	return err
+}
+
+// DeleteActivityStylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteActivityStylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteActivityStylesId(ctx, id)
+	return err
+}
+
+// GetActivityStylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetActivityStylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetActivityStylesId(ctx, id)
+	return err
+}
+
+// PutActivityStylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutActivityStylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutActivityStylesId(ctx, id)
+	return err
+}
+
+// GetBudgets converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBudgets(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBudgets(ctx)
+	return err
+}
+
+// PostBudgets converts echo context to params.
+func (w *ServerInterfaceWrapper) PostBudgets(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostBudgetsParams
+	// ------------- Required query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "year_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "source_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "source_id", ctx.QueryParams(), &params.SourceId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter source_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostBudgets(ctx, params)
+	return err
+}
+
+// GetBudgetsDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBudgetsDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBudgetsDetails(ctx)
+	return err
+}
+
+// GetBudgetsDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBudgetsDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBudgetsDetailsYear(ctx, year)
+	return err
+}
+
+// DeleteBudgetsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteBudgetsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteBudgetsId(ctx, id)
+	return err
+}
+
+// GetBudgetsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBudgetsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBudgetsId(ctx, id)
+	return err
+}
+
+// PutBudgetsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutBudgetsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutBudgetsIdParams
+	// ------------- Optional query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "year_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "source_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "source_id", ctx.QueryParams(), &params.SourceId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter source_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutBudgetsId(ctx, id, params)
+	return err
+}
+
+// GetBudgetsIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBudgetsIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBudgetsIdDetails(ctx, id)
+	return err
+}
+
+// GetBureaus converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBureaus(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBureaus(ctx)
+	return err
+}
+
+// PostBureaus converts echo context to params.
+func (w *ServerInterfaceWrapper) PostBureaus(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostBureausParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostBureaus(ctx, params)
+	return err
+}
+
+// DeleteBureausId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteBureausId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteBureausId(ctx, id)
+	return err
+}
+
+// GetBureausId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetBureausId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetBureausId(ctx, id)
+	return err
+}
+
+// PutBureausId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutBureausId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutBureausIdParams
+	// ------------- Optional query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutBureausId(ctx, id, params)
+	return err
+}
+
+// GetDepartments converts echo context to params.
+func (w *ServerInterfaceWrapper) GetDepartments(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetDepartments(ctx)
+	return err
+}
+
+// PostDepartments converts echo context to params.
+func (w *ServerInterfaceWrapper) PostDepartments(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostDepartmentsParams
+	// ------------- Optional query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostDepartments(ctx, params)
+	return err
+}
+
+// DeleteDepartmentsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteDepartmentsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteDepartmentsId(ctx, id)
+	return err
+}
+
+// GetDepartmentsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetDepartmentsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetDepartmentsId(ctx, id)
+	return err
+}
+
+// PutDepartmentsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutDepartmentsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutDepartmentsIdParams
+	// ------------- Optional query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutDepartmentsId(ctx, id, params)
+	return err
+}
+
+// GetExpenses converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpenses(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpenses(ctx)
+	return err
+}
+
+// PostExpenses converts echo context to params.
+func (w *ServerInterfaceWrapper) PostExpenses(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostExpensesParams
+	// ------------- Optional query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Optional query parameter "year_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostExpenses(ctx, params)
+	return err
+}
+
+// GetExpensesDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpensesDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpensesDetails(ctx)
+	return err
+}
+
+// GetExpensesDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpensesDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpensesDetailsYear(ctx, year)
+	return err
+}
+
+// GetExpensesFiscalyearYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpensesFiscalyearYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpensesFiscalyearYear(ctx, year)
+	return err
+}
+
+// DeleteExpensesId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteExpensesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteExpensesId(ctx, id)
+	return err
+}
+
+// GetExpensesId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpensesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpensesId(ctx, id)
+	return err
+}
+
+// PutExpensesId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutExpensesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutExpensesIdParams
+	// ------------- Optional query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Optional query parameter "year_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "year_id", ctx.QueryParams(), &params.YearId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutExpensesId(ctx, id, params)
+	return err
+}
+
+// GetExpensesIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetExpensesIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetExpensesIdDetails(ctx, id)
+	return err
+}
+
+// GetFundInformations converts echo context to params.
+func (w *ServerInterfaceWrapper) GetFundInformations(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetFundInformations(ctx)
+	return err
+}
+
+// PostFundInformations converts echo context to params.
+func (w *ServerInterfaceWrapper) PostFundInformations(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostFundInformationsParams
+	// ------------- Required query parameter "user_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "user_id", ctx.QueryParams(), &params.UserId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
+	}
+
+	// ------------- Required query parameter "teacher_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "teacher_id", ctx.QueryParams(), &params.TeacherId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter teacher_id: %s", err))
+	}
+
+	// ------------- Required query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "remark" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_first_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_first_check", ctx.QueryParams(), &params.IsFirstCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_first_check: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_last_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_last_check", ctx.QueryParams(), &params.IsLastCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_last_check: %s", err))
+	}
+
+	// ------------- Optional query parameter "received_at" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "received_at", ctx.QueryParams(), &params.ReceivedAt)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter received_at: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostFundInformations(ctx, params)
+	return err
+}
+
+// GetFundInformationsDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetFundInformationsDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetFundInformationsDetails(ctx)
+	return err
+}
+
+// GetFundInformationsDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetFundInformationsDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetFundInformationsDetailsYear(ctx, year)
+	return err
+}
+
+// DeleteFundInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteFundInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteFundInformationsId(ctx, id)
+	return err
+}
+
+// GetFundInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetFundInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetFundInformationsId(ctx, id)
+	return err
+}
+
+// PutFundInformationsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutFundInformationsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutFundInformationsIdParams
+	// ------------- Required query parameter "user_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "user_id", ctx.QueryParams(), &params.UserId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
+	}
+
+	// ------------- Required query parameter "teacher_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "teacher_id", ctx.QueryParams(), &params.TeacherId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter teacher_id: %s", err))
+	}
+
+	// ------------- Required query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "remark" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_first_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_first_check", ctx.QueryParams(), &params.IsFirstCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_first_check: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_last_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_last_check", ctx.QueryParams(), &params.IsLastCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_last_check: %s", err))
+	}
+
+	// ------------- Optional query parameter "received_at" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "received_at", ctx.QueryParams(), &params.ReceivedAt)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter received_at: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutFundInformationsId(ctx, id, params)
+	return err
+}
+
+// GetFundInformationsIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetFundInformationsIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetFundInformationsIdDetails(ctx, id)
+	return err
+}
+
+// PostPasswordResetRequest converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPasswordResetRequest(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostPasswordResetRequestParams
+	// ------------- Optional query parameter "email" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "email", ctx.QueryParams(), &params.Email)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter email: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPasswordResetRequest(ctx, params)
+	return err
+}
+
+// PostPasswordResetId converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPasswordResetId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPasswordResetId(ctx, id)
+	return err
+}
+
+// PostPasswordResetIdValid converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPasswordResetIdValid(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostPasswordResetIdValidParams
+	// ------------- Optional query parameter "token" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "token", ctx.QueryParams(), &params.Token)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter token: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPasswordResetIdValid(ctx, id, params)
+	return err
+}
+
+// GetPurchaseitems converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseitems(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseitems(ctx)
+	return err
+}
+
+// PostPurchaseitems converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPurchaseitems(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostPurchaseitemsParams
+	// ------------- Optional query parameter "item" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "item", ctx.QueryParams(), &params.Item)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter item: %s", err))
+	}
+
+	// ------------- Optional query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "quantity" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "quantity", ctx.QueryParams(), &params.Quantity)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter quantity: %s", err))
+	}
+
+	// ------------- Optional query parameter "detail" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "detail", ctx.QueryParams(), &params.Detail)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter detail: %s", err))
+	}
+
+	// ------------- Optional query parameter "url" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "url", ctx.QueryParams(), &params.Url)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter url: %s", err))
+	}
+
+	// ------------- Optional query parameter "purchase_order_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "purchase_order_id", ctx.QueryParams(), &params.PurchaseOrderId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter purchase_order_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "finance_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPurchaseitems(ctx, params)
+	return err
+}
+
+// GetPurchaseitemsDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseitemsDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseitemsDetails(ctx)
+	return err
+}
+
+// DeletePurchaseitemsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeletePurchaseitemsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeletePurchaseitemsId(ctx, id)
+	return err
+}
+
+// GetPurchaseitemsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseitemsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseitemsId(ctx, id)
+	return err
+}
+
+// PutPurchaseitemsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutPurchaseitemsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutPurchaseitemsIdParams
+	// ------------- Optional query parameter "item" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "item", ctx.QueryParams(), &params.Item)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter item: %s", err))
+	}
+
+	// ------------- Optional query parameter "price" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "price", ctx.QueryParams(), &params.Price)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter price: %s", err))
+	}
+
+	// ------------- Optional query parameter "quantity" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "quantity", ctx.QueryParams(), &params.Quantity)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter quantity: %s", err))
+	}
+
+	// ------------- Optional query parameter "detail" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "detail", ctx.QueryParams(), &params.Detail)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter detail: %s", err))
+	}
+
+	// ------------- Optional query parameter "url" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "url", ctx.QueryParams(), &params.Url)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter url: %s", err))
+	}
+
+	// ------------- Optional query parameter "purchase_order_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "purchase_order_id", ctx.QueryParams(), &params.PurchaseOrderId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter purchase_order_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "finance_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutPurchaseitemsId(ctx, id, params)
+	return err
+}
+
+// GetPurchaseitemsIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseitemsIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseitemsIdDetails(ctx, id)
+	return err
+}
+
+// GetPurchaseorders converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseorders(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseorders(ctx)
+	return err
+}
+
+// PostPurchaseorders converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPurchaseorders(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostPurchaseordersParams
+	// ------------- Optional query parameter "deadline" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "deadline", ctx.QueryParams(), &params.Deadline)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter deadline: %s", err))
+	}
+
+	// ------------- Optional query parameter "user_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "user_id", ctx.QueryParams(), &params.UserId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "expense_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "expense_id", ctx.QueryParams(), &params.ExpenseId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter expense_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "finance_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPurchaseorders(ctx, params)
+	return err
+}
+
+// GetPurchaseordersDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseordersDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseordersDetails(ctx)
+	return err
+}
+
+// GetPurchaseordersDetailsUnregisteredYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseordersDetailsUnregisteredYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseordersDetailsUnregisteredYear(ctx, year)
+	return err
+}
+
+// GetPurchaseordersDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseordersDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseordersDetailsYear(ctx, year)
+	return err
+}
+
+// PostPurchaseordersSendId converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPurchaseordersSendId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPurchaseordersSendId(ctx, id)
+	return err
+}
+
+// DeletePurchaseordersId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeletePurchaseordersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeletePurchaseordersId(ctx, id)
+	return err
+}
+
+// GetPurchaseordersId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseordersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseordersId(ctx, id)
+	return err
+}
+
+// PutPurchaseordersId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutPurchaseordersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutPurchaseordersIdParams
+	// ------------- Optional query parameter "deadline" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "deadline", ctx.QueryParams(), &params.Deadline)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter deadline: %s", err))
+	}
+
+	// ------------- Optional query parameter "user_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "user_id", ctx.QueryParams(), &params.UserId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "expense_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "expense_id", ctx.QueryParams(), &params.ExpenseId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter expense_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "finance_check" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "finance_check", ctx.QueryParams(), &params.FinanceCheck)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter finance_check: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutPurchaseordersId(ctx, id, params)
+	return err
+}
+
+// GetPurchaseordersIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchaseordersIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchaseordersIdDetails(ctx, id)
+	return err
+}
+
+// GetPurchasereports converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchasereports(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchasereports(ctx)
+	return err
+}
+
+// PostPurchasereports converts echo context to params.
+func (w *ServerInterfaceWrapper) PostPurchasereports(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostPurchasereports(ctx)
+	return err
+}
+
+// GetPurchasereportsDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchasereportsDetails(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchasereportsDetails(ctx)
+	return err
+}
+
+// GetPurchasereportsDetailsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchasereportsDetailsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchasereportsDetailsYear(ctx, year)
+	return err
+}
+
+// DeletePurchasereportsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeletePurchasereportsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeletePurchasereportsId(ctx, id)
+	return err
+}
+
+// GetPurchasereportsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchasereportsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchasereportsId(ctx, id)
+	return err
+}
+
+// PutPurchasereportsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutPurchasereportsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutPurchasereportsId(ctx, id)
+	return err
+}
+
+// GetPurchasereportsIdDetails converts echo context to params.
+func (w *ServerInterfaceWrapper) GetPurchasereportsIdDetails(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetPurchasereportsIdDetails(ctx, id)
+	return err
+}
+
+// GetReceipts converts echo context to params.
+func (w *ServerInterfaceWrapper) GetReceipts(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetReceipts(ctx)
+	return err
+}
+
+// PostReceipts converts echo context to params.
+func (w *ServerInterfaceWrapper) PostReceipts(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostReceipts(ctx)
+	return err
+}
+
+// GetReceiptsReportsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetReceiptsReportsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetReceiptsReportsId(ctx, id)
+	return err
+}
+
+// DeleteReceiptsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteReceiptsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteReceiptsId(ctx, id)
+	return err
+}
+
+// GetReceiptsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetReceiptsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetReceiptsId(ctx, id)
+	return err
+}
+
+// PutReceiptsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutReceiptsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutReceiptsId(ctx, id)
+	return err
+}
+
+// GetSources converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSources(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSources(ctx)
+	return err
+}
+
+// PostSources converts echo context to params.
+func (w *ServerInterfaceWrapper) PostSources(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostSourcesParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostSources(ctx, params)
+	return err
+}
+
+// DeleteSourcesId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteSourcesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteSourcesId(ctx, id)
+	return err
+}
+
+// GetSourcesId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSourcesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSourcesId(ctx, id)
+	return err
+}
+
+// PutSourcesId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutSourcesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutSourcesIdParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutSourcesId(ctx, id, params)
+	return err
+}
+
+// GetSponsors converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSponsors(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSponsors(ctx)
+	return err
+}
+
+// PostSponsors converts echo context to params.
+func (w *ServerInterfaceWrapper) PostSponsors(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostSponsors(ctx)
+	return err
+}
+
+// GetSponsorsPeriodsYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSponsorsPeriodsYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSponsorsPeriodsYear(ctx, year)
+	return err
+}
+
+// DeleteSponsorsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteSponsorsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteSponsorsId(ctx, id)
+	return err
+}
+
+// GetSponsorsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSponsorsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSponsorsId(ctx, id)
+	return err
+}
+
+// PutSponsorsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutSponsorsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutSponsorsId(ctx, id)
+	return err
+}
+
+// GetSponsorstyles converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSponsorstyles(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSponsorstyles(ctx)
+	return err
+}
+
+// PostSponsorstyles converts echo context to params.
+func (w *ServerInterfaceWrapper) PostSponsorstyles(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostSponsorstyles(ctx)
+	return err
+}
+
+// DeleteSponsorstylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteSponsorstylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteSponsorstylesId(ctx, id)
+	return err
+}
+
+// GetSponsorstylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetSponsorstylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetSponsorstylesId(ctx, id)
+	return err
+}
+
+// PutSponsorstylesId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutSponsorstylesId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutSponsorstylesId(ctx, id)
+	return err
+}
+
+// GetTeachers converts echo context to params.
+func (w *ServerInterfaceWrapper) GetTeachers(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetTeachers(ctx)
+	return err
+}
+
+// PostTeachers converts echo context to params.
+func (w *ServerInterfaceWrapper) PostTeachers(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostTeachersParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Required query parameter "position" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "position", ctx.QueryParams(), &params.Position)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter position: %s", err))
+	}
+
+	// ------------- Optional query parameter "department_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "department_id", ctx.QueryParams(), &params.DepartmentId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter department_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "room" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "room", ctx.QueryParams(), &params.Room)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter room: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_black" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_black", ctx.QueryParams(), &params.IsBlack)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_black: %s", err))
+	}
+
+	// ------------- Optional query parameter "remark" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostTeachers(ctx, params)
+	return err
+}
+
+// DeleteTeachersDelete converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteTeachersDelete(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteTeachersDelete(ctx)
+	return err
+}
+
+// GetTeachersFundRegisteredYear converts echo context to params.
+func (w *ServerInterfaceWrapper) GetTeachersFundRegisteredYear(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "year" -------------
+	var year int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "year", ctx.Param("year"), &year, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetTeachersFundRegisteredYear(ctx, year)
+	return err
+}
+
+// DeleteTeachersId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteTeachersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteTeachersId(ctx, id)
+	return err
+}
+
+// GetTeachersId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetTeachersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetTeachersId(ctx, id)
+	return err
+}
+
+// PutTeachersId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutTeachersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutTeachersIdParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Required query parameter "position" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "position", ctx.QueryParams(), &params.Position)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter position: %s", err))
+	}
+
+	// ------------- Optional query parameter "department_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "department_id", ctx.QueryParams(), &params.DepartmentId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter department_id: %s", err))
+	}
+
+	// ------------- Optional query parameter "room" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "room", ctx.QueryParams(), &params.Room)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter room: %s", err))
+	}
+
+	// ------------- Optional query parameter "is_black" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "is_black", ctx.QueryParams(), &params.IsBlack)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter is_black: %s", err))
+	}
+
+	// ------------- Optional query parameter "remark" -------------
+
+	err = runtime.BindQueryParameter("form", true, false, "remark", ctx.QueryParams(), &params.Remark)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter remark: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutTeachersId(ctx, id, params)
+	return err
+}
+
+// GetUsers converts echo context to params.
+func (w *ServerInterfaceWrapper) GetUsers(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetUsers(ctx)
+	return err
+}
+
+// PostUsers converts echo context to params.
+func (w *ServerInterfaceWrapper) PostUsers(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostUsersParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Required query parameter "bureau_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "bureau_id", ctx.QueryParams(), &params.BureauId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter bureau_id: %s", err))
+	}
+
+	// ------------- Required query parameter "role_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "role_id", ctx.QueryParams(), &params.RoleId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter role_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostUsers(ctx, params)
+	return err
+}
+
+// DeleteUsersDelete converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteUsersDelete(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteUsersDelete(ctx)
+	return err
+}
+
+// DeleteUsersId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteUsersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteUsersId(ctx, id)
+	return err
+}
+
+// GetUsersId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetUsersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetUsersId(ctx, id)
+	return err
+}
+
+// PutUsersId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutUsersId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutUsersIdParams
+	// ------------- Required query parameter "name" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "name", ctx.QueryParams(), &params.Name)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter name: %s", err))
+	}
+
+	// ------------- Required query parameter "bureau_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "bureau_id", ctx.QueryParams(), &params.BureauId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter bureau_id: %s", err))
+	}
+
+	// ------------- Required query parameter "role_id" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "role_id", ctx.QueryParams(), &params.RoleId)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter role_id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutUsersId(ctx, id, params)
+	return err
+}
+
+// GetYears converts echo context to params.
+func (w *ServerInterfaceWrapper) GetYears(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetYears(ctx)
+	return err
+}
+
+// PostYears converts echo context to params.
+func (w *ServerInterfaceWrapper) PostYears(ctx echo.Context) error {
+	var err error
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PostYearsParams
+	// ------------- Required query parameter "year" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "year", ctx.QueryParams(), &params.Year)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostYears(ctx, params)
+	return err
+}
+
+// GetYearsPeriods converts echo context to params.
+func (w *ServerInterfaceWrapper) GetYearsPeriods(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetYearsPeriods(ctx)
+	return err
+}
+
+// PostYearsPeriods converts echo context to params.
+func (w *ServerInterfaceWrapper) PostYearsPeriods(ctx echo.Context) error {
+	var err error
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PostYearsPeriods(ctx)
+	return err
+}
+
+// DeleteYearsPeriodsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteYearsPeriodsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteYearsPeriodsId(ctx, id)
+	return err
+}
+
+// PutYearsPeriodsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutYearsPeriodsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutYearsPeriodsId(ctx, id)
+	return err
+}
+
+// DeleteYearsId converts echo context to params.
+func (w *ServerInterfaceWrapper) DeleteYearsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.DeleteYearsId(ctx, id)
+	return err
+}
+
+// GetYearsId converts echo context to params.
+func (w *ServerInterfaceWrapper) GetYearsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.GetYearsId(ctx, id)
+	return err
+}
+
+// PutYearsId converts echo context to params.
+func (w *ServerInterfaceWrapper) PutYearsId(ctx echo.Context) error {
+	var err error
+	// ------------- Path parameter "id" -------------
+	var id int
+
+	err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
+	}
+
+	// Parameter object where we will unmarshal all parameters from the context
+	var params PutYearsIdParams
+	// ------------- Required query parameter "year" -------------
+
+	err = runtime.BindQueryParameter("form", true, true, "year", ctx.QueryParams(), &params.Year)
+	if err != nil {
+		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err))
+	}
+
+	// Invoke the callback with all the unmarshaled arguments
+	err = w.Handler.PutYearsId(ctx, id, params)
+	return err
+}
+
+// This is a simple interface which specifies echo.Route addition functions which
+// are present on both echo.Echo and echo.Group, since we want to allow using
+// either of them for path registration
+type EchoRouter interface {
+	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
+}
+
+// RegisterHandlers adds each server route to the EchoRouter.
+func RegisterHandlers(router EchoRouter, si ServerInterface) {
+	RegisterHandlersWithBaseURL(router, si, "")
+}
+
+// Registers handlers, and prepends BaseURL to the paths, so that the paths
+// can be served under a prefix.
+func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
+
+	wrapper := ServerInterfaceWrapper{
+		Handler: si,
+	}
+
+	router.GET(baseURL+"/activities", wrapper.GetActivities)
+	router.POST(baseURL+"/activities", wrapper.PostActivities)
+	router.GET(baseURL+"/activities/details", wrapper.GetActivitiesDetails)
+	router.GET(baseURL+"/activities/details/:year", wrapper.GetActivitiesDetailsYear)
+	router.GET(baseURL+"/activities/filtered_details", wrapper.GetActivitiesFilteredDetails)
+	router.GET(baseURL+"/activities/filtered_details/:year", wrapper.GetActivitiesFilteredDetailsYear)
+	router.DELETE(baseURL+"/activities/:id", wrapper.DeleteActivitiesId)
+	router.GET(baseURL+"/activities/:id", wrapper.GetActivitiesId)
+	router.PUT(baseURL+"/activities/:id", wrapper.PutActivitiesId)
+	router.GET(baseURL+"/activity_informations", wrapper.GetActivityInformations)
+	router.POST(baseURL+"/activity_informations", wrapper.PostActivityInformations)
+	router.DELETE(baseURL+"/activity_informations/:id", wrapper.DeleteActivityInformationsId)
+	router.GET(baseURL+"/activity_informations/:id", wrapper.GetActivityInformationsId)
+	router.PUT(baseURL+"/activity_informations/:id", wrapper.PutActivityInformationsId)
+	router.GET(baseURL+"/activity_styles", wrapper.GetActivityStyles)
+	router.POST(baseURL+"/activity_styles", wrapper.PostActivityStyles)
+	router.DELETE(baseURL+"/activity_styles/:id", wrapper.DeleteActivityStylesId)
+	router.GET(baseURL+"/activity_styles/:id", wrapper.GetActivityStylesId)
+	router.PUT(baseURL+"/activity_styles/:id", wrapper.PutActivityStylesId)
+	router.GET(baseURL+"/budgets", wrapper.GetBudgets)
+	router.POST(baseURL+"/budgets", wrapper.PostBudgets)
+	router.GET(baseURL+"/budgets/details", wrapper.GetBudgetsDetails)
+	router.GET(baseURL+"/budgets/details/:year", wrapper.GetBudgetsDetailsYear)
+	router.DELETE(baseURL+"/budgets/:id", wrapper.DeleteBudgetsId)
+	router.GET(baseURL+"/budgets/:id", wrapper.GetBudgetsId)
+	router.PUT(baseURL+"/budgets/:id", wrapper.PutBudgetsId)
+	router.GET(baseURL+"/budgets/:id/details", wrapper.GetBudgetsIdDetails)
+	router.GET(baseURL+"/bureaus", wrapper.GetBureaus)
+	router.POST(baseURL+"/bureaus", wrapper.PostBureaus)
+	router.DELETE(baseURL+"/bureaus/:id", wrapper.DeleteBureausId)
+	router.GET(baseURL+"/bureaus/:id", wrapper.GetBureausId)
+	router.PUT(baseURL+"/bureaus/:id", wrapper.PutBureausId)
+	router.GET(baseURL+"/departments", wrapper.GetDepartments)
+	router.POST(baseURL+"/departments", wrapper.PostDepartments)
+	router.DELETE(baseURL+"/departments/:id", wrapper.DeleteDepartmentsId)
+	router.GET(baseURL+"/departments/:id", wrapper.GetDepartmentsId)
+	router.PUT(baseURL+"/departments/:id", wrapper.PutDepartmentsId)
+	router.GET(baseURL+"/expenses", wrapper.GetExpenses)
+	router.POST(baseURL+"/expenses", wrapper.PostExpenses)
+	router.GET(baseURL+"/expenses/details", wrapper.GetExpensesDetails)
+	router.GET(baseURL+"/expenses/details/:year", wrapper.GetExpensesDetailsYear)
+	router.GET(baseURL+"/expenses/fiscalyear/:year", wrapper.GetExpensesFiscalyearYear)
+	router.DELETE(baseURL+"/expenses/:id", wrapper.DeleteExpensesId)
+	router.GET(baseURL+"/expenses/:id", wrapper.GetExpensesId)
+	router.PUT(baseURL+"/expenses/:id", wrapper.PutExpensesId)
+	router.GET(baseURL+"/expenses/:id/details", wrapper.GetExpensesIdDetails)
+	router.GET(baseURL+"/fund_informations", wrapper.GetFundInformations)
+	router.POST(baseURL+"/fund_informations", wrapper.PostFundInformations)
+	router.GET(baseURL+"/fund_informations/details", wrapper.GetFundInformationsDetails)
+	router.GET(baseURL+"/fund_informations/details/:year", wrapper.GetFundInformationsDetailsYear)
+	router.DELETE(baseURL+"/fund_informations/:id", wrapper.DeleteFundInformationsId)
+	router.GET(baseURL+"/fund_informations/:id", wrapper.GetFundInformationsId)
+	router.PUT(baseURL+"/fund_informations/:id", wrapper.PutFundInformationsId)
+	router.GET(baseURL+"/fund_informations/:id/details", wrapper.GetFundInformationsIdDetails)
+	router.POST(baseURL+"/password_reset/request", wrapper.PostPasswordResetRequest)
+	router.POST(baseURL+"/password_reset/:id", wrapper.PostPasswordResetId)
+	router.POST(baseURL+"/password_reset/:id/valid", wrapper.PostPasswordResetIdValid)
+	router.GET(baseURL+"/purchaseitems", wrapper.GetPurchaseitems)
+	router.POST(baseURL+"/purchaseitems", wrapper.PostPurchaseitems)
+	router.GET(baseURL+"/purchaseitems/details", wrapper.GetPurchaseitemsDetails)
+	router.DELETE(baseURL+"/purchaseitems/:id", wrapper.DeletePurchaseitemsId)
+	router.GET(baseURL+"/purchaseitems/:id", wrapper.GetPurchaseitemsId)
+	router.PUT(baseURL+"/purchaseitems/:id", wrapper.PutPurchaseitemsId)
+	router.GET(baseURL+"/purchaseitems/:id/details", wrapper.GetPurchaseitemsIdDetails)
+	router.GET(baseURL+"/purchaseorders", wrapper.GetPurchaseorders)
+	router.POST(baseURL+"/purchaseorders", wrapper.PostPurchaseorders)
+	router.GET(baseURL+"/purchaseorders/details", wrapper.GetPurchaseordersDetails)
+	router.GET(baseURL+"/purchaseorders/details/unregistered/:year", wrapper.GetPurchaseordersDetailsUnregisteredYear)
+	router.GET(baseURL+"/purchaseorders/details/:year", wrapper.GetPurchaseordersDetailsYear)
+	router.POST(baseURL+"/purchaseorders/send/:id", wrapper.PostPurchaseordersSendId)
+	router.DELETE(baseURL+"/purchaseorders/:id", wrapper.DeletePurchaseordersId)
+	router.GET(baseURL+"/purchaseorders/:id", wrapper.GetPurchaseordersId)
+	router.PUT(baseURL+"/purchaseorders/:id", wrapper.PutPurchaseordersId)
+	router.GET(baseURL+"/purchaseorders/:id/details", wrapper.GetPurchaseordersIdDetails)
+	router.GET(baseURL+"/purchasereports", wrapper.GetPurchasereports)
+	router.POST(baseURL+"/purchasereports", wrapper.PostPurchasereports)
+	router.GET(baseURL+"/purchasereports/details", wrapper.GetPurchasereportsDetails)
+	router.GET(baseURL+"/purchasereports/details/:year", wrapper.GetPurchasereportsDetailsYear)
+	router.DELETE(baseURL+"/purchasereports/:id", wrapper.DeletePurchasereportsId)
+	router.GET(baseURL+"/purchasereports/:id", wrapper.GetPurchasereportsId)
+	router.PUT(baseURL+"/purchasereports/:id", wrapper.PutPurchasereportsId)
+	router.GET(baseURL+"/purchasereports/:id/details", wrapper.GetPurchasereportsIdDetails)
+	router.GET(baseURL+"/receipts", wrapper.GetReceipts)
+	router.POST(baseURL+"/receipts", wrapper.PostReceipts)
+	router.GET(baseURL+"/receipts/reports/:id", wrapper.GetReceiptsReportsId)
+	router.DELETE(baseURL+"/receipts/:id", wrapper.DeleteReceiptsId)
+	router.GET(baseURL+"/receipts/:id", wrapper.GetReceiptsId)
+	router.PUT(baseURL+"/receipts/:id", wrapper.PutReceiptsId)
+	router.GET(baseURL+"/sources", wrapper.GetSources)
+	router.POST(baseURL+"/sources", wrapper.PostSources)
+	router.DELETE(baseURL+"/sources/:id", wrapper.DeleteSourcesId)
+	router.GET(baseURL+"/sources/:id", wrapper.GetSourcesId)
+	router.PUT(baseURL+"/sources/:id", wrapper.PutSourcesId)
+	router.GET(baseURL+"/sponsors", wrapper.GetSponsors)
+	router.POST(baseURL+"/sponsors", wrapper.PostSponsors)
+	router.GET(baseURL+"/sponsors/periods/:year", wrapper.GetSponsorsPeriodsYear)
+	router.DELETE(baseURL+"/sponsors/:id", wrapper.DeleteSponsorsId)
+	router.GET(baseURL+"/sponsors/:id", wrapper.GetSponsorsId)
+	router.PUT(baseURL+"/sponsors/:id", wrapper.PutSponsorsId)
+	router.GET(baseURL+"/sponsorstyles", wrapper.GetSponsorstyles)
+	router.POST(baseURL+"/sponsorstyles", wrapper.PostSponsorstyles)
+	router.DELETE(baseURL+"/sponsorstyles/:id", wrapper.DeleteSponsorstylesId)
+	router.GET(baseURL+"/sponsorstyles/:id", wrapper.GetSponsorstylesId)
+	router.PUT(baseURL+"/sponsorstyles/:id", wrapper.PutSponsorstylesId)
+	router.GET(baseURL+"/teachers", wrapper.GetTeachers)
+	router.POST(baseURL+"/teachers", wrapper.PostTeachers)
+	router.DELETE(baseURL+"/teachers/delete", wrapper.DeleteTeachersDelete)
+	router.GET(baseURL+"/teachers/fundRegistered/:year", wrapper.GetTeachersFundRegisteredYear)
+	router.DELETE(baseURL+"/teachers/:id", wrapper.DeleteTeachersId)
+	router.GET(baseURL+"/teachers/:id", wrapper.GetTeachersId)
+	router.PUT(baseURL+"/teachers/:id", wrapper.PutTeachersId)
+	router.GET(baseURL+"/users", wrapper.GetUsers)
+	router.POST(baseURL+"/users", wrapper.PostUsers)
+	router.DELETE(baseURL+"/users/delete", wrapper.DeleteUsersDelete)
+	router.DELETE(baseURL+"/users/:id", wrapper.DeleteUsersId)
+	router.GET(baseURL+"/users/:id", wrapper.GetUsersId)
+	router.PUT(baseURL+"/users/:id", wrapper.PutUsersId)
+	router.GET(baseURL+"/years", wrapper.GetYears)
+	router.POST(baseURL+"/years", wrapper.PostYears)
+	router.GET(baseURL+"/years/periods", wrapper.GetYearsPeriods)
+	router.POST(baseURL+"/years/periods", wrapper.PostYearsPeriods)
+	router.DELETE(baseURL+"/years/periods/:id", wrapper.DeleteYearsPeriodsId)
+	router.PUT(baseURL+"/years/periods/:id", wrapper.PutYearsPeriodsId)
+	router.DELETE(baseURL+"/years/:id", wrapper.DeleteYearsId)
+	router.GET(baseURL+"/years/:id", wrapper.GetYearsId)
+	router.PUT(baseURL+"/years/:id", wrapper.PutYearsId)
+
+}

From 3295acf6cb514566337b7509c0318b5e2a62cfe2 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 23 Dec 2024 17:03:40 +0000
Subject: [PATCH 21/30] =?UTF-8?q?[fix]=20=E3=82=A8=E3=83=A9=E3=83=BC?=
 =?UTF-8?q?=E3=81=8C=E8=B5=B7=E3=81=93=E3=82=8B=E3=81=9F=E3=82=81go?=
 =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E5=AE=9A=E7=BE=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 openapi/go.mod |  10 +
 openapi/go.sum | 486 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 496 insertions(+)
 create mode 100644 openapi/go.mod
 create mode 100644 openapi/go.sum

diff --git a/openapi/go.mod b/openapi/go.mod
new file mode 100644
index 000000000..6f88ec8e4
--- /dev/null
+++ b/openapi/go.mod
@@ -0,0 +1,10 @@
+module github.com/NUTFes/FinanSu/api
+
+go 1.16
+
+require (
+	github.com/labstack/echo/v4 v4.11.4
+	github.com/oapi-codegen/runtime v1.1.1
+	github.com/stretchr/testify v1.9.0 // indirect
+	golang.org/x/net v0.25.0 // indirect
+)
diff --git a/openapi/go.sum b/openapi/go.sum
new file mode 100644
index 000000000..bff7adf86
--- /dev/null
+++ b/openapi/go.sum
@@ -0,0 +1,486 @@
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno=
+github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4=
+github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
+github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM=
+github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
+github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=
+github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM=
+github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
+github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
+github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=
+github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
+github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
+github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
+github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
+github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
+github.com/bsm/ginkgo/v2 v2.9.5/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
+github.com/bsm/gomega v1.26.0/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
+github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
+github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
+github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM=
+github.com/bytedance/sonic v1.10.0-rc3/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4=
+github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
+github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
+github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
+github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
+github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA=
+github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
+github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
+github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
+github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
+github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk=
+github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
+github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
+github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=
+github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
+github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
+github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
+github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8=
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
+github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
+github.com/go-playground/validator/v10 v10.14.1/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
+github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
+github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
+github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
+github.com/gobwas/ws v1.3.0/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
+github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
+github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
+github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
+github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
+github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA=
+github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0=
+github.com/iris-contrib/httpexpect/v2 v2.15.2/go.mod h1:JLDgIqnFy5loDSUv1OA2j0mb6p/rDhiCqigP22Uq9xE=
+github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
+github.com/kataras/blocks v0.0.7/go.mod h1:UJIU97CluDo0f+zEjbnbkeMRlvYORtmc1304EeyXf4I=
+github.com/kataras/golog v0.1.9/go.mod h1:jlpk/bOaYCyqDqH18pgDHdaJab72yBE6i0O3s30hpWY=
+github.com/kataras/iris/v12 v12.2.6-0.20230908161203-24ba4e8933b9/go.mod h1:ldkoR3iXABBeqlTibQ3MYaviA1oSlPvim6f55biwBh4=
+github.com/kataras/jwt v0.1.10/go.mod h1:xkimAtDhU/aGlQqjwvgtg+VyuPwMiyZHaY8LJRh0mYo=
+github.com/kataras/neffos v0.0.22/go.mod h1:IIJZcUDvwBxJGlDj942dqQgyznVKYDti91f8Ez+RRxE=
+github.com/kataras/pio v0.0.12/go.mod h1:ODK/8XBhhQ5WqrAhKy+9lTPS7sBf6O3KcLhc9klfRcY=
+github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4=
+github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw=
+github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
+github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
+github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
+github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8=
+github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8=
+github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
+github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
+github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
+github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
+github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mediocregopher/radix/v3 v3.8.1/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
+github.com/microcosm-cc/bluemonday v1.0.25/go.mod h1:ZIOjCQp1OrzBBPIJmfX4qDYFuhU02nx4bn030ixfHLE=
+github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
+github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
+github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
+github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/nats-io/jwt/v2 v2.3.0/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k=
+github.com/nats-io/jwt/v2 v2.5.0/go.mod h1:24BeQtRwxRV8ruvC4CojXlx/WQ/VjuwlYiH+vu/+ibI=
+github.com/nats-io/nats-server/v2 v2.9.11/go.mod h1:b0oVuxSlkvS3ZjMkncFeACGyZohbO4XhSqW1Lt7iRRY=
+github.com/nats-io/nats.go v1.19.0/go.mod h1:tLqubohF7t4z3du1QDPYJIQQyhb4wl6DhjxEajSI7UA=
+github.com/nats-io/nats.go v1.28.0/go.mod h1:XpbWUlOElGwTYbMR7imivs7jJj9GtK7ypv321Wp6pjc=
+github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4=
+github.com/nats-io/nkeys v0.4.4/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64=
+github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
+github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
+github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
+github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
+github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
+github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
+github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
+github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
+github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
+github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0=
+github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo=
+github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw=
+github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo=
+github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc=
+github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk=
+github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo=
+github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts=
+github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k=
+github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0=
+github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
+github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
+github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
+github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
+github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
+github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
+github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc=
+github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM=
+github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg=
+github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
+github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
+github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw=
+github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw=
+github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ=
+github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg=
+github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4=
+github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ=
+github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
+github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
+github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
+github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
+github.com/pkg/diff v0.0.0-20200914180035-5b29258ca4f7/go.mod h1:zO8QMzTeZd5cpnIkz/Gn6iK0jDfGicM1nynOkkPIl28=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
+github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
+github.com/redis/go-redis/v9 v9.1.0/go.mod h1:urWj3He21Dj5k4TK1y59xH8Uj6ATueP8AH1cY3lZl4c=
+github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=
+github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
+github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
+github.com/shirou/gopsutil/v3 v3.23.8/go.mod h1:7hmCaBn+2ZwaZOr6jmPBZDfawwMGuo1id3C6aM8EDqQ=
+github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
+github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
+github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
+github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
+github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
+github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
+github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
+github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
+github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
+github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
+github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
+github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tailscale/depaware v0.0.0-20210622194025-720c4b409502/go.mod h1:p9lPsd+cx33L3H9nNoecRRxPssFKUwwI50I3pZ0yT+8=
+github.com/tdewolff/minify/v2 v2.12.9/go.mod h1:qOqdlDfL+7v0/fyymB+OP497nIxJYSvX4MQWA8OoiXU=
+github.com/tdewolff/parse/v2 v2.6.8/go.mod h1:XHDhaU6IBgsryfdnpzUXBlT6leW/l25yrFBTEb4eIyM=
+github.com/tdewolff/test v1.0.9/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
+github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
+github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
+github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
+github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
+github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
+github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
+github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
+github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
+github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
+github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
+github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
+github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
+github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0=
+github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=
+github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
+github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
+go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
+go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M=
+go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU=
+golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/arch v0.4.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
+golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
+golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
+golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
+golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
+golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
+golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
+golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
+golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
+golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
+golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
+golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
+golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
+golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
+golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
+golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
+golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
+golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
+golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
+golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
+golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
+golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
+golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
+golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
+golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
+golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
+golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
+golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
+golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
+golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
+golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
+golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
+golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
+golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
+golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
+golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
+golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
+golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE=
+nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
+rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

From 741ba884781e480159ba76f32f8b9f1a691bb6f9 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 23 Dec 2024 17:03:53 +0000
Subject: [PATCH 22/30] =?UTF-8?q?[fix]=20openapi=E3=83=9E=E3=82=A6?=
 =?UTF-8?q?=E3=83=B3=E3=83=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docker-compose.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/docker-compose.yml b/docker-compose.yml
index 0d973079b..978a78cd7 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -27,6 +27,7 @@ services:
     container_name: "nutfes-finansu-api"
     volumes:
       - ./api:/app
+      - ./openapi:/openapi
     environment:
       RESET_PASSWORD_URL: "http://localhost:3000/reset_password"
     #シェルスクリプトを実行するコマンド

From 2859572152580cd567f739156614a7a337fe4fdb Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 23 Dec 2024 17:04:18 +0000
Subject: [PATCH 23/30] =?UTF-8?q?[fix]=20swagger=E3=82=B3=E3=83=9E?=
 =?UTF-8?q?=E3=83=B3=E3=83=89=E3=81=AE=E8=BF=BD=E5=8A=A0&run-all=E3=81=AE?=
 =?UTF-8?q?=E5=B0=8E=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Makefile | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index f6d643056..f90c1bf63 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@ build:
 
 # アプリコンテナの起動
 run:
-	docker compose up
+	docker compose up -d
 
 # アプリコンテナの停止
 down:
@@ -74,4 +74,12 @@ run-eslint:
 	docker compose exec view npm run lint
 
 generate-openapi:
-	docker compose run --rm api oapi-codegen -config internals/generated/config.yaml internals/generated/openapi.yaml
+	docker compose run --rm api oapi-codegen -config /openapi/generated/config.yaml /openapi/generated/openapi.yaml
+
+run-swagger:
+	docker compose -f compose.swagger.yml up -d
+
+run-all:
+	make run-db
+	make run
+	make run-swagger

From bdbf70e135ed09a1390f91ec6f2b034dac93ddf8 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 23 Dec 2024 17:04:48 +0000
Subject: [PATCH 24/30] [fix] fixed go mod

---
 api/go.mod |  10 +-
 api/go.sum | 493 -----------------------------------------------------
 2 files changed, 3 insertions(+), 500 deletions(-)

diff --git a/api/go.mod b/api/go.mod
index 453a9f975..f6dada5c1 100644
--- a/api/go.mod
+++ b/api/go.mod
@@ -3,21 +3,17 @@ module github.com/NUTFes/FinanSu/api
 go 1.16
 
 require (
-	github.com/go-openapi/jsonpointer v0.20.2 // indirect
-	github.com/go-openapi/swag v0.22.8 // indirect
 	github.com/go-sql-driver/mysql v1.6.0
 	github.com/go-test/deep v1.0.8 // indirect
+	github.com/google/go-cmp v0.6.0 // indirect
+	github.com/gorilla/websocket v1.5.0 // indirect
 	github.com/joho/godotenv v1.4.0
 	github.com/labstack/echo/v4 v4.11.4
-	github.com/oapi-codegen/runtime v1.1.1
 	github.com/pkg/errors v0.9.1
-	github.com/rogpeppe/go-internal v1.12.0 // indirect
 	github.com/slack-go/slack v0.13.0
 	github.com/stretchr/testify v1.9.0 // indirect
-	github.com/swaggo/echo-swagger v1.3.5
-	github.com/swaggo/swag v1.8.1
 	golang.org/x/crypto v0.23.0
-	golang.org/x/tools v0.21.0 // indirect
+	golang.org/x/net v0.25.0 // indirect
 	gorm.io/driver/mysql v1.3.3
 	gorm.io/gorm v1.23.4
 )
diff --git a/api/go.sum b/api/go.sum
index 213215fcb..04555e122 100644
--- a/api/go.sum
+++ b/api/go.sum
@@ -1,604 +1,114 @@
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
-github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno=
-github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4=
-github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
-github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM=
-github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
-github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
-github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=
-github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
-github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
-github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
-github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=
-github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM=
-github.com/agiledragon/gomonkey/v2 v2.3.1 h1:k+UnUY0EMNYUFUAQVETGY9uUTxjMdnUkP0ARyJS1zzs=
-github.com/agiledragon/gomonkey/v2 v2.3.1/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY=
-github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
-github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
-github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=
-github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
-github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
-github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
-github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
-github.com/bsm/ginkgo/v2 v2.9.5/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
-github.com/bsm/gomega v1.26.0/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
-github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
-github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
-github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM=
-github.com/bytedance/sonic v1.10.0-rc3/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4=
-github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
-github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
-github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
-github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
-github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA=
-github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
-github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk=
-github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
-github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
-github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
-github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
-github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
-github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
-github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw=
-github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
-github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
-github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
-github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
-github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q=
-github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs=
-github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs=
-github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns=
-github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M=
-github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I=
-github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
-github.com/go-openapi/swag v0.22.5/go.mod h1:Gl91UqO+btAM0plGGxHqJcQZ1ZTy6jbmridBTsDy8A0=
-github.com/go-openapi/swag v0.22.8 h1:/9RjDSQ0vbFR+NyjGMkFTsA1IA0fmhKSThmfGZjicbw=
-github.com/go-openapi/swag v0.22.8/go.mod h1:6QT22icPLEqAM/z/TChgb4WAveCHF92+2gF0CNjHpPI=
-github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
-github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
-github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
-github.com/go-playground/validator/v10 v10.14.1/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
 github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
-github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
 github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
 github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
 github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
-github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
-github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
-github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
-github.com/gobwas/ws v1.3.0/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
-github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
 github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
 github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
-github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
-github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
 github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
-github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
-github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
-github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
 github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
-github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0=
-github.com/iris-contrib/httpexpect/v2 v2.15.2/go.mod h1:JLDgIqnFy5loDSUv1OA2j0mb6p/rDhiCqigP22Uq9xE=
-github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA=
 github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
 github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
 github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas=
 github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
 github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=
 github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
-github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
-github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
-github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
-github.com/kataras/blocks v0.0.7/go.mod h1:UJIU97CluDo0f+zEjbnbkeMRlvYORtmc1304EeyXf4I=
-github.com/kataras/golog v0.1.9/go.mod h1:jlpk/bOaYCyqDqH18pgDHdaJab72yBE6i0O3s30hpWY=
-github.com/kataras/iris/v12 v12.2.6-0.20230908161203-24ba4e8933b9/go.mod h1:ldkoR3iXABBeqlTibQ3MYaviA1oSlPvim6f55biwBh4=
-github.com/kataras/jwt v0.1.10/go.mod h1:xkimAtDhU/aGlQqjwvgtg+VyuPwMiyZHaY8LJRh0mYo=
-github.com/kataras/neffos v0.0.22/go.mod h1:IIJZcUDvwBxJGlDj942dqQgyznVKYDti91f8Ez+RRxE=
-github.com/kataras/pio v0.0.12/go.mod h1:ODK/8XBhhQ5WqrAhKy+9lTPS7sBf6O3KcLhc9klfRcY=
-github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4=
-github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw=
-github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
-github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
-github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
-github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
-github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
-github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
-github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
-github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/labstack/echo/v4 v4.9.0/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
 github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8=
 github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8=
-github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
 github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
 github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
-github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
-github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
-github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
-github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18=
-github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
-github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
 github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
 github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mediocregopher/radix/v3 v3.8.1/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
-github.com/microcosm-cc/bluemonday v1.0.25/go.mod h1:ZIOjCQp1OrzBBPIJmfX4qDYFuhU02nx4bn030ixfHLE=
-github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
-github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/nats-io/jwt/v2 v2.3.0/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k=
-github.com/nats-io/jwt/v2 v2.5.0/go.mod h1:24BeQtRwxRV8ruvC4CojXlx/WQ/VjuwlYiH+vu/+ibI=
-github.com/nats-io/nats-server/v2 v2.9.11/go.mod h1:b0oVuxSlkvS3ZjMkncFeACGyZohbO4XhSqW1Lt7iRRY=
-github.com/nats-io/nats.go v1.19.0/go.mod h1:tLqubohF7t4z3du1QDPYJIQQyhb4wl6DhjxEajSI7UA=
-github.com/nats-io/nats.go v1.28.0/go.mod h1:XpbWUlOElGwTYbMR7imivs7jJj9GtK7ypv321Wp6pjc=
-github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4=
-github.com/nats-io/nkeys v0.4.4/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
-github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
-github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
-github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
-github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
-github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
-github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
-github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
-github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
-github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0=
-github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo=
-github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw=
-github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo=
-github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc=
-github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk=
-github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo=
-github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts=
-github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k=
-github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0=
-github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
-github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
-github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
-github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
-github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
-github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc=
-github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM=
-github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg=
-github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
-github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
-github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw=
-github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw=
-github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ=
-github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg=
-github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4=
-github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ=
-github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
-github.com/otiai10/copy v1.7.0 h1:hVoPiN+t+7d2nzzwMiDHPSOogsWAStewq3TwU05+clE=
-github.com/otiai10/copy v1.7.0/go.mod h1:rmRl6QPdJj6EiUqXQ/4Nn2lLXoNQjFCQbbNrxgc/t3U=
-github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=
-github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=
-github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
-github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
-github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
-github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
-github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
-github.com/pkg/diff v0.0.0-20200914180035-5b29258ca4f7/go.mod h1:zO8QMzTeZd5cpnIkz/Gn6iK0jDfGicM1nynOkkPIl28=
-github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo=
-github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
-github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
-github.com/redis/go-redis/v9 v9.1.0/go.mod h1:urWj3He21Dj5k4TK1y59xH8Uj6ATueP8AH1cY3lZl4c=
-github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
-github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
-github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=
-github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
-github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
-github.com/shirou/gopsutil/v3 v3.23.8/go.mod h1:7hmCaBn+2ZwaZOr6jmPBZDfawwMGuo1id3C6aM8EDqQ=
-github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
-github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
-github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
-github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
 github.com/slack-go/slack v0.13.0 h1:7my/pR2ubZJ9912p9FtvALYpbt0cQPAqkRy2jaSI1PQ=
 github.com/slack-go/slack v0.13.0/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
-github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
-github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
-github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
-github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
-github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
 github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/swaggo/echo-swagger v1.3.5 h1:kCx1wvX5AKhjI6Ykt48l3PTsfL9UD40ZROOx/tYzWyY=
-github.com/swaggo/echo-swagger v1.3.5/go.mod h1:3IMHd2Z8KftdWFEEjGmv6QpWj370LwMCOfovuh7vF34=
-github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a h1:kAe4YSu0O0UFn1DowNo2MY5p6xzqtJ/wQ7LZynSvGaY=
-github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a/go.mod h1:lKJPbtWzJ9JhsTN1k1gZgleJWY/cqq0psdoMmaThG3w=
-github.com/swaggo/swag v1.8.1 h1:JuARzFX1Z1njbCGz+ZytBR15TFJwF2Q7fu8puJHhQYI=
-github.com/swaggo/swag v1.8.1/go.mod h1:ugemnJsPZm/kRwFUnzBlbHRd0JY9zE1M4F+uy2pAaPQ=
-github.com/tailscale/depaware v0.0.0-20210622194025-720c4b409502/go.mod h1:p9lPsd+cx33L3H9nNoecRRxPssFKUwwI50I3pZ0yT+8=
-github.com/tdewolff/minify/v2 v2.12.9/go.mod h1:qOqdlDfL+7v0/fyymB+OP497nIxJYSvX4MQWA8OoiXU=
-github.com/tdewolff/parse/v2 v2.6.8/go.mod h1:XHDhaU6IBgsryfdnpzUXBlT6leW/l25yrFBTEb4eIyM=
-github.com/tdewolff/test v1.0.9/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
-github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
-github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
-github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
-github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
-github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
-github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
-github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
 github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
 github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
-github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
-github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
-github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
-github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
-github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
-github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
-github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
-github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0=
-github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=
-github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
-github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
-go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
-go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M=
-go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU=
-golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
-golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
-golang.org/x/arch v0.4.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
-golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
-golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
-golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
-golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
-golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
-golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
-golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
 golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
 golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
 golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
 golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
 golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
-golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
-golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
-golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
-golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
-golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
-golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
-golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
-golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
-golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
-golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
 golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
 golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
-golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
-golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
 golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
 golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
 golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
 golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
-golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
-golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
 golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
-golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
-golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
 golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
-golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
-golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
 golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
 golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
 golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
-golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
-golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
 golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
 golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
 golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
-golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
-golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
-golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
 golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
-golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
-golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
-golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
-golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw=
-golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
-gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gorm.io/driver/mysql v1.3.3 h1:jXG9ANrwBc4+bMvBcSl8zCfPBaVoPyBEBshA8dA93X8=
@@ -606,6 +116,3 @@ gorm.io/driver/mysql v1.3.3/go.mod h1:ChK6AHbHgDCFZyJp0F+BmVGb06PSIoh9uVYKAlRbb2
 gorm.io/gorm v1.23.1/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
 gorm.io/gorm v1.23.4 h1:1BKWM67O6CflSLcwGQR7ccfmC4ebOxQrTfOQGRE9wjg=
 gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
-moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE=
-nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
-rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

From af2d0b95ce8c680bdb9713b3aca28f749627d078 Mon Sep 17 00:00:00 2001
From: hikahana <22.h.hanada.nutfes@gmail.com>
Date: Mon, 23 Dec 2024 17:05:22 +0000
Subject: [PATCH 25/30] =?UTF-8?q?[fix]=20swagger=E5=88=87=E3=82=8A?=
 =?UTF-8?q?=E9=9B=A2=E3=81=97=E3=81=AE=E3=81=9F=E3=82=81cors=E4=BF=AE?=
 =?UTF-8?q?=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/drivers/server/server.go | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/api/drivers/server/server.go b/api/drivers/server/server.go
index fe6027a99..aa727dfee 100644
--- a/api/drivers/server/server.go
+++ b/api/drivers/server/server.go
@@ -1,13 +1,12 @@
 package server
 
 import (
-	_ "github.com/NUTFes/FinanSu/api/docs"
+	"net/http"
+	"os"
+
 	"github.com/NUTFes/FinanSu/api/router"
 	"github.com/labstack/echo/v4"
 	"github.com/labstack/echo/v4/middleware"
-	echoSwagger "github.com/swaggo/echo-swagger"
-	"net/http"
-	"os"
 )
 
 func RunServer(router router.Router) {
@@ -28,16 +27,13 @@ func RunServer(router router.Router) {
 
 	// CORS対策
 	e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
-		AllowOrigins: []string{"http://localhost:3000", "127.0.0.1:3000", "http://localhost:3001", "127.0.0.1:3001", "https://finansu.nutfes.net"}, // ドメイン
+		AllowOrigins: []string{"http://localhost:3000", "127.0.0.1:3000", "http://localhost:3001", "127.0.0.1:3001", "http://localhost:8000", "127.0.0.1:8000", "https://finansu.nutfes.net"}, // ドメイン
 		AllowMethods: []string{http.MethodGet, http.MethodPost, http.MethodPut, http.MethodDelete},
 	}))
 
 	// ルーティング
 	router.ProvideRouter(e)
 
-	// swagger
-	e.GET("/swagger/*", echoSwagger.WrapHandler)
-
 	// サーバー起動
 	e.Start(":1323")
 }

From 592679a08e037d9a33b89b8f1bcec7a35d41ad5a Mon Sep 17 00:00:00 2001
From: Kubosaka <s223301@stn.nagaokaut.ac.jp>
Date: Tue, 24 Dec 2024 13:57:04 +0900
Subject: [PATCH 26/30] =?UTF-8?q?openapi.yml=E3=82=92=EF=BC=91=E3=81=A4?=
 =?UTF-8?q?=E3=81=AB=E3=81=BE=E3=81=A8=E3=82=81=E3=81=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 compose.swagger.yml                  |    2 +-
 openapi/{generated => }/openapi.yaml |    0
 swagger-ui/swagger.yaml              | 2432 --------------------------
 3 files changed, 1 insertion(+), 2433 deletions(-)
 rename openapi/{generated => }/openapi.yaml (100%)
 delete mode 100644 swagger-ui/swagger.yaml

diff --git a/compose.swagger.yml b/compose.swagger.yml
index 4f8637166..7dfcdb896 100644
--- a/compose.swagger.yml
+++ b/compose.swagger.yml
@@ -5,6 +5,6 @@ services:
     ports:
       - "8000:8080"
     volumes:
-      - ./swagger-ui/swagger.yaml:/swagger.yaml
+      - ./openapi/openapi.yaml:/swagger.yaml
     environment:
       SWAGGER_JSON: /swagger.yaml
diff --git a/openapi/generated/openapi.yaml b/openapi/openapi.yaml
similarity index 100%
rename from openapi/generated/openapi.yaml
rename to openapi/openapi.yaml
diff --git a/swagger-ui/swagger.yaml b/swagger-ui/swagger.yaml
deleted file mode 100644
index 45545f0de..000000000
--- a/swagger-ui/swagger.yaml
+++ /dev/null
@@ -1,2432 +0,0 @@
-openapi: 3.0.1
-info:
-  title: NUTFes FinanSu API
-  description: FinanSu APIドキュメント
-  contact: {}
-  version: 2.0.0
-servers:
-  - url: http://localhost:1323/
-paths:
-  /activities:
-    get:
-      tags:
-        - activity
-      description: activitiesの一覧を取得
-      responses:
-        "200":
-          description: activitiesの一覧の取得
-          content: {}
-    post:
-      tags:
-        - activity
-      description: activitiesの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity"
-        required: false
-      responses:
-        "200":
-          description: create されたactivityが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity
-  /activities/details:
-    get:
-      tags:
-        - activity
-      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
-      responses:
-        "200":
-          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
-          content: {}
-  /activities/details/{year}:
-    get:
-      tags:
-        - activity
-      description: "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得"
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: "年度で指定されたactivitiesとsponsor,sponsorStyle,userの一覧を取得"
-          content: {}
-  /activities/filtered_details:
-    get:
-      tags:
-        - activity
-      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
-      requestBody:
-        description: Filter by keyword
-        content:
-          "*/*":
-            schema:
-              type: string
-        required: false
-      responses:
-        "200":
-          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
-          content: {}
-      x-codegen-request-body-name: keyword
-  /activities/filtered_details/{year}:
-    get:
-      tags:
-        - activity
-      description: "activitiesとsponsor,sponsorStyle,userの一覧を取得"
-      parameters:
-        - name: year
-          in: path
-          description: Filter by year.
-          required: true
-          schema:
-            type: string
-      requestBody:
-        description: Filter by keyword
-        content:
-          "*/*":
-            schema:
-              type: string
-        required: false
-      responses:
-        "200":
-          description: "activitiesとsponsor,sponsorStyle,userの一覧の取得"
-          content: {}
-      x-codegen-request-body-name: keyword
-  /activities/{id}:
-    get:
-      tags:
-        - activity
-      description: IDで指定されたactivitiesの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activitiesの取得
-          content: {}
-    put:
-      tags:
-        - activity
-      description: activitiesの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity"
-        required: false
-      responses:
-        "200":
-          description: 更新されたactivitiesが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity
-    delete:
-      tags:
-        - activity
-      description: IDを指定してactivitiesの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activitiesの削除完了
-          content: {}
-  /activity_informations:
-    get:
-      tags:
-        - activity_information
-      description: activity_informationの一覧を取得
-      responses:
-        "200":
-          description: activity_informationの一覧の取得
-          content: {}
-    post:
-      tags:
-        - activity_information
-      description: activity_informationの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity_information"
-        required: false
-      responses:
-        "200":
-          description: create されたactivity_informationが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity_information
-  /activity_informations/{id}:
-    get:
-      tags:
-        - activity_information
-      description: IDで指定されたactivity_informationsの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activity_informationの取得
-          content: {}
-    put:
-      tags:
-        - activity_information
-      description: activity_informationの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity_information"
-        required: false
-      responses:
-        "200":
-          description: 更新されたactivity_informationが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity_information
-    delete:
-      tags:
-        - activity_information
-      description: IDを指定してactivity_informationの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activity_informationの削除完了
-          content: {}
-  /activity_styles:
-    get:
-      tags:
-        - activity_style
-      description: activity_styleの一覧を取得
-      responses:
-        "200":
-          description: activity_styleの一覧の取得
-          content: {}
-    post:
-      tags:
-        - activity_style
-      description: activity_styleの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity_style"
-        required: false
-      responses:
-        "200":
-          description: createされたactivity_styleが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity_style
-  /activity_styles/{id}:
-    get:
-      tags:
-        - activity_style
-      description: IDで指定されたactivity_styleの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activity_styleの取得
-          content: {}
-    put:
-      tags:
-        - activity_style
-      description: activity_styleの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/activity_style"
-        required: false
-      responses:
-        "200":
-          description: 更新されたactivity_styleが返ってくる
-          content: {}
-      x-codegen-request-body-name: activity_style
-    delete:
-      tags:
-        - activity_style
-      description: IDを指定してactivity_styleの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: activity_styleの削除完了
-          content: {}
-  /budgets:
-    get:
-      tags:
-        - budget
-      description: budgetの一覧を取得
-      responses:
-        "200":
-          description: budgetの一覧の取得
-          content: {}
-    post:
-      tags:
-        - budget
-      description: budgetの作成
-      parameters:
-        - name: price
-          in: query
-          description: price
-          required: true
-          schema:
-            type: integer
-        - name: year_id
-          in: query
-          description: year_id
-          schema:
-            type: integer
-        - name: source_id
-          in: query
-          description: source_id
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: create されたbudgetが返ってくる
-          content: {}
-  /budgets/details:
-    get:
-      tags:
-        - budget
-      description: budgetに紐づくyearとsourceの一覧を取得
-      responses:
-        "200":
-          description: budgetに紐づくyearとsourceの一覧を取得
-          content: {}
-  /budgets/details/{year}:
-    get:
-      tags:
-        - budget
-      description: 年度で指定されたbudgetsに紐づく年度とソースを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 年度で指定されたbudgetsに紐づく年度とソースを取得
-          content: {}
-  /budgets/{id}:
-    get:
-      tags:
-        - budget
-      description: IDで指定されたbudgetの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: budgetの取得
-          content: {}
-    put:
-      tags:
-        - budget
-      description: budgetの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: price
-          in: query
-          description: price
-          schema:
-            type: integer
-        - name: year_id
-          in: query
-          description: year_id
-          schema:
-            type: integer
-        - name: source_id
-          in: query
-          description: source_id
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 更新されたbudgetが返ってくる
-          content: {}
-    delete:
-      tags:
-        - budget
-      description: IDを指定してbudgetの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: budgetの削除完了
-          content: {}
-  /budgets/{id}/details:
-    get:
-      tags:
-        - budget
-      description: IDで指定されたbudgetに紐づくyearとsourceを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: budgetに紐づくyearとsourceを取得
-          content: {}
-  /bureaus:
-    get:
-      tags:
-        - bureau
-      description: bureauの一覧を取得
-      responses:
-        "200":
-          description: bureauの一覧の取得
-          content: {}
-    post:
-      tags:
-        - bureau
-      description: bureauの作成
-      parameters:
-        - name: name
-          in: query
-          description: name
-          required: true
-          schema:
-            type: string
-      responses:
-        "200":
-          description: create されたbureauが返ってくる
-          content: {}
-  /bureaus/{id}:
-    get:
-      tags:
-        - bureau
-      description: IDで指定されたbureauの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: bureauの取得
-          content: {}
-    put:
-      tags:
-        - bureau
-      description: bureauの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: name
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたbureauが返ってくる
-          content: {}
-    delete:
-      tags:
-        - bureau
-      description: IDを指定してbureauの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: bureauの削除完了
-          content: {}
-  /departments:
-    get:
-      tags:
-        - department
-      description: departmentの一覧の取得
-      responses:
-        "200":
-          description: departmentの一覧を取得
-          content: {}
-    post:
-      tags:
-        - department
-      description: departmentの作成
-      parameters:
-        - name: name
-          in: query
-          description: name
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 作成されたdepartmentが返ってくる
-          content: {}
-  /departments/{id}:
-    get:
-      tags:
-        - department
-      description: IDで指定されたdepartmentの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: departmentの取得
-          content: {}
-    put:
-      tags:
-        - department
-      description: departmentの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: name
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたdepartmentが返ってくる
-          content: {}
-    delete:
-      tags:
-        - department
-      description: IDを指定してdepartmentの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: departmentの削除完了
-          content: {}
-  /expenses:
-    get:
-      tags:
-        - expense
-      description: expenseの一覧の取得
-      responses:
-        "200":
-          description: expenseの一覧を取得
-          content: {}
-    post:
-      tags:
-        - expense
-      description: expenseの作成
-      parameters:
-        - name: name
-          in: query
-          description: name
-          schema:
-            type: string
-        - name: year_id
-          in: query
-          description: year_id
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 作成されたexpenseが返ってくる
-          content: {}
-  /expenses/details:
-    get:
-      tags:
-        - expense
-      description: expenseに紐づくpurchase_itemの一覧を取得
-      responses:
-        "200":
-          description: expenseに紐づくpurchase_itemの一覧を取得
-          content: {}
-  /expenses/{id}:
-    get:
-      tags:
-        - expense
-      description: IDで指定されたexpenseの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: expenseの取得
-          content: {}
-    put:
-      tags:
-        - expense
-      description: expenseの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: name
-          schema:
-            type: string
-        - name: year_id
-          in: query
-          description: year_id
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたexpenseが返ってくる
-          content: {}
-    delete:
-      tags:
-        - expense
-      description: IDを指定してexpenseの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: expenseの削除完了
-          content: {}
-  /expenses/{id}/details:
-    get:
-      tags:
-        - expense
-      description: IDで指定されたexpenseに紐づくpurchase_itemsを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたexpenseに紐づくpurchase_itemsを取得
-          content: {}
-  /expenses/details/{year}:
-    get:
-      tags:
-        - expense
-      description: 年度で指定されたexpenseに紐づく購入申請と購入報告を取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: yearで指定されたexpenseに紐づく購入申請と購入報告を取得
-          content: {}
-  /expenses/fiscalyear/{year}:
-    get:
-      tags:
-        - expense
-      description: 年度で指定されたexpensesを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: yearで指定されたexpensesを取得
-          content: {}
-  /fund_informations:
-    get:
-      tags:
-        - fund_information
-      description: fund_informationの一覧を取得
-      responses:
-        "200":
-          description: fund_informationの一覧の取得
-          content: {}
-    post:
-      tags:
-        - fund_information
-      description: fund_informationの作成
-      parameters:
-        - name: user_id
-          in: query
-          description: user_id
-          required: true
-          schema:
-            type: integer
-        - name: teacher_id
-          in: query
-          description: teacher_id
-          required: true
-          schema:
-            type: integer
-        - name: price
-          in: query
-          description: price
-          required: true
-          schema:
-            type: integer
-        - name: remark
-          in: query
-          description: remark
-          schema:
-            type: string
-        - name: is_first_check
-          in: query
-          description: is_first_check
-          schema:
-            type: boolean
-        - name: is_last_check
-          in: query
-          description: is_last_check
-          schema:
-            type: boolean
-        - name: received_at
-          in: query
-          description: received_at
-          schema:
-            type: string
-      responses:
-        "200":
-          description: create されたfund_informationが返ってくる
-          content: {}
-  /fund_informations/details:
-    get:
-      tags:
-        - fund_information
-      description: fund_informationに紐づくteacherとuserの一覧を取得
-      responses:
-        "200":
-          description: fund_informationに紐づくteacherとuserの一覧を取得
-          content: {}
-  /fund_informations/{id}:
-    get:
-      tags:
-        - fund_information
-      description: IDで指定されたfund_informationの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: fund_informationの取得
-          content: {}
-    put:
-      tags:
-        - fund_information
-      description: fund_informationの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: user_id
-          in: query
-          description: user_id
-          required: true
-          schema:
-            type: integer
-        - name: teacher_id
-          in: query
-          description: teacher_id
-          required: true
-          schema:
-            type: integer
-        - name: price
-          in: query
-          description: price
-          required: true
-          schema:
-            type: integer
-        - name: remark
-          in: query
-          description: remark
-          schema:
-            type: string
-        - name: is_first_check
-          in: query
-          description: is_first_check
-          schema:
-            type: boolean
-        - name: is_last_check
-          in: query
-          description: is_last_check
-          schema:
-            type: boolean
-        - name: received_at
-          in: query
-          description: received_at
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたfund_informationが返ってくる
-          content: {}
-    delete:
-      tags:
-        - fund_information
-      description: IDを指定してfund_informationの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: fund_informationの削除完了
-          content: {}
-  /fund_informations/{id}/details:
-    get:
-      tags:
-        - fund_information
-      description: IDで指定されたfund_informatinに紐づくteacherとuserを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: fund_informatinに紐づくteacherとuserを取得
-          content: {}
-  /fund_informations/details/{year}:
-    get:
-      tags:
-        - fund_information
-      description: 年度で指定されたfund_informationsに紐づくデータを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 年度で指定されたfund_informationsに紐づくデータを取得
-          content: {}
-  /password_reset/{id}:
-    post:
-      tags:
-        - password_reset
-      description: password_変更
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/passwordResetData"
-        required: false
-      responses:
-        "200":
-          description: passwordを変更する
-          content: {}
-      x-codegen-request-body-name: passwordResetData
-  /password_reset/request:
-    post:
-      tags:
-        - password_reset
-      description: password_reset_token発行リクエスト
-      parameters:
-        - name: email
-          in: query
-          description: email
-          schema:
-            type: string
-      responses:
-        "200":
-          description: password_reset_tokenをメールアドレスに送信する
-          content: {}
-  /password_reset/{id}/valid:
-    post:
-      tags:
-        - password_reset
-      description: トークンの称号
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: token
-          in: query
-          description: token
-          schema:
-            type: string
-      responses:
-        "200":
-          description: password_reset_tokenが正しい確認する
-          content: {}
-  /purchaseitems:
-    get:
-      tags:
-        - purchase_item
-      description: purchase_itemの一覧を取得
-      responses:
-        "200":
-          description: purchase_itemの一覧の取得
-          content: {}
-    post:
-      tags:
-        - purchase_item
-      description: purchase_itemの作成
-      parameters:
-        - name: item
-          in: query
-          description: item
-          schema:
-            type: string
-        - name: price
-          in: query
-          description: price
-          schema:
-            type: integer
-        - name: quantity
-          in: query
-          description: quantity
-          schema:
-            type: integer
-        - name: detail
-          in: query
-          description: detail
-          schema:
-            type: string
-        - name: url
-          in: query
-          description: url
-          schema:
-            type: string
-        - name: purchase_order_id
-          in: query
-          description: purchase_order_id
-          schema:
-            type: integer
-        - name: finance_check
-          in: query
-          description: finance_check
-          schema:
-            type: boolean
-      responses:
-        "200":
-          description: createされたpurchase_itemが返ってくる
-          content: {}
-  /purchaseitems/details:
-    get:
-      tags:
-        - purchase_item
-      description: purchase_itemに紐づくuserとpurchase_orderの一覧を取得
-      responses:
-        "200":
-          description: purchase_itemに紐づくuserとpurchase_orderの一覧を取得
-          content: {}
-  /purchaseitems/{id}:
-    get:
-      tags:
-        - purchase_item
-      description: IDで指定されたpurchase_itemの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_itemの取得
-          content: {}
-    put:
-      tags:
-        - purchase_item
-      description: purchase_itemの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: item
-          in: query
-          description: item
-          schema:
-            type: string
-        - name: price
-          in: query
-          description: price
-          schema:
-            type: integer
-        - name: quantity
-          in: query
-          description: quantity
-          schema:
-            type: integer
-        - name: detail
-          in: query
-          description: detail
-          schema:
-            type: string
-        - name: url
-          in: query
-          description: url
-          schema:
-            type: string
-        - name: purchase_order_id
-          in: query
-          description: purchase_order_id
-          schema:
-            type: integer
-        - name: finance_check
-          in: query
-          description: finance_check
-          schema:
-            type: boolean
-      responses:
-        "200":
-          description: 更新されたpurchase_itemが返ってくる
-          content: {}
-    delete:
-      tags:
-        - purchase_item
-      description: IDを指定してpurchase_itemの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_itemの削除完了
-          content: {}
-  /purchaseitems/{id}/details:
-    get:
-      tags:
-        - purchase_item
-      description: IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたpurchase_itemに紐づくuserとpurchase_orderを取得
-          content: {}
-  /purchaseorders:
-    get:
-      tags:
-        - purchase_order
-      description: purchase_orderの一覧を取得
-      responses:
-        "200":
-          description: purchase_orderの一覧の取得
-          content: {}
-    post:
-      tags:
-        - purchase_order
-      description: purchase_orderの作成
-      parameters:
-        - name: deadline
-          in: query
-          description: deadline
-          schema:
-            type: string
-        - name: user_id
-          in: query
-          description: user_id
-          schema:
-            type: integer
-        - name: expense_id
-          in: query
-          description: expense_id
-          schema:
-            type: integer
-        - name: finance_check
-          in: query
-          description: finance_check
-          schema:
-            type: boolean
-      responses:
-        "200":
-          description: createされたpurchase_orderが返ってくる
-          content: {}
-  /purchaseorders/details:
-    get:
-      tags:
-        - purchase_order
-      description: purchaseorderに紐づくuserとitemの一覧を取得
-      responses:
-        "200":
-          description: purchase_orderに紐づくuserとpurchase_itemの一覧を取得
-          content: {}
-  /purchaseorders/{id}:
-    get:
-      tags:
-        - purchase_order
-      description: IDで指定されたpurchase_orderの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_orderの取得
-          content: {}
-    put:
-      tags:
-        - purchase_order
-      description: purchase_orderの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: deadline
-          in: query
-          description: deadline
-          schema:
-            type: string
-        - name: user_id
-          in: query
-          description: user_id
-          schema:
-            type: integer
-        - name: expense_id
-          in: query
-          description: expense_id
-          schema:
-            type: integer
-        - name: finance_check
-          in: query
-          description: finance_check
-          schema:
-            type: boolean
-      responses:
-        "200":
-          description: 更新されたpurchase_orderが返ってくる
-          content: {}
-    delete:
-      tags:
-        - purchase_order
-      description: IDを指定してpurchase_orderの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_orderの削除完了
-          content: {}
-  /purchaseorders/{id}/details:
-    get:
-      tags:
-        - purchase_order
-      description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
-          content: {}
-  /purchaseorders/details/{year}:
-    get:
-      tags:
-        - purchase_order
-      description: 年度で指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
-          content: {}
-  /purchaseorders/send/{id}:
-    post:
-      tags:
-        - purchase_order
-      description: IDで指定されたpurchase_orderのslackへメッセージ送信
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              type: array
-              items:
-                $ref: "#/components/schemas/purchaseItem"
-        required: true
-      responses:
-        "200":
-          description: IDで指定されたpurchase_orderに紐づくuserとpurchase_itemを取得
-          content: {}
-      x-codegen-request-body-name: purchase_items
-  /purchaseorders/details/unregistered/{year}:
-    get:
-      tags:
-        - purchase_order
-      description: 年度で指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたreportsに未登録のpurchase_orderに紐づくuserとpurchase_itemを取得
-          content: {}
-  /purchasereports:
-    get:
-      tags:
-        - purchase_report
-      description: purchase_reportの一覧を取得
-      responses:
-        "200":
-          description: purchase_reportの一覧の取得
-          content: {}
-    post:
-      tags:
-        - purchase_report
-      description: purchase_reportの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/purchaseReport"
-        required: false
-      responses:
-        "200":
-          description: 作成されたpurchaseReportが返ってくる
-          content: {}
-      x-codegen-request-body-name: purchaseReport
-  /purchasereports/details:
-    get:
-      tags:
-        - purchase_report
-      description: purchasereportsに紐づくデータの一覧を取得
-      responses:
-        "200":
-          description: purchase_reportに紐づくデータの一覧を取得
-          content: {}
-  /purchasereports/{id}:
-    get:
-      tags:
-        - purchase_report
-      description: IDで指定されたpurchase_reportの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_reportの取得
-          content: {}
-    put:
-      tags:
-        - purchase_report
-      description: purchase_reportの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/purchaseReport"
-        required: false
-      responses:
-        "200":
-          description: 更新されたpurchase_reportが返ってくる
-          content: {}
-      x-codegen-request-body-name: purchaseReport
-    delete:
-      tags:
-        - purchase_report
-      description: IDを指定してpurchase_reportの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: purchase_reportの削除完了
-          content: {}
-  /purchasereports/{id}/details:
-    get:
-      tags:
-        - purchase_report
-      description: IDで指定されたpurchase_reportに紐づくデータを取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: IDで指定されたpurchase_reportに紐づくデータを取得
-          content: {}
-  /purchasereports/details/{year}:
-    get:
-      tags:
-        - purchase_report
-      description: 年度で指定されたpurchase_reportsに紐づくデータを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 年度で指定されたpurchase_reportsに紐づくデータを取得
-          content: {}
-  /receipts:
-    get:
-      tags:
-        - receipt
-      description: receiptの一覧を取得
-      responses:
-        "200":
-          description: receiptの一覧の取得
-          content: {}
-    post:
-      tags:
-        - receipt
-      description: receiptの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/receipt"
-        required: false
-      responses:
-        "200":
-          description: create されたreceiptが返ってくる
-          content: {}
-      x-codegen-request-body-name: receipt
-  /receipts/{id}:
-    get:
-      tags:
-        - receipt
-      description: IDで指定されたreceiptの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: receiptの取得
-          content: {}
-    put:
-      tags:
-        - receipt
-      description: receiptの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/receipt"
-        required: false
-      responses:
-        "200":
-          description: 更新されたreceiptが返ってくる
-          content: {}
-      x-codegen-request-body-name: receipt
-    delete:
-      tags:
-        - receipt
-      description: IDを指定してreceiptの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: receiptの削除完了
-          content: {}
-  /receipts/reports/{id}:
-    get:
-      tags:
-        - receipt
-      description: purchaseReportIDで指定されたreceiptの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: reportsIDを指定してreceiptの取得
-          content: {}
-  /sources:
-    get:
-      tags:
-        - source
-      description: sourceの一覧の取得
-      responses:
-        "200":
-          description: sourceの一覧を取得
-          content: {}
-    post:
-      tags:
-        - source
-      description: sourceの作成
-      parameters:
-        - name: name
-          in: query
-          description: name
-          required: true
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 作成されたsourceが返ってくる
-          content: {}
-  /sources/{id}:
-    get:
-      tags:
-        - source
-      description: IDで指定されたsourceの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sourceの取得
-          content: {}
-    put:
-      tags:
-        - source
-      description: sourceの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: name
-          required: true
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたsourceが返ってくる
-          content: {}
-    delete:
-      tags:
-        - source
-      description: IDを指定してsourceの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sourceの削除完了
-          content: {}
-  /sponsors:
-    get:
-      tags:
-        - sponsor
-      description: sponsorの一覧の取得
-      responses:
-        "200":
-          description: sponsorsの一覧を取得
-          content: {}
-    post:
-      tags:
-        - sponsor
-      description: sponsorの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/sponsor"
-        required: false
-      responses:
-        "200":
-          description: 作成されたsponsorが返ってくる
-          content: {}
-      x-codegen-request-body-name: sponsor
-  /sponsors/{id}:
-    get:
-      tags:
-        - sponsor
-      description: IDで指定されたsponsorの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sponsorの取得
-          content: {}
-    put:
-      tags:
-        - sponsor
-      description: sponsorの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/sponsor"
-        required: false
-      responses:
-        "200":
-          description: 更新されたsponsorが返ってくる
-          content: {}
-      x-codegen-request-body-name: sponsor
-    delete:
-      tags:
-        - sponsor
-      description: IDを指定してsponsorの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sponsorの削除完了
-          content: {}
-  /sponsors/periods/{year}:
-    get:
-      tags:
-        - sponsor
-      description: 年度で指定されたsponsorを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sponsorの取得完了
-          content: {}
-  /sponsorstyles:
-    get:
-      tags:
-        - sponsorstyle
-      description: sponsorstyleの一覧の取得
-      responses:
-        "200":
-          description: sponsorstyleの一覧を取得
-          content: {}
-    post:
-      tags:
-        - sponsorstyle
-      description: sponsorstyleの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/sponsorStyle"
-        required: false
-      responses:
-        "200":
-          description: 作成されたsponsorstyleが返ってくる
-          content: {}
-      x-codegen-request-body-name: sponsorStyle
-  /sponsorstyles/{id}:
-    get:
-      tags:
-        - sponsorstyle
-      description: IDで指定されたsponsorstyleの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sponsorstyleの取得
-          content: {}
-    put:
-      tags:
-        - sponsorstyle
-      description: sponsorstyleの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/sponsorStyle"
-        required: false
-      responses:
-        "200":
-          description: 更新されたsponsorstyleが返ってくる
-          content: {}
-      x-codegen-request-body-name: sponsorStyle
-    delete:
-      tags:
-        - sponsorstyle
-      description: IDを指定してsponsorstyleの論理削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: sponsorstyleの論理削除完了
-          content: {}
-  /teachers:
-    get:
-      tags:
-        - teacher
-      description: teacherの一覧を取得
-      responses:
-        "200":
-          description: teacherの一覧を取得
-          content:
-            "*/*":
-              schema:
-                type: array
-    post:
-      tags:
-        - teacher
-      description: teacherの作成
-      parameters:
-        - name: name
-          in: query
-          description: 名前
-          required: true
-          schema:
-            type: string
-        - name: position
-          in: query
-          description: 役職
-          required: true
-          schema:
-            type: string
-        - name: department_id
-          in: query
-          description: 学科ID
-          schema:
-            type: integer
-        - name: room
-          in: query
-          description: 部屋番号
-          schema:
-            type: string
-        - name: is_black
-          in: query
-          description: ブラックリストの真偽
-          schema:
-            type: boolean
-        - name: remark
-          in: query
-          description: 備考
-          schema:
-            type: string
-      responses:
-        "200":
-          description: createされたteacherが返ってくる
-          content: {}
-  /teachers/delete:
-    delete:
-      tags:
-        - teacher
-      description: teacherの複数削除
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/destroyTeacherIDs"
-        required: false
-      responses:
-        "200":
-          description: 複数のteacherをidで削除できる
-          content: {}
-      x-codegen-request-body-name: destroyTeacherIDs
-  /teachers/{id}:
-    get:
-      tags:
-        - teacher
-      description: IDで指定されたteacherの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: teacherの取得
-          content: {}
-    put:
-      tags:
-        - teacher
-      description: teacherの更新
-      parameters:
-        - name: id
-          in: path
-          description: Teacherのid
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: 教員の名前
-          required: true
-          schema:
-            type: string
-        - name: position
-          in: query
-          description: 教員の役職
-          required: true
-          schema:
-            type: string
-        - name: department_id
-          in: query
-          description: 学科ID
-          schema:
-            type: integer
-        - name: room
-          in: query
-          description: 部屋番号
-          schema:
-            type: string
-        - name: is_black
-          in: query
-          description: ブラックリストに入っているか
-          schema:
-            type: boolean
-        - name: remark
-          in: query
-          description: 備考欄
-          schema:
-            type: string
-      responses:
-        "200":
-          description: 更新されたteacherが返ってくる
-          content: {}
-    delete:
-      tags:
-        - teacher
-      description: IDを指定してteacherの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: teacherの削除完了
-          content: {}
-  /teachers/fundRegistered/{year}:
-    get:
-      tags:
-        - teacher
-      description: 募金登録済みのteacherのidを取得
-      parameters:
-        - name: year
-          in: path
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 募金登録済みのteacherのidを取得
-          content: {}
-  /users:
-    get:
-      tags:
-        - user
-      description: userの一覧を取得
-      responses:
-        "200":
-          description: userの一覧を取得
-          content:
-            "*/*":
-              schema:
-                type: array
-    post:
-      tags:
-        - user
-      description: userの作成
-      parameters:
-        - name: name
-          in: query
-          description: name
-          required: true
-          schema:
-            type: string
-        - name: bureau_id
-          in: query
-          description: bureau_d
-          required: true
-          schema:
-            type: integer
-        - name: role_id
-          in: query
-          description: role_id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: createされたuserが返ってくる
-          content: {}
-  /users/delete:
-    delete:
-      tags:
-        - user
-      description: userの複数作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/destroyUserIDs"
-        required: false
-      responses:
-        "200":
-          description: 複数のuserをidで削除できる
-          content: {}
-      x-codegen-request-body-name: destroyUserIDs
-  /users/{id}:
-    get:
-      tags:
-        - user
-      description: IDで指定されたuserの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: userの取得
-          content: {}
-    put:
-      tags:
-        - user
-      description: userの更新
-      parameters:
-        - name: id
-          in: path
-          description: userのid
-          required: true
-          schema:
-            type: integer
-        - name: name
-          in: query
-          description: name
-          required: true
-          schema:
-            type: string
-        - name: bureau_id
-          in: query
-          description: bureau_d
-          required: true
-          schema:
-            type: integer
-        - name: role_id
-          in: query
-          description: role_id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 更新されたuserが返ってくる
-          content: {}
-    delete:
-      tags:
-        - user
-      description: IDを指定してuserの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: userの削除完了
-          content: {}
-  /years:
-    get:
-      tags:
-        - year
-      description: yearの一覧の取得
-      responses:
-        "200":
-          description: yearの一覧を取得
-          content: {}
-    post:
-      tags:
-        - year
-      description: yearの作成
-      parameters:
-        - name: year
-          in: query
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 作成されたyearが返ってくる
-          content: {}
-  /years/{id}:
-    get:
-      tags:
-        - year
-      description: IDで指定されたyearの取得
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: yearの取得
-          content: {}
-    put:
-      tags:
-        - year
-      description: yearの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-        - name: year
-          in: query
-          description: year
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: 更新されたyearが返ってくる
-          content: {}
-    delete:
-      tags:
-        - year
-      description: IDを指定してyearの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: yearの削除完了
-          content: {}
-  /years/periods:
-    get:
-      tags:
-        - year_periods
-      description: 年度一覧の取得
-      responses:
-        "200":
-          description: year_periodsの一覧を取得
-          content: {}
-    post:
-      tags:
-        - year_periods
-      description: year_periodsの作成
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/year_periods"
-        required: false
-      responses:
-        "200":
-          description: 作成されたyear_periodsが返ってくる
-          content: {}
-      x-codegen-request-body-name: year_periods
-  /years/periods/{id}:
-    put:
-      tags:
-        - year_periods
-      description: year_periodsの更新
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      requestBody:
-        content:
-          "*/*":
-            schema:
-              $ref: "#/components/schemas/year_periods"
-        required: false
-      responses:
-        "200":
-          description: 更新されたyear_periodsが返ってくる
-          content: {}
-      x-codegen-request-body-name: year_periods
-    delete:
-      tags:
-        - year_periods
-      description: IDを指定してyear_periodsの削除
-      parameters:
-        - name: id
-          in: path
-          description: id
-          required: true
-          schema:
-            type: integer
-      responses:
-        "200":
-          description: year_periodsの削除完了
-          content: {}
-components:
-  schemas:
-    activity:
-      required:
-        - expense
-        - feature
-        - isDone
-        - remark
-        - sponsorID
-        - userID
-      type: object
-      properties:
-        sponsorID:
-          type: integer
-          example: 1
-        userID:
-          type: integer
-          example: 1
-        isDone:
-          type: boolean
-          example: false
-        feature:
-          type: string
-          example: なし
-        expense:
-          type: integer
-          example: 0
-        remark:
-          type: string
-          example: なし
-        design:
-          type: integer
-          example: 0
-        url:
-          type: string
-          example: ""
-    activity_information:
-      type: object
-      properties:
-        activityID:
-          type: integer
-          example: 1
-        bucketName:
-          type: string
-          example: なし
-        fileName:
-          type: string
-          example: なし
-        fileType:
-          type: string
-          example: なし
-        designProgress:
-          type: integer
-          example: 1
-        fileInformation:
-          type: string
-          example: ""
-    activity_style:
-      required:
-        - activityID
-        - sponsorStyleID
-      type: object
-      properties:
-        activityID:
-          type: integer
-          example: 1
-        sponsorStyleID:
-          type: integer
-          example: 1
-    sponsorStyle:
-      required:
-        - feature
-        - price
-        - style
-      type: object
-      properties:
-        style:
-          type: string
-          example: 1分の1
-        feature:
-          type: string
-          example: カラー
-        price:
-          type: integer
-          example: 30000
-    sponsor:
-      required:
-        - address
-        - email
-        - name
-        - representative
-        - tel
-      type: object
-      properties:
-        name:
-          type: string
-          example: 企業1
-        tel:
-          type: string
-          example: "09000000000"
-        email:
-          type: string
-          example: test@example.com
-        address:
-          type: string
-          example: ○○1-1
-        representative:
-          type: string
-          example: 長岡太郎(社長)
-    passwordResetData:
-      type: object
-      properties:
-        token:
-          type: string
-          example: ""
-        password:
-          type: string
-          example: ""
-        confirmPassword:
-          type: string
-          example: ""
-    purchaseReport:
-      required:
-        - addition
-        - discount
-        - financeCheck
-        - purchaseOrderID
-        - userID
-      type: object
-      properties:
-        userID:
-          type: integer
-          example: 1
-        discount:
-          type: integer
-          example: 0
-        addition:
-          type: integer
-          example: 0
-        financeCheck:
-          type: boolean
-          example: false
-        purchaseOrderID:
-          type: integer
-          example: 1
-        remark:
-          type: string
-          example: ""
-        buyer:
-          type: string
-          example: ""
-    purchaseItem:
-      required:
-        - financeCheck
-        - item
-        - price
-        - purchaseOrderID
-        - quantity
-      type: object
-      properties:
-        item:
-          type: string
-          example: name
-        price:
-          type: integer
-          example: 0
-        quantity:
-          type: integer
-          example: 0
-        detail:
-          type: string
-          example: ""
-        url:
-          type: string
-          example: ""
-        purchaseOrderID:
-          type: integer
-          example: 1
-        financeCheck:
-          type: boolean
-          example: false
-    destroyTeacherIDs:
-      required:
-        - deleteIDs
-      type: object
-      properties:
-        deleteIDs:
-          type: array
-          example: []
-          items:
-            type: number
-    destroyUserIDs:
-      required:
-        - deleteIDs
-      type: object
-      properties:
-        deleteIDs:
-          type: array
-          example: []
-          items:
-            type: number
-    receipt:
-      required:
-        - purchaseReportID
-      type: object
-      properties:
-        purchaseReportID:
-          type: integer
-          example: 1
-        bucketName:
-          type: string
-          example: ""
-        fileName:
-          type: string
-          example: ""
-        fileType:
-          type: string
-          example: ""
-        remark:
-          type: string
-          example: ""
-    year_periods:
-      required:
-        - endedAt
-        - startedAt
-        - year
-      type: object
-      properties:
-        year:
-          type: integer
-          example: 2024
-        startedAt:
-          type: string
-          example: 0000-00-00T00:00:00Z
-        endedAt:
-          type: string
-          example: 0000-00-00T00:00:00Z
-x-original-swagger-version: "2.0"

From 043052de5f59987fab1b83cd608a18b4b1a30df9 Mon Sep 17 00:00:00 2001
From: Kubosaka <s223301@stn.nagaokaut.ac.jp>
Date: Tue, 24 Dec 2024 14:10:30 +0900
Subject: [PATCH 27/30] =?UTF-8?q?compose=E3=83=95=E3=82=A1=E3=82=A4?=
 =?UTF-8?q?=E3=83=AB=E5=90=8D=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Makefile                                      | 20 +++++++++----------
 docker-compose.db.yml => compose.db.yml       |  0
 ...e.local-prod.yml => compose.local-prod.yml |  0
 docker-compose.prod.yml => compose.prod.yml   |  0
 docker-compose.yml => compose.yml             |  0
 mysql/db/year_periods.sql                     |  1 +
 mysql/db/years.sql                            |  1 +
 7 files changed, 12 insertions(+), 10 deletions(-)
 rename docker-compose.db.yml => compose.db.yml (100%)
 rename docker-compose.local-prod.yml => compose.local-prod.yml (100%)
 rename docker-compose.prod.yml => compose.prod.yml (100%)
 rename docker-compose.yml => compose.yml (100%)

diff --git a/Makefile b/Makefile
index f90c1bf63..6b90c3884 100644
--- a/Makefile
+++ b/Makefile
@@ -15,15 +15,15 @@ down:
 
 # dbコンテナの起動(基本ずっと起動しておく)
 run-db:
-	docker compose -f docker-compose.db.yml up -d
+	docker compose -f compose.db.yml up -d
 
 # dbコンテナの停止(ずっと起動したくない時はこっちで停止)
 stop-db:
-	docker compose -f docker-compose.db.yml down
+	docker compose -f compose.db.yml down
 
 # ビルドと起動
 build-run:
-	docker compose -f docker-compose.db.yml up -d
+	docker compose -f compose.db.yml up -d
 	docker compose up --build
 
 # アプリコンテナボリュームの削除
@@ -32,7 +32,7 @@ del-vol:
 
 # 生成したコンテナ、イメージ、ボリューム、ネットワークを一括削除
 del-all:
-	docker-compose down --rmi all --volumes --remove-orphans
+	compose down --rmi all --volumes --remove-orphans
 
 # ボリューム削除→ビルド→起動
 run-rebuild:
@@ -41,7 +41,7 @@ run-rebuild:
 
 # dbとminioの停止とボリューム削除(dbを初期化したい時)
 del-db:
-	docker-compose -f docker-compose.db.yml down --volumes
+	compose -f compose.db.yml down --volumes
 
 # apiの起動(db起動後)
 run-api:
@@ -57,13 +57,13 @@ seed:
 
 # 本番環境デプロイ
 deploy:
-	docker compose -f docker-compose.prod.yml build
-	docker compose -f docker-compose.prod.yml up -d
+	docker compose -f compose.prod.yml build
+	docker compose -f compose.prod.yml up -d
 
 # ローカルで本番設定で起動
 run-prod:
-	docker compose -f docker-compose.local-prod.yml build
-	docker compose -f docker-compose.local-prod.yml up
+	docker compose -f compose.local-prod.yml build
+	docker compose -f compose.local-prod.yml up
 
 # DB入るコマンド
 ent-db:
@@ -74,7 +74,7 @@ run-eslint:
 	docker compose exec view npm run lint
 
 generate-openapi:
-	docker compose run --rm api oapi-codegen -config /openapi/generated/config.yaml /openapi/generated/openapi.yaml
+	docker compose run --rm api oapi-codegen -config /openapi/generated/config.yaml /openapi/openapi.yaml
 
 run-swagger:
 	docker compose -f compose.swagger.yml up -d
diff --git a/docker-compose.db.yml b/compose.db.yml
similarity index 100%
rename from docker-compose.db.yml
rename to compose.db.yml
diff --git a/docker-compose.local-prod.yml b/compose.local-prod.yml
similarity index 100%
rename from docker-compose.local-prod.yml
rename to compose.local-prod.yml
diff --git a/docker-compose.prod.yml b/compose.prod.yml
similarity index 100%
rename from docker-compose.prod.yml
rename to compose.prod.yml
diff --git a/docker-compose.yml b/compose.yml
similarity index 100%
rename from docker-compose.yml
rename to compose.yml
diff --git a/mysql/db/year_periods.sql b/mysql/db/year_periods.sql
index 0cb6ce15f..6192199ef 100644
--- a/mysql/db/year_periods.sql
+++ b/mysql/db/year_periods.sql
@@ -12,3 +12,4 @@ CREATE TABLE year_periods (
 
 INSERT INTO  year_periods (year_id, started_at, ended_at) values (1, '2022-11-15 00:00:00', '2023-11-15 00:00:00');
 INSERT INTO  year_periods (year_id, started_at, ended_at) values (2, '2023-11-15 00:00:00', '2024-11-15 00:00:00');
+INSERT INTO  year_periods (year_id, started_at, ended_at) values (3, '2024-11-15 00:00:00', '2025-11-15 00:00:00');
diff --git a/mysql/db/years.sql b/mysql/db/years.sql
index d1c8f8871..3a2c5b7d0 100644
--- a/mysql/db/years.sql
+++ b/mysql/db/years.sql
@@ -10,3 +10,4 @@ CREATE TABLE years (
 
 INSERT into years (year) values (2023);
 INSERT into years (year) values (2024);
+INSERT into years (year) values (2025);

From d15ca2662a750780991ea683baf1e1c5eb23d472 Mon Sep 17 00:00:00 2001
From: Kubosaka <s223301@stn.nagaokaut.ac.jp>
Date: Tue, 24 Dec 2024 14:13:47 +0900
Subject: [PATCH 28/30] =?UTF-8?q?=E3=82=B3=E3=83=B3=E3=83=86=E3=83=8A?=
 =?UTF-8?q?=E5=86=85=E3=81=A7swagger=E9=83=A8=E5=88=86=E5=89=8A=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/dev.Dockerfile | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/api/dev.Dockerfile b/api/dev.Dockerfile
index 687c37974..acbd04337 100644
--- a/api/dev.Dockerfile
+++ b/api/dev.Dockerfile
@@ -16,9 +16,6 @@ ENV CGO_ENABLED=0
 ENV GOOS=linux
 #ENV GOARCH=amd64
 
-# swaggerをinstall
-RUN go install github.com/swaggo/swag/cmd/swag@latest
-
 RUN go install github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen@v2.2.0
 
 # Airをインストール

From 1734708d97ddfc6ef583c6f52bd6353b5c20300a Mon Sep 17 00:00:00 2001
From: Kubosaka <s223301@stn.nagaokaut.ac.jp>
Date: Tue, 24 Dec 2024 14:22:42 +0900
Subject: [PATCH 29/30] =?UTF-8?q?=E3=83=87=E3=82=A3=E3=83=AC=E3=82=AF?=
 =?UTF-8?q?=E3=83=88=E3=83=AA=E6=95=B4=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Makefile                                  |   2 +-
 {openapi => api}/generated/openapi_gen.go |   0
 api/go.mod                                |   1 +
 api/go.sum                                | 395 ++++++++++++++++++
 openapi/{generated => }/config.yaml       |   2 +-
 openapi/go.mod                            |  10 -
 openapi/go.sum                            | 486 ----------------------
 7 files changed, 398 insertions(+), 498 deletions(-)
 rename {openapi => api}/generated/openapi_gen.go (100%)
 rename openapi/{generated => }/config.yaml (77%)
 delete mode 100644 openapi/go.mod
 delete mode 100644 openapi/go.sum

diff --git a/Makefile b/Makefile
index 6b90c3884..cde079bc7 100644
--- a/Makefile
+++ b/Makefile
@@ -74,7 +74,7 @@ run-eslint:
 	docker compose exec view npm run lint
 
 generate-openapi:
-	docker compose run --rm api oapi-codegen -config /openapi/generated/config.yaml /openapi/openapi.yaml
+	docker compose run --rm api oapi-codegen -config /openapi/config.yaml /openapi/openapi.yaml
 
 run-swagger:
 	docker compose -f compose.swagger.yml up -d
diff --git a/openapi/generated/openapi_gen.go b/api/generated/openapi_gen.go
similarity index 100%
rename from openapi/generated/openapi_gen.go
rename to api/generated/openapi_gen.go
diff --git a/api/go.mod b/api/go.mod
index f6dada5c1..72c6a783a 100644
--- a/api/go.mod
+++ b/api/go.mod
@@ -9,6 +9,7 @@ require (
 	github.com/gorilla/websocket v1.5.0 // indirect
 	github.com/joho/godotenv v1.4.0
 	github.com/labstack/echo/v4 v4.11.4
+	github.com/oapi-codegen/runtime v1.1.1 // indirect
 	github.com/pkg/errors v0.9.1
 	github.com/slack-go/slack v0.13.0
 	github.com/stretchr/testify v1.9.0 // indirect
diff --git a/api/go.sum b/api/go.sum
index 04555e122..df8edc95f 100644
--- a/api/go.sum
+++ b/api/go.sum
@@ -1,114 +1,506 @@
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno=
+github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4=
+github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
+github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM=
+github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
+github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=
+github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM=
+github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
+github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
+github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=
+github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
+github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
+github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
+github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
+github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
+github.com/bsm/ginkgo/v2 v2.9.5/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
+github.com/bsm/gomega v1.26.0/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
+github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
+github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
+github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM=
+github.com/bytedance/sonic v1.10.0-rc3/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4=
+github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
+github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
+github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
+github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
+github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA=
+github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
+github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
+github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
+github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
+github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk=
+github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
+github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
+github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=
+github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
+github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
+github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
+github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8=
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
+github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
+github.com/go-playground/validator/v10 v10.14.1/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
 github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
 github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
 github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
 github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
+github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
+github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
+github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
+github.com/gobwas/ws v1.3.0/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
+github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
 github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
 github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
+github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
+github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
 github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
+github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
+github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
 github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA=
+github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0=
+github.com/iris-contrib/httpexpect/v2 v2.15.2/go.mod h1:JLDgIqnFy5loDSUv1OA2j0mb6p/rDhiCqigP22Uq9xE=
+github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA=
 github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
 github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
 github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas=
 github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
 github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=
 github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
+github.com/kataras/blocks v0.0.7/go.mod h1:UJIU97CluDo0f+zEjbnbkeMRlvYORtmc1304EeyXf4I=
+github.com/kataras/golog v0.1.9/go.mod h1:jlpk/bOaYCyqDqH18pgDHdaJab72yBE6i0O3s30hpWY=
+github.com/kataras/iris/v12 v12.2.6-0.20230908161203-24ba4e8933b9/go.mod h1:ldkoR3iXABBeqlTibQ3MYaviA1oSlPvim6f55biwBh4=
+github.com/kataras/jwt v0.1.10/go.mod h1:xkimAtDhU/aGlQqjwvgtg+VyuPwMiyZHaY8LJRh0mYo=
+github.com/kataras/neffos v0.0.22/go.mod h1:IIJZcUDvwBxJGlDj942dqQgyznVKYDti91f8Ez+RRxE=
+github.com/kataras/pio v0.0.12/go.mod h1:ODK/8XBhhQ5WqrAhKy+9lTPS7sBf6O3KcLhc9klfRcY=
+github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4=
+github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw=
+github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
+github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
+github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
+github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8=
 github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8=
 github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
 github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
+github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
+github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
+github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
 github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
 github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mediocregopher/radix/v3 v3.8.1/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
+github.com/microcosm-cc/bluemonday v1.0.25/go.mod h1:ZIOjCQp1OrzBBPIJmfX4qDYFuhU02nx4bn030ixfHLE=
+github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
+github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
+github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
+github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/nats-io/jwt/v2 v2.3.0/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k=
+github.com/nats-io/jwt/v2 v2.5.0/go.mod h1:24BeQtRwxRV8ruvC4CojXlx/WQ/VjuwlYiH+vu/+ibI=
+github.com/nats-io/nats-server/v2 v2.9.11/go.mod h1:b0oVuxSlkvS3ZjMkncFeACGyZohbO4XhSqW1Lt7iRRY=
+github.com/nats-io/nats.go v1.19.0/go.mod h1:tLqubohF7t4z3du1QDPYJIQQyhb4wl6DhjxEajSI7UA=
+github.com/nats-io/nats.go v1.28.0/go.mod h1:XpbWUlOElGwTYbMR7imivs7jJj9GtK7ypv321Wp6pjc=
+github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4=
+github.com/nats-io/nkeys v0.4.4/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64=
+github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
+github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
+github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
+github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
+github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
+github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
+github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
+github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
+github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
+github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0=
+github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo=
+github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw=
+github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo=
+github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc=
+github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk=
+github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo=
+github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts=
+github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k=
+github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0=
+github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
+github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
+github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
+github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
+github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
+github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
+github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc=
+github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM=
+github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg=
+github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
+github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
+github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw=
+github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw=
+github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ=
+github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg=
+github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4=
+github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ=
+github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
+github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
+github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
+github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
+github.com/pkg/diff v0.0.0-20200914180035-5b29258ca4f7/go.mod h1:zO8QMzTeZd5cpnIkz/Gn6iK0jDfGicM1nynOkkPIl28=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
+github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
+github.com/redis/go-redis/v9 v9.1.0/go.mod h1:urWj3He21Dj5k4TK1y59xH8Uj6ATueP8AH1cY3lZl4c=
+github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=
+github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
+github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
+github.com/shirou/gopsutil/v3 v3.23.8/go.mod h1:7hmCaBn+2ZwaZOr6jmPBZDfawwMGuo1id3C6aM8EDqQ=
+github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
+github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
+github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
 github.com/slack-go/slack v0.13.0 h1:7my/pR2ubZJ9912p9FtvALYpbt0cQPAqkRy2jaSI1PQ=
 github.com/slack-go/slack v0.13.0/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw=
+github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
+github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
+github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
+github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
+github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
+github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
+github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
+github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
+github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
 github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tailscale/depaware v0.0.0-20210622194025-720c4b409502/go.mod h1:p9lPsd+cx33L3H9nNoecRRxPssFKUwwI50I3pZ0yT+8=
+github.com/tdewolff/minify/v2 v2.12.9/go.mod h1:qOqdlDfL+7v0/fyymB+OP497nIxJYSvX4MQWA8OoiXU=
+github.com/tdewolff/parse/v2 v2.6.8/go.mod h1:XHDhaU6IBgsryfdnpzUXBlT6leW/l25yrFBTEb4eIyM=
+github.com/tdewolff/test v1.0.9/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
+github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
+github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
+github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
+github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
+github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
 github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
 github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
+github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
+github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
+github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
+github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
+github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
+github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
+github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0=
+github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=
+github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
+github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
+go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
+go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M=
+go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU=
+golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/arch v0.4.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
+golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
+golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
+golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
+golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
+golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
+golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
+golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
 golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
 golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
 golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
 golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
 golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
+golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
+golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
+golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
+golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
 golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
 golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
+golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
+golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
 golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
 golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
 golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
 golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
 golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
+golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
+golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
 golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
+golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
+golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
+golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
 golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
 golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
 golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
+golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
 golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
 golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
 golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
+golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
 golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
+golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
+golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gorm.io/driver/mysql v1.3.3 h1:jXG9ANrwBc4+bMvBcSl8zCfPBaVoPyBEBshA8dA93X8=
@@ -116,3 +508,6 @@ gorm.io/driver/mysql v1.3.3/go.mod h1:ChK6AHbHgDCFZyJp0F+BmVGb06PSIoh9uVYKAlRbb2
 gorm.io/gorm v1.23.1/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
 gorm.io/gorm v1.23.4 h1:1BKWM67O6CflSLcwGQR7ccfmC4ebOxQrTfOQGRE9wjg=
 gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
+moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE=
+nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
+rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
diff --git a/openapi/generated/config.yaml b/openapi/config.yaml
similarity index 77%
rename from openapi/generated/config.yaml
rename to openapi/config.yaml
index 5903bf1e7..3f5d03003 100644
--- a/openapi/generated/config.yaml
+++ b/openapi/config.yaml
@@ -5,4 +5,4 @@ package: generated
 generate:
   - server
   - types
-output: /openapi/generated/openapi_gen.go
+output: /app/generated/openapi_gen.go
diff --git a/openapi/go.mod b/openapi/go.mod
deleted file mode 100644
index 6f88ec8e4..000000000
--- a/openapi/go.mod
+++ /dev/null
@@ -1,10 +0,0 @@
-module github.com/NUTFes/FinanSu/api
-
-go 1.16
-
-require (
-	github.com/labstack/echo/v4 v4.11.4
-	github.com/oapi-codegen/runtime v1.1.1
-	github.com/stretchr/testify v1.9.0 // indirect
-	golang.org/x/net v0.25.0 // indirect
-)
diff --git a/openapi/go.sum b/openapi/go.sum
deleted file mode 100644
index bff7adf86..000000000
--- a/openapi/go.sum
+++ /dev/null
@@ -1,486 +0,0 @@
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
-github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno=
-github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4=
-github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
-github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM=
-github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=
-github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM=
-github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
-github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
-github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=
-github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
-github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
-github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
-github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
-github.com/bsm/ginkgo/v2 v2.9.5/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
-github.com/bsm/gomega v1.26.0/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
-github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
-github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
-github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM=
-github.com/bytedance/sonic v1.10.0-rc3/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4=
-github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
-github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
-github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
-github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
-github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA=
-github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
-github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk=
-github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
-github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
-github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
-github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
-github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
-github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
-github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
-github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
-github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
-github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
-github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
-github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
-github.com/go-playground/validator/v10 v10.14.1/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
-github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
-github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
-github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
-github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
-github.com/gobwas/ws v1.3.0/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
-github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
-github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/gomarkdown/markdown v0.0.0-20230716120725-531d2d74bc12/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
-github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
-github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
-github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
-github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0=
-github.com/iris-contrib/httpexpect/v2 v2.15.2/go.mod h1:JLDgIqnFy5loDSUv1OA2j0mb6p/rDhiCqigP22Uq9xE=
-github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA=
-github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
-github.com/kataras/blocks v0.0.7/go.mod h1:UJIU97CluDo0f+zEjbnbkeMRlvYORtmc1304EeyXf4I=
-github.com/kataras/golog v0.1.9/go.mod h1:jlpk/bOaYCyqDqH18pgDHdaJab72yBE6i0O3s30hpWY=
-github.com/kataras/iris/v12 v12.2.6-0.20230908161203-24ba4e8933b9/go.mod h1:ldkoR3iXABBeqlTibQ3MYaviA1oSlPvim6f55biwBh4=
-github.com/kataras/jwt v0.1.10/go.mod h1:xkimAtDhU/aGlQqjwvgtg+VyuPwMiyZHaY8LJRh0mYo=
-github.com/kataras/neffos v0.0.22/go.mod h1:IIJZcUDvwBxJGlDj942dqQgyznVKYDti91f8Ez+RRxE=
-github.com/kataras/pio v0.0.12/go.mod h1:ODK/8XBhhQ5WqrAhKy+9lTPS7sBf6O3KcLhc9klfRcY=
-github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4=
-github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw=
-github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
-github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
-github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
-github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
-github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
-github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
-github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8=
-github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8=
-github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
-github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
-github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
-github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
-github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
-github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
-github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
-github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
-github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mediocregopher/radix/v3 v3.8.1/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
-github.com/microcosm-cc/bluemonday v1.0.25/go.mod h1:ZIOjCQp1OrzBBPIJmfX4qDYFuhU02nx4bn030ixfHLE=
-github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
-github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/nats-io/jwt/v2 v2.3.0/go.mod h1:0tqz9Hlu6bCBFLWAASKhE5vUA4c24L9KPUUgvwumE/k=
-github.com/nats-io/jwt/v2 v2.5.0/go.mod h1:24BeQtRwxRV8ruvC4CojXlx/WQ/VjuwlYiH+vu/+ibI=
-github.com/nats-io/nats-server/v2 v2.9.11/go.mod h1:b0oVuxSlkvS3ZjMkncFeACGyZohbO4XhSqW1Lt7iRRY=
-github.com/nats-io/nats.go v1.19.0/go.mod h1:tLqubohF7t4z3du1QDPYJIQQyhb4wl6DhjxEajSI7UA=
-github.com/nats-io/nats.go v1.28.0/go.mod h1:XpbWUlOElGwTYbMR7imivs7jJj9GtK7ypv321Wp6pjc=
-github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4=
-github.com/nats-io/nkeys v0.4.4/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
-github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
-github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
-github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
-github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
-github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
-github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
-github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
-github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
-github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0=
-github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo=
-github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw=
-github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo=
-github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc=
-github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk=
-github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo=
-github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts=
-github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k=
-github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0=
-github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
-github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
-github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
-github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
-github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
-github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc=
-github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM=
-github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg=
-github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
-github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
-github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw=
-github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw=
-github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ=
-github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg=
-github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4=
-github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ=
-github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
-github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
-github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
-github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
-github.com/pkg/diff v0.0.0-20200914180035-5b29258ca4f7/go.mod h1:zO8QMzTeZd5cpnIkz/Gn6iK0jDfGicM1nynOkkPIl28=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
-github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
-github.com/redis/go-redis/v9 v9.1.0/go.mod h1:urWj3He21Dj5k4TK1y59xH8Uj6ATueP8AH1cY3lZl4c=
-github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
-github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=
-github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
-github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
-github.com/shirou/gopsutil/v3 v3.23.8/go.mod h1:7hmCaBn+2ZwaZOr6jmPBZDfawwMGuo1id3C6aM8EDqQ=
-github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
-github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
-github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
-github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
-github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
-github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
-github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
-github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/tailscale/depaware v0.0.0-20210622194025-720c4b409502/go.mod h1:p9lPsd+cx33L3H9nNoecRRxPssFKUwwI50I3pZ0yT+8=
-github.com/tdewolff/minify/v2 v2.12.9/go.mod h1:qOqdlDfL+7v0/fyymB+OP497nIxJYSvX4MQWA8OoiXU=
-github.com/tdewolff/parse/v2 v2.6.8/go.mod h1:XHDhaU6IBgsryfdnpzUXBlT6leW/l25yrFBTEb4eIyM=
-github.com/tdewolff/test v1.0.9/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
-github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
-github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
-github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
-github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
-github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
-github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
-github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
-github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
-github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
-github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
-github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
-github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
-github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
-github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
-github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
-github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
-github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0=
-github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=
-github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
-github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
-go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
-go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M=
-go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU=
-golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
-golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
-golang.org/x/arch v0.4.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
-golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
-golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
-golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
-golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
-golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
-golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
-golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
-golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
-golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
-golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
-golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
-golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
-golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
-golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
-golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
-golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
-golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
-golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
-golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
-golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
-golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
-golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
-golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
-golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
-golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
-golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
-golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
-golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
-golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
-golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
-golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
-golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
-golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
-golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
-golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
-golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
-golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
-golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
-golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
-golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE=
-nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
-rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

From 867af22f2450d61c764e8c87af385e4c534869a4 Mon Sep 17 00:00:00 2001
From: Kubosaka <s223301@stn.nagaokaut.ac.jp>
Date: Tue, 24 Dec 2024 14:26:52 +0900
Subject: [PATCH 30/30] =?UTF-8?q?=E3=83=91=E3=83=83=E3=82=B1=E3=83=BC?=
 =?UTF-8?q?=E3=82=B8=E5=90=8D=E3=82=92=E6=98=8E=E8=A8=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 api/drivers/server/server.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/api/drivers/server/server.go b/api/drivers/server/server.go
index aa727dfee..a38df32c4 100644
--- a/api/drivers/server/server.go
+++ b/api/drivers/server/server.go
@@ -5,7 +5,7 @@ import (
 	"os"
 
 	"github.com/NUTFes/FinanSu/api/router"
-	"github.com/labstack/echo/v4"
+	echo "github.com/labstack/echo/v4"
 	"github.com/labstack/echo/v4/middleware"
 )