commit bcdc8a8f8de1193e1c935cf4ec6c66d687bbcf89 Author: dsc Date: Thu Nov 4 14:57:08 2021 +0100 Initial commit diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..39a2027 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,38 @@ +cmake_minimum_required(VERSION 3.13) +project(conversations) +message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}") + +set(VERSION_MAJOR "1") +set(VERSION_MINOR "1") +set(VERSION_REVISION "0") + +# add `cmake` directory as cmake module path +list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/cmake") + +set(THREADS_PREFER_PTHREAD_FLAG ON) + +include(VersionConversations) + +set(CMAKE_CXX_STANDARD 14) +include(FindCcache) +include(CheckIncludeFiles) +include(CheckFunctionExists) +#include(CheckSymbolExists) + +# Find X11 +if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_SKIP_RPATH ON) +endif() + +find_package(X11 REQUIRED) +message(STATUS "X11_FOUND = ${X11_FOUND}") +message(STATUS "X11_INCLUDE_DIR = ${X11_INCLUDE_DIR}") +message(STATUS "X11_LIBRARIES = ${X11_LIBRARIES}") + +include_directories(${X11_INCLUDE_DIR}) +link_directories(${X11_LIBRARIES}) + +# Find pthread +find_package(Threads REQUIRED) + +add_subdirectory(src) diff --git a/README.md b/README.md new file mode 100644 index 0000000..4c23662 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +## Conversations + +op maemo: +``` +sudo apt install -y libqt5svg5-dev en nog wat meer dingen +``` + +Als user (uid 1000) anders gaat 'ie zeuren :P + +```bash +cmake -Bbuild . +make -Cbuild -j2 +./build/bin/conversations +``` + +### remote debug (dev) + +Since we run as root we need env. variables: + +``` +QTWEBENGINE_DISABLE_SANDBOX=1 +DISPLAY=:0.0 +``` diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..c5c4686 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,80 @@ +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +# PNG +find_package(ZLIB REQUIRED) +find_package(PNG REQUIRED) + +# the source files +file(GLOB SOURCE_FILES + "*.h" + "*.cpp" + "lib/*.h" + "lib/*.cpp" + ) + +find_package(Qt5 REQUIRED COMPONENTS Core Widgets Gui Network Svg Xml WebEngineWidgets WebChannel) + +qt5_add_resources(RESOURCES assets.qrc assets/images/flags/flags.qrc) + +set(EXECUTABLE_FLAG) + +add_executable(conversations ${EXECUTABLE_FLAG} main.cpp + ${SOURCE_FILES} + ${RESOURCES} + ) + +set_property(TARGET conversations PROPERTY RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + +target_include_directories(conversations PUBLIC ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) + +target_include_directories(conversations PUBLIC + ${CMAKE_SOURCE_DIR}/src + ${X11_INCLUDE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${Qt5Core_INCLUDE_DIRS} + ${Qt5Widgets_INCLUDE_DIRS} + ${Qt5Gui_INCLUDE_DIRS} + ${Qt5Network_INCLUDE_DIRS} + ${Qt5Svg_INCLUDE_DIRS} + ${Qt5Xml_INCLUDE_DIRS} + ) + +add_definitions(${QT_DEFINITIONS}) +if(NOT "${CMAKE_BUILD_TYPE}" EQUAL "Debug") + add_definitions(-DQT_NO_DEBUG) +endif() + +target_compile_definitions(conversations + PUBLIC + ${Qt5Core_DEFINITIONS} + ${Qt5Widgets_DEFINITIONS} + ${Qt5Gui_DEFINITIONS} + ${Qt5Network_DEFINITIONS} + ${Qt5Svg_DEFINITIONS} + ${Qt5Xml_DEFINITIONS} + ) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") + +target_link_libraries(conversations PUBLIC + ${CMAKE_DL_LIBS} + Qt5::Core + Qt5::Widgets + Qt5::Gui + Qt5::Network + Qt5::Svg + Qt5::Xml + Qt5::WebEngineWidgets + Qt5::WebChannel + Threads::Threads +) + +if(X11_FOUND) + target_link_libraries(conversations PUBLIC ${X11_LIBRARIES}) +endif() + +install(TARGETS conversations + DESTINATION ${CMAKE_INSTALL_PREFIX} + ) diff --git a/src/assets.qrc b/src/assets.qrc new file mode 100644 index 0000000..d654a66 --- /dev/null +++ b/src/assets.qrc @@ -0,0 +1,10 @@ + + + assets/appicon.icns + assets/country-codes.csv + assets/html/chat/colors.css + assets/html/chat/SMSConversation.html + assets/html/chat/SMSConversation.css + assets/html/chat/SMSConversation.js + + diff --git a/src/assets/appicon.icns b/src/assets/appicon.icns new file mode 100644 index 0000000..c7c6f9d Binary files /dev/null and b/src/assets/appicon.icns differ diff --git a/src/assets/country-codes.csv b/src/assets/country-codes.csv new file mode 100644 index 0000000..d1f1492 --- /dev/null +++ b/src/assets/country-codes.csv @@ -0,0 +1,239 @@ +TPE|TWN|TW||Taiwan|.tw|zh,nan,hak|zh-TW| +AFG|AFG|AF|AFN|Afghanistan|.af|ps,uz-AF,tk|fa-AF|Asia +ALB|ALB|AL|ALL|Albania|.al|sq,el||Europe +ALG|DZA|DZ|DZD|Algeria|.dz||ar-DZ|Africa +ASA|ASM|AS|USD|American Samoa|.as|sm,to|en-AS|Oceania +AND|AND|AD|EUR|Andorra|.ad|ca||Europe +ANG|AGO|AO|AOA|Angola|.ao||pt-AO|Africa +AIA|AIA|AI|XCD|Anguilla|.ai||en-AI|Americas +ROS|ATA|AQ||Antarctica|.aq||| +ATG|ATG|AG|XCD|Antigua & Barbuda|.ag||en-AG|Americas +ARG|ARG|AR|ARS|Argentina|.ar|en,it,de,fr,gn|es-AR|Americas +ARM|ARM|AM|AMD|Armenia|.am|hy||Asia +ARU|ABW|AW|AWG|Aruba|.aw|pap,es,en|nl-AW|Americas +AUS|AUS|AU|AUD|Australia|.au||en-AU|Oceania +AUT|AUT|AT|EUR|Austria|.at|hr,hu,sl|de-AT|Europe +AZE|AZE|AZ|AZN|Azerbaijan|.az|az,ru,hy||Asia +BAH|BHS|BS|BSD|Bahamas|.bs||en-BS|Americas +BHR|BHR|BH|BHD|Bahrain|.bh|en,fa,ur|ar-BH|Asia +BAN|BGD|BD|BDT|Bangladesh|.bd|en|bn-BD|Asia +BRB|BRB|BB|BBD|Barbados|.bb||en-BB|Americas +BLR|BLR|BY|BYN|Belarus|.by|be,ru||Europe +BEL|BEL|BE|EUR|Belgium|.be|fr-BE,de-BE|nl-BE|Europe +BLZ|BLZ|BZ|BZD|Belize|.bz|es|en-BZ|Americas +BEN|BEN|BJ|XOF|Benin|.bj||fr-BJ|Africa +BER|BMU|BM|BMD|Bermuda|.bm|pt|en-BM|Americas +BHU|BTN|BT|INR,BTN|Bhutan|.bt|dz||Asia +BOL|BOL|BO|BOB|Bolivia|.bo|qu,ay|es-BO|Americas +ANT|BES|BQ|USD|Caribbean Netherlands|.bq|nl,pap,en||Americas +BIH|BIH|BA|BAM|Bosnia|.ba|bs,hr-BA,sr-BA||Europe +BOT|BWA|BW|BWP|Botswana|.bw|tn-BW|en-BW|Africa +BRA|BRA|BR|BRL|Brazil|.br|es,en,fr|pt-BR|Americas +VGB|VGB|VG|USD|British Virgin Islands|.vg||en-VG|Americas +BRU|BRN|BN|BND|Brunei|.bn|en-BN|ms-BN|Asia +BUL|BGR|BG|BGN|Bulgaria|.bg|bg,tr-BG,rom||Europe +BFA|BFA|BF|XOF|Burkina Faso|.bf|mos|fr-BF|Africa +BDI|BDI|BI|BIF|Burundi|.bi|rn|fr-BI|Africa +CPV|CPV|CV|CVE|Cape Verde|.cv||pt-CV|Africa +CAM|KHM|KH|KHR|Cambodia|.kh|km,fr,en||Asia +CMR|CMR|CM|XAF|Cameroon|.cm|fr-CM|en-CM|Africa +CAN|CAN|CA|CAD|Canada|.ca|fr-CA,iu|en-CA|Americas +CAY|CYM|KY|KYD|Cayman Islands|.ky||en-KY|Americas +CTA|CAF|CF|XAF|Central African Republic|.cf|sg,ln,kg|fr-CF|Africa +CHA|TCD|TD|XAF|Chad|.td|ar-TD,sre|fr-TD|Africa +CHI|CHL|CL|CLP|Chile|.cl||es-CL|Americas +CHN|CHN|CN|CNY|China|.cn|yue,wuu,dta,ug,za|zh-CN|Asia +HKG|HKG|HK|HKD|Hong Kong|.hk|yue,zh,en|zh-HK|Asia +MAC|MAC|MO|MOP|Macau|.mo|zh,zh-MO,pt||Asia +CXR|CXR|CX|AUD|Christmas Island|.cx|en,zh,ms-CC||Oceania +CCK|CCK|CC|AUD|Cocos (Keeling) Islands|.cc|en|ms-CC|Oceania +COL|COL|CO|COP|Colombia|.co||es-CO|Americas +COM|COM|KM|KMF|Comoros|.km|ar,fr-KM||Africa +CGO|COG|CG|XAF|Congo - Brazzaville|.cg|kg,ln-CG|fr-CG|Africa +COK|COK|CK|NZD|Cook Islands|.ck|mi|en-CK|Oceania +CRC|CRI|CR|CRC|Costa Rica|.cr|en|es-CR|Americas +CRO|HRV|HR|HRK|Croatia|.hr|sr|hr-HR|Europe +CUB|CUB|CU|CUP,CUC|Cuba|.cu|pap|es-CU|Americas +CYP|CYP|CY|EUR|Cyprus|.cy|tr-CY,en|el-CY|Asia +CZE|CZE|CZ|CZK|Czechia|.cz|cs,sk||Europe +CIV|CIV|CI|XOF|Côte d’Ivoire|.ci||fr-CI|Africa +PRK|PRK|KP|KPW|North Korea|.kp||ko-KP|Asia +COD|COD|CD|CDF|Congo - Kinshasa|.cd|ln,ktu,kg,sw,lua|fr-CD|Africa +DEN|DNK|DK|DKK|Denmark|.dk|en,fo,de-DK|da-DK|Europe +DJI|DJI|DJ|DJF|Djibouti|.dj|ar,so-DJ,aa|fr-DJ|Africa +DMA|DMA|DM|XCD|Dominica|.dm||en-DM|Americas +DOM|DOM|DO|DOP|Dominican Republic|.do||es-DO|Americas +ECU|ECU|EC|USD|Ecuador|.ec||es-EC|Americas +EGY|EGY|EG|EGP|Egypt|.eg|en,fr|ar-EG|Africa +SLV|SLV|SV|SVC,USD|El Salvador|.sv||es-SV|Americas +EQG|GNQ|GQ|XAF|Equatorial Guinea|.gq|fr|es-GQ|Africa +ERI|ERI|ER|ERN|Eritrea|.er|ar,tig,kun,ti-ER|aa-ER|Africa +EST|EST|EE|EUR|Estonia|.ee|et,ru||Europe +SWZ|SWZ|SZ|SZL|Eswatini|.sz|ss-SZ|en-SZ|Africa +ETH|ETH|ET|ETB|Ethiopia|.et|am,en-ET,om-ET,ti-ET,so-ET,sid||Africa +FLK|FLK|FK||Falkland Islands|.fk||en-FK|Americas +FRO|FRO|FO|DKK|Faroe Islands|.fo|fo,da-FO||Europe +FIJ|FJI|FJ|FJD|Fiji|.fj|fj|en-FJ|Oceania +FIN|FIN|FI|EUR|Finland|.fi|sv-FI,smn|fi-FI|Europe +FRA|FRA|FR|EUR|France|.fr|frp,br,co,ca,eu,oc|fr-FR|Europe +GUF|GUF|GF|EUR|French Guiana|.gf||fr-GF|Americas +TAH|PYF|PF|XPF|French Polynesia|.pf|ty|fr-PF|Oceania +GAB|GAB|GA|XAF|Gabon|.ga||fr-GA|Africa +GAM|GMB|GM|GMD|Gambia|.gm|mnk,wof,wo,ff|en-GM|Africa +GEO|GEO|GE|GEL|Georgia|.ge|ka,ru,hy,az||Asia +GER|DEU|DE|EUR|Germany|.de|de||Europe +GHA|GHA|GH|GHS|Ghana|.gh|ak,ee,tw|en-GH|Africa +GBZ|GIB|GI|GIP|Gibraltar|.gi|es,it,pt|en-GI|Europe +GRE|GRC|GR|EUR|Greece|.gr|en,fr|el-GR|Europe +GRL|GRL|GL|DKK|Greenland|.gl|kl,da-GL,en||Americas +GRN|GRD|GD|XCD|Grenada|.gd||en-GD|Americas +GLP|GLP|GP|EUR|Guadeloupe|.gp||fr-GP|Americas +GUM|GUM|GU|USD|Guam|.gu|ch-GU|en-GU|Oceania +GUA|GTM|GT|GTQ|Guatemala|.gt||es-GT|Americas +GBG|GGY|GG|GBP|Guernsey|.gg|en,nrf||Europe +GUI|GIN|GN|GNF|Guinea|.gn||fr-GN|Africa +GNB|GNB|GW|XOF|Guinea-Bissau|.gw|pov|pt-GW|Africa +GUY|GUY|GY|GYD|Guyana|.gy||en-GY|Americas +HAI|HTI|HT|HTG,USD|Haiti|.ht|ht,fr-HT||Americas +VAT|VAT|VA|EUR|Vatican City|.va|la,it,fr||Europe +HON|HND|HN|HNL|Honduras|.hn|cab,miq|es-HN|Americas +HUN|HUN|HU|HUF|Hungary|.hu||hu-HU|Europe +ISL|ISL|IS|ISK|Iceland|.is|is,en,de,da,sv,no||Europe +IND|IND|IN|INR|India|.in|hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc|en-IN|Asia +IDN|IDN|ID|IDR|Indonesia|.id|id,en,nl,jv||Asia +IRN|IRN|IR|IRR|Iran|.ir|ku|fa-IR|Asia +IRQ|IRQ|IQ|IQD|Iraq|.iq|ku,hy|ar-IQ|Asia +IRL|IRL|IE|EUR|Ireland|.ie|ga-IE|en-IE|Europe +GBM|IMN|IM|GBP|Isle of Man|.im|en,gv||Europe +ISR|ISR|IL|ILS|Israel|.il|he,ar-IL,en-IL,||Asia +ITA|ITA|IT|EUR|Italy|.it|de-IT,fr-IT,sc,ca,co,sl|it-IT|Europe +JAM|JAM|JM|JMD|Jamaica|.jm||en-JM|Americas +JPN|JPN|JP|JPY|Japan|.jp|ja||Asia +GBJ|JEY|JE|GBP|Jersey|.je|en,fr,nrf||Europe +JOR|JOR|JO|JOD|Jordan|.jo|en|ar-JO|Asia +KAZ|KAZ|KZ|KZT|Kazakhstan|.kz|kk,ru||Asia +KEN|KEN|KE|KES|Kenya|.ke|sw-KE|en-KE|Africa +KIR|KIR|KI|AUD|Kiribati|.ki|gil|en-KI|Oceania +KUW|KWT|KW|KWD|Kuwait|.kw|en|ar-KW|Asia +KGZ|KGZ|KG|KGS|Kyrgyzstan|.kg|ky,uz,ru||Asia +LAO|LAO|LA|LAK|Laos|.la|lo,fr,en||Asia +LVA|LVA|LV|EUR|Latvia|.lv|lv,ru,lt||Europe +LIB|LBN|LB|LBP|Lebanon|.lb|fr-LB,en,hy|ar-LB|Asia +LES|LSO|LS|LSL,ZAR|Lesotho|.ls|st,zu,xh|en-LS|Africa +LBR|LBR|LR|LRD|Liberia|.lr||en-LR|Africa +LBY|LBY|LY|LYD|Libya|.ly|it,en|ar-LY|Africa +LIE|LIE|LI|CHF|Liechtenstein|.li||de-LI|Europe +LTU|LTU|LT|EUR|Lithuania|.lt|lt,ru,pl||Europe +LUX|LUX|LU|EUR|Luxembourg|.lu|lb,de-LU,fr-LU||Europe +MAD|MDG|MG|MGA|Madagascar|.mg|mg|fr-MG|Africa +MWI|MWI|MW|MWK|Malawi|.mw|ny,yao,tum,swk||Africa +MAS|MYS|MY|MYR|Malaysia|.my|en,zh,ta,te,ml,pa,th|ms-MY|Asia +MDV|MDV|MV|MVR|Maldives|.mv|dv,en||Asia +MLI|MLI|ML|XOF|Mali|.ml|bm|fr-ML|Africa +MLT|MLT|MT|EUR|Malta|.mt|mt,en-MT||Europe +MHL|MHL|MH|USD|Marshall Islands|.mh|mh,en-MH||Oceania +MTQ|MTQ|MQ|EUR|Martinique|.mq||fr-MQ|Americas +MTN|MRT|MR|MRU|Mauritania|.mr|fuc,snk,fr,mey,wo|ar-MR|Africa +MRI|MUS|MU|MUR|Mauritius|.mu|bho,fr|en-MU|Africa +MYT|MYT|YT|EUR|Mayotte|.yt||fr-YT|Africa +MEX|MEX|MX|MXN|Mexico|.mx||es-MX|Americas +FSM|FSM|FM|USD|Micronesia|.fm|chk,pon,yap,kos,uli,woe,nkr,kpg|en-FM|Oceania +MON|MCO|MC|EUR|Monaco|.mc|en,it|fr-MC|Europe +MNG|MNG|MN|MNT|Mongolia|.mn|mn,ru||Asia +MNE|MNE|ME|EUR|Montenegro|.me|sr,hu,bs,sq,hr,rom||Europe +MSR|MSR|MS|XCD|Montserrat|.ms||en-MS|Americas +MAR|MAR|MA|MAD|Morocco|.ma|ber,fr|ar-MA|Africa +MOZ|MOZ|MZ|MZN|Mozambique|.mz|vmw|pt-MZ|Africa +MYA|MMR|MM|MMK|Myanmar|.mm|my||Asia +NAM|NAM|NA|NAD,ZAR|Namibia|.na|af,de,hz,naq|en-NA|Africa +NRU|NRU|NR|AUD|Nauru|.nr|na,en-NR||Oceania +NEP|NPL|NP|NPR|Nepal|.np|ne,en||Asia +NED|NLD|NL|EUR|Netherlands|.nl|fy-NL|nl-NL|Europe +NCL|NCL|NC|XPF|New Caledonia|.nc||fr-NC|Oceania +NZL|NZL|NZ|NZD|New Zealand|.nz|mi|en-NZ|Oceania +NCA|NIC|NI|NIO|Nicaragua|.ni|en|es-NI|Americas +NIG|NER|NE|XOF|Niger|.ne|ha,kr,dje|fr-NE|Africa +NGA|NGA|NG|NGN|Nigeria|.ng|ha,yo,ig,ff|en-NG|Africa +NIU|NIU|NU|NZD|Niue|.nu|niu,en-NU||Oceania +NFK|NFK|NF|AUD|Norfolk Island|.nf||en-NF|Oceania +NMI|MNP|MP|USD|Northern Mariana Islands|.mp|fil,tl,zh,ch-MP,en-MP||Oceania +NOR|NOR|NO|NOK|Norway|.no|no,nb,nn,se,fi||Europe +OMA|OMN|OM|OMR|Oman|.om|en,bal,ur|ar-OM|Asia +PAK|PAK|PK|PKR|Pakistan|.pk|en-PK,pa,sd,ps,brh|ur-PK|Asia +PLW|PLW|PW|USD|Palau|.pw|pau,sov,en-PW,tox,ja,fil,zh||Oceania +PAN|PAN|PA|PAB,USD|Panama|.pa|en|es-PA|Americas +PNG|PNG|PG|PGK|Papua New Guinea|.pg|ho,meu,tpi|en-PG|Oceania +PAR|PRY|PY|PYG|Paraguay|.py|gn|es-PY|Americas +PER|PER|PE|PEN|Peru|.pe|qu,ay|es-PE|Americas +PHI|PHL|PH|PHP|Philippines|.ph|tl,en-PH,fil,ceb,tgl,ilo,hil,war,pam,bik,bcl,pag,mrw,tsg,mdh,cbk,krj,sgd,msb,akl,ibg,yka,mta,abx||Asia +PCN|PCN|PN|NZD|Pitcairn Islands|.pn||en-PN|Oceania +POL|POL|PL|PLN|Poland|.pl|pl||Europe +POR|PRT|PT|EUR|Portugal|.pt|mwl|pt-PT|Europe +PUR|PRI|PR|USD|Puerto Rico|.pr|es-PR|en-PR|Americas +QAT|QAT|QA|QAR|Qatar|.qa|es|ar-QA|Asia +KOR|KOR|KR|KRW|South Korea|.kr|en|ko-KR|Asia +MDA|MDA|MD|MDL|Moldova|.md|ro,ru,gag,tr||Europe +ROU|ROU|RO|RON|Romania|.ro|ro,hu,rom||Europe +RUS|RUS|RU|RUB|Russia|.ru|ru,tt,xal,cau,ady,kv,ce,tyv,cv,udm,tut,mns,bua,myv,mdf,chm,ba,inh,tut,kbd,krc,av,sah,nog||Europe +RWA|RWA|RW|RWF|Rwanda|.rw|rw,en-RW,fr-RW,sw||Africa +REU|REU|RE|EUR|Réunion|.re||fr-RE|Africa +|BLM|BL|EUR|St. Barthélemy|.gp|fr||Americas +SHN|SHN|SH|SHP|St. Helena|.sh||en-SH|Africa +SKN|KNA|KN|XCD|St. Kitts & Nevis|.kn||en-KN|Americas +LCA|LCA|LC|XCD|St. Lucia|.lc||en-LC|Americas +|MAF|MF|EUR|St. Martin|.gp|fr||Americas +SPM|SPM|PM|EUR|St. Pierre & Miquelon|.pm||fr-PM|Americas +VIN|VCT|VC|XCD|St. Vincent & Grenadines|.vc|fr|en-VC|Americas +SAM|WSM|WS|WST|Samoa|.ws|sm,en-WS||Oceania +SMR|SMR|SM|EUR|San Marino|.sm||it-SM|Europe +STP|STP|ST|STN|São Tomé & Príncipe|.st||pt-ST|Africa +KSA|SAU|SA|SAR|Saudi Arabia|.sa||ar-SA|Asia +SEN|SEN|SN|XOF|Senegal|.sn|wo,fuc,mnk|fr-SN|Africa +SRB|SRB|RS|RSD|Serbia|.rs|sr,hu,bs,rom||Europe +SEY|SYC|SC|SCR|Seychelles|.sc|fr-SC|en-SC|Africa +SLE|SLE|SL|SLL|Sierra Leone|.sl|men,tem|en-SL|Africa +SIN|SGP|SG|SGD|Singapore|.sg|cmn,en-SG,ms-SG,ta-SG,zh-SG||Asia +SVK|SVK|SK|EUR|Slovakia|.sk|sk,hu||Europe +SVN|SVN|SI|EUR|Slovenia|.si|sl,sh||Europe +SOL|SLB|SB|SBD|Solomon Islands|.sb|tpi|en-SB|Oceania +SOM|SOM|SO|SOS|Somalia|.so|ar-SO,it,en-SO|so-SO|Africa +RSA|ZAF|ZA|ZAR|South Africa|.za|zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr||Africa +ESP|ESP|ES|EUR|Spain|.es|ca,gl,eu,oc|es-ES|Europe +SRI|LKA|LK|LKR|Sri Lanka|.lk|si,ta,en||Asia +PLE|PSE|PS||Palestine|.ps||ar-PS|Asia +SUD|SDN|SD|SDG|Sudan|.sd|en,fia|ar-SD|Africa +SUR|SUR|SR|SRD|Suriname|.sr|en,srn,hns,jv|nl-SR|Americas +SWE|SWE|SE|SEK|Sweden|.se|se,sma,fi-SE|sv-SE|Europe +SUI|CHE|CH|CHF|Switzerland|.ch|fr-CH,it-CH,rm|de-CH|Europe +SYR|SYR|SY|SYP|Syria|.sy|ku,hy,arc,fr,en|ar-SY|Asia +TJK|TJK|TJ|TJS|Tajikistan|.tj|tg,ru||Asia +THA|THA|TH|THB|Thailand|.th|th,en||Asia +MKD|MKD|MK|MKD|North Macedonia|.mk|mk,sq,tr,rmm,sr||Europe +TLS|TLS|TL|USD|Timor-Leste|.tl|tet,pt-TL,id,en||Asia +TOG|TGO|TG|XOF|Togo|.tg|ee,hna,kbp,dag,ha|fr-TG|Africa +TKL|TKL|TK|NZD|Tokelau|.tk|tkl,en-TK||Oceania +TGA|TON|TO|TOP|Tonga|.to|to,en-TO||Oceania +TRI|TTO|TT|TTD|Trinidad & Tobago|.tt|hns,fr,es,zh|en-TT|Americas +TUN|TUN|TN|TND|Tunisia|.tn|fr|ar-TN|Africa +TUR|TUR|TR|TRY|Turkey|.tr|ku,diq,az,av|tr-TR|Asia +TKM|TKM|TM|TMT|Turkmenistan|.tm|tk,ru,uz||Asia +TCA|TCA|TC|USD|Turks & Caicos Islands|.tc||en-TC|Americas +TUV|TUV|TV|AUD|Tuvalu|.tv|tvl,en,sm,gil||Oceania +UGA|UGA|UG|UGX|Uganda|.ug|lg,sw,ar|en-UG|Africa +UKR|UKR|UA|UAH|Ukraine|.ua|uk,ru-UA,rom,pl,hu||Europe +UAE|ARE|AE|AED|United Arab Emirates|.ae|fa,en,hi,ur|ar-AE|Asia +ENG,NIR,SCO,WAL|GBR|GB|GBP|UK|.uk|cy-GB,gd|en-GB|Europe +TAN|TZA|TZ|TZS|Tanzania|.tz|en,ar|sw-TZ|Africa +VIR|VIR|VI|USD|U.S. Virgin Islands|.vi||en-VI|Americas +USA|USA|US|USD|US|.us|es-US,haw,fr|en-US|Americas +URU|URY|UY|UYU|Uruguay|.uy||es-UY|Americas +UZB|UZB|UZ|UZS|Uzbekistan|.uz|uz,ru,tg||Asia +VAN|VUT|VU|VUV|Vanuatu|.vu|bi,en-VU,fr-VU||Oceania +VEN|VEN|VE|VES|Venezuela|.ve||es-VE|Americas +VIE|VNM|VN|VND|Vietnam|.vn|vi,en,fr,zh,km||Asia +WLF|WLF|WF|XPF|Wallis & Futuna|.wf|wls,fud,fr-WF||Oceania +SAH|ESH|EH|MAD|Western Sahara|.eh|ar,mey||Africa +YEM|YEM|YE|YER|Yemen|.ye||ar-YE|Asia +ZAM|ZMB|ZM|ZMW|Zambia|.zm|bem,loz,lun,lue,ny,toi|en-ZM|Africa +ZIM|ZWE|ZW|ZWL|Zimbabwe|.zw|sn,nr,nd|en-ZW|Africa +ALD|ALA|AX|EUR|Åland Islands|.ax||sv-AX|Europe \ No newline at end of file diff --git a/src/assets/html/chat/SMSConversation.css b/src/assets/html/chat/SMSConversation.css new file mode 100644 index 0000000..abd78db --- /dev/null +++ b/src/assets/html/chat/SMSConversation.css @@ -0,0 +1,175 @@ +/** + * Style rules for the MessageBuffer + */ + +/** + * the body defaults + */ +body { + margin-left: 16px; + margin-right: 16px; +} + +/** + * The table column formats + */ + +div.Message { + padding-bottom: 8px; + display: table; + width: 100%; +} + +div.Message.Other { + padding-left: 6px; +} + +div.Message:first-child { + padding-top: 0px; +} + +div.Message:last-child { + padding-bottom: 0px; +} + +div.BubbleSelf { + -moz-border-radius: 4px 4px 4px 4px; + border-style: solid; + border-width: 1px; + + padding: 4px 8px; + + margin-right: 0px; + margin-left: 0px; + + display: table-cell; + /* overflow: hidden; this bugs mouse events. see bug #123077 */ +} + +div.BubbleOther { + -moz-border-radius: 6px ; + border-style: solid; + border-width: 1px; + + margin-left: 0px; + margin-right: 0px; + vertical-align: middle; + padding: 4px 8px; + + display: table-cell; + min-height: 56px; + /* overflow: hidden; this bugs mouse events. see bug #123077 */ + margin-right: 4px; +} + +div.BubbleSpacer { + padding: 0px; + margin: 0px; + vertical-align: middle; + display: table-cell; + height: 52px; +} + +div.BubbleSelfClicked { + -moz-border-radius: 4px 4px 4px 4px; + border-style: solid; + border-width: 1px; + + padding: 4px 8px; + + text-shadow: 0.1em 0.1em #000; + + display: table-cell; + /* overflow: hidden; this bugs mouse events. see bug #123077 */ +} + + +div.BubbleOtherClicked { + -moz-border-radius: 6px ; + border-style: solid; + border-width: 1px; + text-shadow: 0.1em 0.1em #000; + vertical-align: middle; + padding: 4px 8px; + + display: table-cell; + min-height: 56px; + /* overflow: hidden; this bugs mouse events. see bug #123077 */ +} + +/** + * Others' Avatars + * + * This needs a "drop down" shadow, but no idea if that can be done + *Adele: please note that this drop down shadow might be subjected to change + *I've talked about it with Vilja who's in charge of address book layout + *and we might change it so that it's a double border colour to indicate + *that the avatar is clickable. drop shawdow doesn't seem to work with + *dark backgrounds unless it's a light colour drop shadow. + *PLEASE tell me if it's difficult to implement the drop shadow. + * Looks like drop shadow is dropped from ui specs. And bug 139130 made me + *remove the space for it anyway. + */ + +div.Avatar { + display: table-cell; + vertical-align: middle; + padding-right: 2px; + width: 64px; +} + +.MessageAvatar { + width: 64px; + height:64px; + border: 1px solid; /* #9e9e9e; */ + -moz-border-radius: 6px; +} + +img.MessagePresence { + vertical-align: middle; + width: 16px; + height: 16px; +} + +/** + * the Name field + */ +span.MessageNameField { + word-wrap: break-word; + vertical-align: middle; +} + +/** + * the Text field + */ +span.MessageText { + text-align: left; + vertical-align: middle; + word-wrap: break-word; +} + +/** + * the TimeStamp default rules + */ +div.MessageRight { + float: right; + padding-left: 16px; + white-space: nowrap; + text-align: right; + display: inline-block; +} + +img.MessageBusinessCardImg { + vertical-align: middle; + padding-right: 4px; +} + +img.MessageStatusImg { + vertical-align: middle; + padding-right: 8px; +} + +.MessagingWidgetsSmiley { + height: 24px; + width: 24px; +} diff --git a/src/assets/html/chat/SMSConversation.html b/src/assets/html/chat/SMSConversation.html new file mode 100644 index 0000000..53301e8 --- /dev/null +++ b/src/assets/html/chat/SMSConversation.html @@ -0,0 +1,49 @@ + + + Test + + + + + + + + + + +
+
+ + +
+ + 12:30 PM + | 1:30 PM + +
+
+
+
+
+
+
+
+
+ + + +
+ + 12:30 PM + | 1:30 PM + +
+
+
+
+ + diff --git a/src/assets/html/chat/SMSConversation.js b/src/assets/html/chat/SMSConversation.js new file mode 100644 index 0000000..2319aa8 --- /dev/null +++ b/src/assets/html/chat/SMSConversation.js @@ -0,0 +1,913 @@ +/** + * @file MessagingWidgetsSMSConversation.js + * + * Javascript for messaging rendering widget's ring buffer. + */ + +/* + * This file is part of rtcom messaging ui + * + * Copyright (C) 2009 Nokia Corporation. All rights reserved. + * + * Contact: Naba Kumar + * + * This software, including documentation, is protected by copyright + * controlled by Nokia Corporation. All rights are reserved. + * Copying, including reproducing, storing, adapting or translating, + * any or all of this material requires the prior written consent of + * Nokia Corporation. This material also contains confidential + * information which may not be disclosed to others without the prior + * written consent of Nokia. + */ + +/** + * Globals: + * + * @myBatchRequested: + * if HISTORY_FETCHING_NOREQUEST, no batch has been requested. + * if HISTORY_FETCHING_DONE, history fetching done; no more request to give. + * if > 0, request in progress and the amount requested. + * + * @myBatchesAdded: Number of message batches retrieved from log. + * + * @myShowTimes: Display method for time stamps, set to 'inline' to show + * and 'none' to hide + * + **/ + +var HISTORY_BATCH_SIZE = 30; +var HISTORY_PAGE_SIZE = 15; +var HISTORY_SCREENFULL_SIZE = 8; +var HISTORY_FETCHING_DONE = -1; +var HISTORY_FETCHING_NOREQUEST = 0; + +var myBatchRequested = 0; + +var myShowTimes = "inline"; + +var myBatchesAdded = 0; + +var myMaxMessages = -1; + +var markupTemplateSelf; +var markupTemplateOther; + +var messagesBuffer = new Array(); + +var pastPresenceAnchor = new Array(); +var firstFlush = true; +var flushTimeout = 0; + +var lastClickedBubble = null; + +var storedScreenHeight = 0; +var storedBottomElement; + +/** + * MessagingWidgetsSMSConversation_alert: + * @str Parameter to set for alert() call + * + * Custom, error safe alert call. Apparently with some version mismatches, the + * alert() javascript function sometimes fails. This is to prevent alert() + * failure to prevent rest of the script execution. + * + * For functionality, that actually depends on alert() call to succeed this + * is not helpful, rather it's another way of creating a malfuction that is + * harder to detect. + **/ +function MessagingWidgetsSMSConversation_alert(str) +{ + alert(str); +} + +/** + * MessagingWidgetsSMSConversation_init: + * + * Called when the page has actually been loaded. + * Acts as a "constructor", could be used for creating the template item and + * getting the element where we will add the children in the page. + * + * However, creating such template items doesn't seem so simple, we would + * need several of them in order to be able to keep it really usable. + **/ +function MessagingWidgetsSMSConversation_init () +{ + /* Setting onscroll handler to window */ + window.onscroll = MessagingWidgetsRenderer_onScroll; + + /* Setting onresize handler to window */ + window.onresize = MessagingWidgetsRenderer_onResize; + + storedScreenHeight = screen.height; + storedWindowHeight = storedScreenHeight - 140; + + /* setting body onmousedown for clearing stored message id on ui side */ + document.body.onmousedown = MessagingWidgetsRenderer_messagePressBody; + + if (!markupTemplateSelf) + { + markupTemplateSelf = document.getElementById("MessageContainerSelf"); + markupTemplateSelf.parentNode.removeChild(markupTemplateSelf); + markupTemplateSelf.removeAttribute('id'); + markupTemplateOther = document.getElementById("MessageContainerOther"); + markupTemplateOther.parentNode.removeChild(markupTemplateOther); + markupTemplateOther.removeAttribute('id'); + } + + MessagingWidgetsRenderer_addMessage(0, "13:37", "", "dsc", + "Hallo daar!", false, "1337", "https://avatars.githubusercontent.com/u/1478325?v=4", + "", "", "", "sander@sanderf.nl", false, "ltr"); + + MessagingWidgetsRenderer_addMessage(0, "13:50", "", "Wizzup", + "Is het al klaar??", false, "1338", "https://avatars.githubusercontent.com/u/517897?v=4", + "", "", "", "wizzup@wizzup.org", false, "ltr"); + + MessagingWidgetsRenderer_addMessage(0, "13:52", "", "Wizzup", + "#duurtlang", false, "1338", "https://avatars.githubusercontent.com/u/517897?v=4", + "", "", "", "wizzup@wizzup.org", false, "ltr"); +} + + +/** + * MessagingWidgetsRenderer_messageClicked: + * @event: + * @id: + * + * Message area clicked + **/ +function MessagingWidgetsRenderer_messageClicked(event) +{ + var x = event.target; + var idstr; + + /* Only handle clicks on message blocks, not on URIs */ + if (x.href == "" || (!x.href && !x.parentNode.href)){ + }else{ + return true; + } + + idstr = "file://id:"+event.currentTarget.id; + MessagingWidgetsSMSConversation_alert(idstr); + + MessagingWidgetsRenderer_clearHighlight(event.currentTarget.id); + + event.returnValue = true; + event.cancelBubble = false; +} + +function MessagingWidgetsRenderer_messagePress(event) +{ + var idstr; + + idstr = "file://pre-id:"+event.currentTarget.id; + + MessagingWidgetsSMSConversation_alert(idstr); + + /* The popup menu posted from C code seems to steal events + and when the popup is closed, the message remains highlighted. + Workaround: use a 2-second timeout to clear highlight. + */ + setTimeout("MessagingWidgetsRenderer_clearHighlight()", 2000); + + event.returnValue = true; + /* Canceling bubble so body onmousedown isn't called */ + event.cancelBubble = true; +} + +/** + * MessagingWidgetsRenderer_messagePressBubble: + * @event: An onmousedown event + * Highlight message bubble when pressed. + */ +function MessagingWidgetsRenderer_messagePressBubble(event) +{ + var block; + + MessagingWidgetsRenderer_clearHighlight(event.currentTarget.id); + + block = document.getElementById(event.currentTarget.id); + if (block) { + block.className = block.clickedClassName; + lastClickedBubble = block; + } + + event.returnValue = true; + /* Canceling bubble so body onmousedown isn't called */ + event.cancelBubble = false; +} + + +/** + * MessagingWidgetsRenderer_messagePressBubble: + * @event: (Usually) an onmouseup event + * Message bubble is not pressed any more - clear highlighting. + */ +function MessagingWidgetsRenderer_messageReleaseBubble(event) +{ + MessagingWidgetsRenderer_clearHighlight(); + + event.returnValue = true; + event.cancelBubble = false; +} + + +/** + * MessagingWidgetsRenderer_clearHighlight: + * @elem_id: (optional) Don't clear if @elem_id is currently highlighted. + * + * Remove highlighting from highlighted element, if any. + */ +function MessagingWidgetsRenderer_clearHighlight(/* [elem_id] */) +{ + if (lastClickedBubble) { + if (arguments.length >= 0) { + var elem_id = arguments[0]; + var elem = document.getElementById(elem_id); + if (elem && elem == lastClickedBubble) { + return; + } + } + lastClickedBubble.className = lastClickedBubble.normalClassName; + lastClickedBubble = null; + } +} + +function MessagingWidgetsRenderer_messagePressBody(event) +{ + var idstr; + + MessagingWidgetsSMSConversation_alert("file://pre-id:None"); + + event.returnValue = true; + event.cancelBubble = false; +} + +function MessagingWidgetsRenderer_avatarClicked(event) +{ + MessagingWidgetsSMSConversation_alert(event.currentTarget.id); + + event.returnValue = true; + event.cancelBubble = false; +} + +/* + * Fixes presence... + */ +function +MessagingWidgetsRenderer_fixPresence ( + self, presence_img, presence, contact_info_str, add_to_top) +{ + var presenceID = "PresenceImg" + contact_info_str; + if (!self) { + if (presence_img) { + + presence_img.id = presenceID; + + if (presence != null && presence != "") { + presence_img.src = presence; + } + + /* Find current presence anchor in document */ + var prevPresence = document.getElementById (presenceID); + if (add_to_top) { + + /* If we are adding a history, check if presence anchor is + * already present in document (presumably added at bottom + * from pending messages) or in pastPresenceAnchor which + * remebers if we already created the anchor (it should + * not be re-created if already created when populating + * history). + */ + if (prevPresence || + pastPresenceAnchor[contact_info_str] == true) { + /* + * Presence is already anchored; remove it from this item. + */ + presence_img.parentNode.removeChild (presence_img); + } else{ + /* + * There is no anchor found, either in document or in + * previously anchored, so leave presence node intact + * in this item and record that anchor is already set. + */ + pastPresenceAnchor[contact_info_str] = true; + } + } else { + /* If we found a previous presence icon, we remove that. + * this one replaces the anchor + */ + if (prevPresence) { + prevPresence.parentNode.removeChild (prevPresence); + } + } + } + } else if (presence_img) { + presence_img.parentNode.removeChild (presence_img); + } +} + +/** + * MessagingWidgetsRenderer_messageNode: + * @item: The message. + * @add_to_top: Add the new message to the top of the list + * + * Creates a message node + **/ +function +MessagingWidgetsRenderer_messageNode (item, add_to_top) +{ + /* Top level items */ + var new_message; + + /* Avatar data */ + var avatar_img; + + /* The graphics */ + var bubble_cell; + + /* Presence icon and name area */ + var presence_img = null; + var name_tag; + + /* Message text content */ + var message_txt; + + /* Time stamps and potential icons */ + var time_tag; + var delivery_time_tag; + var business_img; + var status_img; + + var party; + var count; + + if (!markupTemplateSelf) { + MessagingWidgetsSMSConversation_init(); + } + + if (item.type !== 0) { + MessagingWidgetsSMSConversation_alert("Only type 0 is allowed"); + return; + } + + if (item.self === true) { + party = "Self"; + new_message = markupTemplateSelf.cloneNode(true); + + /* Finally, append the whole message to the document */ + new_message.id = "Message" + item.id_str; + new_message.onmousedown = MessagingWidgetsRenderer_messagePress; + + /* Retrieve the elements to update */ + var node_tags = new_message.getElementsByTagName('*'); + for (var i = 0; i < node_tags.length; i++) { + if (node_tags[i].hasAttribute('id')) { + var id = node_tags[i].getAttribute('id'); + if (id == ("AvatarImg" + party)) + avatar_img = node_tags[i]; + if (id == ("Message" + party)) + bubble_cell = node_tags[i]; + if (id == ("MessagePresence" + party)) + presence_img = node_tags[i]; + if (id == ("MessageSenderName" + party)) + name_tag = node_tags[i]; + if (id == ("MessageText" + party)) + message_txt = node_tags[i]; + if (id == ("MessageTimeStamp" + party)) + time_tag = node_tags[i]; + if (id == ("MessageBusinessCardImg" + party)) + business_img = node_tags[i]; + if (id == ("MessageDeliveryTimeStamp" + party)) + delivery_time_tag = node_tags[i]; + if (id == ("MessageStatusImg" + party)) + status_img = node_tags[i]; + } + } + + } else { + party = "Other"; + new_message = markupTemplateOther.cloneNode(true); + + /* Finally, append the whole message to the document */ + new_message.id = "Message" + item.id_str; + new_message.onmousedown = MessagingWidgetsRenderer_messagePress; + + /* Retrieve the elements to update */ + var node_tags = new_message.getElementsByTagName('*'); + for (var i = 0; i < node_tags.length; i++) { + if (node_tags[i].hasAttribute('id')) { + var id = node_tags[i].getAttribute('id'); + if (id == ("AvatarImg" + party)) + avatar_img = node_tags[i]; + if (id == ("Message" + party)) + bubble_cell = node_tags[i]; + if (id == ("MessagePresence" + party)) + presence_img = node_tags[i]; + if (id == ("MessageSenderName" + party)) + name_tag = node_tags[i]; + if (id == ("MessageText" + party)) + message_txt = node_tags[i]; + if (id == ("MessageTimeStamp" + party)) + time_tag = node_tags[i]; + if (id == ("MessageBusinessCardImg" + party)) + business_img = node_tags[i]; + if (id == ("MessageDeliveryTimeStamp" + party)) + delivery_time_tag = node_tags[i]; + if (id == ("MessageStatusImg" + party)) + status_img = node_tags[i]; + } + } + + avatar_img.id = "avatar:" + item.contact_info_str; + } + bubble_cell.id = item.id_str; + message_txt.id = "MessageText" + item.id_str; + name_tag.id = "MessageSenderName" + item.id_str; + business_img.id = "MessageBusinessCardImg" + item.id_str; + time_tag.id = "MessageTimeStamp" + item.id_str; + delivery_time_tag.id = "MessageDeliveryTimeStamp" + item.id_str; + status_img.id = "MessageStatusImg" + item.id_str; + message_txt.setAttribute("dir", item.text_dir); + + /* Creation of an avatar image */ + if (item.self == false) { + if (item.avatar != "") { + avatar_img.style.backgroundImage = "url('"+item.avatar+"')"; + avatar_img.onclick = MessagingWidgetsRenderer_avatarClicked; + } + } + + /* The bubble content */ + bubble_cell.normalClassName = bubble_cell.className; + bubble_cell.clickedClassName = bubble_cell.className + + "Clicked MessagingBubbleClickedBackgroundColor MessagingBubbleBorderColor"; + bubble_cell.onclick = MessagingWidgetsRenderer_messageClicked; + bubble_cell.onmousedown = MessagingWidgetsRenderer_messagePressBubble; + bubble_cell.onmouseup = MessagingWidgetsRenderer_messageReleaseBubble; + + if (item.name_str != "") { + name_tag.textContent = item.name_str; + } + + message_txt.innerHTML = item.message_str.replace(/\t/g, "     "); + + if (item.business_icon != "") { + business_img.src = item.business_icon; + } + + time_tag.style.display = myShowTimes; + time_tag.innerHTML = item.time_str; + + delivery_time_tag.style.display = myShowTimes; + delivery_time_tag.innerHTML = item.delivery_str; + + if (item.status_icon != "") { + status_img.src = item.status_icon; + status_img.style.display = "inline"; + } else { + /* Hiding element, so it's paddings etc don't affect timestamp */ + /* placement. It gets hidden in SetTimes() also */ + status_img.src = ""; + status_img.style.display = "none"; + } + + /* FIXME: Move it somewhere appropriate */ + MessagingWidgetsRenderer_fixPresence(item.self, presence_img, item.presence, + item.contact_info_str, add_to_top); + + return new_message; +} + +/** + * MessagingWidgetsRenderer_messageObject: + * @type: Type of the message (normal/action/notice/autoreply) + * @time_str: The time string to show in the screen + * @delivery_str: The delivery time string to possibly show in the screen + * @name_str: The name string to show in the screen + * @message_str: The actual message to show + * @self: TRUE if message is from self + * @id_str: The ID of the message for access + * @avatar: path(/url?) to avatar image + * @presence: presence icon of sender + * @business_icon: path to business card icon + * @status_icon: path to message status icon (pending/failed) + * @contact_info_str: Additional contact information + * @text_dir: Text direction ("ltr" or "rtl") + * + * Creates a message object. + **/ +function +MessagingWidgetsRenderer_messageObject ( + type, time_str, delivery_str, name_str, message_str, self, id_str, + avatar, presence, business_icon, status_icon, contact_info_str, text_dir) +{ + this.type = type; + this.time_str = time_str; + this.delivery_str = delivery_str; + this.name_str = name_str; + this.message_str = message_str; + this.self = self; + this.id_str = id_str; + this.avatar = avatar; + this.presence = presence; + this.business_icon = business_icon; + this.status_icon = status_icon; + this.contact_info_str = contact_info_str; + this.text_dir = text_dir; +} + +/* + * Flushes the given amount of messages from the buffer to renderer + */ +function +MessagingWidgetsRenderer_flushBuffer (amount) +{ + if (messagesBuffer.length > 0) { + if (amount < 0) + amount = messagesBuffer.length; + var fragment = document.createDocumentFragment(); + for (var i = 0; i < amount; i++) { + if (messagesBuffer.length <= 0) + break; + + var item = messagesBuffer.shift(); + new_message = MessagingWidgetsRenderer_messageNode (item, true); + + if (fragment.childNodes.length > 0) + fragment.insertBefore(new_message, fragment.firstChild); + else + fragment.appendChild(new_message); + } + + /* Restore scroll position */ + var savedScrollPos = + document.body.scrollHeight - window.pageYOffset; + document.body.insertBefore(fragment, document.body.firstChild); + window.scrollTo(0, (document.body.scrollHeight - savedScrollPos)); + } +} + +/* Scroll event handler to potentially add more past history */ +function +MessagingWidgetsRenderer_onScroll () +{ + MessagingWidgetsRenderer_clearHighlight(); + + /* Buffer flushing if there isn't already one running. */ + if (window.pageYOffset < 100 && messagesBuffer.length > 0) { + + /* Add a page of messages (about 4 screen-full) to renderer */ + MessagingWidgetsRenderer_flushBuffer(HISTORY_PAGE_SIZE); + } + + /* If we run out of messages in buffer and history hasn't finished, + * request for more + */ + if (messagesBuffer.length == 0 && + myBatchRequested == HISTORY_FETCHING_NOREQUEST && + myBatchesAdded > 0) + { + myBatchRequested = HISTORY_BATCH_SIZE; + alert("history-request:" + HISTORY_BATCH_SIZE); + } + + obj=document.elementFromPoint(120, window.innerHeight-16); + if(obj.id != "") + storedBottomElement = obj; +} + +/* When conversation view editor expands/shrinks, scroll accordingly to */ +/* keep the the bottom position of the screen fixed. */ +function +MessagingWidgetsRenderer_onResize (event) +{ + if( storedScreenHeight != screen.height) + { + storedBottomElement.scrollIntoView(false); + storedScreenHeight = screen.height; + storedWindowHeight = window.innerHeight; + } + + if (Math.abs(storedWindowHeight - window.innerHeight) != 0) { + window.scrollBy(0, storedWindowHeight - window.innerHeight); + storedWindowHeight = window.innerHeight; + } +} + +/** + * MessagingWidgetsRenderer_addMessage: + * @type: Type of the message (normal/action/notice/autoreply) + * @time_str: The time string to show in the screen + * @delivery_str: The delivery time string to possibly show in the screen + * @name_str: The name string to show in the screen + * @message_str: The actual message to show + * @self: TRUE if message is from self + * @id_str: The ID of the message for access + * @avatar: path(/url?) to avatar image + * @presence: presence icon of sender + * @business_icon: path to business card icon + * @status_icon: path to message status icon (pending/failed) + * @contact_info_str: Additional contact information + * @add_to_top: Add the new message to the top of the list + * @text_dir: Text direction ("ltr" or "rtl") + * + * Queues messages to buffer and triggers flush schedule. Also forces + * an immediate flush if there are 8 messages already in buffer for + * the first time. It's a screenful of messages shown to the user in + * first opportunity. + **/ +function +MessagingWidgetsRenderer_addMessage ( + type, time_str, delivery_str, name_str, message_str, self, id_str, + avatar, presence, business_icon, status_icon, contact_info_str, add_to_top, + text_dir) +{ + var item = + new MessagingWidgetsRenderer_messageObject (type, time_str, + delivery_str, + name_str, message_str, + self, id_str, avatar, + presence, business_icon, + status_icon, + contact_info_str, + text_dir); + + if (add_to_top) { + /* Queue the top (history) message in buffer. */ + messagesBuffer[messagesBuffer.length] = item; + + /* Force flush if there's already screenful of messages to show for + * the first time. + */ + if (firstFlush == true && + messagesBuffer.length >= HISTORY_SCREENFULL_SIZE) + { + firstFlush = false; + MessagingWidgetsRenderer_flushBuffer(HISTORY_SCREENFULL_SIZE); + } + } else { + /* If the message is bottom, add it directly without queuing. */ + var new_message = + MessagingWidgetsRenderer_messageNode (item, false); + + document.body.appendChild (new_message); + + /* scrolling to new message, if the view is close to bottom, or */ + /* sent by self. If not, we don't scroll */ + if (document.body.scrollHeight - window.pageYOffset < (screen.height-140)*2 || self) { + new_message.scrollIntoView (false); + } + } +} + +/** + * MessagingWidgetsRenderer_batchAdded: + * @messages_fetched: Number of messages fetched from log. Note that all + * fetched messages are not necessarily added to the view. + * + * History batch has been added to renderer + **/ +function MessagingWidgetsRenderer_batchAdded (messages_fetched) +{ + myBatchesAdded++; + + /* Force flush if there hasn't been anything shown yet. + * This happens because the first batch was smaller than + * HISTORY_SCREENFULL_SIZE. + */ + if (firstFlush == true && messagesBuffer.length >= 0) { + firstFlush = false; + MessagingWidgetsRenderer_flushBuffer(-1); + } + + /* If there was no request made, then it's the first batch pushed. + * The subsequent batch is requested after a delay of 1s to allow + * first screenfull to be rendered properly. + */ + if (myBatchRequested == HISTORY_FETCHING_NOREQUEST) { + if (flushTimeout != 0) + clearTimeout(flushTimeout); + flushTimeout = setTimeout("MessagingWidgetsRenderer_onScroll();", + 1000); + } else if (myBatchRequested > 0) { + /* If there was a request, check if we got everything. + * If fetched messages is the amount requested, we could + * continue fetching more, otherwise there is no more history + * to fetch. + */ + if (messages_fetched < myBatchRequested) { + myBatchRequested = HISTORY_FETCHING_DONE; /* No more history */ + } else { + myBatchRequested = HISTORY_FETCHING_NOREQUEST; /* Batch delivered */ + } + + /* Check if anything needs to be rendered at this scroll position */ + MessagingWidgetsRenderer_onScroll(); + } +} + +/** + * MessagingWidgetsRenderer_deleteMessage: + * + * @id_str: The ID of the message to delete + * + * Removes a message from the message area + **/ +function MessagingWidgetsRenderer_deleteMessage (id_str) +{ + var txt; + var node = null; + + MessagingWidgetsSMSConversation_alert( + "MessagingWidgetsRenderer_deleteMessage("+id_str+") called."); + + txt = "Message"+id_str; + node = document.getElementById(txt); + + if (node == null) { + MessagingWidgetsSMSConversation_alert ( + "No messages with id: " + id_str); + return; + } + + try { + document.body.removeChild (node); + window.scrollBy (0,0); + } catch (e) { + MessagingWidgetsSMSConversation_alert ( + "Message " + index + " removal failed: " + e); + } + + return; +} + +/** + * MessagingWidgetsRenderer_showDeliveryTimes: + * + * @visibility: Set to 'inline' to show delivery time stamps. Set to + * 'none' not to show them. + * + * Set if delivery time stamps should be visible + **/ +function MessagingWidgetsRenderer_showDeliveryTimes (visibility) +{ + var times; + + if (visibility != "inline" && visibility != "none") { + MessagingWidgetsSMSConversation_alert( + "MessagingWidgetsRenderer_showDeliveryTimes: Illegal parameter: " + + visibility); + return; + } + + myShowTimes = visibility; + + times = document.getElementsByTagName("span"); + if (times == null) { + return; + + } + + for (i = 0; i < times.length; i++) { + if (times[i].className.indexOf ("MessageDeliveryTimeStamp") != -1) { + times[i].style.display = myShowTimes; + } + } + + return; +} + +/** + * MessagingWidgetsRenderer_setTimes: + * + * @id_str: id of the message + * @time_str: message time stamp + * @delivery_str: message delivery time stamp + * @status_icon: path+name of a status icon (pending/failed) + * + * Set time stamps and status icon + **/ +function MessagingWidgetsRenderer_setTimes (id_str, time_str, delivery_str, + status_icon) +{ + var icon; + + // Weird new browser behaviour here. Looks like if the src of the status + // icon is set to not valid icon value, the browser keeps displaying the old + // valid icon. Only when you put to the src a valid icon does it change. + // Worked around this by hiding the image altogether if the icon is set + // to "". + + icon = document.getElementById("MessageStatusImg"+id_str); + if (icon != null) { + icon.src = status_icon; + + if (status_icon == "") { + icon.style.display = "none"; + } else { + icon.style.display = "inline"; + } + } + + document.getElementById("MessageTimeStamp"+id_str).innerHTML = time_str; + document.getElementById("MessageDeliveryTimeStamp"+id_str).innerHTML = + delivery_str; + + return; +} + +/** + * MessagingWidgetsRenderer_setPresence: + * @contact_info: The contact info for presence icon + * @presence: Presence icon path + * + * Sets the presence icon of @contact_info to @presence + **/ +function MessagingWidgetsRenderer_setPresence (contact_info, presence) +{ + var presenceImg = document.getElementById ("PresenceImg" + contact_info); + if (presenceImg != null) { + presenceImg.src = presence; + } else { + /* Find in buffer */ + for (var i = 0; i < messagesBuffer.length; i++) { + if (messagesBuffer[i].contact_info_str == contact_info) { + messagesBuffer[i].presence = presence; + break; + } + } + } +} + +/** + * MessagingWidgetsRenderer_setMaxMessages: + * + * @max: maximum number of messages + * + * Sets the maximum number of messages (default is 50) + **/ +function MessagingWidgetsRenderer_setMaxMessages (max) +{ + var count; + + myMaxMessages = max; + + count = document.body.childNodes.count; + + if (count >= myMaxMessages) { + var i; + + for (i = count - myMaxMessages + 1; i > 0; i--) { + document.body.removeChild (document.body.firstChild); + } + } + + return; +} + +/** + * MessagingWidgetsRenderer_setCSS: + * + * @file: Path of theme CSS file + * + * Sets the theme CSS file to the current page. + * + * FIXME: Should use the .styleSheets property of the document + **/ +function MessagingWidgetsRenderer_setCSS (file) +{ + document.getElementById("ThemeCSSLink").href = file; + MessagingWidgetsSMSConversation_alert("set: "+file+" as theme CSS file."); + + return; +} + +/** + * MessagingWidgetsRenderer_addBatch: + * + * @messages: Array of messages to add + * + * Adds several messages to view + * + **/ +function MessagingWidgetsRenderer_addBatch (messages) +{ + var len = messages.length; + var i; + + // starting from 1, because of the extra ',' at the beginning due to + // performance optimizations + for(i=1; i + + svg/gl.svg + svg/no.svg + svg/gb-sct.svg + svg/au.svg + svg/pf.svg + svg/es.svg + svg/nz.svg + svg/ao.svg + svg/bt.svg + svg/mz.svg + svg/kh.svg + svg/gb-nir.svg + svg/io.svg + svg/gn.svg + svg/ye.svg + svg/cc.svg + svg/bv.svg + svg/ru.svg + svg/hu.svg + svg/sl.svg + svg/cv.svg + svg/gb-wls.svg + svg/dk.svg + svg/mf.svg + svg/cn.svg + svg/aw.svg + svg/gh.svg + svg/ua.svg + svg/th.svg + svg/nc.svg + svg/nr.svg + svg/ai.svg + svg/tg.svg + svg/ae.svg + svg/bs.svg + svg/is.svg + svg/mm.svg + svg/sd.svg + svg/dj.svg + svg/tw.svg + svg/sy.svg + svg/es-ga.svg + svg/pn.svg + svg/bo.svg + svg/rs.svg + svg/na.svg + svg/it.svg + svg/cx.svg + svg/ni.svg + svg/gu.svg + svg/ph.svg + svg/mv.svg + svg/us.svg + svg/mo.svg + svg/va.svg + svg/cf.svg + svg/cl.svg + svg/ss.svg + svg/ad.svg + svg/ws.svg + svg/gy.svg + svg/bl.svg + svg/tz.svg + svg/cw.svg + svg/je.svg + svg/uz.svg + svg/li.svg + svg/bz.svg + svg/sx.svg + svg/kg.svg + svg/bi.svg + svg/pw.svg + svg/pm.svg + svg/um.svg + svg/nf.svg + svg/bm.svg + svg/wf.svg + svg/gf.svg + svg/sg.svg + svg/lc.svg + svg/pa.svg + svg/ke.svg + svg/ma.svg + svg/to.svg + svg/bq.svg + svg/sm.svg + svg/py.svg + svg/gb-eng.svg + svg/md.svg + svg/gt.svg + svg/sr.svg + svg/vn.svg + svg/re.svg + svg/ci.svg + svg/gq.svg + svg/yt.svg + svg/mp.svg + svg/tj.svg + svg/fk.svg + svg/so.svg + svg/lr.svg + svg/bn.svg + svg/gp.svg + svg/bh.svg + svg/by.svg + svg/bj.svg + svg/be.svg + svg/jo.svg + svg/vu.svg + svg/vi.svg + svg/gw.svg + svg/ec.svg + svg/hm.svg + svg/nu.svg + svg/mn.svg + svg/tf.svg + svg/kz.svg + svg/fj.svg + svg/iq.svg + svg/bb.svg + svg/st.svg + svg/cr.svg + svg/ro.svg + svg/dz.svg + svg/tv.svg + svg/ve.svg + svg/sh.svg + svg/gs.svg + svg/fi.svg + svg/ck.svg + svg/ps.svg + svg/cz.svg + svg/uy.svg + svg/lv.svg + svg/ie.svg + svg/sz.svg + svg/eg.svg + svg/mk.svg + svg/un.svg + svg/vc.svg + svg/tk.svg + svg/gg.svg + svg/lk.svg + svg/in.svg + svg/zm.svg + svg/tn.svg + svg/pt.svg + svg/cm.svg + svg/tr.svg + svg/ht.svg + svg/pe.svg + svg/bf.svg + svg/br.svg + svg/ga.svg + svg/km.svg + svg/sc.svg + svg/ax.svg + svg/ng.svg + svg/gd.svg + svg/ms.svg + svg/lu.svg + svg/il.svg + svg/mc.svg + svg/do.svg + svg/ba.svg + svg/sj.svg + svg/td.svg + svg/qa.svg + svg/gi.svg + svg/ar.svg + svg/sk.svg + svg/bg.svg + svg/az.svg + svg/kw.svg + svg/za.svg + svg/my.svg + svg/id.svg + svg/om.svg + svg/fo.svg + svg/mu.svg + svg/cg.svg + svg/ir.svg + svg/mr.svg + svg/ky.svg + svg/vg.svg + svg/es-ct.svg + svg/kr.svg + svg/er.svg + svg/me.svg + svg/bw.svg + svg/zw.svg + svg/jp.svg + svg/ls.svg + svg/ch.svg + svg/pk.svg + svg/eh.svg + svg/dm.svg + svg/pg.svg + svg/se.svg + svg/xk.svg + svg/im.svg + svg/ki.svg + svg/ag.svg + svg/sn.svg + svg/gb.svg + svg/am.svg + svg/tt.svg + svg/mq.svg + svg/et.svg + svg/hn.svg + svg/mh.svg + svg/tl.svg + svg/ly.svg + svg/jm.svg + svg/af.svg + svg/aq.svg + svg/mw.svg + svg/kn.svg + svg/tm.svg + svg/as.svg + svg/cu.svg + svg/si.svg + svg/gr.svg + svg/hr.svg + svg/kp.svg + svg/de.svg + svg/bd.svg + svg/rw.svg + svg/sa.svg + svg/mg.svg + svg/np.svg + svg/nl.svg + svg/al.svg + svg/ge.svg + svg/gm.svg + svg/mt.svg + svg/pl.svg + svg/cy.svg + svg/co.svg + svg/ne.svg + svg/sv.svg + svg/la.svg + svg/at.svg + svg/lb.svg + svg/pr.svg + svg/hk.svg + svg/lt.svg + svg/fr.svg + svg/sb.svg + svg/ca.svg + svg/mx.svg + svg/cd.svg + svg/fm.svg + svg/ml.svg + svg/eu.svg + svg/tc.svg + svg/ug.svg + svg/ee.svg + + + + png/rs.png + png/ml.png + png/ve.png + png/ws.png + png/na.png + png/cd.png + png/tc.png + png/gf.png + png/ro.png + png/lk.png + png/sg.png + png/ng.png + png/au.png + png/vi.png + png/kh.png + png/bt.png + png/pr.png + png/it.png + png/sj.png + png/gh.png + png/gi.png + png/ar.png + png/kp.png + png/cf.png + png/bb.png + png/dj.png + png/gm.png + png/af.png + png/la.png + png/us-ca.png + png/hm.png + png/ht.png + png/by.png + png/jo.png + png/az.png + png/cw.png + png/im.png + png/fr.png + png/il.png + png/gb-nir.png + png/ug.png + png/cz.png + png/kr.png + png/hn.png + png/nc.png + png/st.png + png/ch.png + png/tr.png + png/al.png + png/nl.png + png/mx.png + png/td.png + png/ss.png + png/kw.png + png/bd.png + png/gb-wls.png + png/uz.png + png/rw.png + png/ga.png + png/vn.png + png/ne.png + png/hu.png + png/gr.png + png/tf.png + png/ge.png + png/lgbt.png + png/so.png + png/ls.png + png/io.png + png/za.png + png/cx.png + png/mt.png + png/ph.png + png/ax.png + png/km.png + png/lv.png + png/bn.png + png/pn.png + png/vg.png + png/bs.png + png/fo.png + png/ag.png + png/co.png + png/pe.png + png/sx.png + png/yt.png + png/bg.png + png/um.png + png/ie.png + png/gq.png + png/sb.png + png/cr.png + png/lt.png + png/fk.png + png/pm.png + png/kn.png + png/th.png + png/sn.png + png/iq.png + png/fj.png + png/bf.png + png/my.png + png/hr.png + png/lr.png + png/gn.png + png/nu.png + png/pf.png + png/np.png + png/aw.png + png/ps.png + png/si.png + png/sr.png + png/jp.png + png/tz.png + png/id.png + png/mh.png + png/mc.png + png/qa.png + png/to.png + png/mw.png + png/pl.png + png/mz.png + png/je.png + png/as.png + png/sy.png + png/tl.png + png/tn.png + png/dz.png + png/ki.png + png/cc.png + png/mk.png + png/ke.png + png/ca.png + png/cu.png + png/mm.png + png/pa.png + png/gg.png + png/sk.png + png/sz.png + png/cm.png + png/bh.png + png/gb-eng.png + png/ua.png + png/is.png + png/pt.png + png/ky.png + png/pg.png + png/fi.png + png/cg.png + png/sv.png + png/ms.png + png/cl.png + png/bi.png + png/re.png + png/mu.png + png/pk.png + png/hk.png + png/gp.png + png/xk.png + png/mq.png + png/do.png + png/gu.png + png/tt.png + png/dk.png + png/md.png + png/in.png + png/er.png + png/mf.png + png/gl.png + png/cn.png + png/gb-sct.png + png/mr.png + png/mg.png + png/nf.png + png/mv.png + png/lc.png + png/eu.png + png/tm.png + png/tw.png + png/ye.png + png/om.png + png/pw.png + png/li.png + png/sc.png + png/tj.png + png/ir.png + png/bo.png + png/dm.png + png/bj.png + png/gb-zet.png + png/gs.png + png/ly.png + png/me.png + png/lu.png + png/sh.png + png/gw.png + png/eg.png + png/mo.png + png/se.png + png/py.png + png/ee.png + png/br.png + png/vu.png + png/bl.png + png/ma.png + png/mn.png + png/tk.png + png/ni.png + png/ck.png + png/ec.png + png/no.png + png/zm.png + png/gy.png + png/wf.png + png/kz.png + png/sl.png + png/us.png + png/gd.png + png/sd.png + png/sm.png + png/ci.png + png/mp.png + png/zw.png + png/ao.png + png/de.png + png/ad.png + png/cv.png + png/ae.png + png/tv.png + png/nz.png + png/sa.png + png/et.png + png/nr.png + png/va.png + png/gt.png + png/at.png + png/jm.png + png/es.png + png/gb.png + png/bz.png + png/ba.png + png/kg.png + png/am.png + png/lb.png + png/vc.png + png/ai.png + png/bw.png + png/be.png + png/tg.png + png/ru.png + png/cy.png + png/bm.png + png/bv.png + png/fm.png + png/uy.png + + diff --git a/src/assets/images/flags/png/ad.png b/src/assets/images/flags/png/ad.png new file mode 100644 index 0000000..06bc7f9 Binary files /dev/null and b/src/assets/images/flags/png/ad.png differ diff --git a/src/assets/images/flags/png/ae.png b/src/assets/images/flags/png/ae.png new file mode 100644 index 0000000..e85d298 Binary files /dev/null and b/src/assets/images/flags/png/ae.png differ diff --git a/src/assets/images/flags/png/af.png b/src/assets/images/flags/png/af.png new file mode 100644 index 0000000..9795d8c Binary files /dev/null and b/src/assets/images/flags/png/af.png differ diff --git a/src/assets/images/flags/png/ag.png b/src/assets/images/flags/png/ag.png new file mode 100644 index 0000000..31bd963 Binary files /dev/null and b/src/assets/images/flags/png/ag.png differ diff --git a/src/assets/images/flags/png/ai.png b/src/assets/images/flags/png/ai.png new file mode 100644 index 0000000..b67979b Binary files /dev/null and b/src/assets/images/flags/png/ai.png differ diff --git a/src/assets/images/flags/png/al.png b/src/assets/images/flags/png/al.png new file mode 100644 index 0000000..360254d Binary files /dev/null and b/src/assets/images/flags/png/al.png differ diff --git a/src/assets/images/flags/png/am.png b/src/assets/images/flags/png/am.png new file mode 100644 index 0000000..0303a67 Binary files /dev/null and b/src/assets/images/flags/png/am.png differ diff --git a/src/assets/images/flags/png/ao.png b/src/assets/images/flags/png/ao.png new file mode 100644 index 0000000..3f25f99 Binary files /dev/null and b/src/assets/images/flags/png/ao.png differ diff --git a/src/assets/images/flags/png/ar.png b/src/assets/images/flags/png/ar.png new file mode 100644 index 0000000..cfb6c08 Binary files /dev/null and b/src/assets/images/flags/png/ar.png differ diff --git a/src/assets/images/flags/png/as.png b/src/assets/images/flags/png/as.png new file mode 100644 index 0000000..84f09e5 Binary files /dev/null and b/src/assets/images/flags/png/as.png differ diff --git a/src/assets/images/flags/png/at.png b/src/assets/images/flags/png/at.png new file mode 100644 index 0000000..0e68854 Binary files /dev/null and b/src/assets/images/flags/png/at.png differ diff --git a/src/assets/images/flags/png/au.png b/src/assets/images/flags/png/au.png new file mode 100644 index 0000000..f362ebb Binary files /dev/null and b/src/assets/images/flags/png/au.png differ diff --git a/src/assets/images/flags/png/aw.png b/src/assets/images/flags/png/aw.png new file mode 100644 index 0000000..98f15c4 Binary files /dev/null and b/src/assets/images/flags/png/aw.png differ diff --git a/src/assets/images/flags/png/ax.png b/src/assets/images/flags/png/ax.png new file mode 100644 index 0000000..05ddd71 Binary files /dev/null and b/src/assets/images/flags/png/ax.png differ diff --git a/src/assets/images/flags/png/az.png b/src/assets/images/flags/png/az.png new file mode 100644 index 0000000..6a39624 Binary files /dev/null and b/src/assets/images/flags/png/az.png differ diff --git a/src/assets/images/flags/png/ba.png b/src/assets/images/flags/png/ba.png new file mode 100644 index 0000000..5040b30 Binary files /dev/null and b/src/assets/images/flags/png/ba.png differ diff --git a/src/assets/images/flags/png/bb.png b/src/assets/images/flags/png/bb.png new file mode 100644 index 0000000..ee73b23 Binary files /dev/null and b/src/assets/images/flags/png/bb.png differ diff --git a/src/assets/images/flags/png/bd.png b/src/assets/images/flags/png/bd.png new file mode 100644 index 0000000..182ce32 Binary files /dev/null and b/src/assets/images/flags/png/bd.png differ diff --git a/src/assets/images/flags/png/be.png b/src/assets/images/flags/png/be.png new file mode 100644 index 0000000..e4c5092 Binary files /dev/null and b/src/assets/images/flags/png/be.png differ diff --git a/src/assets/images/flags/png/bf.png b/src/assets/images/flags/png/bf.png new file mode 100644 index 0000000..01941d1 Binary files /dev/null and b/src/assets/images/flags/png/bf.png differ diff --git a/src/assets/images/flags/png/bg.png b/src/assets/images/flags/png/bg.png new file mode 100644 index 0000000..8ffcb61 Binary files /dev/null and b/src/assets/images/flags/png/bg.png differ diff --git a/src/assets/images/flags/png/bh.png b/src/assets/images/flags/png/bh.png new file mode 100644 index 0000000..07a0e01 Binary files /dev/null and b/src/assets/images/flags/png/bh.png differ diff --git a/src/assets/images/flags/png/bi.png b/src/assets/images/flags/png/bi.png new file mode 100644 index 0000000..c16e2cd Binary files /dev/null and b/src/assets/images/flags/png/bi.png differ diff --git a/src/assets/images/flags/png/bj.png b/src/assets/images/flags/png/bj.png new file mode 100644 index 0000000..56bfbf3 Binary files /dev/null and b/src/assets/images/flags/png/bj.png differ diff --git a/src/assets/images/flags/png/bl.png b/src/assets/images/flags/png/bl.png new file mode 100644 index 0000000..ee034f2 Binary files /dev/null and b/src/assets/images/flags/png/bl.png differ diff --git a/src/assets/images/flags/png/bm.png b/src/assets/images/flags/png/bm.png new file mode 100644 index 0000000..389875a Binary files /dev/null and b/src/assets/images/flags/png/bm.png differ diff --git a/src/assets/images/flags/png/bn.png b/src/assets/images/flags/png/bn.png new file mode 100644 index 0000000..aeb824d Binary files /dev/null and b/src/assets/images/flags/png/bn.png differ diff --git a/src/assets/images/flags/png/bo.png b/src/assets/images/flags/png/bo.png new file mode 100644 index 0000000..1ff4a77 Binary files /dev/null and b/src/assets/images/flags/png/bo.png differ diff --git a/src/assets/images/flags/png/br.png b/src/assets/images/flags/png/br.png new file mode 100644 index 0000000..5a6ba10 Binary files /dev/null and b/src/assets/images/flags/png/br.png differ diff --git a/src/assets/images/flags/png/bs.png b/src/assets/images/flags/png/bs.png new file mode 100644 index 0000000..c176105 Binary files /dev/null and b/src/assets/images/flags/png/bs.png differ diff --git a/src/assets/images/flags/png/bt.png b/src/assets/images/flags/png/bt.png new file mode 100644 index 0000000..74cf75a Binary files /dev/null and b/src/assets/images/flags/png/bt.png differ diff --git a/src/assets/images/flags/png/bv.png b/src/assets/images/flags/png/bv.png new file mode 100644 index 0000000..879d0ce Binary files /dev/null and b/src/assets/images/flags/png/bv.png differ diff --git a/src/assets/images/flags/png/bw.png b/src/assets/images/flags/png/bw.png new file mode 100644 index 0000000..67921f5 Binary files /dev/null and b/src/assets/images/flags/png/bw.png differ diff --git a/src/assets/images/flags/png/by.png b/src/assets/images/flags/png/by.png new file mode 100644 index 0000000..cf6e389 Binary files /dev/null and b/src/assets/images/flags/png/by.png differ diff --git a/src/assets/images/flags/png/bz.png b/src/assets/images/flags/png/bz.png new file mode 100644 index 0000000..8ebbdc3 Binary files /dev/null and b/src/assets/images/flags/png/bz.png differ diff --git a/src/assets/images/flags/png/ca.png b/src/assets/images/flags/png/ca.png new file mode 100644 index 0000000..51af35e Binary files /dev/null and b/src/assets/images/flags/png/ca.png differ diff --git a/src/assets/images/flags/png/cc.png b/src/assets/images/flags/png/cc.png new file mode 100644 index 0000000..7cba560 Binary files /dev/null and b/src/assets/images/flags/png/cc.png differ diff --git a/src/assets/images/flags/png/cd.png b/src/assets/images/flags/png/cd.png new file mode 100644 index 0000000..a57bcca Binary files /dev/null and b/src/assets/images/flags/png/cd.png differ diff --git a/src/assets/images/flags/png/cf.png b/src/assets/images/flags/png/cf.png new file mode 100644 index 0000000..061e7b5 Binary files /dev/null and b/src/assets/images/flags/png/cf.png differ diff --git a/src/assets/images/flags/png/cg.png b/src/assets/images/flags/png/cg.png new file mode 100644 index 0000000..51656ea Binary files /dev/null and b/src/assets/images/flags/png/cg.png differ diff --git a/src/assets/images/flags/png/ch.png b/src/assets/images/flags/png/ch.png new file mode 100644 index 0000000..aaed3fa Binary files /dev/null and b/src/assets/images/flags/png/ch.png differ diff --git a/src/assets/images/flags/png/ci.png b/src/assets/images/flags/png/ci.png new file mode 100644 index 0000000..8ceb4dd Binary files /dev/null and b/src/assets/images/flags/png/ci.png differ diff --git a/src/assets/images/flags/png/ck.png b/src/assets/images/flags/png/ck.png new file mode 100644 index 0000000..26fda5b Binary files /dev/null and b/src/assets/images/flags/png/ck.png differ diff --git a/src/assets/images/flags/png/cl.png b/src/assets/images/flags/png/cl.png new file mode 100644 index 0000000..7439242 Binary files /dev/null and b/src/assets/images/flags/png/cl.png differ diff --git a/src/assets/images/flags/png/cm.png b/src/assets/images/flags/png/cm.png new file mode 100644 index 0000000..082fc27 Binary files /dev/null and b/src/assets/images/flags/png/cm.png differ diff --git a/src/assets/images/flags/png/cn.png b/src/assets/images/flags/png/cn.png new file mode 100644 index 0000000..60ce47e Binary files /dev/null and b/src/assets/images/flags/png/cn.png differ diff --git a/src/assets/images/flags/png/co.png b/src/assets/images/flags/png/co.png new file mode 100644 index 0000000..8a4031c Binary files /dev/null and b/src/assets/images/flags/png/co.png differ diff --git a/src/assets/images/flags/png/cr.png b/src/assets/images/flags/png/cr.png new file mode 100644 index 0000000..fda89cf Binary files /dev/null and b/src/assets/images/flags/png/cr.png differ diff --git a/src/assets/images/flags/png/cu.png b/src/assets/images/flags/png/cu.png new file mode 100644 index 0000000..abd4280 Binary files /dev/null and b/src/assets/images/flags/png/cu.png differ diff --git a/src/assets/images/flags/png/cv.png b/src/assets/images/flags/png/cv.png new file mode 100644 index 0000000..f24fb5b Binary files /dev/null and b/src/assets/images/flags/png/cv.png differ diff --git a/src/assets/images/flags/png/cw.png b/src/assets/images/flags/png/cw.png new file mode 100644 index 0000000..edb13e6 Binary files /dev/null and b/src/assets/images/flags/png/cw.png differ diff --git a/src/assets/images/flags/png/cx.png b/src/assets/images/flags/png/cx.png new file mode 100644 index 0000000..d6d83ce Binary files /dev/null and b/src/assets/images/flags/png/cx.png differ diff --git a/src/assets/images/flags/png/cy.png b/src/assets/images/flags/png/cy.png new file mode 100644 index 0000000..d54e3d2 Binary files /dev/null and b/src/assets/images/flags/png/cy.png differ diff --git a/src/assets/images/flags/png/cz.png b/src/assets/images/flags/png/cz.png new file mode 100644 index 0000000..246960f Binary files /dev/null and b/src/assets/images/flags/png/cz.png differ diff --git a/src/assets/images/flags/png/de.png b/src/assets/images/flags/png/de.png new file mode 100644 index 0000000..6e7e122 Binary files /dev/null and b/src/assets/images/flags/png/de.png differ diff --git a/src/assets/images/flags/png/dj.png b/src/assets/images/flags/png/dj.png new file mode 100644 index 0000000..a5005e6 Binary files /dev/null and b/src/assets/images/flags/png/dj.png differ diff --git a/src/assets/images/flags/png/dk.png b/src/assets/images/flags/png/dk.png new file mode 100644 index 0000000..1904324 Binary files /dev/null and b/src/assets/images/flags/png/dk.png differ diff --git a/src/assets/images/flags/png/dm.png b/src/assets/images/flags/png/dm.png new file mode 100644 index 0000000..7589e77 Binary files /dev/null and b/src/assets/images/flags/png/dm.png differ diff --git a/src/assets/images/flags/png/do.png b/src/assets/images/flags/png/do.png new file mode 100644 index 0000000..30a9fb6 Binary files /dev/null and b/src/assets/images/flags/png/do.png differ diff --git a/src/assets/images/flags/png/dz.png b/src/assets/images/flags/png/dz.png new file mode 100644 index 0000000..2612b18 Binary files /dev/null and b/src/assets/images/flags/png/dz.png differ diff --git a/src/assets/images/flags/png/ec.png b/src/assets/images/flags/png/ec.png new file mode 100644 index 0000000..f4bd90e Binary files /dev/null and b/src/assets/images/flags/png/ec.png differ diff --git a/src/assets/images/flags/png/ee.png b/src/assets/images/flags/png/ee.png new file mode 100644 index 0000000..c19a256 Binary files /dev/null and b/src/assets/images/flags/png/ee.png differ diff --git a/src/assets/images/flags/png/eg.png b/src/assets/images/flags/png/eg.png new file mode 100644 index 0000000..ef35282 Binary files /dev/null and b/src/assets/images/flags/png/eg.png differ diff --git a/src/assets/images/flags/png/er.png b/src/assets/images/flags/png/er.png new file mode 100644 index 0000000..2dd3ecd Binary files /dev/null and b/src/assets/images/flags/png/er.png differ diff --git a/src/assets/images/flags/png/es.png b/src/assets/images/flags/png/es.png new file mode 100644 index 0000000..8547a23 Binary files /dev/null and b/src/assets/images/flags/png/es.png differ diff --git a/src/assets/images/flags/png/et.png b/src/assets/images/flags/png/et.png new file mode 100644 index 0000000..7e1d5f0 Binary files /dev/null and b/src/assets/images/flags/png/et.png differ diff --git a/src/assets/images/flags/png/eu.png b/src/assets/images/flags/png/eu.png new file mode 100644 index 0000000..ab08c78 Binary files /dev/null and b/src/assets/images/flags/png/eu.png differ diff --git a/src/assets/images/flags/png/fi.png b/src/assets/images/flags/png/fi.png new file mode 100644 index 0000000..0fa4237 Binary files /dev/null and b/src/assets/images/flags/png/fi.png differ diff --git a/src/assets/images/flags/png/fj.png b/src/assets/images/flags/png/fj.png new file mode 100644 index 0000000..fd88d01 Binary files /dev/null and b/src/assets/images/flags/png/fj.png differ diff --git a/src/assets/images/flags/png/fk.png b/src/assets/images/flags/png/fk.png new file mode 100644 index 0000000..9097d51 Binary files /dev/null and b/src/assets/images/flags/png/fk.png differ diff --git a/src/assets/images/flags/png/fm.png b/src/assets/images/flags/png/fm.png new file mode 100644 index 0000000..b7d1b27 Binary files /dev/null and b/src/assets/images/flags/png/fm.png differ diff --git a/src/assets/images/flags/png/fo.png b/src/assets/images/flags/png/fo.png new file mode 100644 index 0000000..4c87ba6 Binary files /dev/null and b/src/assets/images/flags/png/fo.png differ diff --git a/src/assets/images/flags/png/fr.png b/src/assets/images/flags/png/fr.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/src/assets/images/flags/png/fr.png differ diff --git a/src/assets/images/flags/png/ga.png b/src/assets/images/flags/png/ga.png new file mode 100644 index 0000000..7dcdd97 Binary files /dev/null and b/src/assets/images/flags/png/ga.png differ diff --git a/src/assets/images/flags/png/gb-eng.png b/src/assets/images/flags/png/gb-eng.png new file mode 100644 index 0000000..f6d7840 Binary files /dev/null and b/src/assets/images/flags/png/gb-eng.png differ diff --git a/src/assets/images/flags/png/gb-nir.png b/src/assets/images/flags/png/gb-nir.png new file mode 100644 index 0000000..e884008 Binary files /dev/null and b/src/assets/images/flags/png/gb-nir.png differ diff --git a/src/assets/images/flags/png/gb-sct.png b/src/assets/images/flags/png/gb-sct.png new file mode 100644 index 0000000..1b965e7 Binary files /dev/null and b/src/assets/images/flags/png/gb-sct.png differ diff --git a/src/assets/images/flags/png/gb-wls.png b/src/assets/images/flags/png/gb-wls.png new file mode 100644 index 0000000..1934d50 Binary files /dev/null and b/src/assets/images/flags/png/gb-wls.png differ diff --git a/src/assets/images/flags/png/gb-zet.png b/src/assets/images/flags/png/gb-zet.png new file mode 100644 index 0000000..dda561d Binary files /dev/null and b/src/assets/images/flags/png/gb-zet.png differ diff --git a/src/assets/images/flags/png/gb.png b/src/assets/images/flags/png/gb.png new file mode 100644 index 0000000..dd80c94 Binary files /dev/null and b/src/assets/images/flags/png/gb.png differ diff --git a/src/assets/images/flags/png/gd.png b/src/assets/images/flags/png/gd.png new file mode 100644 index 0000000..e1b1223 Binary files /dev/null and b/src/assets/images/flags/png/gd.png differ diff --git a/src/assets/images/flags/png/ge.png b/src/assets/images/flags/png/ge.png new file mode 100644 index 0000000..26fed1b Binary files /dev/null and b/src/assets/images/flags/png/ge.png differ diff --git a/src/assets/images/flags/png/gf.png b/src/assets/images/flags/png/gf.png new file mode 100644 index 0000000..a144de2 Binary files /dev/null and b/src/assets/images/flags/png/gf.png differ diff --git a/src/assets/images/flags/png/gg.png b/src/assets/images/flags/png/gg.png new file mode 100644 index 0000000..7702ee0 Binary files /dev/null and b/src/assets/images/flags/png/gg.png differ diff --git a/src/assets/images/flags/png/gh.png b/src/assets/images/flags/png/gh.png new file mode 100644 index 0000000..a91b43c Binary files /dev/null and b/src/assets/images/flags/png/gh.png differ diff --git a/src/assets/images/flags/png/gi.png b/src/assets/images/flags/png/gi.png new file mode 100644 index 0000000..fa0fc2b Binary files /dev/null and b/src/assets/images/flags/png/gi.png differ diff --git a/src/assets/images/flags/png/gl.png b/src/assets/images/flags/png/gl.png new file mode 100644 index 0000000..effb03e Binary files /dev/null and b/src/assets/images/flags/png/gl.png differ diff --git a/src/assets/images/flags/png/gm.png b/src/assets/images/flags/png/gm.png new file mode 100644 index 0000000..c958f51 Binary files /dev/null and b/src/assets/images/flags/png/gm.png differ diff --git a/src/assets/images/flags/png/gn.png b/src/assets/images/flags/png/gn.png new file mode 100644 index 0000000..d7aad25 Binary files /dev/null and b/src/assets/images/flags/png/gn.png differ diff --git a/src/assets/images/flags/png/gp.png b/src/assets/images/flags/png/gp.png new file mode 100644 index 0000000..9a1c74e Binary files /dev/null and b/src/assets/images/flags/png/gp.png differ diff --git a/src/assets/images/flags/png/gq.png b/src/assets/images/flags/png/gq.png new file mode 100644 index 0000000..277e334 Binary files /dev/null and b/src/assets/images/flags/png/gq.png differ diff --git a/src/assets/images/flags/png/gr.png b/src/assets/images/flags/png/gr.png new file mode 100644 index 0000000..edeb634 Binary files /dev/null and b/src/assets/images/flags/png/gr.png differ diff --git a/src/assets/images/flags/png/gs.png b/src/assets/images/flags/png/gs.png new file mode 100644 index 0000000..ab440fb Binary files /dev/null and b/src/assets/images/flags/png/gs.png differ diff --git a/src/assets/images/flags/png/gt.png b/src/assets/images/flags/png/gt.png new file mode 100644 index 0000000..92ed89a Binary files /dev/null and b/src/assets/images/flags/png/gt.png differ diff --git a/src/assets/images/flags/png/gu.png b/src/assets/images/flags/png/gu.png new file mode 100644 index 0000000..1d55c7b Binary files /dev/null and b/src/assets/images/flags/png/gu.png differ diff --git a/src/assets/images/flags/png/gw.png b/src/assets/images/flags/png/gw.png new file mode 100644 index 0000000..70ce094 Binary files /dev/null and b/src/assets/images/flags/png/gw.png differ diff --git a/src/assets/images/flags/png/gy.png b/src/assets/images/flags/png/gy.png new file mode 100644 index 0000000..57b9219 Binary files /dev/null and b/src/assets/images/flags/png/gy.png differ diff --git a/src/assets/images/flags/png/hk.png b/src/assets/images/flags/png/hk.png new file mode 100644 index 0000000..7e42002 Binary files /dev/null and b/src/assets/images/flags/png/hk.png differ diff --git a/src/assets/images/flags/png/hm.png b/src/assets/images/flags/png/hm.png new file mode 100644 index 0000000..f362ebb Binary files /dev/null and b/src/assets/images/flags/png/hm.png differ diff --git a/src/assets/images/flags/png/hn.png b/src/assets/images/flags/png/hn.png new file mode 100644 index 0000000..962afce Binary files /dev/null and b/src/assets/images/flags/png/hn.png differ diff --git a/src/assets/images/flags/png/hr.png b/src/assets/images/flags/png/hr.png new file mode 100644 index 0000000..ab5ba79 Binary files /dev/null and b/src/assets/images/flags/png/hr.png differ diff --git a/src/assets/images/flags/png/ht.png b/src/assets/images/flags/png/ht.png new file mode 100644 index 0000000..453a8de Binary files /dev/null and b/src/assets/images/flags/png/ht.png differ diff --git a/src/assets/images/flags/png/hu.png b/src/assets/images/flags/png/hu.png new file mode 100644 index 0000000..eccac8f Binary files /dev/null and b/src/assets/images/flags/png/hu.png differ diff --git a/src/assets/images/flags/png/id.png b/src/assets/images/flags/png/id.png new file mode 100644 index 0000000..14c0204 Binary files /dev/null and b/src/assets/images/flags/png/id.png differ diff --git a/src/assets/images/flags/png/ie.png b/src/assets/images/flags/png/ie.png new file mode 100644 index 0000000..6503716 Binary files /dev/null and b/src/assets/images/flags/png/ie.png differ diff --git a/src/assets/images/flags/png/il.png b/src/assets/images/flags/png/il.png new file mode 100644 index 0000000..953b18f Binary files /dev/null and b/src/assets/images/flags/png/il.png differ diff --git a/src/assets/images/flags/png/im.png b/src/assets/images/flags/png/im.png new file mode 100644 index 0000000..6ba2c68 Binary files /dev/null and b/src/assets/images/flags/png/im.png differ diff --git a/src/assets/images/flags/png/in.png b/src/assets/images/flags/png/in.png new file mode 100644 index 0000000..6d7e2c2 Binary files /dev/null and b/src/assets/images/flags/png/in.png differ diff --git a/src/assets/images/flags/png/io.png b/src/assets/images/flags/png/io.png new file mode 100644 index 0000000..ea0438b Binary files /dev/null and b/src/assets/images/flags/png/io.png differ diff --git a/src/assets/images/flags/png/iq.png b/src/assets/images/flags/png/iq.png new file mode 100644 index 0000000..17816d7 Binary files /dev/null and b/src/assets/images/flags/png/iq.png differ diff --git a/src/assets/images/flags/png/ir.png b/src/assets/images/flags/png/ir.png new file mode 100644 index 0000000..32af014 Binary files /dev/null and b/src/assets/images/flags/png/ir.png differ diff --git a/src/assets/images/flags/png/is.png b/src/assets/images/flags/png/is.png new file mode 100644 index 0000000..db11e76 Binary files /dev/null and b/src/assets/images/flags/png/is.png differ diff --git a/src/assets/images/flags/png/it.png b/src/assets/images/flags/png/it.png new file mode 100644 index 0000000..e2b0fa7 Binary files /dev/null and b/src/assets/images/flags/png/it.png differ diff --git a/src/assets/images/flags/png/je.png b/src/assets/images/flags/png/je.png new file mode 100644 index 0000000..fe3f21a Binary files /dev/null and b/src/assets/images/flags/png/je.png differ diff --git a/src/assets/images/flags/png/jm.png b/src/assets/images/flags/png/jm.png new file mode 100644 index 0000000..194d1a2 Binary files /dev/null and b/src/assets/images/flags/png/jm.png differ diff --git a/src/assets/images/flags/png/jo.png b/src/assets/images/flags/png/jo.png new file mode 100644 index 0000000..f4e204e Binary files /dev/null and b/src/assets/images/flags/png/jo.png differ diff --git a/src/assets/images/flags/png/jp.png b/src/assets/images/flags/png/jp.png new file mode 100644 index 0000000..2fead21 Binary files /dev/null and b/src/assets/images/flags/png/jp.png differ diff --git a/src/assets/images/flags/png/ke.png b/src/assets/images/flags/png/ke.png new file mode 100644 index 0000000..b7a8835 Binary files /dev/null and b/src/assets/images/flags/png/ke.png differ diff --git a/src/assets/images/flags/png/kg.png b/src/assets/images/flags/png/kg.png new file mode 100644 index 0000000..3a5c796 Binary files /dev/null and b/src/assets/images/flags/png/kg.png differ diff --git a/src/assets/images/flags/png/kh.png b/src/assets/images/flags/png/kh.png new file mode 100644 index 0000000..9f5a45e Binary files /dev/null and b/src/assets/images/flags/png/kh.png differ diff --git a/src/assets/images/flags/png/ki.png b/src/assets/images/flags/png/ki.png new file mode 100644 index 0000000..346d121 Binary files /dev/null and b/src/assets/images/flags/png/ki.png differ diff --git a/src/assets/images/flags/png/km.png b/src/assets/images/flags/png/km.png new file mode 100644 index 0000000..393af20 Binary files /dev/null and b/src/assets/images/flags/png/km.png differ diff --git a/src/assets/images/flags/png/kn.png b/src/assets/images/flags/png/kn.png new file mode 100644 index 0000000..08f73f4 Binary files /dev/null and b/src/assets/images/flags/png/kn.png differ diff --git a/src/assets/images/flags/png/kp.png b/src/assets/images/flags/png/kp.png new file mode 100644 index 0000000..8b7ec2c Binary files /dev/null and b/src/assets/images/flags/png/kp.png differ diff --git a/src/assets/images/flags/png/kr.png b/src/assets/images/flags/png/kr.png new file mode 100644 index 0000000..970a274 Binary files /dev/null and b/src/assets/images/flags/png/kr.png differ diff --git a/src/assets/images/flags/png/kw.png b/src/assets/images/flags/png/kw.png new file mode 100644 index 0000000..64c2345 Binary files /dev/null and b/src/assets/images/flags/png/kw.png differ diff --git a/src/assets/images/flags/png/ky.png b/src/assets/images/flags/png/ky.png new file mode 100644 index 0000000..5f8d16b Binary files /dev/null and b/src/assets/images/flags/png/ky.png differ diff --git a/src/assets/images/flags/png/kz.png b/src/assets/images/flags/png/kz.png new file mode 100644 index 0000000..5cb090d Binary files /dev/null and b/src/assets/images/flags/png/kz.png differ diff --git a/src/assets/images/flags/png/la.png b/src/assets/images/flags/png/la.png new file mode 100644 index 0000000..0b9ec9e Binary files /dev/null and b/src/assets/images/flags/png/la.png differ diff --git a/src/assets/images/flags/png/lb.png b/src/assets/images/flags/png/lb.png new file mode 100644 index 0000000..753d42b Binary files /dev/null and b/src/assets/images/flags/png/lb.png differ diff --git a/src/assets/images/flags/png/lc.png b/src/assets/images/flags/png/lc.png new file mode 100644 index 0000000..27793ef Binary files /dev/null and b/src/assets/images/flags/png/lc.png differ diff --git a/src/assets/images/flags/png/lgbt.png b/src/assets/images/flags/png/lgbt.png new file mode 100644 index 0000000..af08f6e Binary files /dev/null and b/src/assets/images/flags/png/lgbt.png differ diff --git a/src/assets/images/flags/png/li.png b/src/assets/images/flags/png/li.png new file mode 100644 index 0000000..5b45c42 Binary files /dev/null and b/src/assets/images/flags/png/li.png differ diff --git a/src/assets/images/flags/png/lk.png b/src/assets/images/flags/png/lk.png new file mode 100644 index 0000000..f56d275 Binary files /dev/null and b/src/assets/images/flags/png/lk.png differ diff --git a/src/assets/images/flags/png/lr.png b/src/assets/images/flags/png/lr.png new file mode 100644 index 0000000..42c5eec Binary files /dev/null and b/src/assets/images/flags/png/lr.png differ diff --git a/src/assets/images/flags/png/ls.png b/src/assets/images/flags/png/ls.png new file mode 100644 index 0000000..3a00840 Binary files /dev/null and b/src/assets/images/flags/png/ls.png differ diff --git a/src/assets/images/flags/png/lt.png b/src/assets/images/flags/png/lt.png new file mode 100644 index 0000000..ad39bc9 Binary files /dev/null and b/src/assets/images/flags/png/lt.png differ diff --git a/src/assets/images/flags/png/lu.png b/src/assets/images/flags/png/lu.png new file mode 100644 index 0000000..229c02f Binary files /dev/null and b/src/assets/images/flags/png/lu.png differ diff --git a/src/assets/images/flags/png/lv.png b/src/assets/images/flags/png/lv.png new file mode 100644 index 0000000..4f777ab Binary files /dev/null and b/src/assets/images/flags/png/lv.png differ diff --git a/src/assets/images/flags/png/ly.png b/src/assets/images/flags/png/ly.png new file mode 100644 index 0000000..8fc4abe Binary files /dev/null and b/src/assets/images/flags/png/ly.png differ diff --git a/src/assets/images/flags/png/ma.png b/src/assets/images/flags/png/ma.png new file mode 100644 index 0000000..db46c2b Binary files /dev/null and b/src/assets/images/flags/png/ma.png differ diff --git a/src/assets/images/flags/png/mc.png b/src/assets/images/flags/png/mc.png new file mode 100644 index 0000000..5f2e7f0 Binary files /dev/null and b/src/assets/images/flags/png/mc.png differ diff --git a/src/assets/images/flags/png/md.png b/src/assets/images/flags/png/md.png new file mode 100644 index 0000000..914b945 Binary files /dev/null and b/src/assets/images/flags/png/md.png differ diff --git a/src/assets/images/flags/png/me.png b/src/assets/images/flags/png/me.png new file mode 100644 index 0000000..d8bdbc6 Binary files /dev/null and b/src/assets/images/flags/png/me.png differ diff --git a/src/assets/images/flags/png/mf.png b/src/assets/images/flags/png/mf.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/src/assets/images/flags/png/mf.png differ diff --git a/src/assets/images/flags/png/mg.png b/src/assets/images/flags/png/mg.png new file mode 100644 index 0000000..3cd1d4d Binary files /dev/null and b/src/assets/images/flags/png/mg.png differ diff --git a/src/assets/images/flags/png/mh.png b/src/assets/images/flags/png/mh.png new file mode 100644 index 0000000..4cf22e4 Binary files /dev/null and b/src/assets/images/flags/png/mh.png differ diff --git a/src/assets/images/flags/png/mk.png b/src/assets/images/flags/png/mk.png new file mode 100644 index 0000000..a262925 Binary files /dev/null and b/src/assets/images/flags/png/mk.png differ diff --git a/src/assets/images/flags/png/ml.png b/src/assets/images/flags/png/ml.png new file mode 100644 index 0000000..391a36b Binary files /dev/null and b/src/assets/images/flags/png/ml.png differ diff --git a/src/assets/images/flags/png/mm.png b/src/assets/images/flags/png/mm.png new file mode 100644 index 0000000..50c298d Binary files /dev/null and b/src/assets/images/flags/png/mm.png differ diff --git a/src/assets/images/flags/png/mn.png b/src/assets/images/flags/png/mn.png new file mode 100644 index 0000000..662cb5a Binary files /dev/null and b/src/assets/images/flags/png/mn.png differ diff --git a/src/assets/images/flags/png/mo.png b/src/assets/images/flags/png/mo.png new file mode 100644 index 0000000..560f633 Binary files /dev/null and b/src/assets/images/flags/png/mo.png differ diff --git a/src/assets/images/flags/png/mp.png b/src/assets/images/flags/png/mp.png new file mode 100644 index 0000000..706bb27 Binary files /dev/null and b/src/assets/images/flags/png/mp.png differ diff --git a/src/assets/images/flags/png/mq.png b/src/assets/images/flags/png/mq.png new file mode 100644 index 0000000..2803754 Binary files /dev/null and b/src/assets/images/flags/png/mq.png differ diff --git a/src/assets/images/flags/png/mr.png b/src/assets/images/flags/png/mr.png new file mode 100644 index 0000000..958fb45 Binary files /dev/null and b/src/assets/images/flags/png/mr.png differ diff --git a/src/assets/images/flags/png/ms.png b/src/assets/images/flags/png/ms.png new file mode 100644 index 0000000..f4441ff Binary files /dev/null and b/src/assets/images/flags/png/ms.png differ diff --git a/src/assets/images/flags/png/mt.png b/src/assets/images/flags/png/mt.png new file mode 100644 index 0000000..53b3cc9 Binary files /dev/null and b/src/assets/images/flags/png/mt.png differ diff --git a/src/assets/images/flags/png/mu.png b/src/assets/images/flags/png/mu.png new file mode 100644 index 0000000..428b414 Binary files /dev/null and b/src/assets/images/flags/png/mu.png differ diff --git a/src/assets/images/flags/png/mv.png b/src/assets/images/flags/png/mv.png new file mode 100644 index 0000000..9dcc176 Binary files /dev/null and b/src/assets/images/flags/png/mv.png differ diff --git a/src/assets/images/flags/png/mw.png b/src/assets/images/flags/png/mw.png new file mode 100644 index 0000000..48fe4c9 Binary files /dev/null and b/src/assets/images/flags/png/mw.png differ diff --git a/src/assets/images/flags/png/mx.png b/src/assets/images/flags/png/mx.png new file mode 100644 index 0000000..cda5905 Binary files /dev/null and b/src/assets/images/flags/png/mx.png differ diff --git a/src/assets/images/flags/png/my.png b/src/assets/images/flags/png/my.png new file mode 100644 index 0000000..6f1f522 Binary files /dev/null and b/src/assets/images/flags/png/my.png differ diff --git a/src/assets/images/flags/png/mz.png b/src/assets/images/flags/png/mz.png new file mode 100644 index 0000000..6272c23 Binary files /dev/null and b/src/assets/images/flags/png/mz.png differ diff --git a/src/assets/images/flags/png/na.png b/src/assets/images/flags/png/na.png new file mode 100644 index 0000000..88e443b Binary files /dev/null and b/src/assets/images/flags/png/na.png differ diff --git a/src/assets/images/flags/png/nc.png b/src/assets/images/flags/png/nc.png new file mode 100644 index 0000000..f7763c8 Binary files /dev/null and b/src/assets/images/flags/png/nc.png differ diff --git a/src/assets/images/flags/png/ne.png b/src/assets/images/flags/png/ne.png new file mode 100644 index 0000000..0e1da9b Binary files /dev/null and b/src/assets/images/flags/png/ne.png differ diff --git a/src/assets/images/flags/png/nf.png b/src/assets/images/flags/png/nf.png new file mode 100644 index 0000000..3ed89ab Binary files /dev/null and b/src/assets/images/flags/png/nf.png differ diff --git a/src/assets/images/flags/png/ng.png b/src/assets/images/flags/png/ng.png new file mode 100644 index 0000000..172ba1a Binary files /dev/null and b/src/assets/images/flags/png/ng.png differ diff --git a/src/assets/images/flags/png/ni.png b/src/assets/images/flags/png/ni.png new file mode 100644 index 0000000..59ee411 Binary files /dev/null and b/src/assets/images/flags/png/ni.png differ diff --git a/src/assets/images/flags/png/nl.png b/src/assets/images/flags/png/nl.png new file mode 100644 index 0000000..ed4705a Binary files /dev/null and b/src/assets/images/flags/png/nl.png differ diff --git a/src/assets/images/flags/png/no.png b/src/assets/images/flags/png/no.png new file mode 100644 index 0000000..879d0ce Binary files /dev/null and b/src/assets/images/flags/png/no.png differ diff --git a/src/assets/images/flags/png/np.png b/src/assets/images/flags/png/np.png new file mode 100644 index 0000000..469fd2d Binary files /dev/null and b/src/assets/images/flags/png/np.png differ diff --git a/src/assets/images/flags/png/nr.png b/src/assets/images/flags/png/nr.png new file mode 100644 index 0000000..3be5818 Binary files /dev/null and b/src/assets/images/flags/png/nr.png differ diff --git a/src/assets/images/flags/png/nu.png b/src/assets/images/flags/png/nu.png new file mode 100644 index 0000000..b1747eb Binary files /dev/null and b/src/assets/images/flags/png/nu.png differ diff --git a/src/assets/images/flags/png/nz.png b/src/assets/images/flags/png/nz.png new file mode 100644 index 0000000..eb69f99 Binary files /dev/null and b/src/assets/images/flags/png/nz.png differ diff --git a/src/assets/images/flags/png/om.png b/src/assets/images/flags/png/om.png new file mode 100644 index 0000000..05e2c82 Binary files /dev/null and b/src/assets/images/flags/png/om.png differ diff --git a/src/assets/images/flags/png/pa.png b/src/assets/images/flags/png/pa.png new file mode 100644 index 0000000..6e4d324 Binary files /dev/null and b/src/assets/images/flags/png/pa.png differ diff --git a/src/assets/images/flags/png/pe.png b/src/assets/images/flags/png/pe.png new file mode 100644 index 0000000..802a4d5 Binary files /dev/null and b/src/assets/images/flags/png/pe.png differ diff --git a/src/assets/images/flags/png/pf.png b/src/assets/images/flags/png/pf.png new file mode 100644 index 0000000..b140046 Binary files /dev/null and b/src/assets/images/flags/png/pf.png differ diff --git a/src/assets/images/flags/png/pg.png b/src/assets/images/flags/png/pg.png new file mode 100644 index 0000000..af6d22d Binary files /dev/null and b/src/assets/images/flags/png/pg.png differ diff --git a/src/assets/images/flags/png/ph.png b/src/assets/images/flags/png/ph.png new file mode 100644 index 0000000..f458934 Binary files /dev/null and b/src/assets/images/flags/png/ph.png differ diff --git a/src/assets/images/flags/png/pk.png b/src/assets/images/flags/png/pk.png new file mode 100644 index 0000000..108e78e Binary files /dev/null and b/src/assets/images/flags/png/pk.png differ diff --git a/src/assets/images/flags/png/pl.png b/src/assets/images/flags/png/pl.png new file mode 100644 index 0000000..b9d7416 Binary files /dev/null and b/src/assets/images/flags/png/pl.png differ diff --git a/src/assets/images/flags/png/pm.png b/src/assets/images/flags/png/pm.png new file mode 100644 index 0000000..2c8e555 Binary files /dev/null and b/src/assets/images/flags/png/pm.png differ diff --git a/src/assets/images/flags/png/pn.png b/src/assets/images/flags/png/pn.png new file mode 100644 index 0000000..bcc7970 Binary files /dev/null and b/src/assets/images/flags/png/pn.png differ diff --git a/src/assets/images/flags/png/pr.png b/src/assets/images/flags/png/pr.png new file mode 100644 index 0000000..c96e7d5 Binary files /dev/null and b/src/assets/images/flags/png/pr.png differ diff --git a/src/assets/images/flags/png/ps.png b/src/assets/images/flags/png/ps.png new file mode 100644 index 0000000..a52e938 Binary files /dev/null and b/src/assets/images/flags/png/ps.png differ diff --git a/src/assets/images/flags/png/pt.png b/src/assets/images/flags/png/pt.png new file mode 100644 index 0000000..04bf96a Binary files /dev/null and b/src/assets/images/flags/png/pt.png differ diff --git a/src/assets/images/flags/png/pw.png b/src/assets/images/flags/png/pw.png new file mode 100644 index 0000000..fc08283 Binary files /dev/null and b/src/assets/images/flags/png/pw.png differ diff --git a/src/assets/images/flags/png/py.png b/src/assets/images/flags/png/py.png new file mode 100644 index 0000000..3241b09 Binary files /dev/null and b/src/assets/images/flags/png/py.png differ diff --git a/src/assets/images/flags/png/qa.png b/src/assets/images/flags/png/qa.png new file mode 100644 index 0000000..5889780 Binary files /dev/null and b/src/assets/images/flags/png/qa.png differ diff --git a/src/assets/images/flags/png/re.png b/src/assets/images/flags/png/re.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/src/assets/images/flags/png/re.png differ diff --git a/src/assets/images/flags/png/ro.png b/src/assets/images/flags/png/ro.png new file mode 100644 index 0000000..7690afb Binary files /dev/null and b/src/assets/images/flags/png/ro.png differ diff --git a/src/assets/images/flags/png/rs.png b/src/assets/images/flags/png/rs.png new file mode 100644 index 0000000..c7ebc16 Binary files /dev/null and b/src/assets/images/flags/png/rs.png differ diff --git a/src/assets/images/flags/png/ru.png b/src/assets/images/flags/png/ru.png new file mode 100644 index 0000000..1ed5b2e Binary files /dev/null and b/src/assets/images/flags/png/ru.png differ diff --git a/src/assets/images/flags/png/rw.png b/src/assets/images/flags/png/rw.png new file mode 100644 index 0000000..a79830e Binary files /dev/null and b/src/assets/images/flags/png/rw.png differ diff --git a/src/assets/images/flags/png/sa.png b/src/assets/images/flags/png/sa.png new file mode 100644 index 0000000..3f63c4d Binary files /dev/null and b/src/assets/images/flags/png/sa.png differ diff --git a/src/assets/images/flags/png/sb.png b/src/assets/images/flags/png/sb.png new file mode 100644 index 0000000..e4d4ae6 Binary files /dev/null and b/src/assets/images/flags/png/sb.png differ diff --git a/src/assets/images/flags/png/sc.png b/src/assets/images/flags/png/sc.png new file mode 100644 index 0000000..45278bf Binary files /dev/null and b/src/assets/images/flags/png/sc.png differ diff --git a/src/assets/images/flags/png/sd.png b/src/assets/images/flags/png/sd.png new file mode 100644 index 0000000..2b6f167 Binary files /dev/null and b/src/assets/images/flags/png/sd.png differ diff --git a/src/assets/images/flags/png/se.png b/src/assets/images/flags/png/se.png new file mode 100644 index 0000000..9a467cd Binary files /dev/null and b/src/assets/images/flags/png/se.png differ diff --git a/src/assets/images/flags/png/sg.png b/src/assets/images/flags/png/sg.png new file mode 100644 index 0000000..713c485 Binary files /dev/null and b/src/assets/images/flags/png/sg.png differ diff --git a/src/assets/images/flags/png/sh.png b/src/assets/images/flags/png/sh.png new file mode 100644 index 0000000..fe689b5 Binary files /dev/null and b/src/assets/images/flags/png/sh.png differ diff --git a/src/assets/images/flags/png/si.png b/src/assets/images/flags/png/si.png new file mode 100644 index 0000000..8b1dcd0 Binary files /dev/null and b/src/assets/images/flags/png/si.png differ diff --git a/src/assets/images/flags/png/sj.png b/src/assets/images/flags/png/sj.png new file mode 100644 index 0000000..879d0ce Binary files /dev/null and b/src/assets/images/flags/png/sj.png differ diff --git a/src/assets/images/flags/png/sk.png b/src/assets/images/flags/png/sk.png new file mode 100644 index 0000000..1d608c8 Binary files /dev/null and b/src/assets/images/flags/png/sk.png differ diff --git a/src/assets/images/flags/png/sl.png b/src/assets/images/flags/png/sl.png new file mode 100644 index 0000000..7354855 Binary files /dev/null and b/src/assets/images/flags/png/sl.png differ diff --git a/src/assets/images/flags/png/sm.png b/src/assets/images/flags/png/sm.png new file mode 100644 index 0000000..7f75ad5 Binary files /dev/null and b/src/assets/images/flags/png/sm.png differ diff --git a/src/assets/images/flags/png/sn.png b/src/assets/images/flags/png/sn.png new file mode 100644 index 0000000..95047e0 Binary files /dev/null and b/src/assets/images/flags/png/sn.png differ diff --git a/src/assets/images/flags/png/so.png b/src/assets/images/flags/png/so.png new file mode 100644 index 0000000..e28dd32 Binary files /dev/null and b/src/assets/images/flags/png/so.png differ diff --git a/src/assets/images/flags/png/sr.png b/src/assets/images/flags/png/sr.png new file mode 100644 index 0000000..cd72494 Binary files /dev/null and b/src/assets/images/flags/png/sr.png differ diff --git a/src/assets/images/flags/png/ss.png b/src/assets/images/flags/png/ss.png new file mode 100644 index 0000000..2995edd Binary files /dev/null and b/src/assets/images/flags/png/ss.png differ diff --git a/src/assets/images/flags/png/st.png b/src/assets/images/flags/png/st.png new file mode 100644 index 0000000..adda2e5 Binary files /dev/null and b/src/assets/images/flags/png/st.png differ diff --git a/src/assets/images/flags/png/sv.png b/src/assets/images/flags/png/sv.png new file mode 100644 index 0000000..252eb31 Binary files /dev/null and b/src/assets/images/flags/png/sv.png differ diff --git a/src/assets/images/flags/png/sx.png b/src/assets/images/flags/png/sx.png new file mode 100644 index 0000000..ff8fc64 Binary files /dev/null and b/src/assets/images/flags/png/sx.png differ diff --git a/src/assets/images/flags/png/sy.png b/src/assets/images/flags/png/sy.png new file mode 100644 index 0000000..c344852 Binary files /dev/null and b/src/assets/images/flags/png/sy.png differ diff --git a/src/assets/images/flags/png/sz.png b/src/assets/images/flags/png/sz.png new file mode 100644 index 0000000..1301068 Binary files /dev/null and b/src/assets/images/flags/png/sz.png differ diff --git a/src/assets/images/flags/png/tc.png b/src/assets/images/flags/png/tc.png new file mode 100644 index 0000000..108b7ed Binary files /dev/null and b/src/assets/images/flags/png/tc.png differ diff --git a/src/assets/images/flags/png/td.png b/src/assets/images/flags/png/td.png new file mode 100644 index 0000000..73b91d7 Binary files /dev/null and b/src/assets/images/flags/png/td.png differ diff --git a/src/assets/images/flags/png/tf.png b/src/assets/images/flags/png/tf.png new file mode 100644 index 0000000..05e58e1 Binary files /dev/null and b/src/assets/images/flags/png/tf.png differ diff --git a/src/assets/images/flags/png/tg.png b/src/assets/images/flags/png/tg.png new file mode 100644 index 0000000..0905991 Binary files /dev/null and b/src/assets/images/flags/png/tg.png differ diff --git a/src/assets/images/flags/png/th.png b/src/assets/images/flags/png/th.png new file mode 100644 index 0000000..1868ecd Binary files /dev/null and b/src/assets/images/flags/png/th.png differ diff --git a/src/assets/images/flags/png/tj.png b/src/assets/images/flags/png/tj.png new file mode 100644 index 0000000..a68b169 Binary files /dev/null and b/src/assets/images/flags/png/tj.png differ diff --git a/src/assets/images/flags/png/tk.png b/src/assets/images/flags/png/tk.png new file mode 100644 index 0000000..0b6ab1b Binary files /dev/null and b/src/assets/images/flags/png/tk.png differ diff --git a/src/assets/images/flags/png/tl.png b/src/assets/images/flags/png/tl.png new file mode 100644 index 0000000..9e601ef Binary files /dev/null and b/src/assets/images/flags/png/tl.png differ diff --git a/src/assets/images/flags/png/tm.png b/src/assets/images/flags/png/tm.png new file mode 100644 index 0000000..a4323ce Binary files /dev/null and b/src/assets/images/flags/png/tm.png differ diff --git a/src/assets/images/flags/png/tn.png b/src/assets/images/flags/png/tn.png new file mode 100644 index 0000000..6c46b4b Binary files /dev/null and b/src/assets/images/flags/png/tn.png differ diff --git a/src/assets/images/flags/png/to.png b/src/assets/images/flags/png/to.png new file mode 100644 index 0000000..8c3c8ff Binary files /dev/null and b/src/assets/images/flags/png/to.png differ diff --git a/src/assets/images/flags/png/tr.png b/src/assets/images/flags/png/tr.png new file mode 100644 index 0000000..135867a Binary files /dev/null and b/src/assets/images/flags/png/tr.png differ diff --git a/src/assets/images/flags/png/tt.png b/src/assets/images/flags/png/tt.png new file mode 100644 index 0000000..e1a3ae6 Binary files /dev/null and b/src/assets/images/flags/png/tt.png differ diff --git a/src/assets/images/flags/png/tv.png b/src/assets/images/flags/png/tv.png new file mode 100644 index 0000000..14454fe Binary files /dev/null and b/src/assets/images/flags/png/tv.png differ diff --git a/src/assets/images/flags/png/tw.png b/src/assets/images/flags/png/tw.png new file mode 100644 index 0000000..d6af318 Binary files /dev/null and b/src/assets/images/flags/png/tw.png differ diff --git a/src/assets/images/flags/png/tz.png b/src/assets/images/flags/png/tz.png new file mode 100644 index 0000000..48d8210 Binary files /dev/null and b/src/assets/images/flags/png/tz.png differ diff --git a/src/assets/images/flags/png/ua.png b/src/assets/images/flags/png/ua.png new file mode 100644 index 0000000..1deb016 Binary files /dev/null and b/src/assets/images/flags/png/ua.png differ diff --git a/src/assets/images/flags/png/ug.png b/src/assets/images/flags/png/ug.png new file mode 100644 index 0000000..a65c280 Binary files /dev/null and b/src/assets/images/flags/png/ug.png differ diff --git a/src/assets/images/flags/png/um.png b/src/assets/images/flags/png/um.png new file mode 100644 index 0000000..11718d0 Binary files /dev/null and b/src/assets/images/flags/png/um.png differ diff --git a/src/assets/images/flags/png/us-ca.png b/src/assets/images/flags/png/us-ca.png new file mode 100644 index 0000000..f522839 Binary files /dev/null and b/src/assets/images/flags/png/us-ca.png differ diff --git a/src/assets/images/flags/png/us.png b/src/assets/images/flags/png/us.png new file mode 100644 index 0000000..11718d0 Binary files /dev/null and b/src/assets/images/flags/png/us.png differ diff --git a/src/assets/images/flags/png/uy.png b/src/assets/images/flags/png/uy.png new file mode 100644 index 0000000..94bbf22 Binary files /dev/null and b/src/assets/images/flags/png/uy.png differ diff --git a/src/assets/images/flags/png/uz.png b/src/assets/images/flags/png/uz.png new file mode 100644 index 0000000..d5beb2e Binary files /dev/null and b/src/assets/images/flags/png/uz.png differ diff --git a/src/assets/images/flags/png/va.png b/src/assets/images/flags/png/va.png new file mode 100644 index 0000000..898f45a Binary files /dev/null and b/src/assets/images/flags/png/va.png differ diff --git a/src/assets/images/flags/png/vc.png b/src/assets/images/flags/png/vc.png new file mode 100644 index 0000000..1c62a4d Binary files /dev/null and b/src/assets/images/flags/png/vc.png differ diff --git a/src/assets/images/flags/png/ve.png b/src/assets/images/flags/png/ve.png new file mode 100644 index 0000000..86577d7 Binary files /dev/null and b/src/assets/images/flags/png/ve.png differ diff --git a/src/assets/images/flags/png/vg.png b/src/assets/images/flags/png/vg.png new file mode 100644 index 0000000..e0a8c6d Binary files /dev/null and b/src/assets/images/flags/png/vg.png differ diff --git a/src/assets/images/flags/png/vi.png b/src/assets/images/flags/png/vi.png new file mode 100644 index 0000000..d4317ef Binary files /dev/null and b/src/assets/images/flags/png/vi.png differ diff --git a/src/assets/images/flags/png/vn.png b/src/assets/images/flags/png/vn.png new file mode 100644 index 0000000..309e610 Binary files /dev/null and b/src/assets/images/flags/png/vn.png differ diff --git a/src/assets/images/flags/png/vu.png b/src/assets/images/flags/png/vu.png new file mode 100644 index 0000000..513a355 Binary files /dev/null and b/src/assets/images/flags/png/vu.png differ diff --git a/src/assets/images/flags/png/wf.png b/src/assets/images/flags/png/wf.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/src/assets/images/flags/png/wf.png differ diff --git a/src/assets/images/flags/png/ws.png b/src/assets/images/flags/png/ws.png new file mode 100644 index 0000000..3d51ad7 Binary files /dev/null and b/src/assets/images/flags/png/ws.png differ diff --git a/src/assets/images/flags/png/xk.png b/src/assets/images/flags/png/xk.png new file mode 100644 index 0000000..9ff8b22 Binary files /dev/null and b/src/assets/images/flags/png/xk.png differ diff --git a/src/assets/images/flags/png/ye.png b/src/assets/images/flags/png/ye.png new file mode 100644 index 0000000..7e3cf7c Binary files /dev/null and b/src/assets/images/flags/png/ye.png differ diff --git a/src/assets/images/flags/png/yt.png b/src/assets/images/flags/png/yt.png new file mode 100644 index 0000000..a352c22 Binary files /dev/null and b/src/assets/images/flags/png/yt.png differ diff --git a/src/assets/images/flags/png/za.png b/src/assets/images/flags/png/za.png new file mode 100644 index 0000000..5355e89 Binary files /dev/null and b/src/assets/images/flags/png/za.png differ diff --git a/src/assets/images/flags/png/zm.png b/src/assets/images/flags/png/zm.png new file mode 100644 index 0000000..74d7a60 Binary files /dev/null and b/src/assets/images/flags/png/zm.png differ diff --git a/src/assets/images/flags/png/zw.png b/src/assets/images/flags/png/zw.png new file mode 100644 index 0000000..e57bd7d Binary files /dev/null and b/src/assets/images/flags/png/zw.png differ diff --git a/src/assets/images/flags/svg/ad.svg b/src/assets/images/flags/svg/ad.svg new file mode 100644 index 0000000..7320bf2 --- /dev/null +++ b/src/assets/images/flags/svg/ad.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ae.svg b/src/assets/images/flags/svg/ae.svg new file mode 100644 index 0000000..a7bdb17 --- /dev/null +++ b/src/assets/images/flags/svg/ae.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/af.svg b/src/assets/images/flags/svg/af.svg new file mode 100644 index 0000000..399c1c7 --- /dev/null +++ b/src/assets/images/flags/svg/af.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ag.svg b/src/assets/images/flags/svg/ag.svg new file mode 100644 index 0000000..bdeee48 --- /dev/null +++ b/src/assets/images/flags/svg/ag.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ai.svg b/src/assets/images/flags/svg/ai.svg new file mode 100644 index 0000000..29e6586 --- /dev/null +++ b/src/assets/images/flags/svg/ai.svg @@ -0,0 +1,763 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/al.svg b/src/assets/images/flags/svg/al.svg new file mode 100644 index 0000000..e831b02 --- /dev/null +++ b/src/assets/images/flags/svg/al.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/am.svg b/src/assets/images/flags/svg/am.svg new file mode 100644 index 0000000..0cd2178 --- /dev/null +++ b/src/assets/images/flags/svg/am.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/ao.svg b/src/assets/images/flags/svg/ao.svg new file mode 100644 index 0000000..a0b6dbb --- /dev/null +++ b/src/assets/images/flags/svg/ao.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/aq.svg b/src/assets/images/flags/svg/aq.svg new file mode 100644 index 0000000..2000e3c --- /dev/null +++ b/src/assets/images/flags/svg/aq.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/ar.svg b/src/assets/images/flags/svg/ar.svg new file mode 100644 index 0000000..4553b08 --- /dev/null +++ b/src/assets/images/flags/svg/ar.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/as.svg b/src/assets/images/flags/svg/as.svg new file mode 100644 index 0000000..81b0d9f --- /dev/null +++ b/src/assets/images/flags/svg/as.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/at.svg b/src/assets/images/flags/svg/at.svg new file mode 100644 index 0000000..e63fb2e --- /dev/null +++ b/src/assets/images/flags/svg/at.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/au.svg b/src/assets/images/flags/svg/au.svg new file mode 100644 index 0000000..18394ab --- /dev/null +++ b/src/assets/images/flags/svg/au.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/aw.svg b/src/assets/images/flags/svg/aw.svg new file mode 100644 index 0000000..66adb11 --- /dev/null +++ b/src/assets/images/flags/svg/aw.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ax.svg b/src/assets/images/flags/svg/ax.svg new file mode 100644 index 0000000..dad7d94 --- /dev/null +++ b/src/assets/images/flags/svg/ax.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/az.svg b/src/assets/images/flags/svg/az.svg new file mode 100644 index 0000000..4293e9f --- /dev/null +++ b/src/assets/images/flags/svg/az.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/flags/svg/ba.svg b/src/assets/images/flags/svg/ba.svg new file mode 100644 index 0000000..6402c10 --- /dev/null +++ b/src/assets/images/flags/svg/ba.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bb.svg b/src/assets/images/flags/svg/bb.svg new file mode 100644 index 0000000..73f5329 --- /dev/null +++ b/src/assets/images/flags/svg/bb.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/bd.svg b/src/assets/images/flags/svg/bd.svg new file mode 100644 index 0000000..1e3433e --- /dev/null +++ b/src/assets/images/flags/svg/bd.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/flags/svg/be.svg b/src/assets/images/flags/svg/be.svg new file mode 100644 index 0000000..eaf016d --- /dev/null +++ b/src/assets/images/flags/svg/be.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/bf.svg b/src/assets/images/flags/svg/bf.svg new file mode 100644 index 0000000..c92cce6 --- /dev/null +++ b/src/assets/images/flags/svg/bf.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/bg.svg b/src/assets/images/flags/svg/bg.svg new file mode 100644 index 0000000..15ba696 --- /dev/null +++ b/src/assets/images/flags/svg/bg.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/bh.svg b/src/assets/images/flags/svg/bh.svg new file mode 100644 index 0000000..d4a32c0 --- /dev/null +++ b/src/assets/images/flags/svg/bh.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/bi.svg b/src/assets/images/flags/svg/bi.svg new file mode 100644 index 0000000..091f2df --- /dev/null +++ b/src/assets/images/flags/svg/bi.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bj.svg b/src/assets/images/flags/svg/bj.svg new file mode 100644 index 0000000..fa0df27 --- /dev/null +++ b/src/assets/images/flags/svg/bj.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bl.svg b/src/assets/images/flags/svg/bl.svg new file mode 100644 index 0000000..ecf6ec4 --- /dev/null +++ b/src/assets/images/flags/svg/bl.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/bm.svg b/src/assets/images/flags/svg/bm.svg new file mode 100644 index 0000000..5e2c873 --- /dev/null +++ b/src/assets/images/flags/svg/bm.svg @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bn.svg b/src/assets/images/flags/svg/bn.svg new file mode 100644 index 0000000..ab6678f --- /dev/null +++ b/src/assets/images/flags/svg/bn.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bo.svg b/src/assets/images/flags/svg/bo.svg new file mode 100644 index 0000000..8e1d952 --- /dev/null +++ b/src/assets/images/flags/svg/bo.svg @@ -0,0 +1,676 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bq.svg b/src/assets/images/flags/svg/bq.svg new file mode 100644 index 0000000..4b74eb4 --- /dev/null +++ b/src/assets/images/flags/svg/bq.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/br.svg b/src/assets/images/flags/svg/br.svg new file mode 100644 index 0000000..3252a8e --- /dev/null +++ b/src/assets/images/flags/svg/br.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bs.svg b/src/assets/images/flags/svg/bs.svg new file mode 100644 index 0000000..a14500b --- /dev/null +++ b/src/assets/images/flags/svg/bs.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bt.svg b/src/assets/images/flags/svg/bt.svg new file mode 100644 index 0000000..f4b6e63 --- /dev/null +++ b/src/assets/images/flags/svg/bt.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bv.svg b/src/assets/images/flags/svg/bv.svg new file mode 100644 index 0000000..71d098a --- /dev/null +++ b/src/assets/images/flags/svg/bv.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bw.svg b/src/assets/images/flags/svg/bw.svg new file mode 100644 index 0000000..3d65eda --- /dev/null +++ b/src/assets/images/flags/svg/bw.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/by.svg b/src/assets/images/flags/svg/by.svg new file mode 100644 index 0000000..9566c6a --- /dev/null +++ b/src/assets/images/flags/svg/by.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/bz.svg b/src/assets/images/flags/svg/bz.svg new file mode 100644 index 0000000..6824957 --- /dev/null +++ b/src/assets/images/flags/svg/bz.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ca.svg b/src/assets/images/flags/svg/ca.svg new file mode 100644 index 0000000..4843fc3 --- /dev/null +++ b/src/assets/images/flags/svg/ca.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/flags/svg/cc.svg b/src/assets/images/flags/svg/cc.svg new file mode 100644 index 0000000..2c45698 --- /dev/null +++ b/src/assets/images/flags/svg/cc.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/cd.svg b/src/assets/images/flags/svg/cd.svg new file mode 100644 index 0000000..739fab7 --- /dev/null +++ b/src/assets/images/flags/svg/cd.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/cf.svg b/src/assets/images/flags/svg/cf.svg new file mode 100644 index 0000000..9f19138 --- /dev/null +++ b/src/assets/images/flags/svg/cf.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/cg.svg b/src/assets/images/flags/svg/cg.svg new file mode 100644 index 0000000..8b66be2 --- /dev/null +++ b/src/assets/images/flags/svg/cg.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ch.svg b/src/assets/images/flags/svg/ch.svg new file mode 100644 index 0000000..f5ec8d4 --- /dev/null +++ b/src/assets/images/flags/svg/ch.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/ci.svg b/src/assets/images/flags/svg/ci.svg new file mode 100644 index 0000000..2bd7104 --- /dev/null +++ b/src/assets/images/flags/svg/ci.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/ck.svg b/src/assets/images/flags/svg/ck.svg new file mode 100644 index 0000000..e4f0d0c --- /dev/null +++ b/src/assets/images/flags/svg/ck.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/cl.svg b/src/assets/images/flags/svg/cl.svg new file mode 100644 index 0000000..287a37e --- /dev/null +++ b/src/assets/images/flags/svg/cl.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/cm.svg b/src/assets/images/flags/svg/cm.svg new file mode 100644 index 0000000..b4272b7 --- /dev/null +++ b/src/assets/images/flags/svg/cm.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/cn.svg b/src/assets/images/flags/svg/cn.svg new file mode 100644 index 0000000..72080b6 --- /dev/null +++ b/src/assets/images/flags/svg/cn.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/co.svg b/src/assets/images/flags/svg/co.svg new file mode 100644 index 0000000..0d74127 --- /dev/null +++ b/src/assets/images/flags/svg/co.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/cr.svg b/src/assets/images/flags/svg/cr.svg new file mode 100644 index 0000000..133b029 --- /dev/null +++ b/src/assets/images/flags/svg/cr.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/cu.svg b/src/assets/images/flags/svg/cu.svg new file mode 100644 index 0000000..079a29b --- /dev/null +++ b/src/assets/images/flags/svg/cu.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/cv.svg b/src/assets/images/flags/svg/cv.svg new file mode 100644 index 0000000..39a7b7e --- /dev/null +++ b/src/assets/images/flags/svg/cv.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/cw.svg b/src/assets/images/flags/svg/cw.svg new file mode 100644 index 0000000..533644d --- /dev/null +++ b/src/assets/images/flags/svg/cw.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/cx.svg b/src/assets/images/flags/svg/cx.svg new file mode 100644 index 0000000..f5b89b7 --- /dev/null +++ b/src/assets/images/flags/svg/cx.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/cy.svg b/src/assets/images/flags/svg/cy.svg new file mode 100644 index 0000000..3d483a1 --- /dev/null +++ b/src/assets/images/flags/svg/cy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/cz.svg b/src/assets/images/flags/svg/cz.svg new file mode 100644 index 0000000..8767581 --- /dev/null +++ b/src/assets/images/flags/svg/cz.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/de.svg b/src/assets/images/flags/svg/de.svg new file mode 100644 index 0000000..1acf302 --- /dev/null +++ b/src/assets/images/flags/svg/de.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/dj.svg b/src/assets/images/flags/svg/dj.svg new file mode 100644 index 0000000..f328f3a --- /dev/null +++ b/src/assets/images/flags/svg/dj.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/dk.svg b/src/assets/images/flags/svg/dk.svg new file mode 100644 index 0000000..ab47e0c --- /dev/null +++ b/src/assets/images/flags/svg/dk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/dm.svg b/src/assets/images/flags/svg/dm.svg new file mode 100644 index 0000000..e35d7ca --- /dev/null +++ b/src/assets/images/flags/svg/dm.svg @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/do.svg b/src/assets/images/flags/svg/do.svg new file mode 100644 index 0000000..97bae5f --- /dev/null +++ b/src/assets/images/flags/svg/do.svg @@ -0,0 +1,6745 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/dz.svg b/src/assets/images/flags/svg/dz.svg new file mode 100644 index 0000000..aa4eca2 --- /dev/null +++ b/src/assets/images/flags/svg/dz.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/ec.svg b/src/assets/images/flags/svg/ec.svg new file mode 100644 index 0000000..42fbef5 --- /dev/null +++ b/src/assets/images/flags/svg/ec.svg @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ee.svg b/src/assets/images/flags/svg/ee.svg new file mode 100644 index 0000000..aa917bb --- /dev/null +++ b/src/assets/images/flags/svg/ee.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/eg.svg b/src/assets/images/flags/svg/eg.svg new file mode 100644 index 0000000..a755cd7 --- /dev/null +++ b/src/assets/images/flags/svg/eg.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/eh.svg b/src/assets/images/flags/svg/eh.svg new file mode 100644 index 0000000..438c382 --- /dev/null +++ b/src/assets/images/flags/svg/eh.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/er.svg b/src/assets/images/flags/svg/er.svg new file mode 100644 index 0000000..7a25798 --- /dev/null +++ b/src/assets/images/flags/svg/er.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/flags/svg/es-ct.svg b/src/assets/images/flags/svg/es-ct.svg new file mode 100644 index 0000000..9b07e7a --- /dev/null +++ b/src/assets/images/flags/svg/es-ct.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/flags/svg/es-ga.svg b/src/assets/images/flags/svg/es-ga.svg new file mode 100644 index 0000000..4e213f5 --- /dev/null +++ b/src/assets/images/flags/svg/es-ga.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/es.svg b/src/assets/images/flags/svg/es.svg new file mode 100644 index 0000000..576dd67 --- /dev/null +++ b/src/assets/images/flags/svg/es.svg @@ -0,0 +1,544 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/et.svg b/src/assets/images/flags/svg/et.svg new file mode 100644 index 0000000..9145fd7 --- /dev/null +++ b/src/assets/images/flags/svg/et.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/eu.svg b/src/assets/images/flags/svg/eu.svg new file mode 100644 index 0000000..b6a39f5 --- /dev/null +++ b/src/assets/images/flags/svg/eu.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/fi.svg b/src/assets/images/flags/svg/fi.svg new file mode 100644 index 0000000..c3451a4 --- /dev/null +++ b/src/assets/images/flags/svg/fi.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/fj.svg b/src/assets/images/flags/svg/fj.svg new file mode 100644 index 0000000..c7549b5 --- /dev/null +++ b/src/assets/images/flags/svg/fj.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/fk.svg b/src/assets/images/flags/svg/fk.svg new file mode 100644 index 0000000..28ad702 --- /dev/null +++ b/src/assets/images/flags/svg/fk.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/fm.svg b/src/assets/images/flags/svg/fm.svg new file mode 100644 index 0000000..54f3e77 --- /dev/null +++ b/src/assets/images/flags/svg/fm.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/fo.svg b/src/assets/images/flags/svg/fo.svg new file mode 100644 index 0000000..341d52e --- /dev/null +++ b/src/assets/images/flags/svg/fo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/fr.svg b/src/assets/images/flags/svg/fr.svg new file mode 100644 index 0000000..712c8a5 --- /dev/null +++ b/src/assets/images/flags/svg/fr.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/ga.svg b/src/assets/images/flags/svg/ga.svg new file mode 100644 index 0000000..1f0a9ca --- /dev/null +++ b/src/assets/images/flags/svg/ga.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/gb-eng.svg b/src/assets/images/flags/svg/gb-eng.svg new file mode 100644 index 0000000..eab52bd --- /dev/null +++ b/src/assets/images/flags/svg/gb-eng.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/gb-nir.svg b/src/assets/images/flags/svg/gb-nir.svg new file mode 100644 index 0000000..e043b3e --- /dev/null +++ b/src/assets/images/flags/svg/gb-nir.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/gb-sct.svg b/src/assets/images/flags/svg/gb-sct.svg new file mode 100644 index 0000000..169bfba --- /dev/null +++ b/src/assets/images/flags/svg/gb-sct.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/flags/svg/gb-wls.svg b/src/assets/images/flags/svg/gb-wls.svg new file mode 100644 index 0000000..48a6420 --- /dev/null +++ b/src/assets/images/flags/svg/gb-wls.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/gb.svg b/src/assets/images/flags/svg/gb.svg new file mode 100644 index 0000000..132dbed --- /dev/null +++ b/src/assets/images/flags/svg/gb.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/gd.svg b/src/assets/images/flags/svg/gd.svg new file mode 100644 index 0000000..f2254f3 --- /dev/null +++ b/src/assets/images/flags/svg/gd.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ge.svg b/src/assets/images/flags/svg/ge.svg new file mode 100644 index 0000000..8abdee3 --- /dev/null +++ b/src/assets/images/flags/svg/ge.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/gf.svg b/src/assets/images/flags/svg/gf.svg new file mode 100644 index 0000000..e382883 --- /dev/null +++ b/src/assets/images/flags/svg/gf.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/gg.svg b/src/assets/images/flags/svg/gg.svg new file mode 100644 index 0000000..deb4af5 --- /dev/null +++ b/src/assets/images/flags/svg/gg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/gh.svg b/src/assets/images/flags/svg/gh.svg new file mode 100644 index 0000000..3f97834 --- /dev/null +++ b/src/assets/images/flags/svg/gh.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/gi.svg b/src/assets/images/flags/svg/gi.svg new file mode 100644 index 0000000..1b44fd6 --- /dev/null +++ b/src/assets/images/flags/svg/gi.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/gl.svg b/src/assets/images/flags/svg/gl.svg new file mode 100644 index 0000000..20f5c5e --- /dev/null +++ b/src/assets/images/flags/svg/gl.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/flags/svg/gm.svg b/src/assets/images/flags/svg/gm.svg new file mode 100644 index 0000000..76d03af --- /dev/null +++ b/src/assets/images/flags/svg/gm.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/gn.svg b/src/assets/images/flags/svg/gn.svg new file mode 100644 index 0000000..7841e8d --- /dev/null +++ b/src/assets/images/flags/svg/gn.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/gp.svg b/src/assets/images/flags/svg/gp.svg new file mode 100644 index 0000000..24a8260 --- /dev/null +++ b/src/assets/images/flags/svg/gp.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/gq.svg b/src/assets/images/flags/svg/gq.svg new file mode 100644 index 0000000..4cec1a5 --- /dev/null +++ b/src/assets/images/flags/svg/gq.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/gr.svg b/src/assets/images/flags/svg/gr.svg new file mode 100644 index 0000000..581af28 --- /dev/null +++ b/src/assets/images/flags/svg/gr.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/gs.svg b/src/assets/images/flags/svg/gs.svg new file mode 100644 index 0000000..6833555 --- /dev/null +++ b/src/assets/images/flags/svg/gs.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + L + + + E + + + O + + + T + + + E + + + R + + + R + + + R + + + R + + + R + + + E + + + O + + + O + + + A + + + A + + + A + + + M + + + P + + + P + + + P + + + I + + + T + + + T + + + M + + + G + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/gt.svg b/src/assets/images/flags/svg/gt.svg new file mode 100644 index 0000000..724e970 --- /dev/null +++ b/src/assets/images/flags/svg/gt.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/gu.svg b/src/assets/images/flags/svg/gu.svg new file mode 100644 index 0000000..00e8615 --- /dev/null +++ b/src/assets/images/flags/svg/gu.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + G + + + U + + + A + + + M + + + + + + + + G + + + U + + + A + + + M + + diff --git a/src/assets/images/flags/svg/gw.svg b/src/assets/images/flags/svg/gw.svg new file mode 100644 index 0000000..ae17314 --- /dev/null +++ b/src/assets/images/flags/svg/gw.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/gy.svg b/src/assets/images/flags/svg/gy.svg new file mode 100644 index 0000000..e957f3e --- /dev/null +++ b/src/assets/images/flags/svg/gy.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/hk.svg b/src/assets/images/flags/svg/hk.svg new file mode 100644 index 0000000..9e45292 --- /dev/null +++ b/src/assets/images/flags/svg/hk.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/hm.svg b/src/assets/images/flags/svg/hm.svg new file mode 100644 index 0000000..a9dda07 --- /dev/null +++ b/src/assets/images/flags/svg/hm.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/hn.svg b/src/assets/images/flags/svg/hn.svg new file mode 100644 index 0000000..47af518 --- /dev/null +++ b/src/assets/images/flags/svg/hn.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/hr.svg b/src/assets/images/flags/svg/hr.svg new file mode 100644 index 0000000..7b699d3 --- /dev/null +++ b/src/assets/images/flags/svg/hr.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ht.svg b/src/assets/images/flags/svg/ht.svg new file mode 100644 index 0000000..14f67d7 --- /dev/null +++ b/src/assets/images/flags/svg/ht.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/hu.svg b/src/assets/images/flags/svg/hu.svg new file mode 100644 index 0000000..177da97 --- /dev/null +++ b/src/assets/images/flags/svg/hu.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/id.svg b/src/assets/images/flags/svg/id.svg new file mode 100644 index 0000000..0663baf --- /dev/null +++ b/src/assets/images/flags/svg/id.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/ie.svg b/src/assets/images/flags/svg/ie.svg new file mode 100644 index 0000000..53f3464 --- /dev/null +++ b/src/assets/images/flags/svg/ie.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/il.svg b/src/assets/images/flags/svg/il.svg new file mode 100644 index 0000000..fc10b47 --- /dev/null +++ b/src/assets/images/flags/svg/il.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/im.svg b/src/assets/images/flags/svg/im.svg new file mode 100644 index 0000000..31b2222 --- /dev/null +++ b/src/assets/images/flags/svg/im.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/in.svg b/src/assets/images/flags/svg/in.svg new file mode 100644 index 0000000..6b831bc --- /dev/null +++ b/src/assets/images/flags/svg/in.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/io.svg b/src/assets/images/flags/svg/io.svg new file mode 100644 index 0000000..d6e5854 --- /dev/null +++ b/src/assets/images/flags/svg/io.svg @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/iq.svg b/src/assets/images/flags/svg/iq.svg new file mode 100644 index 0000000..ab90fd0 --- /dev/null +++ b/src/assets/images/flags/svg/iq.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ir.svg b/src/assets/images/flags/svg/ir.svg new file mode 100644 index 0000000..ffb37b4 --- /dev/null +++ b/src/assets/images/flags/svg/ir.svg @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/is.svg b/src/assets/images/flags/svg/is.svg new file mode 100644 index 0000000..a7524b5 --- /dev/null +++ b/src/assets/images/flags/svg/is.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/it.svg b/src/assets/images/flags/svg/it.svg new file mode 100644 index 0000000..5cb92aa --- /dev/null +++ b/src/assets/images/flags/svg/it.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/je.svg b/src/assets/images/flags/svg/je.svg new file mode 100644 index 0000000..d90f124 --- /dev/null +++ b/src/assets/images/flags/svg/je.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/jm.svg b/src/assets/images/flags/svg/jm.svg new file mode 100644 index 0000000..535daf4 --- /dev/null +++ b/src/assets/images/flags/svg/jm.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/flags/svg/jo.svg b/src/assets/images/flags/svg/jo.svg new file mode 100644 index 0000000..3a17678 --- /dev/null +++ b/src/assets/images/flags/svg/jo.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/jp.svg b/src/assets/images/flags/svg/jp.svg new file mode 100644 index 0000000..d415816 --- /dev/null +++ b/src/assets/images/flags/svg/jp.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ke.svg b/src/assets/images/flags/svg/ke.svg new file mode 100644 index 0000000..c1fd2d8 --- /dev/null +++ b/src/assets/images/flags/svg/ke.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/kg.svg b/src/assets/images/flags/svg/kg.svg new file mode 100644 index 0000000..936767b --- /dev/null +++ b/src/assets/images/flags/svg/kg.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/kh.svg b/src/assets/images/flags/svg/kh.svg new file mode 100644 index 0000000..7cd890a --- /dev/null +++ b/src/assets/images/flags/svg/kh.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ki.svg b/src/assets/images/flags/svg/ki.svg new file mode 100644 index 0000000..604890c --- /dev/null +++ b/src/assets/images/flags/svg/ki.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/km.svg b/src/assets/images/flags/svg/km.svg new file mode 100644 index 0000000..a6ccb8d --- /dev/null +++ b/src/assets/images/flags/svg/km.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/kn.svg b/src/assets/images/flags/svg/kn.svg new file mode 100644 index 0000000..d13066b --- /dev/null +++ b/src/assets/images/flags/svg/kn.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/kp.svg b/src/assets/images/flags/svg/kp.svg new file mode 100644 index 0000000..06b4e38 --- /dev/null +++ b/src/assets/images/flags/svg/kp.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/kr.svg b/src/assets/images/flags/svg/kr.svg new file mode 100644 index 0000000..39508cb --- /dev/null +++ b/src/assets/images/flags/svg/kr.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/kw.svg b/src/assets/images/flags/svg/kw.svg new file mode 100644 index 0000000..b4a4bf2 --- /dev/null +++ b/src/assets/images/flags/svg/kw.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ky.svg b/src/assets/images/flags/svg/ky.svg new file mode 100644 index 0000000..1a2d9c9 --- /dev/null +++ b/src/assets/images/flags/svg/ky.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/kz.svg b/src/assets/images/flags/svg/kz.svg new file mode 100644 index 0000000..049d6fd --- /dev/null +++ b/src/assets/images/flags/svg/kz.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/la.svg b/src/assets/images/flags/svg/la.svg new file mode 100644 index 0000000..a87bc98 --- /dev/null +++ b/src/assets/images/flags/svg/la.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/lb.svg b/src/assets/images/flags/svg/lb.svg new file mode 100644 index 0000000..0967842 --- /dev/null +++ b/src/assets/images/flags/svg/lb.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/lc.svg b/src/assets/images/flags/svg/lc.svg new file mode 100644 index 0000000..8ba746c --- /dev/null +++ b/src/assets/images/flags/svg/lc.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/flags/svg/li.svg b/src/assets/images/flags/svg/li.svg new file mode 100644 index 0000000..6b4160c --- /dev/null +++ b/src/assets/images/flags/svg/li.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/lk.svg b/src/assets/images/flags/svg/lk.svg new file mode 100644 index 0000000..4a377f1 --- /dev/null +++ b/src/assets/images/flags/svg/lk.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/lr.svg b/src/assets/images/flags/svg/lr.svg new file mode 100644 index 0000000..00e3629 --- /dev/null +++ b/src/assets/images/flags/svg/lr.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ls.svg b/src/assets/images/flags/svg/ls.svg new file mode 100644 index 0000000..5dd5b0c --- /dev/null +++ b/src/assets/images/flags/svg/ls.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/flags/svg/lt.svg b/src/assets/images/flags/svg/lt.svg new file mode 100644 index 0000000..36e30e9 --- /dev/null +++ b/src/assets/images/flags/svg/lt.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/lu.svg b/src/assets/images/flags/svg/lu.svg new file mode 100644 index 0000000..bf6ca16 --- /dev/null +++ b/src/assets/images/flags/svg/lu.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/lv.svg b/src/assets/images/flags/svg/lv.svg new file mode 100644 index 0000000..efa5a32 --- /dev/null +++ b/src/assets/images/flags/svg/lv.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/ly.svg b/src/assets/images/flags/svg/ly.svg new file mode 100644 index 0000000..fcc2dc9 --- /dev/null +++ b/src/assets/images/flags/svg/ly.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ma.svg b/src/assets/images/flags/svg/ma.svg new file mode 100644 index 0000000..8de4077 --- /dev/null +++ b/src/assets/images/flags/svg/ma.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/flags/svg/mc.svg b/src/assets/images/flags/svg/mc.svg new file mode 100644 index 0000000..45133dc --- /dev/null +++ b/src/assets/images/flags/svg/mc.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/md.svg b/src/assets/images/flags/svg/md.svg new file mode 100644 index 0000000..a86be90 --- /dev/null +++ b/src/assets/images/flags/svg/md.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/me.svg b/src/assets/images/flags/svg/me.svg new file mode 100644 index 0000000..613083f --- /dev/null +++ b/src/assets/images/flags/svg/me.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/mf.svg b/src/assets/images/flags/svg/mf.svg new file mode 100644 index 0000000..bf46785 --- /dev/null +++ b/src/assets/images/flags/svg/mf.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/mg.svg b/src/assets/images/flags/svg/mg.svg new file mode 100644 index 0000000..76e84fc --- /dev/null +++ b/src/assets/images/flags/svg/mg.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/mh.svg b/src/assets/images/flags/svg/mh.svg new file mode 100644 index 0000000..f74e99d --- /dev/null +++ b/src/assets/images/flags/svg/mh.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/mk.svg b/src/assets/images/flags/svg/mk.svg new file mode 100644 index 0000000..1f1eaf6 --- /dev/null +++ b/src/assets/images/flags/svg/mk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/ml.svg b/src/assets/images/flags/svg/ml.svg new file mode 100644 index 0000000..66da1bb --- /dev/null +++ b/src/assets/images/flags/svg/ml.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/mm.svg b/src/assets/images/flags/svg/mm.svg new file mode 100644 index 0000000..c77927e --- /dev/null +++ b/src/assets/images/flags/svg/mm.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/mn.svg b/src/assets/images/flags/svg/mn.svg new file mode 100644 index 0000000..6c62973 --- /dev/null +++ b/src/assets/images/flags/svg/mn.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/mo.svg b/src/assets/images/flags/svg/mo.svg new file mode 100644 index 0000000..30e9129 --- /dev/null +++ b/src/assets/images/flags/svg/mo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/mp.svg b/src/assets/images/flags/svg/mp.svg new file mode 100644 index 0000000..bf9ed63 --- /dev/null +++ b/src/assets/images/flags/svg/mp.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/mq.svg b/src/assets/images/flags/svg/mq.svg new file mode 100644 index 0000000..b389d43 --- /dev/null +++ b/src/assets/images/flags/svg/mq.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/mr.svg b/src/assets/images/flags/svg/mr.svg new file mode 100644 index 0000000..b53ce61 --- /dev/null +++ b/src/assets/images/flags/svg/mr.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/ms.svg b/src/assets/images/flags/svg/ms.svg new file mode 100644 index 0000000..5796863 --- /dev/null +++ b/src/assets/images/flags/svg/ms.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/mt.svg b/src/assets/images/flags/svg/mt.svg new file mode 100644 index 0000000..93fe67b --- /dev/null +++ b/src/assets/images/flags/svg/mt.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/mu.svg b/src/assets/images/flags/svg/mu.svg new file mode 100644 index 0000000..102ed3b --- /dev/null +++ b/src/assets/images/flags/svg/mu.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/flags/svg/mv.svg b/src/assets/images/flags/svg/mv.svg new file mode 100644 index 0000000..2525c92 --- /dev/null +++ b/src/assets/images/flags/svg/mv.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/mw.svg b/src/assets/images/flags/svg/mw.svg new file mode 100644 index 0000000..5bd17f8 --- /dev/null +++ b/src/assets/images/flags/svg/mw.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/flags/svg/mx.svg b/src/assets/images/flags/svg/mx.svg new file mode 100644 index 0000000..7de1b66 --- /dev/null +++ b/src/assets/images/flags/svg/mx.svg @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/my.svg b/src/assets/images/flags/svg/my.svg new file mode 100644 index 0000000..a08f085 --- /dev/null +++ b/src/assets/images/flags/svg/my.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/mz.svg b/src/assets/images/flags/svg/mz.svg new file mode 100644 index 0000000..2e98e99 --- /dev/null +++ b/src/assets/images/flags/svg/mz.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/na.svg b/src/assets/images/flags/svg/na.svg new file mode 100644 index 0000000..f2f571f --- /dev/null +++ b/src/assets/images/flags/svg/na.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/nc.svg b/src/assets/images/flags/svg/nc.svg new file mode 100644 index 0000000..5c6c5e0 --- /dev/null +++ b/src/assets/images/flags/svg/nc.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ne.svg b/src/assets/images/flags/svg/ne.svg new file mode 100644 index 0000000..f470907 --- /dev/null +++ b/src/assets/images/flags/svg/ne.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/nf.svg b/src/assets/images/flags/svg/nf.svg new file mode 100644 index 0000000..46d7e8f --- /dev/null +++ b/src/assets/images/flags/svg/nf.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/ng.svg b/src/assets/images/flags/svg/ng.svg new file mode 100644 index 0000000..42ee5ad --- /dev/null +++ b/src/assets/images/flags/svg/ng.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/ni.svg b/src/assets/images/flags/svg/ni.svg new file mode 100644 index 0000000..f77ed63 --- /dev/null +++ b/src/assets/images/flags/svg/ni.svg @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/nl.svg b/src/assets/images/flags/svg/nl.svg new file mode 100644 index 0000000..2026937 --- /dev/null +++ b/src/assets/images/flags/svg/nl.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/no.svg b/src/assets/images/flags/svg/no.svg new file mode 100644 index 0000000..56e78e1 --- /dev/null +++ b/src/assets/images/flags/svg/no.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/np.svg b/src/assets/images/flags/svg/np.svg new file mode 100644 index 0000000..4e151e4 --- /dev/null +++ b/src/assets/images/flags/svg/np.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/nr.svg b/src/assets/images/flags/svg/nr.svg new file mode 100644 index 0000000..cfdc0d1 --- /dev/null +++ b/src/assets/images/flags/svg/nr.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/nu.svg b/src/assets/images/flags/svg/nu.svg new file mode 100644 index 0000000..ad16265 --- /dev/null +++ b/src/assets/images/flags/svg/nu.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/nz.svg b/src/assets/images/flags/svg/nz.svg new file mode 100644 index 0000000..d982fe8 --- /dev/null +++ b/src/assets/images/flags/svg/nz.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/om.svg b/src/assets/images/flags/svg/om.svg new file mode 100644 index 0000000..68fe15d --- /dev/null +++ b/src/assets/images/flags/svg/om.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/pa.svg b/src/assets/images/flags/svg/pa.svg new file mode 100644 index 0000000..09b3e11 --- /dev/null +++ b/src/assets/images/flags/svg/pa.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/pe.svg b/src/assets/images/flags/svg/pe.svg new file mode 100644 index 0000000..71a1be1 --- /dev/null +++ b/src/assets/images/flags/svg/pe.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/pf.svg b/src/assets/images/flags/svg/pf.svg new file mode 100644 index 0000000..7a32556 --- /dev/null +++ b/src/assets/images/flags/svg/pf.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/pg.svg b/src/assets/images/flags/svg/pg.svg new file mode 100644 index 0000000..5fb0cd5 --- /dev/null +++ b/src/assets/images/flags/svg/pg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/ph.svg b/src/assets/images/flags/svg/ph.svg new file mode 100644 index 0000000..a0c37d8 --- /dev/null +++ b/src/assets/images/flags/svg/ph.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/pk.svg b/src/assets/images/flags/svg/pk.svg new file mode 100644 index 0000000..387265c --- /dev/null +++ b/src/assets/images/flags/svg/pk.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/pl.svg b/src/assets/images/flags/svg/pl.svg new file mode 100644 index 0000000..c00513a --- /dev/null +++ b/src/assets/images/flags/svg/pl.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/pm.svg b/src/assets/images/flags/svg/pm.svg new file mode 100644 index 0000000..07ea24c --- /dev/null +++ b/src/assets/images/flags/svg/pm.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/pn.svg b/src/assets/images/flags/svg/pn.svg new file mode 100644 index 0000000..80682ab --- /dev/null +++ b/src/assets/images/flags/svg/pn.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/pr.svg b/src/assets/images/flags/svg/pr.svg new file mode 100644 index 0000000..191c56a --- /dev/null +++ b/src/assets/images/flags/svg/pr.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ps.svg b/src/assets/images/flags/svg/ps.svg new file mode 100644 index 0000000..a6dedf5 --- /dev/null +++ b/src/assets/images/flags/svg/ps.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/pt.svg b/src/assets/images/flags/svg/pt.svg new file mode 100644 index 0000000..fa9621f --- /dev/null +++ b/src/assets/images/flags/svg/pt.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/pw.svg b/src/assets/images/flags/svg/pw.svg new file mode 100644 index 0000000..8127a2c --- /dev/null +++ b/src/assets/images/flags/svg/pw.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/py.svg b/src/assets/images/flags/svg/py.svg new file mode 100644 index 0000000..1402520 --- /dev/null +++ b/src/assets/images/flags/svg/py.svg @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/qa.svg b/src/assets/images/flags/svg/qa.svg new file mode 100644 index 0000000..0f93a9d --- /dev/null +++ b/src/assets/images/flags/svg/qa.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/flags/svg/re.svg b/src/assets/images/flags/svg/re.svg new file mode 100644 index 0000000..827103b --- /dev/null +++ b/src/assets/images/flags/svg/re.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/ro.svg b/src/assets/images/flags/svg/ro.svg new file mode 100644 index 0000000..d43c1e2 --- /dev/null +++ b/src/assets/images/flags/svg/ro.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/rs.svg b/src/assets/images/flags/svg/rs.svg new file mode 100644 index 0000000..6469365 --- /dev/null +++ b/src/assets/images/flags/svg/rs.svg @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ru.svg b/src/assets/images/flags/svg/ru.svg new file mode 100644 index 0000000..f56fddb --- /dev/null +++ b/src/assets/images/flags/svg/ru.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/rw.svg b/src/assets/images/flags/svg/rw.svg new file mode 100644 index 0000000..afed4e3 --- /dev/null +++ b/src/assets/images/flags/svg/rw.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/sa.svg b/src/assets/images/flags/svg/sa.svg new file mode 100644 index 0000000..c9e8cca --- /dev/null +++ b/src/assets/images/flags/svg/sa.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/sb.svg b/src/assets/images/flags/svg/sb.svg new file mode 100644 index 0000000..b8e1f8e --- /dev/null +++ b/src/assets/images/flags/svg/sb.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/sc.svg b/src/assets/images/flags/svg/sc.svg new file mode 100644 index 0000000..2286e14 --- /dev/null +++ b/src/assets/images/flags/svg/sc.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/sd.svg b/src/assets/images/flags/svg/sd.svg new file mode 100644 index 0000000..9981494 --- /dev/null +++ b/src/assets/images/flags/svg/sd.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/se.svg b/src/assets/images/flags/svg/se.svg new file mode 100644 index 0000000..e9977d7 --- /dev/null +++ b/src/assets/images/flags/svg/se.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/sg.svg b/src/assets/images/flags/svg/sg.svg new file mode 100644 index 0000000..8931660 --- /dev/null +++ b/src/assets/images/flags/svg/sg.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/sh.svg b/src/assets/images/flags/svg/sh.svg new file mode 100644 index 0000000..a768813 --- /dev/null +++ b/src/assets/images/flags/svg/sh.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/si.svg b/src/assets/images/flags/svg/si.svg new file mode 100644 index 0000000..a83515b --- /dev/null +++ b/src/assets/images/flags/svg/si.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/sj.svg b/src/assets/images/flags/svg/sj.svg new file mode 100644 index 0000000..8e5d104 --- /dev/null +++ b/src/assets/images/flags/svg/sj.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/sk.svg b/src/assets/images/flags/svg/sk.svg new file mode 100644 index 0000000..3d9ea27 --- /dev/null +++ b/src/assets/images/flags/svg/sk.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/flags/svg/sl.svg b/src/assets/images/flags/svg/sl.svg new file mode 100644 index 0000000..51e2676 --- /dev/null +++ b/src/assets/images/flags/svg/sl.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/sm.svg b/src/assets/images/flags/svg/sm.svg new file mode 100644 index 0000000..dbe605e --- /dev/null +++ b/src/assets/images/flags/svg/sm.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + L + + + I + + + B + + + E + + + R + + + T + + + A + + + S + + + + diff --git a/src/assets/images/flags/svg/sn.svg b/src/assets/images/flags/svg/sn.svg new file mode 100644 index 0000000..c06616f --- /dev/null +++ b/src/assets/images/flags/svg/sn.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/flags/svg/so.svg b/src/assets/images/flags/svg/so.svg new file mode 100644 index 0000000..def9fa3 --- /dev/null +++ b/src/assets/images/flags/svg/so.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/sr.svg b/src/assets/images/flags/svg/sr.svg new file mode 100644 index 0000000..9a169fd --- /dev/null +++ b/src/assets/images/flags/svg/sr.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/ss.svg b/src/assets/images/flags/svg/ss.svg new file mode 100644 index 0000000..4efa598 --- /dev/null +++ b/src/assets/images/flags/svg/ss.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/flags/svg/st.svg b/src/assets/images/flags/svg/st.svg new file mode 100644 index 0000000..a6bd218 --- /dev/null +++ b/src/assets/images/flags/svg/st.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/sv.svg b/src/assets/images/flags/svg/sv.svg new file mode 100644 index 0000000..d15caac --- /dev/null +++ b/src/assets/images/flags/svg/sv.svg @@ -0,0 +1,594 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/sx.svg b/src/assets/images/flags/svg/sx.svg new file mode 100644 index 0000000..9ddaf0d --- /dev/null +++ b/src/assets/images/flags/svg/sx.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/sy.svg b/src/assets/images/flags/svg/sy.svg new file mode 100644 index 0000000..b30a3ba --- /dev/null +++ b/src/assets/images/flags/svg/sy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/sz.svg b/src/assets/images/flags/svg/sz.svg new file mode 100644 index 0000000..4904c42 --- /dev/null +++ b/src/assets/images/flags/svg/sz.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/tc.svg b/src/assets/images/flags/svg/tc.svg new file mode 100644 index 0000000..a78d1fe --- /dev/null +++ b/src/assets/images/flags/svg/tc.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/td.svg b/src/assets/images/flags/svg/td.svg new file mode 100644 index 0000000..734473e --- /dev/null +++ b/src/assets/images/flags/svg/td.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/tf.svg b/src/assets/images/flags/svg/tf.svg new file mode 100644 index 0000000..3913728 --- /dev/null +++ b/src/assets/images/flags/svg/tf.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/tg.svg b/src/assets/images/flags/svg/tg.svg new file mode 100644 index 0000000..09ba198 --- /dev/null +++ b/src/assets/images/flags/svg/tg.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/th.svg b/src/assets/images/flags/svg/th.svg new file mode 100644 index 0000000..66fcd8e --- /dev/null +++ b/src/assets/images/flags/svg/th.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/tj.svg b/src/assets/images/flags/svg/tj.svg new file mode 100644 index 0000000..92ac160 --- /dev/null +++ b/src/assets/images/flags/svg/tj.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/tk.svg b/src/assets/images/flags/svg/tk.svg new file mode 100644 index 0000000..312e881 --- /dev/null +++ b/src/assets/images/flags/svg/tk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/tl.svg b/src/assets/images/flags/svg/tl.svg new file mode 100644 index 0000000..94738dd --- /dev/null +++ b/src/assets/images/flags/svg/tl.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/tm.svg b/src/assets/images/flags/svg/tm.svg new file mode 100644 index 0000000..a0fadb6 --- /dev/null +++ b/src/assets/images/flags/svg/tm.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/tn.svg b/src/assets/images/flags/svg/tn.svg new file mode 100644 index 0000000..c6aaecb --- /dev/null +++ b/src/assets/images/flags/svg/tn.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/to.svg b/src/assets/images/flags/svg/to.svg new file mode 100644 index 0000000..4dd38e4 --- /dev/null +++ b/src/assets/images/flags/svg/to.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/flags/svg/tr.svg b/src/assets/images/flags/svg/tr.svg new file mode 100644 index 0000000..f1910ee --- /dev/null +++ b/src/assets/images/flags/svg/tr.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/flags/svg/tt.svg b/src/assets/images/flags/svg/tt.svg new file mode 100644 index 0000000..19add52 --- /dev/null +++ b/src/assets/images/flags/svg/tt.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/flags/svg/tv.svg b/src/assets/images/flags/svg/tv.svg new file mode 100644 index 0000000..a63338d --- /dev/null +++ b/src/assets/images/flags/svg/tv.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/tw.svg b/src/assets/images/flags/svg/tw.svg new file mode 100644 index 0000000..000250e --- /dev/null +++ b/src/assets/images/flags/svg/tw.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/tz.svg b/src/assets/images/flags/svg/tz.svg new file mode 100644 index 0000000..5c80173 --- /dev/null +++ b/src/assets/images/flags/svg/tz.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ua.svg b/src/assets/images/flags/svg/ua.svg new file mode 100644 index 0000000..a93d06d --- /dev/null +++ b/src/assets/images/flags/svg/ua.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/flags/svg/ug.svg b/src/assets/images/flags/svg/ug.svg new file mode 100644 index 0000000..c996cbd --- /dev/null +++ b/src/assets/images/flags/svg/ug.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/um.svg b/src/assets/images/flags/svg/um.svg new file mode 100644 index 0000000..1aa1162 --- /dev/null +++ b/src/assets/images/flags/svg/um.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/un.svg b/src/assets/images/flags/svg/un.svg new file mode 100644 index 0000000..b623650 --- /dev/null +++ b/src/assets/images/flags/svg/un.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/us.svg b/src/assets/images/flags/svg/us.svg new file mode 100644 index 0000000..5b55267 --- /dev/null +++ b/src/assets/images/flags/svg/us.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/flags/svg/uy.svg b/src/assets/images/flags/svg/uy.svg new file mode 100644 index 0000000..bad58e5 --- /dev/null +++ b/src/assets/images/flags/svg/uy.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/uz.svg b/src/assets/images/flags/svg/uz.svg new file mode 100644 index 0000000..3ede7f1 --- /dev/null +++ b/src/assets/images/flags/svg/uz.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/va.svg b/src/assets/images/flags/svg/va.svg new file mode 100644 index 0000000..258cca9 --- /dev/null +++ b/src/assets/images/flags/svg/va.svg @@ -0,0 +1,479 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/vc.svg b/src/assets/images/flags/svg/vc.svg new file mode 100644 index 0000000..99ba90f --- /dev/null +++ b/src/assets/images/flags/svg/vc.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/flags/svg/ve.svg b/src/assets/images/flags/svg/ve.svg new file mode 100644 index 0000000..98ef473 --- /dev/null +++ b/src/assets/images/flags/svg/ve.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/vg.svg b/src/assets/images/flags/svg/vg.svg new file mode 100644 index 0000000..2c69495 --- /dev/null +++ b/src/assets/images/flags/svg/vg.svg @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/vi.svg b/src/assets/images/flags/svg/vi.svg new file mode 100644 index 0000000..db0e62c --- /dev/null +++ b/src/assets/images/flags/svg/vi.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/vn.svg b/src/assets/images/flags/svg/vn.svg new file mode 100644 index 0000000..3fc2279 --- /dev/null +++ b/src/assets/images/flags/svg/vn.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/vu.svg b/src/assets/images/flags/svg/vu.svg new file mode 100644 index 0000000..a773285 --- /dev/null +++ b/src/assets/images/flags/svg/vu.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/wf.svg b/src/assets/images/flags/svg/wf.svg new file mode 100644 index 0000000..9d43586 --- /dev/null +++ b/src/assets/images/flags/svg/wf.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/ws.svg b/src/assets/images/flags/svg/ws.svg new file mode 100644 index 0000000..1b3ecf4 --- /dev/null +++ b/src/assets/images/flags/svg/ws.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/xk.svg b/src/assets/images/flags/svg/xk.svg new file mode 100644 index 0000000..7e41b1d --- /dev/null +++ b/src/assets/images/flags/svg/xk.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/ye.svg b/src/assets/images/flags/svg/ye.svg new file mode 100644 index 0000000..1befdec --- /dev/null +++ b/src/assets/images/flags/svg/ye.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/yt.svg b/src/assets/images/flags/svg/yt.svg new file mode 100644 index 0000000..f198fff --- /dev/null +++ b/src/assets/images/flags/svg/yt.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/flags/svg/za.svg b/src/assets/images/flags/svg/za.svg new file mode 100644 index 0000000..7a420a0 --- /dev/null +++ b/src/assets/images/flags/svg/za.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/zm.svg b/src/assets/images/flags/svg/zm.svg new file mode 100644 index 0000000..9e723c6 --- /dev/null +++ b/src/assets/images/flags/svg/zm.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/flags/svg/zw.svg b/src/assets/images/flags/svg/zw.svg new file mode 100644 index 0000000..1b18e84 --- /dev/null +++ b/src/assets/images/flags/svg/zw.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/index.html b/src/assets/index.html new file mode 100644 index 0000000..f6ea049 --- /dev/null +++ b/src/assets/index.html @@ -0,0 +1 @@ +foobar \ No newline at end of file diff --git a/src/conv-intl.h b/src/conv-intl.h new file mode 100644 index 0000000..75c14bc --- /dev/null +++ b/src/conv-intl.h @@ -0,0 +1,33 @@ +// osso-intl.h - OSSO intl +// Copyright (C) 2011 Pali Rohár + +#ifndef CONV_INTL_H +#define CONV_INTL_H + +#include +#include + +#include + +static inline void intl(const char * package) { + + setlocale(LC_ALL, ""); + bindtextdomain(package, "/usr/share/locale"); + bind_textdomain_codeset(package, "UTF-8"); + textdomain(package); + +} + +static inline const QString _(const char * str) { + + return QString::fromUtf8(gettext(str)).replace("%%", "%"); + +} + +static inline const QString _(const QString &str) { + + return _(str.toUtf8().data()); + +} + +#endif diff --git a/src/ctx.cpp b/src/ctx.cpp new file mode 100644 index 0000000..7f5f203 --- /dev/null +++ b/src/ctx.cpp @@ -0,0 +1,68 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020-2021, The Monero Project. + +#include +#include +#include +#include +#include + +#include "ctx.h" +#include "lib/utils.h" +#include "lib/globals.h" + + +ConvContext::ConvContext(QCommandLineParser *cmdargs) { + this->network = new QNetworkAccessManager(); + this->cmdargs = cmdargs; + + // Paths + pathGenericData = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); + configRoot = QDir::homePath(); + accountName = Utils::getUnixAccountName(); + homeDir = QDir::homePath(); + configDirectory = QString("%1/.config/%2/").arg(configRoot, QCoreApplication::applicationName()); + + // Create some directories + createConfigDirectory(configDirectory); + + qDebug() << "configRoot: " << configRoot; + qDebug() << "homeDir: " << homeDir; + qDebug() << "configDirectory: " << configDirectory; + + countries = new Countries(); + + // If system clock skewed for >= 300 seconds, assume a wake-up from hibernate and reload the websocket connection + m_hibernateTimer.start(3 * 1000); + + m_hibernatePreviousTime = std::chrono::steady_clock::now(); + connect(&m_hibernateTimer, &QTimer::timeout, [this]() { + const auto now = std::chrono::steady_clock::now(); + const auto elapsed = now - m_hibernatePreviousTime; + + if(elapsed >= m_hibernateDetectInterval) { + qCritical() << "Clock skew detected"; + emit clockSkewDetected(); + } + + m_hibernatePreviousTime = now; + }); +} + +void ConvContext::setWindowTitle(bool mining) { + auto title = QString("Conversations"); + emit setTitle(title); +} + +void ConvContext::createConfigDirectory(const QString &dir) { + QStringList createDirs({dir}); + for(const auto &d: createDirs) { + if(!Utils::dirExists(d)) { + qDebug() << QString("Creating directory: %1").arg(d); + if (!QDir().mkpath(d)) + throw std::runtime_error("Could not create directory " + d.toStdString()); + } + } +} + +ConvContext::~ConvContext() {} diff --git a/src/ctx.h b/src/ctx.h new file mode 100644 index 0000000..809f128 --- /dev/null +++ b/src/ctx.h @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020-2021, The Monero Project. + +#ifndef CONV_CONTEXT_H +#define CONV_CONTEXT_H + +#include +#include +#include +#include + +#include "lib/http.h" +#include "lib/countries.h" + +class ConvContext : public QObject { + Q_OBJECT + Q_PROPERTY(QString wsUrl MEMBER wsUrl); + Q_PROPERTY(QString configRootconfigDirectory MEMBER configDirectory); + Q_PROPERTY(QString configRoot MEMBER configRoot); + Q_PROPERTY(QString pathGenericData MEMBER pathGenericData); + Q_PROPERTY(QString homeDir MEMBER homeDir); + Q_PROPERTY(QString accountName MEMBER accountName); + +public: + explicit ConvContext(QCommandLineParser *cmdargs); + ~ConvContext() override; + bool isDebug = false; + + QCommandLineParser *cmdargs; + + QString wsUrl; + QString configDirectory; + QString configRoot; + QString pathGenericData; + QString homeDir; + + QString accountName; + + QHash countries_iso_3166_1; + + QString applicationPath; + static void createConfigDirectory(const QString &dir) ; + + QNetworkAccessManager *network; + + Countries *countries; + + void setWindowTitle(bool mining = false); + + Q_INVOKABLE QString foobar(quint64 amount) { + return "lol"; + } + +signals: + void clockSkewDetected(); + void setTitle(const QString &title); // set window title + +private: + QTimer m_hibernateTimer; + std::chrono::seconds m_hibernateDetectInterval{300}; + std::chrono::time_point m_hibernatePreviousTime; +}; + +#endif // CONV_CONTEXT_H diff --git a/src/lib/config.cpp b/src/lib/config.cpp new file mode 100644 index 0000000..e5ac1a7 --- /dev/null +++ b/src/lib/config.cpp @@ -0,0 +1,102 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (C) 2020 KeePassXC Team +// Copyright (C) 2011 Felix Geyer +// Copyright (c) 2020-2021, The Monero Project. + +#include "config.h" +#include "lib/utils.h" + +#define QS QStringLiteral + +struct ConfigDirective +{ + QString name; + QVariant defaultValue; +}; + +static const QHash configStrings = { + // General + {Config::MaemoTest,{QS("MaemoTest"), ""}} +}; + + +QPointer Config::m_instance(nullptr); + +QVariant Config::get(ConfigKey key) +{ + auto cfg = configStrings[key]; + auto defaultValue = configStrings[key].defaultValue; + + return m_settings->value(cfg.name, defaultValue); +} + +QString Config::getFileName() +{ + return m_settings->fileName(); +} + +void Config::set(ConfigKey key, const QVariant& value) +{ + if (get(key) == value) { + return; + } + + auto cfg = configStrings[key]; + m_settings->setValue(cfg.name, value); + + this->sync(); + emit changed(key); +} + +/** + * Sync configuration with persistent storage. + * + * Usually, you don't need to call this method manually, but if you are writing + * configurations after an emitted \link QCoreApplication::aboutToQuit() signal, + * use it to guarantee your config values are persisted. + */ +void Config::sync() +{ + m_settings->sync(); +} + +void Config::resetToDefaults() +{ + m_settings->clear(); +} + +Config::Config(const QString& fileName, QObject* parent) + : QObject(parent) { + init(fileName); +} + +Config::Config(QObject* parent) + : QObject(parent) { + QString configPath; + + configPath = QDir::homePath(); + configPath += QString("/.config/%1/settings.json").arg(QCoreApplication::applicationName()); + + init(QDir::toNativeSeparators(configPath)); +} + + +Config::~Config() +{ +} + +void Config::init(const QString& configFileName) { + const QSettings::Format jsonFormat = QSettings::registerFormat("json", Utils::readJsonFile, Utils::writeJsonFile); + QSettings::setDefaultFormat(jsonFormat); + m_settings.reset(new QSettings(configFileName, jsonFormat)); + + connect(qApp, &QCoreApplication::aboutToQuit, this, &Config::sync); +} + +Config* Config::instance() { + if (!m_instance) { + m_instance = new Config(qApp); + } + + return m_instance; +} diff --git a/src/lib/config.h b/src/lib/config.h new file mode 100644 index 0000000..47a05a6 --- /dev/null +++ b/src/lib/config.h @@ -0,0 +1,49 @@ +#ifndef CONV_SETTINGS_H +#define CONV_SETTINGS_H + +#include +#include +#include +#include + +class Config : public QObject +{ + Q_OBJECT + +public: + Q_DISABLE_COPY(Config) + + enum ConfigKey + { + MaemoTest, + }; + + ~Config() override; + QVariant get(ConfigKey key); + QString getFileName(); + void set(ConfigKey key, const QVariant& value); + void sync(); + void resetToDefaults(); + + static Config* instance(); + +signals: + void changed(ConfigKey key); + +private: + Config(const QString& fileName, QObject* parent = nullptr); + explicit Config(QObject* parent); + void init(const QString& configFileName); + + static QPointer m_instance; + + QScopedPointer m_settings; + QHash m_defaults; +}; + +inline Config* config() +{ + return Config::instance(); +} + +#endif diff --git a/src/lib/countries.cpp b/src/lib/countries.cpp new file mode 100644 index 0000000..661e237 --- /dev/null +++ b/src/lib/countries.cpp @@ -0,0 +1,33 @@ +#include +#include + +#include "countries.h" +#include "utils.h" + +Countries::Countries(QObject *parent) : QObject(parent) { + auto _countries = Utils::barrayToString(Utils::fileOpen(":assets/country-codes.csv")); + for(auto &line: _countries.split("\n")) { + if(line.isEmpty()) continue; + line = line.replace("\"", ""); + + auto c = CountryISO(); + auto spl = line.split("|"); + c.country_code_fifa = spl.at(0); + c.country_code_3 = spl.at(1); + c.country_code_2 = spl.at(2); + c.currency = spl.at(3); + c.name = spl.at(4); + c.tld = spl.at(5); + c.languages = spl.at(6); + c.locale = spl.at(7); + c.region = spl.at(8); + + auto icon_url_svg = QString(":/flags/%1.svg").arg(c.country_code_2.toLower()); + if(QFile::exists(icon_url_svg)) + c.icon_svg = icon_url_svg; + } +} + +CountryISO Countries::by_code(const QString &code) { + +} \ No newline at end of file diff --git a/src/lib/countries.h b/src/lib/countries.h new file mode 100644 index 0000000..cc22de6 --- /dev/null +++ b/src/lib/countries.h @@ -0,0 +1,33 @@ +#ifndef CONV_COUNTRYISO_H +#define CONV_COUNTRYISO_H + +#include +#include + +struct CountryISO { + Q_GADGET +public: + QString locale; + QString name; // "Tanzania" + QString country_code_fifa; // three-letter country code + QString country_code_2; // two-letter country code + QString country_code_3; // three-letter country code + QString currency; // "EUR" + QString region; // "Europe" + QString tld; // top level domain + QString languages; // + QString icon_svg; // QRC svg url + QString icon_png; // QRC png url +}; + +class Countries : public QObject { + Q_OBJECT + //Q_PROPERTY(QString author READ author WRITE setAuthor NOTIFY authorChanged) + +public: + explicit Countries(QObject *parent = nullptr); + CountryISO by_code(const QString &code); + QHash countries; +}; + +#endif // CONV_COUNTRYISO_H diff --git a/src/lib/globals.h b/src/lib/globals.h new file mode 100644 index 0000000..adcd8eb --- /dev/null +++ b/src/lib/globals.h @@ -0,0 +1,11 @@ +#ifndef CONV_GLOBALS_H +#define CONV_GLOBALS_H + +#include + +namespace globals +{ + const unsigned int foo = 3; +} + +#endif diff --git a/src/lib/http.cpp b/src/lib/http.cpp new file mode 100644 index 0000000..41f4afe --- /dev/null +++ b/src/lib/http.cpp @@ -0,0 +1,81 @@ +#include +#include + +#include "lib/utils.h" +#include "lib/http.h" + +UtilsNetworking::UtilsNetworking(QNetworkAccessManager *networkAccessManager, QObject *parent) : + QObject(parent), + m_networkAccessManager(networkAccessManager) {} + +void UtilsNetworking::setUserAgent(const QString &userAgent) { + this->m_userAgent = userAgent; +} + +void UtilsNetworking::get(const QString &url) { + busy = true; + QNetworkRequest request; + request.setUrl(QUrl(url)); + request.setRawHeader("User-Agent", m_userAgent.toUtf8()); + + QNetworkReply *reply; + reply = this->m_networkAccessManager->get(request); + connect(reply, &QNetworkReply::finished, std::bind(&UtilsNetworking::webResponse, this, reply)); +} + +QNetworkReply* UtilsNetworking::getJson(const QString &url) { + busy = true; + QNetworkRequest request; + request.setUrl(QUrl(url)); + request.setRawHeader("User-Agent", m_userAgent.toUtf8()); + request.setRawHeader("Content-Type", "application/json"); + + return this->m_networkAccessManager->get(request); +} + +QNetworkReply* UtilsNetworking::postJson(const QString &url, const QJsonObject &data) { + busy = true; + QNetworkRequest request; + request.setUrl(QUrl(url)); + request.setRawHeader("User-Agent", m_userAgent.toUtf8()); + request.setRawHeader("Content-Type", "application/json"); + + QJsonDocument doc(data); + QByteArray bytes = doc.toJson(); + return this->m_networkAccessManager->post(request, bytes); +} + +void UtilsNetworking::webResponse(QNetworkReply *reply) { + QByteArray data = reply->readAll(); + QString err; + if (reply->error()) { + err = reply->errorString(); + qCritical() << err; + qCritical() << data; + if (!data.isEmpty()) + err += QString("%1 %2").arg(err).arg(Utils::barrayToString(data)); + } + reply->deleteLater(); + + if(!err.isEmpty()) + emit webErrorReceived(err); + else + emit webReceived(data); + + busy = false; +} + +QString UtilsNetworking::validateJSON(QNetworkReply *reply){ + QList headerList = reply->rawHeaderList(); + QByteArray headerJson = reply->rawHeader("Content-Type"); + if(headerJson.length() <= 15) + return "Bad Content-Type"; + QString headerJsonStr = QTextCodec::codecForMib(106)->toUnicode(headerJson); + int _contentType = headerList.indexOf("Content-Type"); + if (_contentType < 0 || !headerJsonStr.startsWith("application/json")) + return "Bad Content-Type"; + QByteArray data = reply->readAll(); + if(!Utils::validateJSON(data)) + return "Bad or empty JSON"; + return "OK"; +} diff --git a/src/lib/http.h b/src/lib/http.h new file mode 100644 index 0000000..dd028f2 --- /dev/null +++ b/src/lib/http.h @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020-2021, The Monero Project. + +#ifndef CONV_NET_HTTP +#define CONV_NET_HTTP + +#include +#include +#include +#include + +#include "lib/utils.h" + +class UtilsNetworking : public QObject +{ +Q_OBJECT + +public: + explicit UtilsNetworking(QNetworkAccessManager *networkAccessManager, QObject *parent = nullptr); + + void get(const QString &url); + QNetworkReply* getJson(const QString &url); + QNetworkReply* postJson(const QString &url, const QJsonObject &data); + void setUserAgent(const QString &userAgent); + static QString validateJSON(QNetworkReply *reply); + + bool busy = false; + +private slots: + void webResponse(QNetworkReply *reply); + +signals: + void webErrorReceived(QString msg); + void webReceived(QByteArray data); + +private: + QString m_userAgent = "Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0"; + QNetworkAccessManager *m_networkAccessManager; +}; + +#endif diff --git a/src/lib/utils.cpp b/src/lib/utils.cpp new file mode 100644 index 0000000..99d2a04 --- /dev/null +++ b/src/lib/utils.cpp @@ -0,0 +1,206 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" +#include "lib/config.h" + +QVector bla = QVector(); +QVector applicationLog = QVector(); +QMutex logMutex; + +bool Utils::fileExists(const QString &path) { + QFileInfo check_file(path); + return check_file.exists() && check_file.isFile(); +} + +bool Utils::dirExists(const QString &path) { + QDir pathDir(path); + return pathDir.exists(); +} + +QByteArray Utils::fileOpen(const QString &path) { + QFile file(path); + if(!file.open(QFile::ReadOnly | QFile::Text)) { + return QByteArray(); + } + + QByteArray data = file.readAll(); + file.close(); + return data; +} + +qint64 Utils::fileModifiedAge(const QString &path) { + QFileInfo fileInfo; + fileInfo.setFile(path); + return (QDateTime::currentSecsSinceEpoch() - fileInfo.lastModified().toSecsSinceEpoch()); +} + +QByteArray Utils::fileOpenQRC(const QString &path) { + QFile file(path); + if(!file.open(QIODevice::ReadOnly)) { + qDebug() << "error: " << file.errorString(); + } + + QByteArray data = file.readAll(); + file.close(); + return data; +} + +bool Utils::fileWrite(const QString &path, const QString &data) { + QFile file(path); + if(file.open(QIODevice::WriteOnly)){ + QTextStream out(&file); out << data << "\n"; + file.close(); + return true; + } + return false; +} + +bool Utils::validateJSON(const QByteArray &blob) { + QJsonDocument doc = QJsonDocument::fromJson(blob); + QString jsonString = doc.toJson(QJsonDocument::Indented); + return !jsonString.isEmpty(); +} + +bool Utils::readJsonFile(QIODevice &device, QSettings::SettingsMap &map) { + QJsonDocument json = QJsonDocument::fromJson(device.readAll()); + map = json.object().toVariantMap(); + return true; +} + +bool Utils::writeJsonFile(QIODevice &device, const QSettings::SettingsMap &map) { + device.write(QJsonDocument(QJsonObject::fromVariantMap(map)).toJson(QJsonDocument::Indented)); + return true; +} + +bool Utils::portOpen(const QString &hostname, quint16 port){ + QTcpSocket socket; + socket.connectToHost(hostname, port); + return socket.waitForConnected(600); +} + +QString Utils::barrayToString(const QByteArray &data) { + return QString(QTextCodec::codecForMib(106)->toUnicode(data)); +} + +QString Utils::getUnixAccountName() { +#ifdef __ANDROID__ + return ""; +#endif + QString accountName = qgetenv("USER"); // mac/linux + if (accountName.isEmpty()) + accountName = qgetenv("USERNAME"); // Windows + if (accountName.isEmpty()) + throw std::runtime_error("Could not derive system account name from env vars: USER or USERNAME"); + return accountName; +} + +double Utils::roundSignificant(double N, double n) +{ + int h; + double b, d, e, i, j, m, f; + b = N; + + for (i = 0; b >= 1; ++i) + b = b / 10; + + d = n - i; + b = N; + b = b * pow(10, d); + e = b + 0.5; + if ((float)e == (float)ceil(b)) { + f = (ceil(b)); + h = f - 2; + if (h % 2 != 0) { + e = e - 1; + } + } + j = floor(e); + m = pow(10, d); + j = j / m; + return j; +} + +QString Utils::formatBytes(quint64 bytes) +{ + QVector sizes = { "B", "KB", "MB", "GB", "TB" }; + + int i; + double _data; + for (i = 0; i < sizes.count() && bytes >= 10000; i++, bytes /= 1000) + _data = bytes / 1000.0; + + if (_data < 0) + _data = 0; + + // unrealistic + if (_data > 10000) + _data = 0; + + return QString("%1 %2").arg(QString::number(_data, 'f', 1), sizes[i]); +} + + +QMap Utils::localeCache = {}; + +double Utils::roundUp(double value, int decimal_places) { + const double multiplier = std::pow(10.0, decimal_places); + return std::ceil(value * multiplier) / multiplier; +} + +int Utils::maxLength(const QVector &array) { + int maxLength = 0; + for (const auto &str: array) { + auto length = str.length(); + if (length > maxLength) { + maxLength = length; + } + } + return maxLength; +} + +void Utils::applicationLogHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { + const QString fn = context.function ? QString::fromUtf8(context.function) : ""; + const QString date = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"); + QString line; + + switch (type) { + case QtDebugMsg: + line = QString("[%1 D] %2(:%3) %4\n").arg(date).arg(fn).arg(context.line).arg(msg); + fprintf(stderr, "%s", line.toLatin1().data()); + break; + case QtInfoMsg: + line = QString("[%1 I] %2\n").arg(date).arg(msg); + fprintf(stdout, "%s", line.toLatin1().data()); + break; + case QtWarningMsg: + line = QString("[%1 W] %2(:%3) %4\n").arg(date).arg(fn).arg(context.line).arg(msg); + fprintf(stdout, "%s", line.toLatin1().data()); + break; + case QtCriticalMsg: + line = QString("[%1 C] %2(:%3) %4\n").arg(date).arg(fn).arg(context.line).arg(msg); + fprintf(stderr, "%s", line.toLatin1().data()); + break; + case QtFatalMsg: + line = QString("[%1 F] %2(:%3) %4\n").arg(date).arg(fn).arg(context.line).arg(msg); + fprintf(stderr, "%s", line.toLatin1().data()); + break; + } + + auto message = logMessage(type, line, fn); + + // @TODO: this does not work under 5.11? +// { +// QMutexLocker locker(&logMutex); +// applicationLog << message; +// } + + + //emit applicationLogUpdated(message); +} \ No newline at end of file diff --git a/src/lib/utils.h b/src/lib/utils.h new file mode 100644 index 0000000..389f277 --- /dev/null +++ b/src/lib/utils.h @@ -0,0 +1,49 @@ +#ifndef CONV_UTILS_H +#define CONV_UTILS_H + +#include +#include +#include +#include +#include +#include + +struct logMessage +{ + logMessage(const QtMsgType &type, const QString &message, const QString &fn){ + logMessage::type = type; + logMessage::message = message; + logMessage::fn = fn; + } + QtMsgType type; + QString message; + QString fn; +}; + +class Utils +{ + +public: + static bool portOpen(const QString &hostname, quint16 port); + static bool fileExists(const QString &path); + static QByteArray fileOpen(const QString &path); + static QByteArray fileOpenQRC(const QString &path); + static qint64 fileModifiedAge(const QString &path); + static bool fileWrite(const QString &path, const QString &data); + static bool validateJSON(const QByteArray &blob); + static bool readJsonFile(QIODevice &device, QSettings::SettingsMap &map); + static bool writeJsonFile(QIODevice &device, const QSettings::SettingsMap &map); + static bool dirExists(const QString &path); + static QString barrayToString(const QByteArray &data); + static QString getUnixAccountName(); + static double roundSignificant(double N, double n); + static QString formatBytes(quint64 bytes); + static int maxLength(const QVector &array); + static double roundUp(double value, int decimal_places); + static QMap localeCache; + static void applicationLogHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg); +}; + +class ConvContext; + +#endif diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..5bace15 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +#include "ctx.h" +#include "conv-intl.h" +#include "config-conversations.h" +#include "mainwindow.h" + +#ifdef Q_WS_MAEMO_5 +#include +#include +#endif + +int main(int argc, char *argv[]) { + Q_INIT_RESOURCE(assets); + + intl("conversations-ui"); + //QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QApplication::setApplicationName("conversations"); + QApplication::setOrganizationDomain("https://maemo-leste.github.io/"); + QApplication::setOrganizationName("Maemo Leste"); + QApplication::setApplicationVersion(CONVERSATIONS_VERSION); + + QApplication app(argc, argv); + + QMap info; + info["Qt"] = QT_VERSION_STR; + info["Conversations"] = CONVERSATIONS_VERSION; +#ifndef QT_NO_SSL + info["SSL"] = QSslSocket::sslLibraryVersionString(); + info["SSL build"] = QSslSocket::sslLibraryBuildVersionString(); +#endif + + for (const auto &k: info.keys()) + qWarning().nospace().noquote() << QString("%1: %2").arg(k, info[k]); + + QCommandLineParser parser; + parser.addHelpOption(); + parser.addVersionOption(); + parser.setApplicationDescription("Communications"); + + QCommandLineOption debugModeOption(QStringList() << "debug", "Run program in debug mode."); + parser.addOption(debugModeOption); + + QStringList argv_; + for(int i = 0; i != argc; i++) + argv_ << QString::fromStdString(argv[i]); + + auto parsed = parser.parse(argv_); + if(!parsed) { + qCritical() << parser.errorText(); + exit(1); + } + + const QStringList args = parser.positionalArguments(); + bool debugMode = parser.isSet(debugModeOption); + + parser.process(app); + auto *ctx = new ConvContext(&parser); + ctx->applicationPath = argv_.at(0); + ctx->isDebug = debugMode; + auto *mainWindow = new MainWindow(ctx); + return QApplication::exec(); +} diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp new file mode 100644 index 0000000..c9ab012 --- /dev/null +++ b/src/mainwindow.cpp @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: BSD-3-Clause +// Copyright (c) 2020-2021, The Monero Project. + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mainwindow.h" +#include "config-conversations.h" +#include "lib/globals.h" + +#include "ui_mainwindow.h" + +// libwalletqt +//#include "libwalletqt/AddressBook.h" + +MainWindow * MainWindow::pMainWindow = nullptr; + +MainWindow::MainWindow(ConvContext *ctx, QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow), + m_ctx(ctx) { + pMainWindow = this; + ui->setupUi(this); + + this->screenDpiRef = 128; + this->screenGeo = QApplication::primaryScreen()->availableGeometry(); + this->screenRect = QGuiApplication::primaryScreen()->geometry(); + this->screenDpi = QGuiApplication::primaryScreen()->logicalDotsPerInch(); + this->screenDpiPhysical = QGuiApplication::primaryScreen()->physicalDotsPerInch(); + this->screenRatio = this->screenDpiPhysical / this->screenDpiRef; + qInfo() + << QString("%1x%2 (%3 DPI)").arg(this->screenRect.width()).arg(this->screenRect.height()).arg(this->screenDpi); + this->show(); + +#ifdef Q_WS_MAEMO_5 + window->setProperty("X-Maemo-Orientation", 2); // XXX: 2 = auto orientation +#endif + + ui->webWidget->load(QUrl("qrc:/chat/conversation.html")); +} + +void MainWindow::showDebugInfo() { +// auto *dialog = new DebugInfoDialog(m_ctx, this); +// dialog->exec(); +// dialog->deleteLater(); + printf("oki\n"); +} + +MainWindow *MainWindow::getInstance() { + return pMainWindow; +} + +ConvContext *MainWindow::getContext(){ + return pMainWindow->m_ctx; +} + +void MainWindow::closeEvent(QCloseEvent *event) { + QWidget::closeEvent(event); +} + +MainWindow::~MainWindow() { + delete ui; +} diff --git a/src/mainwindow.h b/src/mainwindow.h new file mode 100644 index 0000000..d6b9b07 --- /dev/null +++ b/src/mainwindow.h @@ -0,0 +1,47 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "ctx.h" + +namespace Ui { + class MainWindow; +} + +class MainWindow : public QMainWindow { +Q_OBJECT + +public: + explicit MainWindow(ConvContext *ctx, QWidget *parent = nullptr); + static MainWindow *getInstance(); + static ConvContext *getContext(); + ~MainWindow() override; + Ui::MainWindow *ui; + + qreal screenDpiRef; + QRect screenGeo; + QRect screenRect; + qreal screenDpi; + qreal screenDpiPhysical; + qreal screenRatio; + + +private: + ConvContext *m_ctx; + static MainWindow *pMainWindow; + void closeEvent(QCloseEvent *event) override; + void showDebugInfo(); +}; + +#endif \ No newline at end of file diff --git a/src/mainwindow.ui b/src/mainwindow.ui new file mode 100644 index 0000000..8939ecf --- /dev/null +++ b/src/mainwindow.ui @@ -0,0 +1,314 @@ + + + MainWindow + + + + 0 + 0 + 607 + 421 + + + + + 0 + 0 + + + + Conversations + + + + :/assets/images/appicons/64x64.png:/assets/images/appicons/64x64.png + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + Quit application + + + + + Network + + + + + Sign/verify message + + + + + About + + + + + Official website + + + + + Settings + + + + + Calculator + + + + + Information + + + + + Password + + + + + Seed + + + + + Report bug + + + + + Donate to WOWlet + + + + + Export CSV + + + + + Show Coins + + + + + Show XMR.to + + + + + Show Calc + + + + + Close current wallet + + + + + Verify transaction proof + + + + + Save wallet + + + + + Update balance + + + + + Refresh models + + + + + Import CSV + + + + + Export CSV + + + + + Change restore height + + + + + Keys + + + + + Create desktop entry + + + + + Debug info + + + + + Details + + + + + Export wallet file + + + + + View-Only + + + + + Export key images + + + + + Import key images + + + + + Export outputs + + + + + Import outputs + + + + + Key Images + + + + + Outputs + + + + + Key images + + + + + Outputs + + + + + Show Mining + + + + + Transaction + + + + + Submit transaction file + + + + + From file + + + + + From file + + + + + From clipboard + + + + + From text + + + + + Import transaction + + + + + Rescan spent + + + + + Show Home + + + + + Wallet cache debug + + + + + Pay to many + + + + + + + QWebEngineView + QWidget +
QtWebEngineWidgets/QWebEngineView
+ 1 +
+
+ + + + + + donateButtonClicked() + calcButtonClicked() + +