working terraform state sharing

This commit is contained in:
Lance Vick 2023-04-13 20:22:35 -07:00
parent ad90479c0d
commit 1466b0cba7
Signed by: lrvick
GPG Key ID: 8E47A1EC35A1551D
9 changed files with 344 additions and 216 deletions

View File

@ -1,6 +1,7 @@
include $(PWD)/src/toolchain/Makefile include $(PWD)/src/toolchain/Makefile
BACKEND_TF := $(wildcard infra/backend/*.tf) BACKEND_TF := $(wildcard infra/backend/*.tf)
MAIN_TF := $(wildcard infra/main/*.tf)
ENVIRONMENT := production ENVIRONMENT := production
REGION := sfo3 REGION := sfo3
ROOT_DIR := $(shell pwd) ROOT_DIR := $(shell pwd)
@ -10,6 +11,15 @@ KEYS := \
88823A75ECAA786B0FF38B148E401478A3FBEF72 \ 88823A75ECAA786B0FF38B148E401478A3FBEF72 \
3D7C8D39E8C4DF771583D3F0A8A091FD346001CA 3D7C8D39E8C4DF771583D3F0A8A091FD346001CA
ifeq ("$(wildcard $(CACHE_DIR)/secrets/$(ENVIRONMENT).env)","")
gpg --decrypt \
secrets/$(ENVIRONMENT).env.gpg \
> $(CACHE_DIR)/secrets/$(ENVIRONMENT).env
endif
include $(CACHE_DIR)/secrets/$(ENVIRONMENT).env
export $(shell sed 's/=.*//' $(CACHE_DIR)/secrets/$(ENVIRONMENT).env)
.DEFAULT_GOAL := .DEFAULT_GOAL :=
.PHONY: default .PHONY: default
default: \ default: \
@ -43,22 +53,21 @@ infra/backend/.terraform: \
infra/main/.terraform: \ infra/main/.terraform: \
$(OUT_DIR)/terraform \ $(OUT_DIR)/terraform \
$(BACKEND_TF) config/$(ENVIRONMENT).tfbackend \
$(MAIN_TF)
env -C infra/main $(TERRAFORM) init \ env -C infra/main $(TERRAFORM) init \
-backend-config="../../config/$(ENVIRONMENT).tfbackend" -backend-config="../../config/$(ENVIRONMENT).tfbackend"
infra/backend/$(ENVIRONMENT).tfstate: \ infra/backend/$(ENVIRONMENT).tfstate: \
$(CACHE_DIR)/secrets/credentials.tfvars \
$(OUT_DIR)/terraform \ $(OUT_DIR)/terraform \
infra/backend/.terraform infra/backend/.terraform
env -C infra/backend $(TERRAFORM) apply \ env -C infra/backend $(TERRAFORM) apply \
-var environment=$(ENVIRONMENT) \ -var environment=$(ENVIRONMENT) \
-var namespace=$(ENVIRONMENT) \ -var namespace=$(ENVIRONMENT) \
-var region=$(REGION) \ -var region=$(REGION) \
-state ../../$@ \ -state ../../$@
-var-file ../../$<
config/$(ENVIRONMENT).tfbackend: \ config/$(ENVIRONMENT).tfbackend: | \
infra/backend/$(ENVIRONMENT).tfstate \ infra/backend/$(ENVIRONMENT).tfstate \
$(OUT_DIR)/terraform $(OUT_DIR)/terraform
env -C infra/backend $(TERRAFORM) \ env -C infra/backend $(TERRAFORM) \
@ -67,19 +76,17 @@ config/$(ENVIRONMENT).tfbackend: \
.PHONY: .PHONY:
apply: \ apply: \
$(CACHE_DIR)/secrets/credentials.tfvars \
$(OUT_DIR)/terraform \ $(OUT_DIR)/terraform \
infra/main/.terraform infra/main/.terraform
env -C infra/main $(TERRAFORM) apply \ env -C infra/main $(TERRAFORM) apply \
-var environment=$(ENVIRONMENT) \ -var environment=$(ENVIRONMENT) \
-var namespace=$(ENVIRONMENT) \ -var namespace=$(ENVIRONMENT) \
-var region=$(REGION) \ -var region=$(REGION)
-var-file ../../$<
$(CACHE_DIR)/secrets: $(CACHE_DIR)/secrets:
mkdir -p $@ mkdir -p $@
$(CACHE_DIR)/secrets/%.tfvars: secrets/%.tfvars.gpg $(CACHE_DIR)/secrets $(CACHE_DIR)/secrets/%.env: secrets/%.env.gpg $(CACHE_DIR)/secrets
gpg --decrypt $< > $@ gpg --decrypt $< > $@
$(FETCH_DIR)/terraform: $(FETCH_DIR)/terraform:

View File

@ -1,4 +1,4 @@
bucket = "production-production-1c1362d9ef6afe0b" bucket = "production-production-1c1362d9ef6afe0b"
endpoint = "https://sfo3.digitaloceanspaces.com" endpoint = "https://sfo3.digitaloceanspaces.com"
key = "terraform.tfstate" key = "terraform.tfstate"
region = "sfo3" region = "us-east-1"

View File

@ -4,23 +4,5 @@ terraform {
source = "digitalocean/digitalocean" source = "digitalocean/digitalocean"
version = "2.25.2" version = "2.25.2"
} }
acme = {
source = "vancluever/acme"
version = "~> 2.0"
}
} }
} }
provider "digitalocean" {
token = var.do_token
spaces_access_id = var.spaces_access_id
spaces_secret_key = var.spaces_secret
}
provider "acme" {
server_url = "https://acme-v02.api.letsencrypt.org/directory"
}
variable "do_token" {}
variable "spaces_access_id" {}
variable "spaces_secret" {}

