Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

6169
gaia/shared/resources/apn.json Executable file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,2 @@
../apn_tz.json: ../tz.json service_providers.xml default_timezones.py
python default_timezones.py > $@

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,295 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- use empty string to specify no proxy or port -->
<!-- This version must agree with that in apps/common/res/apns.xml -->
<apns version="7">
<!-- Test Network -->
<apn carrier="Test Network"
mcc="001"
mnc="01"
apn="internet"
user="user"
password="password"
proxy="127.0.0.1"
port="8080"
mmsc="http://127.0.0.1"
mmsproxy="127.0.0.1"
mmsport="8080"
authtype="0"
type="default,supl,mms,dun,ims"
/>
<!-- APNs used for bearer tests -->
<!-- Test network with no bearer (compatible with all network types) -->
<apn carrier="NoBearer"
mcc="001"
mnc="02"
apn="nobearer"
user="user"
password="password"
proxy="127.0.0.1"
port="8080"
mmsc="http://127.0.0.1"
mmsproxy="127.0.0.1"
mmsport="8080"
authtype="0"
type="default,supl,mms,dun,ims"
/>
<!-- Test network with an EVDO_0 bearer -->
<apn carrier="Evdo0Bearer"
mcc="001"
mnc="02"
apn="evdo0bearer"
user="user"
password="password"
proxy="127.0.0.1"
port="8080"
mmsc="http://127.0.0.1"
mmsproxy="127.0.0.1"
mmsport="8080"
authtype="0"
type="default,supl,mms,dun,ims"
bearer="7"
/>
<!-- Test network with a 0 bearer (compatible with all network types) -->
<apn carrier="ZeroBearer"
mcc="001"
mnc="02"
apn="zerobearer"
user="user"
password="password"
proxy="127.0.0.1"
port="8080"
mmsc="http://127.0.0.1"
mmsproxy="127.0.0.1"
mmsport="8080"
authtype="0"
type="default,supl,mms,dun,ims"
bearer="0"
/>
<!-- Default APN for undefined types -->
<apn carrier="No type test"
mcc="001"
mnc="03"
apn="internet"
user="user"
password="password"
proxy="127.0.0.1"
port="8080"
mmsc="http://127.0.0.1"
mmsproxy="127.0.0.1"
mmsport="8080"
authtype="0"
/>
<!-- /Test Networks -->
<apn carrier="SpeakOut"
mcc="302"
mnc="720"
apn="goam.com"
user="wapuser1"
password="wap"
proxy="10.128.1.69"
port="80"
mmsc="http://mms.gprs.rogers.com"
mmsproxy="10.128.1.69"
mmsport="80"
type="default,mms"
/>
<!-- override carrier names until they get updated in the upstream database -->
<apn carrier="VM WAP"
mcc="208"
mnc="01"
name="Virgin Mobile"
/>
<apn carrier="VM MMS"
mcc="208"
mnc="01"
name="Virgin Mobile MMS"
/>
<apn carrier="亞太電信(APBW) (Internet)"
mcc="466"
mnc="05"
apn="aptnet"
mmsproxy="210.200.66.196"
mmsport="80"
user="aptwap@nsip.qma.com.tw"
password="aptwap"
authtype="2"
type="default"
/>
<apn carrier="亞太電信(APBW) (WAP)"
mcc="466"
mnc="05"
apn="aptwap"
mmsproxy="210.200.66.196"
mmsport="80"
user="aptwap@nsip.qma.com.tw"
password="aptwap"
authtype="2"
type="default"
/>
<apn carrier="亞太電信(APBW) (MMS)"
mcc="466"
mnc="05"
apn="aptmms"
mmsc="http://mms.aptg.com.tw"
mmsproxy="210.200.66.196"
mmsport="80"
user="aptwap@nsip.qma.com.tw"
password="aptwap"
type="mms"
/>
<apn carrier="Conexion Compartida"
mcc="214"
mnc="07"
apn="movistar.es"
user="MOVISTAR"
password="MOVISTAR"
authtype="1"
type="dun"
/>
<!-- overwrite APNs until they get updated in the upstream database -->
<apn carrier_name="ATT Nextgenphone"
carrier="ATT Phone"
overwrite="true"
mcc="310"
mnc="410"
apn="phone"
type="default,mms,supl,fota"
mmsc="http://mmsc.mobile.att.net"
mmsproxy="proxy.mobile.att.net"
mmsport="80"
/>
<!-- Bug - 1011584 | Adding Bangladeshi APNs Below -->
<!-- Drop them once they get added to the AOSP APN database -->
<apn carrier="GP INTERNET"
mcc="470"
mnc="01"
apn="gpinternet"
type="default,supl"
/>
<apn carrier="GP WAP"
mcc="470"
mnc="01"
apn="gpwap"
proxy="010.128.001.002"
port="8080"
type="default,supl"
/>
<apn carrier="GP MMS"
mcc="470"
mnc="01"
apn="gpmms"
mmsc="http://mms.gpsurf.net/servlets/mms"
mmsproxy="010.128.001.002"
mmsport="8080"
type="mms"
/>
<apn carrier="Robi-INTERNET"
mcc="470"
mnc="02"
apn="internet"
type="default,supl"
/>
<apn carrier="Robi-WAP"
mcc="470"
mnc="02"
apn="wap"
proxy="10.16.18.77"
port="9028"
type="default,supl"
/>
<apn carrier="Robi-MMS"
mcc="470"
mnc="02"
apn="wap"
mmsc="http://10.16.18.40:38090/was"
mmsproxy="10.16.18.77"
mmsport="9028"
type="mms"
/>
<apn carrier="Banglalink-WEB"
mcc="470"
mnc="03"
apn="blweb"
type="default,supl"
/>
<apn carrier="Banglalink-WAP"
mcc="470"
mnc="03"
apn="blwap"
proxy="10.10.55.34"
port="8799"
type="default,supl"
/>
<apn carrier="Banglalink-MMS"
mcc="470"
mnc="03"
apn="blmms"
mmsc="http://mmsc1:10021/mmsc/01"
mmsproxy="10.10.55.34"
mmsport="8799"
type="mms"
/>
<apn carrier="Airtel Internet"
mcc="470"
mnc="07"
apn="internet"
type="default,supl"
/>
<apn carrier="Airtel WAP"
mcc="470"
mnc="07"
apn="wap"
type="default,supl"
/>
<apn carrier="Airtel MMS"
mcc="470"
mnc="07"
apn="mms"
mmsc="http://bd.airtel.com"
mmsproxy="10.128.5.6"
type="mms"
/>
<apn carrier="TT-INTERNET"
mcc="470"
mnc="04"
apn="wap"
type="default,supl"
/>
<apn carrier="TT-WAP"
mcc="470"
mnc="04"
apn="wap"
proxy="192.168.145.101"
port="9201"
type="default,supl"
/>
<apn carrier="Teletalk-MMS"
mcc="470"
mnc="04"
apn="mms"
mmsc="http://10.5.4.22:38090/was"
mmsproxy="10.5.4.40"
mmsport="8080"
type="mms"
/>
</apns>

