diff --git a/.terraform.lock.hcl b/.terraform.lock.hcl
new file mode 100644
index 0000000..63ba9ed
--- /dev/null
+++ b/.terraform.lock.hcl
@@ -0,0 +1,22 @@
+# This file is maintained automatically by "terraform init".
+# Manual edits may be lost in future updates.
+
+provider "registry.terraform.io/hashicorp/azurerm" {
+ version = "3.86.0"
+ constraints = "~> 3.85"
+ hashes = [
+ "h1:OYk3njsOIMuSK4pbbOr5qbssIHBSzb/Fmfsg9AYeyCo=",
+ "zh:10473870b663b3becca1127687ed0d002d61f417c279e7daac546d265ff1f3db",
+ "zh:1dfe2446d7530cd082f817a8d37ec9fb0260b275085978bd81ba0e8167aa6f7c",
+ "zh:31712a4d9727a5970354eb3c26b4d6dc45b5103c6599cb97c2bd3f9915062baf",
+ "zh:51dcb102e17e49d675d6865f1ca9eaa8a2aa566ba56a93bb77aab703112d1de5",
+ "zh:54d5053cd88ed99e804c7b4d72f91ec1bab5fe8b6769db5c120d60b5e6a653dc",
+ "zh:58388274d406a55c84199d1a22b8143b47321b7b508a18ddeed9e824a864cb5d",
+ "zh:7b8afa8d62431512197aa5aed4e902b06bce3f8362d6ddf2c841e03c2658f4a7",
+ "zh:b7d3c1e8bfdd4e099e174724be41cdbc916868a7ca637bcf8682a57ef3453f7f",
+ "zh:ea0cc2751ef9a15b48e42d6ae62f4329c567335e348f57e577ce727d8167c29f",
+ "zh:f3a48fdf58a34deae9221923f30112b18ce1ab6cabb46d6c38e1a3234340cfd0",
+ "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
+ "zh:fbd1d24b6bc67d5c370f2a3934da70ea3b93d612fe83b71e0dae592b48d030ce",
+ ]
+}
diff --git a/README.md b/README.md
index 56fe739..a17c12d 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,71 @@ This Terraform configuration automates the setup of Azure CDN resources, streaml
### Terraform Architecture
```mermaid
%%tfmermaid
+%%{init:{"theme":"default","themeVariables":{"lineColor":"#6f7682","textColor":"#6f7682"}}}%%
+flowchart LR
+classDef r fill:#5c4ee5,stroke:#444,color:#fff
+classDef v fill:#eeedfc,stroke:#eeedfc,color:#5c4ee5
+classDef ms fill:none,stroke:#dce0e6,stroke-width:2px
+classDef vs fill:none,stroke:#dce0e6,stroke-width:4px,stroke-dasharray:10
+classDef ps fill:none,stroke:none
+classDef cs fill:#f7f8fa,stroke:#dce0e6,stroke-width:2px
+subgraph "n0"["CDN"]
+n1["azurerm_cdn_frontdoor_endpoint.
this"]:::r
+n2["azurerm_cdn_frontdoor_origin.
this"]:::r
+n3["azurerm_cdn_frontdoor_origin_group.
this"]:::r
+n4["azurerm_cdn_frontdoor_profile.
this"]:::r
+n5["azurerm_cdn_frontdoor_route.
this"]:::r
+n6["azurerm_cdn_frontdoor_rule_set.
this"]:::r
+end
+class n0 cs
+subgraph "n7"["DNS"]
+n8["azurerm_dns_zone.this"]:::r
+end
+class n7 cs
+subgraph "n9"["Base"]
+na["azurerm_resource_group.this"]:::r
+end
+class n9 cs
+subgraph "nb"["Network"]
+nc{{"data.azurerm_public_ips.this"}}:::r
+end
+class nb cs
+subgraph "nd"["Input Variables"]
+ne(["var.endpoints"]):::v
+nf(["var.origin_groups"]):::v
+ng(["var.public_ip_origins"]):::v
+nh(["var.resource_group_location"]):::v
+ni(["var.resource_group_name"]):::v
+nj(["var.routes"]):::v
+nk(["var.rule_sets"]):::v
+nl(["var.zones"]):::v
+end
+class nd vs
+subgraph "nm"["Output Values"]
+nn(["output.name_servers"]):::v
+no(["output.urls"]):::v
+end
+class nm vs
+n4-->n1
+ne--->n1
+n3-->n2
+nc-->n2
+n4-->n3
+nf--->n3
+na-->n4
+n1-->n5
+n2-->n5
+n6-->n5
+nj--->n5
+n4-->n6
+nk--->n6
+na-->n8
+nl--->n8
+nh--->na
+ni--->na
+ng--->nc
+n8--->nn
+n1--->no
```
## Features