View File

@ -7,5 +7,5 @@ variable "out_dir" {
} }
resource "random_id" "suffix" { resource "random_id" "suffix" {
byte_length = 8 byte_length = 8
} }

View File

@ -5,14 +5,10 @@ terraform {
version = "2.25.2" version = "2.25.2"
} }
} }
backend "s3" {
skip_requesting_account_id = true
skip_credentials_validation = true
skip_get_ec2_platforms = true
skip_metadata_api_check = true
}
} }
provider "digitalocean" {
token = var.do_token
spaces_access_id = var.spaces_access_id
spaces_secret_key = var.spaces_secret
}
variable "do_token" {}
variable "spaces_access_id" {}
variable "spaces_secret" {}

View File

@ -1,13 +1,67 @@
resource "digitalocean_spaces_bucket" "website" { resource "digitalocean_spaces_bucket" "website" {
name = "website-${random_id.suffix.hex}" name = "website-${random_id.suffix.hex}"
region = var.region region = var.region
} }
resource "digitalocean_spaces_bucket_object" "website" { resource "digitalocean_spaces_bucket_object" "website" {
for_each = fileset("${var.out_dir}/website", "*") for_each = fileset("${var.out_dir}/website", "*")
region = var.region region = var.region
bucket = digitalocean_spaces_bucket.website.name bucket = digitalocean_spaces_bucket.website.name
source = "${var.out_dir}/website/${each.value}" source = "${var.out_dir}/website/${each.value}"
key = each.value key = each.value
etag = filemd5("${var.out_dir}/website/${each.value}") etag = filemd5("${var.out_dir}/website/${each.value}")
acl = "public-read"
} }
resource "tls_private_key" "website" {
algorithm = "RSA"
}
resource "digitalocean_certificate" "website" {
name = "le-terraform-example"
type = "lets_encrypt"
domains = [
digitalocean_domain.default.name,
format("%s%s", "www.", digitalocean_domain.default.name)
]
}
resource "digitalocean_cdn" "website" {
origin = digitalocean_spaces_bucket.website.bucket_domain_name
certificate_name = digitalocean_certificate.website.name
depends_on = [
digitalocean_spaces_bucket.website
]
}
# ## Handle record for CDN redirect
# resource "digitalocean_record" "cdn" {
# domain = digitalocean_domain.default.name
# type = "CNAME"
# name = digitalocean_cdn.distrust_co.origin
# value = "${digitalocean_domain.default.name}."
# depends_on = [
# digitalocean_cdn.distrust_co
# ]
# }
# # Output the endpoint for the CDN resource
# output "fqdn" {
# value = digitalocean_cdn.distrust_co.endpoint
# }
# #
# output "cdn_origin" {
# value = digitalocean_cdn.distrust_co.origin
# }
# # Handle record for distrust.co
# resource "digitalocean_record" "distrust_co-cdn" {
# domain = digitalocean_domain.default.name
# type = "A"
# name = "@"
# value = "143.198.235.76"
# depends_on = [
# digitalocean_cdn.distrust_co
# ]
# }