View file

@ -0,0 +1,120 @@
# -*- coding: utf-8 -*-
import sys, re, json
from xml.parsers import expat
#
# Parse the TZ input file and build the tree.
#
text = open("../tz.json").read()
data = json.loads(text)
cities = {}
conflicts = {
'CD': 'Africa/Kinshasa',
'ML': 'Africa/Bamako',
'AR': 'America/Argentina/Buenos_Aires', # This is weird in tz.json I guess
'BR': 'America/Sao_Paulo',
'CA': 'America/Toronto',
'CL': 'America/Santiago',
'GL': 'America/Godthab',
'MX': 'America/Mexico_City',
'US': 'America/New_York',
'VI': 'America/Virgin',
'AQ': 'Antarctica/South_Pole',
'CN': 'Asia/Chongqing', # Beijing is not in our database?
'CY': 'Asia/Nicosia',
'ID': 'Asia/Jakarta',
'IL': 'Asia/Jerusalem',
'KZ': 'Asia/Almaty',
'MN': 'Asia/Ulan_Bator',
'MY': 'Asia/Kuala_Lumpur',
'PS': 'Asia/Gaza',
'TM': 'Asia/Ashgabat',
'UZ': 'Asia/Tashkent',
'VN': 'Asia/Saigon',
'AU': 'Australia/Sydney',
'ES': 'Europe/Madrid',
'GB': 'Europe/London',
'MD': 'Europe/Chisinau',
'NO': 'Europe/Oslo',
'PT': 'Europe/Lisbon',
'RU': 'Europe/Moscow',
'TR': 'Europe/Istanbul',
'UA': 'Europe/Kyiv',
'AS': 'Pacific/Samoa',
'EC': 'Pacific/Galapagos',
'FM': 'Pacific/Ponape',
'KI': 'Pacific/Kiritimati',
'MH': 'Pacific/Kwajalein',
'NZ': 'Pacific/Auckland',
'PF': 'Pacific/Tahiti',
'UM': 'Pacific/Midway'
}
for continent in data:
for entry in data[continent]:
cc = entry['cc'].encode('ascii')
city = entry['city'].encode('ascii')
if cc in cities:
if not cc in conflicts:
print(city)
cities[cc] = conflicts[cc]
else:
cities[cc] = continent + '/' + city
#
# Parse the APN input file and build the tree.
#
apn_tz = {}
def start_element(name, attrs):
global cc, apn_tz
if name == "country":
cc = attrs['code'].encode('ascii')
if not re.match('[a-z]{2}', cc):
print("invalid cc='" + cc + "'")
sys.exit(-1)
if name == "network-id":
mcc = attrs['mcc'].encode('ascii')
mnc = attrs['mnc'].encode('ascii')
if not re.match('[0-9]{3}', mcc) or not re.match('[0-9]{1,3}', mnc):
print("invalid mcc='" + mcc + "' or mnc='" + mnc + "'")
sys.exit(-1)
if not mcc in apn_tz:
apn_tz[mcc] = {}
apn_tz[mcc][mnc] = cities[cc.upper()]
def char_data(text):
True
def end_element(name):
True
p = expat.ParserCreate()
p.StartElementHandler = start_element
p.CharacterDataHandler = char_data
p.EndElementHandler = end_element
p.ParseFile(open('service_providers.xml', 'rb'))
#
# Sort/filter apn_tz
#
for mcc in apn_tz:
tz_list = apn_tz[mcc]
tmp = ''
same_tz = True
for mnc in tz_list:
if (tmp == ''):
tmp = tz_list[mnc]
elif (tmp != tz_list[mnc]):
same_tz = False
break
if same_tz:
apn_tz[mcc] = tmp
print(json.dumps(apn_tz, sort_keys = True, indent = 2))
exit()

