From 7cb171bc90b470fdd5bc991a028487a26fbdc463 Mon Sep 17 00:00:00 2001
From: jiayuqi7813 <63686458+jiayuqi7813@users.noreply.github.com>
Date: Sat, 21 May 2022 23:29:23 +0800
Subject: [PATCH] default
---
.idea/.gitignore | 8 +
.idea/.name | 1 +
.idea/dataSources.xml | 12 +
.idea/modules.xml | 8 +
.idea/snctf.iml | 9 +
api/admin/auth.go | 38 +++
api/admin/challenge.go | 79 +++++
api/category.go | 58 ++++
api/challenge.go | 84 +++++
api/notice.go | 39 +++
api/score.go | 78 +++++
api/session.go | 27 ++
api/solve.go | 153 +++++++++
api/submissions.go | 211 +++++++++++++
api/user.go | 296 ++++++++++++++++++
database/db.go | 30 ++
go.mod | 31 ++
go.sum | 73 +++++
identifier.sqlite | 0
main.go | 7 +
routers/router.go | 72 +++++
...V5V5LQT3OB6I6CQ7JKVPEHO5PRTGKXA6QF37YRVA7Q | 1 +
...MWGJVV4LT2W6GZQYFXVQVJL3EIRTBYKIEAQYSE4Q3Q | 1 +
...K6PRWVCOCWAKR4QY5LOPJOW3NRM6WBHBP5JPO2KF6Q | 1 +
...TGJRBC4D7WNQF4QC4LC3B7D4DZA6BYIAHAZTFF4ABA | 1 +
...KZ2HFEPEE3EGWU6OW7TBYF3666OTS45DMPD45DKHUA | 1 +
...NUDZLT4E46A3FHROR2BAAB6AZHBVYRBHO7DMP6LTVA | 1 +
...J7HT3OO6RQHQXSHXHH5SWXJEXVQJ7QDXLDJRRHRNSQ | 1 +
...PWA2WN3IWFL4O52VTNCRYSR2XH2TGFTMDZFWXIG5DA | 1 +
...V5CYTRXOVYZECRWZUCZEAIRPSTCZGXYLC34EGW35UA | 1 +
...3KNLDLCRDTHB75S4TEX6PVVUP2N7J6SMYJFHQVXKRA | 1 +
...YYNYCVXB7LVY5FIICSTBQQXZW2CWOHDIPANPGYHT6A | 1 +
...3ZUZLTHYGZUMDYHWKCQWKWLPXWWIKTPUYJVCDLGDEQ | 1 +
...FU5ZGZRAZ3SEJ2KUP2CSP4QECUGZGPMRCSMBRQO3GA | 1 +
...XS2YMK672M2AXHRAI42P4OLDD5LZABGIM6AQEAEJBQ | 1 +
...MMCNDO6QXK6U2FU3QZMPHCTZ3A3BUTBZFRY72DYL2Q | 1 +
...RT4OGTVMJH2TWPCGMJRTVZ3F6XWKKYFPH5IYGMJUAQ | 1 +
...R7VGIIWRFBV6B5BWV6HRU2XJHJ3RSFVHVU3GMLQNRA | 1 +
...B4MO7GSRM3QAQDEYDLRHBKXICKH7MDDNDWYTV64F6Q | 1 +
...SOLUHU53D3RWLHTTXUPSFB4J4VQE2QFG723N4BLGJA | 1 +
...IPTV4OAPVKF6X6LI7ZPO7SFZKETIVKGYGJSW54UVYA | 1 +
...KR56OQQGR7YZZOYONTAHFEZW67UB2HEQFRJO5PJSMA | 1 +
...WZEA6EINXK2VNYWXU4T7V3D24LG4D2ZLOFQABTHBRA | 1 +
...2M26ZNU4CGPHEZU57NGGIP6R7GU4IDHKV6GVGWTPOQ | 1 +
...46A2E2BCDFIGAVRAP7BG4EQCCONDIDTHNUJBT76L7A | 1 +
...ZSROQZNDR5AN757OY5WUGSWFDJQMBY6P5PZVAPXSBQ | 1 +
...5WVGFPWYV6MG72SY4FZ7MD2DTSX3HOHGDTYA62KDXA | 1 +
...6YASNO2OC5SPOICP4OQK5OBM3FSBJUBKFEO3MPWTDA | 1 +
...UYSKYL347DK7G2MX5SEWLNY75LN7M2SVSGIT2AFYRA | 1 +
...VOH2SZZSV5KLODK7VTQO2RR6SH7D5VSP4XQWIEMEOA | 1 +
...HS5MA3BQQ2V6ENMUYBN5I5FXTUWXT5MQKF3ZWDWB7A | 1 +
...6J4HJFYPP644JWNZ2MWKP3BCAHPYY54CCQD3Y7OMPQ | 1 +
...BH223M4JWALUG22YFPWBDVZAE6YPDZDNNGHYHCXRUQ | 1 +
...CEFP4WOR6UTNWF3B3DVL3X2CVC4CERVL5BS47QH37A | 1 +
...CB3ZQGZLM7PN2Z7MROB5PGGGQUF2OYUBLTULZUARBQ | 1 +
...6TOYKHME2YCZBXNLGZXMFO352WOBJZHBUX7LWQP7WQ | 1 +
...MKRVFHSWSRUSA4TJJRDNLJT6LUQIILOIVCGLXQ2GDQ | 1 +
...MEEIX7VYXULXSVJWCMSP36PTX6ZRFPKKQ4EVNZT3HA | 1 +
...CZG4AX4H3H6WFPTSUWBEEZ6DR7U3MABCZ6FHJHD4EQ | 1 +
...DM3GF3BO7VPAA2ENSZB2E5EPHJSZNKXBUSNGZUYVXA | 1 +
...7JQ4CVDAYZW22CMP32RJX7HJCJXPOACNO6G2CYW3FQ | 1 +
...WKI7H56PBXSKMNUDKN3G5SU4DI2F7H24QOBFOREMPA | 1 +
...NCTJXFLIVVCPXMYDHH34VNUDNRXTVZUOW6AG6KMAYA | 1 +
...FKWU2SUENV2QJE7OAS5G753NXGLNTMSMGKZN6T5VPQ | 1 +
...QQ3ZKAOVAAUJEHLXUP74LOZLIQYCC4K6RBR52S3VJA | 1 +
...HD3CYBOBOMZBPWPNMH4Z76NBWIVBW6M4COAI3LGFUA | 1 +
...5JRW63FLJMWIQO4CUDQKHAT7LRKI6NX3L5IEK7JUIQ | 1 +
...VFAQ2WCFTIKXBUAB5SOUKFAJBHIND5KYGOUZTRN63Q | 1 +
...3QKBZ52AWBOP2HZGGMWRYTEGF342OLFZEY4LPGVBOA | 1 +
...JEWTDEUECQCGOWHQK6V4A6ZXBS4RY26YP4CTAS3RWA | 1 +
...5PFTFE4EKUOHAFXFFSMFV6Y6ZKGHALVCRFPDIO5Y5A | 1 +
...MRS6LSH4OOFRXXRS43ORN4IWKA2UZS4XPF2UQGAEIQ | 1 +
...X325O2CMYWFP3XG47UXNJYABEUCEAHLEJICJCVDEBA | 1 +
...ATX5ICE55RPJC7T56QRPRIEGP2CVCBXFNXZEFFUXAQ | 1 +
...VSBHKPH6PLFCJXMS3WKGTUDKXVYPU3BKAQPVO3YRYQ | 1 +
snctf.db | Bin 0 -> 65536 bytes
tools/aes.go | 55 ++++
tools/checkid.go | 14 +
tools/md5.go | 13 +
tools/token.go | 35 +++
type/adminTypes.go | 20 ++
type/commentypes.go | 58 ++++
type/userTypes.go | 124 ++++++++
83 files changed, 1687 insertions(+)
create mode 100644 .idea/.gitignore
create mode 100644 .idea/.name
create mode 100644 .idea/dataSources.xml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/snctf.iml
create mode 100644 api/admin/auth.go
create mode 100644 api/admin/challenge.go
create mode 100644 api/category.go
create mode 100644 api/challenge.go
create mode 100644 api/notice.go
create mode 100644 api/score.go
create mode 100644 api/session.go
create mode 100644 api/solve.go
create mode 100644 api/submissions.go
create mode 100644 api/user.go
create mode 100644 database/db.go
create mode 100644 go.mod
create mode 100644 go.sum
create mode 100644 identifier.sqlite
create mode 100644 main.go
create mode 100644 routers/router.go
create mode 100644 sessions/session_2ITIVHA4ARV5V5LQT3OB6I6CQ7JKVPEHO5PRTGKXA6QF37YRVA7Q
create mode 100644 sessions/session_2LTA5Y2QR7MWGJVV4LT2W6GZQYFXVQVJL3EIRTBYKIEAQYSE4Q3Q
create mode 100644 sessions/session_34GMETWVQOK6PRWVCOCWAKR4QY5LOPJOW3NRM6WBHBP5JPO2KF6Q
create mode 100644 sessions/session_36KZLOIABXTGJRBC4D7WNQF4QC4LC3B7D4DZA6BYIAHAZTFF4ABA
create mode 100644 sessions/session_54UEVZW6QKKZ2HFEPEE3EGWU6OW7TBYF3666OTS45DMPD45DKHUA
create mode 100644 sessions/session_5ALGKSMBOMNUDZLT4E46A3FHROR2BAAB6AZHBVYRBHO7DMP6LTVA
create mode 100644 sessions/session_5RNC3S6JWIJ7HT3OO6RQHQXSHXHH5SWXJEXVQJ7QDXLDJRRHRNSQ
create mode 100644 sessions/session_5T2ONUCW6WPWA2WN3IWFL4O52VTNCRYSR2XH2TGFTMDZFWXIG5DA
create mode 100644 sessions/session_62R6NSVAZ4V5CYTRXOVYZECRWZUCZEAIRPSTCZGXYLC34EGW35UA
create mode 100644 sessions/session_6PK42HAHEW3KNLDLCRDTHB75S4TEX6PVVUP2N7J6SMYJFHQVXKRA
create mode 100644 sessions/session_6TLKV2MOWHYYNYCVXB7LVY5FIICSTBQQXZW2CWOHDIPANPGYHT6A
create mode 100644 sessions/session_7EOL2BAZHG3ZUZLTHYGZUMDYHWKCQWKWLPXWWIKTPUYJVCDLGDEQ
create mode 100644 sessions/session_7SJ7SPUN5RFU5ZGZRAZ3SEJ2KUP2CSP4QECUGZGPMRCSMBRQO3GA
create mode 100644 sessions/session_AFFDNWBJOTXS2YMK672M2AXHRAI42P4OLDD5LZABGIM6AQEAEJBQ
create mode 100644 sessions/session_AM7QEQGIKNMMCNDO6QXK6U2FU3QZMPHCTZ3A3BUTBZFRY72DYL2Q
create mode 100644 sessions/session_AWEYPIRVN7RT4OGTVMJH2TWPCGMJRTVZ3F6XWKKYFPH5IYGMJUAQ
create mode 100644 sessions/session_BT6AN4HUUOR7VGIIWRFBV6B5BWV6HRU2XJHJ3RSFVHVU3GMLQNRA
create mode 100644 sessions/session_CDRQNDZHLEB4MO7GSRM3QAQDEYDLRHBKXICKH7MDDNDWYTV64F6Q
create mode 100644 sessions/session_E6VT4WGWFWSOLUHU53D3RWLHTTXUPSFB4J4VQE2QFG723N4BLGJA
create mode 100644 sessions/session_EB46622OEKIPTV4OAPVKF6X6LI7ZPO7SFZKETIVKGYGJSW54UVYA
create mode 100644 sessions/session_ERYS7GZAEBKR56OQQGR7YZZOYONTAHFEZW67UB2HEQFRJO5PJSMA
create mode 100644 sessions/session_FEJKPOH3U5WZEA6EINXK2VNYWXU4T7V3D24LG4D2ZLOFQABTHBRA
create mode 100644 sessions/session_I4OYHOQRKU2M26ZNU4CGPHEZU57NGGIP6R7GU4IDHKV6GVGWTPOQ
create mode 100644 sessions/session_JPSFHBZ7MM46A2E2BCDFIGAVRAP7BG4EQCCONDIDTHNUJBT76L7A
create mode 100644 sessions/session_K7DKOSNKUKZSROQZNDR5AN757OY5WUGSWFDJQMBY6P5PZVAPXSBQ
create mode 100644 sessions/session_KDF323BEFA5WVGFPWYV6MG72SY4FZ7MD2DTSX3HOHGDTYA62KDXA
create mode 100644 sessions/session_KLO2YVFC4T6YASNO2OC5SPOICP4OQK5OBM3FSBJUBKFEO3MPWTDA
create mode 100644 sessions/session_KUB3WD4PHGUYSKYL347DK7G2MX5SEWLNY75LN7M2SVSGIT2AFYRA
create mode 100644 sessions/session_M6JG6ZZLXRVOH2SZZSV5KLODK7VTQO2RR6SH7D5VSP4XQWIEMEOA
create mode 100644 sessions/session_N7JWN2CJR2HS5MA3BQQ2V6ENMUYBN5I5FXTUWXT5MQKF3ZWDWB7A
create mode 100644 sessions/session_NLWDNJO6TW6J4HJFYPP644JWNZ2MWKP3BCAHPYY54CCQD3Y7OMPQ
create mode 100644 sessions/session_O5KNM3FBU4BH223M4JWALUG22YFPWBDVZAE6YPDZDNNGHYHCXRUQ
create mode 100644 sessions/session_OW62I4OF4ACEFP4WOR6UTNWF3B3DVL3X2CVC4CERVL5BS47QH37A
create mode 100644 sessions/session_PTTWVR7PPUCB3ZQGZLM7PN2Z7MROB5PGGGQUF2OYUBLTULZUARBQ
create mode 100644 sessions/session_QGFMDHC7HQ6TOYKHME2YCZBXNLGZXMFO352WOBJZHBUX7LWQP7WQ
create mode 100644 sessions/session_RG23AZ3IK2MKRVFHSWSRUSA4TJJRDNLJT6LUQIILOIVCGLXQ2GDQ
create mode 100644 sessions/session_S3P4NOGEK2MEEIX7VYXULXSVJWCMSP36PTX6ZRFPKKQ4EVNZT3HA
create mode 100644 sessions/session_SAKZEOSKH7CZG4AX4H3H6WFPTSUWBEEZ6DR7U3MABCZ6FHJHD4EQ
create mode 100644 sessions/session_UHWXL6OYXIDM3GF3BO7VPAA2ENSZB2E5EPHJSZNKXBUSNGZUYVXA
create mode 100644 sessions/session_V23JVQEAVT7JQ4CVDAYZW22CMP32RJX7HJCJXPOACNO6G2CYW3FQ
create mode 100644 sessions/session_VC2DOHLIKHWKI7H56PBXSKMNUDKN3G5SU4DI2F7H24QOBFOREMPA
create mode 100644 sessions/session_VMJK4NYHE7NCTJXFLIVVCPXMYDHH34VNUDNRXTVZUOW6AG6KMAYA
create mode 100644 sessions/session_WDRHZ2KMEQFKWU2SUENV2QJE7OAS5G753NXGLNTMSMGKZN6T5VPQ
create mode 100644 sessions/session_WK7OTUXQA2QQ3ZKAOVAAUJEHLXUP74LOZLIQYCC4K6RBR52S3VJA
create mode 100644 sessions/session_WOEUHQ3G4PHD3CYBOBOMZBPWPNMH4Z76NBWIVBW6M4COAI3LGFUA
create mode 100644 sessions/session_WPCIBDCHZE5JRW63FLJMWIQO4CUDQKHAT7LRKI6NX3L5IEK7JUIQ
create mode 100644 sessions/session_XJBTRO567AVFAQ2WCFTIKXBUAB5SOUKFAJBHIND5KYGOUZTRN63Q
create mode 100644 sessions/session_XYA6WKM6HS3QKBZ52AWBOP2HZGGMWRYTEGF342OLFZEY4LPGVBOA
create mode 100644 sessions/session_YF6R3ISD2GJEWTDEUECQCGOWHQK6V4A6ZXBS4RY26YP4CTAS3RWA
create mode 100644 sessions/session_Z2XFBHVFTN5PFTFE4EKUOHAFXFFSMFV6Y6ZKGHALVCRFPDIO5Y5A
create mode 100644 sessions/session_Z4Z4Z3OTX5MRS6LSH4OOFRXXRS43ORN4IWKA2UZS4XPF2UQGAEIQ
create mode 100644 sessions/session_Z5X7VSGT3OX325O2CMYWFP3XG47UXNJYABEUCEAHLEJICJCVDEBA
create mode 100644 sessions/session_ZJP34TMF5TATX5ICE55RPJC7T56QRPRIEGP2CVCBXFNXZEFFUXAQ
create mode 100644 sessions/session_ZKCXBFJADOVSBHKPH6PLFCJXMS3WKGTUDKXVYPU3BKAQPVO3YRYQ
create mode 100644 snctf.db
create mode 100644 tools/aes.go
create mode 100644 tools/checkid.go
create mode 100644 tools/md5.go
create mode 100644 tools/token.go
create mode 100644 type/adminTypes.go
create mode 100644 type/commentypes.go
create mode 100644 type/userTypes.go
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..a7cdac7
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..30de634
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+main.go
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
new file mode 100644
index 0000000..327110c
--- /dev/null
+++ b/.idea/dataSources.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ sqlite.xerial
+ true
+ org.sqlite.JDBC
+ jdbc:sqlite:$PROJECT_DIR$/snctf.db
+ $ProjectFileDir$
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..ce39718
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/snctf.iml b/.idea/snctf.iml
new file mode 100644
index 0000000..338a266
--- /dev/null
+++ b/.idea/snctf.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/api/admin/auth.go b/api/admin/auth.go
new file mode 100644
index 0000000..07c7ead
--- /dev/null
+++ b/api/admin/auth.go
@@ -0,0 +1,38 @@
+package admin
+
+import (
+ "github.com/gin-gonic/gin"
+ ."main.go/type"
+ "main.go/api"
+
+)
+
+
+
+// AuthRequired 用于管理员权限控制的中间件
+func AuthRequired()gin.HandlerFunc {
+ return func(c *gin.Context) {
+ session, err := api.Store.Get(c.Request, "SNCTFSESSID")
+ if err != nil {
+ c.JSON(200, gin.H{"code": 400, "msg": "Get SNCTFSESSID error"})
+ c.Abort()
+ return
+ }
+
+ user, ok := session.Values["user"].(User)
+ if !ok {
+ c.JSON(200, gin.H{"code": 400, "msg": "No session"})
+ c.Abort()
+ return
+ }
+
+ if user.Role != 1 {
+ c.JSON(200, gin.H{"code": 400, "msg": "Unauthorized access!"})
+ c.Abort()
+ return
+ }
+
+ c.Next()
+ }
+
+}
diff --git a/api/admin/challenge.go b/api/admin/challenge.go
new file mode 100644
index 0000000..8e73dc6
--- /dev/null
+++ b/api/admin/challenge.go
@@ -0,0 +1,79 @@
+package admin
+
+import (
+ "fmt"
+ "github.com/gin-gonic/gin"
+ "main.go/api"
+ db "main.go/database"
+ . "main.go/type"
+ "strings"
+)
+
+// CrDb 专门用作给数据替换。
+type CrDb struct {
+ Name string `json:"name" binding:"required"`
+ Score int `json:"score" binding:"required"`
+ Flag string `json:"flag"` // 暂时一个题只能一个flag
+ Description string `json:"description"`
+ Attachment string `json:"attachment"`
+ Category string `json:"category" binding:"required"`
+ Tags string `json:"tags"`
+ Hints string `json:"hints"`
+ Visible int `json:"visible"`
+}
+
+
+//NewChallenge 新建一个题目
+func NewChallenge(c *gin.Context){
+ var request ChallengeRequest
+ if err := c.ShouldBindJSON(&request); err != nil {
+ fmt.Println(err)
+ c.JSON(400, gin.H{"code": 400, "msg": "Request format wrong!"})
+ return
+ }
+ challenge := &Challenge{
+ Name: request.Name,
+ Score: request.Score,
+ Flag: request.Flag,
+ Description: request.Description,
+ Attachment: request.Attachment,
+ Category: request.Category,
+ Tags: request.Tags,
+ Hints: request.Hints,
+ Visible: request.Visible,
+ }
+ if err := addChallenge(challenge); err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Add challenge failure!"})
+ return
+ }
+
+ c.JSON(200, gin.H{"code": 200, "msg": "Add challenge success!"})
+}
+
+//addChallenge 添加题目内容
+func addChallenge(c *Challenge) error {
+ api.Link()
+ DB := db.DBsnctf
+ // 使用逗号分隔字符串
+ attachmentString := strings.Join(c.Attachment, ",")
+ hintString := strings.Join(c.Hints, ",")
+ crdb := &CrDb{
+ Name: c.Name,
+ Score: c.Score,
+ Flag: c.Flag,
+ Description: c.Description,
+ Attachment: attachmentString,
+ Category: c.Category,
+ Tags: c.Tags,
+ Hints: hintString,
+ Visible: c.Visible,
+ }
+ //插入数据
+ err := DB.Table("challenge").Create(crdb).Error
+ //command := "INSERT INTO challenge (name,score,flag,description,attachment,category,tags,hints,visible) VALUES (?,?,?,?,?,?,?,?,?);"
+ //err := DB.Debug().Raw(command,c.Name, c.Score, c.Flag, c.Description, attachmentString, c.Category, c.Tags, hintString, c.Visible).Error
+ if err != nil {
+ return err
+ }
+ return nil
+}
\ No newline at end of file
diff --git a/api/category.go b/api/category.go
new file mode 100644
index 0000000..1e47078
--- /dev/null
+++ b/api/category.go
@@ -0,0 +1,58 @@
+package api
+
+import (
+ "github.com/gin-gonic/gin"
+ db "main.go/database"
+
+)
+
+
+// GetCategories 获取所有题目分类。
+func GetCategories(c *gin.Context) {
+ var categories []string
+
+ if err := getAllCategories(&categories); err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get categories failure!"})
+ return
+ }
+
+ c.JSON(200, gin.H{"code": 200, "data": categories})
+
+
+}
+
+
+//getAllCategories 操作数据库所有题目分类
+func getAllCategories(categories *[]string) error {
+ Link()
+ DB := db.DBsnctf
+ rows,err:= DB.Raw("select category from category").Rows()
+ if err != nil {
+ return err
+ }
+ defer rows.Close()
+ for rows.Next() {
+ var category string
+ if err := rows.Scan(&category); err != nil {
+ return err
+ }
+ *categories = append(*categories, category)
+ }
+ return rows.Err()
+
+}
+
+// CheckCategory 检查类别是否正确
+func CheckCategory(c string) bool {
+ var categories []string
+ if err := getAllCategories(&categories); err != nil {
+ return false
+ }
+
+ for _, category := range categories {
+ if category == c {
+ return true
+ }
+ }
+ return false
+}
diff --git a/api/challenge.go b/api/challenge.go
new file mode 100644
index 0000000..7b1da66
--- /dev/null
+++ b/api/challenge.go
@@ -0,0 +1,84 @@
+package api
+
+import (
+ "errors"
+ "fmt"
+ "github.com/gin-gonic/gin"
+ db "main.go/database"
+ . "main.go/type"
+ "strings"
+)
+
+//GetAllChallenges 获取全部题目
+
+func GetAllChallenges(c * gin.Context){
+ var challenges []ChallengeResponse
+
+ if err := getAllChallenges(c, &challenges); err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get all challenges failure!"})
+ return
+ }
+
+ c.JSON(200, gin.H{"code": 200, "data": challenges})
+
+}
+
+//GetChallengesByCategory 获取某个分类下的题目
+
+func GetChallengesByCategory(c *gin.Context){
+ category := c.Param("category")
+ if matched := CheckCategory(category); !matched {
+ c.JSON(400, gin.H{"code": 400, "msg": "Wrong category!"})
+ return
+ }
+ var challenges []ChallengeResponse
+ if err := getAllChallenges(c, &challenges); err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get all challenges failure!"})
+ return
+ }
+ c.JSON(200, gin.H{"code": 200, "data": challenges})
+
+}
+
+
+// getAllChallenges 操作数据库获取所有题目。
+func getAllChallenges(c *gin.Context, challenges *[]ChallengeResponse) error {
+ var attachmentString, hints string
+ Link()
+ DB := db.DBsnctf
+ rows,err := DB.Raw("SELECT id, name, score, description, attachment, category, tags, hints FROM challenge WHERE visible=1;").Rows()
+ if err != nil {
+ return err
+ }
+ defer rows.Close()
+ for rows.Next(){
+ var challenge ChallengeResponse
+ err = rows.Scan(&challenge.ID, &challenge.Name, &challenge.Score, &challenge.Description, &attachmentString, &challenge.Category, &challenge.Tags, &hints)
+ fmt.Println(err)
+ if err != nil {
+ return err
+ }
+ // 解析为切片
+ challenge.Attachment = strings.Split(attachmentString, ",")
+ challenge.Hints = strings.Split(hints, ",")
+
+ solverCount, err := getSolverCount(challenge.ID)
+ if err != nil {
+ return err
+ }
+ challenge.SolverCount = solverCount
+ session, err := Store.Get(c.Request, "SNCTFSESSID")
+ if err != nil {
+ c.JSON(200, gin.H{"code": 400, "msg": "Get SNCTFSESSID error"})
+ return err
+ }
+ user, ok := session.Values["user"].(User)
+ if !ok {
+ c.JSON(200, gin.H{"code": 400, "msg": "No session"})
+ return errors.New("no session")
+ }
+ challenge.IsSolved = hasAlreadySolved(user.ID, challenge.ID)
+ *challenges = append(*challenges, challenge)
+ }
+ return rows.Err()
+}
diff --git a/api/notice.go b/api/notice.go
new file mode 100644
index 0000000..24db265
--- /dev/null
+++ b/api/notice.go
@@ -0,0 +1,39 @@
+package api
+
+import (
+ "github.com/gin-gonic/gin"
+ . "main.go/type"
+ db "main.go/database"
+)
+
+// GetAllNotices 获取所有的公告
+func GetAllNotices(c *gin.Context) {
+ var notices []Notice
+ if err := getAllNotices(¬ices); err != nil {
+ c.JSON(200, gin.H{"code": 400, "msg": "Get all notices failure!"})
+ return
+ }
+
+ c.JSON(200, gin.H{"code": 200, "data": notices})
+}
+
+
+func getAllNotices(notices *[]Notice) error {
+ Link()
+ DB := db.DBsnctf
+ command := "SELECT id, title, content, created_at FROM notice ORDER BY created_at ASC;"
+ rows, err := DB.Raw(command).Rows()
+ if err != nil {
+ return err
+ }
+ defer rows.Close()
+ for rows.Next() {
+ var b Notice
+ err = rows.Scan(&b.ID, &b.Title, &b.Content, &b.CreatedAt)
+ if err != nil {
+ return err
+ }
+ *notices = append(*notices, b)
+ }
+ return rows.Err()
+}
diff --git a/api/score.go b/api/score.go
new file mode 100644
index 0000000..08f3e64
--- /dev/null
+++ b/api/score.go
@@ -0,0 +1,78 @@
+package api
+
+import (
+ "github.com/gin-gonic/gin"
+ db "main.go/database"
+ "main.go/tools"
+ . "main.go/type"
+)
+
+//GetAllScore 获取所有的积分,按照积分降序排列
+func GetAllScore(c *gin.Context){
+ var s ScoreResponse
+ var scores []ScoreResponse
+ Link()
+ DB :=db.DBsnctf
+ //rows,err := DB.Raw("SELECT s.id, s.username, s.score FROM score AS s, user AS u WHERE u.hidden = 0 AND s.username = u.username ORDER BY s.score DESC;").Scan(&s).Rows()
+ rows,err := DB.Debug().Raw("SELECT s.id, s.username, s.score FROM score AS s, user AS u WHERE u.hidden = 0 AND s.username = u.username ORDER BY s.score DESC;").Rows()
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get all score error!"})
+ return
+ }
+ // 循环读取数据
+ for rows.Next() {
+ rows.Scan(&s.ID, &s.Username, &s.Score)
+ scores = append(scores, s)
+ }
+
+ c.JSON(200, gin.H{"code": 200, "data": scores})
+}
+
+//GetScoreByUserId 获取用户分数
+func GetScoreByUserId(c *gin.Context) {
+ var score int
+ Link()
+ DB := db.DBsnctf
+ //获取用户id
+ id := c.Params.ByName("id")
+ if id == "" {
+ c.JSON(400, gin.H{"code": 400, "msg": "Need id!"})
+ return
+ }
+ //检查id是否合法
+ if !tools.CheckID(id) {
+ c.JSON(400, gin.H{"code": 400, "msg": "ID format error!"})
+ return
+ }
+ //查询用户信息
+ err := DB.Raw("SELECT s.score FROM score AS s, user AS u WHERE u.id = ? AND u.hidden = 0 AND u.username = s.username LIMIT 1;", id).Scan(&score).Error
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get info error!"})
+ return
+ }
+ c.JSON(200, gin.H{"code": 200, "data": score})
+}
+
+
+//GetSelfScoreAndRank 获取当前登录用户的分数和排名
+func GetSelfScoreAndRank(c *gin.Context){
+ var scoreAndRank ScoreRankResponse
+ DB := db.DBsnctf
+ session, err := Store.Get(c.Request, "SNCTFSESSID")
+ if err != nil {
+ c.JSON(200, gin.H{"code": 400, "msg": "Get SNCTFSESSID error"})
+ return
+ }
+ user, ok := session.Values["user"].(User)
+ if !ok {
+ c.JSON(200, gin.H{"code": 400, "msg": "No session"})
+ return
+ }
+ err = DB.Raw("SELECT score, (SELECT count(DISTINCT score) FROM score WHERE score>=s.score) AS rank FROM score AS s,user AS u WHERE u.id = ? AND u.username = s.username ORDER BY score DESC LIMIT 1;",user.ID).Scan(&scoreAndRank).Error
+ if err != nil {
+ c.JSON(200, gin.H{"code": 400, "msg": "Get info error!"})
+ return
+ }
+ c.JSON(200, gin.H{"code": 200, "data": scoreAndRank})
+
+}
diff --git a/api/session.go b/api/session.go
new file mode 100644
index 0000000..11ae31f
--- /dev/null
+++ b/api/session.go
@@ -0,0 +1,27 @@
+package api
+
+import (
+ "encoding/gob"
+ "github.com/gorilla/securecookie"
+ "github.com/gorilla/sessions"
+ . "main.go/type"
+)
+
+
+// sessions 存储于文件系统
+var Store *sessions.FilesystemStore
+
+func init() {
+ Store = sessions.NewFilesystemStore("./sessions", securecookie.GenerateRandomKey(32))
+
+ Store.Options = &sessions.Options{
+ Domain: "",
+ Path: "/",
+ MaxAge: 24 * 60 * 60, // 1 day
+ // SameSite: http.SameSiteNoneMode,
+ Secure: false,
+ HttpOnly: false,
+ }
+
+ gob.Register(User{})
+}
diff --git a/api/solve.go b/api/solve.go
new file mode 100644
index 0000000..bf95559
--- /dev/null
+++ b/api/solve.go
@@ -0,0 +1,153 @@
+package api
+
+import (
+ "github.com/gin-gonic/gin"
+ db "main.go/database"
+ ."main.go/type"
+ "strconv"
+)
+
+//GetAllSolves 获取所有解题记录
+func GetAllSolves(c *gin.Context){
+ var solves []SolveResponse
+
+ if err := getAllSolves(&solves); err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get all solves failure!"})
+ return
+ }
+
+ c.JSON(200, gin.H{"code": 200, "data": solves})
+}
+//GetSolvesByCid 获取某个用户的所有解题记录
+func GetSolvesByCid(c *gin.Context){
+ var solves []SolveResponse
+
+ cid, err := strconv.ParseInt(c.Param("cid"), 10, 64)
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get solves failure!"})
+ return
+ }
+
+ if err := getSolvesByCid(&solves, int(cid)); err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get solves failure!"})
+ return
+ }
+
+ c.JSON(200, gin.H{"code": 200, "data": solves})
+}
+
+// GetSolvesByUid 根据用户id获取正确的flag提交记录。
+func GetSolvesByUid(c *gin.Context) {
+ uid, err := strconv.ParseInt(c.Param("uid"), 10, 64)
+ if err != nil {
+
+ c.JSON(400, gin.H{"code": 400, "msg": "Wrong uid!"})
+ return
+ }
+
+ if uid == 1 {
+ c.JSON(400, gin.H{"code": 400, "msg": "Not allowed!"})
+ return
+ }
+
+ var solves []SolveResponse
+ if err := getSolvesByUid(&solves, int(uid)); err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get specified solves failure!"})
+ return
+ }
+
+ c.JSON(200, gin.H{"code": 200, "data": solves})
+}
+
+// GetSelfSolves 获取当前用户的所有解题记录
+func GetSelfSolves(c *gin.Context){
+ var solves []SolveResponse
+
+ session, err := Store.Get(c.Request, "SNCTFSESSID")
+ if err != nil {
+ c.JSON(200, gin.H{"code": 400, "msg": "Get SNCTFSESSID error"})
+ return
+ }
+ user, ok := session.Values["user"].(User)
+ if !ok {
+ c.JSON(200, gin.H{"code": 400, "msg": "No session"})
+ return
+ }
+
+ if err := getSolvesByUid(&solves, user.ID); err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get self solves failure!"})
+ return
+ }
+
+ c.JSON(200, gin.H{"code": 200, "data": solves})
+}
+
+// getSolverCount 操作数据库获取指定id题目的解出人数。
+func getSolverCount(id int) (count int, err error) {
+ Link()
+ DB := db.DBsnctf
+ //SELECT COUNT(*) FROM solve WHERE cid = ?;
+ err = DB.Table("solve").Select("COUNT(*)").Where("cid = ?", id).Scan(&count).Error
+ if err != nil {
+ return 0, err
+ }
+ return count, nil
+}
+
+
+
+// getAllSolves 操作数据库获取所有正确的提交记录,按提交时间从早到晚排序。
+func getAllSolves(solves *[]SolveResponse) error {
+ DB :=db.DBsnctf
+ rows,err := DB.Raw("SELECT s.id, s.uid, s.cid, u.username, c.name, s.submitted_at, c.score FROM solve AS s, user AS u, challenge AS c WHERE u.hidden=0 AND s.uid=u.id AND s.cid=c.id ORDER BY s.submitted_at ASC;").Rows()
+ if err != nil {
+ return err
+ }
+ defer rows.Close()
+ for rows.Next() {
+ var s SolveResponse
+ err = rows.Scan(&s.ID, &s.Uid, &s.Cid, &s.Username, &s.ChallengeName, &s.SubmittedAt, &s.Score)
+ if err != nil {
+ return err
+ }
+ *solves = append(*solves, s)
+ }
+ return rows.Err()
+}
+
+// getSolvesByUid 操作数据库根据用户id获取正确的flag提交记录,按提交时间从早到晚排序。
+func getSolvesByUid(solves *[]SolveResponse, uid int) error {
+ DB :=db.DBsnctf
+ rows,err := DB.Debug().Raw("SELECT s.id, s.uid, s.cid, u.username, c.name, s.submitted_at, c.score FROM solve AS s, user AS u, challenge AS c WHERE u.hidden=0 AND s.uid=? AND u.id=s.uid AND c.id=s.cid ORDER BY s.submitted_at ASC;",uid).Rows()
+ if err != nil {
+ return err
+ }
+ defer rows.Close()
+ for rows.Next() {
+ var s SolveResponse
+ err = rows.Scan(&s.ID, &s.Uid, &s.Cid, &s.Username, &s.ChallengeName, &s.SubmittedAt, &s.Score)
+ if err != nil {
+ return err
+ }
+ *solves = append(*solves, s)
+ }
+ return rows.Err()
+}
+// getSolvesByCid 操作数据库根据题目id获取正确的提交记录,按提交时间从早到晚排序。
+func getSolvesByCid(solves *[]SolveResponse, cid int) error {
+ DB :=db.DBsnctf
+ rows,err := DB.Raw("SELECT s.id, s.uid, s.cid, u.username, c.name, s.submitted_at, c.score FROM solve AS s, user AS u, challenge AS c WHERE u.hidden=0 AND s.cid=? AND u.id=s.uid AND c.id=s.cid ORDER BY s.submitted_at ASC;",cid).Rows()
+ if err != nil {
+ return err
+ }
+ defer rows.Close()
+ for rows.Next() {
+ var s SolveResponse
+ err = rows.Scan(&s.ID, &s.Uid, &s.Cid, &s.Username, &s.ChallengeName, &s.SubmittedAt, &s.Score)
+ if err != nil {
+ return err
+ }
+ *solves = append(*solves, s)
+ }
+ return rows.Err()
+}
\ No newline at end of file
diff --git a/api/submissions.go b/api/submissions.go
new file mode 100644
index 0000000..5efed2c
--- /dev/null
+++ b/api/submissions.go
@@ -0,0 +1,211 @@
+package api
+
+import (
+ "fmt"
+ "github.com/gin-gonic/gin"
+ db "main.go/database"
+ "main.go/tools"
+ . "main.go/type"
+ "math"
+)
+
+// hasAlreadySolved 检查某道题是否已经被某用户解出。
+func hasAlreadySolved(uid int, cid int) (exists bool) {
+ Link()
+ DB := db.DBsnctf
+ err := DB.Raw("SELECT EXISTS(SELECT 1 FROM solve WHERE uid=? AND cid=?)",uid,cid).Scan(&exists).Error
+ if err != nil {
+ return false
+ }
+ return exists
+}
+// isChallengeExisted 检查数据库中是否存在某个题目。
+func isChallengeExisted(id int) (exists bool) {
+ Link()
+ DB := db.DBsnctf
+ command := "SELECT EXISTS(SELECT 1 FROM challenge WHERE id = ?);"
+ err := DB.Raw(command,id).Scan(&exists).Error
+ if err != nil {
+ return false
+ }
+ return exists
+}
+
+//addSubmission 添加一个提交记录。
+func addSubmission(s *Submission) error {
+ Link()
+ DB := db.DBsnctf
+ err := DB.Table("submission").Create(&s).Error
+ if err != nil {
+ return err
+ }
+
+ return nil
+
+}
+
+// getFlag 根据题目id获取该题的flag
+func getFlag(id int) (flag string, err error) {
+ Link()
+ DB := db.DBsnctf
+ err = DB.Table("challenge").Select("flag").Where("id = ?",id).Find(&flag).Error
+ if err != nil {
+ return "", err
+ }
+ return flag, nil
+}
+
+// addSolve 操作数据库加入一条正确的flag提交记录。
+func addSolve(s *Solve) error {
+ DB := db.DBsnctf
+ err := DB.Table("solve").Create(&s).Error
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+// addUserScore 操作数据库为指定用户增加某题的分数。
+func addUserScore(username string, cid int) error {
+ var newScore int
+ DB := db.DBsnctf
+ err := DB.Table("challenge").Select("score").Where("id = ?", cid).Find(&newScore).Error
+ if err != nil {
+ return err
+ }
+
+ command := "UPDATE score SET score=score+? WHERE username=?"
+ err = DB.Exec(command, newScore, username).Error
+ if err != nil {
+ return err
+ }
+ return nil
+}
+// updateUserScores 操作数据库更新解出用户的分数。
+func updateUserScores(reducedScore, cid int) error {
+
+ DB:=db.DBsnctf
+ command := "UPDATE score SET score=score-? WHERE EXISTS(SELECT 1 FROM user,solve WHERE user.id=solve.uid AND score.username=user.username AND solve.cid=?);"
+ err := DB.Exec(command, reducedScore, cid).Error
+
+ return err
+}
+
+// editChallengeScore 操作数据库修改指定题目增的动态分数。
+func editChallengeScore(cid int) (reducedScore int, err error) {
+ DB := db.DBsnctf
+ var currentScore int
+ err = DB.Table("challenge").Select("score").Where("id = ?", cid).Find(¤tScore).Error
+ command := "SELECT score FROM challenge WHERE id=? LIMIT 1;"
+ if err != nil {
+ return 0, err
+ }
+
+ solverCount, err := getSolverCount(cid)
+ if err != nil {
+ return 0, err
+ }
+ // According to https://github.com/o-o-overflow/scoring-playground
+ newScore := int(100 + (1000-100)/(1.0+float64(solverCount)*0.04*math.Log(float64(solverCount))))
+ reducedScore = currentScore - newScore
+
+ command = "UPDATE challenge SET score=? WHERE id=?;"
+ err = DB.Exec(command, newScore, cid).Error
+ if err != nil {
+ return 0, err
+ }
+
+ return reducedScore, nil
+}
+
+// SubmitFlag 提交flag
+func SubmitFlag(c *gin.Context) {
+ var request SubmissionRequest
+ if err := c.ShouldBindJSON(&request); err != nil {
+
+ c.JSON(400, gin.H{"code": 400, "msg": "Request format wrong!"})
+ return
+ }
+
+ session,err := Store.Get(c.Request, "SNCTFSESSID")
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "GET SNCTFSESSID error!"})
+ return
+ }
+ user,ok := session.Values["user"].(User)
+ if !ok {
+ c.JSON(400, gin.H{"code": 400, "msg": "GET user error!"})
+ return
+ }
+ // 检查题目是否存在
+ if !isChallengeExisted(request.Cid) {
+ c.JSON(400, gin.H{"code": 400, "msg": "Challenge not existed!"})
+ return
+ }
+ // Submission记录
+ solvedTime := tools.Timestamp()
+ submission := &Submission{
+ UserID: user.ID,
+ ChallengeID: request.Cid,
+ Flag: request.Flag,
+ IP: c.ClientIP(),
+ Time: solvedTime,
+ }
+ err = addSubmission(submission)
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Record submission failure!"})
+ return
+ }
+ // 是否已经解出该题
+ if hasAlreadySolved(user.ID, request.Cid) {
+ c.JSON(400, gin.H{"code": 400, "msg": "Already solved!"})
+ return
+ }
+ // 获取flag
+ flag, err := getFlag(request.Cid)
+ if err != nil {
+ fmt.Println(err)
+ c.JSON(400, gin.H{"code": 400, "msg": "Get flag failure!"})
+ return
+ }
+ // 检查flag是否正确
+ if flag != request.Flag {
+ c.JSON(400, gin.H{"code": 400, "msg": "Wrong flag!"})
+ return
+ }else {
+ // Solve记录
+ solve := &Solve{
+ UserID: user.ID,
+ ChallengeID: request.Cid,
+ Time: solvedTime,
+ }
+ err = addSolve(solve)
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Record solve failure!"})
+ return
+ }
+ //加分
+ err = addUserScore(user.Username, request.Cid)
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Add score failure!"})
+ return
+ }
+ // 题目动态分数
+
+ reducedScore, err := editChallengeScore(request.Cid)
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Edit challenge score failure!"})
+ return
+ }
+ //更新所有用户分数
+ err = updateUserScores(reducedScore, request.Cid)
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Update user scores failure!"})
+ return
+ }
+ c.JSON(200, gin.H{"code": 200, "msg": "Correct flag!"})
+ return
+
+ }
+
+}
\ No newline at end of file
diff --git a/api/user.go b/api/user.go
new file mode 100644
index 0000000..71580aa
--- /dev/null
+++ b/api/user.go
@@ -0,0 +1,296 @@
+package api
+
+import (
+ "fmt"
+ "github.com/gin-gonic/gin"
+ _ "gorm.io/driver/sqlite"
+ db "main.go/database"
+ "main.go/tools"
+ . "main.go/type"
+ "regexp"
+ "unicode/utf8"
+)
+
+//连接数据库
+func Link() {
+ err := db.Inimysql()
+ if err != nil{
+ panic(err)
+ }
+}
+
+
+
+
+func Login(c * gin.Context) {
+ var request LoginRequest
+ var user User
+
+ Link()
+ DB := db.DBsnctf
+ DB.AutoMigrate(&User{})
+ //用ShouldBindJSON解析绑定传入的Json数据。
+ if err := c.ShouldBindJSON(&request); err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Bind json error!"})
+ return
+ }
+ //code 0用户名不存在
+ //code 1用户名或密码错误
+
+ err := DB.Take(&user,"username = ?",request.Username).Error
+ if err != nil {
+ c.JSON(200,gin.H{
+ "Error":true,
+ "Msg":"登陆失败",
+ "Code": 0,
+ })
+ return
+ }
+ //判断md5值与数据库内容是否相同
+ if user.Password != tools.MD5(request.Password){
+ c.JSON(200,gin.H{
+ "Error":true,
+ "Msg":"用户名或密码错误",
+ "Code": 1,
+ })
+ return
+ }
+ //身份认证结束
+ //session
+ // 设置session
+ session, _ := Store.Get(c.Request, "SNCTFSESSID")
+ user.Password = ""
+ // 根据remember值设置session有效期
+ if request.Remember {
+ session.Options.MaxAge = 7 * 24 * 60 * 60 // 7 days
+ } else {
+ session.Options.MaxAge = 24 * 60 * 60 // 1 day
+ }
+ //保存session
+ session.Values["user"] = user
+
+ err = session.Save(c.Request, c.Writer)
+ fmt.Println(err)
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Save SNCTFSESSID error"})
+ return
+ }
+ //登录成功
+ c.JSON(200, gin.H{"code": 200, "username": user.Username, "role": user.Role, "msg": "Login success!"})
+
+}
+
+
+func Register(c *gin.Context) {
+ var request RegisterRequest
+ var user User
+ var score ScoreResponse
+
+ Link()
+ DB := db.DBsnctf
+ err := DB.AutoMigrate(&User{})
+ if err != nil {
+ return
+ }
+
+ //用ShouldBindJSON解析绑定传入的Json数据。
+ if err := c.ShouldBindJSON(&request); err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Bind json error!"})
+ return
+ }
+ //限制传入用户名为中文、数字、大小写字母下划线和横杠,1到10位
+ if !checkUsername(request.Username) {
+ c.JSON(200, gin.H{
+ "Error": true,
+ "Msg": "用户名不符合规范",
+ "Code": 2,
+ })
+ return
+ }
+ //限制密码长度6到20位
+ if !checkPassword(request.Password) {
+ c.JSON(400, gin.H{"code": 400, "msg": "Password format error!"})
+ return
+ }
+ //限制传入邮箱符合格式
+ if !checkEmail(request.Email) {
+ c.JSON(400, gin.H{"code": 400, "msg": "Email format error!"})
+ return
+ }
+ //判断用户名是否已被使用
+ if isNameExisted(user, request.Username) {
+ c.JSON(200, gin.H{"code": 1000, "msg": "Username has already been used!"})
+ return
+ }
+ //判断邮箱是否已被使用
+ if isEmailExisted(user, request.Email) {
+ c.JSON(200, gin.H{"code": 1001, "msg": "Email has already been used!"})
+ return
+ }
+ user.Token = tools.Token()
+ user.Username = request.Username
+ user.Password = tools.MD5(request.Password)
+ user.Email = request.Email
+ user.Created = tools.Timestamp()
+ score.Score = 0
+ score.Username =request.Username
+ //创建数据
+ err1 := DB.Table("user").Create(&user).Error
+ err2 := DB.Table("score").Create(&score).Error
+ if err1 != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Register error!"})
+ return
+ }
+ if err2 != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Register error!"})
+ return
+ }
+
+ c.JSON(200, gin.H{
+ "success": "注册成功",
+ })
+
+
+}
+
+// Logout 实现用户注销登陆
+func Logout(c *gin.Context) {
+ var user User
+
+ session, err := Store.Get(c.Request, "SNCTFSESSID")
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get CTFGOSESSID error"})
+ return
+ }
+ user, ok := session.Values["user"].(User)
+ if !ok {
+ c.JSON(400, gin.H{"code": 400, "msg": "No session"})
+ return
+ }
+
+ session.Options.MaxAge = -1
+ err = session.Save(c.Request, c.Writer)
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Save CTFGOSESSID error"})
+ return
+ }
+
+ fmt.Sprintf("[%s] logout success!", user.Username)
+ c.JSON(200, gin.H{"code": 200, "msg": "Logout success!"})
+}
+//GetInfoByUserId 获取用户信息
+func GetInfoByUserId(c *gin.Context) {
+ var info PublicInfoResponse
+ Link()
+ DB := db.DBsnctf
+ //获取用户id
+ id := c.Params.ByName("id")
+ if id == "" {
+ c.JSON(400, gin.H{"code": 400, "msg": "Need id!"})
+ return
+ }
+ //检查id是否合法
+
+
+ if !tools.CheckID(id) {
+ c.JSON(400, gin.H{"code": 400, "msg": "ID format error!"})
+ return
+ }
+
+ err := DB.Debug().Raw("SELECT username,affiliation,country,team_id FROM user WHERE id = ? LIMIT 1", id).Scan(&info).Error
+ //err := DB.Where("id = ?", id).First(user).Error
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get info error!"})
+ return
+ }
+ c.JSON(200, gin.H{"code": 200, "data": info})
+
+
+}
+
+
+// checkUsername 验证用户名是否符合中文数字字母下划线横杠,长度1到10位,返回true或false
+func checkUsername(username string) bool {
+ if !(utf8.RuneCountInString(username) > 0) || !(utf8.RuneCountInString(username) < 11) {
+ return false
+ }
+ pattern := `^[-\w\p{Han}]+$`
+ reg := regexp.MustCompile(pattern)
+ return reg.MatchString(username)
+}
+
+// checkEmail 验证是否符合邮箱格式,返回true或false
+func checkEmail(email string) bool {
+ pattern := `^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$`
+ reg := regexp.MustCompile(pattern)
+ return reg.MatchString(email)
+}
+
+
+// checkPassword 验证密码是否符合长度6到20位,返回true或false
+func checkPassword(password string) bool {
+ if !(utf8.RuneCountInString(password) > 5) || !(utf8.RuneCountInString(password) < 21) {
+ return false
+ }
+ return true
+}
+// isNameExisted 判断用户名是否已经被占用,被占用返回true,未被占用则返回false
+func isNameExisted(user User, username string) bool {
+ Link()
+ DB := db.DBsnctf
+ err := DB.First(&user,"Username = ?",username).Error
+ if err != nil {
+ return false
+ }
+ return true
+
+}
+// isNameExisted 判断邮箱是否已经被占用,被占用返回true,未被占用则返回false
+func isEmailExisted(user User, email string) bool {
+ Link()
+ DB := db.DBsnctf
+
+ err := DB.First(&user,"Email = ?",email).Error
+ if err != nil {
+ return false
+ }
+ return true
+}
+
+// Session 获取当前用户session信息
+func Session(c *gin.Context) {
+ var user User
+
+ // 默认在此之前已经通过了中间件的session权限验证
+ session, _ := Store.Get(c.Request, "SNCTFSESSID")
+ user = session.Values["user"].(User)
+
+ c.JSON(200, gin.H{"code": 200, "data": user})
+}
+
+
+
+//下面是身份认证用 AUTH部分
+// AuthRequired 用于普通用户权限控制的中间件
+func AuthRequired()gin.HandlerFunc{
+ return func(c *gin.Context) {
+ session, err := Store.Get(c.Request, "SNCTFSESSID")
+ if err != nil {
+ c.JSON(400, gin.H{"code": 400, "msg": "Get SNCTFSESSID error"})
+ c.Abort()
+ return
+ }
+ user, ok := session.Values["user"].(User)
+ if !ok {
+ c.JSON(400, gin.H{"code": 400, "msg": "No session"})
+ c.Abort()
+ return
+ }
+ if user.Role != 0&&user.Role!=1{
+ c.JSON(400, gin.H{"code": 400, "msg": "Permission denied"})
+ c.Abort()
+ return
+ }
+ c.Next()
+ }
+}
\ No newline at end of file
diff --git a/database/db.go b/database/db.go
new file mode 100644
index 0000000..b043abb
--- /dev/null
+++ b/database/db.go
@@ -0,0 +1,30 @@
+package database
+
+import (
+ "gorm.io/driver/sqlite"
+ "gorm.io/gorm"
+ "gorm.io/gorm/schema"
+)
+
+//定义全局数据库
+var (
+ DBsnctf *gorm.DB
+)
+//定义全局数据库连接
+func Inimysql()(err error){
+ DBsnctf, err = gorm.Open(sqlite.Open("snctf.db"), &gorm.Config{
+ NamingStrategy: schema.NamingStrategy{
+ SingularTable: true, // 使用单数表名
+ },
+ })
+ if err != nil {
+ panic("failed to connect database")
+ }
+ return
+}
+func DBLink() {
+ err := Inimysql()
+ if err != nil{
+ panic(err)
+ }
+}
\ No newline at end of file
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..b5002e5
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,31 @@
+module main.go
+
+go 1.17
+
+require (
+ github.com/gin-gonic/gin v1.7.7
+ github.com/gorilla/securecookie v1.1.1
+ github.com/gorilla/sessions v1.2.1
+ gorm.io/driver/sqlite v1.3.2
+ gorm.io/gorm v1.23.5
+)
+
+require (
+ github.com/gin-contrib/sse v0.1.0 // indirect
+ github.com/go-playground/locales v0.13.0 // indirect
+ github.com/go-playground/universal-translator v0.17.0 // indirect
+ github.com/go-playground/validator/v10 v10.4.1 // indirect
+ github.com/golang/protobuf v1.3.3 // indirect
+ github.com/jinzhu/inflection v1.0.0 // indirect
+ github.com/jinzhu/now v1.1.5 // indirect
+ github.com/json-iterator/go v1.1.9 // indirect
+ github.com/leodido/go-urn v1.2.0 // indirect
+ github.com/mattn/go-isatty v0.0.12 // indirect
+ github.com/mattn/go-sqlite3 v1.14.12 // indirect
+ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
+ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 // indirect
+ github.com/ugorji/go/codec v1.1.7 // indirect
+ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect
+ golang.org/x/sys v0.0.0-20200116001909-b77594299b42 // indirect
+ gopkg.in/yaml.v2 v2.2.8 // indirect
+)
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..35a23bd
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,73 @@
+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/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=
+github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
+github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI=
+github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
+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/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
+github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
+github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
+github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0=
+github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+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.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+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-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/driver/sqlite v1.3.2 h1:nWTy4cE52K6nnMhv23wLmur9Y3qWbZvOBz+V4PrGAxg=
+gorm.io/driver/sqlite v1.3.2/go.mod h1:B+8GyC9K7VgzJAcrcXMRPdnMcck+8FgJynEehEPM16U=
+gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
+gorm.io/gorm v1.23.5 h1:TnlF26wScKSvknUC/Rn8t0NLLM22fypYBlvj1+aH6dM=
+gorm.io/gorm v1.23.5/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
diff --git a/identifier.sqlite b/identifier.sqlite
new file mode 100644
index 0000000..e69de29
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..bd73550
--- /dev/null
+++ b/main.go
@@ -0,0 +1,7 @@
+package main
+
+import "main.go/routers"
+
+func main() {
+ routers.Initrouter()
+}
\ No newline at end of file
diff --git a/routers/router.go b/routers/router.go
new file mode 100644
index 0000000..488bcff
--- /dev/null
+++ b/routers/router.go
@@ -0,0 +1,72 @@
+package routers
+
+import (
+ "github.com/gin-gonic/gin"
+ "main.go/api"
+ "main.go/api/admin"
+)
+
+
+func Initrouter(){
+ router := gin.Default()
+ api_v1 := router.Group("/api/v1")
+
+ //公共接口(无需登录)
+ public := api_v1.Group("")
+ {
+ //用户登录
+ public.POST("/login",api.Login)
+ //用户注册
+ public.POST("/register",api.Register)
+ //用户登出
+ public.GET("/logout",api.Logout)
+ //获取指定id用户可公开信息
+ public.GET("/user/:id",api.GetInfoByUserId)
+ //获取指定id用户分数
+ public.GET("/score/:id",api.GetScoreByUserId)
+ //获取所有用户分数,降序排列
+ public.GET("/score",api.GetAllScore)
+ //获取全部公告
+ public.GET("/notice",api.GetAllNotices)
+
+ }
+ // 普通用户api,需要用户登陆且Role=0才能访问
+ personal := api_v1.Group("/user")
+ personal.Use(api.AuthRequired())
+ {
+ // 获取当前用户信息
+ personal.GET("/session", api.Session)
+ // 获取题目分类
+ personal.GET("/category", api.GetCategories)
+ // 获取所有题目信息
+ personal.GET("/challenges/all", api.GetAllChallenges)
+ // 获取指定分类题目信息
+ personal.GET("/challenges/:category", api.GetChallengesByCategory)
+
+ // 提交flag
+ personal.POST("/submitflag", api.SubmitFlag)
+ // 获取所有正确的flag提交记录
+ personal.GET("/solves/all", api.GetAllSolves)
+ // 获取指定用户正确的flag提交记录
+ personal.GET("/solves/uid/:uid", api.GetSolvesByUid)
+ // 获取指定题目正确的flag提交记录
+ personal.GET("/solves/cid/:cid", api.GetSolvesByCid)
+ // 获取当前用户正确flag提交记录(即解题记录)按时间从早到晚排序
+ personal.GET("/solves/self", api.GetSelfSolves)
+ // 获取当前用户分数、排名
+ personal.GET("/score/self", api.GetSelfScoreAndRank)
+ // 校内排行api,暂时留空
+ }
+ // 管理员api,需要用户登陆且Role=1才能访问
+ manager := api_v1.Group("/admin")
+ manager.Use(admin.AuthRequired())
+ {
+ // 创建新题目
+ manager.POST("/challenge", admin.NewChallenge)
+ }
+
+
+
+
+ router.Run(":9000")
+}
\ No newline at end of file
diff --git a/sessions/session_2ITIVHA4ARV5V5LQT3OB6I6CQ7JKVPEHO5PRTGKXA6QF37YRVA7Q b/sessions/session_2ITIVHA4ARV5V5LQT3OB6I6CQ7JKVPEHO5PRTGKXA6QF37YRVA7Q
new file mode 100644
index 0000000..2b0acdd
--- /dev/null
+++ b/sessions/session_2ITIVHA4ARV5V5LQT3OB6I6CQ7JKVPEHO5PRTGKXA6QF37YRVA7Q
@@ -0,0 +1 @@
+MTY1MTY1MDA1NHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyZp7R_7HdiX8UyxFTMz3PPRiS83yhpcaLmGMFD-L145A==
\ No newline at end of file
diff --git a/sessions/session_2LTA5Y2QR7MWGJVV4LT2W6GZQYFXVQVJL3EIRTBYKIEAQYSE4Q3Q b/sessions/session_2LTA5Y2QR7MWGJVV4LT2W6GZQYFXVQVJL3EIRTBYKIEAQYSE4Q3Q
new file mode 100644
index 0000000..a88259a
--- /dev/null
+++ b/sessions/session_2LTA5Y2QR7MWGJVV4LT2W6GZQYFXVQVJL3EIRTBYKIEAQYSE4Q3Q
@@ -0,0 +1 @@
+MTY1MTU4Mjk5OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXzX2Hfpvc6Jpgio2o1bCyD8p5MlWNkPlboWDL4O92SG8w==
\ No newline at end of file
diff --git a/sessions/session_34GMETWVQOK6PRWVCOCWAKR4QY5LOPJOW3NRM6WBHBP5JPO2KF6Q b/sessions/session_34GMETWVQOK6PRWVCOCWAKR4QY5LOPJOW3NRM6WBHBP5JPO2KF6Q
new file mode 100644
index 0000000..9869bc5
--- /dev/null
+++ b/sessions/session_34GMETWVQOK6PRWVCOCWAKR4QY5LOPJOW3NRM6WBHBP5JPO2KF6Q
@@ -0,0 +1 @@
+MTY1MTY1MDA0OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXx0YsVP0Bsx_UC-SMnT2H5sXa3Rv-emyNOprM7KTZO22g==
\ No newline at end of file
diff --git a/sessions/session_36KZLOIABXTGJRBC4D7WNQF4QC4LC3B7D4DZA6BYIAHAZTFF4ABA b/sessions/session_36KZLOIABXTGJRBC4D7WNQF4QC4LC3B7D4DZA6BYIAHAZTFF4ABA
new file mode 100644
index 0000000..8b8b9e3
--- /dev/null
+++ b/sessions/session_36KZLOIABXTGJRBC4D7WNQF4QC4LC3B7D4DZA6BYIAHAZTFF4ABA
@@ -0,0 +1 @@
+MTY1Mjk3NTUwM3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18R_nBzwfvM0VB9HgjG3j_tOYrJh9OwzMtHi7AxxPqDG4=
\ No newline at end of file
diff --git a/sessions/session_54UEVZW6QKKZ2HFEPEE3EGWU6OW7TBYF3666OTS45DMPD45DKHUA b/sessions/session_54UEVZW6QKKZ2HFEPEE3EGWU6OW7TBYF3666OTS45DMPD45DKHUA
new file mode 100644
index 0000000..fb9c4da
--- /dev/null
+++ b/sessions/session_54UEVZW6QKKZ2HFEPEE3EGWU6OW7TBYF3666OTS45DMPD45DKHUA
@@ -0,0 +1 @@
+MTY1MTY3NDQ4NnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18aaWkxhTEgthoUKJ1GTlpyzmrevXI2QOM7XmE1f4Tws4=
\ No newline at end of file
diff --git a/sessions/session_5ALGKSMBOMNUDZLT4E46A3FHROR2BAAB6AZHBVYRBHO7DMP6LTVA b/sessions/session_5ALGKSMBOMNUDZLT4E46A3FHROR2BAAB6AZHBVYRBHO7DMP6LTVA
new file mode 100644
index 0000000..06a0856
--- /dev/null
+++ b/sessions/session_5ALGKSMBOMNUDZLT4E46A3FHROR2BAAB6AZHBVYRBHO7DMP6LTVA
@@ -0,0 +1 @@
+MTY1MTY3MzM5OXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18g3L0zUnti_MnEg_YIhPvXDONG7L4o30Yq1IHE4hKPzI=
\ No newline at end of file
diff --git a/sessions/session_5RNC3S6JWIJ7HT3OO6RQHQXSHXHH5SWXJEXVQJ7QDXLDJRRHRNSQ b/sessions/session_5RNC3S6JWIJ7HT3OO6RQHQXSHXHH5SWXJEXVQJ7QDXLDJRRHRNSQ
new file mode 100644
index 0000000..d712b5c
--- /dev/null
+++ b/sessions/session_5RNC3S6JWIJ7HT3OO6RQHQXSHXHH5SWXJEXVQJ7QDXLDJRRHRNSQ
@@ -0,0 +1 @@
+MTY1MTY2NTYyNnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyEWhEqOaCFOXqnMIdP2SHN9WFhZxAjVudLfyUTS4zkfg==
\ No newline at end of file
diff --git a/sessions/session_5T2ONUCW6WPWA2WN3IWFL4O52VTNCRYSR2XH2TGFTMDZFWXIG5DA b/sessions/session_5T2ONUCW6WPWA2WN3IWFL4O52VTNCRYSR2XH2TGFTMDZFWXIG5DA
new file mode 100644
index 0000000..fbbe688
--- /dev/null
+++ b/sessions/session_5T2ONUCW6WPWA2WN3IWFL4O52VTNCRYSR2XH2TGFTMDZFWXIG5DA
@@ -0,0 +1 @@
+MTY1MTY1MDgyMXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwtNDxPyD59Y9CBHfAh54_pGb0xED5BrnS12WfwMbrHxQ==
\ No newline at end of file
diff --git a/sessions/session_62R6NSVAZ4V5CYTRXOVYZECRWZUCZEAIRPSTCZGXYLC34EGW35UA b/sessions/session_62R6NSVAZ4V5CYTRXOVYZECRWZUCZEAIRPSTCZGXYLC34EGW35UA
new file mode 100644
index 0000000..04cf7f4
--- /dev/null
+++ b/sessions/session_62R6NSVAZ4V5CYTRXOVYZECRWZUCZEAIRPSTCZGXYLC34EGW35UA
@@ -0,0 +1 @@
+MTY1MTY2NTQ2M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyBdgjcvRGhK6JnTrLlQETdtrVHCfqXHN9UWI5yMVsMTg==
\ No newline at end of file
diff --git a/sessions/session_6PK42HAHEW3KNLDLCRDTHB75S4TEX6PVVUP2N7J6SMYJFHQVXKRA b/sessions/session_6PK42HAHEW3KNLDLCRDTHB75S4TEX6PVVUP2N7J6SMYJFHQVXKRA
new file mode 100644
index 0000000..c22b05e
--- /dev/null
+++ b/sessions/session_6PK42HAHEW3KNLDLCRDTHB75S4TEX6PVVUP2N7J6SMYJFHQVXKRA
@@ -0,0 +1 @@
+MTY1MTU4MjEyNXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXz6W0gwBf2X0RyprFJTaSBL1JLYgGYkXgcIh29Db_gJpw==
\ No newline at end of file
diff --git a/sessions/session_6TLKV2MOWHYYNYCVXB7LVY5FIICSTBQQXZW2CWOHDIPANPGYHT6A b/sessions/session_6TLKV2MOWHYYNYCVXB7LVY5FIICSTBQQXZW2CWOHDIPANPGYHT6A
new file mode 100644
index 0000000..c10b74a
--- /dev/null
+++ b/sessions/session_6TLKV2MOWHYYNYCVXB7LVY5FIICSTBQQXZW2CWOHDIPANPGYHT6A
@@ -0,0 +1 @@
+MTY1Mjk3Mzc2OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18ONHNYhjemKmcTQ56VURz0wNePYzECS31waCtlRhCu78=
\ No newline at end of file
diff --git a/sessions/session_7EOL2BAZHG3ZUZLTHYGZUMDYHWKCQWKWLPXWWIKTPUYJVCDLGDEQ b/sessions/session_7EOL2BAZHG3ZUZLTHYGZUMDYHWKCQWKWLPXWWIKTPUYJVCDLGDEQ
new file mode 100644
index 0000000..103c671
--- /dev/null
+++ b/sessions/session_7EOL2BAZHG3ZUZLTHYGZUMDYHWKCQWKWLPXWWIKTPUYJVCDLGDEQ
@@ -0,0 +1 @@
+MTY1MTY1MDk3M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyYBQByVjLbJZ2x4QafNqgpp-n6kCesEB6BNfoXvq-1ig==
\ No newline at end of file
diff --git a/sessions/session_7SJ7SPUN5RFU5ZGZRAZ3SEJ2KUP2CSP4QECUGZGPMRCSMBRQO3GA b/sessions/session_7SJ7SPUN5RFU5ZGZRAZ3SEJ2KUP2CSP4QECUGZGPMRCSMBRQO3GA
new file mode 100644
index 0000000..a98f5dc
--- /dev/null
+++ b/sessions/session_7SJ7SPUN5RFU5ZGZRAZ3SEJ2KUP2CSP4QECUGZGPMRCSMBRQO3GA
@@ -0,0 +1 @@
+MTY1MTY1MDcxMHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzPyoA6p6szfVSUU-zkLkOCK4zfP6gZq5orisMvUYEDuA==
\ No newline at end of file
diff --git a/sessions/session_AFFDNWBJOTXS2YMK672M2AXHRAI42P4OLDD5LZABGIM6AQEAEJBQ b/sessions/session_AFFDNWBJOTXS2YMK672M2AXHRAI42P4OLDD5LZABGIM6AQEAEJBQ
new file mode 100644
index 0000000..ea8f109
--- /dev/null
+++ b/sessions/session_AFFDNWBJOTXS2YMK672M2AXHRAI42P4OLDD5LZABGIM6AQEAEJBQ
@@ -0,0 +1 @@
+MTY1MTU3NDg2NnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXy1hayYz7EXP5XMGKWMk_wssR8J1BlbjDrxaakLbTIh1Q==
\ No newline at end of file
diff --git a/sessions/session_AM7QEQGIKNMMCNDO6QXK6U2FU3QZMPHCTZ3A3BUTBZFRY72DYL2Q b/sessions/session_AM7QEQGIKNMMCNDO6QXK6U2FU3QZMPHCTZ3A3BUTBZFRY72DYL2Q
new file mode 100644
index 0000000..e7fbfa6
--- /dev/null
+++ b/sessions/session_AM7QEQGIKNMMCNDO6QXK6U2FU3QZMPHCTZ3A3BUTBZFRY72DYL2Q
@@ -0,0 +1 @@
+MTY1MTY2NTYyMXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXx7IIV8mOmTS0o0qjO2cO8ESW-joxUKV1YJS3-WHMUsFw==
\ No newline at end of file
diff --git a/sessions/session_AWEYPIRVN7RT4OGTVMJH2TWPCGMJRTVZ3F6XWKKYFPH5IYGMJUAQ b/sessions/session_AWEYPIRVN7RT4OGTVMJH2TWPCGMJRTVZ3F6XWKKYFPH5IYGMJUAQ
new file mode 100644
index 0000000..148026e
--- /dev/null
+++ b/sessions/session_AWEYPIRVN7RT4OGTVMJH2TWPCGMJRTVZ3F6XWKKYFPH5IYGMJUAQ
@@ -0,0 +1 @@
+MTY1MTY1MDYzOXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwcSl56VFVQxQEhpD-LhkTqwgcmHgnPsmyT5kMXen_-1A==
\ No newline at end of file
diff --git a/sessions/session_BT6AN4HUUOR7VGIIWRFBV6B5BWV6HRU2XJHJ3RSFVHVU3GMLQNRA b/sessions/session_BT6AN4HUUOR7VGIIWRFBV6B5BWV6HRU2XJHJ3RSFVHVU3GMLQNRA
new file mode 100644
index 0000000..8a45c38
--- /dev/null
+++ b/sessions/session_BT6AN4HUUOR7VGIIWRFBV6B5BWV6HRU2XJHJ3RSFVHVU3GMLQNRA
@@ -0,0 +1 @@
+MTY1MTY3NDA3NnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18EL_WCkeFjFbdJfyQGOSGVdIiX90CG6tvNZGdzl-mz2Y=
\ No newline at end of file
diff --git a/sessions/session_CDRQNDZHLEB4MO7GSRM3QAQDEYDLRHBKXICKH7MDDNDWYTV64F6Q b/sessions/session_CDRQNDZHLEB4MO7GSRM3QAQDEYDLRHBKXICKH7MDDNDWYTV64F6Q
new file mode 100644
index 0000000..6c9c8f3
--- /dev/null
+++ b/sessions/session_CDRQNDZHLEB4MO7GSRM3QAQDEYDLRHBKXICKH7MDDNDWYTV64F6Q
@@ -0,0 +1 @@
+MTY1MTU3NDk0NnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXyOhGtdUodGwIpp0X9-g40AHGjmu3wvk-AU00RFNBkUuA==
\ No newline at end of file
diff --git a/sessions/session_E6VT4WGWFWSOLUHU53D3RWLHTTXUPSFB4J4VQE2QFG723N4BLGJA b/sessions/session_E6VT4WGWFWSOLUHU53D3RWLHTTXUPSFB4J4VQE2QFG723N4BLGJA
new file mode 100644
index 0000000..fe69c9b
--- /dev/null
+++ b/sessions/session_E6VT4WGWFWSOLUHU53D3RWLHTTXUPSFB4J4VQE2QFG723N4BLGJA
@@ -0,0 +1 @@
+MTY1MTY3NDQ4OXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18eF3jTQqiTGwMrs-jtADV7OUSEV_wRzjg4EPnsC3tODw=
\ No newline at end of file
diff --git a/sessions/session_EB46622OEKIPTV4OAPVKF6X6LI7ZPO7SFZKETIVKGYGJSW54UVYA b/sessions/session_EB46622OEKIPTV4OAPVKF6X6LI7ZPO7SFZKETIVKGYGJSW54UVYA
new file mode 100644
index 0000000..ccd1a32
--- /dev/null
+++ b/sessions/session_EB46622OEKIPTV4OAPVKF6X6LI7ZPO7SFZKETIVKGYGJSW54UVYA
@@ -0,0 +1 @@
+MTY1MTY1MTEwMXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXz5N5DorLr_UFgR8-PWyhwNcuD4pxzodlbWGkz7ANTDeA==
\ No newline at end of file
diff --git a/sessions/session_ERYS7GZAEBKR56OQQGR7YZZOYONTAHFEZW67UB2HEQFRJO5PJSMA b/sessions/session_ERYS7GZAEBKR56OQQGR7YZZOYONTAHFEZW67UB2HEQFRJO5PJSMA
new file mode 100644
index 0000000..2957b7e
--- /dev/null
+++ b/sessions/session_ERYS7GZAEBKR56OQQGR7YZZOYONTAHFEZW67UB2HEQFRJO5PJSMA
@@ -0,0 +1 @@
+MTY1MTY1MDc0NnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXxXvX5_tBpv8gObNjrYH-KN7qp4tSGZ9725DdUo6qCe7g==
\ No newline at end of file
diff --git a/sessions/session_FEJKPOH3U5WZEA6EINXK2VNYWXU4T7V3D24LG4D2ZLOFQABTHBRA b/sessions/session_FEJKPOH3U5WZEA6EINXK2VNYWXU4T7V3D24LG4D2ZLOFQABTHBRA
new file mode 100644
index 0000000..6ad6dca
--- /dev/null
+++ b/sessions/session_FEJKPOH3U5WZEA6EINXK2VNYWXU4T7V3D24LG4D2ZLOFQABTHBRA
@@ -0,0 +1 @@
+MTY1MTY1MTE0OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwcVGMp_v68wUnLRiSrd_xE_xurHal0es8Gxhq2FwOz4A==
\ No newline at end of file
diff --git a/sessions/session_I4OYHOQRKU2M26ZNU4CGPHEZU57NGGIP6R7GU4IDHKV6GVGWTPOQ b/sessions/session_I4OYHOQRKU2M26ZNU4CGPHEZU57NGGIP6R7GU4IDHKV6GVGWTPOQ
new file mode 100644
index 0000000..840ebee
--- /dev/null
+++ b/sessions/session_I4OYHOQRKU2M26ZNU4CGPHEZU57NGGIP6R7GU4IDHKV6GVGWTPOQ
@@ -0,0 +1 @@
+MTY1MTY3MzkwNHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18rYkgKtXvBGRfxZ9HaRsSscZ2QAXjFu9Y9b1pwoeu-B0=
\ No newline at end of file
diff --git a/sessions/session_JPSFHBZ7MM46A2E2BCDFIGAVRAP7BG4EQCCONDIDTHNUJBT76L7A b/sessions/session_JPSFHBZ7MM46A2E2BCDFIGAVRAP7BG4EQCCONDIDTHNUJBT76L7A
new file mode 100644
index 0000000..7a75e23
--- /dev/null
+++ b/sessions/session_JPSFHBZ7MM46A2E2BCDFIGAVRAP7BG4EQCCONDIDTHNUJBT76L7A
@@ -0,0 +1 @@
+MTY1MTY1MDE0NXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXxt8__tXjZbcAc0ZhuT_1Ae991kPMs2j823Shb1IgUMhw==
\ No newline at end of file
diff --git a/sessions/session_K7DKOSNKUKZSROQZNDR5AN757OY5WUGSWFDJQMBY6P5PZVAPXSBQ b/sessions/session_K7DKOSNKUKZSROQZNDR5AN757OY5WUGSWFDJQMBY6P5PZVAPXSBQ
new file mode 100644
index 0000000..d9fde93
--- /dev/null
+++ b/sessions/session_K7DKOSNKUKZSROQZNDR5AN757OY5WUGSWFDJQMBY6P5PZVAPXSBQ
@@ -0,0 +1 @@
+MTY1MTY1MDc0N3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzQxs1oG1_iJaION26ztr96l3eyW0Bm6hvMT6X9wucpzw==
\ No newline at end of file
diff --git a/sessions/session_KDF323BEFA5WVGFPWYV6MG72SY4FZ7MD2DTSX3HOHGDTYA62KDXA b/sessions/session_KDF323BEFA5WVGFPWYV6MG72SY4FZ7MD2DTSX3HOHGDTYA62KDXA
new file mode 100644
index 0000000..04a19ab
--- /dev/null
+++ b/sessions/session_KDF323BEFA5WVGFPWYV6MG72SY4FZ7MD2DTSX3HOHGDTYA62KDXA
@@ -0,0 +1 @@
+MTY1MTY3MzE2M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18XfrVpy5QOn89OAXXX_p5Om024hdVvn9DzpOVBUOKfTc=
\ No newline at end of file
diff --git a/sessions/session_KLO2YVFC4T6YASNO2OC5SPOICP4OQK5OBM3FSBJUBKFEO3MPWTDA b/sessions/session_KLO2YVFC4T6YASNO2OC5SPOICP4OQK5OBM3FSBJUBKFEO3MPWTDA
new file mode 100644
index 0000000..148026e
--- /dev/null
+++ b/sessions/session_KLO2YVFC4T6YASNO2OC5SPOICP4OQK5OBM3FSBJUBKFEO3MPWTDA
@@ -0,0 +1 @@
+MTY1MTY1MDYzOXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwcSl56VFVQxQEhpD-LhkTqwgcmHgnPsmyT5kMXen_-1A==
\ No newline at end of file
diff --git a/sessions/session_KUB3WD4PHGUYSKYL347DK7G2MX5SEWLNY75LN7M2SVSGIT2AFYRA b/sessions/session_KUB3WD4PHGUYSKYL347DK7G2MX5SEWLNY75LN7M2SVSGIT2AFYRA
new file mode 100644
index 0000000..ee8f27d
--- /dev/null
+++ b/sessions/session_KUB3WD4PHGUYSKYL347DK7G2MX5SEWLNY75LN7M2SVSGIT2AFYRA
@@ -0,0 +1 @@
+MTY1MTU4MjE3OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXyzrYkoEMyAeckMlz8wT3gRi8kpbicHZdXjmaYCSYEbTQ==
\ No newline at end of file
diff --git a/sessions/session_M6JG6ZZLXRVOH2SZZSV5KLODK7VTQO2RR6SH7D5VSP4XQWIEMEOA b/sessions/session_M6JG6ZZLXRVOH2SZZSV5KLODK7VTQO2RR6SH7D5VSP4XQWIEMEOA
new file mode 100644
index 0000000..aab8c5b
--- /dev/null
+++ b/sessions/session_M6JG6ZZLXRVOH2SZZSV5KLODK7VTQO2RR6SH7D5VSP4XQWIEMEOA
@@ -0,0 +1 @@
+MTY1MTY3NDA3N3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT188eytn4LgdEMhXv4tFo0JNWC070N3GUuIsRNEYTyvx5c=
\ No newline at end of file
diff --git a/sessions/session_N7JWN2CJR2HS5MA3BQQ2V6ENMUYBN5I5FXTUWXT5MQKF3ZWDWB7A b/sessions/session_N7JWN2CJR2HS5MA3BQQ2V6ENMUYBN5I5FXTUWXT5MQKF3ZWDWB7A
new file mode 100644
index 0000000..a98f5dc
--- /dev/null
+++ b/sessions/session_N7JWN2CJR2HS5MA3BQQ2V6ENMUYBN5I5FXTUWXT5MQKF3ZWDWB7A
@@ -0,0 +1 @@
+MTY1MTY1MDcxMHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzPyoA6p6szfVSUU-zkLkOCK4zfP6gZq5orisMvUYEDuA==
\ No newline at end of file
diff --git a/sessions/session_NLWDNJO6TW6J4HJFYPP644JWNZ2MWKP3BCAHPYY54CCQD3Y7OMPQ b/sessions/session_NLWDNJO6TW6J4HJFYPP644JWNZ2MWKP3BCAHPYY54CCQD3Y7OMPQ
new file mode 100644
index 0000000..47e6b08
--- /dev/null
+++ b/sessions/session_NLWDNJO6TW6J4HJFYPP644JWNZ2MWKP3BCAHPYY54CCQD3Y7OMPQ
@@ -0,0 +1 @@
+MTY1MTY1MDE1MnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzM8T4GoEMSqIe8zK2A6wn67v1nguMDHjUUo-yjKjNfcQ==
\ No newline at end of file
diff --git a/sessions/session_O5KNM3FBU4BH223M4JWALUG22YFPWBDVZAE6YPDZDNNGHYHCXRUQ b/sessions/session_O5KNM3FBU4BH223M4JWALUG22YFPWBDVZAE6YPDZDNNGHYHCXRUQ
new file mode 100644
index 0000000..c5b0915
--- /dev/null
+++ b/sessions/session_O5KNM3FBU4BH223M4JWALUG22YFPWBDVZAE6YPDZDNNGHYHCXRUQ
@@ -0,0 +1 @@
+MTY1MTY1MDM2MXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXx7XIYKo0HoZNY_DZVwi9ellyBp7o7V2gvM9Vb0pUli3Q==
\ No newline at end of file
diff --git a/sessions/session_OW62I4OF4ACEFP4WOR6UTNWF3B3DVL3X2CVC4CERVL5BS47QH37A b/sessions/session_OW62I4OF4ACEFP4WOR6UTNWF3B3DVL3X2CVC4CERVL5BS47QH37A
new file mode 100644
index 0000000..b2c54a9
--- /dev/null
+++ b/sessions/session_OW62I4OF4ACEFP4WOR6UTNWF3B3DVL3X2CVC4CERVL5BS47QH37A
@@ -0,0 +1 @@
+MTY1MTY1MDk3MnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwR9evf4tXU9hUpH4hw_D6l7w4n0j-1Vf16locrZWzLFQ==
\ No newline at end of file
diff --git a/sessions/session_PTTWVR7PPUCB3ZQGZLM7PN2Z7MROB5PGGGQUF2OYUBLTULZUARBQ b/sessions/session_PTTWVR7PPUCB3ZQGZLM7PN2Z7MROB5PGGGQUF2OYUBLTULZUARBQ
new file mode 100644
index 0000000..7a79fd4
--- /dev/null
+++ b/sessions/session_PTTWVR7PPUCB3ZQGZLM7PN2Z7MROB5PGGGQUF2OYUBLTULZUARBQ
@@ -0,0 +1 @@
+MTY1MTY3MzE2MnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18br434P_axalM2X4F6b6cEEkrCpk8OnhOsjp85410v0c=
\ No newline at end of file
diff --git a/sessions/session_QGFMDHC7HQ6TOYKHME2YCZBXNLGZXMFO352WOBJZHBUX7LWQP7WQ b/sessions/session_QGFMDHC7HQ6TOYKHME2YCZBXNLGZXMFO352WOBJZHBUX7LWQP7WQ
new file mode 100644
index 0000000..ca67caf
--- /dev/null
+++ b/sessions/session_QGFMDHC7HQ6TOYKHME2YCZBXNLGZXMFO352WOBJZHBUX7LWQP7WQ
@@ -0,0 +1 @@
+MTY1MTY2NTQ2MnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyfWEkkjK48q8lwLJEJSc7cQXbRGdDabcUHO9FVZID_5w==
\ No newline at end of file
diff --git a/sessions/session_RG23AZ3IK2MKRVFHSWSRUSA4TJJRDNLJT6LUQIILOIVCGLXQ2GDQ b/sessions/session_RG23AZ3IK2MKRVFHSWSRUSA4TJJRDNLJT6LUQIILOIVCGLXQ2GDQ
new file mode 100644
index 0000000..dc7b971
--- /dev/null
+++ b/sessions/session_RG23AZ3IK2MKRVFHSWSRUSA4TJJRDNLJT6LUQIILOIVCGLXQ2GDQ
@@ -0,0 +1 @@
+MTY1MTY0OTk3OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXz0n4VX35X4e92mOLcdNVwHgoxgzHHGs7fSQ33yrgyMbA==
\ No newline at end of file
diff --git a/sessions/session_S3P4NOGEK2MEEIX7VYXULXSVJWCMSP36PTX6ZRFPKKQ4EVNZT3HA b/sessions/session_S3P4NOGEK2MEEIX7VYXULXSVJWCMSP36PTX6ZRFPKKQ4EVNZT3HA
new file mode 100644
index 0000000..f4690a2
--- /dev/null
+++ b/sessions/session_S3P4NOGEK2MEEIX7VYXULXSVJWCMSP36PTX6ZRFPKKQ4EVNZT3HA
@@ -0,0 +1 @@
+MTY1MTY1MDM1M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzkpY_PPKBue5Qf7ZOP3tDQATS2rujJjRsNsVHTEL94lQ==
\ No newline at end of file
diff --git a/sessions/session_SAKZEOSKH7CZG4AX4H3H6WFPTSUWBEEZ6DR7U3MABCZ6FHJHD4EQ b/sessions/session_SAKZEOSKH7CZG4AX4H3H6WFPTSUWBEEZ6DR7U3MABCZ6FHJHD4EQ
new file mode 100644
index 0000000..42c564b
--- /dev/null
+++ b/sessions/session_SAKZEOSKH7CZG4AX4H3H6WFPTSUWBEEZ6DR7U3MABCZ6FHJHD4EQ
@@ -0,0 +1 @@
+MTY1Mjk3MTY3NHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT1808avPSF-CPY2M9KO1Gx-opThsHsrJxKGaUPR7BZp9WQ=
\ No newline at end of file
diff --git a/sessions/session_UHWXL6OYXIDM3GF3BO7VPAA2ENSZB2E5EPHJSZNKXBUSNGZUYVXA b/sessions/session_UHWXL6OYXIDM3GF3BO7VPAA2ENSZB2E5EPHJSZNKXBUSNGZUYVXA
new file mode 100644
index 0000000..a98f5dc
--- /dev/null
+++ b/sessions/session_UHWXL6OYXIDM3GF3BO7VPAA2ENSZB2E5EPHJSZNKXBUSNGZUYVXA
@@ -0,0 +1 @@
+MTY1MTY1MDcxMHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzPyoA6p6szfVSUU-zkLkOCK4zfP6gZq5orisMvUYEDuA==
\ No newline at end of file
diff --git a/sessions/session_V23JVQEAVT7JQ4CVDAYZW22CMP32RJX7HJCJXPOACNO6G2CYW3FQ b/sessions/session_V23JVQEAVT7JQ4CVDAYZW22CMP32RJX7HJCJXPOACNO6G2CYW3FQ
new file mode 100644
index 0000000..7307ad7
--- /dev/null
+++ b/sessions/session_V23JVQEAVT7JQ4CVDAYZW22CMP32RJX7HJCJXPOACNO6G2CYW3FQ
@@ -0,0 +1 @@
+MTY1MTU3NzQwOXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXwP-FCJdqMaFJIxqG_AYodOb2iE8gguAw2E3W5WVu4v8g==
\ No newline at end of file
diff --git a/sessions/session_VC2DOHLIKHWKI7H56PBXSKMNUDKN3G5SU4DI2F7H24QOBFOREMPA b/sessions/session_VC2DOHLIKHWKI7H56PBXSKMNUDKN3G5SU4DI2F7H24QOBFOREMPA
new file mode 100644
index 0000000..0934d84
--- /dev/null
+++ b/sessions/session_VC2DOHLIKHWKI7H56PBXSKMNUDKN3G5SU4DI2F7H24QOBFOREMPA
@@ -0,0 +1 @@
+MTY1MTY3NDE5MnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18gUD_A631PFOBncH-QOxKbkmt0xtW6Fgug3qcEUfijcA=
\ No newline at end of file
diff --git a/sessions/session_VMJK4NYHE7NCTJXFLIVVCPXMYDHH34VNUDNRXTVZUOW6AG6KMAYA b/sessions/session_VMJK4NYHE7NCTJXFLIVVCPXMYDHH34VNUDNRXTVZUOW6AG6KMAYA
new file mode 100644
index 0000000..08cab09
--- /dev/null
+++ b/sessions/session_VMJK4NYHE7NCTJXFLIVVCPXMYDHH34VNUDNRXTVZUOW6AG6KMAYA
@@ -0,0 +1 @@
+MTY1MTY1MTEwMnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXxgHRdZoPZBE0kDMmtyHrzAaMfiKhlGdCF47u58n45cSw==
\ No newline at end of file
diff --git a/sessions/session_WDRHZ2KMEQFKWU2SUENV2QJE7OAS5G753NXGLNTMSMGKZN6T5VPQ b/sessions/session_WDRHZ2KMEQFKWU2SUENV2QJE7OAS5G753NXGLNTMSMGKZN6T5VPQ
new file mode 100644
index 0000000..5cda282
--- /dev/null
+++ b/sessions/session_WDRHZ2KMEQFKWU2SUENV2QJE7OAS5G753NXGLNTMSMGKZN6T5VPQ
@@ -0,0 +1 @@
+MTY1MTY3NDE5M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18Cyx59YJB_tTb2EBULWXlfVECSpk1iqkG-odREjbKGsc=
\ No newline at end of file
diff --git a/sessions/session_WK7OTUXQA2QQ3ZKAOVAAUJEHLXUP74LOZLIQYCC4K6RBR52S3VJA b/sessions/session_WK7OTUXQA2QQ3ZKAOVAAUJEHLXUP74LOZLIQYCC4K6RBR52S3VJA
new file mode 100644
index 0000000..a98f5dc
--- /dev/null
+++ b/sessions/session_WK7OTUXQA2QQ3ZKAOVAAUJEHLXUP74LOZLIQYCC4K6RBR52S3VJA
@@ -0,0 +1 @@
+MTY1MTY1MDcxMHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzPyoA6p6szfVSUU-zkLkOCK4zfP6gZq5orisMvUYEDuA==
\ No newline at end of file
diff --git a/sessions/session_WOEUHQ3G4PHD3CYBOBOMZBPWPNMH4Z76NBWIVBW6M4COAI3LGFUA b/sessions/session_WOEUHQ3G4PHD3CYBOBOMZBPWPNMH4Z76NBWIVBW6M4COAI3LGFUA
new file mode 100644
index 0000000..ab42326
--- /dev/null
+++ b/sessions/session_WOEUHQ3G4PHD3CYBOBOMZBPWPNMH4Z76NBWIVBW6M4COAI3LGFUA
@@ -0,0 +1 @@
+MTY1MTU4MjQzNXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXw8cY50NHs9S6zCZtQkXsjSnr7Wv1O2LJ1X2cLAjybXIA==
\ No newline at end of file
diff --git a/sessions/session_WPCIBDCHZE5JRW63FLJMWIQO4CUDQKHAT7LRKI6NX3L5IEK7JUIQ b/sessions/session_WPCIBDCHZE5JRW63FLJMWIQO4CUDQKHAT7LRKI6NX3L5IEK7JUIQ
new file mode 100644
index 0000000..aedb4aa
--- /dev/null
+++ b/sessions/session_WPCIBDCHZE5JRW63FLJMWIQO4CUDQKHAT7LRKI6NX3L5IEK7JUIQ
@@ -0,0 +1 @@
+MTY1MTU4MTg5MHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXzKFszom5pRA96lq3Lb2fT6iDLQL1sguZ3xph75DDNpCQ==
\ No newline at end of file
diff --git a/sessions/session_XJBTRO567AVFAQ2WCFTIKXBUAB5SOUKFAJBHIND5KYGOUZTRN63Q b/sessions/session_XJBTRO567AVFAQ2WCFTIKXBUAB5SOUKFAJBHIND5KYGOUZTRN63Q
new file mode 100644
index 0000000..6ad6dca
--- /dev/null
+++ b/sessions/session_XJBTRO567AVFAQ2WCFTIKXBUAB5SOUKFAJBHIND5KYGOUZTRN63Q
@@ -0,0 +1 @@
+MTY1MTY1MTE0OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwcVGMp_v68wUnLRiSrd_xE_xurHal0es8Gxhq2FwOz4A==
\ No newline at end of file
diff --git a/sessions/session_XYA6WKM6HS3QKBZ52AWBOP2HZGGMWRYTEGF342OLFZEY4LPGVBOA b/sessions/session_XYA6WKM6HS3QKBZ52AWBOP2HZGGMWRYTEGF342OLFZEY4LPGVBOA
new file mode 100644
index 0000000..4dd8fc7
--- /dev/null
+++ b/sessions/session_XYA6WKM6HS3QKBZ52AWBOP2HZGGMWRYTEGF342OLFZEY4LPGVBOA
@@ -0,0 +1 @@
+MTY1MTY1MDgxOXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyD0OzJ2XvmQTfT3cln5USKo4wbM01lrwy_1tkmotJG-w==
\ No newline at end of file
diff --git a/sessions/session_YF6R3ISD2GJEWTDEUECQCGOWHQK6V4A6ZXBS4RY26YP4CTAS3RWA b/sessions/session_YF6R3ISD2GJEWTDEUECQCGOWHQK6V4A6ZXBS4RY26YP4CTAS3RWA
new file mode 100644
index 0000000..5cda282
--- /dev/null
+++ b/sessions/session_YF6R3ISD2GJEWTDEUECQCGOWHQK6V4A6ZXBS4RY26YP4CTAS3RWA
@@ -0,0 +1 @@
+MTY1MTY3NDE5M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18Cyx59YJB_tTb2EBULWXlfVECSpk1iqkG-odREjbKGsc=
\ No newline at end of file
diff --git a/sessions/session_Z2XFBHVFTN5PFTFE4EKUOHAFXFFSMFV6Y6ZKGHALVCRFPDIO5Y5A b/sessions/session_Z2XFBHVFTN5PFTFE4EKUOHAFXFFSMFV6Y6ZKGHALVCRFPDIO5Y5A
new file mode 100644
index 0000000..49ee7ea
--- /dev/null
+++ b/sessions/session_Z2XFBHVFTN5PFTFE4EKUOHAFXFFSMFV6Y6ZKGHALVCRFPDIO5Y5A
@@ -0,0 +1 @@
+MTY1MTY3MzQwNHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18UB3CM0FYHNdONL4rdGwb5t1aFPoJvD0sQsEEM4YJxHo=
\ No newline at end of file
diff --git a/sessions/session_Z4Z4Z3OTX5MRS6LSH4OOFRXXRS43ORN4IWKA2UZS4XPF2UQGAEIQ b/sessions/session_Z4Z4Z3OTX5MRS6LSH4OOFRXXRS43ORN4IWKA2UZS4XPF2UQGAEIQ
new file mode 100644
index 0000000..a98f5dc
--- /dev/null
+++ b/sessions/session_Z4Z4Z3OTX5MRS6LSH4OOFRXXRS43ORN4IWKA2UZS4XPF2UQGAEIQ
@@ -0,0 +1 @@
+MTY1MTY1MDcxMHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzPyoA6p6szfVSUU-zkLkOCK4zfP6gZq5orisMvUYEDuA==
\ No newline at end of file
diff --git a/sessions/session_Z5X7VSGT3OX325O2CMYWFP3XG47UXNJYABEUCEAHLEJICJCVDEBA b/sessions/session_Z5X7VSGT3OX325O2CMYWFP3XG47UXNJYABEUCEAHLEJICJCVDEBA
new file mode 100644
index 0000000..7d0ccb5
--- /dev/null
+++ b/sessions/session_Z5X7VSGT3OX325O2CMYWFP3XG47UXNJYABEUCEAHLEJICJCVDEBA
@@ -0,0 +1 @@
+MTY1MTY3MzkwM3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT184E0y_hLsOmZ_gsWkLUJ_O2Xo6AGbJfaUboiHww2JZoM=
\ No newline at end of file
diff --git a/sessions/session_ZJP34TMF5TATX5ICE55RPJC7T56QRPRIEGP2CVCBXFNXZEFFUXAQ b/sessions/session_ZJP34TMF5TATX5ICE55RPJC7T56QRPRIEGP2CVCBXFNXZEFFUXAQ
new file mode 100644
index 0000000..a982f24
--- /dev/null
+++ b/sessions/session_ZJP34TMF5TATX5ICE55RPJC7T56QRPRIEGP2CVCBXFNXZEFFUXAQ
@@ -0,0 +1 @@
+MTY1MTY3MzMwM3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18XAWDOQNDSejAMWM96plPufODrSs0R38IJWaPlh7NpZc=
\ No newline at end of file
diff --git a/sessions/session_ZKCXBFJADOVSBHKPH6PLFCJXMS3WKGTUDKXVYPU3BKAQPVO3YRYQ b/sessions/session_ZKCXBFJADOVSBHKPH6PLFCJXMS3WKGTUDKXVYPU3BKAQPVO3YRYQ
new file mode 100644
index 0000000..4f6eff0
--- /dev/null
+++ b/sessions/session_ZKCXBFJADOVSBHKPH6PLFCJXMS3WKGTUDKXVYPU3BKAQPVO3YRYQ
@@ -0,0 +1 @@
+MTY1Mjk3MjEwMnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18EA6m0QoNTA0TT7IkJ-AfPqtOHKKazFKMpf5FQI2Xr6A=
\ No newline at end of file
diff --git a/snctf.db b/snctf.db
new file mode 100644
index 0000000000000000000000000000000000000000..1461359e4a2dd5b80c13a71102b154140e07192c
GIT binary patch
literal 65536
zcmeI*U1%f60SEA%-POm+md3;g;U2En3I-dSi#{yNf;K(hRXt2>-<@NV9x2$ntC77#
z(%xy;=NxSwa(6A1J{JmwmbCBfQ~HunN}fXLLsLRX@(?Io+cXeJTJC5d51HAOudUb~)2mLiZg_fL8j%Q*F6g=>NwfTKg#WdNC-{Wg
zp5d?L&~&%SS?T=qnRw!R5)G+R;-86o@#(}fiLVU56Z^yPE82HruY{Z0O!Q$$4VSxZ
z0?Q!)0SNr>1nxYYh@{5G$i3%0!>qA}NF0borS2pyu&6O2>b8Y$BW_hk>M9=nWEUj;pzs)1HBKD49ISr3BydX}W
zpiO3Ytg>bB(8qJvGv?Lx<<+J2>-sb0>(ioa`qJjcmE|=qvszx;n2E<`W@$L}jWHtG
zjS73wy;r4zEHSa9%!_MpD
z)bb*3!>F^gcEo;=N)u6C%W3ksCsGyhsx@OLNU~=Ih@chbT21?gXFH7nV;G)iSi5!6
zI{Z@gO~T^MW5;RUK8DaYo@ea1117O+H@rc^-m+br?~MnI^_%5yEp4uB=$U>w>fd0q
z@o=g<(XGLDTHIEyGnvQ^4;Cfci4wnaQH!KfDRR&9Te|DiZZUrpJKDniWxZRszu*1a
zZaYBxOz(+3_9QJcZJjuVyJyyI?=%OO{#7*-3#Y!G>Q+@g-B#9r8M?b3iKHec$q$^s
zTja`h`5xov&!37OlkWuS&CmBhz7L-Exb8<5^>E@Ngzi_yDWdsD7X1W0Nl?HWC*1e>
zq3_gHFH+R|*MB}5PF6Ow$3{e
zw!@lp+j}l+idx#%J@%qEx9x{ISbwOTLCl$%J24VTC6natzMr1hfcTS-q~>pT`*>oW
z^8#zMQ#zjV4a0T!ohHv*kP}un>{@%qs8;QoZHWH6y~uL*8ea2udv>3hE`Q_Hp53)8
z6_Hk_pr+Aiu)`(ym{H$4Vqpbu@eW05IyJt<_BQ?lMx6UAiFYOXGx|0Df&l^$fB*y_
z009U<00Izz00ba#rUXnSA+07?r{eK=G#XW-*=lZK-emK|d6s8|LN3pW3xz_dxM-E;
z^DJj%bNK?xW{irJFU^-sqfjzTlNAJ3m0zQJa0L5)A`NFw#?HQ
zU462hhEZHB77N*8exX=cC{^dHJgLP@&d3za#Rb#M^Z0`#(MjRei`&F6#bhf5%__27
zrZivS8!u!`X5{kKOresoEUQ#x%=B|OKoSQjJSooqW%`jsAMglYzQ-pqKmY;|fB*y_
z009U<00Izz00bcLhzmqQij-WnT}x9HY3x$-_6^U8DT;J%o!w$hmxX0T8oj#T2owJL
z95Z9QJR$m)MBk@x(NF1L=x2|30g*ijKmY;|fB*y_009U<00Izz00j6Q6_g|q=l`LY
zGDd>)e|1PXM_T9qN<8
zyZm-|{P(47u6RDff3jvX_dt*I32{Xa_X(lvq23{~?~JP=#Kb{94re0!^Kqru>gc%K
zV|C`Y*Twh$qx4UQuK%YW(0BO)3=n_-1Rwwb2tWV=5P$##AOHafJi-Fv+Wu%%
zj3fMJfP{p@V%+ume_j$oAMoe@J;Fso)*t`@2tWV=5P$##AOHafKmY;|IJtmELi~aQ
zm0#g-MST8GD8K$6SNxyc5iuYD0SG_<0uX=z1Rwwb2tWV=XF$Ne{~yn%O!p=FJ3hhy
z0SG_<0uX=z1Rwwb2tWV=5P-m!DR5aHl9FcZ>gunV0_h
z>W@DB^^gDli=Xi4^jW*idckhYxo)%Cp7xmQJxzwBF?nh#nLL-&f(WfmweDxo*~s61
z`YRD(b@|y#!LqrA(_rHBf0;h?zyJSb77*Kl00bZa0SG_<0uX=z1Rwwb2teTfEg