View File

@ -12,147 +12,224 @@ Uh5gKXDx3hgH33WubkQZdmM8GISEpUaD4IfCe9nw5Pv7cxB/kupnnQOsoDlcmrv7
b3QNxueZ861QRFdISKgxdn2ZqO5d9d70xZHuCfWEnckBXHJrCXSZLK7iH0f+xnTQ b3QNxueZ861QRFdISKgxdn2ZqO5d9d70xZHuCfWEnckBXHJrCXSZLK7iH0f+xnTQ
wms9MqetXKTaACTN03P64eXoxgXAi2X/I22S33R9Ftnu6+QEbazLjIj5iwARAQAB wms9MqetXKTaACTN03P64eXoxgXAi2X/I22S33R9Ftnu6+QEbazLjIj5iwARAQAB
tC1SeWFuIEhleXdvb2QgKFJ5YW5TcXVhcmVkKSA8cnlhbkBoYXNoYmFuZy5zaD6J tC1SeWFuIEhleXdvb2QgKFJ5YW5TcXVhcmVkKSA8cnlhbkBoYXNoYmFuZy5zaD6J
AvsEEwEKAOUCGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQSIgjp1 AlQEEwEKAD4WIQSIgjp17Kp4aw/zixSOQBR4o/vvcgUCYGINQgIbAwUJA8JnAAUL
7Kp4aw/zixSOQBR4o/vvcgUCYNq3ukYUgAAAAAASACtwcm9vZkBtZXRhY29kZS5i CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCOQBR4o/vvcpTSEACFge0zA8PsW5sy
aXpodHRwczovL2dpdGxhYi5jb20vUnlhblNxdWFyZWQvZ2l0bGFiX3Byb29mXxSA A62NBoKEq5/NcpFrW5Q7HRwspmLq/HUppJ0FqjmYMaIuDkkiv3+P9Yz8LSml3OZX
AAAAABIARHByb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vZ2lzdC5naXRodWIuY29t Eqiq7/hj7SXiSZ0AVNyluRdGGIO/nX6xVDdS+LTtizBfN2JLwGWCsfVcxpUQl1Wg
L1J5YW5TcXVhcmVkLzFhMzUwYzcxNTFjZmJiY2Q4YjhmMThmYWViYjRiZDg1AAoJ QMZusni61/zb6O1VqWB6z+Os4jGLA92HNF5yVH6tR+D1pd0xFxMXczA8xux78E4H
EI5AFHij++9yGTgQAJveYJ4SLctktcbxtTIVFiO8lJQoCmLu+UjlWJ6+T84LN6Cg YpjBnf/I8Lud9QS0z6t+KH+wZE5QTinYzADyCFAed9t+38CNJrQgbm64JAE9FoEH
gepX3wU3bbJanLMN9hc0kiekoVWV+UMVcLKYMb/q+OgkCtA74efRoLzeg4XC8N6r uEvi/wF04SMqEJ+9cmjuEyAVvULUck5SgBMRPx5MyxvBjpZkasNha0OgoBRSEQ5h
SSZIBOD0uXTfcJ9xiFdriSTq556iEYdVoF3ZjGX2FZWs1qn4HycoGflh3ZPuYPH0 tqea7CmKfWaWV79az2E53K8vDtr2NkYe4F3iS7w8hbeItfnrsQYMAGdjjXO9Aqmg
72HWtKrGFmdKZwXKgv83xDMDQ0zdW0BCdWAL2rTQMNyqVDh67GNcga4ACBMgK3/A vRWivbtwMpGqU4cx+T+d7kVwKXYMPjcDrQ4G2CaU3SEibFyxPSwc9a+5OEvHP1Rl
yewcyxdldZ+RHvmDhD+uvvZBJ+0wwNJVdMWjRyJxOaKza6PwRZsI9H2glvWGZQf8 7G/XkG2kbA7abgcTOpO1AMpUMvF5MQMr83AzlLDEz0onxQU3RR6UFcOHLd00XX9u
T/kPR25dURqfWD4VRJBUxQEiqjMGszK2rcFe5lujJ2j/qDM3AR4SauVFV7cUk1HD eV4YTbdSQK6Kb58uDVx08hDO8rqyJqXRWRhfA4pqA+2y/hEfbSEOmPV4tcpYoqro
y2r+Bu0y5DtIlP87Yj2iMNC+TqRGI1tNosmGFn7Wrlqm5A7TIxSfRJZ7nfOvyDtG +kAN19oFCOsddq7WfIaqkXyPlZMA0crqC5s53va29ULHmJkMtW7nqCKPp3WucyQT
U0FxCyzfp52VTFN5asOFStoJn8rZpZPYDLhNpr025xVpEPNLVGmAsuXyHXuUIOLy R6+eF7rw+Zhc+jkX1nNefvUriMSlcokC+wQTAQoA5QIbAwUJA8JnAAULCQgHAgYV
cRtukq9BnyYkdLM2r//V/QaL3PSO8ZJl1mxkbX4DBQ2NCtRpLzdppOropGSbuYqn CgkICwIEFgIDAQIeAQIXgBYhBIiCOnXsqnhrD/OLFI5AFHij++9yBQJg2re6RhSA
fsd+LLb25wAE6TCzoQFo21eP3SQwUZWNV429aIxHZgJiNRR0+HfdMv43O8TR2P8K AAAAABIAK3Byb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vZ2l0bGFiLmNvbS9SeWFu
uCRfG0I0jNyXlnP0awvK6hJWNuxEctu8XgCYjUMibdkv4aQWDMyeimoDaHQAiQK0 U3F1YXJlZC9naXRsYWJfcHJvb2ZfFIAAAAAAEgBEcHJvb2ZAbWV0YWNvZGUuYml6
BBMBCgCeAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEiII6deyq
eGsP84sUjkAUeKP773IFAmDatRJfFIAAAAAAEgBEcHJvb2ZAbWV0YWNvZGUuYml6
aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vUnlhblNxdWFyZWQvMWEzNTBjNzE1MWNm aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vUnlhblNxdWFyZWQvMWEzNTBjNzE1MWNm
YmJjZDhiOGYxOGZhZWJiNGJkODUACgkQjkAUeKP773LKVg//bT5oqUqtwaeFddj8 YmJjZDhiOGYxOGZhZWJiNGJkODUACgkQjkAUeKP773IZOBAAm95gnhIty2S1xvG1
069VNRaURvJls3KmVtgqTRkiCvQMRR9wjcgRvfwrwkrg89C4Mo5evYsaEChpWnHw MhUWI7yUlCgKYu75SOVYnr5Pzgs3oKCB6lffBTdtslqcsw32FzSSJ6ShVZX5QxVw
x0cj4ISa0c81eE04gaTJkZ6oIv0w5xK9Um/9oRcU9/1xWj301SHNyT5H0v8sEX+P spgxv+r46CQK0Dvh59GgvN6DhcLw3qtJJkgE4PS5dN9wn3GIV2uJJOrnnqIRh1Wg
FDrd4BfwN/wplQzX0FlKVtPtWekHI5k318TYWFBfwqssmqX7gbhV+8CqGNTwWaZD XdmMZfYVlazWqfgfJygZ+WHdk+5g8fTvYda0qsYWZ0pnBcqC/zfEMwNDTN1bQEJ1
jqMnCpRMq7SY41kTAl+WQ9PY4VVSPL2tVFJsbIX6Jd8mqcRsJJ3a19qpyByW1cMC YAvatNAw3KpUOHrsY1yBrgAIEyArf8DJ7BzLF2V1n5Ee+YOEP66+9kEn7TDA0lV0
a68a9ot4zJ6ePhKKSufHqUsdHfdb6hrLYiSQpejxweVybYcshWY+Q7LA8hT53+2N xaNHInE5orNro/BFmwj0faCW9YZlB/xP+Q9Hbl1RGp9YPhVEkFTFASKqMwazMrat
UaL7F3KAVOky1BepNY5PVfrenNA/T0G+b1CU6ayDh5KgsycBrH5ciYi41oo5NJFD wV7mW6MnaP+oMzcBHhJq5UVXtxSTUcPLav4G7TLkO0iU/ztiPaIw0L5OpEYjW02i
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
AheAAAoJEI5AFHij++9yooEP/3OcUCJvtyliEy6a1aR4CEv1H/kd2zGRApBkSdLp AQoA5QIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgEYUgAAAAAASACtwcm9vZkBt
ffdw76xdzF258uqzi6nt8B5AUtp5c4LH6VxmfwIgzGOSN9/vE2XhCOvPqorum3wp ZXRhY29kZS5iaXpodHRwczovL2dpdGxhYi5jb20vUnlhblNxdWFyZWQvZ2l0bGFi
nQoR0Q4B/w9T2c0NJWFOq9RVt2LKmHTBakq2rf5h6fQkp8bVmyklL48kcFPcN1rW X3Byb29mXxSAAAAAABIARHByb29mQG1ldGFjb2RlLmJpemh0dHBzOi8vZ2lzdC5n
vjgtmFsMrEoSLDO4vZpZL/KoMBsmTR5kPCxPGEWf5T8vWGjA0y6dTzcjRnSzfTqG aXRodWIuY29tL1J5YW5TcXVhcmVkLzFhMzUwYzcxNTFjZmJiY2Q4YjhmMThmYWVi
JdkA+DRuBXlcCgfj+wjXKiknkm1MgdD79kkfYUIW5t50HM5oR02fBVeOzA03baAs YjRiZDg1FiEEiII6deyqeGsP84sUjkAUeKP773IFAmQnALgFCQeHWm8ACgkQjkAU
AHidIyz3/7BmzuKISLb479wjCNui768Dz/8A7KEUzwRik1EwXHlzrWPX8eIMEquB eKP773Icog/8CFZpGlht/SAsWv3CPGotYVenSgZ4+j49tqyTA057bx1ihuzDVsjO
I+NLFcnQD1g0LmMDt1rId+g6ZlSpAFqlCX9yBxyPjCKxkcqzvDJn6FFZEme87FIK Epx9YoS0WUHd1oeWHWw4gZlNnYed9dYvUQLtbivTZ51eX6cCX4K82/CgX7sBKNQE
4H6rwpewlC6himXmAlhP5hbEmTIyaMLV/F8t5q5frQ6XrNSi+660IqY1NezZnN47 bpnLhifucye8YNJDKTcieB6RWo+wzTW++KiVXFwr51wQT1maq0/VJQnHZKKmyDgh
Y42jmwviL3M9TXcmju1fBzZ/f7LECiv1PLVi+HtM4pKo+JOTP+p3n0Oul7h8pABh qHDT7qeTiu+kJ+l+cC5+inE038P74jq3PhQh6y06HR4qncgqEVaJqtVc8OyQalJn
X2nCLG6FPT5jp40gtkraTNmKec9SUFDC+ANAh7crNlpsxI5oXQj+120Qds3/5snu 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
lq0P6+I8ZF6JNQK2x14MtYO6l1s= yG0jywV6CkzCLMZR9lDmRYfS0mvxqO6pjrExkzSWgwXnImbtgESgltYmy5Cd+hTf
=3zk9 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
=y7aU
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