View file

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title> APN Database </title>
<script type="application/javascript" src="query.js"></script>
<style type="text/css">
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
textarea {
margin: 2px;
}
body > textarea {
position: absolute;
width: 50%;
height: -moz-calc(100% - 10px);
height: -webkit-calc(100% - 10px);
}
form {
position: absolute;
right: 2px;
width: -moz-calc(50% - 10px);
width: -webkit-calc(50% - 10px);
height: 90%;
}
form label {
display: block;
text-align: center;
height: 25px;
margin: 0;
}
form textarea {
width: 100%;
height: -moz-calc(50% - 2px);
height: -webkit-calc(50% - 2px);
}
</style>
</head>
<body>
<textarea readonly></textarea>
<form>
<label> MCC: <input name="mcc" value="214"/> </label>
<label> MNC: <input name="mnc" value="07" /> </label>
<textarea readonly id="selection"></textarea>
<textarea readonly id="preferences"></textarea>
</form>
</body>
</html>

View file

@ -0,0 +1,582 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-->
<variant version="1">
<operator carrier="Test Network with Operator Variant Settings"
mcc="001"
mnc="01"
cellBroadcastSearchList="gsm:0,1,2,3|cdma:4,5,6,7"
voicemail="999999"
/>
<operator
name="Internet movil"
mcc="214"
mnc="01"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Orange Internet Móvil"
mcc="214"
mnc="03"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Yoigo Navegador"
mcc="214"
mnc="04"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="INTERNET GPRS"
mcc="214"
mnc="06"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Euskaltel Internet"
mcc="214"
mnc="06"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Internet R"
mcc="214"
mnc="06"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="TeleCable Internet"
mcc="214"
mnc="06"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar"
mcc="214"
mnc="07"
enableStrict7BitEncodingForSms="true"
operatorSizeLimitation="512000"
/>
<operator
name="Euskaltel Internet"
mcc="214"
mnc="08"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="TeleCable Internet"
mcc="214"
mnc="16"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Internet"
mcc="334"
mnc="020"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Mensajes Multimedia"
mcc="334"
mnc="020"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar INTERNET"
mcc="334"
mnc="03"
enableStrict7BitEncodingForSms="true"
voicemail="*86"
operatorSizeLimitation="512000"
/>
<operator
name="Movistar INTERNET"
mcc="334"
mnc="030"
enableStrict7BitEncodingForSms="true"
voicemail="*86"
operatorSizeLimitation="512000"
/>
<operator
name="Iusacell Internet"
mcc="334"
mnc="050"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="INTERNET CLARO"
mcc="704"
mnc="01"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="BROADBAND TIGO"
mcc="704"
mnc="02"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar INTERNET"
mcc="704"
mnc="03"
enableStrict7BitEncodingForSms="true"
voicemail="*86"
/>
<operator
name="Movistar INTERNET"
mcc="704"
mnc="030"
enableStrict7BitEncodingForSms="true"
voicemail="*86"
/>
<operator
name="INTERNET CLARO"
mcc="706"
mnc="01"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="El Salvaldor Digicel"
mcc="706"
mnc="02"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="BROADBAND TIGO"
mcc="706"
mnc="03"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar INTERNET"
mcc="706"
mnc="04"
enableStrict7BitEncodingForSms="true"
voicemail="*86"
/>
<operator
name="Movistar INTERNET"
mcc="706"
mnc="040"
enableStrict7BitEncodingForSms="true"
voicemail="*86"
/>
<operator
name="INTERNET"
mcc="710"
mnc="21"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar INTERNET"
mcc="710"
mnc="300"
enableStrict7BitEncodingForSms="true"
voicemail="*86"
/>
<operator
name="INTERNET"
mcc="710"
mnc="730"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Kolbi"
mcc="712"
mnc="01"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Kolbi"
mcc="712"
mnc="02"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="INTERNET CLARO"
mcc="712"
mnc="03"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar INTERNET"
mcc="712"
mnc="04"
enableStrict7BitEncodingForSms="true"
voicemail="*1690"
/>
<operator
name="Wap"
mcc="714"
mnc="01"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar INTERNET"
mcc="714"
mnc="020"
enableStrict7BitEncodingForSms="true"
voicemail="*86"
/>
<operator
name="WEB Claro"
mcc="714"
mnc="03"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="INTERNET Panama"
mcc="714"
mnc="04"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar INTERNET"
mcc="716"
mnc="06"
enableStrict7BitEncodingForSms="true"
voicemail="*169"
operatorSizeLimitation="614400"
/>
<operator
name="CLARO DATOS"
mcc="716"
mnc="10"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar WAP"
mcc="722"
mnc="07"
enableStrict7BitEncodingForSms="true"
voicemail="555"
operatorSizeLimitation="614400"
/>
<operator
name="Claro AR"
mcc="722"
mnc="31"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Claro AR"
mcc="722"
mnc="310"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Personal Datos"
mcc="722"
mnc="34"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Personal Datos"
mcc="722"
mnc="341"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="TIM Connect"
mcc="724"
mnc="02"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="TIM Connect"
mcc="724"
mnc="03"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="TIM Connect"
mcc="724"
mnc="04"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Java Session"
mcc="724"
mnc="05"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Claro Foto"
mcc="724"
mnc="05"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Vivo Internet"
mcc="724"
mnc="06"
enableStrict7BitEncodingForSms="true"
cellBroadcastSearchList="gsm:50"
/>
<operator
name="SCTL GPRS"
mcc="724"
mnc="07"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Vivo Internet"
mcc="724"
mnc="10"
enableStrict7BitEncodingForSms="true"
cellBroadcastSearchList="gsm:50"
/>
<operator
name="Vivo Internet"
mcc="724"
mnc="11"
enableStrict7BitEncodingForSms="true"
cellBroadcastSearchList="gsm:50"
/>
<operator
name="BrT Modem"
mcc="724"
mnc="16"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="TelemigC GPRS"
mcc="724"
mnc="19"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Vivo Internet"
mcc="724"
mnc="23"
enableStrict7BitEncodingForSms="true"
cellBroadcastSearchList="gsm:50"
/>
<operator
name="AmazôniaC GPRS"
mcc="724"
mnc="24"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="OI GPRS"
mcc="724"
mnc="31"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Internet Movil"
mcc="730"
mnc="01"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Internet Movil"
mcc="730"
mnc="10"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar APLICACIONES"
mcc="730"
mnc="02"
enableStrict7BitEncodingForSms="true"
voicemail="500"
skipProxy="true"
skipProxyFor="Movistar APLICACIONES"
/>
<operator
name="BAM Claro"
mcc="730"
mnc="03"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="web"
mcc="730"
mnc="07"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Internet"
mcc="730"
mnc="08"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Wap"
mcc="730"
mnc="08"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Bam"
mcc="730"
mnc="08"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Internet Movil"
mcc="730"
mnc="10"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="WEB Comcel 3GSM"
mcc="732"
mnc="101"
enableStrict7BitEncodingForSms="true"
operatorSizeLimitation="614400"
/>
<operator
name="TIGO WEB"
mcc="732"
mnc="103"
enableStrict7BitEncodingForSms="true"
operatorSizeLimitation="614400"
/>
<operator
name="TIGO Multimedia"
mcc="732"
mnc="103"
enableStrict7BitEncodingForSms="true"
operatorSizeLimitation="614400"
/>
<operator
name="TIGO WEB"
mcc="732"
mnc="111"
enableStrict7BitEncodingForSms="true"
operatorSizeLimitation="614400"
/>
<operator
name="TIGO Multimedia"
mcc="732"
mnc="111"
enableStrict7BitEncodingForSms="true"
operatorSizeLimitation="614400"
/>
<operator
name="Movistar INTERNET"
mcc="732"
mnc="123"
enableStrict7BitEncodingForSms="true"
voicemail="*123"
operatorSizeLimitation="614400"
/>
<operator
name="Digitel GSM"
mcc="734"
mnc="01"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Digitel GSM"
mcc="734"
mnc="02"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Digitel GSM"
mcc="734"
mnc="03"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar INTERNET"
mcc="734"
mnc="04"
enableStrict7BitEncodingForSms="true"
voicemail="*2"
/>
<operator
name="Movistar WAP"
mcc="734"
mnc="04"
enableStrict7BitEncodingForSms="true"
voicemail="*2"
/>
<operator
name="MODEM"
mcc="734"
mnc="06"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar INTERNET"
mcc="740"
mnc="00"
enableStrict7BitEncodingForSms="true"
voicemail="*82"
operatorSizeLimitation="614400"
/>
<operator
name="Claro Internet"
mcc="740"
mnc="01"
enableStrict7BitEncodingForSms="true"
operatorSizeLimitation="614400"
/>
<operator
name="Claro Internet"
mcc="740"
mnc="010"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="ALEGRO 3G"
mcc="740"
mnc="02"
enableStrict7BitEncodingForSms="true"
operatorSizeLimitation="614400"
/>
<operator
name="wapANCEL"
mcc="748"
mnc="01"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="gprsANCEL"
mcc="748"
mnc="01"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="Movistar INTERNET"
mcc="748"
mnc="07"
enableStrict7BitEncodingForSms="true"
voicemail="6684"
operatorSizeLimitation="1048576"
/>
<operator
name="Claro UY"
mcc="748"
mnc="10"
enableStrict7BitEncodingForSms="true"
/>
<operator
name="T-Mobile Internet"
mcc="262"
mnc="01"
voicemail="3311"
/>
<operator
name="T-mobile.pl"
mcc="260"
mnc="02"
cellBroadcastSearchList="gsm:0,9,19,28,112"
/>
<operator
name="o2"
mcc="262"
mnc="07"
enableStrict7BitEncodingForSms="true"
operatorSizeLimitation="614400"
/>
</variant>

