The following copyright and license information applies to ecclist_for_mcc.conf

# Copyright (C) 2010 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.

ecclist_for_mcc.conf contains emergency number of countries, which will be used to
set the property of emergency numbers.

The format of ecclist_for_mcc.conf is

[MCC of a country] white space [Emergency number for that country, separated by comma]

Note:
1. Use white space instead of TAB between MCC and emergency number list.

2. Emergency number 112 and 911 are included as default emergency numbers. But it is 
recommended to explicitly include those two numbers in the list.

3. It is recommended to sort the entries by MCC.
