diff --git a/Protocols/EPP/eppExtensions/fee-0.11/eppRequests/fee011EppCheckDomainRequest.php b/Protocols/EPP/eppExtensions/fee-0.11/eppRequests/fee011EppCheckDomainRequest.php
new file mode 100644
index 00000000..da947ada
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/fee-0.11/eppRequests/fee011EppCheckDomainRequest.php
@@ -0,0 +1,46 @@
+addFee($checkrequest,$command);
+ $this->addSessionId();
+ }
+
+ private function addFee(eppDomain $domain, string $command, ?string $class=null, ?int $period = null, ?string $currency = null) {
+ if (!in_array($command,['create','renew','transfer'])) {
+ throw new eppException('Invalid command for fee-0.11 extension. Valid commands are create, renew, transfer');
+ }
+ if ($period) {
+ if (($period == 0) || ($period>10)) {
+ throw new eppException('Invalid period for fee-0.11 extension. Valid periods are 0-10');
+ }
+ }
+ $extension = $this->getExtension();
+ $check = $this->createElement('fee:check');
+ $check->setAttribute('xmlns:fee','urn:ietf:params:xml:ns:fee-0.11');
+ $check->appendChild($this->createElement('fee:command',$command));
+ if ($currency) {
+ $check->appendChild($this->createElement('fee:currency',$currency));
+ }
+ if ($class) {
+ $check->appendChild($this->createElement('fee:class',$class));
+ }
+ if ($period) {
+ $per = $this->createElement('fee:period',$period);
+ $per->setAttribute('unit','y');
+ $check->appendChild($per);
+ }
+ $extension->appendChild($check);
+ return;
+ }
+}
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/fee-0.11/eppResponses/fee011EppCheckDomainResponse.php b/Protocols/EPP/eppExtensions/fee-0.11/eppResponses/fee011EppCheckDomainResponse.php
new file mode 100644
index 00000000..ce7cbd04
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/fee-0.11/eppResponses/fee011EppCheckDomainResponse.php
@@ -0,0 +1,40 @@
+xPath();
+ $result['available'] = $xpath->query('/epp:epp/epp:response/epp:extension/fee:chkData/*')->item(0)->getAttribute('avail');
+ $list = $xpath->query('/epp:epp/epp:response/epp:extension/fee:chkData/fee:cd/*');
+ foreach ($list as $node) {
+ /* @var \DOMElement $node */
+ switch ($node->tagName) {
+ case 'fee:command':
+ $result['command'] = $node->nodeValue;
+ break;
+ case 'fee:fee':
+ $result['price'] = $node->nodeValue;
+ break;
+ case 'fee:class':
+ $result['class'] = $node->nodeValue;
+ break;
+ case 'fee:period':
+ $result['period'] = $node->nodeValue;
+ $periodunit = $node->getAttribute('unit');
+ $result['periodunit'] = $periodunit;
+ break;
+ case 'fee:currency':
+ $result['currency'] = $node->nodeValue;
+ break;
+ case 'fee:object':
+ $result['domainname'] = $node->getElementsByTagName('name')->item(0)->nodeValue;
+ break;
+ };
+ }
+ return $result;
+ }
+
+
+}
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/fee-0.11/fee-0.11.xsd b/Protocols/EPP/eppExtensions/fee-0.11/fee-0.11.xsd
new file mode 100644
index 00000000..e029ba41
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/fee-0.11/fee-0.11.xsd
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+ Extensible Provisioning Protocol
+ v1.0 extension schema for fee
+ information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/fee-0.11/includes.php b/Protocols/EPP/eppExtensions/fee-0.11/includes.php
new file mode 100644
index 00000000..f8c8da4e
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/fee-0.11/includes.php
@@ -0,0 +1,10 @@
+addExtension('fee-0.11','urn:ietf:params:xml:ns:fee-0.11');
+#
+# Load the fee-0.11 specific additions
+# SOURCE: https://datatracker.ietf.org/doc/draft-ietf-regext-epp-fees/00/
+#
+include_once(dirname(__FILE__) . '/eppRequests/fee011EppCheckDomainRequest.php');
+include_once(dirname(__FILE__) . '/eppResponses/fee011EppCheckDomainResponse.php');
+
+$this->addCommandResponse('Metaregistrar\EPP\fee011EppCheckDomainRequest','Metaregistrar\EPP\fee011EppCheckDomainResponse');
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/fury-2.1/eppExceptions/furyEppException.php b/Protocols/EPP/eppExtensions/fury-2.1/eppExceptions/furyEppException.php
new file mode 100644
index 00000000..9bd24d9c
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/fury-2.1/eppExceptions/furyEppException.php
@@ -0,0 +1,29 @@
+ inside the
+ * standard EPP block, e.g.:
+ *
+ *
+ * Object does not exist
+ *
+ * 8010
+ * Domain name does not exist
+ *
+ *
+ *
+ * @package Metaregistrar\EPP
+ */
+class furyEppException extends eppException {
+
+ public function getCiraCode() {
+ return $this->getResponse()->queryPath('/epp:epp/epp:response/epp:result/epp:extValue/epp:value/fury:ciraCode');
+ }
+
+ public function getCiraReason() {
+ return $this->getResponse()->queryPath('/epp:epp/epp:response/epp:result/epp:extValue/epp:reason');
+ }
+}
diff --git a/Protocols/EPP/eppExtensions/fury-2.1/fury-2.1.xsd b/Protocols/EPP/eppExtensions/fury-2.1/fury-2.1.xsd
new file mode 100644
index 00000000..232f160f
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/fury-2.1/fury-2.1.xsd
@@ -0,0 +1,269 @@
+
+
+
+
+
+ Extensible Provisioning Protocol v1.0
+ contact and domain
+ extension schema for framework for
+ provisioning of Fury additional
+ information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/fury-2.1/includes.php b/Protocols/EPP/eppExtensions/fury-2.1/includes.php
index 9e3263c5..bf45bb1c 100644
--- a/Protocols/EPP/eppExtensions/fury-2.1/includes.php
+++ b/Protocols/EPP/eppExtensions/fury-2.1/includes.php
@@ -15,3 +15,6 @@
include_once(dirname(__FILE__) . '/eppResponses/furyInfoDomainResponse.php');
$this->addCommandResponse('Metaregistrar\EPP\eppInfoDomainRequest', 'Metaregistrar\EPP\furyInfoDomainResponse');
+
+include_once(dirname(__FILE__) . '/eppExceptions/furyEppException.php');
+$this->addException('Metaregistrar\EPP\furyEppException');
diff --git a/Protocols/EPP/eppExtensions/fury-rgp-1.0/fury-rgp-1.0.xsd b/Protocols/EPP/eppExtensions/fury-rgp-1.0/fury-rgp-1.0.xsd
new file mode 100644
index 00000000..05cdc77d
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/fury-rgp-1.0/fury-rgp-1.0.xsd
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Extensible Provisioning Protocol v1.0
+ contact and domain
+ extension schema for framework for
+ provisioning of Fury additional
+ information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/idn-1.0/idn-1.0.xsd b/Protocols/EPP/eppExtensions/idn-1.0/idn-1.0.xsd
new file mode 100644
index 00000000..569bd975
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/idn-1.0/idn-1.0.xsd
@@ -0,0 +1,23 @@
+
+
+
+
+ Extensible Provisioning Protocol v1.0 domain name extension
+ schema for IDN Table selection.
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/iis-1.2/iis-1.2.xsd b/Protocols/EPP/eppExtensions/iis-1.2/iis-1.2.xsd
new file mode 100644
index 00000000..f3c3e075
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/iis-1.2/iis-1.2.xsd
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Extensible Provisioning Protocol v1.0
+ Extensions for .SE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Protocols/EPP/eppExtensions/launch-1.0/launch-1.0.xsd b/Protocols/EPP/eppExtensions/launch-1.0/launch-1.0.xsd
new file mode 100644
index 00000000..330dd665
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/launch-1.0/launch-1.0.xsd
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
+
+
+
+ Extensible Provisioning Protocol v1.0
+ domain name
+ extension schema
+ for the launch phase processing.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/org-1.0/org-1.0.xsd b/Protocols/EPP/eppExtensions/org-1.0/org-1.0.xsd
new file mode 100644
index 00000000..8571a0bd
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/org-1.0/org-1.0.xsd
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+
+
+ Extensible Provisioning Protocol v1.0
+ organization provisioning schema.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zhou, et al. Standards Track [Page 31]
+
+ RFC 8543 EPP Organization Mapping March 2019
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/orgext-1.0/orgext-1.0.xsd b/Protocols/EPP/eppExtensions/orgext-1.0/orgext-1.0.xsd
new file mode 100644
index 00000000..833ccca7
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/orgext-1.0/orgext-1.0.xsd
@@ -0,0 +1,68 @@
+
+
+
+
+ Extensible Provisioning Protocol v1.0 Organization Extension Schema v1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/registryLock-1.0/registryLock-1.0.xsd b/Protocols/EPP/eppExtensions/registryLock-1.0/registryLock-1.0.xsd
new file mode 100644
index 00000000..c927be56
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/registryLock-1.0/registryLock-1.0.xsd
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ Extensible Provisioning Protocol v1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/rgp-1.0/rgp-1.0.xsd b/Protocols/EPP/eppExtensions/rgp-1.0/rgp-1.0.xsd
new file mode 100644
index 00000000..f219b6ec
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/rgp-1.0/rgp-1.0.xsd
@@ -0,0 +1,132 @@
+
+
+
+
+
+ Extensible Provisioning Protocol v1.0
+ domain name extension schema for registry grace period
+ processing.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Protocols/EPP/eppExtensions/secDNS-1.1/secDNS-1.1.xsd b/Protocols/EPP/eppExtensions/secDNS-1.1/secDNS-1.1.xsd
new file mode 100644
index 00000000..7b708d96
--- /dev/null
+++ b/Protocols/EPP/eppExtensions/secDNS-1.1/secDNS-1.1.xsd
@@ -0,0 +1,128 @@
+
+
+
+
+
+ Extensible Provisioning Protocol v1.0
+ domain name extension schema
+ for provisioning DNS security (DNSSEC) extensions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file