Add ecc database and conversion toolset v1.

Test: Manually
Bug: 111674784

Change-Id: I94b9b95b014958d90ee1251fcd872c227f450a82
diff --git a/ecc/.gitignore b/ecc/.gitignore
new file mode 100644
index 0000000..fbf10af
--- /dev/null
+++ b/ecc/.gitignore
@@ -0,0 +1 @@
+.intermediate
diff --git a/ecc/README.md b/ecc/README.md
new file mode 100644
index 0000000..ef795d5
--- /dev/null
+++ b/ecc/README.md
@@ -0,0 +1,48 @@
+This directory contains tools and data related to ECC (Emergency Call Codes)
+data and updates.
+
+Directory structure
+===================
+
+gen_eccdata.sh
+  - A script to launch the newest conversion toolset to convert
+    input/eccdata.txt into output/eccdata, and invoke compatibility
+    verification tools of earlier versions of toolsets.
+
+input/eccdata.txt
+  - A text file in ProtoBuf text format which contains all known ECC data.
+    This file shall be compatible with the last version of format toolset,
+    but may not be compatible with all earlier versions.
+
+output/eccdata
+  - The binary file generated from input files, with the last version of
+    format toolset. This file shall be compatible with all earlier versions.
+
+conversion_toolset_v*
+  - Contains format definitions, converting tools and verification tools of
+    one version of ECC data format.
+
+proto
+  - A symbolic link references to protobuf folder of the newest version of
+    conversion toolsets. It's used in Android.mk.
+
+Conversion Toolset
+===================
+
+Every version of conversion toolset shall include at least:
+  - A script to generate eccdata from a known version of input/eccdata.txt.
+  - A script to verify compatibility of output/eccdata generated by any
+    newer version of format toolset.
+
+The output/eccdata generated by a version of conversion toolset shall be
+able to pass compatibility verifications of all previous versions of format
+toolset.
+
+Updating ECC database
+===================
+Steps to update the ECC database:
+1. Edit input/eccdata.txt
+2. Source and launch
+3. Run gen_eccdata.sh
+The database file "output/eccdata" should be updated.
+
diff --git a/ecc/conversion_toolset_v1/env.sh b/ecc/conversion_toolset_v1/env.sh
new file mode 100644
index 0000000..23d9f10
--- /dev/null
+++ b/ecc/conversion_toolset_v1/env.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -o errexit
+
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+INPUT_DATA="${INPUT_DIR}/eccdata.txt"
+OUTPUT_DATA="${OUTPUT_DIR}/eccdata"
+PROTOBUF_DIR="${LOCAL_TOOLSET_DIR}/proto"
+PROTOBUF_FILE="${PROTOBUF_DIR}/protobuf_ecc_data.proto"
+RAW_DATA="${INTERMEDIATE_DIR}/eccdata.raw"
+
+read -d "" PYTHON_COMMAND << END || :
+${ANDROID_BUILD_TOP}/prebuilts/python/${KERNEL}-x86/2.7.5/bin/python
+END
+PYTHONPATH="${PYTHONPATH}:${INTERMEDIATE_DIR}"
+PYTHONPATH="${PYTHONPATH}:${ANDROID_BUILD_TOP}/external/nanopb-c/generator/"
+
+if ! [ -x "${PYTHON_COMMAND}" ] ; then
+  echo "Missing ${PYTHON_COMMAND}." 1>&2
+  exit 1
+fi
+
+"${PROTOC_COMMAND}" \
+  --python_out="${INTERMEDIATE_DIR}" \
+  --proto_path="${PROTOBUF_DIR}" \
+  "${PROTOBUF_FILE}"
diff --git a/ecc/conversion_toolset_v1/gen_eccdata.sh b/ecc/conversion_toolset_v1/gen_eccdata.sh
new file mode 100644
index 0000000..8dd751f
--- /dev/null
+++ b/ecc/conversion_toolset_v1/gen_eccdata.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -o errexit
+
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_TOOLSET_DIR="${ECC_ROOT}/conversion_toolset_v1"
+source "${LOCAL_TOOLSET_DIR}/env.sh"
+
+${ANDROID_BUILD_TOP}/prebuilts/tools/linux-x86_64/protoc/bin/protoc \
+  --encode=ecc.AllInfo proto/protobuf_ecc_data.proto \
+  < "${INPUT_DATA}" > "${RAW_DATA}"
+
+echo
+echo "Starting strict verification"
+"${PYTHON_COMMAND}" -B \
+  "${LOCAL_TOOLSET_DIR}/verify_protobuf_compatibility.py" \
+  --input="${RAW_DATA}" --strict
+echo "Passed strict verification"
+
+echo
+echo "Compressing and encoding eccdata"
+gzip -c < "${RAW_DATA}" > "${OUTPUT_DATA}"
+echo "Done"
+
diff --git a/ecc/conversion_toolset_v1/proto/protobuf_ecc_data.proto b/ecc/conversion_toolset_v1/proto/protobuf_ecc_data.proto
new file mode 100644
index 0000000..5bd7bc3
--- /dev/null
+++ b/ecc/conversion_toolset_v1/proto/protobuf_ecc_data.proto
@@ -0,0 +1,56 @@
+syntax = "proto2";
+
+package ecc;
+
+option java_package = "com.android.phone.ecc";
+option java_outer_classname = "ProtobufEccData";
+
+// EccInfo represents an Emergency Call Code (i.e. an emergency phone
+// number such as 911, 112, ...)
+message EccInfo {
+    enum Type {
+        TYPE_UNSPECIFIED = 0;
+        POLICE = 1;
+        AMBULANCE = 2;
+        FIRE = 3;
+    }
+
+    // Required: Every EccInfo shall contain a phone number.
+    optional string phone_number = 1;
+
+    // Extra rules: Every Ecc should have at least 1 valid type.
+    repeated Type types = 2 [packed=true];
+}
+
+// CountryInfo represents available ECCs of a country/region, recognized
+// with ISO country code.
+message CountryInfo {
+    // Required: Every CountryInfo shall contain a ISO country code.
+    optional string iso_code = 1;
+
+    // Extra rules: There should be at least one EccInfo in this list.
+    repeated EccInfo eccs = 2;
+
+    // Required: Every CountryInfo shall contain a fallback number, shall
+    // be either 112 or 911.
+    //
+    // If an emergency number in EccInfo is declined by ril.ecclist, this
+    // fallback number may take the place.
+    //
+    // Per http://www.etsi.org/deliver/etsi_ts/122100_122199/122101/09.01.00_60/ts_122101v090100p.pdf,
+    // 112 and 911 shall always be available.
+    optional string ecc_fallback = 3;
+}
+
+message AllInfo {
+    // The revision value in ecc/input/eccdata.json should be increased
+    // before releasing a new content.
+    //
+    // This field is not used to compare data revision for online updating.
+    // It's reserved for identifying ecc info problems.
+    optional int32 revision = 1;
+
+    // Extra rules: There should be at least one CountryInfo in this list.
+    repeated CountryInfo countries = 2;
+}
+
diff --git a/ecc/conversion_toolset_v1/verify_eccdata_compatibility.sh b/ecc/conversion_toolset_v1/verify_eccdata_compatibility.sh
new file mode 100644
index 0000000..8686722
--- /dev/null
+++ b/ecc/conversion_toolset_v1/verify_eccdata_compatibility.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -o errexit
+
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_TOOLSET_DIR="${ECC_ROOT}/conversion_toolset_v1"
+source "${LOCAL_TOOLSET_DIR}/env.sh"
+
+echo "Starting compatibility verification v1"
+echo "Decoding and decompressing eccdata"
+gunzip -c < "${OUTPUT_DATA}" > "${RAW_DATA}"
+${PYTHON_COMMAND} -B \
+  "${LOCAL_TOOLSET_DIR}/verify_protobuf_compatibility.py" \
+  --input="${RAW_DATA}"
+echo "Passed compatibility verification v1"
+
diff --git a/ecc/conversion_toolset_v1/verify_protobuf_compatibility.py b/ecc/conversion_toolset_v1/verify_protobuf_compatibility.py
new file mode 100644
index 0000000..bc707eb
--- /dev/null
+++ b/ecc/conversion_toolset_v1/verify_protobuf_compatibility.py
@@ -0,0 +1,85 @@
+#!/usr/bin/python -B
+
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Notice:
+# - verify_eccdata_strict.py: Verify data which is generated by this
+# version of this toolset.
+# - verify_eccdata_compatibility.py: Verify data which is generated by any
+# newer version of this tool set for ensuring backward compatibility.
+
+import sys
+import argparse
+import protobuf_ecc_data_pb2
+
+parser = argparse.ArgumentParser()
+parser.add_argument("--input", required=True)
+parser.add_argument("--strict", action="store_true")
+args = parser.parse_args()
+
+all_ecc_info = protobuf_ecc_data_pb2.AllInfo()
+
+with open(args.input, "rb") as ecc_data_source_file:
+  all_ecc_info.ParseFromString(ecc_data_source_file.read())
+
+if (args.strict):
+  print("Verify in strict mode")
+
+assert all_ecc_info.HasField("revision")
+assert all_ecc_info.revision > 0
+assert len(all_ecc_info.countries) > 0
+
+loaded_iso = []
+for country_info in all_ecc_info.countries:
+  assert country_info.HasField("iso_code")
+  assert len(country_info.iso_code) > 0
+  assert country_info.iso_code == country_info.iso_code.strip().upper()
+  assert country_info.iso_code not in loaded_iso
+  loaded_iso.append(country_info.iso_code)
+  assert country_info.HasField("ecc_fallback")
+  assert len(country_info.ecc_fallback) > 0
+
+  if len(country_info.eccs) > 0:
+    loaded_phone_number = []
+    for ecc_info in country_info.eccs:
+      assert ecc_info.HasField("phone_number")
+      phone_number = ecc_info.phone_number.strip()
+      assert len(phone_number) > 0
+      assert phone_number not in loaded_phone_number
+      loaded_phone_number.append(phone_number)
+
+      if (args.strict):
+        assert len(ecc_info.types) > 0
+        loaded_types = []
+        for ecc_type in ecc_info.types:
+          assert ecc_type == protobuf_ecc_data_pb2.EccInfo.POLICE or \
+              ecc_type == protobuf_ecc_data_pb2.EccInfo.AMBULANCE or \
+              ecc_type == protobuf_ecc_data_pb2.EccInfo.FIRE
+          assert ecc_type not in loaded_types
+          loaded_types.append(ecc_type)
+      else:
+        # For forward compatibility, ecc_info.types could be null if a phone
+        # number contains only new types which is not defined now. Just leave
+        # a warning message for this case.
+        if len(ecc_info.types) == 0:
+          print("WARNING: No recognizable type for " + \
+              country_info.iso_code + " - " + ecc_info.phone_number)
+        else:
+          loaded_types = []
+          for ecc_type in ecc_info.types:
+            assert ecc_type not in loaded_types
+            loaded_types.append(ecc_type)
+  elif (args.strict):
+    print("Warning: Empty ecc list for country " + country_info.iso_code)
diff --git a/ecc/gen_eccdata.sh b/ecc/gen_eccdata.sh
new file mode 100755
index 0000000..5cf52de
--- /dev/null
+++ b/ecc/gen_eccdata.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+set -o errexit
+
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+if [ -z "${ANDROID_BUILD_TOP}" ] ; then
+  echo "You need to source and lunch before you can use this script" 1>&2
+  exit 1
+fi
+
+case $(uname -s) in
+  Darwin)
+    KERNEL=darwin
+    ;;
+  Linux)
+    KERNEL=linux
+    ;;
+  *)
+    echo "Unknown kernel \"`uname -s`\"" 1>&2
+    exit 1
+    ;;
+esac
+
+read -d "" PROTOC_COMMAND << END || :
+${ANDROID_BUILD_TOP}/prebuilts/tools/${KERNEL}-x86_64/protoc/bin/protoc
+END
+if ! [ -x "${PROTOC_COMMAND}" ] ; then
+  echo "Missing ${PROTOC_COMMAND}." 1>&2
+  exit 1
+fi
+
+ECC_ROOT=`realpath \`dirname $0\``
+TOOLSET_DIR="${ECC_ROOT}/conversion_toolset_v1"
+INPUT_DIR="${ECC_ROOT}/input"
+OUTPUT_DIR="${ECC_ROOT}/output"
+INTERMEDIATE_DIR="${ECC_ROOT}/.intermediate"
+
+rm -rf "${INTERMEDIATE_DIR}" "${OUTPUT_DIR}/*"
+mkdir -p "${INTERMEDIATE_DIR}"
+
+source "${TOOLSET_DIR}/gen_eccdata.sh"
+echo
+
+# Check compatibility with every previous version
+rm -rf "${INTERMEDIATE_DIR}/*"
+source ${ECC_ROOT}/conversion_toolset_v1/verify_eccdata_compatibility.sh
+#rm -rf "${INTERMEDIATE_DIR}/*"
+#source ${ECC_ROOT}/conversion_toolset_v2/verify_eccdata_compatibility.sh
+#rm -rf "${INTERMEDIATE_DIR}/*"
+#source ${ECC_ROOT}/conversion_toolset_v3/verify_eccdata_compatibility.sh
+#...
+
+echo
+echo "Passed all compatibility verification!"
+
diff --git a/ecc/input/eccdata.txt b/ecc/input/eccdata.txt
new file mode 100644
index 0000000..54be16b
--- /dev/null
+++ b/ecc/input/eccdata.txt
@@ -0,0 +1,2856 @@
+revision: 1
+countries {
+  iso_code: "AD"
+  eccs {
+    phone_number: "110"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "116"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "118"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "AE"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "998"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "997"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "AF"
+  eccs {
+    phone_number: "119"
+    types: POLICE
+    types: FIRE
+  }
+  eccs {
+    phone_number: "020112"
+    types: AMBULANCE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "AG"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "AI"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "AL"
+  eccs {
+    phone_number: "129"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "127"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "128"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "AM"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "AO"
+  eccs {
+    phone_number: "113"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "112"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "115"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "AR"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "AS"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "AT"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "AU"
+  eccs {
+    phone_number: "000"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "AW"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "AZ"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BA"
+  eccs {
+    phone_number: "122"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "124"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "123"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BB"
+  eccs {
+    phone_number: "211"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "511"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "311"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "BD"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BE"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BF"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "18"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BG"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BH"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BI"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BJ"
+  eccs {
+    phone_number: "117"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "118"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BM"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "BN"
+  eccs {
+    phone_number: "993"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "991"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "995"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BO"
+  eccs {
+    phone_number: "110"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "118"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "119"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "BR"
+  eccs {
+    phone_number: "190"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "192"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "193"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "BS"
+  eccs {
+    phone_number: "919"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "BT"
+  eccs {
+    phone_number: "113"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "112"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "110"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BW"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "997"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "998"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BY"
+  eccs {
+    phone_number: "102"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "103"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "101"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "BZ"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "CA"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "CD"
+  eccs {
+    phone_number: "118"
+    types: POLICE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CF"
+  eccs {
+    phone_number: "117"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CG"
+  eccs {
+    phone_number: "118"
+    types: POLICE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CH"
+  eccs {
+    phone_number: "117"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "144"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "118"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CI"
+  eccs {
+    phone_number: "170"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "185"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "180"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CK"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CL"
+  eccs {
+    phone_number: "133"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "131"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "132"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CM"
+  eccs {
+    phone_number: "117"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "119"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "118"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CN"
+  eccs {
+    phone_number: "110"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "120"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "119"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CO"
+  eccs {
+    phone_number: "123"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CR"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "CU"
+  eccs {
+    phone_number: "106"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "104"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "105"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CV"
+  eccs {
+    phone_number: "132"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "130"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "131"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CY"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "CZ"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "DE"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "DJ"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "18"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "DK"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "DM"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "DO"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "DZ"
+  eccs {
+    phone_number: "1548"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "EC"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "EE"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "EG"
+  eccs {
+    phone_number: "122"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "123"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "180"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "ER"
+  eccs {
+    phone_number: "127799"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "202914"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "202099"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "ES"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "ET"
+  eccs {
+    phone_number: "991"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "FI"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "FJ"
+  eccs {
+    phone_number: "917"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "911"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "FK"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "FM"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "FO"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "FR"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GA"
+  eccs {
+    phone_number: "177"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GB"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GD"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "GE"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GF"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "15"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GH"
+  eccs {
+    phone_number: "191"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "193"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "192"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GI"
+  eccs {
+    phone_number: "199"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "190"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GL"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GM"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "116"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "118"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GN"
+  eccs {
+    phone_number: "122"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "442020"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "1717"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GP"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "15"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GQ"
+  eccs {
+    phone_number: "113"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "115"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GR"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GT"
+  eccs {
+    phone_number: "120"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "123"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "GU"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "GW"
+  eccs {
+    phone_number: "117"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "113"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "118"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "GY"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "913"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "912"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "HK"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "HN"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "HR"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "HT"
+  eccs {
+    phone_number: "114"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "116"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "115"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "HU"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "ID"
+  eccs {
+    phone_number: "110"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "118"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "113"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "IE"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "IL"
+  eccs {
+    phone_number: "100"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "101"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "102"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "IN"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "IO"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "IQ"
+  eccs {
+    phone_number: "130"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "IR"
+  eccs {
+    phone_number: "110"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "115"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "125"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "IS"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "IT"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "JM"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "JO"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "JP"
+  eccs {
+    phone_number: "110"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "119"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "KE"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "KG"
+  eccs {
+    phone_number: "102"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "103"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "101"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "KH"
+  eccs {
+    phone_number: "117"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "119"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "118"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "KI"
+  eccs {
+    phone_number: "192"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "194"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "193"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "KM"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "KN"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "333"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "KP"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "KR"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "119"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "KW"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "KY"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "KZ"
+  eccs {
+    phone_number: "102"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "103"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "101"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "LA"
+  eccs {
+    phone_number: "1191"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "1195"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "1190"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "LB"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "LC"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "911"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "LI"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "LK"
+  eccs {
+    phone_number: "119"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "110"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "LR"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "LS"
+  eccs {
+    phone_number: "123"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "121"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "122"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "LT"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "LU"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "LV"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "LY"
+  eccs {
+    phone_number: "1515"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MA"
+  eccs {
+    phone_number: "190"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "150"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MC"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MD"
+  eccs {
+    phone_number: "902"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "903"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "901"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "ME"
+  eccs {
+    phone_number: "122"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "124"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "123"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MG"
+  eccs {
+    phone_number: "117"
+    types: POLICE
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "118"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MH"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "MK"
+  eccs {
+    phone_number: "192"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "194"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "193"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "ML"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "15"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MM"
+  eccs {
+    phone_number: "199"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "192"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "191"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MN"
+  eccs {
+    phone_number: "102"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "103"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "101"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MO"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MP"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "MR"
+  eccs {
+    phone_number: "117"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "118"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MS"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "6644912802"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "911"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "MT"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MU"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "114"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "115"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MV"
+  eccs {
+    phone_number: "119"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "102"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "118"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MW"
+  eccs {
+    phone_number: "997"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "998"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "999"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MX"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "MY"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "MZ"
+  eccs {
+    phone_number: "119"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "117"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "198"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NA"
+  eccs {
+    phone_number: "10111"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "211111"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NC"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "15"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NE"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "15"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NG"
+  eccs {
+    phone_number: "199"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NI"
+  eccs {
+    phone_number: "118"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "128"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "115"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NL"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NO"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NP"
+  eccs {
+    phone_number: "100"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "102"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "101"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NR"
+  eccs {
+    phone_number: "110"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "111"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "112"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NU"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "NZ"
+  eccs {
+    phone_number: "111"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "OM"
+  eccs {
+    phone_number: "9999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "PA"
+  eccs {
+    phone_number: "104"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "911"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "PE"
+  eccs {
+    phone_number: "105"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "110"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "116"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "PF"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "15"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "PG"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "111"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "110"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "PH"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "PK"
+  eccs {
+    phone_number: "15"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "115"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "16"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "PL"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "PM"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "15"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "PR"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "PS"
+  eccs {
+    phone_number: "100"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "101"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "102"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "PT"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "PW"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "PY"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "QA"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "RE"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "15"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "RO"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "RS"
+  eccs {
+    phone_number: "192"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "194"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "193"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "RU"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "RW"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "111"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SA"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "997"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "998"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "SB"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "911"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "988"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "SC"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SD"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: FIRE
+  }
+  eccs {
+    phone_number: "333"
+    types: AMBULANCE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SE"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SG"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "995"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SH"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: FIRE
+  }
+  eccs {
+    phone_number: "911"
+    types: AMBULANCE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "SI"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SK"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SL"
+  eccs {
+    phone_number: "019"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "999"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SM"
+  eccs {
+    phone_number: "113"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "118"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "115"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SN"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "15"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SO"
+  eccs {
+    phone_number: "888"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SR"
+  eccs {
+    phone_number: "115"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SS"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "ST"
+  eccs {
+    phone_number: "222222"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "221222"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "112"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SV"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "913"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "SY"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "110"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "113"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "SZ"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "911"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "933"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TC"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "TD"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TG"
+  eccs {
+    phone_number: "117"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "118"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TH"
+  eccs {
+    phone_number: "191"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "1669"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "199"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "TJ"
+  eccs {
+    phone_number: "102"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "103"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "101"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TK"
+  eccs {
+    phone_number: "111"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TL"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "110"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "3312210"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TM"
+  eccs {
+    phone_number: "002"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "003"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "001"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TN"
+  eccs {
+    phone_number: "197"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "190"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "198"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TO"
+  eccs {
+    phone_number: "922"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "933"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "999"
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "TR"
+  eccs {
+    phone_number: "155"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "112"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "110"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TT"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "990"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TV"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "TW"
+  eccs {
+    phone_number: "110"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "119"
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "TZ"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "UA"
+  eccs {
+    phone_number: "02"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "03"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "01"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "UG"
+  eccs {
+    phone_number: "999"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "US"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "UY"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "UZ"
+  eccs {
+    phone_number: "102"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "103"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "101"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "VA"
+  eccs {
+    phone_number: "113"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "118"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "115"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "VC"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "VE"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "VG"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "VI"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "VN"
+  eccs {
+    phone_number: "113"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "115"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "114"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "VU"
+  eccs {
+    phone_number: "111"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "112"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "113"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "WF"
+  eccs {
+    phone_number: "17"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "15"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "18"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "WS"
+  eccs {
+    phone_number: "911"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "911"
+}
+countries {
+  iso_code: "XK"
+  eccs {
+    phone_number: "192"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "194"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "193"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "YE"
+  eccs {
+    phone_number: "199"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "ZA"
+  eccs {
+    phone_number: "112"
+    types: POLICE
+    types: AMBULANCE
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "ZM"
+  eccs {
+    phone_number: "991"
+    types: POLICE
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "993"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
+countries {
+  iso_code: "ZW"
+  eccs {
+    phone_number: "995"
+    types: POLICE
+  }
+  eccs {
+    phone_number: "999"
+    types: AMBULANCE
+  }
+  eccs {
+    phone_number: "993"
+    types: FIRE
+  }
+  ecc_fallback: "112"
+}
diff --git a/ecc/output/eccdata b/ecc/output/eccdata
new file mode 100644
index 0000000..2d0165a
--- /dev/null
+++ b/ecc/output/eccdata
Binary files differ
diff --git a/ecc/proto b/ecc/proto
new file mode 120000
index 0000000..1faef70
--- /dev/null
+++ b/ecc/proto
@@ -0,0 +1 @@
+conversion_toolset_v1/proto/
\ No newline at end of file