View File

@ -1,33 +0,0 @@
-----BEGIN PGP MESSAGE-----
hQIMA82rPM2mSf/aARAAiUgRJFslwItgpf8xx26wn58bvcdXQ5YlBqO/lnvcYUIz
0FF+uAgihSdgbkh80q+nraJ0uvlTGeSTv2adVYa3e4CTKkXVbbxPZgAY6cz2GnvL
mzhUR4Zely9GltyL9ebtGvCorC1GyaRH+2Bz8tFS35gdYEEhg2A17kHibu1du+a/
qYs7OAnJwLFKfEZ0GymGozkGh67jktHWVKd14R5b494j++VDnDmVHRuXyBIsMhH8
JvNzBPCnEjqY1nFKF+ABPU3UazMZ4GQTFOqQroK051jyMyWr9fNJ651BrNcvuBSa
gNfTLSHC+roSlde9NKWBWX907lxiuSa4R08vQ4WOWnNVM4rZ+O6fSzAmljvxxIu2
x/xXc3ADE+JS5nYGwTWBiaMMBUTixuFEraf2riUeZkCL9swF5X8U63UohRDnNGYl
fvBtlJubtBWLTfp6gN7FSN0xtwBhxOIcZs7izlqp3RMH8E90GaVpdRbJmhcdMCYz
FTynWgOR/eYiEMV7IAELfW857KBu876luV/r17HZLVI6ntYSCOMhMUy3VbPQnyOV
ipY2yoIiPM9lIz22bf7W5gAxAlzreiluDXKu7IaKpd5YZHnMF131BHtIxporBurS
6cK3ZhTJ0htqJCylegzsWAkzuM4iTYx6CQZmEEEgdnAR/q2yePEGeaTFuufrNfWE
XgOv8yOQ7O65ERIBB0DRnOtjEkhPUCDHnb9geE9UZojugyYtU+tkROWfMAKleTCq
z+wpiOCtytt8PC055aR2aFIUNLwmClMfd62hu/IIYIvudoCKwUPfe1mwjTyfKzaF
AgwDlZ/4XIn7MUkBD/9KBXl5pMEWMZG4VPjMAhQu+blK5RzoefO8q7eGiAVB5OXp
AgsAvDjQlmBJ09J2YPUtHRiGwA6CfPHmTiF5n2/TzTkBX8tJbTwZi0mL8gB5PYsf
yPWDMDYj91pJPUB+eV8OIrzB8DI4PgwPzuCFiNymnmC37MBhh66xvVaTBn46OCwm
7cRfCrixoFPwi1wWqQ9ttZ9BSpxIqj1bkgYhuBCsfN4s2hVRVOib8y4jBgn0dmWD
ofuJ1fwPDUznixI2tefVSssBcltZprcVBedteZDdbxurMKWjMpsj5OPN69egzx6o
jhAazD/5d+kiHTMNDnJmIQWtyqU7MfJHNTHvCpvGy0Lryy9NtMbkUWYxkNSh3pMk
qBkM90vWItvrbPtLT3KeLRzWs+mPQoQiEjyetEli24oX6jul5BtHRR2KWoit5I/7
nK2dftI253cI5IweUFN3KTVVw5sIVW6tYYcjVU7ps/pX9EEDYcqcEvnY5xBnxvrJ
tzPIEInyK0LLd5DrwVzglb/r/qAt/k+gpgJ/suG4DyAFWSTWaszU4HD/IV5WJZMh
qEDjnnbRlIbce22GtgdlIjIF7DSRPNHDt3k/qfFcaeHZstRe917zK9TuYs8e4cer
X8JvbFy1j290vDL8QfSi//X5t3F6n6oMz38HFHI9dRtcVrVBNPkYYRf9fESE7tLA
KQHFak+gyMYJSKNbqsTYupXNdSzNqOD+J0uH68jQw4p4NEKiuA6UWGgx1d9cIoTc
Zd9/KR7Nef4UTbi0jN7VqCdEfWLsQfi2Ee0Ne6rPPKzLA6KRBGTM7AhQu1o1i3zW
fpGBuPKQAye0uPbcW4rWKRBlijX/AMrMYfGhWiHrASzCMQi5zItaVGiZDB4EXGgQ
+TOsvrbLix/oEh/vQoJFKZLbXVPXyjSXFNGn+OVt0AGGR+tIZooqYBByvkN7F5Ev
kbqVKT5QuHLhGDVayOq7yvZBOmuXiNwFWFxnuP7YYbm0y/KYJ0BM2VEK
=2pQ7
-----END PGP MESSAGE-----

View File

@ -0,0 +1,45 @@
-----BEGIN PGP MESSAGE-----
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
hiECWQ==
=2Gks
-----END PGP MESSAGE-----