From ce402ef828ec82f1c3f8c53a0fe151b75ebf0f6a Mon Sep 17 00:00:00 2001 From: bangae1 Date: Thu, 18 Dec 2025 23:03:26 +0900 Subject: [PATCH] first --- .gitignore | 38 + .../통합결재 목록(관리자&부서)조회.http | 6 + .../통합결재 승인목록(본인)조회.http | 6 + api/approval/가격조사 결재 상태 변경.http | 16 + api/business/비밀번호 변경.http | 12 + api/business/회원가입.http | 13 + api/business/회원정보 수정.http | 12 + api/business/회원탈퇴.http | 5 + api/contract/계약관리 상세조회.http | 4 + api/contract/계약관리 조회(페이징).http | 5 + api/contract/계약관리수정.http | 22 + api/contract/계약관리저장.http | 21 + api/dtlSpec/상세규격 엑셀업로드.http | 8 + api/estimate/견적서(첨부파일) 삭제.http | 4 + api/estimate/견적수정.http | 24 + api/estimate/견적저장.http | 28 + api/estimate/견적조회.http | 6 + api/login/사업자로그인.http | 10 + .../(외부)가격조사_견적관리 조회(페이징).http | 6 + api/price_survey/가격조사상세조회.http | 4 + api/price_survey/가격조사수정.http | 54 + api/price_survey/가격조사수정_Test.http | 46 + api/price_survey/가격조사완료처리.http | 4 + api/price_survey/가격조사저장.http | 66 + api/price_survey/가격조사조회(페이징).http | 5 + api/price_survey/가격조사회수.http | 3 + api/sapAppr/sap결재상태 변경.http | 10 + api/sapAppr/sap협조 (신규결재) 저장.http | 33 + ...시전표수정(결재만 수정가능 그외 삭제).http | 47 + api/slip/임시전표저장.http | 71 + build.gradle | 94 ++ fileToByte.html | 31 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 249 ++++ gradlew.bat | 92 ++ log.config.path_IS_UNDEFINED/err_log.log | 0 .../log.config.filename_IS_UNDEFINED.log | 1271 +++++++++++++++++ readme.md | 1 + settings.gradle | 1 + src/main/java/com/kospo/drm/Application.java | 21 + .../drm/config/CorsPreflightHandler.java | 19 + .../config/exception/CustomErrorResponse.java | 21 + .../exception/CustomExceptionHandler.java | 132 ++ .../kospo/drm/config/exception/ErrorCode.java | 65 + .../CustomBasicAuthenticationFilter.java | 102 ++ .../drm/config/filter/LoggingFilter.java | 18 + .../filter/SecurityExceptionFilter.java | 104 ++ .../drm/config/jasypt/JasyptConfigAES.java | 33 + .../drm/config/jwt/JwtRequestFilter.java | 54 + .../com/kospo/drm/config/jwt/JwtUtil.java | 172 +++ .../drm/config/security/PasswordEncoder.java | 40 + .../drm/config/security/SecurityConfig.java | 114 ++ .../security/SecurityWebInitializer.java | 6 + .../drm/config/swagger/SwaggerConfig.java | 45 + .../kospo/drm/config/utils/CommonUtils.java | 144 ++ .../kospo/drm/config/utils/CryptoUtil.java | 89 ++ .../com/kospo/drm/config/utils/FileUtils.java | 70 + .../com/kospo/drm/config/utils/XmlUtils.java | 42 + .../kospo/drm/controller/DrmController.java | 89 ++ .../com/kospo/drm/dto/req/DrmRequest.java | 30 + .../com/kospo/drm/dto/req/TokenRequest.java | 17 + .../com/kospo/drm/dto/res/DrmResponse.java | 31 + .../com/kospo/drm/dto/res/TokenResponse.java | 40 + .../kospo/drm/exception/CustomException.java | 14 + .../exception/CustomExpireTokenException.java | 7 + .../CustomMalformedJwtException.java | 7 + .../drm/exception/CustomMessageException.java | 25 + .../exception/CustomNoAccountException.java | 7 + .../CustomNoMatchTokenException.java | 7 + .../exception/CustomNoResultException.java | 7 + .../exception/CustomNoSameIpException.java | 7 + .../drm/exception/CustomNoTokenException.java | 7 + src/main/java/com/kospo/drm/model/Token.java | 33 + .../java/com/kospo/drm/model/TokenId.java | 45 + .../kospo/drm/repository/TokenRepository.java | 8 + .../com/kospo/drm/service/DrmService.java | 8 + .../com/kospo/drm/service/TokenService.java | 8 + .../drm/service/impl/DrmServiceImpl.java | 56 + .../drm/service/impl/TokenServiceImpl.java | 53 + .../servlet/http/HttpServletRequest.java | 5 + .../servlet/http/HttpServletResponse.java | 5 + .../java/javax/servlet/http/HttpSession.java | 4 + .../java/javax/servlet/http/HttpUtils.java | 135 ++ .../javax/servlet/http/ServletException.java | 4 + src/main/java/jwtSample.java | 27 + src/main/resources/application-dev.yml | 79 + src/main/resources/application-local.yml | 79 + src/main/resources/application-prod.yml | 79 + src/main/resources/application.yml | 3 + src/main/resources/logback-dev.properties | 4 + src/main/resources/logback-prod.properties | 4 + src/main/resources/logback-spring.xml | 144 ++ src/main/resources/private.key | Bin 0 -> 1217 bytes src/main/resources/public.key | Bin 0 -> 294 bytes 95 files changed, 4704 insertions(+) create mode 100644 .gitignore create mode 100644 api/IntegratedAppr/통합결재 목록(관리자&부서)조회.http create mode 100644 api/IntegratedAppr/통합결재 승인목록(본인)조회.http create mode 100644 api/approval/가격조사 결재 상태 변경.http create mode 100644 api/business/비밀번호 변경.http create mode 100644 api/business/회원가입.http create mode 100644 api/business/회원정보 수정.http create mode 100644 api/business/회원탈퇴.http create mode 100644 api/contract/계약관리 상세조회.http create mode 100644 api/contract/계약관리 조회(페이징).http create mode 100644 api/contract/계약관리수정.http create mode 100644 api/contract/계약관리저장.http create mode 100644 api/dtlSpec/상세규격 엑셀업로드.http create mode 100644 api/estimate/견적서(첨부파일) 삭제.http create mode 100644 api/estimate/견적수정.http create mode 100644 api/estimate/견적저장.http create mode 100644 api/estimate/견적조회.http create mode 100644 api/login/사업자로그인.http create mode 100644 api/price_survey/(외부)가격조사_견적관리 조회(페이징).http create mode 100644 api/price_survey/가격조사상세조회.http create mode 100644 api/price_survey/가격조사수정.http create mode 100644 api/price_survey/가격조사수정_Test.http create mode 100644 api/price_survey/가격조사완료처리.http create mode 100644 api/price_survey/가격조사저장.http create mode 100644 api/price_survey/가격조사조회(페이징).http create mode 100644 api/price_survey/가격조사회수.http create mode 100644 api/sapAppr/sap결재상태 변경.http create mode 100644 api/sapAppr/sap협조 (신규결재) 저장.http create mode 100644 api/slip/임시전표수정(결재만 수정가능 그외 삭제).http create mode 100644 api/slip/임시전표저장.http create mode 100644 build.gradle create mode 100644 fileToByte.html create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 log.config.path_IS_UNDEFINED/err_log.log create mode 100644 log.config.path_IS_UNDEFINED/log.config.filename_IS_UNDEFINED.log create mode 100644 readme.md create mode 100644 settings.gradle create mode 100644 src/main/java/com/kospo/drm/Application.java create mode 100644 src/main/java/com/kospo/drm/config/CorsPreflightHandler.java create mode 100644 src/main/java/com/kospo/drm/config/exception/CustomErrorResponse.java create mode 100644 src/main/java/com/kospo/drm/config/exception/CustomExceptionHandler.java create mode 100644 src/main/java/com/kospo/drm/config/exception/ErrorCode.java create mode 100644 src/main/java/com/kospo/drm/config/filter/CustomBasicAuthenticationFilter.java create mode 100644 src/main/java/com/kospo/drm/config/filter/LoggingFilter.java create mode 100644 src/main/java/com/kospo/drm/config/filter/SecurityExceptionFilter.java create mode 100644 src/main/java/com/kospo/drm/config/jasypt/JasyptConfigAES.java create mode 100644 src/main/java/com/kospo/drm/config/jwt/JwtRequestFilter.java create mode 100644 src/main/java/com/kospo/drm/config/jwt/JwtUtil.java create mode 100644 src/main/java/com/kospo/drm/config/security/PasswordEncoder.java create mode 100644 src/main/java/com/kospo/drm/config/security/SecurityConfig.java create mode 100644 src/main/java/com/kospo/drm/config/security/SecurityWebInitializer.java create mode 100644 src/main/java/com/kospo/drm/config/swagger/SwaggerConfig.java create mode 100644 src/main/java/com/kospo/drm/config/utils/CommonUtils.java create mode 100644 src/main/java/com/kospo/drm/config/utils/CryptoUtil.java create mode 100644 src/main/java/com/kospo/drm/config/utils/FileUtils.java create mode 100644 src/main/java/com/kospo/drm/config/utils/XmlUtils.java create mode 100644 src/main/java/com/kospo/drm/controller/DrmController.java create mode 100644 src/main/java/com/kospo/drm/dto/req/DrmRequest.java create mode 100644 src/main/java/com/kospo/drm/dto/req/TokenRequest.java create mode 100644 src/main/java/com/kospo/drm/dto/res/DrmResponse.java create mode 100644 src/main/java/com/kospo/drm/dto/res/TokenResponse.java create mode 100644 src/main/java/com/kospo/drm/exception/CustomException.java create mode 100644 src/main/java/com/kospo/drm/exception/CustomExpireTokenException.java create mode 100644 src/main/java/com/kospo/drm/exception/CustomMalformedJwtException.java create mode 100644 src/main/java/com/kospo/drm/exception/CustomMessageException.java create mode 100644 src/main/java/com/kospo/drm/exception/CustomNoAccountException.java create mode 100644 src/main/java/com/kospo/drm/exception/CustomNoMatchTokenException.java create mode 100644 src/main/java/com/kospo/drm/exception/CustomNoResultException.java create mode 100644 src/main/java/com/kospo/drm/exception/CustomNoSameIpException.java create mode 100644 src/main/java/com/kospo/drm/exception/CustomNoTokenException.java create mode 100644 src/main/java/com/kospo/drm/model/Token.java create mode 100644 src/main/java/com/kospo/drm/model/TokenId.java create mode 100644 src/main/java/com/kospo/drm/repository/TokenRepository.java create mode 100644 src/main/java/com/kospo/drm/service/DrmService.java create mode 100644 src/main/java/com/kospo/drm/service/TokenService.java create mode 100644 src/main/java/com/kospo/drm/service/impl/DrmServiceImpl.java create mode 100644 src/main/java/com/kospo/drm/service/impl/TokenServiceImpl.java create mode 100644 src/main/java/javax/servlet/http/HttpServletRequest.java create mode 100644 src/main/java/javax/servlet/http/HttpServletResponse.java create mode 100644 src/main/java/javax/servlet/http/HttpSession.java create mode 100644 src/main/java/javax/servlet/http/HttpUtils.java create mode 100644 src/main/java/javax/servlet/http/ServletException.java create mode 100644 src/main/java/jwtSample.java create mode 100644 src/main/resources/application-dev.yml create mode 100644 src/main/resources/application-local.yml create mode 100644 src/main/resources/application-prod.yml create mode 100644 src/main/resources/application.yml create mode 100644 src/main/resources/logback-dev.properties create mode 100644 src/main/resources/logback-prod.properties create mode 100644 src/main/resources/logback-spring.xml create mode 100644 src/main/resources/private.key create mode 100644 src/main/resources/public.key diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c5e7300 --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ +/logs/ diff --git a/api/IntegratedAppr/통합결재 목록(관리자&부서)조회.http b/api/IntegratedAppr/통합결재 목록(관리자&부서)조회.http new file mode 100644 index 0000000..65b0725 --- /dev/null +++ b/api/IntegratedAppr/통합결재 목록(관리자&부서)조회.http @@ -0,0 +1,6 @@ +### GET request to example server +GET http://localhost:8010/api/itg/appr?page=1&row=10 +sabun: psn14020 + + +### \ No newline at end of file diff --git a/api/IntegratedAppr/통합결재 승인목록(본인)조회.http b/api/IntegratedAppr/통합결재 승인목록(본인)조회.http new file mode 100644 index 0000000..ac34ab8 --- /dev/null +++ b/api/IntegratedAppr/통합결재 승인목록(본인)조회.http @@ -0,0 +1,6 @@ +### GET request to example server +GET http://localhost:8010/api/itg/appr/req?page=1&row=10 +sabun: 17131303 + + +### \ No newline at end of file diff --git a/api/approval/가격조사 결재 상태 변경.http b/api/approval/가격조사 결재 상태 변경.http new file mode 100644 index 0000000..5344430 --- /dev/null +++ b/api/approval/가격조사 결재 상태 변경.http @@ -0,0 +1,16 @@ +PUT http://localhost:8010//api/appr +sabun: 17131304 +Content-Type: application/json + +{ + "apprNo": "APPR-0000000040", + "apprOrd": 4, + "sabun": "17131304", + "apprStatCd": "0200", + "reason": "" +} + +### + +#APPR-20250519017,20,17131303,김진형,0000,결재요청 +#APPR-20250519017,30,17131304,손원장,0000,결재요청 diff --git a/api/business/비밀번호 변경.http b/api/business/비밀번호 변경.http new file mode 100644 index 0000000..c420f3f --- /dev/null +++ b/api/business/비밀번호 변경.http @@ -0,0 +1,12 @@ +PUT http://localhost:8010//api/business/password +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OCIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk4IiwiaWF0IjoxNzQ2MDEyNjcyLCJleHAiOjE3NDYwMTI5NzJ9.RaT9wa3_8oPeL6nWv1_uM6QlY1mcHyCN2tC6sP_N03w +Content-Type: application/json + +{ + "bizNo": "999-99-99998", + "oldPwd": "kospo2025!", + "pwd": "kospo2024!", + "rePwd": "kospo2024!" +} + +### \ No newline at end of file diff --git a/api/business/회원가입.http b/api/business/회원가입.http new file mode 100644 index 0000000..30142f8 --- /dev/null +++ b/api/business/회원가입.http @@ -0,0 +1,13 @@ +POST http://localhost:8010//api/business +Content-Type: application/json + +{ + "bizNo": "999-99-99998", + "pwd": "kospo2025!", + "rePwd": "kospo2025!", + "compNm": "테스트2", + "repNm": "테스트2", + "email": "bangae1@gmail.com" +} + +### \ No newline at end of file diff --git a/api/business/회원정보 수정.http b/api/business/회원정보 수정.http new file mode 100644 index 0000000..97cc678 --- /dev/null +++ b/api/business/회원정보 수정.http @@ -0,0 +1,12 @@ +PUT http://localhost:8010//api/business +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OCIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk4IiwiaWF0IjoxNzQ2MDEyNjcyLCJleHAiOjE3NDYwMTI5NzJ9.RaT9wa3_8oPeL6nWv1_uM6QlY1mcHyCN2tC6sP_N03w +Content-Type: application/json + +{ + "bizNo": "999-99-99998", + "compNm": "테스트3", + "repNm": "테스트3", + "email": "bangae3@gmail.com" +} + +### \ No newline at end of file diff --git a/api/business/회원탈퇴.http b/api/business/회원탈퇴.http new file mode 100644 index 0000000..c271610 --- /dev/null +++ b/api/business/회원탈퇴.http @@ -0,0 +1,5 @@ +DELETE http://localhost:8010//api/business/999-99-99998 +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OCIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk4IiwiaWF0IjoxNzQ2MDEyNjcyLCJleHAiOjE3NDYwMTI5NzJ9.RaT9wa3_8oPeL6nWv1_uM6QlY1mcHyCN2tC6sP_N03w +Content-Type: application/json + +### \ No newline at end of file diff --git a/api/contract/계약관리 상세조회.http b/api/contract/계약관리 상세조회.http new file mode 100644 index 0000000..6e05089 --- /dev/null +++ b/api/contract/계약관리 상세조회.http @@ -0,0 +1,4 @@ +### GET request to example server +GET http://localhost:8010/api/cont/CONT-0000000005 + +### \ No newline at end of file diff --git a/api/contract/계약관리 조회(페이징).http b/api/contract/계약관리 조회(페이징).http new file mode 100644 index 0000000..dc69532 --- /dev/null +++ b/api/contract/계약관리 조회(페이징).http @@ -0,0 +1,5 @@ +### GET request to example server +GET http://localhost:8010/api/cont/page + ?cateStatCd=&signSdt=&signEdt=&page=1&row=10 + +### \ No newline at end of file diff --git a/api/contract/계약관리수정.http b/api/contract/계약관리수정.http new file mode 100644 index 0000000..7e124d3 --- /dev/null +++ b/api/contract/계약관리수정.http @@ -0,0 +1,22 @@ +PUT http://localhost:8010/api/cont +Content-Type: application/json + +{ + "contNo": "CONT-20250526009", + "bizNo": "999-99-99999", + "prcsNo": "PRCS-20250522034", + "compNm": "영창피아노", + "contAmt": 100010, + "signDt": "2025-05-26", + "contSdat": "2025-06-01", + "contEdat": "2025-06-06", + "contAtts": [ + { + "logiFnm": "계약서12.pdf", + "fileOrd": 1, + "data": "aWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjA==" + } + ] +} + +### \ No newline at end of file diff --git a/api/contract/계약관리저장.http b/api/contract/계약관리저장.http new file mode 100644 index 0000000..9683918 --- /dev/null +++ b/api/contract/계약관리저장.http @@ -0,0 +1,21 @@ +POST http://localhost:8010/api/cont +Content-Type: application/json + +{ + "bizNo": "999-99-99999", + "prcsNo": "PRCS-20250522034", + "compNm": "영창피아노", + "contAmt": 100000, + "signDt": "2025-05-26", + "contSdat": "2025-06-01", + "contEdat": "2025-06-06", + "contAtts": [ + { + "logiFnm": "계약서.pdf", + "fileOrd": 1, + "data": "aWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjA==" + } + ] +} + +### \ No newline at end of file diff --git a/api/dtlSpec/상세규격 엑셀업로드.http b/api/dtlSpec/상세규격 엑셀업로드.http new file mode 100644 index 0000000..5251053 --- /dev/null +++ b/api/dtlSpec/상세규격 엑셀업로드.http @@ -0,0 +1,8 @@ +POST https://svcm.hmsn.ink/api/dtl/excel +Content-Type: application/json + +{ + "data": "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" +} + +### \ No newline at end of file diff --git a/api/estimate/견적서(첨부파일) 삭제.http b/api/estimate/견적서(첨부파일) 삭제.http new file mode 100644 index 0000000..94be556 --- /dev/null +++ b/api/estimate/견적서(첨부파일) 삭제.http @@ -0,0 +1,4 @@ +DELETE http://localhost:8010/api/bid/BID-0000000009/1 +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OSIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk5IiwiaWF0IjoxNzQ1NTkwNjQ3LCJleHAiOjE3NDU1OTA5NDd9.a9nwoQTDV702VbU0HnP1jS8SGhFi_3UjkjdBcjoDzCE + +### \ No newline at end of file diff --git a/api/estimate/견적수정.http b/api/estimate/견적수정.http new file mode 100644 index 0000000..75ecbfc --- /dev/null +++ b/api/estimate/견적수정.http @@ -0,0 +1,24 @@ +PUT http://localhost:8010/api/estimate +Content-Type: application/json +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OSIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk5IiwiaWF0IjoxNzQ3MDQ4NDI5LCJleHAiOjE3NDcwNTAyMjl9.6SzI3eiNVmXOz1s1p8ab26fT80rbSJBfoDlKLQ4z5Sg + +{ + "estimates": [ + { + "estNo": "EST-0000000003", + "mngNm": "조진우", + "unitPrc": 2, + "amt": 40000 + }, + { + "estNo": "EST-0000000004", + "mngNm": "조진우", + "unitPrc": 12, + "amt": 60000 + } + ], + "pbAtts": [] +} + + +### \ No newline at end of file diff --git a/api/estimate/견적저장.http b/api/estimate/견적저장.http new file mode 100644 index 0000000..dc460af --- /dev/null +++ b/api/estimate/견적저장.http @@ -0,0 +1,28 @@ +POST http://localhost:8010/api/estimate +Content-Type: application/json +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6IjExMS0xMS0xMTExMSIsImlwIjoiMTgyLjIyNy4xNS45MiIsInN1YiI6IjExMS0xMS0xMTExMSIsImlhdCI6MTc0NzY0MDcxMCwiZXhwIjoxNzQ3NjQyNTEwfQ.nUFFdX1nZ_-n_TLzZbfHLIOEbt0swKcGPOQ1nR_2MzI + +{ + "estimates": [ + { + "bizNo": "111-11-11111", + "prcsNo": "PRCS-20250519017", + "dtlSpNo": "DTL-0000000036", + "mngNm": "테스트1", + "unitPrc": 2, + "amt": 70000 + } + ], + "pbAtts": [ + { + "logiFnm": "text1.pdf", + "data": "aWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjA==" + }, + { + "logiFnm": "text1.pdf", + "data": "aWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjA==" + } + ] +} + +### \ No newline at end of file diff --git a/api/estimate/견적조회.http b/api/estimate/견적조회.http new file mode 100644 index 0000000..dbdc097 --- /dev/null +++ b/api/estimate/견적조회.http @@ -0,0 +1,6 @@ +### GET request to example server +GET http://localhost:8010/api/estimate + ?prcsNo=PRCS-0000000006 +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OSIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk5IiwiaWF0IjoxNzQ3MDQ4NDI5LCJleHAiOjE3NDcwNTAyMjl9.6SzI3eiNVmXOz1s1p8ab26fT80rbSJBfoDlKLQ4z5Sg + +### \ No newline at end of file diff --git a/api/login/사업자로그인.http b/api/login/사업자로그인.http new file mode 100644 index 0000000..ad04291 --- /dev/null +++ b/api/login/사업자로그인.http @@ -0,0 +1,10 @@ +### GET request to example server +POST http://localhost:8010/api/login +Content-Type: application/json + +{ + "bizNo": "111-11-11111", + "pwd": "kospo2025!" +} + +### \ No newline at end of file diff --git a/api/price_survey/(외부)가격조사_견적관리 조회(페이징).http b/api/price_survey/(외부)가격조사_견적관리 조회(페이징).http new file mode 100644 index 0000000..c8496a1 --- /dev/null +++ b/api/price_survey/(외부)가격조사_견적관리 조회(페이징).http @@ -0,0 +1,6 @@ +### GET request to example server +GET http://localhost:8010/api/prcs/external/page + ?cateCd=&stCd=®Nm=®Sdt=®Edt=&page=1&row=10 +Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJiaXpObyI6Ijk5OS05OS05OTk5OSIsImlwIjoiMTI3LjAuMC4xIiwic3ViIjoiOTk5LTk5LTk5OTk5IiwiaWF0IjoxNzQ2MDEzMjAwLCJleHAiOjE3NDYwMTM1MDB9.2mSDvhpXtvkYHeRr_d1tiKvnSU0OGehBq0ce1AOvXnE + +### \ No newline at end of file diff --git a/api/price_survey/가격조사상세조회.http b/api/price_survey/가격조사상세조회.http new file mode 100644 index 0000000..786861c --- /dev/null +++ b/api/price_survey/가격조사상세조회.http @@ -0,0 +1,4 @@ +### GET request to example server +GET http://localhost:8010/api/prcs/PRCS-20250523052 + +### \ No newline at end of file diff --git a/api/price_survey/가격조사수정.http b/api/price_survey/가격조사수정.http new file mode 100644 index 0000000..5e3c717 --- /dev/null +++ b/api/price_survey/가격조사수정.http @@ -0,0 +1,54 @@ +PUT http://localhost:8010//api/prcs +Content-Type: application/json + +{ + "prcsNo": "PRCS-20250530003", + "cateCd": "0200", + "title": "가격조사 결재 테스트", + "content": "시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n", + "regSdat": "2025-04-01", + "regEdat": "2025-07-30", + "prvYn": false, + "prvRsn": "", + "prvPwd": "", + "aiYn": false, + "prcsAtts": [ + ], + "dtlSpecs": [ + ], + "apprReqs": [ + { + "gubunCd": "", + "apprNo": "APPR-0000000066", + "sabun": "psn14020", + "name": "조진우", + "attendCd": "" + }, + { + "gubunCd": "0100", + "apprNo": "APPR-0000000066", + "sabun": "17131303", + "name": "김진형", + "attendCd": "" + }, + { + "gubunCd": "0200", + "apprNo": "APPR-0000000066", + "sabun": "17131304", + "name": "손원장", + "attendCd": "01" + } + ], + "prcsBizs": [ + { + "bizNo": "999-99-99999", + "email": "bangae2@gmail.com" + }, + { + "bizNo": "111-11-11111", + "email": "bangae1@gmail.com" + } + ] +} + +### \ No newline at end of file diff --git a/api/price_survey/가격조사수정_Test.http b/api/price_survey/가격조사수정_Test.http new file mode 100644 index 0000000..4dcd5c0 --- /dev/null +++ b/api/price_survey/가격조사수정_Test.http @@ -0,0 +1,46 @@ +PUT https://svcm.hmsn.ink//api/prcs +Content-Type: application/json + +{ + "prcsNo": "PRCS-20250521023", + "cateCd": "0000", + "title": "4층 파티션 구매123", + "content": "싼거 찾아요123", + "regSdat": "2025-05-01", + "regEdat": "2025-05-03", + "prvYn": true, + "prvRsn": "", + "prvPwd": "", + "aiYn": true, + "prcsBizs": [ + { + "bizNo": "999-99-99999", + "email": "aa@gmail.com" + }, + { + "bizNo": "111-11-11111", + "email": "bb@gmail.com" + } + ], + "prcsAtts": [], + "apprReqs": [ + { + "gubunCd": "0000", + "sabun": "psn14020", + "name": "조진우", + "apprNo": "APPR-0000000023", + "apprOrd": 1, + "attendCd": null + }, + { + "gubunCd": "0100", + "sabun": "15000007", + "name": "조용식", + "apprNo": "APPR-0000000023", + "apprOrd": 2, + "attendCd": null + } + ] +} + +### \ No newline at end of file diff --git a/api/price_survey/가격조사완료처리.http b/api/price_survey/가격조사완료처리.http new file mode 100644 index 0000000..4fe3f6b --- /dev/null +++ b/api/price_survey/가격조사완료처리.http @@ -0,0 +1,4 @@ +PUT http://localhost:8010/api/prcs/survey/PRCS-20250526039 +Content-Type: application/json + +### \ No newline at end of file diff --git a/api/price_survey/가격조사저장.http b/api/price_survey/가격조사저장.http new file mode 100644 index 0000000..4022c83 --- /dev/null +++ b/api/price_survey/가격조사저장.http @@ -0,0 +1,66 @@ +POST http://localhost:8010//api/prcs +Content-Type: application/json + +{ + "cateCd": "0100", + "title": "가격조사 결재 테스트", + "content": "시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n시나리오테스트입니다.\n", + "regSdat": "2025-04-01", + "regEdat": "2025-05-22", + "prvYn": false, + "prvRsn": "", + "prvPwd": "", + "aiYn": false, + "prcsAtts": [ + { + "logiFnm": "text1.pdf", + "data": "aWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjGlkIDcyMiDquYzsp4Ag7JmE66OMaWQgNzIyIOq5jOyngCDsmYTro4xpZCA3MjIg6rmM7KeAIOyZhOujjA==" + } + ], + "dtlSpecs": [ + { + "itemNm": "철판", + "spec": "3*6 (914*1829)", + "unit": "1.6T", + "qty": 3 + } + ], + "apprReqs": [ + { + "gubunCd": "", + "sabun": "psn14020", + "name": "조진우", + "attendCd": "" + }, + { + "gubunCd": "0100", + "sabun": "psn25226", + "name": "김건", + "attendCd": "" + }, + { + "gubunCd": "0100", + "sabun": "17131303", + "name": "김진형", + "attendCd": "" + }, + { + "gubunCd": "0200", + "sabun": "17131304", + "name": "손원장", + "attendCd": "" + } + ], + "prcsBizs": [ + { + "bizNo": "999-99-99999", + "email": "aa@gmail.com" + }, + { + "bizNo": "111-11-11111", + "email": "bb@gmail.com" + } + ] +} + +### \ No newline at end of file diff --git a/api/price_survey/가격조사조회(페이징).http b/api/price_survey/가격조사조회(페이징).http new file mode 100644 index 0000000..a15752f --- /dev/null +++ b/api/price_survey/가격조사조회(페이징).http @@ -0,0 +1,5 @@ +### GET request to example server +GET http://localhost:8010/api/prcs/page + ?cateCd=&stCd=®Nm=®Sdt=®Edt=&page=1&row=10 + +### \ No newline at end of file diff --git a/api/price_survey/가격조사회수.http b/api/price_survey/가격조사회수.http new file mode 100644 index 0000000..db2ff1b --- /dev/null +++ b/api/price_survey/가격조사회수.http @@ -0,0 +1,3 @@ +PUT http://localhost:8010/api/prcs/ret/PRCS-20250522037 +Content-Type: application/json +### \ No newline at end of file diff --git a/api/sapAppr/sap결재상태 변경.http b/api/sapAppr/sap결재상태 변경.http new file mode 100644 index 0000000..deed74a --- /dev/null +++ b/api/sapAppr/sap결재상태 변경.http @@ -0,0 +1,10 @@ +PUT http://localhost:8010/api/sap/appr +sabun: 17131303 +Content-Type: application/json + +{ + "wkfid": "FI2025900017", + "wkfsq": 2, + "bname": "17131303", + "wkfst": "A" +} \ No newline at end of file diff --git a/api/sapAppr/sap협조 (신규결재) 저장.http b/api/sapAppr/sap협조 (신규결재) 저장.http new file mode 100644 index 0000000..fe27822 --- /dev/null +++ b/api/sapAppr/sap협조 (신규결재) 저장.http @@ -0,0 +1,33 @@ +POST http://localhost:8010/api/sap/appr +sabun: 15000062 +Content-Type: application/json + +{ + "wkfid": "FI2025900017", + "apprs": [ + { + "label": "협조", + "value": [ + { + "lineclsf": "Q", + "bname": "15000062", + "abscd": "", + "grpid": 2 + }, + { + "lineclsf": "I", + "bname": "15000057", + "abscd": "", + "grpid": 2 + }, + { + "lineclsf": "A", + "bname": "15000056", + "abscd": "", + "grpid": 2 + } + ] + } + ] +} + diff --git a/api/slip/임시전표수정(결재만 수정가능 그외 삭제).http b/api/slip/임시전표수정(결재만 수정가능 그외 삭제).http new file mode 100644 index 0000000..8905579 --- /dev/null +++ b/api/slip/임시전표수정(결재만 수정가능 그외 삭제).http @@ -0,0 +1,47 @@ +PUT http://localhost:8010/api/slip +Content-Type: application/json + +{ + "contNo": "CONT-20250527037", + "zwf0011t": { + "belnr": "0604103229", + "wkfid": "FI2025900014", + "apprs": [ + { + "label": "결재", + "value": [ + { + "lineclsf": "Q", + "bname": "psn14020", + "abscd": "" + }, + { + "lineclsf": "I", + "bname": "17131303", + "abscd": "" + }, + { + "lineclsf": "I", + "bname": "15000004", + "abscd": "A" + }, + { + "lineclsf": "E", + "bname": "15000037", + "abscd": "" + }, + { + "lineclsf": "E", + "bname": "15000062", + "abscd": "" + }, + { + "lineclsf": "A", + "bname": "15000005", + "abscd": "" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/api/slip/임시전표저장.http b/api/slip/임시전표저장.http new file mode 100644 index 0000000..d87509a --- /dev/null +++ b/api/slip/임시전표저장.http @@ -0,0 +1,71 @@ +POST http://localhost:8010/api/slip +Content-Type: application/json + +{ + "contNo": "CONT-20250527037", + "bldat": "20250501", + "budat": "20250502", + "waers": "KRW", + "bktxt": "전표 생성 테스트1", + "lifnr": "999-99-99999", + "wrbtr": "1203", + "mwskz": "V4", + "gsber": "1000", + "bupla": "1000", + "zterm": "PF00", + "banks": "KR", + "bankl": "012", + "bankn": "3510876657453", + "hkont": "5366010", + "wrbtrS": "1102", + "kostl": "12330", + "projk": "", + "trtGubun": "11", + "txBillSeq": "202503231", + "slipAtts": [ + { + "logiFnm": "sapApprTest.pdf", + "data": "4paR4paS4paT4paI4pa6IFdpbmRvd3MgWC1MaXRlIOKXhOKWiOKWk+KWkuKWkQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K4oCiIEN1c3RvbSBXaW5kb3dzIEJ1aWxkcyBkZXNpZ25lZCB0byBCcmVhdGhlIE5ldyBMaWZlIGludG8geW91ciBQQyENCuKAoiBTbWFsbGVyLCBMaWdodGVyLCBGYXN0ZXIgYW5kIE1vcmUgUmVzcG9uc2l2ZS4NCuKAoiBFbmhhbmNlZCBQcml2YWN5LCBBY2Nlc3NpYmlsaXR5IGFuZCBDb250cm9sLg0K4oCiIDEwMCUgQ2xlYW4uIDEwMCUgU2FmZS4gMTAwJSBPcHRpbWl6ZWQuDQrigKIgQXJlIFlvdSBSZWFkeSBUbyBUYWtlIFlvdXIgV2luZG93cyBleHBlcmllbmNlIHRvIHRoZSBOZXh0IExldmVsIT8NCg0KICDimJEgQ09NRSBWSVNJVCBVUyEg4piRDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCuKeoe+4jyBodHRwczovL3dpbmRvd3N4bGl0ZS5jb20NCuKeoe+4jyBodHRwczovL3d3dy55b3V0dWJlLmNvbS9AV2luZG93c1gtTGl0ZQ0K4p6h77iPIGh0dHBzOi8va28tZmkuY29tL3dpbmRvd3N4bGl0ZQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQrinaTvuI8gWW91IGNhbiBIZWxwIFN1cHBvcnQgVGhpcyBQcm9qZWN0IGJ5IERvbmF0aW5nIQ0K4p6h77iPIGh0dHBzOi8va28tZmkuY29tL3dpbmRvd3N4bGl0ZQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQrinaTvuI8gWW91IENhbiBIZWxwIFN1cHBvcnQgVGhpcyBQcm9qZWN0IGJ5IERpc2FibGluZyBBZCBCbG9ja2Vycw0KYW5kIGNsaWNraW5nIGFkcyB0aGF0IGludGVyZXN0IHlvdSB3aGlsZSB2aXNpdGluZyBvdXIgV2Vic2l0ZSBhbmQgb3VyIFlvdVR1YmUgQ2hhbm5lbCENCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K4p6h77iPIFRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0LCBhbmQgZm9yIGJlaW5nIGEgcGFydCBvZiBvdXIgY29tbXVuaXR5IQ0K4p6h77iPIFlvdXJzIFRydWx5IC0gRkJDb25hbiAmIFRoZSBXaW5kb3dzIFgtTGl0ZSBUZWFtDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg==" + } + ], + "zwf0011t": { + "wkftx": "결재 테스트 11", + "apprs": [ + { + "label": "결재", + "value": [ + { + "lineclsf": "Q", + "bname": "psn14020", + "abscd": "" + }, + { + "lineclsf": "I", + "bname": "17131303", + "abscd": "" + }, + { + "lineclsf": "I", + "bname": "15000004", + "abscd": "A" + }, + { + "lineclsf": "E", + "bname": "15000037", + "abscd": "" + }, + { + "lineclsf": "E", + "bname": "15000062", + "abscd": "" + }, + { + "lineclsf": "A", + "bname": "15000005", + "abscd": "" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..83d6923 --- /dev/null +++ b/build.gradle @@ -0,0 +1,94 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '3.3.2' + id 'io.spring.dependency-management' version '1.1.6' +} + +group = 'com.kospo' +version = '0.0.1-SNAPSHOT' + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +configurations { + compileOnly { + extendsFrom annotationProcessor + } +} + +repositories { + mavenCentral() +} +ext['queryDslVersion'] = '5.0.0' + + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-data-rest' + implementation 'org.springframework.boot:spring-boot-starter-web-services' + implementation 'org.springframework.boot:spring-boot-starter-security' + implementation 'org.springframework.boot:spring-boot-starter-reactor-netty' + implementation 'org.springframework.boot:spring-boot-starter-mail' + implementation 'org.springframework.retry:spring-retry:2.0.8' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' + + + implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' + implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5' + implementation 'com.github.ulisesbocchio:jasypt-maven-plugin:3.0.5' + + implementation 'org.jetbrains:annotations:24.0.0' + + implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta" + implementation 'org.springframework.boot:spring-boot-starter-actuator' +// annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}" + annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" + annotationProcessor "jakarta.annotation:jakarta.annotation-api" + annotationProcessor "jakarta.persistence:jakarta.persistence-api" + + implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.3' + implementation 'com.fasterxml.jackson.core:jackson-core:2.15.3' + implementation 'com.fasterxml.jackson.core:jackson-annotations:2.15.3' + implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.3' + + implementation 'io.jsonwebtoken:jjwt-api:0.11.5' + runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5' + runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5' + + implementation 'org.apache.poi:poi:5.4.1' + implementation 'org.apache.poi:poi-ooxml:5.4.1' + + implementation 'javax.xml.bind:jaxb-api:2.3.1' + implementation 'org.modelmapper:modelmapper:3.2.0' + implementation 'org.apache.commons:commons-lang3:3.13.0' + implementation 'commons-codec:commons-codec:1.16.0' + implementation 'org.apache.commons:commons-dbcp2:2.10.0' + implementation 'org.apache.commons:commons-pool2:2.12.0' + implementation 'commons-logging:commons-logging:1.2' + implementation 'commons-io:commons-io:2.19.0' + implementation 'org.apache.commons:commons-email:1.5' + implementation 'org.postgresql:postgresql:42.7.3' + + + // https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc10 + implementation 'com.oracle.database.jdbc:ojdbc10:19.27.0.0' + // https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 + implementation 'com.oracle.database.jdbc:ojdbc8:23.8.0.25.04' + // sockjs + + runtimeOnly group: 'io.netty', name: 'netty-resolver-dns-native-macos', version: '4.1.112.Final' + compileOnly 'org.projectlombok:lombok' + developmentOnly 'org.springframework.boot:spring-boot-devtools' + annotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' +} + +tasks.named('test') { + useJUnitPlatform() +} diff --git a/fileToByte.html b/fileToByte.html new file mode 100644 index 0000000..835dab0 --- /dev/null +++ b/fileToByte.html @@ -0,0 +1,31 @@ + + + + + Title + + + + + + \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e6441136f3d4ba8a0da8d277868979cfbc8ad796 GIT binary patch literal 43453 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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
NnX)EH+Nua)3Y(c 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..25da30d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/log.config.path_IS_UNDEFINED/err_log.log b/log.config.path_IS_UNDEFINED/err_log.log new file mode 100644 index 0000000..e69de29 diff --git a/log.config.path_IS_UNDEFINED/log.config.filename_IS_UNDEFINED.log b/log.config.path_IS_UNDEFINED/log.config.filename_IS_UNDEFINED.log new file mode 100644 index 0000000..160c9d2 --- /dev/null +++ b/log.config.path_IS_UNDEFINED/log.config.filename_IS_UNDEFINED.log @@ -0,0 +1,1271 @@ +INFO 25-12-18 23:01:34[restartedMain] [Application:50] - Starting Application using Java 17.0.16 with PID 3004 (D:\IdeaProjects\drm\build\classes\java\main started by bangae1 in D:\IdeaProjects\drm) +DEBUG 25-12-18 23:01:34[restartedMain] [Application:51] - Running with Spring Boot v3.3.2, Spring v6.1.11 +INFO 25-12-18 23:01:34[restartedMain] [Application:660] - The following 1 profile is active: "local" +INFO 25-12-18 23:01:35[restartedMain] [EnableEncryptablePropertiesBeanFactoryPostProcessor:44] - Post-processing PropertySource instances +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:105] - Skipping PropertySource configurationProperties [class org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:105] - Skipping PropertySource servletConfigInitParams [class org.springframework.core.env.PropertySource$StubPropertySource +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:105] - Skipping PropertySource servletContextInitParams [class org.springframework.core.env.PropertySource$StubPropertySource +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableSystemEnvironmentPropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource Config resource 'class path resource [application-local.yml]' via location 'optional:classpath:/' [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource Config resource 'class path resource [application.yml]' via location 'optional:classpath:/' [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource devtools [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper +INFO 25-12-18 23:01:35[restartedMain] [DefaultLazyPropertyFilter:45] - Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter +INFO 25-12-18 23:01:35[restartedMain] [DefaultLazyPropertyResolver:46] - Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver +INFO 25-12-18 23:01:35[restartedMain] [DefaultLazyPropertyDetector:44] - Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector +WARN 25-12-18 23:01:35[restartedMain] [PostProcessorRegistrationDelegate$BeanPostProcessorChecker:429] - Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). The currently created BeanPostProcessor [annotationActionEndpointMapping] is declared through a non-static factory method on that class; consider declaring it as static instead. +INFO 25-12-18 23:01:35[restartedMain] [Http11NioProtocol:173] - Initializing ProtocolHandler ["http-nio-0.0.0.0-8010"] +INFO 25-12-18 23:01:35[restartedMain] [StandardService:173] - Starting service [Tomcat] +INFO 25-12-18 23:01:35[restartedMain] [StandardEngine:173] - Starting Servlet engine: [Apache Tomcat/10.1.26] +INFO 25-12-18 23:01:36[restartedMain] [[/]:173] - Initializing Spring embedded WebApplicationContext +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:974] - Driver class net.sf.log4jdbc.sql.jdbcapi.DriverSpy found in Thread context class loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@19a4ef9f +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - log4jdbc-logj2 properties initialization... +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - Using logger: null +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.debug.stack.prefix is not defined +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.sqltiming.warn.threshold is not defined +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.sqltiming.error.threshold is not defined +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.booleanastruefalse is not defined (using default value false) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.maxlinelength is not defined (using default of 90) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.fulldebugstacktrace is not defined (using default value false) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.statement.warn is not defined (using default value false) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.select is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.insert is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.update is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.delete is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.create is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.dump.sql.addsemicolon is not defined (using default value false) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.auto.load.popular.drivers is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.drivers is not defined +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.trim.sql is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.trim.sql.extrablanklines is not defined (using default value true) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - x log4jdbc.suppress.generated.keys.exception is not defined (using default value false) +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - log4jdbc-logj2 properties initialization done. +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - DriverSpy intialization... +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - FOUND DRIVER oracle.jdbc.OracleDriver +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - FOUND DRIVER oracle.jdbc.driver.OracleDriver +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - FOUND DRIVER org.postgresql.Driver +DEBUG 25-12-18 23:01:36[restartedMain] [debug:372] - DriverSpy intialization done. +INFO 25-12-18 23:01:36[restartedMain] [DefaultLazyEncryptor:41] - Found Custom Encryptor Bean org.jasypt.encryption.pbe.PooledPBEStringEncryptor@19c9ea36 with name: jasyptEncryptorAES +DEBUG 25-12-18 23:01:36[restartedMain] [logging:164] - Logging Provider: org.jboss.logging.Slf4jLoggerProvider found via system property +DEBUG 25-12-18 23:01:36[restartedMain] [LogHelper:102] - PersistenceUnitInfo [ + name: default + persistence provider classname: null + classloader: org.springframework.boot.devtools.restart.classloader.RestartClassLoader@19a4ef9f + excludeUnlistedClasses: true + JTA datasource: null + Non JTA datasource: HikariDataSource (null) + Transaction type: RESOURCE_LOCAL + PU root URL: file:/D:/IdeaProjects/drm/build/classes/java/main/ + Shared Cache Mode: UNSPECIFIED + Validation Mode: AUTO + Jar files URLs [] + Managed classes names [ + com.kospo.drm.model.Token + com.kospo.drm.model.TokenId] + Mapping files names [] + Properties [] +DEBUG 25-12-18 23:01:36[restartedMain] [IntegratorServiceImpl:51] - Adding Integrator [org.hibernate.boot.beanvalidation.BeanValidationIntegrator]. +DEBUG 25-12-18 23:01:36[restartedMain] [IntegratorServiceImpl:51] - Adding Integrator [org.hibernate.cache.internal.CollectionCacheInvalidator]. +INFO 25-12-18 23:01:36[restartedMain] [Version:44] - HHH000412: Hibernate ORM core version 6.5.2.Final +DEBUG 25-12-18 23:01:36[restartedMain] [Environment:163] - HHH000206: 'hibernate.properties' not found +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [uuid2] -> [org.hibernate.id.UUIDGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [guid] -> [org.hibernate.id.GUIDGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [uuid] -> [org.hibernate.id.UUIDHexGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [uuid.hex] -> [org.hibernate.id.UUIDHexGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [assigned] -> [org.hibernate.id.Assigned] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [identity] -> [org.hibernate.id.IdentityGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [select] -> [org.hibernate.id.SelectGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [sequence] -> [org.hibernate.id.enhanced.SequenceStyleGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [increment] -> [org.hibernate.id.IncrementGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [foreign] -> [org.hibernate.id.ForeignGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [enhanced-sequence] -> [org.hibernate.id.enhanced.SequenceStyleGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [factory:172] - Registering IdentifierGenerator strategy [enhanced-table] -> [org.hibernate.id.enhanced.TableGenerator] +DEBUG 25-12-18 23:01:36[restartedMain] [RegionFactoryInitiator:122] - Cannot default RegionFactory based on registered strategies as `[]` RegionFactory strategies were registered +INFO 25-12-18 23:01:36[restartedMain] [RegionFactoryInitiator:50] - HHH000026: Second-level cache disabled +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@184ab4e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration boolean -> org.hibernate.type.BasicTypeReference@184ab4e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Boolean -> org.hibernate.type.BasicTypeReference@184ab4e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration numeric_boolean -> org.hibernate.type.BasicTypeReference@6408227d +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration org.hibernate.type.NumericBooleanConverter -> org.hibernate.type.BasicTypeReference@6408227d +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration true_false -> org.hibernate.type.BasicTypeReference@36a530bb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration org.hibernate.type.TrueFalseConverter -> org.hibernate.type.BasicTypeReference@36a530bb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration yes_no -> org.hibernate.type.BasicTypeReference@1e4e2297 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration org.hibernate.type.YesNoConverter -> org.hibernate.type.BasicTypeReference@1e4e2297 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration byte -> org.hibernate.type.BasicTypeReference@3a3424cb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration byte -> org.hibernate.type.BasicTypeReference@3a3424cb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Byte -> org.hibernate.type.BasicTypeReference@3a3424cb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration binary -> org.hibernate.type.BasicTypeReference@1f0ae23a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration byte[] -> org.hibernate.type.BasicTypeReference@1f0ae23a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration [B -> org.hibernate.type.BasicTypeReference@1f0ae23a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration binary_wrapper -> org.hibernate.type.BasicTypeReference@353988 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration wrapper-binary -> org.hibernate.type.BasicTypeReference@353988 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration image -> org.hibernate.type.BasicTypeReference@6f00e983 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration blob -> org.hibernate.type.BasicTypeReference@74099ad4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.Blob -> org.hibernate.type.BasicTypeReference@74099ad4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_blob -> org.hibernate.type.BasicTypeReference@3cdaad5d +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_blob_wrapper -> org.hibernate.type.BasicTypeReference@150a2a37 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration short -> org.hibernate.type.BasicTypeReference@7dae95e4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration short -> org.hibernate.type.BasicTypeReference@7dae95e4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Short -> org.hibernate.type.BasicTypeReference@7dae95e4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration integer -> org.hibernate.type.BasicTypeReference@45c96fbf +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration int -> org.hibernate.type.BasicTypeReference@45c96fbf +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Integer -> org.hibernate.type.BasicTypeReference@45c96fbf +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration long -> org.hibernate.type.BasicTypeReference@2c90921e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration long -> org.hibernate.type.BasicTypeReference@2c90921e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Long -> org.hibernate.type.BasicTypeReference@2c90921e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration float -> org.hibernate.type.BasicTypeReference@688f4e29 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration float -> org.hibernate.type.BasicTypeReference@688f4e29 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Float -> org.hibernate.type.BasicTypeReference@688f4e29 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration double -> org.hibernate.type.BasicTypeReference@6107e769 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration double -> org.hibernate.type.BasicTypeReference@6107e769 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Double -> org.hibernate.type.BasicTypeReference@6107e769 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration big_integer -> org.hibernate.type.BasicTypeReference@6fbdc861 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.math.BigInteger -> org.hibernate.type.BasicTypeReference@6fbdc861 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration big_decimal -> org.hibernate.type.BasicTypeReference@4795a7ea +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.math.BigDecimal -> org.hibernate.type.BasicTypeReference@4795a7ea +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration character -> org.hibernate.type.BasicTypeReference@55f95737 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration char -> org.hibernate.type.BasicTypeReference@55f95737 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Character -> org.hibernate.type.BasicTypeReference@55f95737 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration character_nchar -> org.hibernate.type.BasicTypeReference@b9bde4e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration string -> org.hibernate.type.BasicTypeReference@ae4f19c +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.String -> org.hibernate.type.BasicTypeReference@ae4f19c +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration nstring -> org.hibernate.type.BasicTypeReference@60a4addd +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration characters -> org.hibernate.type.BasicTypeReference@7ffb1e11 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration char[] -> org.hibernate.type.BasicTypeReference@7ffb1e11 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration [C -> org.hibernate.type.BasicTypeReference@7ffb1e11 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration wrapper-characters -> org.hibernate.type.BasicTypeReference@2ac7c60e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration text -> org.hibernate.type.BasicTypeReference@782aadb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration ntext -> org.hibernate.type.BasicTypeReference@428d35b3 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration clob -> org.hibernate.type.BasicTypeReference@65a1a065 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.Clob -> org.hibernate.type.BasicTypeReference@65a1a065 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration nclob -> org.hibernate.type.BasicTypeReference@71c2ed69 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.NClob -> org.hibernate.type.BasicTypeReference@71c2ed69 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_clob -> org.hibernate.type.BasicTypeReference@638455f8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_clob_char_array -> org.hibernate.type.BasicTypeReference@488fd496 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_clob_character_array -> org.hibernate.type.BasicTypeReference@2045f76a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_nclob -> org.hibernate.type.BasicTypeReference@460affae +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_nclob_character_array -> org.hibernate.type.BasicTypeReference@7605902 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration materialized_nclob_char_array -> org.hibernate.type.BasicTypeReference@317d061c +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration Duration -> org.hibernate.type.BasicTypeReference@3e8c49fe +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.Duration -> org.hibernate.type.BasicTypeReference@3e8c49fe +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration LocalDateTime -> org.hibernate.type.BasicTypeReference@2fea260e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.LocalDateTime -> org.hibernate.type.BasicTypeReference@2fea260e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration LocalDate -> org.hibernate.type.BasicTypeReference@2ac7c2b8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.LocalDate -> org.hibernate.type.BasicTypeReference@2ac7c2b8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration LocalTime -> org.hibernate.type.BasicTypeReference@73d37c1a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.LocalTime -> org.hibernate.type.BasicTypeReference@73d37c1a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetDateTime -> org.hibernate.type.BasicTypeReference@2fcc1827 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.OffsetDateTime -> org.hibernate.type.BasicTypeReference@2fcc1827 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@51689186 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@452e4b11 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetTime -> org.hibernate.type.BasicTypeReference@2d75cc02 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.OffsetTime -> org.hibernate.type.BasicTypeReference@2d75cc02 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetTimeUtc -> org.hibernate.type.BasicTypeReference@6237f4ab +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetTimeWithTimezone -> org.hibernate.type.BasicTypeReference@77c6adca +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration OffsetTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@400706e0 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration ZonedDateTime -> org.hibernate.type.BasicTypeReference@4311c73e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.ZonedDateTime -> org.hibernate.type.BasicTypeReference@4311c73e +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration ZonedDateTimeWithTimezone -> org.hibernate.type.BasicTypeReference@1edef15b +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration ZonedDateTimeWithoutTimezone -> org.hibernate.type.BasicTypeReference@5cb4a7b7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration date -> org.hibernate.type.BasicTypeReference@24fc8ac7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.Date -> org.hibernate.type.BasicTypeReference@24fc8ac7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration time -> org.hibernate.type.BasicTypeReference@69198151 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.Time -> org.hibernate.type.BasicTypeReference@69198151 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration timestamp -> org.hibernate.type.BasicTypeReference@a4f100 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.sql.Timestamp -> org.hibernate.type.BasicTypeReference@a4f100 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.Date -> org.hibernate.type.BasicTypeReference@a4f100 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration calendar -> org.hibernate.type.BasicTypeReference@795477bc +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.Calendar -> org.hibernate.type.BasicTypeReference@795477bc +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.GregorianCalendar -> org.hibernate.type.BasicTypeReference@795477bc +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration calendar_date -> org.hibernate.type.BasicTypeReference@39be70e3 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration calendar_time -> org.hibernate.type.BasicTypeReference@1c087d8c +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration instant -> org.hibernate.type.BasicTypeReference@3b83a3fc +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.Instant -> org.hibernate.type.BasicTypeReference@3b83a3fc +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration uuid -> org.hibernate.type.BasicTypeReference@6130caa7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.UUID -> org.hibernate.type.BasicTypeReference@6130caa7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration pg-uuid -> org.hibernate.type.BasicTypeReference@6130caa7 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration uuid-binary -> org.hibernate.type.BasicTypeReference@2b43870a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration uuid-char -> org.hibernate.type.BasicTypeReference@74f86bf3 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration class -> org.hibernate.type.BasicTypeReference@52c2aad3 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.lang.Class -> org.hibernate.type.BasicTypeReference@52c2aad3 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration currency -> org.hibernate.type.BasicTypeReference@35c037de +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration Currency -> org.hibernate.type.BasicTypeReference@35c037de +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.Currency -> org.hibernate.type.BasicTypeReference@35c037de +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.Locale -> org.hibernate.type.BasicTypeReference@20c9dbb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration serializable -> org.hibernate.type.BasicTypeReference@359cd9fa +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.io.Serializable -> org.hibernate.type.BasicTypeReference@359cd9fa +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration timezone -> org.hibernate.type.BasicTypeReference@724f69a8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.util.TimeZone -> org.hibernate.type.BasicTypeReference@724f69a8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration ZoneOffset -> org.hibernate.type.BasicTypeReference@4605cef8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.time.ZoneOffset -> org.hibernate.type.BasicTypeReference@4605cef8 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration url -> org.hibernate.type.BasicTypeReference@200272c6 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration java.net.URL -> org.hibernate.type.BasicTypeReference@200272c6 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration vector -> org.hibernate.type.BasicTypeReference@73022c35 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration row_version -> org.hibernate.type.BasicTypeReference@7a8909d4 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration object -> org.hibernate.type.JavaObjectType@7ff45fa6 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@7ff45fa6 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration null -> org.hibernate.type.NullType@48e04bde +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_date -> org.hibernate.type.BasicTypeReference@464f1fcb +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_time -> org.hibernate.type.BasicTypeReference@76a7582a +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_timestamp -> org.hibernate.type.BasicTypeReference@219cf9e0 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_calendar -> org.hibernate.type.BasicTypeReference@6be8e8b6 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_calendar_date -> org.hibernate.type.BasicTypeReference@55671347 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_calendar_time -> org.hibernate.type.BasicTypeReference@194d77c9 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_binary -> org.hibernate.type.BasicTypeReference@5f58def9 +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:396] - Adding type registration imm_serializable -> org.hibernate.type.BasicTypeReference@73d920fc +DEBUG 25-12-18 23:01:36[restartedMain] [BootstrapContextImpl:291] - Injecting JPA temp ClassLoader [org.springframework.instrument.classloading.SimpleThrowawayClassLoader@51c1bfc9] into BootstrapContext; was [null] +DEBUG 25-12-18 23:01:36[restartedMain] [ClassLoaderAccessImpl:45] - ClassLoaderAccessImpl#injectTempClassLoader(org.springframework.instrument.classloading.SimpleThrowawayClassLoader@51c1bfc9) [was null] +DEBUG 25-12-18 23:01:36[restartedMain] [BootstrapContextImpl:301] - Injecting ScanEnvironment [org.hibernate.jpa.boot.internal.StandardJpaScanEnvironmentImpl@46863290] into BootstrapContext; was [null] +DEBUG 25-12-18 23:01:36[restartedMain] [BootstrapContextImpl:296] - Injecting ScanOptions [org.hibernate.boot.archive.scan.internal.StandardScanOptions@7b9c4fcb] into BootstrapContext; was [org.hibernate.boot.archive.scan.internal.StandardScanOptions@108e75d5] +DEBUG 25-12-18 23:01:36[restartedMain] [BootstrapContextImpl:291] - Injecting JPA temp ClassLoader [null] into BootstrapContext; was [org.springframework.instrument.classloading.SimpleThrowawayClassLoader@51c1bfc9] +DEBUG 25-12-18 23:01:36[restartedMain] [ClassLoaderAccessImpl:45] - ClassLoaderAccessImpl#injectTempClassLoader(null) [was org.springframework.instrument.classloading.SimpleThrowawayClassLoader@51c1bfc9] +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1106] - HikariPool-1 - configuration: +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - allowPoolSuspension.............false +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - autoCommit......................true +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - catalog.........................none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - connectionInitSql...............none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - connectionTestQuery.............none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - connectionTimeout...............20000 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - dataSource......................none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - dataSourceClassName.............none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - dataSourceJNDI..................none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - dataSourceProperties............{password=, prepStmtCacheSqlLimit=2048, cachePrepStmts=true, prepStmtCacheSize=200, useServerPrepStmts=true} +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - driverClassName................."net.sf.log4jdbc.sql.jdbcapi.DriverSpy" +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - exceptionOverrideClassName......none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - healthCheckProperties...........{} +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - healthCheckRegistry.............none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - idleTimeout.....................600000 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - initializationFailTimeout.......1 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - isolateInternalQueries..........false +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - jdbcUrl.........................jdbc:log4jdbc:postgresql://hmsn.ink:35432/svcm +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - keepaliveTime...................0 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - leakDetectionThreshold..........0 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - maxLifetime.....................1800000 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - maximumPoolSize.................30 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - metricRegistry..................none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - metricsTrackerFactory...........none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - minimumIdle.....................30 +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - password........................ +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - poolName........................"HikariPool-1" +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - readOnly........................false +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - registerMbeans..................false +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - scheduledExecutor...............none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - schema..........................none +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - threadFactory...................internal +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - transactionIsolation............default +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - username........................"svcm" +DEBUG 25-12-18 23:01:36[restartedMain] [HikariConfig:1138] - validationTimeout...............5000 +INFO 25-12-18 23:01:36[restartedMain] [HikariDataSource:109] - HikariPool-1 - Starting... +INFO 25-12-18 23:01:36[restartedMain] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +1. Connection opened. {executed in 77ms} +open connections: 1 (1) +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +1. Connection.new Connection returned +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.getAndSetNetworkTimeout(PoolBase.java:528) +1. Connection.getNetworkTimeout() returned 0 +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +1. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +1. Connection.getAutoCommit() returned true +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.checkValidationSupport(PoolBase.java:460) +1. Connection.isValid(1) returned true +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.checkDefaultIsolation(PoolBase.java:481) +1. Connection.getTransactionIsolation() returned 2 +INFO 25-12-18 23:01:36[restartedMain] [HikariPool:554] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@6c7d790c +INFO 25-12-18 23:01:36[restartedMain] [HikariDataSource:122] - HikariPool-1 - Start completed. +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:371) +1. Connection.getMetaData() returned org.postgresql.jdbc.PgDatabaseMetaData@44ccd0b0 +DEBUG 25-12-18 23:01:36[restartedMain] [JdbcEnvironmentInitiator:367] - Database -> + name : PostgreSQL + version : 16.10 (Debian 16.10-1.pgdg12+1) + major : 16 + minor : 10 +DEBUG 25-12-18 23:01:36[restartedMain] [JdbcEnvironmentInitiator:378] - Driver -> + name : PostgreSQL JDBC Driver + version : 42.7.3 + major : 42 + minor : 7 +DEBUG 25-12-18 23:01:36[restartedMain] [JdbcEnvironmentInitiator:388] - JDBC version : 4.2 +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.createStatement(ProxyConnection.java:285) +1. Statement.new Statement returned +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.createStatement(ProxyConnection.java:285) +1. Connection.createStatement() returned net.sf.log4jdbc.sql.jdbcapi.StatementSpy@5085cc35 +INFO 25-12-18 23:01:36[restartedMain] [log4j2:243] - com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:110) +1. select version() {executed in 1 ms} +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:110) +1. ResultSet.new ResultSet returned +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:110) +1. Statement.executeQuery(select version()) returned net.sf.log4jdbc.sql.jdbcapi.ResultSetSpy@34923520 +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyResultSet.next(HikariProxyResultSet.java:-1) +1. ResultSet.next() returned true +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyResultSet.getString(HikariProxyResultSet.java:-1) +1. ResultSet.getString(1) returned PostgreSQL 16.10 (Debian 16.10-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyStatement.close(ProxyStatement.java:75) +1. Statement.close() returned +DEBUG 25-12-18 23:01:36[restartedMain] [dialect:94] - HHH035001: Using dialect: org.hibernate.dialect.PostgreSQLDialect, version: 16.10 +DEBUG 25-12-18 23:01:36[restartedMain] [IdentifierHelperBuilder:116] - JDBC driver metadata reported database stores quoted identifiers in neither upper, lower nor mixed case +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyConnection.getCatalog(HikariProxyConnection.java:-1) +1. Connection.getCatalog() returned svcm +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyConnection.getSchema(HikariProxyConnection.java:-1) +1. Connection.getSchema() returned public +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyConnection.getSchema(HikariProxyConnection.java:-1) +1. Connection.getSchema() returned public +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:371) +1. Connection.getMetaData() returned org.postgresql.jdbc.PgDatabaseMetaData@44ccd0b0 +DEBUG 25-12-18 23:01:36[restartedMain] [lob:61] - HHH10010004: Disabling contextual LOB creation as Dialect reported it is not supported +INFO 25-12-18 23:01:36[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:258) +1. Connection.clearWarnings() returned +DEBUG 25-12-18 23:01:36[restartedMain] [DdlTypeRegistry:64] - addDescriptor(2003, org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@15cd3674) replaced previous registration(org.hibernate.type.descriptor.sql.internal.ArrayDdlTypeImpl@5e516dc6) +DEBUG 25-12-18 23:01:36[restartedMain] [DdlTypeRegistry:64] - addDescriptor(6, org.hibernate.type.descriptor.sql.internal.CapacityDependentDdlType@7d366a48) replaced previous registration(org.hibernate.type.descriptor.sql.internal.DdlTypeImpl@2237b2b7) +DEBUG 25-12-18 23:01:36[restartedMain] [JdbcTypeRegistry:82] - addDescriptor(2004, BlobTypeDescriptor(BLOB_BINDING)) replaced previous registration(BlobTypeDescriptor(DEFAULT)) +DEBUG 25-12-18 23:01:36[restartedMain] [JdbcTypeRegistry:82] - addDescriptor(2005, ClobTypeDescriptor(CLOB_BINDING)) replaced previous registration(ClobTypeDescriptor(DEFAULT)) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration JAVA_OBJECT -> org.hibernate.type.JavaObjectType@715e5dad +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.lang.Object -> org.hibernate.type.JavaObjectType@715e5dad +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:375] - Type registration key [java.lang.Object] overrode previous entry : `org.hibernate.type.JavaObjectType@7ff45fa6` +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration org.hibernate.type.DurationType -> basicType@1(java.time.Duration,3015) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration Duration -> basicType@1(java.time.Duration,3015) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.time.Duration -> basicType@1(java.time.Duration,3015) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration org.hibernate.type.OffsetDateTimeType -> basicType@2(java.time.OffsetDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.time.OffsetDateTime -> basicType@2(java.time.OffsetDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration org.hibernate.type.ZonedDateTimeType -> basicType@3(java.time.ZonedDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.time.ZonedDateTime -> basicType@3(java.time.ZonedDateTime,3003) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration org.hibernate.type.OffsetTimeType -> basicType@4(java.time.OffsetTime,3007) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration OffsetTime -> basicType@4(java.time.OffsetTime,3007) +DEBUG 25-12-18 23:01:36[restartedMain] [BasicTypeRegistry:371] - Adding type registration java.time.OffsetTime -> basicType@4(java.time.OffsetTime,3007) +DEBUG 25-12-18 23:01:36[restartedMain] [TypeConfiguration$Scope:196] - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@1a47da57] to MetadataBuildingContext [org.hibernate.boot.internal.MetadataBuildingContextRootImpl@57db098c] +DEBUG 25-12-18 23:01:36[HikariPool-1 housekeeper] [HikariPool:405] - HikariPool-1 - Pool stats (total=1, active=0, idle=1, waiting=0) +DEBUG 25-12-18 23:01:36[restartedMain] [Namespace:64] - Created database namespace [logicalName=Name{catalog=null, schema=null}, physicalName=Name{catalog=null, schema=null}] +INFO 25-12-18 23:01:36[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +2. Connection opened. {executed in 20ms} +open connections: 1 2 (2) +INFO 25-12-18 23:01:36[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +2. Connection.new Connection returned +INFO 25-12-18 23:01:36[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +2. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:36[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +2. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:36[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@48e240e0 +DEBUG 25-12-18 23:01:36[restartedMain] [EntityBinder:222] - Binding entity from annotated class: com.kospo.drm.model.Token +DEBUG 25-12-18 23:01:36[restartedMain] [EntityBinder:1358] - Import with entity name Token +DEBUG 25-12-18 23:01:36[restartedMain] [EntityBinder:1891] - Bind entity com.kospo.drm.model.Token on table token +DEBUG 25-12-18 23:01:36[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedDiscriminatorColumn(column='DTYPE') +DEBUG 25-12-18 23:01:36[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=2, active=0, idle=2, waiting=0) +DEBUG 25-12-18 23:01:36[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn() +DEBUG 25-12-18 23:01:36[restartedMain] [ClassLoaderAccessImpl:60] - Not known whether passed class name [com.kospo.drm.model.Token] is safe +DEBUG 25-12-18 23:01:36[restartedMain] [ClassLoaderAccessImpl:62] - No temp ClassLoader provided; using live ClassLoader for loading potentially unsafe class : com.kospo.drm.model.Token +DEBUG 25-12-18 23:01:36[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn(column='domain') +DEBUG 25-12-18 23:01:36[restartedMain] [PropertyBinder:251] - MetadataSourceProcessor property domain with lazy=false +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractPropertyHolder:106] - Attempting to locate auto-apply AttributeConverter for property [com.kospo.drm.model.Token.id:domain] +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1219] - building BasicValue for domain +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValue:299] - Skipping column re-registration: token.domain +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property domain +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +3. Connection opened. {executed in 18ms} +open connections: 1 2 3 (3) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +3. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +3. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +3. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@52cc6a3e +DEBUG 25-12-18 23:01:37[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn(column='ip') +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:251] - MetadataSourceProcessor property ip with lazy=false +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractPropertyHolder:106] - Attempting to locate auto-apply AttributeConverter for property [com.kospo.drm.model.Token.id:ip] +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1219] - building BasicValue for ip +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValue:299] - Skipping column re-registration: token.ip +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property ip +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property id +DEBUG 25-12-18 23:01:37[restartedMain] [BinderHelper:78] - #makeIdGenerator(Component(com.kospo.drm.model.TokenId), id, assigned, , ...) +DEBUG 25-12-18 23:01:37[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn(column='ins_date') +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:251] - MetadataSourceProcessor property insDate with lazy=false +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractPropertyHolder:106] - Attempting to locate auto-apply AttributeConverter for property [com.kospo.drm.model.Token:insDate] +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1219] - building BasicValue for insDate +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValue:299] - Skipping column re-registration: token.ins_date +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property insDate +DEBUG 25-12-18 23:01:37[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn(column='token') +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:251] - MetadataSourceProcessor property token with lazy=false +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractPropertyHolder:106] - Attempting to locate auto-apply AttributeConverter for property [com.kospo.drm.model.Token:token] +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1219] - building BasicValue for token +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValue:299] - Skipping column re-registration: token.token +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property token +DEBUG 25-12-18 23:01:37[restartedMain] [AnnotatedColumn:268] - Binding column: AnnotatedColumn(column='token_expire') +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:251] - MetadataSourceProcessor property tokenExpire with lazy=false +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractPropertyHolder:106] - Attempting to locate auto-apply AttributeConverter for property [com.kospo.drm.model.Token:tokenExpire] +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1219] - building BasicValue for tokenExpire +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValue:299] - Skipping column re-registration: token.token_expire +DEBUG 25-12-18 23:01:37[restartedMain] [PropertyBinder:404] - Building property tokenExpire +DEBUG 25-12-18 23:01:37[restartedMain] [ClassLoaderServiceImpl:261] - HHH000194: Package not found or no package-info.java: com.kospo.drm.model +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1297] - Starting `BasicValueBinder#fillSimpleValue` for domain +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1297] - Starting `BasicValueBinder#fillSimpleValue` for ip +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1297] - Starting `BasicValueBinder#fillSimpleValue` for insDate +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1297] - Starting `BasicValueBinder#fillSimpleValue` for token +DEBUG 25-12-18 23:01:37[restartedMain] [BasicValueBinder:1297] - Starting `BasicValueBinder#fillSimpleValue` for tokenExpire +DEBUG 25-12-18 23:01:37[restartedMain] [PrimaryKey:41] - Forcing column [domain] to be non-null as it is part of the primary key for table [token] +DEBUG 25-12-18 23:01:37[restartedMain] [PrimaryKey:41] - Forcing column [ip] to be non-null as it is part of the primary key for table [token] +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=3, active=0, idle=3, waiting=0) +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryImpl:220] - Building session factory +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +4. Connection opened. {executed in 16ms} +open connections: 1 2 3 4 (4) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +4. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +4. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +4. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@20609fea +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryServiceRegistryImpl:105] - EventListenerRegistry access via ServiceRegistry is deprecated. Use `sessionFactory.getEventEngine().getListenerRegistry()` instead +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryImpl:238] - Instantiating SessionFactory with settings: {java.specification.version=17, sun.cpu.isalist=amd64, hibernate.resource.beans.container=org.springframework.orm.hibernate5.SpringBeanContainer@31eefe11, hibernate.connection.handling_mode=DELAYED_ACQUISITION_AND_HOLD, sun.jnu.encoding=MS949, hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy, java.class.path=D:\IdeaProjects\drm\build\classes\java\main;D:\IdeaProjects\drm\build\resources\main;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.querydsl\querydsl-apt\5.1.0\3b1cbe05851840b5dc926833908747a193c097cc\querydsl-apt-5.1.0-jakarta.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-data-jpa\3.3.2\2731d74dfc18fb905c29930cf55493980c2cee5a\spring-boot-starter-data-jpa-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-security\3.3.2\13a1d62a33323306fcd4c4cbb6a98322ce633ac0\spring-boot-starter-security-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-mail\3.3.2\51649a6f99d3ea3c2790dc33797cb54ba7f0a389\spring-boot-starter-mail-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.github.ulisesbocchio\jasypt-maven-plugin\3.0.5\7111e20baa556fa2f46119953fb9cb6136a9690f\jasypt-maven-plugin-3.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-actuator\3.3.2\7b70dce8bfd1c81341c1c55fe1cec3613ad6e842\spring-boot-starter-actuator-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-data-jdbc\3.3.2\299ddd4cee2ecdca093be71511392278fcf22203\spring-boot-starter-data-jdbc-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-data-rest\3.3.2\1d33b4a9bec843db78310e3a8d1c6da964e6bbce\spring-boot-starter-data-rest-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web-services\3.3.2\210a7bdae4f67aa8e333b4a7467b0ea23dcd2d4a\spring-boot-starter-web-services-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.annotation\jakarta.annotation-api\2.1.1\48b9bda22b091b1f48b13af03fe36db3be6e1ae3\jakarta.annotation-api-2.1.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.persistence\jakarta.persistence-api\3.1.0\66901fa1c373c6aff65c13791cc11da72060a8d6\jakarta.persistence-api-3.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.projectlombok\lombok\1.18.34\ec547ef414ab1d2c040118fb9c1c265ada63af14\lombok-1.18.34.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-reactor-netty\3.3.2\f4e876a9f1400ce54e8dea3c52a96640ae5944fc\spring-boot-starter-reactor-netty-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.retry\spring-retry\2.0.8\a649465c003aa63432f278b9fb47eb58372e2bfa\spring-retry-2.0.8.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springdoc\springdoc-openapi-starter-webmvc-ui\2.3.0\b4af31e9d40539c94f8debbf760134d961333c24\springdoc-openapi-starter-webmvc-ui-2.3.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.bgee.log4jdbc-log4j2\log4jdbc-log4j2-jdbc4.1\1.16\ce7cd831b2e3e5d428e659a6fdae0fb6b89f3cc7\log4jdbc-log4j2-jdbc4.1-1.16.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.github.ulisesbocchio\jasypt-spring-boot-starter\3.0.5\53d848a8d5be9b29f1768d00562ef51e5e2c21b6\jasypt-spring-boot-starter-3.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.jetbrains\annotations\24.0.0\69b8b443c437fdeefa8d20c18d257b94836a92b9\annotations-24.0.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.querydsl\querydsl-jpa\5.0.0\2a653852848dee41b967d3520be3339f0f92f1ea\querydsl-jpa-5.0.0-jakarta.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson\2.9.0\8a1167e089096758b49f9b34066ef98b2f4b37aa\gson-2.9.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.15.3\4a20a0e104931bfa72f24ef358c2eb63f1ef2aaf\jackson-datatype-jsr310-2.15.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.15.3\60d600567c1862840397bf9ff5a92398edc5797b\jackson-core-2.15.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.15.3\79baf4e605eb3bbb60b1c475d44a7aecceea1d60\jackson-annotations-2.15.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.15.3\a734bc2c47a9453c4efa772461a3aeb273c010d9\jackson-databind-2.15.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.jsonwebtoken\jjwt-api\0.11.5\f742940045619d06383e7df37b21ac422b476cf1\jjwt-api-0.11.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.poi\poi-ooxml\5.4.1\508ed3e7fcc775738415870d0bc6d27196317fe3\poi-ooxml-5.4.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.poi\poi\5.4.1\e4c74c59e13f62d8edd215756d14ce55566c6efe\poi-5.4.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\javax.xml.bind\jaxb-api\2.3.1\8531ad5ac454cc2deb9d4d32c40c4d7451939b5d\jaxb-api-2.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.modelmapper\modelmapper\3.2.0\7664b15466a898625b394af6000439c5799a5d2b\modelmapper-3.2.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3\3.13.0\b7263237aa89c1f99b327197c41d0669707a462e\commons-lang3-3.13.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\commons-codec\commons-codec\1.16.0\4e3eb3d79888d76b54e28b350915b5dc3919c9de\commons-codec-1.16.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-dbcp2\2.10.0\f48fe03b03c1bacda7f22d16ce328d7897bc5727\commons-dbcp2-2.10.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-pool2\2.12.0\458563f69fbdaebf7daadfe10dc3a22e42a7de50\commons-pool2-2.12.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging\1.2\4bfc12adfe4842bf07b657f0369c4cb522955686\commons-logging-1.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\2.19.0\1f8d4a99ba72b77aa69101175efc79b0c7dcdd7e\commons-io-2.19.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-email\1.5\e8e677c6362eba14ff3c476ba63ccb83132dbd52\commons-email-1.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.postgresql\postgresql\42.7.3\24f3e9f7231428cd20eb4dde00dd3fce44e05464\postgresql-42.7.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.oracle.database.jdbc\ojdbc10\19.27.0.0\e859099fd25f7a910dffdcccf9d53c6d6548ec5c\ojdbc10-19.27.0.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.oracle.database.jdbc\ojdbc8\23.8.0.25.04\ccb2cb450ba1bc41a6373f2a50357b24c0eb6e49\ojdbc8-23.8.0.25.04.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.querydsl\querydsl-codegen\5.1.0\a8504ea51fbc2258543cedab6a37fe6039b2d20a\querydsl-codegen-5.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-jpa\3.3.2\cfa9cd077f3f15d0657bbb6d7c8e1c7c7da7e6e2\spring-data-jpa-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-jdbc\3.3.2\544775d745288972598ab2e872e5a4816b6d9b39\spring-boot-starter-jdbc-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-aop\3.3.2\26d996e253768d3121bb3ffbef28cefc07fdbddb\spring-boot-starter-aop-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.hibernate.orm\hibernate-core\6.5.2.Final\e9e0cc47f6cd2b2553968aee66bd9e55e7485221\hibernate-core-6.5.2.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aspects\6.1.11\141d92094a460f338aa0999023ca7a25861d49a1\spring-aspects-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\3.3.2\f9377a223dab5c4afe7aead05bf6ac567cf565ab\spring-boot-starter-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.security\spring-security-config\6.3.1\e4f6c1cf4f8969c9e5ed26121f0fbd7ee35a7ca4\spring-security-config-6.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.security\spring-security-web\6.3.1\aff43933f28c808252b2d31f768b92fa61b634f6\spring-security-web-6.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\6.1.11\3503ef99b759b81f8b0b3d5260bf4842e393a581\spring-aop-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context-support\6.1.11\bd903b63a6b74327521d5634d2e07474ce58e695\spring-context-support-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.eclipse.angus\jakarta.mail\2.0.3\3dea6aeee9603f573687b0d4da5dc1316d921bb7\jakarta.mail-2.0.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\2.2\3af797a25458550a16bf89acc8e4ab2b7f2bfce0\snakeyaml-2.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-actuator-autoconfigure\3.3.2\f7bb120c04c0a4dfa83ae4eeff3e1a2ba3833ac0\spring-boot-actuator-autoconfigure-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-jakarta9\1.13.2\c734f3de7e3f1864f77dc8cc278e5cd613357f39\micrometer-jakarta9-1.13.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-observation\1.13.2\a498ee0871596f41a61679a29bc8390defba4245\micrometer-observation-1.13.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-jdbc\3.3.2\7e3eb69abb71ace86dde90edbdcb36a154b346b6\spring-data-jdbc-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\3.3.2\720418538668a8742d0ae24097811d5250cf5c32\spring-boot-starter-web-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-rest-webmvc\4.3.2\e0b2e405ffe53a473500d502481b624623029b7f\spring-data-rest-webmvc-4.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.ws\spring-ws-core\4.0.11\15ca5af2d749b165951f888b5d4755baf975cabe\spring-ws-core-4.0.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.sun.xml.messaging.saaj\saaj-impl\3.0.4\20e94bac120c14b7a0aa32c0821bab62515fd7dd\saaj-impl-3.0.4.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.xml.ws\jakarta.xml.ws-api\4.0.2\331ecab874ee75b48db661a331319958cb04edec\jakarta.xml.ws-api-4.0.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-oxm\6.1.11\2825740197db37901d09b91704e1be3575a237c1\spring-oxm-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.projectreactor.netty\reactor-netty-http\1.1.21\b83542bb35630ef815b4177e3c670f62e952e695\reactor-netty-http-1.1.21.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springdoc\springdoc-openapi-starter-webmvc-api\2.3.0\e8e6e46e2b7875c1789782d3820536bb2d868b17\springdoc-openapi-starter-webmvc-api-2.3.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.webjars\swagger-ui\5.10.3\744ae2862cc79c137020f2ce6e07de2f1d6a2657\swagger-ui-5.10.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.github.ulisesbocchio\jasypt-spring-boot\3.0.5\b75dd4d668ccaf176e89846b37ef0ba1c80149ec\jasypt-spring-boot-3.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.querydsl\querydsl-core\5.1.0\be322c3fe98de8e7c204afb8860bfabd81a3bafd\querydsl-core-5.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-compress\1.27.1\a19151084758e2fbb6b41eddaa88e7b8ff4e6599\commons-compress-1.27.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-collections4\4.4\62ebe7544cb7164d87e0637a2a6a2bdc981395e8\commons-collections4-4.4.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.23.1\9c15c29c526d9c6783049c0a77722693c66706e1\log4j-api-2.23.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.poi\poi-ooxml-lite\5.4.1\ed2246f88254ba40fc2e7999c8f8e4e9031208a\poi-ooxml-lite-5.4.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.xmlbeans\xmlbeans\5.3.0\f93c3ba820d7240b7fec4ec5bc35e7223cc6fc1f\xmlbeans-5.3.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.github.virtuald\curvesapi\1.08\3d3d36568154059825089b289dcfca481fe44e2c\curvesapi-1.08.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-math3\3.6.1\e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf\commons-math3-3.6.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.zaxxer\SparseBitSet\1.3\533eac055afe3d5f614ea95e333afd6c2bde8f26\SparseBitSet-1.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\javax.activation\javax.activation-api\1.2.0\85262acf3ca9816f9537ca47d5adeabaead7cb16\javax.activation-api-1.2.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.transaction\jakarta.transaction-api\2.0.1\51a520e3fae406abb84e2e1148e6746ce3f80a1a\jakarta.transaction-api-2.0.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.sun.mail\javax.mail\1.5.6\ab5daef2f881c42c8e280cbe918ec4d7fdfd7efe\javax.mail-1.5.6.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.querydsl\codegen-utils\5.1.0\ba401554d613760617992eafb6cdba175c811e6f\codegen-utils-5.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\javax.inject\javax.inject\1\6975da39a7040257bd51d21a231b76c915872d38\javax.inject-1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.github.classgraph\classgraph\4.8.146\360448a09bfa5689d89cfa97fea53b3fdefa9c23\classgraph-4.8.146.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\6.1.11\8fc69f776333713aa26be8821af8c6355ccad8d8\spring-context-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-orm\6.1.11\b96b83839b970f3a5d2ad2f86845924654a17886\spring-orm-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-commons\3.3.2\5f08fd077c957fd561bef09b08ef6cdf54e1c826\spring-data-commons-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-tx\6.1.11\2e38b3218ae80d0b5401a4ef299c4cfbc3a73ed7\spring-tx-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\6.1.11\266176d132ab2bbf8e69e4aa6d7f47ec746ddc9a\spring-beans-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\6.1.11\90fce4311852c68c1e87c65adf60db9add1a6dcb\spring-core-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\2.0.13\80229737f704b121a318bba5d5deacbcf395bc77\slf4j-api-2.0.13.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.antlr\antlr4-runtime\4.13.0\5a02e48521624faaf5ff4d99afc88b01686af655\antlr4-runtime-4.13.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.zaxxer\HikariCP\5.1.0\8c96e36c14461fc436bb02b264b96ef3ca5dca8c\HikariCP-5.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jdbc\6.1.11\92b9f712206993c56c56903547c6b695a4a70128\spring-jdbc-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.aspectj\aspectjweaver\1.9.22.1\bca243d0af0db4758fbae45c5f4995cb5dabb612\aspectjweaver-1.9.22.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\3.3.2\6a9ab910b00f0b504a5903e3680ac10018da6247\spring-boot-autoconfigure-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\3.3.2\72a257d5518b2b8b9949a26543cdb3a4e67de5f8\spring-boot-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\3.3.2\b685c97f3c24dc30c53ae18151a798f701f2a640\spring-boot-starter-logging-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.security\spring-security-core\6.3.1\598c2461a17c29705ca7fd8c02efd23a1f650ccd\spring-security-core-6.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\6.1.11\8910d08f15492273543d2c8032b2b895e08ed9e\spring-web-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\6.1.11\7c12cf1cd39289cfab7c5933eda9e4704a7f2799\spring-expression-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.activation\jakarta.activation-api\2.1.3\fa165bd70cda600368eee31555222776a46b881f\jakarta.activation-api-2.1.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-actuator\3.3.2\a29d4372b12458d43a92ebf08e5628edb98efb9f\spring-boot-actuator-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-core\1.13.2\1e2b777c3cf49f497b42371bd128678cbd732b83\micrometer-core-1.13.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-commons\1.13.2\b2b69f7887f9bf6f5ae42e86a67a62367056aa3c\micrometer-commons-1.13.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-relational\3.3.2\a3b9b56d0d8674707217bf8cbdc6b9dd942134f8\spring-data-relational-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\3.3.2\d8b8b73e7820092b4e41d730eeb968add7957c45\spring-boot-starter-json-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-tomcat\3.3.2\37ccb53cd5207fffd7a6fc1b591687f8cb1350df\spring-boot-starter-tomcat-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\6.1.11\9ec4c2a5e28bf7b2d60e254e976940b12c8ba32a\spring-webmvc-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.data\spring-data-rest-core\4.3.2\4387069f5b1bbee000730e5fb2c9f3a4c838efd\spring-data-rest-core-4.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.ws\spring-xml\4.0.11\317ebb6e4b868260b937760c1fa646ef8741231c\spring-xml-4.0.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.xml.soap\jakarta.xml.soap-api\3.0.2\445830286faf84fe40a3f47ccd7537d69cd58c4\jakarta.xml.soap-api-3.0.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.jvnet.staxex\stax-ex\2.1.0\33160568d70c01da407f8ba982bacf283d00ad4a\stax-ex-2.1.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.xml.bind\jakarta.xml.bind-api\4.0.2\6cd5a999b834b63238005b7144136379dc36cad2\jakarta.xml.bind-api-4.0.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-http2\4.1.111.Final\f0cca5df75bfb4f858d0435f601d8b1cae1de054\netty-codec-http2-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.projectreactor.netty\reactor-netty-core\1.1.21\acb98bd08107287c454ce74e7b1ed8e7a018a662\reactor-netty-core-1.1.21.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-http\4.1.111.Final\c6ecbc452321e632bf3cea0f9758839b650455c7\netty-codec-http-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns-native-macos\4.1.111.Final\aeef447d930ddfcdc80a8b2c67eb9b5d781d6354\netty-resolver-dns-native-macos-4.1.111.Final-osx-x86_64.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns\4.1.111.Final\5ac6a3d96935129ba45ea768ad30e31cad0d8c4d\netty-resolver-dns-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-transport-native-epoll\4.1.111.Final\e102a0568f4f2cd7d4049c4154f94528cadf646b\netty-transport-native-epoll-4.1.111.Final-linux-x86_64.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.projectreactor\reactor-core\3.6.8\f3d0192db20e929d5a6552990269ae2993a93a58\reactor-core-3.6.8.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springdoc\springdoc-openapi-starter-common\2.3.0\acf3654082b3e000d5b59cc9733227702aa57f75\springdoc-openapi-starter-common-2.3.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.jasypt\jasypt\1.9.3\d99ef9540f51c617f2a293b460f025d2ee563dd\jasypt-1.9.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.mysema.commons\mysema-commons-lang\0.2.4\d09c8489d54251a6c22fbce804bdd4a070557317\mysema-commons-lang-0.2.4.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\javax.activation\activation\1.1\e6cb541461c2834bdea3eb920f1884d1eb508b50\activation-1.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.eclipse.jdt\ecj\3.26.0\4837be609a3368a0f7e7cf0dc1bdbc7fe94993de\ecj-3.26.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\6.1.11\97b34c6b72c8084759e71cd09a7dad16bfb8f1da\spring-jcl-6.1.11.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.23.1\425ad1eb8a39904d2830e907a324e956fb456520\log4j-to-slf4j-2.23.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.5.6\afc75d260d838a3bddfb8f207c2805ed7d1b34f9\logback-classic-1.5.6.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\2.0.13\a3bcd9d9dd50c71ce69f06b1fd05e40fdeff6ba5\jul-to-slf4j-2.0.13.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.security\spring-security-crypto\6.3.1\3e66321782db499cca3884830188a091058121f3\spring-security-crypto-6.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.17.2\d27b9f95ccce98984c1ba58d61c5a9c072b1ad95\jackson-module-parameter-names-2.17.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.17.2\efd3dd0e1d0db8bc72abbe71c15e697bb83b4b45\jackson-datatype-jdk8-2.17.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-websocket\10.1.26\3b147d7e5566e9361e86422f9e49fdd56a429637\tomcat-embed-websocket-10.1.26.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-core\10.1.26\5e0fa06ca373ef0ca55e603291ea51b590c377ea\tomcat-embed-core-10.1.26.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-el\10.1.26\5a5cbcb3e51fcd557b164736e9920a3dd2ac1e33\tomcat-embed-el-10.1.26.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.hateoas\spring-hateoas\2.3.1\61ef36f62e49cd888f21b712086a3130e2ca42ae\spring-hateoas-2.3.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.plugin\spring-plugin-core\3.0.0\d56aa02dd7272dca30aa598dc8b72e823227046a\spring-plugin-core-3.0.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.atteo\evo-inflector\1.3\4cf8b5f363c60e63f8b7688ac053590460f2768e\evo-inflector-1.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-handler\4.1.111.Final\2bc6a58ad2e9e279634b6e55022e8dcd3c175cc4\netty-handler-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec\4.1.111.Final\a6762ec00a6d268f9980741f5b755838bcd658bf\netty-codec-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-transport\4.1.111.Final\24e97cf14ea9d80afe4c5ab69066b587fccc154a\netty-transport-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-buffer\4.1.111.Final\b54863f578939e135d3b3aea610284ae57c188cf\netty-buffer-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-common\4.1.111.Final\58210befcb31adbcadd5724966a061444db91863\netty-common-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-handler-proxy\4.1.111.Final\1e459c8630bb7c942b79a97e62dd728798de6a8c\netty-handler-proxy-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns-classes-macos\4.1.111.Final\c21cc719234e5553c3b65f29defb4b383edc8fd2\netty-resolver-dns-classes-macos-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-dns\4.1.111.Final\f988dbb527efb0e7cf7d444cc50b0fc3f5f380ec\netty-codec-dns-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver\4.1.111.Final\3493179999f211dc49714319f81da2be86523a3b\netty-resolver-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-transport-classes-epoll\4.1.111.Final\8b97d32eb1489043e478deea99bd93ce487b82f6\netty-transport-classes-epoll-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-transport-native-unix-common\4.1.111.Final\acafc128cddafa021bc0b48b0788eb0e118add5e\netty-transport-native-unix-common-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.reactivestreams\reactive-streams\1.0.4\3864a1320d97d7b045f729a326e1e077661f31b7\reactive-streams-1.0.4.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.swagger.core.v3\swagger-core-jakarta\2.2.19\1bbc09fba4c0ac2375da7563cb03dfd0f3e07100\swagger-core-jakarta-2.2.19.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.5.6\41cbe874701200c5624c19e0ab50d1b88dfcc77d\logback-core-1.5.6.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.jayway.jsonpath\json-path\2.9.0\37fe2217f577b0b68b18e62c4d17a8858ecf9b69\json-path-2.9.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-socks\4.1.111.Final\ea52ef6617a9b69b0baaebb7f0b80373527f9607\netty-codec-socks-4.1.111.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.dataformat\jackson-dataformat-yaml\2.17.2\78d2c73dbec62044d7cf3b544b2e0d24a1a093b0\jackson-dataformat-yaml-2.17.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.swagger.core.v3\swagger-models-jakarta\2.2.19\72b8a8ba29654ba31d951311081c33d464cee138\swagger-models-jakarta-2.2.19.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.swagger.core.v3\swagger-annotations-jakarta\2.2.19\c180d87c78d367771bbd954ebceba1b6c576fb52\swagger-annotations-jakarta-2.2.19.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.validation\jakarta.validation-api\3.0.2\92b6631659ba35ca09e44874d3eb936edfeee532\jakarta.validation-api-3.0.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-devtools\3.3.2\ff9e444f433eeafd6bc88025909459f835631038\spring-boot-devtools-3.3.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.jsonwebtoken\jjwt-jackson\0.11.5\3b83a06809e98a69402d7333dcf67df6f6ea4579\jjwt-jackson-0.11.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.jsonwebtoken\jjwt-impl\0.11.5\40a599f0e8a8e4e0701596fbb15e67bfda64fdf0\jjwt-impl-0.11.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns-native-macos\4.1.112.Final\3f6f3da55f52b0b361a3f685b14aab38ee3d0e85\netty-resolver-dns-native-macos-4.1.112.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver-dns-native-macos\4.1.112.Final\5abc86fd98561f7bda897efa29bd96483f86f560\netty-resolver-dns-native-macos-4.1.112.Final-osx-x86_64.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.checkerframework\checker-qual\3.42.0\638ec33f363a94d41a4f03c3e7d3dcfba64e402d\checker-qual-3.42.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.jboss.logging\jboss-logging\3.5.3.Final\c88fc1d8a96d4c3491f55d4317458ccad53ca663\jboss-logging-3.5.3.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.hibernate.common\hibernate-commons-annotations\6.0.6.Final\77a5f94b56d49508e0ee334751db5b78e5ccd50c\hibernate-commons-annotations-6.0.6.Final.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\io.smallrye\jandex\3.1.2\a6c1c89925c7df06242b03dddb353116ceb9584c\jandex-3.1.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.fasterxml\classmate\1.7.0\e98374da1f2143ac8e6e0a95036994bb19137a3\classmate-1.7.0.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy\1.14.18\81e9b9a20944626e6757b5950676af901c2485\byte-buddy-1.14.18.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\jaxb-runtime\4.0.5\ca84c2a7169b5293e232b9d00d1e4e36d4c3914a\jaxb-runtime-4.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\jakarta.inject\jakarta.inject-api\2.0.1\4c28afe1991a941d7702fe1362c365f0a8641d1e\jakarta.inject-api-2.0.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.eclipse.angus\angus-activation\2.0.2\41f1e0ddd157c856926ed149ab837d110955a9fc\angus-activation-2.0.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\jaxb-core\4.0.5\7b4b11ea5542eea4ad55e1080b23be436795b3\jaxb-core-4.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.hdrhistogram\HdrHistogram\2.2.2\7959933ebcc0f05b2eaa5af0a0c8689fa257b15c\HdrHistogram-2.2.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.latencyutils\LatencyUtils\2.0.3\769c0b82cb2421c8256300e907298a9410a2a3d3\LatencyUtils-2.0.3.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\txw2\4.0.5\f36a4ef12120a9bb06d766d6a0e54b144fd7ed98\txw2-4.0.5.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\com.sun.istack\istack-commons-runtime\4.1.2\18ec117c85f3ba0ac65409136afa8e42bc74e739\istack-commons-runtime-4.1.2.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\net.minidev\json-smart\2.5.1\4c11d2808d009132dfbbf947ebf37de6bf266c8e\json-smart-2.5.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\net.minidev\accessors-smart\2.5.1\19b820261eb2e7de7d5bde11d1c06e4501dd7e5f\accessors-smart-2.5.1.jar;C:\Users\bangae1\.gradle\caches\modules-2\files-2.1\org.ow2.asm\asm\9.6\aa205cf0a06dbd8e04ece91c0b37c3f5d567546a\asm-9.6.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2024.3.7\lib\idea_rt.jar, kotlinx.coroutines.debug.enable.mutable.state.flows.stack.trace=true, java.vm.vendor=Microsoft, sun.arch.data.model=64, user.variant=, java.vendor.url=https://www.microsoft.com, catalina.useNaming=false, user.timezone=Asia/Seoul, jakarta.persistence.sharedCache.mode=UNSPECIFIED, org.jboss.logging.provider=slf4j, java.vm.specification.version=17, os.name=Windows 11, jakarta.persistence.nonJtaDataSource=HikariDataSource (HikariPool-1), sun.java.launcher=SUN_STANDARD, user.country=KR, sun.boot.library.path=C:\Users\bangae1\.jdks\ms-17.0.16\bin, sun.java.command=com.kospo.drm.Application, spring.application.admin.enabled=true, javax.persistence.nonJtaDataSource=HikariDataSource (HikariPool-1), hibernate.transaction.jta.platform=org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform@63a4b830, com.sun.management.jmxremote=, jdk.debug=release, spring.liveBeansView.mbeanDomain=, sun.cpu.endian=little, hibernate.cdi.extensions=true, user.home=C:\Users\bangae1, user.language=ko, java.specification.vendor=Oracle Corporation, java.version.date=2025-07-15, java.home=C:\Users\bangae1\.jdks\ms-17.0.16, file.separator=\, spring.output.ansi.enabled=always, java.vm.compressedOopsMode=Zero based, line.separator= +, hibernate.persistenceUnitName=default, java.vm.specification.vendor=Oracle Corporation, java.specification.name=Java Platform API Specification, intellij.debug.agent=true, FILE_LOG_CHARSET=UTF-8, hibernate.transaction.coordinator_class=class org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorBuilderImpl, java.awt.headless=true, jakarta.persistence.validation.mode=AUTO, hibernate.hbm2ddl.auto=validate, user.script=, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, java.runtime.version=17.0.16+8-LTS, user.name=bangae1, spring.jmx.enabled=true, path.separator=;, kotlinx.coroutines.debug.enable.creation.stack.trace=false, management.endpoints.jmx.exposure.include=*, os.version=10.0, java.runtime.name=OpenJDK Runtime Environment, file.encoding=UTF-8, java.vm.name=OpenJDK 64-Bit Server VM, java.vendor.version=Microsoft-11926163, java.vendor.url.bug=https://github.com/microsoft/openjdk/issues, java.io.tmpdir=C:\Users\bangae1\AppData\Local\Temp\, catalina.home=C:\Users\bangae1\AppData\Local\Temp\tomcat.8010.8610591402726081776, java.version=17.0.16, jboss.modules.system.pkgs=com.intellij.rt, hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy, user.dir=D:\IdeaProjects\drm, os.arch=amd64, java.vm.specification.name=Java Virtual Machine Specification, PID=3004, sun.os.patch.level=, CONSOLE_LOG_CHARSET=UTF-8, catalina.base=C:\Users\bangae1\AppData\Local\Temp\tomcat.8010.8610591402726081776, hibernate.boot.CfgXmlAccessService.key=org.hibernate.boot.registry.StandardServiceRegistryBuilder$1@584ff0eb, native.encoding=MS949, kotlinx.coroutines.debug.enable.flows.stack.trace=true, java.library.path=C:\Users\bangae1\.jdks\ms-17.0.16\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files (x86)\Common Files\Oracle\Java\java8path;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files\VanDyke Software\Clients\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\k6\;C:\Program Files\Go\bin;C:\Users\bangae1\develop\flutter\bin;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Users\bangae1\ffmpeg\bin;C:\Users\bangae1\AppData\Roaming\JetBrains\IntelliJIdea2024.3\node\versions\20.15.0;C:\Users\bangae1\AppData\Local\Programs\Python\Python312\Scripts\;C:\Users\bangae1\AppData\Local\Programs\Python\Python312\;C:\Users\bangae1\AppData\Local\Microsoft\WindowsApps;C:\Users\bangae1\go\bin;C:\Users\bangae1\AppData\Local\Python\bin;., java.vendor=Microsoft, java.vm.info=mixed mode, emulated-client, sharing, java.vm.version=17.0.16+8-LTS, java.specification.maintenance.version=1, java.rmi.server.randomIDs=true, sun.io.unicode.encoding=UnicodeLittle, hibernate.archive.scanner=org.hibernate.boot.archive.scan.internal.DisabledScanner, hibernate.connection.datasource=HikariDataSource (HikariPool-1), debugger.agent.enable.coroutines=true, java.class.version=61.0, LOGGED_APPLICATION_NAME=[drm] } +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryImpl:252] - Session factory constructed with filter configurations : {} +DEBUG 25-12-18 23:01:37[restartedMain] [TypeSafeActivator:89] - Unable to acquire Bean Validation ValidatorFactory, skipping activation +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=4, active=0, idle=4, waiting=0) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(max)] under max; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(min)] under min; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(sum)] under sum; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(avg)] under avg; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CountFunction@46eb0dfb] under count; prior registration was null +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +5. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 (5) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +5. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +5. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +5. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@49972dca +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.EveryAnyEmulation@3efda28c] under every; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.EveryAnyEmulation@14ea41fe] under any; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(floor)] under floor; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(ceiling)] under ceiling; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(mod)] under mod; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(abs)] under abs; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(sign)] under sign; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(sqrt)] under sqrt; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(ln)] under ln; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(exp)] under exp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(power)] under power; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(round)] under round; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(sin)] under sin; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(cos)] under cos; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(tan)] under tan; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(asin)] under asin; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(acos)] under acos; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(atan)] under atan; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(atan2)] under atan2; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@113f3dbe] under sinh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@328bcac6] under cosh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@5c1d3ea9] under tanh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@3138506] under pi; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@6b299a17] under log; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(coalesce)] under coalesce; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(nullif)] under nullif; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(left)] under left; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(right)] under right; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(replace)] under replace; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(concat)] under concat; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(lower)] under lower; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(upper)] under upper; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(substring)] under substring; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(locate)] under locate; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(character_length)] under character_length; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : length -> character_length +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.LocatePositionEmulation@75e5b678] under position; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.InsertSubstringOverlayEmulation@47e1d2b] under overlay; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.TrimFunction@2985069a] under trim; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CastFunction@33ec4c4f] under cast; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@25b508c0] under collate; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.ExtractFunction@3acd4752] under extract; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(least)] under least; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(greatest)] under greatest; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CoalesceIfnullEmulation@5cab47c5] under ifnull; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(lpad)] under lpad; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(rpad)] under rpad; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.LpadRpadPadEmulation@55954812] under pad; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CastStrEmulation@61b37df1] under str; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.FormatFunction@7b0be4ea] under format; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.TimestampaddFunction@93e6f1e] under timestampadd; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.TimestampdiffFunction@6b92dd3b] under timestampdiff; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : dateadd -> timestampadd +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : datediff -> timestampdiff +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@1c4f1e3] under current_date; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@32b23fae] under current_time; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@96e7dc7] under current_timestamp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : current date -> current_date +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : current time -> current_time +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : current timestamp -> current_timestamp +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@61460497] under local_date; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@47abbab5] under local_time; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@64c7b2a1] under local_datetime; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@1ebd7bbb] under offset_datetime; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : local date -> local_date +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : local time -> local_time +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : local datetime -> local_datetime +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : offset datetime -> offset_datetime +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.CurrentFunction@4f0eb647] under instant; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : current_instant -> instant +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.SqlFunction@43f2cec4] under sql; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(cot)] under cot; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(radians)] under radians; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(degrees)] under degrees; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(log)] under log; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@6b299a17 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@4003ef60] under mod; prior registration was NamedSqmFunctionTemplate(mod) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(log10)] under log10; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(tanh)] under tanh; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@5c1d3ea9 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(sinh)] under sinh; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@113f3dbe +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(cosh)] under cosh; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@328bcac6 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(acosh)] under acosh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(asinh)] under asinh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(atanh)] under atanh; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(cbrt)] under cbrt; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(pi)] under pi; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@3138506 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(ltrim)] under ltrim; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(rtrim)] under rtrim; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(repeat)] under repeat; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(md5)] under md5; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(initcap)] under initcap; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(substr)] under substr; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(substr)] under substring; prior registration was NamedSqmFunctionTemplate(substring) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(translate)] under translate; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(to_number)] under to_number; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(to_char)] under to_char; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(to_date)] under to_date; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(to_timestamp)] under to_timestamp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.ConcatPipeFunction@11af6b24] under concat; prior registration was NamedSqmFunctionTemplate(concat) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(localtime)] under localtime; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(localtimestamp)] under localtimestamp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(localtime)] under local_time; prior registration was org.hibernate.dialect.function.CurrentFunction@47abbab5 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(localtimestamp)] under local_datetime; prior registration was org.hibernate.dialect.function.CurrentFunction@64c7b2a1 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.LengthFunction@341f35df] under character_length; prior registration was NamedSqmFunctionTemplate(character_length) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : length -> character_length +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.LengthFunction@377676a] under bit_length; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.LengthFunction@18bb6f11] under octet_length; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(ascii)] under ascii; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(chr)] under chr; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : char -> chr +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@5a6177e5] under position; prior registration was org.hibernate.dialect.function.LocatePositionEmulation@75e5b678 +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@171d00bb] under bitand; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@2fe96905] under bitor; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@6ce9480e] under bitxor; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@3d66d429] under bitnot; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(bit_and)] under bit_and; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(bit_or)] under bit_or; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(bool_and)] under bool_and; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : every -> bool_and +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(bool_or)] under bool_or; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : any -> bool_or +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@420103e6] under median; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(stddev)] under stddev; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(stddev_pop)] under stddev_pop; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(stddev_samp)] under stddev_samp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(variance)] under variance; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(var_pop)] under var_pop; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(var_samp)] under var_samp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(covar_pop)] under covar_pop; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(covar_samp)] under covar_samp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(corr)] under corr; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_avgx)] under regr_avgx; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_avgy)] under regr_avgy; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_count)] under regr_count; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_intercept)] under regr_intercept; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_r2)] under regr_r2; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_slope)] under regr_slope; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_sxx)] under regr_sxx; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_sxy)] under regr_sxy; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(regr_syy)] under regr_syy; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@cb7e0c] under insert; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.MultipatternSqmFunctionDescriptor@1ba9dc2d] under overlay; prior registration was org.hibernate.dialect.function.InsertSubstringOverlayEmulation@47e1d2b +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(soundex)] under soundex; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.MultipatternSqmFunctionDescriptor@29b140dd] under locate; prior registration was NamedSqmFunctionTemplate(locate) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(row_number)] under row_number; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(lag)] under lag; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(lead)] under lead; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(first_value)] under first_value; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(last_value)] under last_value; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(nth_value)] under nth_value; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.ListaggStringAggEmulation@5ceb146e] under listagg; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayConstructorFunction@6f9395ae] under array; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayConstructorFunction@75163979] under array_list; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayAggFunction@e98c9db] under array_agg; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayPositionFunction@3908af86] under array_position; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayPositionsFunction@1e326515] under array_positions; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayPositionsFunction@4417b88] under array_positions_list; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@87eafa5] under array_length; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayConcatFunction@ff9beb6] under array_concat; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayConcatElementFunction@1a0611d3] under array_prepend; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayConcatElementFunction@905fb24] under array_append; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayContainsOperatorFunction@4617018b] under array_contains; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayContainsOperatorFunction@21965b5b] under array_contains_nullable; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayOverlapsOperatorFunction@23e92670] under array_overlaps; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayOverlapsOperatorFunction@3f152915] under array_overlaps_nullable; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@22edab89] under array_get; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArraySetUnnestFunction@fce83cb] under array_set; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(array_remove)] under array_remove; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayRemoveIndexUnnestFunction@733f30ad] under array_remove_index; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@50948938] under array_slice; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(array_replace)] under array_replace; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@30963120] under array_trim; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayFillFunction@62b85785] under array_fill; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.PostgreSQLArrayFillFunction@11d17f2e] under array_fill_list; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.array.ArrayToStringFunction@479c0269] under array_to_string; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(make_date)] under make_date; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(make_time)] under make_time; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(make_timestamp)] under make_timestamp; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [NamedSqmFunctionTemplate(make_timestamptz)] under make_timestamptz; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.InverseDistributionFunction@18f0ef84] under mode; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.InverseDistributionFunction@799bf887] under percentile_cont; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.InverseDistributionFunction@7901044a] under percentile_disc; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.HypotheticalSetFunction@3ad13035] under rank; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.HypotheticalSetFunction@40b6a63] under dense_rank; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.HypotheticalSetFunction@3faf3105] under percent_rank; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.HypotheticalSetFunction@6e0fc12d] under cume_dist; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.PostgreSQLMinMaxFunction@541cbca9] under min; prior registration was NamedSqmFunctionTemplate(min) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.PostgreSQLMinMaxFunction@696f7477] under max; prior registration was NamedSqmFunctionTemplate(max) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@32f0706a] under bitxor; prior registration was org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@6ce9480e +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.PostgreSQLTruncRoundFunction@34678252] under round; prior registration was NamedSqmFunctionTemplate(round) +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.dialect.function.PostgreSQLTruncFunction@7db0f45c] under trunc; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:307] - Registering alternate key : truncate -> trunc +DEBUG 25-12-18 23:01:37[restartedMain] [SqmFunctionRegistry:90] - Registered SqmFunctionTemplate [org.hibernate.query.sqm.function.PatternBasedSqmFunctionDescriptor@13829b0e] under date_trunc; prior registration was null +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - abs(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double acos(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double acosh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean any(BOOLEAN predicate) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_agg(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_append( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_concat( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean array_contains(ARRAY haystackArray, OBJECT needleElementOrArray) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean array_contains_nullable(ARRAY haystackArray, OBJECT needleElementOrArray) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_fill(OBJECT element, INTEGER elementCount) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_fill_list(OBJECT element, INTEGER elementCount) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_get(ARRAY array, INTEGER index) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer array_length(ARRAY array) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_list( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean array_overlaps(ARRAY array0, OBJECT array1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean array_overlaps_nullable(ARRAY array0, OBJECT array1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer array_position(ARRAY array, OBJECT element[, INTEGER startPosition]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - int[] array_positions(ARRAY array, OBJECT element) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - List array_positions_list(ARRAY array, OBJECT element) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_prepend( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_remove( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_remove_index( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_replace(ARRAY array, OBJECT old, OBJECT new) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_set( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_slice(ARRAY array, INTEGER start, INTEGER end) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String array_to_string( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - array_trim(ARRAY array, INTEGER elementsToRemove) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer ascii(STRING arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double asin(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double asinh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double atan(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double atan2(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double atanh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - avg(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bit_and(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer bit_length(STRING_OR_CLOB arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bit_or(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bitand(arg0, arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bitnot(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bitor(arg0, arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - bitxor(arg0, arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean bool_and(BOOLEAN predicate) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean bool_or(BOOLEAN predicate) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - cast(arg as Type) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double cbrt(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - ceiling(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Character char(INTEGER arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer character_length(STRING_OR_CLOB arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Character chr(INTEGER arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - coalesce(arg0[, arg1[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String collate(STRING string as COLLATION collation) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - (STRING string0[, STRING string1[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double corr(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double cos(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double cosh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double cot(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long count([distinct ]{arg|*}) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double covar_pop(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double covar_samp(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double cume_dist([arg0[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Date current date +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Time current time +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp current timestamp +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Date current_date +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Instant current_instant +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Time current_time +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp current_timestamp +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - date_trunc(STRING field, TEMPORAL datetime) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - dateadd(TEMPORAL_UNIT field, INTEGER magnitude, TEMPORAL datetime) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long|Double datediff(TEMPORAL_UNIT field, TEMPORAL start, TEMPORAL end) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double degrees(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long dense_rank([arg0[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Boolean every(BOOLEAN predicate) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double exp(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - extract(TEMPORAL_UNIT field from TEMPORAL arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - first_valueANY value +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - floor(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String format(TEMPORAL datetime as STRING pattern) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - greatest(COMPARABLE arg0, COMPARABLE arg1[, arg2[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - ifnull(arg0, arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String initcap(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String insert(STRING string, INTEGER start, INTEGER length, STRING replacement) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Instant instant +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - lagANY value[, INTEGER offset[, ANY default]] +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - last_valueANY value +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - leadANY value[, INTEGER offset[, ANY default]] +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - least(COMPARABLE arg0, COMPARABLE arg1[, arg2[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String left(STRING string, INTEGER length) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer length(STRING_OR_CLOB arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String listagg(STRING arg0, STRING arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double ln(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalDate local date +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalDateTime local datetime +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalTime local time +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalDate local_date +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalDateTime local_datetime +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - LocalTime local_time +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Time localtime +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp localtimestamp +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer locate(STRING pattern, STRING string[, INTEGER start]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double log(NUMERIC arg0[, NUMERIC arg1]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double log10(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String lower(STRING string) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String lpad(STRING string, INTEGER length[, STRING padding]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String ltrim(STRING string[, STRING characters]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Date make_date(INTEGER arg0, INTEGER arg1, INTEGER arg2) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Time make_time(INTEGER arg0, INTEGER arg1, INTEGER arg2) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp make_timestamp(INTEGER arg0, INTEGER arg1, INTEGER arg2, INTEGER arg3, INTEGER arg4, INTEGER arg5) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp make_timestamptz(INTEGER arg0, INTEGER arg1, INTEGER arg2, INTEGER arg3, INTEGER arg4, INTEGER arg5[, INTEGER arg6]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - max(COMPARABLE arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String md5(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double median(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - min(COMPARABLE arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer mod(INTEGER arg0, INTEGER arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - mode() +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - nth_valueANY value, INTEGER nth +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - nullif(arg0, arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer octet_length(STRING_OR_CLOB arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - OffsetDateTime offset datetime +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - OffsetDateTime offset_datetime +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String overlay(string placing replacement from start[ for length]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String pad(STRING string with INTEGER length {leading|trailing}[ STRING character]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double percent_rank([arg0[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - percentile_cont(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - percentile_disc(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double pi +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer position(STRING pattern in STRING string) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double power(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double radians(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long rank([arg0[, ...]]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_avgx(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_avgy(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_count(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_intercept(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_r2(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_slope(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_sxx(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_sxy(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double regr_syy(NUMERIC arg0, NUMERIC arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String repeat(STRING string, INTEGER times) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String replace(STRING string, STRING pattern, STRING replacement) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String right(STRING string, INTEGER length) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - round(NUMERIC number[, INTEGER places]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long row_number() +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String rpad(STRING string, INTEGER length[, STRING padding]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String rtrim(STRING string[, STRING characters]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Integer sign(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double sin(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double sinh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String soundex(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Object sql +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double sqrt(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double stddev(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double stddev_pop(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double stddev_samp(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String str(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String substr(STRING string, INTEGER start[, INTEGER length]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String substring(STRING string{ from|,} INTEGER start[{ for|,} INTEGER length]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - sum(arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double tan(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double tanh(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - timestampadd(TEMPORAL_UNIT field, INTEGER magnitude, TEMPORAL datetime) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Long|Double timestampdiff(TEMPORAL_UNIT field, TEMPORAL start, TEMPORAL end) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String to_char(ANY arg0[, STRING arg1, STRING arg2]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Date to_date(STRING arg0[, STRING arg1, STRING arg2]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double to_number(STRING arg0[, STRING arg1, STRING arg2]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Timestamp to_timestamp(STRING arg0[, STRING arg1, STRING arg2]) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String translate(STRING arg0, STRING arg1, STRING arg2) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String trim([[{leading|trailing|both} ][STRING arg0 ]from] STRING arg1) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - trunc( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - truncate( ... ) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - String upper(STRING string) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double var_pop(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double var_samp(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [HQL_FUNCTIONS:100] - Double variance(NUMERIC arg) +DEBUG 25-12-18 23:01:37[restartedMain] [cache:48] - Starting QueryInterpretationCache(2048) +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=5, active=0, idle=5, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +6. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 (6) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +6. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +6. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +6. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@35fc8a0f +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryServiceRegistryImpl:105] - EventListenerRegistry access via ServiceRegistry is deprecated. Use `sessionFactory.getEventEngine().getListenerRegistry()` instead +DEBUG 25-12-18 23:01:37[restartedMain] [EntityCopyObserverFactoryInitiator:39] - Configured EntityCopyObserver strategy: disallow +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=6, active=0, idle=6, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +7. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 7 (7) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +7. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +7. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +7. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@2b20e37d +DEBUG 25-12-18 23:01:37[restartedMain] [ClassLoaderAccessImpl:60] - Not known whether passed class name [com.kospo.drm.model.Token] is safe +DEBUG 25-12-18 23:01:37[restartedMain] [ClassLoaderAccessImpl:62] - No temp ClassLoader provided; using live ClassLoader for loading potentially unsafe class : com.kospo.drm.model.Token +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=7, active=0, idle=7, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +8. Connection opened. {executed in 17ms} +open connections: 1 2 3 4 5 6 7 8 (8) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +8. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +8. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +8. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@482f2147 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=8, active=0, idle=8, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +9. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 (9) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +9. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +9. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +9. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@6ab9b32d +DEBUG 25-12-18 23:01:37[restartedMain] [BytecodeProviderImpl:237] - HHH000513: Unable to create the ReflectionOptimizer for [com.kospo.drm.model.Token]: private accessor [insDate] +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=9, active=0, idle=9, waiting=0) +DEBUG 25-12-18 23:01:37[restartedMain] [creation:92] - Starting post-init callbacks +DEBUG 25-12-18 23:01:37[restartedMain] [creation:242] - Starting PostInitCallbackEntry : EmbeddableMappingType(com.kospo.drm.model.Token#{id})#finishInitialization +DEBUG 25-12-18 23:01:37[restartedMain] [creation:242] - Starting PostInitCallbackEntry : Entity(com.kospo.drm.model.Token) `staticFetchableList` generator +DEBUG 25-12-18 23:01:37[restartedMain] [creation:242] - Starting PostInitCallbackEntry : EmbeddableMappingType(com.kospo.drm.model.Token#{id})#initColumnMappings +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +10. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 (10) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +10. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +10. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +10. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@1961016e +DEBUG 25-12-18 23:01:37[restartedMain] [create:32] - Created new SQL alias : t1_0 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=10, active=0, idle=10, waiting=0) +DEBUG 25-12-18 23:01:37[restartedMain] [create:112] - Registration of TableGroup [StandardTableGroup(com.kospo.drm.model.Token)] with identifierForTableGroup [com.kospo.drm.model.Token] for NavigablePath [com.kospo.drm.model.Token] +DEBUG 25-12-18 23:01:37[restartedMain] [create:112] - Registration of TableGroup [StandardVirtualTableGroup(com.kospo.drm.model.Token.{id})] with identifierForTableGroup [com.kospo.drm.model.Token.{id}] for NavigablePath [com.kospo.drm.model.Token.{id}] +DEBUG 25-12-18 23:01:37[restartedMain] [AST:67] - DomainResult Graph: + \-EntityResultImpl [com.kospo.drm.model.Token] + | +-BasicFetch [com.kospo.drm.model.Token.insDate] + | +-BasicFetch [com.kospo.drm.model.Token.token] + | \-BasicFetch [com.kospo.drm.model.Token.tokenExpire] + +DEBUG 25-12-18 23:01:37[restartedMain] [tree:46] - SQL AST Tree: + SelectStatement { + FromClause { + StandardTableGroup (t1 : com.kospo.drm.model.Token) { + primaryTableReference : token as t1_0 + TableGroupJoins { + join StandardVirtualTableGroup (null : com.kospo.drm.model.Token.{id}) { + primaryTableReference : token as t1_0 + } + } + } + } + } + +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +11. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 (11) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +11. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +11. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +11. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@3a81c092 +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractEntityPersister:2939] - Static SQL for entity: com.kospo.drm.model.Token +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractEntityPersister:2944] - Version select: select domain, ip from token where domain=? and ip=? +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractEntityPersister:393] - Insert (0): insert into token (ins_date,token,token_expire,domain,ip) values (?,?,?,?,?) +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractEntityPersister:393] - Update (0): update token set ins_date=?,token=?,token_expire=? where domain=? and ip=? +DEBUG 25-12-18 23:01:37[restartedMain] [AbstractEntityPersister:393] - Delete (0): delete from token where domain=? and ip=? +INFO 25-12-18 23:01:37[restartedMain] [JtaPlatformInitiator:59] - HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) +DEBUG 25-12-18 23:01:37[restartedMain] [TypeConfiguration$Scope:208] - Scoping TypeConfiguration [org.hibernate.type.spi.TypeConfiguration@1a47da57] to SessionFactoryImplementor [org.hibernate.internal.SessionFactoryImpl@3c96eeaf] +DEBUG 25-12-18 23:01:37[restartedMain] [NamedObjectRepository:243] - Checking 0 named HQL queries +DEBUG 25-12-18 23:01:37[restartedMain] [NamedObjectRepository:267] - Checking 0 named SQL queries +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.isConnectionDead(PoolBase.java:157) +1. Connection.isValid(5) returned true +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java:-1) +1. Connection.getAutoCommit() returned true +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:328) +1. PreparedStatement.new PreparedStatement returned +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:328) +1. Connection.prepareStatement(select * from information_schema.sequences) returned net.sf.log4jdbc.sql.jdbcapi.PreparedStatementSpy@7f50fd3a +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=11, active=1, idle=10, waiting=0) +INFO 25-12-18 23:01:37[restartedMain] [log4j2:243] - com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) +1. select * from information_schema.sequences {executed in 3 ms} +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) +1. ResultSet.new ResultSet returned +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) +1. PreparedStatement.executeQuery() returned net.sf.log4jdbc.sql.jdbcapi.ResultSetSpy@56ca0598 +INFO 25-12-18 23:01:37[restartedMain] [log4j2:390] - +|-----------------|----------------|--------------|----------|------------------|------------------------|--------------|------------|--------------|--------------|----------|-------------| +|sequence_catalog |sequence_schema |sequence_name |data_type |numeric_precision |numeric_precision_radix |numeric_scale |start_value |minimum_value |maximum_value |increment |cycle_option | +|-----------------|----------------|--------------|----------|------------------|------------------------|--------------|------------|--------------|--------------|----------|-------------| +|-----------------|----------------|--------------|----------|------------------|------------------------|--------------|------------|--------------|--------------|----------|-------------| + +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyResultSet.next(HikariProxyResultSet.java:-1) +1. ResultSet.next() returned false +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyResultSet.close(HikariProxyResultSet.java:-1) +1. ResultSet.close() returned void +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyStatement.close(ProxyStatement.java:75) +1. PreparedStatement.close() returned +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:371) +1. Connection.getMetaData() returned org.postgresql.jdbc.PgDatabaseMetaData@44ccd0b0 +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +12. Connection opened. {executed in 15ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 (12) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +12. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +12. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +12. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@60984f4b +INFO 25-12-18 23:01:37[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:258) +1. Connection.clearWarnings() returned +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryRegistry:52] - Initializing SessionFactoryRegistry : org.hibernate.internal.SessionFactoryRegistry@5054d9b3 +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryRegistry:74] - Registering SessionFactory: a91e7f79-01d0-4def-a9a2-d471e506d561 () +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryRegistry:81] - Not binding SessionFactory to JNDI, no JNDI name configured +DEBUG 25-12-18 23:01:37[restartedMain] [SessionFactoryImpl:341] - Instantiated SessionFactory +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=12, active=0, idle=12, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +13. Connection opened. {executed in 17ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 (13) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +13. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +13. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +13. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@3fed9389 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=13, active=0, idle=13, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +14. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (14) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +14. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +14. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +14. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@365cd13c +DEBUG 25-12-18 23:01:37[restartedMain] [StatisticsInitiator:86] - Statistics initialized [enabled=false] +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=14, active=0, idle=14, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +15. Connection opened. {executed in 17ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (15) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +15. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +15. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +15. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@1c602f76 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=15, active=0, idle=15, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +16. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (16) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +16. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +16. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +16. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@606de6c3 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=16, active=0, idle=16, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +17. Connection opened. {executed in 15ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 (17) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +17. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +17. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +17. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@67b1bcd4 +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=17, active=0, idle=17, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +18. Connection opened. {executed in 17ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 (18) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +18. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +18. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +18. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@4af3676d +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=18, active=0, idle=18, waiting=0) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +19. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 (19) +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +19. Connection.new Connection returned +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +19. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:37[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +19. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:37[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@591dca06 +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=19, active=0, idle=19, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +20. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (20) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +20. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +20. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +20. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@10c9c397 +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=20, active=0, idle=20, waiting=0) +INFO 25-12-18 23:01:38[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.isConnectionDead(PoolBase.java:157) +1. Connection.isValid(5) returned true +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +21. Connection opened. {executed in 16ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 (21) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +21. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +21. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +21. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@6469ad72 +INFO 25-12-18 23:01:38[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:371) +1. Connection.getMetaData() returned org.postgresql.jdbc.PgDatabaseMetaData@44ccd0b0 +INFO 25-12-18 23:01:38[restartedMain] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:258) +1. Connection.clearWarnings() returned +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=21, active=0, idle=21, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +22. Connection opened. {executed in 15ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 (22) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +22. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +22. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +22. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@6adda8ec +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=22, active=0, idle=22, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +23. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 (23) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +23. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +23. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +23. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@535a6ca8 +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + c.k.d.c.e.CustomExceptionHandler: + +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=23, active=0, idle=23, waiting=0) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + c.k.d.c.DrmController: + {POST [/api/token]}: search(HttpServletRequest,TokenRequest) + {POST [/api/token/generate]}: generate(HttpServletRequest,TokenRequest) + {POST [/api/drm/decrypt]}: decrypt(HttpServletRequest,DrmRequest) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.b.a.w.s.e.BasicErrorController: + { [/error]}: error(HttpServletRequest) + { [/error], produces [text/html]}: errorHtml(HttpServletRequest,HttpServletResponse) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.w.a.OpenApiWebMvcResource: + {GET [/api-docs.yaml], produces [application/vnd.oai.openapi]}: openapiYaml(HttpServletRequest,String,Locale) + {GET [/api-docs], produces [application/json]}: openapiJson(HttpServletRequest,String,Locale) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.w.u.SwaggerWelcomeWebMvc: + {GET [/swagger-ui.html]}: redirectToUi(HttpServletRequest) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.w.u.SwaggerConfigResource: + {GET [/api-docs/swagger-config], produces [application/json]}: openapiJson(HttpServletRequest) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +24. Connection opened. {executed in 17ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 (24) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +24. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +24. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +24. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@39e22804 +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:86] - 'beanNameHandlerMapping' {} +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=24, active=0, idle=24, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +25. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 (25) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +25. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +25. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +25. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@21ca890d +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:176] - 'resourceHandlerMapping' {/webjars/**=ResourceHttpRequestHandler [classpath [META-INF/resources/webjars/]], /**=ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]], /swagger-ui*/*swagger-initializer.js=ResourceHttpRequestHandler [classpath [META-INF/resources/webjars/]], /swagger-ui*/**=ResourceHttpRequestHandler [classpath [META-INF/resources/webjars/]]} +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=25, active=0, idle=25, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +26. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 (26) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +26. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +26. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +26. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@1d96b002 +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=26, active=0, idle=26, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +27. Connection opened. {executed in 20ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 (27) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +27. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +27. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +27. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@f3d5843 +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.RepositoryController: + {GET [/ || ], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: listRepositories() + {OPTIONS [/ || ], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: optionsForRepositories() + {HEAD [/ || ], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: headForRepositories() +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.RepositoryEntityController: + {GET [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: getItemResource(RootResourceInformation,Serializable,PersistentEntityResourceAssembler,HttpHeaders) + {PATCH [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: patchItemResource(RootResourceInformation,PersistentEntityResource,Serializable,PersistentEntityResourceAssembler,ETag,String) + {PUT [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: putItemResource(RootResourceInformation,PersistentEntityResource,Serializable,PersistentEntityResourceAssembler,ETag,String) + {DELETE [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: deleteItemResource(RootResourceInformation,Serializable,ETag,PersistentEntityResourceAssembler,String) + {HEAD [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: headForItemResource(RootResourceInformation,Serializable,PersistentEntityResourceAssembler) + {POST [/{repository}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: postCollectionResource(RootResourceInformation,PersistentEntityResource,PersistentEntityResourceAssembler,String) + {OPTIONS [/{repository}/{id}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: optionsForItemResource(RootResourceInformation) + {GET [/{repository}], produces [application/x-spring-data-compact+json || text/uri-list]}: getCollectionResourceCompact(RootResourceInformation,DefaultedPageable,Sort,RepresentationModelAssemblers) + {GET [/{repository}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: getCollectionResource(RootResourceInformation,DefaultedPageable,Sort,RepresentationModelAssemblers) + {OPTIONS [/{repository}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: optionsForCollectionResource(RootResourceInformation) + {HEAD [/{repository}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: headCollectionResource(RootResourceInformation,DefaultedPageable) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.RepositoryPropertyReferenceController: + {GET [/{repository}/{id}/{property}], produces [text/uri-list]}: followPropertyReferenceCompact(RootResourceInformation,Serializable,String,HttpHeaders,RepresentationModelAssemblers) + {DELETE [/{repository}/{id}/{property}/{propertyId}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: deletePropertyReferenceId(RootResourceInformation,Serializable,String,String) + {GET [/{repository}/{id}/{property}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: followPropertyReference(RootResourceInformation,Serializable,String,RepresentationModelAssemblers) + {GET [/{repository}/{id}/{property}/{propertyId}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: followPropertyReference(RootResourceInformation,Serializable,String,String,RepresentationModelAssemblers) + {[PATCH, PUT, POST] [/{repository}/{id}/{property}], consumes [application/json || application/x-spring-data-compact+json || text/uri-list], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: createPropertyReference(RootResourceInformation,HttpMethod,CollectionModel,Serializable,String) + {DELETE [/{repository}/{id}/{property}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: deletePropertyReference(RootResourceInformation,Serializable,String) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.RepositorySearchController: + {GET [/{repository}/search], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: listSearches(RootResourceInformation) + {HEAD [/{repository}/search], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: headForSearches(RootResourceInformation) + {OPTIONS [/{repository}/search/{search}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: optionsForSearch(RootResourceInformation,String) + {OPTIONS [/{repository}/search], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: optionsForSearches(RootResourceInformation) + {HEAD [/{repository}/search/{search}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: headForSearch(RootResourceInformation,String) + {GET [/{repository}/search/{search}], produces [application/hal+json || application/json || application/prs.hal-forms+json]}: executeSearch(RootResourceInformation,MultiValueMap,String,DefaultedPageable,Sort,HttpHeaders,RepresentationModelAssemblers) + {GET [/{repository}/search/{search}], produces [application/x-spring-data-compact+json]}: executeSearchCompact(RootResourceInformation,HttpHeaders,MultiValueMap,String,String,DefaultedPageable,Sort,RepresentationModelAssemblers) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.RepositorySchemaController: + {GET [/profile/{repository}], produces [application/schema+json]}: schema(RootResourceInformation) +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.a.AlpsController: + {GET [/profile/{repository}], produces [application/alps+json || */*]}: descriptor(RootResourceInformation) + {OPTIONS [/profile/{repository}], produces [application/alps+json]}: alpsOptions() +DEBUG 25-12-18 23:01:38[restartedMain] [Mappings:294] - + o.s.d.r.w.ProfileController: + {OPTIONS [/profile]}: profileOptions() + {GET [/profile]}: listAllFormsOfMetadata() +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=27, active=0, idle=27, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +28. Connection opened. {executed in 18ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 (28) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +28. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +28. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +28. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@50a79f16 +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=28, active=0, idle=28, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +29. Connection opened. {executed in 19ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 (29) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +29. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +29. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +29. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@69b4297 +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/api/token/generate'], Ant [pattern='/api/token/generate']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/api/token'], Ant [pattern='/api/token']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/v2/api-docs/**'], Ant [pattern='/v2/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger-resources/**'], Ant [pattern='/swagger-resources/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/v3/api-docs/**'], Ant [pattern='/v3/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger-ui/**'], Ant [pattern='/swagger-ui/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/swagger/**'], Ant [pattern='/swagger/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +WARN 25-12-18 23:01:38[restartedMain] [WebSecurity:292] - You are asking Spring Security to ignore Deferred [Mvc [pattern='/api-docs/**'], Ant [pattern='/api-docs/**']]. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead. +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=29, active=0, idle=29, waiting=0) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:365] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +30. Connection opened. {executed in 20ms} +open connections: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 (30) +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) +30. Connection.new Connection returned +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:404) +30. Connection.isReadOnly() returned false +INFO 25-12-18 23:01:38[HikariPool-1 connection adder] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) +30. Connection.getAutoCommit() returned true +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:728] - HikariPool-1 - Added connection net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@2f62f41c +DEBUG 25-12-18 23:01:38[HikariPool-1 connection adder] [HikariPool:405] - HikariPool-1 - After adding stats (total=30, active=0, idle=30, waiting=0) +DEBUG 25-12-18 23:01:38[restartedMain] [InternalLoggerFactory:59] - Using SLF4J as the default logging framework +INFO 25-12-18 23:01:39[restartedMain] [Http11NioProtocol:173] - Starting ProtocolHandler ["http-nio-0.0.0.0-8010"] +INFO 25-12-18 23:01:39[restartedMain] [RefreshScopeRefreshedEventListener:70] - Refreshing cached encryptable property sources on ServletWebServerInitializedEvent +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source systemProperties refreshed +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source systemEnvironment refreshed +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source random refreshed +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source Config resource 'class path resource [application-local.yml]' via location 'optional:classpath:/' refreshed +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source Config resource 'class path resource [application.yml]' via location 'optional:classpath:/' refreshed +INFO 25-12-18 23:01:39[restartedMain] [CachingDelegateEncryptablePropertySource:92] - Property Source devtools refreshed +INFO 25-12-18 23:01:39[restartedMain] [EncryptablePropertySourceConverter:105] - Skipping PropertySource configurationProperties [class org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource +INFO 25-12-18 23:01:39[restartedMain] [EncryptablePropertySourceConverter:105] - Skipping PropertySource servletConfigInitParams [class org.springframework.core.env.PropertySource$StubPropertySource +INFO 25-12-18 23:01:39[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource servletContextInitParams [org.springframework.web.context.support.ServletContextPropertySource] to EncryptableEnumerablePropertySourceWrapper +INFO 25-12-18 23:01:39[restartedMain] [EncryptablePropertySourceConverter:110] - Converting PropertySource Management Server [org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$1] to EncryptablePropertySourceWrapper +INFO 25-12-18 23:01:39[restartedMain] [Application:56] - Started Application in 5.225 seconds (process running for 5.669) +INFO 25-12-18 23:01:39[RMI TCP Connection(3)-192.168.1.227] [[/]:173] - Initializing Spring DispatcherServlet 'dispatcherServlet' +INFO 25-12-18 23:01:39[RMI TCP Connection(5)-192.168.1.227] [log4j2:197] - com.zaxxer.hikari.pool.PoolBase.isConnectionDead(PoolBase.java:157) +1. Connection.isValid(5) returned true +INFO 25-12-18 23:01:39[RMI TCP Connection(5)-192.168.1.227] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:371) +1. Connection.getMetaData() returned org.postgresql.jdbc.PgDatabaseMetaData@44ccd0b0 +INFO 25-12-18 23:01:39[RMI TCP Connection(5)-192.168.1.227] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:258) +1. Connection.clearWarnings() returned +INFO 25-12-18 23:01:39[RMI TCP Connection(5)-192.168.1.227] [log4j2:197] - com.zaxxer.hikari.pool.HikariProxyConnection.isValid(HikariProxyConnection.java:-1) +1. Connection.isValid(0) returned true +INFO 25-12-18 23:01:39[RMI TCP Connection(5)-192.168.1.227] [log4j2:197] - com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:258) +1. Connection.clearWarnings() returned diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..dd5b525 --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +drm api \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..1f76ea7 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'svcm' diff --git a/src/main/java/com/kospo/drm/Application.java b/src/main/java/com/kospo/drm/Application.java new file mode 100644 index 0000000..a2feddc --- /dev/null +++ b/src/main/java/com/kospo/drm/Application.java @@ -0,0 +1,21 @@ +package com.kospo.drm; + +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.servers.Server; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + +@OpenAPIDefinition(servers = { + @Server(url = "http://localhost:8010", description = "로컬 api"), + @Server(url = "http://hmsn.ink:8010", description = "개발 api"), + @Server(url = "https://svcm.hmsn.ink", description = "외부 api"), +}) +@EnableScheduling +@SpringBootApplication +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/src/main/java/com/kospo/drm/config/CorsPreflightHandler.java b/src/main/java/com/kospo/drm/config/CorsPreflightHandler.java new file mode 100644 index 0000000..a8752be --- /dev/null +++ b/src/main/java/com/kospo/drm/config/CorsPreflightHandler.java @@ -0,0 +1,19 @@ +package com.kospo.drm.config; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@RestControllerAdvice +public class CorsPreflightHandler { + @RequestMapping(method = RequestMethod.OPTIONS, path="/api/**") + public ResponseEntity options() { + return ResponseEntity.ok() + .header(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*") + .header(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "GET, POST, PUT, DELETE, OPTIONS") + .header(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "*") + .build(); + } +} diff --git a/src/main/java/com/kospo/drm/config/exception/CustomErrorResponse.java b/src/main/java/com/kospo/drm/config/exception/CustomErrorResponse.java new file mode 100644 index 0000000..3caa3d7 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/exception/CustomErrorResponse.java @@ -0,0 +1,21 @@ +package com.kospo.drm.config.exception; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +@Schema(name="errorResponse", description = "오류") +public class CustomErrorResponse { + @Schema(name="code", description = "오류 코드", example = "30000") + private String code; + @Schema(name="body", description = "오류 메시지", example = "오류 발생") + private String body; + @Schema(name="errTime", description = "오류 시간", example = "1761000247") + private long errTime; +} diff --git a/src/main/java/com/kospo/drm/config/exception/CustomExceptionHandler.java b/src/main/java/com/kospo/drm/config/exception/CustomExceptionHandler.java new file mode 100644 index 0000000..7ad60e5 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/exception/CustomExceptionHandler.java @@ -0,0 +1,132 @@ +package com.kospo.drm.config.exception; + + +import com.kospo.drm.exception.CustomException; +import com.kospo.drm.exception.CustomMessageException; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; + +import java.util.Date; + +@Slf4j +@ControllerAdvice +@Controller +public class CustomExceptionHandler extends ResponseEntityExceptionHandler { + + public static final String ANSI_RESET = "\u001B[0m"; + public static final String ANSI_YELLOW_COLOR = "\u001B[33m"; + + + @ExceptionHandler(CustomException.class) + @ResponseBody + public ResponseEntity customException(CustomException e, HandlerMethod method, HttpServletRequest request, WebRequest webRequest) { + + Date errorDate = new Date(); + String exceptionName = e.getClass().getSimpleName(); + String controllerName = method.getMethod().getDeclaringClass().getSimpleName(); + String methodName = method.getMethod().getName(); + int lineNumber = e.getStackTrace()[0].getLineNumber(); + String detail = e.getMessage(); + String requestURI = request.getRequestURI(); + + + + log.error(ANSI_YELLOW_COLOR + "[EVENT_TIME: {} | CONTROLLER_NAME : {} | METHOD_NAME : {} | EXCEPTION_LINE : {} | EXCEPTION_NAME : {} | DETAIL : {} | REQUEST_URI : {}]" + ANSI_RESET + , errorDate + , controllerName + , methodName + , lineNumber + , exceptionName + , detail + , requestURI); + + HttpHeaders resHeaders = new HttpHeaders(); + resHeaders.add("Content-Type", "application/json;charset=UTF-8"); + + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).headers(resHeaders).body( + CustomErrorResponse.builder() + .code(e.getErrorCode().getCode()) + .body(e.getErrorCode().getBody()) + .errTime(System.currentTimeMillis()).build() + ); + } + @ExceptionHandler(CustomMessageException.class) + @ResponseBody + public ResponseEntity customMessageException(CustomMessageException e, HandlerMethod method, HttpServletRequest request, WebRequest webRequest) { + + Date errorDate = new Date(); + String exceptionName = e.getClass().getSimpleName(); + String controllerName = method.getMethod().getDeclaringClass().getSimpleName(); + String methodName = method.getMethod().getName(); + int lineNumber = e.getStackTrace()[0].getLineNumber(); + String detail = e.getMessage(); + String requestURI = request.getRequestURI(); + + + + log.error(ANSI_YELLOW_COLOR + "[EVENT_TIME: {} | CONTROLLER_NAME : {} | METHOD_NAME : {} | EXCEPTION_LINE : {} | EXCEPTION_NAME : {} | DETAIL : {} | REQUEST_URI : {}]" + ANSI_RESET + , errorDate + , controllerName + , methodName + , lineNumber + , exceptionName + , detail + , requestURI); + + HttpHeaders resHeaders = new HttpHeaders(); + resHeaders.add("Content-Type", "application/json;charset=UTF-8"); + + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).headers(resHeaders).body( + CustomErrorResponse.builder() + .code(e.getCusMessage().getCode()) + .body(e.getCusMessage().getMessage()) + .errTime(System.currentTimeMillis()).build() + ); + } + + @ExceptionHandler(Exception.class) + public ResponseEntity handleException(Exception e, HandlerMethod method, HttpServletRequest request, WebRequest webRequest) { + +// Date errorDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime()); + Date errorDate = new Date(); + String exceptionName = e.getClass().getSimpleName(); + String controllerName = method.getMethod().getDeclaringClass().getSimpleName(); + String methodName = method.getMethod().getName(); + int lineNumber = e.getStackTrace()[0].getLineNumber(); + String detail = e.getMessage(); + String requestURI = request.getRequestURI(); + + + + log.error(ANSI_YELLOW_COLOR + "[EVENT_TIME: {} | CONTROLLER_NAME : {} | METHOD_NAME : {} | EXCEPTION_LINE : {} | EXCEPTION_NAME : {} | DETAIL : {} | REQUEST_URI : {}]" + ANSI_RESET + , errorDate + , controllerName + , methodName + , lineNumber + , exceptionName + , detail + , requestURI); + + + HttpHeaders resHeaders = new HttpHeaders(); + resHeaders.add("Content-Type", "application/json;charset=UTF-8"); + return ResponseEntity.status(500).headers(resHeaders).body( + CustomErrorResponse.builder() + .code(ErrorCode.INTERNAL_SERVER_ERROR.getCode()) + .body(ErrorCode.INTERNAL_SERVER_ERROR.getBody()) + .errTime(System.currentTimeMillis()).build() + ); + } + + +} diff --git a/src/main/java/com/kospo/drm/config/exception/ErrorCode.java b/src/main/java/com/kospo/drm/config/exception/ErrorCode.java new file mode 100644 index 0000000..23e7cac --- /dev/null +++ b/src/main/java/com/kospo/drm/config/exception/ErrorCode.java @@ -0,0 +1,65 @@ +package com.kospo.drm.config.exception; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public enum ErrorCode { + /*트랜잭션 관련*/ + FIND_ERR("20000", "조회에 실패했습니다."), + SAVE_ERR("20001", "저장에 실패했습니다."), + UPD_ERR("20002", "수정에 실패했습니다."), + DEL_ERR("20003", "삭제에 실패했습니다."), + APPR_ERR("20004", "결재가 완료 되지 않았습니다.."), + APPR_LOCK("20005", "결재 진행중 이거나 완료 상태로 수정이 불가합니다."), + APPR_SVY_ERR("20006", "조사완료 되어 등록이 불가합니다."), + /*토큰 관련*/ + EXPIRE_TOKEN("30000", "토큰이 만료 되었습니다."), + MALFORMED_JWT("30001", "JWT 문자열은 정확히 2개의 마침표 문자를 포함해야 합니다."), + /*bad request*/ + BIND_ERROR("40001", "파라미터를 다시 확인해주세요."), + /*존재 하지 않음*/ + NO_RESULT("44001", "존재하지 않는 데이터 입니다."), + NO_ACCOUNT("44011", "아이디 또는 비밀번호를 다시 확인해주세요."), + NO_MATCH_ACCOUNT("44012", "일치하는 사용자가 없습니다."), + NO_TOKEN("44021", "헤더에 토큰이 없습니다."), + NO_MATCH_TOKEN("44022", "일치 하지 않는 토큰입니다."), + NO_SAME_IP("44030", "등록된 아이피와 일치 하지 않습니다. 다시 로그인 해주세요"), + NO_SAME_DATA("44031", "사용자가 소유한 데이터가 아닙니다."), + No_SVY_NOT_EXECUTE("44032", "사전조사가 실행 되지 않았거나 등록 기간중 입니다."), + SAME_DATA("44020", "이미 등록된 데이터가 있습니다."), + /*권한 관련*/ + + AUTHENTICATION("43000", "사용자가 정보가 일치하지 않습니다."), + AUTHENTICATION_NOT_SUPPORT("43001", "허용되지 않은 사용자입니다."), + NO_REGISTER("43002", "사용자가 존재하지 않습니다."), + SLEEP_ACCOUNT("43003", "휴면 계정입니다. 개인정보에 약관에 동의해주세요."), + //500 INTERNAL SERVER ERROR + INTERNAL_SERVER_ERROR("50000", "서버 에러입니다. 유지보수관리자에게 연락주세요!"), + + /*로그인 관련*/ + LOGIN_ERR("60000", "사업자번호 또는 비밀번호가 일치 하지 않습니다."), + NOT_REGISTER("60001", "가입된 사업자가 아닙니다."), + ALREADY_REGISTER("60001", "이미 가입된 사업자 입니다."), + OLD_PWD_NOT_MATCH("60002", "현재 비밀번호가 일치 하지 않습니다."), + PWD_NOT_MATCH("60003", "비밀번호가 일치 하지 않습니다."), + EMAIL_VALIDATE_ERR("60004", "정상적인 이메일이 아닙니다."), + + /*결재관련*/ + PASS_APPR_TWO_PERSON("70001", "전결이 두명이상 될수 없습니다."), + PASS_APPR_MANIPULATE_DATA("70002", "변경 대상자 정보가 변조 되었습니다."), + + /*파일 관련*/ + FILE_NOT_FOUND_ERROR("80000", "파일이 존재 하지 않습니다."), + FILE_EXT_UPLOAD_ERROR("80001", "허용되지 않은 확장자 입니다."), + FILE_UPLOAD_ERROR("80002", "파일이 정상적이지 않습니다. 확인해주세요"), + FILE_DELETE_ERROR("80003", "파일 삭제중 오류가 발생했습니다. 확인해주세요"), + FILE_DOWNLOAD_ERROR("80004", "파일 다운로드에 실패 했습니다."), + FILE_REQUIRED("80005", "첨부파일은 필수 항목입니다."), + + NO_SIGNAL("90000", "응답 코드가 없습니다."); + + private final String code; + private final String body; +} diff --git a/src/main/java/com/kospo/drm/config/filter/CustomBasicAuthenticationFilter.java b/src/main/java/com/kospo/drm/config/filter/CustomBasicAuthenticationFilter.java new file mode 100644 index 0000000..b9a0ab2 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/filter/CustomBasicAuthenticationFilter.java @@ -0,0 +1,102 @@ +package com.kospo.drm.config.filter; + +import com.kospo.drm.config.exception.ErrorCode; +import com.kospo.drm.config.jwt.JwtUtil; +import com.kospo.drm.exception.*; +import com.kospo.drm.model.Token; +import com.kospo.drm.model.TokenId; +import com.kospo.drm.repository.TokenRepository; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.MalformedJwtException; +import io.jsonwebtoken.io.DecodingException; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; + +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +public class CustomBasicAuthenticationFilter extends BasicAuthenticationFilter { + private TokenRepository tokenRepository; + private JwtUtil jwtUtil; + + public CustomBasicAuthenticationFilter(AuthenticationManager authenticationManager, TokenRepository tokenRepository, JwtUtil jwtUtil) { + super(authenticationManager); + this.jwtUtil = jwtUtil; + this.tokenRepository = tokenRepository; + } + + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { + final String requestTokenHeader = request.getHeader("Authorization"); + boolean isAnonymous = false; + String jwtToken = null; + try { + jwtToken = requestTokenHeader.substring(7); + } catch (NullPointerException e) { + throw new CustomNoMatchTokenException(e.getMessage()); + } + String domain = ""; + String ip = ""; + try { + domain = jwtUtil.extractDomain(jwtToken); + ip = jwtUtil.extractIp(jwtToken); + } catch(ExpiredJwtException e) { + System.out.println(e.getMessage()); + throw new CustomExpireTokenException(e.getMessage()); + } catch (DecodingException e) { + System.out.println(e.getMessage()); + throw new CustomNoMatchTokenException(e.getMessage()); + } catch(MalformedJwtException e) { + System.out.println(e.getMessage()); + throw new CustomMalformedJwtException(e.getMessage()); + } + + Optional optionalToken = tokenRepository.findById(TokenId.builder() + .domain(domain) + .ip(ip) + .build()); + if(optionalToken.isPresent()) { + if(jwtUtil.validateToken(jwtToken, optionalToken.get())) { + UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(optionalToken.get(), null, null); + usernamePasswordAuthenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + SecurityContext securityContext = SecurityContextHolder.createEmptyContext(); + securityContext.setAuthentication(usernamePasswordAuthenticationToken); + SecurityContextHolder.setContext(securityContext); + SecurityContextHolder.getContext().getAuthentication(); + chain.doFilter(request, response); + SecurityContextHolder.clearContext(); + } + } else { + throw new CustomException(ErrorCode.AUTHENTICATION); + } + + + + } + + public CustomBasicAuthenticationFilter(AuthenticationManager authenticationManager) { + super(authenticationManager); + } + + public CustomBasicAuthenticationFilter(AuthenticationManager authenticationManager, AuthenticationEntryPoint authenticationEntryPoint) { + super(authenticationManager, authenticationEntryPoint); + } +} + diff --git a/src/main/java/com/kospo/drm/config/filter/LoggingFilter.java b/src/main/java/com/kospo/drm/config/filter/LoggingFilter.java new file mode 100644 index 0000000..e67db37 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/filter/LoggingFilter.java @@ -0,0 +1,18 @@ +package com.kospo.drm.config.filter; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.filter.Filter; +import ch.qos.logback.core.spi.FilterReply; + +public class LoggingFilter extends Filter { + @Override + public FilterReply decide(ILoggingEvent iLoggingEvent) { + if(iLoggingEvent.getMessage().contains("locale")) { + return FilterReply.DENY; + } else { + return FilterReply.ACCEPT; + } + } +} + + diff --git a/src/main/java/com/kospo/drm/config/filter/SecurityExceptionFilter.java b/src/main/java/com/kospo/drm/config/filter/SecurityExceptionFilter.java new file mode 100644 index 0000000..8f50f77 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/filter/SecurityExceptionFilter.java @@ -0,0 +1,104 @@ +package com.kospo.drm.config.filter; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.kospo.drm.config.exception.CustomErrorResponse; +import com.kospo.drm.config.exception.ErrorCode; +import com.kospo.drm.exception.*; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.filter.OncePerRequestFilter; + +import java.io.IOException; + +public class SecurityExceptionFilter extends OncePerRequestFilter { + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException { + ObjectMapper om = new ObjectMapper(); + try { + filterChain.doFilter(request, response); + } catch (CustomExpireTokenException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.EXPIRE_TOKEN.getCode()) + .body(ErrorCode.EXPIRE_TOKEN.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomNoAccountException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.NO_ACCOUNT.getCode()) + .body(ErrorCode.NO_ACCOUNT.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomNoMatchTokenException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.NO_MATCH_TOKEN.getCode()) + .body(ErrorCode.NO_MATCH_TOKEN.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomNoResultException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.NO_RESULT.getCode()) + .body(ErrorCode.NO_RESULT.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomNoTokenException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.NO_TOKEN.getCode()) + .body(ErrorCode.NO_TOKEN.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (ServletException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.INTERNAL_SERVER_ERROR.getCode()) + .body(ErrorCode.INTERNAL_SERVER_ERROR.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (IOException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.INTERNAL_SERVER_ERROR.getCode()) + .body(ErrorCode.INTERNAL_SERVER_ERROR.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomMalformedJwtException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.MALFORMED_JWT.getCode()) + .body(ErrorCode.MALFORMED_JWT.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } catch (CustomNoSameIpException e) { + response.setStatus(500); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().println( + om.writeValueAsString(CustomErrorResponse.builder() + .code(ErrorCode.NO_SAME_IP.getCode()) + .body(ErrorCode.NO_SAME_IP.getBody()) + .errTime(System.currentTimeMillis()).build()) + ); + } + } +} diff --git a/src/main/java/com/kospo/drm/config/jasypt/JasyptConfigAES.java b/src/main/java/com/kospo/drm/config/jasypt/JasyptConfigAES.java new file mode 100644 index 0000000..0dcf21c --- /dev/null +++ b/src/main/java/com/kospo/drm/config/jasypt/JasyptConfigAES.java @@ -0,0 +1,33 @@ +package com.kospo.drm.config.jasypt; + +import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; +import org.jasypt.encryption.StringEncryptor; +import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; +import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableEncryptableProperties +public class JasyptConfigAES { + @Value("${jasypt.encryptor.key}") + private String key; + + @Bean("jasyptEncryptorAES") + public StringEncryptor stringEncryptor() { + PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); + SimpleStringPBEConfig config = new SimpleStringPBEConfig(); + + config.setPassword(key); // 암호화키 + config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256"); // 알고리즘 + config.setKeyObtentionIterations("1000"); // 반복할 해싱 회수 + config.setPoolSize("1"); // 인스턴스 pool + config.setProviderName("SunJCE"); + config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); // salt 생성 클래스 + config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator"); + config.setStringOutputType("base64"); //인코딩 방식 + encryptor.setConfig(config); + return encryptor; + } +} diff --git a/src/main/java/com/kospo/drm/config/jwt/JwtRequestFilter.java b/src/main/java/com/kospo/drm/config/jwt/JwtRequestFilter.java new file mode 100644 index 0000000..8ff27eb --- /dev/null +++ b/src/main/java/com/kospo/drm/config/jwt/JwtRequestFilter.java @@ -0,0 +1,54 @@ +package com.kospo.drm.config.jwt; + +import com.kospo.drm.config.exception.ErrorCode; +import com.kospo.drm.exception.CustomExpireTokenException; +import com.kospo.drm.exception.CustomMalformedJwtException; +import com.kospo.drm.exception.CustomNoMatchTokenException; +import com.kospo.drm.repository.TokenRepository; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.MalformedJwtException; +import io.jsonwebtoken.io.DecodingException; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.web.filter.OncePerRequestFilter; + +import java.io.IOException; + +@RequiredArgsConstructor +public class JwtRequestFilter extends OncePerRequestFilter { + private final JwtUtil jwtUtil; + private final TokenRepository tokenRepository; + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + final String requestTokenHeader = request.getHeader("Authorization"); + boolean isAnonymous = false; + String domain = null; + String jwtToken = null; + if(requestTokenHeader != null && requestTokenHeader.startsWith("Bearer")) { + jwtToken = requestTokenHeader.substring(7); + try { + domain = jwtUtil.extractDomain(jwtToken); + } catch(ExpiredJwtException e) { + System.out.println(e.getMessage()); + throw new CustomExpireTokenException(e.getMessage()); + } catch (DecodingException e) { + System.out.println(e.getMessage()); + throw new CustomNoMatchTokenException(e.getMessage()); + } catch(MalformedJwtException e) { + System.out.println(e.getMessage()); + throw new CustomMalformedJwtException(e.getMessage()); + } + } else { + System.out.println("noToken"); + isAnonymous = true; + } +// String ip = jwtUtil.extractIp(jwtToken); +// if(!CommonUtils.getClientIp(request).equals(ip)) { +// throw new CustomNoSameIpException(ErrorCode.NO_SAME_IP.getBody()); +// } + filterChain.doFilter(request, response); + } +} diff --git a/src/main/java/com/kospo/drm/config/jwt/JwtUtil.java b/src/main/java/com/kospo/drm/config/jwt/JwtUtil.java new file mode 100644 index 0000000..67654cb --- /dev/null +++ b/src/main/java/com/kospo/drm/config/jwt/JwtUtil.java @@ -0,0 +1,172 @@ +package com.kospo.drm.config.jwt; + + +import com.kospo.drm.config.exception.ErrorCode; +import com.kospo.drm.config.utils.CommonUtils; +import com.kospo.drm.dto.res.TokenResponse; +import com.kospo.drm.exception.CustomException; +import com.kospo.drm.model.Token; +import io.jsonwebtoken.*; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; + +@Component +public class JwtUtil { + @Value("${jwt.key}") + private String SECRET_KEY; + + /* 토큰 사용자이름을 추출한다. */ + public String extractDomain(String token) { + return extractClaim(token, Claims::getSubject); + } + /* 토큰 IP을 추출한다. */ + public String extractIp(String token) { + return extractClaim(token, claims -> (String)claims.get("ip")); + } + + /* 토큰 만료시간을 추출한다. */ + public Date extractExpirationDate(String token) { + return extractClaim(token, Claims::getExpiration); + } + + + /* 토큰 정보를 추출한다. */ + private T extractClaim(String token, Function claimsResolver) { + final Claims claims = extractAllClaims(token); + return claimsResolver.apply(claims); + } + + /* 토큰 모든 정보를 추출한다. */ + private Claims extractAllClaims(String token) { + return Jwts.parserBuilder().setSigningKey(SECRET_KEY).build().parseClaimsJws(token).getBody(); + } + + /* 토큰 만료여부 확인. */ + private Boolean isTokenExpired(String token) { + return extractExpirationDate(token).before(new Date()); + } + + /* 토큰 엑서스 토큰을 생성한다. */ + public String generateAccessToken(Token token, Date expired) { + RequestAttributes reqAttr = RequestContextHolder.getRequestAttributes(); + ServletRequestAttributes servlReqAttr = (ServletRequestAttributes)reqAttr; + HttpServletRequest req = servlReqAttr.getRequest(); + Map claims = new HashMap<>(); + claims.put("domain", token.getId().getDomain()); + claims.put("ip", token.getId().getIp()); + return createAccessToken(claims, token.getId().getDomain(), expired); + } + + /* 토큰 엑서스 토큰을 생성한다. */ + private String createAccessToken(Map claims, String subject, Date expired) { + return Jwts.builder().setClaims(claims).setSubject(subject) + .setIssuedAt(new Date(System.currentTimeMillis())) + .setExpiration(expired) // 5minutes + .signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact(); + } + + /* 토큰 리플래쉬토큰을 생성한다. */ + public String generateRefreshToken(Token token, Date expired) { + return createRefreshToken(token.getId().getDomain(), expired); + } + + /* 토큰 리플래쉬토큰을 생성한다. */ + private String createRefreshToken(String subject, Date expired) { + return Jwts.builder().setSubject(subject) + .setIssuedAt(new Date(System.currentTimeMillis())) + .setExpiration(expired) // 30minutes + .signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact(); + } + + + /* 토큰 생성(엑서스, 리플레시) 동시 생성. */ + public TokenResponse generateToken(Token token) { + return TokenResponse.builder() + .accessToken(generateAccessToken(token, getAccessDate())) + .accessTokenExpired(getAccessDate().getTime()) +// .refreshToken(generateRefreshToken(token, getRefreshDate())) +// .refreshTokenExpired(getRefreshDate().getTime()) + .domain(token.getId().getDomain()).build(); + } + + /* 토큰 리플레쉬토큰으로 엑서스토큰을 재발급한다. */ + public TokenResponse renewalToken(String accessToken, Token token) { + if(validateToken(accessToken, token)) { + Claims claims = extractAllClaims(accessToken); + return TokenResponse.builder() + .accessToken(generateAccessToken(token, getAccessDate())) + .accessTokenExpired(getAccessDate().getTime()) +// .refreshToken(accessToken) +// .refreshTokenExpired(claims.getExpiration().getTime()) + .domain(token.getId().getDomain()).build(); + } else { + throw new CustomException(ErrorCode.EXPIRE_TOKEN); + } + } + + /*토큰 정보로 jws 정보를 맵핑한다..*/ + private Jws parseToken(String token) { + return Jwts.parserBuilder().setSigningKey(SECRET_KEY).build().parseClaimsJws(token); + } + + /* 토큰 리플레시토큰 만료기간을 연장한다. */ + public TokenResponse extendRefreshToken(String refreshToken) { + Date refreshDate = getRefreshDate(); + Jws jws = parseToken(refreshToken); + jws.getBody().setExpiration(refreshDate).getSubject(); + return TokenResponse.builder() + .refreshToken(refreshToken) + .refreshTokenExpired(refreshDate.getTime()).build(); + } + + + + /* 토큰 액세스토큰 만료기간을 연장한다. */ + public TokenResponse extendAccessToken(String AccessToken) { + Date accessDate = getAccessDate(); + Jws jws = parseToken(AccessToken); + jws.getBody().setExpiration(accessDate).getSubject(); + return TokenResponse.builder() + .accessToken(AccessToken) + .accessTokenExpired(accessDate.getTime()).build(); + } + + + + + /* 토큰 만료 여부 확인. */ + public Boolean validateToken(String accessToken, Token token) { + try { + final String domain = extractDomain(accessToken); + return (domain.equals(token.getId().getDomain()) && !isTokenExpired(accessToken)); + } catch(ExpiredJwtException e) { + return false; + } + + } + + /*리플레시토큰 만료기간 생성 30분*/ + private Date getRefreshDate() { + return new Date(System.currentTimeMillis() + (1000 * 60 * 60 * 4)); + } + + /*엑서스토큰 만료기간 생성 5분*/ + private Date getAccessDate() { + Calendar cal = Calendar.getInstance(); + Date dt = new Date(); + cal.setTime(dt); + cal.add(Calendar.YEAR, 30); + return cal.getTime(); + } +} \ No newline at end of file diff --git a/src/main/java/com/kospo/drm/config/security/PasswordEncoder.java b/src/main/java/com/kospo/drm/config/security/PasswordEncoder.java new file mode 100644 index 0000000..8dc53e6 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/security/PasswordEncoder.java @@ -0,0 +1,40 @@ +package com.kospo.drm.config.security; + +import org.postgresql.shaded.com.ongres.scram.common.bouncycastle.pbkdf2.SHA256Digest; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.codec.Hex; +import org.springframework.security.crypto.password.*; +import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Map; + +public class PasswordEncoder { + + public String sha256Encoding(String password) { + String encPassword = ""; + MessageDigest digest = null; + try { + digest = MessageDigest.getInstance("SHA-256"); + byte[] hash = digest.digest(password.getBytes(StandardCharsets.UTF_8)); + encPassword = new String(Hex.encode(hash)); + return encPassword; + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } + + } + + public boolean matches(String passwd1, String passwd2) { + if(passwd2.equals(sha256Encoding(passwd1))) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/kospo/drm/config/security/SecurityConfig.java b/src/main/java/com/kospo/drm/config/security/SecurityConfig.java new file mode 100644 index 0000000..ed5d65c --- /dev/null +++ b/src/main/java/com/kospo/drm/config/security/SecurityConfig.java @@ -0,0 +1,114 @@ +package com.kospo.drm.config.security; + +import com.kospo.drm.config.filter.CustomBasicAuthenticationFilter; +import com.kospo.drm.config.filter.SecurityExceptionFilter; +import com.kospo.drm.config.jwt.JwtUtil; +import com.kospo.drm.repository.TokenRepository; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.session.SessionRegistry; +import org.springframework.security.core.session.SessionRegistryImpl; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.authentication.session.RegisterSessionAuthenticationStrategy; +import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.CorsConfigurationSource; + +import java.util.List; + +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +@RequiredArgsConstructor +public class SecurityConfig { + private final JwtUtil jwtUtil; + private final TokenRepository tokenRepository; + + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http, + TokenRepository tokenRepository) throws Exception { + http + .authorizeHttpRequests(authorizationManagerRequestMatcherRegistry -> authorizationManagerRequestMatcherRegistry + .requestMatchers("/admin*").hasRole("ADMIN") + .anyRequest().authenticated() + ) + .csrf(AbstractHttpConfigurer::disable) + .formLogin(httpSecurityFormLoginConfigurer -> httpSecurityFormLoginConfigurer.disable()) + .addFilterBefore(new CustomBasicAuthenticationFilter(authenticationManager(), tokenRepository, jwtUtil), UsernamePasswordAuthenticationFilter.class) +// .addFilterBefore(new SecurityExceptionFilter(), JwtRequestFilter.class) + .addFilterBefore(new SecurityExceptionFilter(), CustomBasicAuthenticationFilter.class) + .headers(httpSecurityHeadersConfigurer -> httpSecurityHeadersConfigurer.frameOptions(frameOptionsConfig -> frameOptionsConfig.disable())) + .sessionManagement(httpSecuritySessionManagementConfigurer -> + httpSecuritySessionManagementConfigurer + .maximumSessions(1) + .sessionRegistry(sessionRegistry()) + ) + .cors(httpSecurityCorsConfigurer -> httpSecurityCorsConfigurer.configurationSource(new CorsConfigurationSource() { + @Override + public CorsConfiguration getCorsConfiguration(HttpServletRequest request) { + CorsConfiguration config = new CorsConfiguration(); +// String origin = request.getHeader("Origin"); + config.setAllowCredentials(true); + config.setAllowedOrigins(List.of("https://dmz.hmsn.ink","http://localhost:3000", "http://hmsn.ink:3000", "http://hmsn.ink:8010", "http://hmsn.ink", "https://svcm.hmsn.ink", "http://182.227.15.92:3000")); + config.setAllowedMethods(List.of("POST","GET","DELETE","PUT","OPTIONS")); + config.setAllowedHeaders(List.of("*")); + config.setExposedHeaders(List.of("*")); + return config; + } + })); + return http.build(); + } + + private String getEncoding (String str) { + BCryptPasswordEncoder b = new BCryptPasswordEncoder(); + return b.encode(str); + } + + @Bean + public SessionRegistry sessionRegistry() { + return new SessionRegistryImpl(); + } + + + @Bean + public AuthenticationManager authenticationManager() { + AuthenticationManager manager = new AuthenticationManager() { + @Override + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + return authentication; + } + }; + return manager; + } + + + /*특정 url 필터 제외 처리*/ + @Bean + public WebSecurityCustomizer webSecurityCustomizer() { + return (web) -> web.ignoring().requestMatchers( + "/api/token/generate", "/api/token" + // -- Swagger UI v2 + , "/v2/api-docs/**", "/swagger-resources/**", "/v3/api-docs/**" + , "/swagger-ui/**", "/swagger/**", "/api-docs/**" + ); + } + + + @Bean + public SessionAuthenticationStrategy sessionAuthenticationStrategy() { + return new RegisterSessionAuthenticationStrategy(sessionRegistry()); + } +} + diff --git a/src/main/java/com/kospo/drm/config/security/SecurityWebInitializer.java b/src/main/java/com/kospo/drm/config/security/SecurityWebInitializer.java new file mode 100644 index 0000000..9df6c50 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/security/SecurityWebInitializer.java @@ -0,0 +1,6 @@ +package com.kospo.drm.config.security; + +import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; + +public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer { +} diff --git a/src/main/java/com/kospo/drm/config/swagger/SwaggerConfig.java b/src/main/java/com/kospo/drm/config/swagger/SwaggerConfig.java new file mode 100644 index 0000000..dc3a8ea --- /dev/null +++ b/src/main/java/com/kospo/drm/config/swagger/SwaggerConfig.java @@ -0,0 +1,45 @@ +package com.kospo.drm.config.swagger; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SwaggerConfig { + private final String JWTSCHEMENAME = "jwtAuth"; + private SecurityRequirement securityRequirement = new SecurityRequirement().addList(JWTSCHEMENAME); + + @Bean + public OpenAPI openAPI() { +// return new OpenAPI() +// .info(apiInfo()) +// .components(new Components().addSecuritySchemes("basicScheme", new SecurityScheme() +// .type(SecurityScheme.Type.HTTP).scheme("basic"))); +// } + + return new OpenAPI() + .info(apiInfo()) + .addSecurityItem(securityRequirement) + .components(new Components() + .addSecuritySchemes(JWTSCHEMENAME, new SecurityScheme() + .name(JWTSCHEMENAME) + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT") + .name("Authentication")) + ); + } + + + + private Info apiInfo() { + return new Info() + .title("소액계약거래") + .description("소액계약거래 api") + .version("1.0.0"); + } +} diff --git a/src/main/java/com/kospo/drm/config/utils/CommonUtils.java b/src/main/java/com/kospo/drm/config/utils/CommonUtils.java new file mode 100644 index 0000000..5a52255 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/utils/CommonUtils.java @@ -0,0 +1,144 @@ +package com.kospo.drm.config.utils; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Sort; + +import javax.xml.bind.DatatypeConverter; +import java.io.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + + +@Slf4j +public class CommonUtils { + private static HashMap>> listenings; + + public CommonUtils() { + + } + + public static String getClientIp(HttpServletRequest request) { + String ip = ""; + ip = request.getHeader("X-FORWARDED-FOR"); + if (ip == null) { + ip = request.getHeader("Proxy-Client-IP"); + log.info("Proxy-Client-IP : " + ip); + } + if (ip == null) { + ip = request.getHeader("WL-Proxy-Client-IP"); + log.info("WL-Proxy-Client-IP : " + ip); + } + if (ip == null) { + ip = request.getHeader("HTTP_CLIENT_IP"); + log.info("HTTP_CLIENT_IP : " + ip); + } + if (ip == null) { + ip = request.getHeader("HTTP_X_FORWARDED_FOR"); + log.info("HTTP_X_FORWARDED_FOR : " + ip); + } + if (ip == null) { + ip = request.getRemoteAddr(); + log.info("getRemoteAddr : "+ip); + } + log.info("Result : IP Address : "+ip); + return ip; + } + + public static Sort convertSort(String field) { + String[] propertyAndDirection = field.split(","); + if(propertyAndDirection.length == 1) propertyAndDirection = field.split(" "); + String property = propertyAndDirection[0]; + Sort.Direction direction = Sort.DEFAULT_DIRECTION; + if(propertyAndDirection.length > 1) { + String directionString = propertyAndDirection[1]; + direction = Sort.Direction.fromOptionalString(directionString) + .orElse(Sort.DEFAULT_DIRECTION); + } + Sort.Order order = new Sort.Order(direction, property); + return Sort.by(order); + } + + + public static String dateFormat(Date setDate, String pattern) { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + return sdf.format(setDate); + } + + + public static String dateFormat(String pattern) { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + return sdf.format(new Date()); + } + + public static Date plusDays(Date dt, int day) { + Calendar cal = Calendar.getInstance(); + cal.setTime(dt); + cal.add(Calendar.DAY_OF_MONTH, day); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + System.out.println(sdf.format(cal.getTime())); + return cal.getTime(); + } + + public static String stringToPlusYear(String str, int year) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date dt = null; + try { + dt = sdf.parse(str); + } catch (ParseException e) { + throw new RuntimeException(e); + } + Calendar cal = Calendar.getInstance(); + cal.setTime(dt); + cal.add(Calendar.YEAR, year); + + SimpleDateFormat result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return result.format(cal.getTime()); + } + + public static String stringToPlusDay(String str, String pattern, int day) { + SimpleDateFormat sdf = new SimpleDateFormat( pattern); + Date dt = null; + try { + dt = sdf.parse(str); + } catch (ParseException e) { + throw new RuntimeException(e); + } + Calendar cal = Calendar.getInstance(); + cal.setTime(dt); + cal.add(Calendar.DAY_OF_MONTH, day); + + SimpleDateFormat result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return result.format(cal.getTime()); + } + + public static Date stringToDate(String dd) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + Date result = null; + try { + result = sdf.parse(dd); + System.out.println(sdf.format(result)); + } catch (ParseException e) { + throw new RuntimeException(e); + } + return result; + } + + public static Date stringToDate(String dd, String pattern) { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + Date result = null; + try { + result = sdf.parse(dd); + System.out.println(sdf.format(result)); + } catch (ParseException e) { + throw new RuntimeException(e); + } + return result; + } +} \ No newline at end of file diff --git a/src/main/java/com/kospo/drm/config/utils/CryptoUtil.java b/src/main/java/com/kospo/drm/config/utils/CryptoUtil.java new file mode 100644 index 0000000..eb6eddf --- /dev/null +++ b/src/main/java/com/kospo/drm/config/utils/CryptoUtil.java @@ -0,0 +1,89 @@ +package com.kospo.drm.config.utils; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Configurable; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; +import org.springframework.util.FileCopyUtils; + +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.security.*; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.RSAKeyGenParameterSpec; +import java.security.spec.X509EncodedKeySpec; +import java.util.Base64; + +public class CryptoUtil { + + public static String encrypt(String plainText) throws Exception { + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.ENCRYPT_MODE, loadPublicKey()); + byte[] encryptedBytes = cipher.doFinal(plainText.getBytes()); + return Base64.getEncoder().encodeToString(encryptedBytes); + } + + public static String decrypt(String encryptText) throws Exception { + encryptText = encryptText.replaceAll(" ", "+"); + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.DECRYPT_MODE, loadPrivateKey()); + byte[] decryptBytes = cipher.doFinal(Base64.getDecoder().decode(encryptText)); + return new String(decryptBytes); + } + + private static PublicKey loadPublicKey() throws NoSuchAlgorithmException, InvalidKeySpecException, IOException { + ClassPathResource resource = new ClassPathResource("public.key"); + byte[] keyBytes = FileCopyUtils.copyToByteArray(resource.getInputStream()); + X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + return keyFactory.generatePublic(spec); + } + + private static PrivateKey loadPrivateKey() throws NoSuchAlgorithmException, InvalidKeySpecException, IOException { + ClassPathResource resource = new ClassPathResource("private.key"); + byte[] keyBytes = FileCopyUtils.copyToByteArray(resource.getInputStream()); + PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + return keyFactory.generatePrivate(spec); + } + + private static byte[] readKeyFromFile(String fileName) { + File file = new File(fileName); + byte[] keyBytes = new byte[(int) file.length()]; + try(FileInputStream fis = new FileInputStream(file)) { + fis.read(keyBytes); + } catch (IOException e) { + throw new RuntimeException(e); + } + + return keyBytes; + } + + private static void saveKeyToFile(String fileName, byte[] keyBytes) { + File file = new File(fileName); + try(FileOutputStream fos = new FileOutputStream(file)) { + fos.write(keyBytes); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public static void main(String[] args) { +// System.out.println(encrypt("psn14020")); +// KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA"); +// keygen.initialize(new RSAKeyGenParameterSpec(2048, RSAKeyGenParameterSpec.F4)); +// KeyPair pair = keygen.generateKeyPair(); +// +// saveKeyToFile("C:\\Users\\psn14020\\IdeaProjects\\talk\\src\\main\\resources\\private.key", pair.getPrivate().getEncoded()); +// saveKeyToFile("C:\\Users\\psn14020\\IdeaProjects\\talk\\src\\main\\resources\\public.key", pair.getPublic().getEncoded()); + } +} diff --git a/src/main/java/com/kospo/drm/config/utils/FileUtils.java b/src/main/java/com/kospo/drm/config/utils/FileUtils.java new file mode 100644 index 0000000..33a9679 --- /dev/null +++ b/src/main/java/com/kospo/drm/config/utils/FileUtils.java @@ -0,0 +1,70 @@ +package com.kospo.drm.config.utils; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +import javax.xml.bind.DatatypeConverter; +import java.awt.image.BufferedImage; +import java.io.*; + +@Component +public class FileUtils { + + public synchronized boolean fileUpload(String full, String base64) { + boolean result = false; + File file = new File(full); + + BufferedOutputStream bos = null; + + try { + byte[] data = DatatypeConverter.parseBase64Binary(base64); + bos = new BufferedOutputStream(new FileOutputStream(file)); + bos.write(data); + bos.flush(); + result = true; + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + if (bos != null) { + try { + bos.close(); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } + } + return result; + } + + public synchronized boolean fileDelete(String full) { + File file = new File(full); + if(!file.exists()) { + return false; + } else { + file.delete(); + return true; + } + } + + public synchronized byte[] fileRead(String full) { + File file = new File(full); + if(file.exists()) { + BufferedImage originalImage = null; + FileInputStream fis = null; + + try { + fis = new FileInputStream(file); + + return fis.readAllBytes(); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + return null; + } +} diff --git a/src/main/java/com/kospo/drm/config/utils/XmlUtils.java b/src/main/java/com/kospo/drm/config/utils/XmlUtils.java new file mode 100644 index 0000000..e92f6df --- /dev/null +++ b/src/main/java/com/kospo/drm/config/utils/XmlUtils.java @@ -0,0 +1,42 @@ +package com.kospo.drm.config.utils; + +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Marshaller; +import jakarta.xml.bind.Unmarshaller; +import org.springframework.context.annotation.Configuration; + +import javax.xml.bind.DatatypeConverter; +import java.awt.image.BufferedImage; +import java.io.*; + +@Configuration +public class XmlUtils { + + public Object xmlToModel(String xml , Class cla) throws JAXBException, IOException, NoSuchMethodException { + ByteArrayInputStream bais = new ByteArrayInputStream(xml.getBytes()); + JAXBContext jaxbContext = JAXBContext.newInstance(cla); + Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); + + Object obj = unmarshaller.unmarshal(bais); + + bais.close(); + return obj; + } + + public String modelToXml(Object obj) throws JAXBException, IOException { + JAXBContext jaxbContext = JAXBContext.newInstance(obj.getClass()); + Marshaller marshaller = jaxbContext.createMarshaller(); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + marshaller.marshal(obj, baos); + + String list = baos.toString(); + + baos.close(); + + return list; + } +} diff --git a/src/main/java/com/kospo/drm/controller/DrmController.java b/src/main/java/com/kospo/drm/controller/DrmController.java new file mode 100644 index 0000000..647a062 --- /dev/null +++ b/src/main/java/com/kospo/drm/controller/DrmController.java @@ -0,0 +1,89 @@ +package com.kospo.drm.controller; + +import com.kospo.drm.config.exception.CustomErrorResponse; +import com.kospo.drm.dto.req.DrmRequest; +import com.kospo.drm.dto.req.TokenRequest; +import com.kospo.drm.dto.res.DrmResponse; +import com.kospo.drm.dto.res.TokenResponse; +import com.kospo.drm.service.DrmService; +import com.kospo.drm.service.TokenService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@Tag(name = "Drm Api", description = "drm 관리") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api") +public class DrmController { + private final TokenService tokenService; + private final DrmService drmService; + + @Operation(summary = "복호화", description = "문서파일 복호화") + @ApiResponses({ + @ApiResponse(description = "Success", responseCode = "200", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {DrmResponse.class }))), + @ApiResponse(description = "Not found", responseCode = "404", + content = @Content(mediaType = "text/plain", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Internal Error", responseCode = "500", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {CustomErrorResponse.class }))) + }) + @PostMapping("/drm/decrypt") + public ResponseEntity decrypt( + HttpServletRequest request, + @RequestBody DrmRequest drmRequest + ) { + + return ResponseEntity.ok(drmService.decrypt(drmRequest)); + } + + @Operation(summary = "도메인 등록", description = "토큰을 생성한다.") + @ApiResponses({ + @ApiResponse(description = "Success", responseCode = "200", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {TokenResponse.class }))), + @ApiResponse(description = "Not found", responseCode = "404", + content = @Content(mediaType = "text/plain", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Internal Error", responseCode = "500", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {CustomErrorResponse.class }))) + }) + @PostMapping("/token/generate") + public ResponseEntity generate( + HttpServletRequest request, + @RequestBody TokenRequest tokenRequest + ) { + return ResponseEntity.ok(tokenService.generateToken(tokenRequest)); + } + + @Operation(summary = "토큰 조회", description = "도메인 아이피로 토큰 조회") + @ApiResponses({ + @ApiResponse(description = "Success", responseCode = "200", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {TokenResponse.class }))), + @ApiResponse(description = "Not found", responseCode = "404", + content = @Content(mediaType = "text/plain", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Internal Error", responseCode = "500", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {CustomErrorResponse.class }))) + }) + @PostMapping("/token") + public ResponseEntity search( + HttpServletRequest request, + @RequestBody TokenRequest tokenRequest + ) { + return ResponseEntity.ok(tokenService.generateToken(tokenRequest)); + } +} diff --git a/src/main/java/com/kospo/drm/dto/req/DrmRequest.java b/src/main/java/com/kospo/drm/dto/req/DrmRequest.java new file mode 100644 index 0000000..e69e5a0 --- /dev/null +++ b/src/main/java/com/kospo/drm/dto/req/DrmRequest.java @@ -0,0 +1,30 @@ +package com.kospo.drm.dto.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(description = "암호화 목록") +public class DrmRequest { + @Schema(description = "첨부파일명") + private List encryptFiles; + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + @Builder + @Schema(description = "암호화 파일") + public static class EncryptFile { + @Schema(description = "첨부파일명") + private String fileName; + @Schema(description = "첨부파일(byte)") + private String data; + } +} diff --git a/src/main/java/com/kospo/drm/dto/req/TokenRequest.java b/src/main/java/com/kospo/drm/dto/req/TokenRequest.java new file mode 100644 index 0000000..1c4e4d8 --- /dev/null +++ b/src/main/java/com/kospo/drm/dto/req/TokenRequest.java @@ -0,0 +1,17 @@ +package com.kospo.drm.dto.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(description = "토큰 생성") +public class TokenRequest { + @Schema(description = "도메인") + private String domain; + @Schema(description = "아이피") + private String ip; +} diff --git a/src/main/java/com/kospo/drm/dto/res/DrmResponse.java b/src/main/java/com/kospo/drm/dto/res/DrmResponse.java new file mode 100644 index 0000000..c582794 --- /dev/null +++ b/src/main/java/com/kospo/drm/dto/res/DrmResponse.java @@ -0,0 +1,31 @@ +package com.kospo.drm.dto.res; + +import com.kospo.drm.dto.req.DrmRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(description = "복호화 목록") +public class DrmResponse { + @Schema(description = "첨부파일명") + private List decryptFiles; + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + @Builder + @Schema(description = "복호화 파일") + public static class DecryptFile { + @Schema(description = "첨부파일명") + private String fileName; + @Schema(description = "첨부파일(byte)") + private String data; + } +} diff --git a/src/main/java/com/kospo/drm/dto/res/TokenResponse.java b/src/main/java/com/kospo/drm/dto/res/TokenResponse.java new file mode 100644 index 0000000..67db5a3 --- /dev/null +++ b/src/main/java/com/kospo/drm/dto/res/TokenResponse.java @@ -0,0 +1,40 @@ +package com.kospo.drm.dto.res; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.kospo.drm.model.Token; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@Schema(name = "TokenResponse", description = "토큰") +public class TokenResponse implements Serializable { + @Schema(name = "domain", description = "도메인주소") + private String domain; + @Schema(name = "accessToken", description = "엑서스 토큰") + private String accessToken; + @Schema(name = "accessTokenExpired", description = "엑서스 토큰 만료시간") + private Long accessTokenExpired; + @Schema(name = "refreshToken", description = "리플레시 토큰") + private String refreshToken; + @Schema(name = "refreshTokenExpired", description = "리플레시 토큰 만료시간") + private Long refreshTokenExpired; + + public static TokenResponse from(Token token) { + return TokenResponse.builder() + .accessToken(token.getToken()) + .domain(token.getId().getDomain()) + .accessTokenExpired(token.getTokenExpire()) + .build(); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomException.java b/src/main/java/com/kospo/drm/exception/CustomException.java new file mode 100644 index 0000000..4ce2231 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomException.java @@ -0,0 +1,14 @@ +package com.kospo.drm.exception; + + +import com.kospo.drm.config.exception.ErrorCode; +import lombok.*; + +@Getter +public class CustomException extends RuntimeException{ + private ErrorCode errorCode; + + public CustomException(ErrorCode errorCode) { + this.errorCode = errorCode; + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomExpireTokenException.java b/src/main/java/com/kospo/drm/exception/CustomExpireTokenException.java new file mode 100644 index 0000000..a17189a --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomExpireTokenException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomExpireTokenException extends RuntimeException{ + public CustomExpireTokenException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomMalformedJwtException.java b/src/main/java/com/kospo/drm/exception/CustomMalformedJwtException.java new file mode 100644 index 0000000..b757622 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomMalformedJwtException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomMalformedJwtException extends RuntimeException{ + public CustomMalformedJwtException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomMessageException.java b/src/main/java/com/kospo/drm/exception/CustomMessageException.java new file mode 100644 index 0000000..975f1f0 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomMessageException.java @@ -0,0 +1,25 @@ +package com.kospo.drm.exception; + + +import com.kospo.drm.config.exception.ErrorCode; +import lombok.*; + +@Getter +public class CustomMessageException extends RuntimeException{ + private CusMessage cusMessage; + + @NoArgsConstructor + @AllArgsConstructor + @Data + @Builder + public static class CusMessage { + String code; + String message; + } + + + + public CustomMessageException(CusMessage cusMessage) { + this.cusMessage = cusMessage; + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomNoAccountException.java b/src/main/java/com/kospo/drm/exception/CustomNoAccountException.java new file mode 100644 index 0000000..b7cad58 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomNoAccountException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomNoAccountException extends RuntimeException{ + public CustomNoAccountException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomNoMatchTokenException.java b/src/main/java/com/kospo/drm/exception/CustomNoMatchTokenException.java new file mode 100644 index 0000000..93ccc25 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomNoMatchTokenException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomNoMatchTokenException extends RuntimeException{ + public CustomNoMatchTokenException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomNoResultException.java b/src/main/java/com/kospo/drm/exception/CustomNoResultException.java new file mode 100644 index 0000000..bd60bf1 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomNoResultException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomNoResultException extends RuntimeException{ + public CustomNoResultException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomNoSameIpException.java b/src/main/java/com/kospo/drm/exception/CustomNoSameIpException.java new file mode 100644 index 0000000..6addf30 --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomNoSameIpException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomNoSameIpException extends RuntimeException{ + public CustomNoSameIpException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/exception/CustomNoTokenException.java b/src/main/java/com/kospo/drm/exception/CustomNoTokenException.java new file mode 100644 index 0000000..d52370a --- /dev/null +++ b/src/main/java/com/kospo/drm/exception/CustomNoTokenException.java @@ -0,0 +1,7 @@ +package com.kospo.drm.exception; + +public class CustomNoTokenException extends RuntimeException{ + public CustomNoTokenException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kospo/drm/model/Token.java b/src/main/java/com/kospo/drm/model/Token.java new file mode 100644 index 0000000..d10d7fc --- /dev/null +++ b/src/main/java/com/kospo/drm/model/Token.java @@ -0,0 +1,33 @@ +package com.kospo.drm.model; + +import jakarta.persistence.Column; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.Size; +import lombok.*; + +import java.sql.Timestamp; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Entity +@Table(name = "token") +public class Token { + @EmbeddedId + private TokenId id; + + @Size(max = 500) + @Column(name = "token", length = 500) + private String token; + + @Column(name = "token_expire") + private long tokenExpire; + + @Column(name = "ins_date") + private Timestamp insDate; + +} \ No newline at end of file diff --git a/src/main/java/com/kospo/drm/model/TokenId.java b/src/main/java/com/kospo/drm/model/TokenId.java new file mode 100644 index 0000000..f78c9ab --- /dev/null +++ b/src/main/java/com/kospo/drm/model/TokenId.java @@ -0,0 +1,45 @@ +package com.kospo.drm.model; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.*; +import org.hibernate.Hibernate; + +import java.io.Serializable; +import java.util.Objects; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Embeddable +public class TokenId implements Serializable { + private static final long serialVersionUID = -5489321559837728499L; + @Size(max = 200) + @NotNull + @Column(name = "domain", nullable = false, length = 200) + private String domain; + + @Size(max = 20) + @NotNull + @Column(name = "ip", nullable = false, length = 20) + private String ip; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false; + TokenId entity = (TokenId) o; + return Objects.equals(this.domain, entity.domain) && + Objects.equals(this.ip, entity.ip); + } + + @Override + public int hashCode() { + return Objects.hash(domain, ip); + } + +} \ No newline at end of file diff --git a/src/main/java/com/kospo/drm/repository/TokenRepository.java b/src/main/java/com/kospo/drm/repository/TokenRepository.java new file mode 100644 index 0000000..7242fcc --- /dev/null +++ b/src/main/java/com/kospo/drm/repository/TokenRepository.java @@ -0,0 +1,8 @@ +package com.kospo.drm.repository; + +import com.kospo.drm.model.Token; +import com.kospo.drm.model.TokenId; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TokenRepository extends JpaRepository { +} \ No newline at end of file diff --git a/src/main/java/com/kospo/drm/service/DrmService.java b/src/main/java/com/kospo/drm/service/DrmService.java new file mode 100644 index 0000000..8079ecc --- /dev/null +++ b/src/main/java/com/kospo/drm/service/DrmService.java @@ -0,0 +1,8 @@ +package com.kospo.drm.service; + +import com.kospo.drm.dto.req.DrmRequest; +import com.kospo.drm.dto.res.DrmResponse; + +public interface DrmService { + DrmResponse decrypt(DrmRequest drmRequest); +} diff --git a/src/main/java/com/kospo/drm/service/TokenService.java b/src/main/java/com/kospo/drm/service/TokenService.java new file mode 100644 index 0000000..23f6d50 --- /dev/null +++ b/src/main/java/com/kospo/drm/service/TokenService.java @@ -0,0 +1,8 @@ +package com.kospo.drm.service; + +import com.kospo.drm.dto.req.TokenRequest; +import com.kospo.drm.dto.res.TokenResponse; + +public interface TokenService { + TokenResponse generateToken(TokenRequest tokenRequest); +} diff --git a/src/main/java/com/kospo/drm/service/impl/DrmServiceImpl.java b/src/main/java/com/kospo/drm/service/impl/DrmServiceImpl.java new file mode 100644 index 0000000..6f2a02f --- /dev/null +++ b/src/main/java/com/kospo/drm/service/impl/DrmServiceImpl.java @@ -0,0 +1,56 @@ +package com.kospo.drm.service.impl; + +import com.kospo.drm.dto.req.DrmRequest; +import com.kospo.drm.dto.res.DrmResponse; +import com.kospo.drm.service.DrmService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Base64; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +@Service +@RequiredArgsConstructor +public class DrmServiceImpl implements DrmService { + @Value("${server.drm.attach}") + private String drmAttach; + @Override + public DrmResponse decrypt(DrmRequest drmRequest) { + List decryptFiles = drmRequest.getEncryptFiles().stream().map(en -> { + String fileName = en.getFileName(); + String data = en.getData(); + String[] reData = data.split(","); + byte[] decodedFile = Base64.getDecoder() + .decode(reData[1].getBytes(StandardCharsets.UTF_8)); + String psyFileName = UUID.randomUUID().toString(); + Path encryptFile = Paths.get(drmAttach + "/enc", psyFileName); + Path decryptFile = Paths.get(drmAttach + "/dec", psyFileName); + String resultData = ""; + try { + Files.write(encryptFile, decodedFile); + + /*복호화 로직 시작*/ + + /*복호화 로직 종료*/ + Files.copy(encryptFile, decryptFile); + + resultData = Base64.getEncoder().encodeToString(Files.readAllBytes(decryptFile)); + + } catch (IOException e) { + throw new RuntimeException(e); + } + + return DrmResponse.DecryptFile.builder().fileName(fileName).data(resultData).build(); + }).toList(); + + return DrmResponse.builder().decryptFiles(decryptFiles).build(); + } +} diff --git a/src/main/java/com/kospo/drm/service/impl/TokenServiceImpl.java b/src/main/java/com/kospo/drm/service/impl/TokenServiceImpl.java new file mode 100644 index 0000000..fbfe8a6 --- /dev/null +++ b/src/main/java/com/kospo/drm/service/impl/TokenServiceImpl.java @@ -0,0 +1,53 @@ +package com.kospo.drm.service.impl; + +import com.kospo.drm.config.exception.ErrorCode; +import com.kospo.drm.config.jwt.JwtUtil; +import com.kospo.drm.dto.req.TokenRequest; +import com.kospo.drm.dto.res.TokenResponse; +import com.kospo.drm.exception.CustomException; +import com.kospo.drm.model.Token; +import com.kospo.drm.model.TokenId; +import com.kospo.drm.repository.TokenRepository; +import com.kospo.drm.service.TokenService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.util.Date; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class TokenServiceImpl implements TokenService { + private final TokenRepository tokenRepository; + private final JwtUtil jwtUtil; + + @Override + public TokenResponse generateToken(TokenRequest tokenRequest) { + Token token = Token.builder().id( + TokenId.builder() + .domain(tokenRequest.getDomain()) + .ip(tokenRequest.getIp()) + .build() + ).build() + ; + TokenResponse tokenResponse = jwtUtil.generateToken(token); + token.setToken(tokenResponse.getAccessToken()); + token.setInsDate(new Timestamp(new Date().getTime())); + + + tokenRepository.save(token); + return tokenResponse; + } + + public TokenResponse findToken(TokenRequest tokenRequest) { + Optional optionalToken = tokenRepository.findById(TokenId.builder() + .domain(tokenRequest.getDomain()) + .ip(tokenRequest.getIp()) + .build()); + + if(optionalToken.isEmpty()) throw new CustomException(ErrorCode.AUTHENTICATION); + + return TokenResponse.from(optionalToken.get()); + } +} diff --git a/src/main/java/javax/servlet/http/HttpServletRequest.java b/src/main/java/javax/servlet/http/HttpServletRequest.java new file mode 100644 index 0000000..a973394 --- /dev/null +++ b/src/main/java/javax/servlet/http/HttpServletRequest.java @@ -0,0 +1,5 @@ +package javax.servlet.http; + +public interface HttpServletRequest extends jakarta.servlet.http.HttpServletRequest { + +} diff --git a/src/main/java/javax/servlet/http/HttpServletResponse.java b/src/main/java/javax/servlet/http/HttpServletResponse.java new file mode 100644 index 0000000..7f9b8bc --- /dev/null +++ b/src/main/java/javax/servlet/http/HttpServletResponse.java @@ -0,0 +1,5 @@ +package javax.servlet.http; + +public interface HttpServletResponse extends jakarta.servlet.http.HttpServletResponse { + +} diff --git a/src/main/java/javax/servlet/http/HttpSession.java b/src/main/java/javax/servlet/http/HttpSession.java new file mode 100644 index 0000000..5ea999a --- /dev/null +++ b/src/main/java/javax/servlet/http/HttpSession.java @@ -0,0 +1,4 @@ +package javax.servlet.http; + +public interface HttpSession extends jakarta.servlet.http.HttpSession { +} diff --git a/src/main/java/javax/servlet/http/HttpUtils.java b/src/main/java/javax/servlet/http/HttpUtils.java new file mode 100644 index 0000000..64a94c1 --- /dev/null +++ b/src/main/java/javax/servlet/http/HttpUtils.java @@ -0,0 +1,135 @@ +package javax.servlet.http; + + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Hashtable; +import java.util.ResourceBundle; +import java.util.StringTokenizer; +import jakarta.servlet.ServletInputStream; + +/** @deprecated */ +public class HttpUtils { + private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings"; + private static ResourceBundle lStrings = ResourceBundle.getBundle("javax.servlet.http.LocalStrings"); + + public HttpUtils() { + } + + public static Hashtable parseQueryString(String s) { + String[] valArray = null; + if (s == null) { + throw new IllegalArgumentException(); + } else { + Hashtable ht = new Hashtable(); + StringBuilder sb = new StringBuilder(); + + String key; + for(StringTokenizer st = new StringTokenizer(s, "&"); st.hasMoreTokens(); ht.put(key, valArray)) { + String pair = st.nextToken(); + int pos = pair.indexOf(61); + if (pos == -1) { + throw new IllegalArgumentException(); + } + + key = parseName(pair.substring(0, pos), sb); + String val = parseName(pair.substring(pos + 1, pair.length()), sb); + if (!ht.containsKey(key)) { + valArray = new String[]{val}; + } else { + String[] oldVals = (String[])ht.get(key); + valArray = new String[oldVals.length + 1]; + + for(int i = 0; i < oldVals.length; ++i) { + valArray[i] = oldVals[i]; + } + + valArray[oldVals.length] = val; + } + } + + return ht; + } + } + + public static Hashtable parsePostData(int len, ServletInputStream in) { + if (len <= 0) { + return new Hashtable(); + } else if (in == null) { + throw new IllegalArgumentException(); + } else { + byte[] postedBytes = new byte[len]; + + try { + int offset = 0; + + do { + int inputLen = in.read(postedBytes, offset, len - offset); + if (inputLen <= 0) { + String msg = lStrings.getString("err.io.short_read"); + throw new IllegalArgumentException(msg); + } + + offset += inputLen; + } while(len - offset > 0); + } catch (IOException e) { + throw new IllegalArgumentException(e.getMessage()); + } + + try { + String postedBody = new String(postedBytes, 0, len, "8859_1"); + return parseQueryString(postedBody); + } catch (UnsupportedEncodingException e) { + throw new IllegalArgumentException(e.getMessage()); + } + } + } + + private static String parseName(String s, StringBuilder sb) { + sb.setLength(0); + + for(int i = 0; i < s.length(); ++i) { + char c = s.charAt(i); + switch (c) { + case '%': + try { + sb.append((char)Integer.parseInt(s.substring(i + 1, i + 3), 16)); + i += 2; + } catch (NumberFormatException var6) { + throw new IllegalArgumentException(); + } catch (StringIndexOutOfBoundsException var7) { + String rest = s.substring(i); + sb.append(rest); + if (rest.length() == 2) { + ++i; + } + } + break; + case '+': + sb.append(' '); + break; + default: + sb.append(c); + } + } + + return sb.toString(); + } + + public static StringBuffer getRequestURL(HttpServletRequest req) { + StringBuffer url = new StringBuffer(); + String scheme = req.getScheme(); + int port = req.getServerPort(); + String urlPath = req.getRequestURI(); + url.append(scheme); + url.append("://"); + url.append(req.getServerName()); + if (scheme.equals("http") && port != 80 || scheme.equals("https") && port != 443) { + url.append(':'); + url.append(req.getServerPort()); + } + + url.append(urlPath); + return url; + } +} \ No newline at end of file diff --git a/src/main/java/javax/servlet/http/ServletException.java b/src/main/java/javax/servlet/http/ServletException.java new file mode 100644 index 0000000..62ef01a --- /dev/null +++ b/src/main/java/javax/servlet/http/ServletException.java @@ -0,0 +1,4 @@ +package javax.servlet.http; + +public class ServletException extends jakarta.servlet.ServletException { +} diff --git a/src/main/java/jwtSample.java b/src/main/java/jwtSample.java new file mode 100644 index 0000000..587b14d --- /dev/null +++ b/src/main/java/jwtSample.java @@ -0,0 +1,27 @@ +import org.jasypt.encryption.StringEncryptor; +import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; +import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; + +public class jwtSample { + private static final String SECRET_KEY = "5840f916c19111ee86fcf38ac250f21377907a8ac19111eebab6e7179f8e5c87"; + public static void main(String[] args) { + System.out.println(stringEncryptor().decrypt("gLQTvX57MBGvHAhEGckIJbVdgG5w1YPO+bZk5+xOvg6DhAIcGcyXib8T605t2Icd")); + System.out.println(stringEncryptor().decrypt("KpBRMJPNmBe/zi0mPo32beSSXteAaSEp/Kf7dVV3ss8Qi4mS2bJ+P0eFw2Qs15sV")); + } + + public static StringEncryptor stringEncryptor() { + PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); + SimpleStringPBEConfig config = new SimpleStringPBEConfig(); + + config.setPassword("kospo2025"); // 암호화키 + config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256"); // 알고리즘 + config.setKeyObtentionIterations("1000"); // 반복할 해싱 회수 + config.setPoolSize("1"); // 인스턴스 pool + config.setProviderName("SunJCE"); + config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); // salt 생성 클래스 + config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator"); + config.setStringOutputType("base64"); //인코딩 방식 + encryptor.setConfig(config); + return encryptor; + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 0000000..da57928 --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,79 @@ +jasypt: + encryptor: + key: kospo2025 + bean: jasyptEncryptorAES + property: + prefix: ENC( + suffix: ) +server: + address: 0.0.0.0 + port: 8010 + servlet: + encoding: + charset: UTF-8 + enabled: true + force: true + session: + timeout: 1800s + drm: + attach: '/appl/drm/attach/' + jetty: + max-http-form-post-size: 100MB +spring: + application: + name: drm + servlet: + multipart: + max-file-size: 100MB + max-request-size: 100MB + data: + rest: + detection-strategy: annotated + devtools: + livereload: + enabled: true + remote: + restart: + enabled: false + jpa: + show-sql: false + hibernate: + ddl-auto: validate + naming: + physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy + open-in-view: false + mvc: + pathmatch: + matching-strategy: ant_path_matcher + datasource: + hikari: + username: ENC(gLQTvX57MBGvHAhEGckIJbVdgG5w1YPO+bZk5+xOvg6DhAIcGcyXib8T605t2Icd) + password: ENC(KpBRMJPNmBe/zi0mPo32beSSXteAaSEp/Kf7dVV3ss8Qi4mS2bJ+P0eFw2Qs15sV) + connection-timeout: 20000 + maximum-pool-size: 30 + data-source-properties: + cachePrepStmts: true + prepStmtCacheSize: 200 + prepStmtCacheSqlLimit: 2048 + useServerPrepStmts: true + url: jdbc:log4jdbc:postgresql://hmsn.ink:35432/svcm + driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy +jwt: + key: 5840f916c19111ee86fcf38ac250f21377907a8ac19111eebab6e7179f8e5c87 +springdoc: + packages-to-scan: com.kospo.drm + api-docs: + path: /api-docs + groups: + enabled: true + swagger-ui: + path: /swagger-ui.html + enabled: true + groups-order: ASC + tags-sorter: alpha + operations-sorter: alpha + display-request-duration: true + doc-expansion: none + cache: + disabled: true + model-and-view-allowed: true \ No newline at end of file diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml new file mode 100644 index 0000000..b02312b --- /dev/null +++ b/src/main/resources/application-local.yml @@ -0,0 +1,79 @@ +jasypt: + encryptor: + key: kospo2025 + bean: jasyptEncryptorAES + property: + prefix: ENC( + suffix: ) +server: + address: 0.0.0.0 + port: 8010 + servlet: + encoding: + charset: UTF-8 + enabled: true + force: true + session: + timeout: 1800s + drm: + attach: 'C:/appl/drm/attach/' + jetty: + max-http-form-post-size: 100MB +spring: + application: + name: drm + servlet: + multipart: + max-file-size: 100MB + max-request-size: 100MB + data: + rest: + detection-strategy: annotated + devtools: + livereload: + enabled: true + remote: + restart: + enabled: false + jpa: + show-sql: false + hibernate: + ddl-auto: validate + naming: + physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy + open-in-view: false + mvc: + pathmatch: + matching-strategy: ant_path_matcher + datasource: + hikari: + username: ENC(gLQTvX57MBGvHAhEGckIJbVdgG5w1YPO+bZk5+xOvg6DhAIcGcyXib8T605t2Icd) + password: ENC(KpBRMJPNmBe/zi0mPo32beSSXteAaSEp/Kf7dVV3ss8Qi4mS2bJ+P0eFw2Qs15sV) + connection-timeout: 20000 + maximum-pool-size: 30 + data-source-properties: + cachePrepStmts: true + prepStmtCacheSize: 200 + prepStmtCacheSqlLimit: 2048 + useServerPrepStmts: true + url: jdbc:log4jdbc:postgresql://hmsn.ink:35432/svcm + driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy +jwt: + key: 5840f916c19111ee86fcf38ac250f21377907a8ac19111eebab6e7179f8e5c87 +springdoc: + packages-to-scan: com.kospo.drm + api-docs: + path: /api-docs + groups: + enabled: true + swagger-ui: + path: /swagger-ui.html + enabled: true + groups-order: ASC + tags-sorter: alpha + operations-sorter: alpha + display-request-duration: true + doc-expansion: none + cache: + disabled: true + model-and-view-allowed: true \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..da57928 --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,79 @@ +jasypt: + encryptor: + key: kospo2025 + bean: jasyptEncryptorAES + property: + prefix: ENC( + suffix: ) +server: + address: 0.0.0.0 + port: 8010 + servlet: + encoding: + charset: UTF-8 + enabled: true + force: true + session: + timeout: 1800s + drm: + attach: '/appl/drm/attach/' + jetty: + max-http-form-post-size: 100MB +spring: + application: + name: drm + servlet: + multipart: + max-file-size: 100MB + max-request-size: 100MB + data: + rest: + detection-strategy: annotated + devtools: + livereload: + enabled: true + remote: + restart: + enabled: false + jpa: + show-sql: false + hibernate: + ddl-auto: validate + naming: + physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy + open-in-view: false + mvc: + pathmatch: + matching-strategy: ant_path_matcher + datasource: + hikari: + username: ENC(gLQTvX57MBGvHAhEGckIJbVdgG5w1YPO+bZk5+xOvg6DhAIcGcyXib8T605t2Icd) + password: ENC(KpBRMJPNmBe/zi0mPo32beSSXteAaSEp/Kf7dVV3ss8Qi4mS2bJ+P0eFw2Qs15sV) + connection-timeout: 20000 + maximum-pool-size: 30 + data-source-properties: + cachePrepStmts: true + prepStmtCacheSize: 200 + prepStmtCacheSqlLimit: 2048 + useServerPrepStmts: true + url: jdbc:log4jdbc:postgresql://hmsn.ink:35432/svcm + driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy +jwt: + key: 5840f916c19111ee86fcf38ac250f21377907a8ac19111eebab6e7179f8e5c87 +springdoc: + packages-to-scan: com.kospo.drm + api-docs: + path: /api-docs + groups: + enabled: true + swagger-ui: + path: /swagger-ui.html + enabled: true + groups-order: ASC + tags-sorter: alpha + operations-sorter: alpha + display-request-duration: true + doc-expansion: none + cache: + disabled: true + model-and-view-allowed: true \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..ef46c2a --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,3 @@ +spring: + profiles: + active: local \ No newline at end of file diff --git a/src/main/resources/logback-dev.properties b/src/main/resources/logback-dev.properties new file mode 100644 index 0000000..7a106f0 --- /dev/null +++ b/src/main/resources/logback-dev.properties @@ -0,0 +1,4 @@ +log.config.path=./logs/ +log.config.filename=api_log +log.level=debug + diff --git a/src/main/resources/logback-prod.properties b/src/main/resources/logback-prod.properties new file mode 100644 index 0000000..cd70f03 --- /dev/null +++ b/src/main/resources/logback-prod.properties @@ -0,0 +1,4 @@ +log.config.path=./logs/ +log.config.filename=api_log +log.level=warn + diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..f54c08f --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${LOG_PATTERN} + + + + + + + + ${LOG_PATH}/${LOG_FILE_NAME}.log + + + + ${LOG_PATTERN} + + + + + + ${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log + + + 10MB + + + 30 + + + + + + + + error + ACCEPT + DENY + + ${LOG_PATH}/${ERR_LOG_FILE_NAME}.log + + ${LOG_PATTERN} + + + + + ${LOG_PATH}/${ERR_LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log + + + 10MB + + + 60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/private.key b/src/main/resources/private.key new file mode 100644 index 0000000000000000000000000000000000000000..1981fd6238af283e1c7b4b4d4d1c857639e45a5e GIT binary patch literal 1217 zcmV;y1U~yPf&{$+0RS)!1_>&LNQUrr!ay9qXGc{0)hbn0HJYc4f?>+ zWy-9?9~`|DN1yo{o!49;V-JEx#Vz2$jnk5dZtDc=aJh6zG|U>h_}Jd4S)V-fXyhqa zKaYpw#{>O12I5_w)}m;s!~)R}OAH-vBpl$?=D`y7lxM`ahbH6-MDca*HknL)DxJo&oS2M`o3MN zZ+tQC_@$cK>`B-009Dm0RRaZ zq&g9RjZov~@qj2GVp+nC-%`(uy%-DPK#Zp)j8lMdx#+k8TG1f@Up55RoH-z5V4?V= zxVsp*1d#7dZXx-Q7Wj}}_(e(i{sYLUG2Uyzk*B-%{U@$8%BL6c+S2`e7}oH>wz-jw zoXSOTlLgKD#)ZxZXF6%yt5;4>xJ`;e&IcVtIa#NfffB0z>WC>emWJej;P58{5Wfju}02jI)MsHtH~fdH}@WIEZW%25fuCE9STh84CWHsJxb%c%l^fdJm; z9+(<$q^(v6>G0lJLh=H|&e5GB?BkG7?XQege{X?iwSj9)P^hVHffS~AVFrJR9s z=mPR1VC>W|kWq>gTMgn)yGuNpCiw9ENVQumCY6!GPqBM&wq&6v>eKs&p&m#cmm%wH zy?VxeV)9@Y<}A~G?8}i2EKlMJQo&-FDskZ(0hCx4k$oZrH88^Qzh_n4Ow2+Z+f4$2 zfdHFCT<}oA;qeF*4|zm5<3txASkH85#-Kre&H+(;pw~D_COOt2KuYJ!B~d&zQtSO< zV-l!c31K)tyoNWGJDzL%z1~7$@gTn8H?xH?xK^DEK5%+4j&qJGTI_*+D}#84Z1x1J z|E}Ya$}0?lPAWMaB0ciTMy;FoN)%_G28{xNfHDu-`=q2a$ZmAYncOdOE<48;Hilvo zAt|FY)>~<~g*)k%NA!0o61;|M2f6k+=bMi1BR-LVVAk*bDR~GMy6LgoBA~Yorurfm{tE%Uws?dN* zSzySeY1$`vK=dO;<`^--DtABqtrcIr8A8(%$KS}2UAe2^zdt&2lMQETp?9+&QF@}6 f?sWPv6+PDJciN(CVAL)I+?&t(%aAx~{n+re54=lG literal 0 HcmV?d00001 diff --git a/src/main/resources/public.key b/src/main/resources/public.key new file mode 100644 index 0000000000000000000000000000000000000000..ec96fbb03efa7c76b1a4602375c320331d53717e GIT binary patch literal 294 zcmV+>0ondAf&n5h4F(A+hDe6@4FLfG1potr0S^E$f&mHwf&l>lp>b#p`oPj<%B;j6 z9K94rpZOb|*IXfE4}wO;E#Se8(~^j8>jdj?xpYZ1%o@7**xsmFpFHzu|MI9N^XF!4o)jZr0lP>lWt=DcA;COnbhb(<&`f2oX4$ zYewKO+=FdDO`5=2yhyTc>nU;uQ@sT8ni6)p?TKk)L_bG1ln%zFn$sd@=6$ srJE0lEPhuV*2p0(a}HXf@Gq5CBUMn`$U4}I