View file

@ -0,0 +1,428 @@
'use strict';
document.addEventListener('DOMContentLoaded', function onload() {
var DEBUG = false;
var OPERATOR_VARIANT_FILE = '../apn.json';
var GNOME_DB_FILE = 'service_providers.xml';
var ANDROID_DB_FILE = 'apns_conf.xml';
var LOCAL_ANDROID_DB_FILE = 'apns_conf_local.xml';
var OPERATOR_VARIANT_DB_FILE = 'operator_variant.xml';
var gGnomeDB = null;
var gAndroidDB = null;
var gOperatorVariantDB = null;
/**
* XML helpers: load & query XML databases
*/
function loadXML(url) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send();
return xhr.responseXML;
}
function queryXML(xmlDocument, query) {
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver(xmlDocument);
return xpe.evaluate(query, xmlDocument, nsResolver, 0, null);
}
/**
* Merge the Android and Gnome APN and the Operator Variant databases
*/
function queryAndroidDB(mcc, mnc) {
var query = '//apn';
if (mcc) {
query += '[@mcc=' + mcc + ']'; // Mobile Country Code
}
if (mnc) {
query += '[@mnc=' + mnc + ']'; // Mobile Network Code
}
var result = queryXML(gAndroidDB, query);
var res = result.iterateNext();
var found = [];
while (res) { // turn each resulting XML element into a JS object
var apn = {};
for (var i = 0; i < res.attributes.length; i++) {
var name = res.attributes[i].name;
var value = res.attributes[i].value;
if (name == 'type') { // array of comma-separated values
apn.type = value.split(',');
} else { // all other attributes are plain strings
apn[name] = value;
}
}
found.push(apn);
res = result.iterateNext();
}
return found;
}
function queryGnomeDB(mcc, mnc, setting) {
var query = '//gsm[network-id' + '[@mcc=' + mcc + '][@mnc=' + mnc + ']' +
']/' + setting;
var result = queryXML(gGnomeDB, query);
var node = result.iterateNext();
return node ? node.textContent : '';
}
function queryOperatorVariantDB(mcc, mnc) {
var query = '//operator' + '[@mcc=' + mcc + '][@mnc=' + mnc + ']';
var result = queryXML(gOperatorVariantDB, query);
var res = result.iterateNext();
var found = [];
while (res) { // turn each resulting XML element into a JS object
var operatorSettings = {};
for (var i = 0; i < res.attributes.length; i++) {
var name = res.attributes[i].name;
var value = res.attributes[i].value;
operatorSettings[name] = value;
}
found.push(operatorSettings);
res = result.iterateNext();
}
return found.length ? found[0] : null;
}
function padLeft(num, length) {
var r = String(num);
while (r.length < length) {
r = '0' + r;
}
return r;
}
function mergeDBs() {
var apn = {};
for (var mcc = 1; mcc < 999; mcc++) {
var country = {};
var _mcc = padLeft(mcc, 3);
var result = queryAndroidDB(_mcc);
if (result && result.length) {
result.sort();
for (var i = 0; i < result.length; i++) {
/* jshint loopfunc: true */
var mnc = result[i].mnc;
var operatorVariantSettings = {};
var voicemail = queryGnomeDB(_mcc, mnc, 'voicemail');
if (voicemail) {
operatorVariantSettings.voicemail = voicemail;
if (DEBUG) {
console.log(operatorVariantSettings.voicemail + ': ' + voicemail);
}
}
var otherSettings = queryOperatorVariantDB(_mcc, mnc);
if (otherSettings) {
if (DEBUG) {
console.log('Other operator settings: ' +
JSON.stringify(otherSettings));
}
if (!operatorVariantSettings.voicemail) {
voicemail = otherSettings.voicemail;
if (voicemail) {
operatorVariantSettings.voicemail = voicemail;
}
}
var enableStrict7BitEncodingForSms =
otherSettings.enableStrict7BitEncodingForSms;
if (enableStrict7BitEncodingForSms) {
operatorVariantSettings.enableStrict7BitEncodingForSms =
enableStrict7BitEncodingForSms == 'true';
}
var cellBroadcastSearchList =
otherSettings.cellBroadcastSearchList;
if (cellBroadcastSearchList) {
var searchListObj = {};
var lists = cellBroadcastSearchList.split('|');
lists.forEach(function(list) {
var parts = list.split(':');
searchListObj[parts[0]] = parts[1];
});
operatorVariantSettings.cellBroadcastSearchList = searchListObj;
}
var operatorSizeLimitation =
otherSettings.operatorSizeLimitation;
if (operatorSizeLimitation) {
operatorVariantSettings.operatorSizeLimitation =
+operatorSizeLimitation;
}
var skipProxy = otherSettings.skipProxy;
if (skipProxy == 'true') {
var skipProxyFor = otherSettings.skipProxyFor;
if (skipProxyFor) {
if (skipProxyFor.indexOf(result[i].carrier) != -1) {
if (DEBUG) {
console.log('Skip proxy setting for: ' + result[i].carrier);
}
result[i].proxy = result[i].port = '';
}
}
}
}
delete(result[i].mcc);
delete(result[i].mnc);
if (country[mnc]) {
if (DEBUG) { // warn about the duplicate (mcc, mnc) tuple
if (country[mnc].length == 1) {
console.log('duplicate mcc/mnc: ' + _mcc + '/' + mnc);
console.log(' - ' + country[mnc][0].carrier);
}
console.log(' - ' + result[i].carrier);
}
country[mnc].push(result[i]);
} else {
country[mnc] = [result[i]];
if (voicemail || otherSettings) {
operatorVariantSettings.type = [];
operatorVariantSettings.type.push('operatorvariant');
country[mnc].push(operatorVariantSettings);
}
}
}
apn[_mcc] = country;
}
}
return apn;
}
/**
* User Interface
*/
var gAPN;
var apnPrefNames = {
'default': {
'ril.data.carrier': 'carrier',
'ril.data.apn': 'apn',
'ril.data.user': 'user',
'ril.data.passwd': 'password',
'ril.data.httpProxyHost': 'proxy',
'ril.data.httpProxyPort': 'port',
'ril.data.authtype': 'authtype',
'ril.data.mtu': 'mtu'
},
'supl': {
'ril.supl.carrier': 'carrier',
'ril.supl.apn': 'apn',
'ril.supl.user': 'user',
'ril.supl.passwd': 'password',
'ril.supl.httpProxyHost': 'proxy',
'ril.supl.httpProxyPort': 'port',
'ril.supl.authtype': 'authtype',
'ril.supl.mtu': 'mtu'
},
'mms': {
'ril.mms.carrier': 'carrier',
'ril.mms.apn': 'apn',
'ril.mms.user': 'user',
'ril.mms.passwd': 'password',
'ril.mms.httpProxyHost': 'proxy',
'ril.mms.httpProxyPort': 'port',
'ril.mms.mmsc': 'mmsc',
'ril.mms.mmsproxy': 'mmsproxy',
'ril.mms.mmsport': 'mmsport',
'ril.mms.authtype': 'authtype',
'ril.mms.mtu': 'mtu'
},
'dun': {
'ril.dun.carrier': 'carrier',
'ril.dun.apn': 'apn',
'ril.dun.user': 'user',
'ril.dun.passwd': 'password',
'ril.dun.httpProxyHost': 'proxy',
'ril.dun.httpProxyPort': 'port',
'ril.dun.authtype': 'authtype',
'ril.dun.mtu': 'mtu'
},
'ims': {
'ril.ims.carrier': 'carrier',
'ril.ims.apn': 'apn',
'ril.ims.user': 'user',
'ril.ims.passwd': 'password',
'ril.ims.httpProxyHost': 'proxy',
'ril.ims.httpProxyPort': 'port',
'ril.ims.authtype': 'authtype',
'ril.ims.mtu': 'mtu'
},
'fota': {
'ril.fota.carrier': 'carrier',
'ril.fota.apn': 'apn',
'ril.fota.user': 'user',
'ril.fota.passwd': 'password',
'ril.fota.httpProxyHost': 'proxy',
'ril.fota.httpProxyPort': 'port',
'ril.fota.authtype': 'authtype',
'ril.fota.mtu': 'mtu'
},
'operatorvariant': {
'ril.iccInfo.mbdn': 'voicemail',
'ril.sms.strict7BitEncoding.enabled': 'enableStrict7BitEncodingForSms',
'ril.cellbroadcast.searchlist': 'cellBroadcastSearchList',
'dom.mms.operatorSizeLimitation': 'operatorSizeLimitation'
}
};
var booleanPrefNames = [
'ril.sms.strict7BitEncoding.enabled'
];
function loadDB(output, callback) {
output.textContent = '\n loading database...';
var xhr = new XMLHttpRequest();
xhr.open('GET', OPERATOR_VARIANT_FILE, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200 || xhr.status === 0) {
// the JSON database is already available -- we don't use
// xhr.responseType = 'json' to be compatible with Chrome... sigh.
gAPN = JSON.parse(xhr.responseText);
} else {
// the JSON database is not available, merge the three XML databases
output.textContent = '\n merging databases, this takes a while...';
gAndroidDB = loadXML(ANDROID_DB_FILE);
// First merge the local DB
var localAndroidDB = loadXML(LOCAL_ANDROID_DB_FILE);
var localApns =
localAndroidDB.documentElement.querySelectorAll('apn');
var androidApns;
var androidApn;
for (var localApn of localApns) {
if (localApn.getAttribute('overwrite') &&
localApn.getAttribute('carrier_name')) {
var pattern = '[carrier="' +
localApn.getAttribute('carrier_name') + '"]';
androidApns =
gAndroidDB.documentElement.querySelectorAll(pattern);
var matchFound = false;
for (androidApn of androidApns) {
if (androidApn &&
androidApn.getAttribute('carrier') ===
localApn.getAttribute('carrier_name')) {
if (DEBUG) {
console.log('- replace "' +
androidApn.getAttribute('apn') +
'" to "' + localApn.getAttribute('apn') +
'"');
}
localApn.removeAttribute('overwrite');
localApn.removeAttribute('carrier_name');
var parent = androidApn.parentNode;
parent.insertBefore(localApn, androidApn);
parent.removeChild(androidApn);
matchFound = true;
}
}
if (!matchFound) {
alert('Warning!\nCould not find APN \'' +
localApn.getAttribute('carrier_name') +
'\'. Which is expected to be overwrited.');
}
continue;
}
// use local apn to patch origin carrier name in the Android DB
// if the name is not the correct one (see bug 863126).
// Note: This patch will not function once we get
// the correct names updated in the upstream database.
if (localApn.getAttribute('name')) {
var localPattern = 'apn' +
'[mcc="' + localApn.getAttribute('mcc') + '"]' +
'[mnc="' + localApn.getAttribute('mnc') + '"]';
androidApns =
gAndroidDB.documentElement.querySelectorAll(localPattern);
for (androidApn of androidApns) {
if (androidApn &&
androidApn.getAttribute('carrier') ===
localApn.getAttribute('carrier')) {
if (DEBUG) {
console.log('- replace "' +
androidApn.getAttribute('carrier') +
'" to "' + localApn.getAttribute('name') +
'"');
}
androidApn.setAttribute('carrier',
localApn.getAttribute('name'));
}
}
} else {
gAndroidDB.documentElement.appendChild(localApn);
}
}
// Then the Gnome DB
gGnomeDB = loadXML(GNOME_DB_FILE);
gOperatorVariantDB = loadXML(OPERATOR_VARIANT_DB_FILE);
gAPN = mergeDBs();
}
output.textContent = DEBUG ?
JSON.stringify(gAPN, true, 2) :
JSON.stringify(gAPN, true, 0)
.replace(/("[0-9]+"):{/g, '\n$1: {')
.replace(/("[0-9]+"):\[/g, '\n $1: [')
.replace(/},\n/g, '\n},\n')
.replace(/\[{/g, '[\n {')
.replace(/},{/g, '},\n {')
.replace(/}(],?)/g, '}\n $1')
.replace(/]}}$/, ']\n}\n}');
callback();
}
};
xhr.send();
}
function update() {
var selection = document.getElementById('selection');
var mcc = document.querySelector('input[name=mcc]').value;
var mnc = document.querySelector('input[name=mnc]').value;
var res = gAPN[mcc] ? (gAPN[mcc][mnc] || []) : [];
selection.textContent = JSON.stringify(res, true, 2);
var preferences = document.getElementById('preferences');
var prefs = {};
for (var type in apnPrefNames) {
var apn = {};
for (var i = 0; i < res.length; i++) {
if (res[i].type.indexOf(type) != -1) {
apn = res[i];
break;
}
}
var prefNames = apnPrefNames[type];
for (var key in prefNames) {
var name = apnPrefNames[type][key];
if (booleanPrefNames.indexOf(key) != -1) {
prefs[key] = apn[name] || false;
} else {
prefs[key] = apn[name] || '';
}
}
}
preferences.textContent = JSON.stringify(prefs, true, 2);
}
document.querySelector('form').oninput = update;
loadDB(document.querySelector('textarea'), update);
});

File diff suppressed because it is too large Load diff

168
gaia/shared/resources/apn_tz.json Executable file
View file

@ -0,0 +1,168 @@
{
"202": "Europe/Athens",
"204": "Europe/Amsterdam",
"206": "Europe/Brussels",
"208": "Europe/Paris",
"214": "Europe/Madrid",
"216": "Europe/Budapest",
"218": "Europe/Sarajevo",
"219": "Europe/Zagreb",
"220": "Europe/Belgrade",
"222": "Europe/Rome",
"226": "Europe/Bucharest",
"228": "Europe/Zurich",
"230": "Europe/Prague",
"231": "Europe/Bratislava",
"232": "Europe/Vienna",
"234": {
"00": "Europe/London",
"02": "Europe/London",
"03": "Europe/Jersey",
"10": "Europe/London",
"11": "Europe/London",
"15": "Europe/London",
"20": "Europe/London",
"30": "Europe/London",
"31": "Europe/London",
"32": "Europe/London",
"33": "Europe/London",
"34": "Europe/London",
"36": "Europe/Isle_of_Man",
"50": "Europe/Jersey",
"55": "Europe/Jersey",
"58": "Europe/Isle_of_Man"
},
"238": "Europe/Copenhagen",
"240": "Europe/Stockholm",
"242": "Europe/Oslo",
"244": "Europe/Helsinki",
"246": "Europe/Vilnius",
"247": "Europe/Riga",
"248": "Europe/Tallinn",
"250": "Europe/Moscow",
"255": "Europe/Kyiv",
"257": "Europe/Minsk",
"259": "Europe/Chisinau",
"260": "Europe/Warsaw",
"262": "Europe/Berlin",
"268": "Europe/Lisbon",
"270": "Europe/Luxembourg",
"272": "Europe/Dublin",
"274": "Atlantic/Reykjavik",
"276": "Europe/Tirane",
"278": "Europe/Malta",
"280": "Asia/Nicosia",
"282": "Asia/Tbilisi",
"283": "Asia/Yerevan",
"284": "Europe/Sofia",
"286": "Europe/Istanbul",
"288": "Atlantic/Faroe_Islands",
"293": "Europe/Ljubljana",
"294": "Europe/Skopje",
"297": "Europe/Podgorica",
"302": "America/Toronto",
"310": "America/New_York",
"311": "America/New_York",
"334": "America/Mexico_City",
"338": "America/Jamaica",
"342": "America/Barbados",
"358": "America/St_Lucia",
"360": "America/St_Vincent",
"364": "America/Nassau",
"370": "America/Santo_Domingo",
"374": "America/Port_of_Spain",
"400": "Asia/Baku",
"401": "Asia/Almaty",
"404": "Asia/Kolkata",
"405": "Asia/Kolkata",
"410": "Asia/Karachi",
"412": "Asia/Kabul",
"413": "Asia/Colombo",
"415": "Asia/Beirut",
"416": "Asia/Amman",
"418": "Asia/Baghdad",
"419": "Asia/Kuwait",
"420": "Asia/Riyadh",
"422": "Asia/Muscat",
"424": "Asia/Dubai",
"425": "Asia/Jerusalem",
"426": "Asia/Bahrain",
"427": "Asia/Qatar",
"428": "Asia/Ulan_Bator",
"429": "Asia/Kathmandu",
"432": "Asia/Tehran",
"434": "Asia/Tashkent",
"437": "Asia/Bishkek",
"440": "Asia/Tokyo",
"450": "Asia/Seoul",
"452": "Asia/Saigon",
"454": "Asia/Hong_Kong",
"455": "Asia/Macau",
"456": "Asia/Phnom_Penh",
"457": "Asia/Vientiane",
"460": "Asia/Chongqing",
"466": "Asia/Taipei",
"470": "Asia/Dhaka",
"472": "Indian/Maldives",
"502": "Asia/Kuala_Lumpur",
"505": "Australia/Sydney",
"510": "Asia/Jakarta",
"515": {
"01": "Asia/Karachi",
"02": "Asia/Manila",
"03": "Asia/Manila",
"04": "Asia/Karachi",
"05": "Asia/Manila",
"06": "Asia/Karachi",
"07": "Asia/Karachi"
},
"520": "Asia/Bangkok",
"525": "Asia/Singapore",
"528": "Asia/Brunei",
"530": "Pacific/Auckland",
"542": "Pacific/Fiji",
"547": "Pacific/Tahiti",
"602": "Africa/Cairo",
"603": "Africa/Algiers",
"604": "Africa/Casablanca",
"605": "Africa/Tunis",
"608": "Africa/Dakar",
"610": "Africa/Bamako",
"612": "Africa/Abidjan",
"617": "Indian/Mauritius",
"620": "Africa/Accra",
"621": "Africa/Lagos",
"624": "Africa/Douala",
"630": "Africa/Kinshasa",
"631": "Africa/Luanda",
"634": "Africa/Khartoum",
"635": "Africa/Kigali",
"636": "Africa/Addis_Ababa",
"639": "Africa/Nairobi",
"640": "Africa/Dar_es_Salaam",
"641": "Africa/Kampala",
"642": "Africa/Bujumbura",
"643": "Africa/Maputo",
"647": "Indian/Reunion",
"649": "Africa/Windhoek",
"650": "Africa/Blantyre",
"651": "Africa/Maseru",
"652": "Africa/Gaborone",
"655": "Africa/Johannesburg",
"704": "America/Guatemala",
"706": "America/El_Salvador",
"708": "America/Tegucigalpa",
"710": "America/Managua",
"712": "America/Costa_Rica",
"714": "America/Panama",
"716": "America/Lima",
"722": "America/Argentina/Buenos_Aires",
"724": "America/Sao_Paulo",
"730": "America/Santiago",
"732": "America/Bogota",
"734": "America/Caracas",
"738": "America/Guyana",
"740": "America/Quito",
"744": "America/Asuncion",
"748": "America/Montevideo"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

View file

@ -0,0 +1,28 @@
{
"card_list": [
{
"type": "Deck",
"deckClass": "tv",
"manifestURL": "app://tv-deck.gaiamobile.org/manifest.webapp",
"group": "tv"
},
{
"type": "Deck",
"deckClass": "application",
"manifestURL": "app://app-deck.gaiamobile.org/manifest.webapp",
"group": "application"
},
{
"type": "Deck",
"deckClass": "device",
"manifestURL": "app://device-deck.gaiamobile.org/manifest.webapp",
"group": "device"
},
{
"type": "Deck",
"deckClass": "browser",
"manifestURL": "app://browser.gaiamobile.org/manifest.webapp",
"group": "website"
}
]
}

View file

@ -0,0 +1,5 @@
{
"en-US" : "English (US)",
"fr-x-psaccent" : "Ƥȧȧƈķȧȧɠḗḗḓ Ȧȧƈƈḗḗƞŧḗḗḓ",
"ar-x-psbidi" : "\u202eԀɐɔʞɐƃǝp\u202c \u202eԐıpı\u202c"
}

1132
gaia/shared/resources/mcc.json Executable file

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,22 @@
{
"notifier_bells.opus": {"l10nID": "notifier_bells"},
"notifier_bloom.opus": {"l10nID": "notifier_bloom"},
"notifier_chime.opus": {"l10nID": "notifier_chime"},
"notifier_clicka.opus": {"l10nID": "notifier_clicka"},
"notifier_digi.opus": {"l10nID": "notifier_digi"},
"notifier_dropplet.opus": {"l10nID": "notifier_dropplet"},
"notifier_firefox.opus": {"l10nID": "notifier_firefox2"},
"notifier_hello.opus": {"l10nID": "notifier_hello"},
"notifier_lowmarble.opus": {"l10nID": "notifier_lowmarble"},
"notifier_ping.opus": {"l10nID": "notifier_ping"},
"notifier_plickle.opus": {"l10nID": "notifier_plickle"},
"notifier_pocko.opus": {"l10nID": "notifier_pocko"},
"notifier_quado.opus": {"l10nID": "notifier_quado"},
"notifier_red.opus": {"l10nID": "notifier_red"},
"notifier_sato.opus": {"l10nID": "notifier_sato"},
"notifier_swipo.opus": {"l10nID": "notifier_swipo"},
"notifier_trickleup.opus": {"l10nID": "notifier_trickleup"},
"notifier_trink.opus": {"l10nID": "notifier_trink"},
"notifier_verse.opus": {"l10nID": "notifier_verse"}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more