Skip to content

Instantly share code, notes, and snippets.

@tmayer tmayer/.gitignore
Last active Aug 29, 2015

Embed
What would you like to do?
Bulgarian dialect scaling
.DS_Store

Implemented by Thomas Mayer. Data and MDS results by Jelena Prokić.

var hessen = [ [ 22.919561808000054, 43.834224752000068 ], [ 23.052551215000108, 43.842819856000062 ], [ 23.13184859200004, 43.847944845000086 ], [ 23.161924275000104, 43.857324117000132 ], [ 23.196960896000121, 43.862750143000113 ], [ 23.23447798700002, 43.877297059000057 ], [ 23.325150732000054, 43.886592281000077 ], [ 23.484695272000096, 43.880604350000056 ], [ 23.592699016000068, 43.837428691000127 ], [ 23.620853516000068, 43.834009930000036 ], [ 23.636107219000053, 43.832157695000092 ], [ 23.720753215000059, 43.845826111000093 ], [ 23.742870727000053, 43.842699687000049 ], [ 23.799921509000058, 43.818463440000073 ], [ 24.149605832000134, 43.754719949000105 ], [ 24.159382772000129, 43.752937724000077 ], [ 24.336705387000052, 43.759250925000089 ], [ 24.35823368400014, 43.760017395000091 ], [ 24.375493612000042, 43.763867290000036 ], [ 24.431200806000078, 43.79417551700007 ], [ 24.46634077900012, 43.802417908000109 ], [ 24.500137166000115, 43.799498190000122 ], [ 24.661763224000083, 43.755656716000061 ], [ 24.705602661000057, 43.743765158000087 ], [ 24.752628215000101, 43.738804220000134 ], [ 24.963674764000075, 43.749604594000061 ], [ 25.08160038200009, 43.71893463100011 ], [ 25.211308227000131, 43.711880799000113 ], [ 25.252339315000086, 43.70464609800004 ], [ 25.285404775000075, 43.690391315000113 ], [ 25.288719523000083, 43.688962301000089 ], [ 25.323032674000103, 43.669712830000066 ], [ 25.359619588000044, 43.654287415000056 ], [ 25.403131144000071, 43.650049948000117 ], [ 25.426075480000094, 43.654390767000081 ], [ 25.467416626000045, 43.667749125000114 ], [ 25.482450035000113, 43.669714753000051 ], [ 25.488758993000118, 43.670539653000077 ], [ 25.533820841000079, 43.668679301000083 ], [ 25.556558472000063, 43.670358785000133 ], [ 25.575058634000072, 43.677386780000035 ], [ 25.593868856000086, 43.680668234000024 ], [ 25.616503134000141, 43.687747904000048 ], [ 25.637897176000138, 43.697282207000057 ], [ 25.653503458000102, 43.708134257000097 ], [ 25.671383504000062, 43.717358500000103 ], [ 25.73294793700012, 43.718781011000033 ], [ 25.739596395000092, 43.71893463100011 ], [ 25.781144246000082, 43.732008769000089 ], [ 25.804398641000091, 43.759914042000077 ], [ 25.806258993000085, 43.763660584000093 ], [ 25.839331909000094, 43.788439433000121 ], [ 25.869304240000133, 43.8008934530001 ], [ 25.916433146000116, 43.844379171000099 ], [ 25.924494670000115, 43.858616028000085 ], [ 25.93400313300009, 43.870320740000068 ], [ 26.054305868000085, 43.934322001000055 ], [ 26.061643921000098, 43.949773254000064 ], [ 26.079317260000096, 43.969048564000076 ], [ 26.116214233000107, 43.998865865000084 ], [ 26.150734091000089, 44.012405090000073 ], [ 26.231452678000039, 44.027494609000058 ], [ 26.310517619000109, 44.052609355000101 ], [ 26.332335498000106, 44.054926298000026 ], [ 26.41579067300006, 44.063788794000033 ], [ 26.614168335000102, 44.084855448000042 ], [ 26.647758016000125, 44.093382060000067 ], [ 26.667808471000086, 44.095087382000116 ], [ 26.677316935000079, 44.097051087000068 ], [ 26.697212361000084, 44.106094463000034 ], [ 26.708684530000085, 44.108109843000079 ], [ 26.753694702000104, 44.108109843000079 ], [ 26.789454793000033, 44.115964661000106 ], [ 26.884126017000142, 44.156530660000044 ], [ 27.001534871000075, 44.165108949000057 ], [ 27.027476441000118, 44.177046204000106 ], [ 27.100236857000084, 44.144490052000066 ], [ 27.20555342600008, 44.129245504000011 ], [ 27.226740763000066, 44.120718893000088 ], [ 27.251132039000083, 44.122372539000139 ], [ 27.252662458000145, 44.121518866000116 ], [ 27.269012085000043, 44.112398987000034 ], [ 27.264309530000048, 44.089764710000082 ], [ 27.285341838000079, 44.072453105000079 ], [ 27.341669149000069, 44.053074443000099 ], [ 27.353554728000091, 44.045271302000089 ], [ 27.372881714000073, 44.020724996000126 ], [ 27.383837117000041, 44.015092265000106 ], [ 27.57452315200004, 44.016280823000017 ], [ 27.633434285000135, 44.029768372000092 ], [ 27.656275268000059, 44.023877259000074 ], [ 27.676119019000055, 43.99354319300005 ], [ 27.682514976000078, 43.987256010000038 ], [ 27.72169763100004, 43.948739726000071 ], [ 27.787326701000069, 43.960418600000139 ], [ 27.856469767000135, 43.988633932000113 ], [ 27.912073608000071, 43.993336487000079 ], [ 27.912073608000071, 43.993233134000064 ], [ 27.935844767000106, 43.964397685000023 ], [ 27.981009969000098, 43.849340109000053 ], [ 28.014806355000076, 43.830038961000099 ], [ 28.221253703000059, 43.761981100000128 ], [ 28.434574015000123, 43.735212707000045 ], [ 28.578379754000082, 43.741278387000108 ], [ 28.576182488000086, 43.727525132000011 ], [ 28.573090040000125, 43.606146552000098 ], [ 28.575531446000042, 43.593329169000043 ], [ 28.58570397200009, 43.575832424000112 ], [ 28.595876498000052, 43.563706773 ], [ 28.602712436000076, 43.552720445000062 ], [ 28.603526238000086, 43.538153387000108 ], [ 28.594574415000039, 43.512518622000044 ], [ 28.578461134000065, 43.480780341000099 ], [ 28.560313347000061, 43.453843492000033 ], [ 28.545176629000082, 43.442531643000052 ], [ 28.53500410200013, 43.438625393000052 ], [ 28.488617384000065, 43.406439520000106 ], [ 28.479258660000113, 43.396795966000042 ], [ 28.473887566000087, 43.384263414000117 ], [ 28.473155144000145, 43.366848049000055 ], [ 28.459483269000117, 43.380682684000078 ], [ 28.414561394000089, 43.398871161000045 ], [ 28.404958530000044, 43.40468984600011 ], [ 28.393809441000116, 43.414292710000097 ], [ 28.368662957000112, 43.421779690000051 ], [ 28.321625196000099, 43.428290106000048 ], [ 28.299164259000094, 43.425034898 ], [ 28.261566602000102, 43.410956122000073 ], [ 28.243174675000063, 43.4077822940001 ], [ 28.177989129000139, 43.409979559000078 ], [ 28.157237175000063, 43.4077822940001 ], [ 28.11882571700005, 43.391546942000048 ], [ 28.091563347000147, 43.363959052000041 ], [ 28.087006056000092, 43.355251369000058 ], [ 28.031097852000045, 43.248968817000048 ], [ 28.017588738000086, 43.232733466000099 ], [ 28.000173373000109, 43.223211981000105 ], [ 27.931976759000094, 43.209784247000101 ], [ 27.920583530000016, 43.204046942000048 ], [ 27.91382897200009, 43.202337958000044 ], [ 27.903981967000078, 43.202337958000044 ], [ 27.903981967000078, 43.195502020000021 ], [ 27.938731316000116, 43.176499742000033 ], [ 27.945567254000139, 43.168850002000084 ], [ 27.944346550000034, 43.157131252000084 ], [ 27.92514082100007, 43.11359284100007 ], [ 27.911387566000144, 43.06517161700009 ], [ 27.904307488000086, 43.055853583000044 ], [ 27.895518425000034, 43.049261786000073 ], [ 27.887705925000034, 43.042141018000024 ], [ 27.883555535000085, 43.030991929000095 ], [ 27.885427280000073, 43.008612372000073 ], [ 27.900401238000086, 42.962876695000062 ], [ 27.903981967000078, 42.942287502000028 ], [ 27.898448113000143, 42.874660549000083 ], [ 27.903981967000078, 42.859686591000042 ], [ 27.883962436000104, 42.848374742000061 ], [ 27.883555535000085, 42.831935940000051 ], [ 27.891612175000034, 42.81037018400005 ], [ 27.897146030000044, 42.784002997000044 ], [ 27.897146030000044, 42.736232815000108 ], [ 27.894704623000109, 42.717474677000041 ], [ 27.892263217000078, 42.710516669000071 ], [ 27.841075066000116, 42.708319403000075 ], [ 27.787364129000139, 42.71515534100007 ], [ 27.743174675000091, 42.716050523000064 ], [ 27.73267662900011, 42.714504299000026 ], [ 27.725596550000063, 42.708482164000117 ], [ 27.719004754000082, 42.694566148000064 ], [ 27.715830925, 42.683742580000057 ], [ 27.716970248000052, 42.674505927000098 ], [ 27.724131707000083, 42.666978257000039 ], [ 27.739512566000116, 42.661078192000105 ], [ 27.71273847700013, 42.657660223000079 ], [ 27.669200066000087, 42.643703518000024 ], [ 27.646739129000082, 42.640570380000042 ], [ 27.62842858200014, 42.628973700000131 ], [ 27.630381707000083, 42.602728583000015 ], [ 27.641449415000125, 42.574774481000077 ], [ 27.65015709700009, 42.55805084800005 ], [ 27.634043816000116, 42.563706773000035 ], [ 27.540863477000102, 42.565497137000108 ], [ 27.51148522200009, 42.553045966000099 ], [ 27.498545769000089, 42.532456773000064 ], [ 27.491465691000116, 42.507757880000071 ], [ 27.48015384200005, 42.482896226000037 ], [ 27.462250196000099, 42.489569403000075 ], [ 27.452891472000147, 42.480129299000083 ], [ 27.453379754000139, 42.465236721000025 ], [ 27.465668165000096, 42.455633856000048 ], [ 27.462087436000047, 42.448716539000145 ], [ 27.461110873000052, 42.443548895000049 ], [ 27.465668165000096, 42.428290106000077 ], [ 27.46843509200005, 42.435777085000041 ], [ 27.469899936000019, 42.437079169000043 ], [ 27.469411655000044, 42.437201239000018 ], [ 27.465668165000096, 42.441351630000042 ], [ 27.472666863000086, 42.461859442000105 ], [ 27.503916863000143, 42.437323309000078 ], [ 27.514170769000089, 42.4351260440001 ], [ 27.526377800000063, 42.443670966000099 ], [ 27.534434441000087, 42.455267645000021 ], [ 27.544444207000083, 42.460028387000108 ], [ 27.562022332000112, 42.448187567000076 ], [ 27.571055535000113, 42.458482164000088 ], [ 27.57960045700014, 42.457220770000077 ], [ 27.587738477000045, 42.451483466000099 ], [ 27.59555097700013, 42.448187567000076 ], [ 27.609629754000082, 42.451157945000091 ], [ 27.619476759000094, 42.455877997000073 ], [ 27.629405144000117, 42.458644924000055 ], [ 27.643321160000085, 42.455633856000048 ], [ 27.64283287900011, 42.450506903000132 ], [ 27.641774936000047, 42.44953034100007 ], [ 27.639821811000104, 42.449774481000105 ], [ 27.636485222000061, 42.448187567000076 ], [ 27.642425977000102, 42.430894273000064 ], [ 27.65219160200013, 42.418524481000134 ], [ 27.667735222000118, 42.416083075000103 ], [ 27.69166100400011, 42.428290106000077 ], [ 27.693532748000081, 42.418890692000048 ], [ 27.699066602000073, 42.413885809000107 ], [ 27.707855665000068, 42.41274648600006 ], [ 27.719004754000082, 42.414699611000117 ], [ 27.719004754000082, 42.407212632000039 ], [ 27.713226759000094, 42.405951239000046 ], [ 27.698008660000113, 42.400376695000034 ], [ 27.705414259000122, 42.39061107 ], [ 27.709646030000044, 42.388128973000079 ], [ 27.719004754000082, 42.38670482 ], [ 27.709483269000089, 42.376776434000078 ], [ 27.708343946000127, 42.36310455900005 ], [ 27.71436608200014, 42.349188544000071 ], [ 27.725840691000087, 42.338934637000051 ], [ 27.740407748000109, 42.334295966000127 ], [ 27.752126498000109, 42.335394598000079 ], [ 27.764496290000039, 42.338324286000102 ], [ 27.780446811000047, 42.338934637000051 ], [ 27.780446811000047, 42.332709052000098 ], [ 27.774587436000104, 42.327215887000051 ], [ 27.774424675000063, 42.32172272300005 ], [ 27.779144727000045, 42.316310940000079 ], [ 27.787852410000141, 42.310980536000017 ], [ 27.762950066000087, 42.29559967700007 ], [ 27.751149936000047, 42.277044989000075 ], [ 27.755869988000143, 42.25849030200007 ], [ 27.780446811000047, 42.243353583000072 ], [ 27.776052280000073, 42.240668036000102 ], [ 27.775645379000053, 42.23965078300003 ], [ 27.77369225400011, 42.2359072940001 ], [ 27.809743686000076, 42.218410549000055 ], [ 27.815277540000096, 42.211981512000136 ], [ 27.819997592000107, 42.204657294000128 ], [ 27.83139082100007, 42.195013739000046 ], [ 27.844899936000047, 42.186102606000105 ], [ 27.856211785000113, 42.181301174000026 ], [ 27.854177280000101, 42.177923895000021 ], [ 27.85141035200013, 42.170111395000021 ], [ 27.84937584700009, 42.167059637000108 ], [ 27.879079623000024, 42.154242255000099 ], [ 27.886729363000143, 42.147365627000084 ], [ 27.903981967000078, 42.11981842700007 ], [ 27.957774285000113, 42.094305731000077 ], [ 27.964366082000083, 42.084621486000088 ], [ 27.972666863000057, 42.075384833000044 ], [ 27.986582879000139, 42.072088934000107 ], [ 27.982432488000114, 42.061102606000048 ], [ 27.987315300000091, 42.051743882000011 ], [ 27.996918165000068, 42.044012762000108 ], [ 28.007009311000019, 42.037909247000101 ], [ 28.00757897200009, 42.032904364000075 ], [ 28.00611412900011, 42.03156159100007 ], [ 28.00342858200014, 42.031480210000012 ], [ 28.000173373000109, 42.030462958000044 ], [ 28.011566602000073, 42.021389065000051 ], [ 28.01905358200014, 42.008449611000032 ], [ 28.020355665000125, 41.994574286000045 ], [ 28.013845248000052, 41.982652085000012 ], [ 28.016774936000076, 41.972560940000051 ], [ 28.016783431046946, 41.972531457013588 ], [ 27.981009969000098, 41.978524069000059 ], [ 27.965920451000102, 41.982141419000129 ], [ 27.91703454600011, 41.977903951000087 ], [ 27.903391968000108, 41.981056213000045 ], [ 27.876933634000096, 41.990719707000068 ], [ 27.852232300000111, 41.995448100000061 ], [ 27.843033895000104, 41.995758159000047 ], [ 27.824016968000137, 41.99348439500011 ], [ 27.819934529000108, 41.994698792000037 ], [ 27.815955445000043, 41.995138042000065 ], [ 27.81192468200004, 41.994698792000037 ], [ 27.807997274000087, 41.99348439500011 ], [ 27.804948364000069, 41.983433329000093 ], [ 27.804896687000053, 41.969894104000105 ], [ 27.802726278000137, 41.960049744000031 ], [ 27.818280884000075, 41.952866720000088 ], [ 27.815335327000071, 41.94679473900004 ], [ 27.802829631000066, 41.943074036000013 ], [ 27.789807170000131, 41.942686463000115 ], [ 27.776164592000043, 41.946122945000042 ], [ 27.723971395000063, 41.967594503000072 ], [ 27.687074422000109, 41.968602193000066 ], [ 27.609301392000106, 41.953486837000042 ], [ 27.606872599000042, 41.943513285000051 ], [ 27.603358602000071, 41.938629863000102 ], [ 27.598087606000064, 41.938604025000103 ], [ 27.590542847000108, 41.942893169000058 ], [ 27.582377970000067, 41.934883322000076 ], [ 27.572197713, 41.929844869000107 ], [ 27.55075199400008, 41.924212138000087 ], [ 27.55209558100006, 41.921835022000039 ], [ 27.554886108000119, 41.920336405000029 ], [ 27.557935018000137, 41.919070334000082 ], [ 27.560673869000084, 41.917675070000115 ], [ 27.55746993000011, 41.915504659000106 ], [ 27.55126875800002, 41.913101705000059 ], [ 27.548891642000086, 41.91087961900007 ], [ 27.56274092600006, 41.906435445000056 ], [ 27.546411173000109, 41.901164449000134 ], [ 27.533182007000107, 41.908063253000108 ], [ 27.509462524000071, 41.933177999000122 ], [ 27.494321330000048, 41.942841492000042 ], [ 27.420837443000096, 41.973718160000033 ], [ 27.396859578000061, 41.989324443000072 ], [ 27.374845418000092, 42.008703105000052 ], [ 27.332470744000091, 42.057433981000088 ], [ 27.305288940000082, 42.077587789000063 ], [ 27.273352906000099, 42.091747132000108 ], [ 27.238212931000078, 42.097922465000096 ], [ 27.216405477000137, 42.095622864000063 ], [ 27.203796427000015, 42.088129781000134 ], [ 27.181575561000074, 42.06588307700008 ], [ 27.178991740000072, 42.061878154000084 ], [ 27.178164917000061, 42.058364156000039 ], [ 27.173824097000079, 42.057072246000075 ], [ 27.149587849000085, 42.061826478000086 ], [ 27.127211954000103, 42.062575786000082 ], [ 27.116049845000077, 42.061826478000086 ], [ 27.100650268000095, 42.071102397000089 ], [ 27.083700398000076, 42.078414612000074 ], [ 27.065510294000035, 42.082703756000058 ], [ 27.047903041000097, 42.082919649000075 ], [ 27.046545044000084, 42.082936300000114 ], [ 27.022618856000094, 42.073892924000063 ], [ 27.000397990000067, 42.042809550000101 ], [ 26.981071004000086, 42.032861837000013 ], [ 26.967170044000113, 42.028495179000117 ], [ 26.958230021000105, 42.018237406000139 ], [ 26.950065144000064, 42.006170960000048 ], [ 26.938903035000038, 41.996223247000046 ], [ 26.930221395000075, 41.994517924000093 ], [ 26.911462850000078, 41.996791687000012 ], [ 26.901075887000076, 41.99348439500011 ], [ 26.890327189000061, 41.985422873000118 ], [ 26.881128784000055, 41.985526225000058 ], [ 26.871723674000094, 41.988135885000048 ], [ 26.860768269000118, 41.987903341000106 ], [ 26.850019572000093, 41.982864889000041 ], [ 26.837899181000097, 41.975219503000091 ], [ 26.827695353000109, 41.968783061000096 ], [ 26.819427124000072, 41.965656636000062 ], [ 26.808420044000087, 41.967878724000059 ], [ 26.78991988100006, 41.979945170000036 ], [ 26.780566447000126, 41.983433329000093 ], [ 26.768577515000061, 41.980771994000065 ], [ 26.746976766000103, 41.964493917000141 ], [ 26.736744833000103, 41.958964539000135 ], [ 26.717572876000105, 41.957310893000084 ], [ 26.62357344600008, 41.969041444000084 ], [ 26.605693400000092, 41.967413636000032 ], [ 26.589467, 41.958757834000068 ], [ 26.560631552000075, 41.935684306000013 ], [ 26.553293497000084, 41.931576030000087 ], [ 26.547092326000097, 41.926899312000018 ], [ 26.542958211000069, 41.920362244000046 ], [ 26.544715210000049, 41.916434835000075 ], [ 26.556807495000044, 41.910750427000039 ], [ 26.559804728000131, 41.907339783000111 ], [ 26.55897790500012, 41.90173289000009 ], [ 26.554740438000067, 41.892947897000084 ], [ 26.553603557000145, 41.887702739000076 ], [ 26.552894853000026, 41.881643325000084 ], [ 26.552053263000118, 41.874447734000057 ], [ 26.547815796000094, 41.856283468000129 ], [ 26.539547567000028, 41.837990011000073 ], [ 26.526111694000093, 41.824244080000113 ], [ 26.478362671000099, 41.813288676000042 ], [ 26.37552657100008, 41.816621806000057 ], [ 26.334185425000044, 41.789543355 ], [ 26.320026082000084, 41.765462138000146 ], [ 26.316305379000084, 41.74375803600006 ], [ 26.323230021000143, 41.7236817430001 ], [ 26.333358602000118, 41.71303639700011 ], [ 26.294911336000069, 41.710323385000066 ], [ 26.273930705000055, 41.714896749000019 ], [ 26.261011597000049, 41.723061626000032 ], [ 26.234449910000137, 41.745825094000026 ], [ 26.226181681000099, 41.749674988000066 ], [ 26.2118156330001, 41.750475973000079 ], [ 26.189904826000117, 41.734688823000084 ], [ 26.13512780800005, 41.733396912000046 ], [ 26.108359415000081, 41.72789337200004 ], [ 26.081487671000076, 41.71151194300009 ], [ 26.07404626500005, 41.709134827000042 ], [ 26.067224975000101, 41.708850606000084 ], [ 26.06050704000009, 41.707300314000065 ], [ 26.053685750000113, 41.701512553000072 ], [ 26.048104695000092, 41.689084371 ], [ 26.047484578000137, 41.674614970000079 ], [ 26.0502751060001, 41.660455627000033 ], [ 26.055029337000093, 41.64875091600004 ], [ 26.05948958500008, 41.643776770000073 ], [ 26.066914917000105, 41.635495911000135 ], [ 26.08117761200009, 41.63045745900007 ], [ 26.095233602000121, 41.628390401000019 ], [ 26.106705770000133, 41.624282125000093 ], [ 26.115284057000054, 41.616634013000123 ], [ 26.121071818000132, 41.60821075500013 ], [ 26.130270223000139, 41.582682597000087 ], [ 26.130993693000022, 41.575137838000046 ], [ 26.129443400000099, 41.559376527000069 ], [ 26.13120039800009, 41.552658590000135 ], [ 26.136781453000111, 41.549196269000106 ], [ 26.15249108900008, 41.547025859000115 ], [ 26.158072144000073, 41.542323303000046 ], [ 26.163136434000052, 41.529145813000042 ], [ 26.164480021000116, 41.517725322000047 ], [ 26.162929728000108, 41.506459860000092 ], [ 26.159312378000038, 41.493799134000142 ], [ 26.147633504000055, 41.484755758000091 ], [ 26.145876506000064, 41.478037822000061 ], [ 26.156211792000079, 41.460416158000072 ], [ 26.160449260000121, 41.455868632000033 ], [ 26.174298543000106, 41.445998434000046 ], [ 26.177399129000037, 41.439952291000111 ], [ 26.175642130000142, 41.431890767000112 ], [ 26.170577840000078, 41.429565328000081 ], [ 26.164273316000077, 41.427860006000031 ], [ 26.159002319000138, 41.421813863000096 ], [ 26.147840210000112, 41.396905823000111 ], [ 26.132440633000016, 41.371532695000042 ], [ 26.120865112000075, 41.357786764000082 ], [ 26.114663941000089, 41.355202942000091 ], [ 26.107325887000087, 41.356598206000058 ], [ 26.02185306800007, 41.341663717000102 ], [ 26.008933960000064, 41.336806132000078 ], [ 25.982268921000127, 41.323266907000118 ], [ 25.959634643000072, 41.314998678000052 ], [ 25.948575887000061, 41.313965150000087 ], [ 25.935140015000115, 41.31592885400002 ], [ 25.921187378000127, 41.316032206000045 ], [ 25.896279338000056, 41.306265361000101 ], [ 25.882016642000082, 41.304043274000094 ], [ 25.862689657000118, 41.310089417000114 ], [ 25.833337443000062, 41.334635722000087 ], [ 25.811013224000078, 41.341043600000035 ], [ 25.800781290000117, 41.338046366000128 ], [ 25.763470906000066, 41.319029440000065 ], [ 25.72874434400012, 41.317065735000114 ], [ 25.71747888200008, 41.314120178000024 ], [ 25.705179891000029, 41.307298889000066 ], [ 25.698048543000084, 41.301924540000101 ], [ 25.691227255000058, 41.298410543000045 ], [ 25.679961792000086, 41.297170309000109 ], [ 25.670453328000093, 41.299185689000069 ], [ 25.649576050000121, 41.30848744700009 ], [ 25.639757528000047, 41.311071269000081 ], [ 25.551494182000084, 41.315670471000146 ], [ 25.537954956000107, 41.312208150000089 ], [ 25.530203491000094, 41.30275136400013 ], [ 25.523692261000122, 41.29169260700013 ], [ 25.514907267000126, 41.28347605400009 ], [ 25.50508874500008, 41.280582174000102 ], [ 25.497337280000067, 41.281202291000085 ], [ 25.489482462000126, 41.283062643000079 ], [ 25.479095500000113, 41.283786112000087 ], [ 25.453463989000056, 41.280427144000072 ], [ 25.285722290000052, 41.239396057000107 ], [ 25.262261190000089, 41.238104147000058 ], [ 25.239110148000094, 41.240894674000032 ], [ 25.219679810000116, 41.249731344000026 ], [ 25.177098430000058, 41.293863017000035 ], [ 25.157874797000119, 41.30611033200006 ], [ 25.153847445000054, 41.307535008000059 ], [ 25.116533650000093, 41.320734762000114 ], [ 25.112606242000112, 41.324145406000042 ], [ 25.104854777000128, 41.334067282000035 ], [ 25.101857544000097, 41.336651103000037 ], [ 25.096793254000119, 41.336702779000063 ], [ 25.080360148000068, 41.334067282000035 ], [ 24.916959269000074, 41.386363831000068 ], [ 24.88636682200007, 41.400626526000025 ], [ 24.872930949000107, 41.401866761000065 ], [ 24.863009074000104, 41.400316468000142 ], [ 24.842131795000029, 41.394735413000035 ], [ 24.803271118000083, 41.392668355000069 ], [ 24.800170532000038, 41.379335836000052 ], [ 24.802857706000054, 41.361920878 ], [ 24.794279419000134, 41.34739980100008 ], [ 24.774435669000127, 41.34807159500005 ], [ 24.752628215000101, 41.362747701000046 ], [ 24.718728475000091, 41.395717265000087 ], [ 24.69919478300011, 41.408946432000079 ], [ 24.680901326000111, 41.415509338000078 ], [ 24.661264282000104, 41.417679749000058 ], [ 24.638216594000113, 41.417679749000058 ], [ 24.644314413000075, 41.42765330000006 ], [ 24.609484497000039, 41.427239888000059 ], [ 24.595841919000122, 41.429772034000052 ], [ 24.58044234200014, 41.440520732000067 ], [ 24.579718872000029, 41.444189759000068 ], [ 24.58219934100012, 41.455248515000079 ], [ 24.581062459000094, 41.460209453000118 ], [ 24.577238403000052, 41.463568421000048 ], [ 24.567729939000088, 41.468115947000058 ], [ 24.564112589000104, 41.471061504000062 ], [ 24.558738241000128, 41.476849264000037 ], [ 24.553570598000135, 41.480776673 ], [ 24.549436483000108, 41.485427552000061 ], [ 24.54654260300012, 41.493644104000111 ], [ 24.543338664000146, 41.521342672000031 ], [ 24.53093632000008, 41.54754262300014 ], [ 24.510162395000123, 41.561650289000085 ], [ 24.481326945000092, 41.553227031000091 ], [ 24.45920943200008, 41.549506328000092 ], [ 24.438848917000144, 41.527698873000048 ], [ 24.423966105000119, 41.525218405000089 ], [ 24.40288212100009, 41.527853902000089 ], [ 24.387482544000108, 41.526665345000083 ], [ 24.353892863000084, 41.519120586000042 ], [ 24.345004517000064, 41.518397115000113 ], [ 24.318236124000094, 41.520774231000075 ], [ 24.309554484000046, 41.519792379000108 ], [ 24.303043254000073, 41.516950175000034 ], [ 24.296118612000072, 41.51524485300007 ], [ 24.286816854000051, 41.517621969000118 ], [ 24.285059855000071, 41.523151347000123 ], [ 24.287333618000105, 41.531626282000019 ], [ 24.286403442000051, 41.540359599000084 ], [ 24.26686975100003, 41.549764710000062 ], [ 24.250746704000051, 41.563458964000063 ], [ 24.23328007, 41.56180531800004 ], [ 24.214366496000082, 41.555759176000066 ], [ 24.197697918000074, 41.547710635000101 ], [ 24.196279744000066, 41.547025859000115 ], [ 24.18160363800007, 41.537362366000082 ], [ 24.177469523000127, 41.531006165000065 ], [ 24.173128703000145, 41.515296529000096 ], [ 24.170234823000072, 41.511575826000069 ], [ 24.162793416000056, 41.512040914000096 ], [ 24.158452596000075, 41.516330058000079 ], [ 24.154008423000079, 41.52211781800014 ], [ 24.146256958000066, 41.526768697000108 ], [ 24.116491333000084, 41.533383280000095 ], [ 24.076597127000127, 41.536018779000102 ], [ 24.047348267000075, 41.525735169000114 ], [ 24.049828736000052, 41.493644104000111 ], [ 24.052515910000096, 41.471474915000073 ], [ 24.051999146000043, 41.462999980000063 ], [ 24.045901327000081, 41.455455221000108 ], [ 24.034739217000066, 41.451321106000108 ], [ 24.022853637000139, 41.453078105000088 ], [ 24.000736125000117, 41.464136861000071 ], [ 23.997118774000057, 41.457005514000059 ], [ 23.992364542000132, 41.454628398000096 ], [ 23.986886841000057, 41.453698222000043 ], [ 23.981305786000036, 41.450856019000071 ], [ 23.964665975000116, 41.438350322000076 ], [ 23.949886515000117, 41.437575175000063 ], [ 23.902860962000119, 41.463516745000021 ], [ 23.894799438000035, 41.464343567000043 ], [ 23.867720988000087, 41.445481669000117 ], [ 23.851597941000108, 41.439590556000013 ], [ 23.83092736800009, 41.43561147000014 ], [ 23.809740031000047, 41.433802795000133 ], [ 23.792066691000116, 41.434474589000018 ], [ 23.777080526000049, 41.429048564000141 ], [ 23.754446248000107, 41.400678202000051 ], [ 23.738219848000085, 41.397474264000067 ], [ 23.705353638000076, 41.403158671000114 ], [ 23.672177368000064, 41.402951965000057 ], [ 23.6528503830001, 41.397629293000108 ], [ 23.627735637000086, 41.378509014000116 ], [ 23.624846740000066, 41.377093845000076 ], [ 23.612439412000128, 41.371015931000073 ], [ 23.578953084000119, 41.37199778300004 ], [ 23.513013957000112, 41.397732646000037 ], [ 23.414518677000046, 41.399903056000113 ], [ 23.395501750000079, 41.39525217700006 ], [ 23.36511600700004, 41.378560690000114 ], [ 23.34723596200007, 41.371222636000141 ], [ 23.326048625000112, 41.369310608000035 ], [ 23.315609985000066, 41.376855367000076 ], [ 23.306204875000105, 41.388379212000103 ], [ 23.287704712000078, 41.398197734000064 ], [ 23.269928019000048, 41.397267558000124 ], [ 23.246570272000099, 41.389722799000054 ], [ 23.224246053000059, 41.379025778000056 ], [ 23.209776652000102, 41.368587138000123 ], [ 23.206366007000099, 41.36093902600004 ], [ 23.204815714000063, 41.342697245000096 ], [ 23.19954471900013, 41.332982076000064 ], [ 23.190656372000035, 41.326057435000081 ], [ 23.179700968000134, 41.321354879000097 ], [ 23.157170043000121, 41.316342265000031 ], [ 23.115208781000035, 41.312673238000031 ], [ 22.916977986000063, 41.335772604000113 ], [ 22.94085249800014, 41.349828593000041 ], [ 22.944469849000114, 41.368432109000082 ], [ 22.939405558000146, 41.389412740000068 ], [ 22.937338501000085, 41.410755107000085 ], [ 22.940542440000058, 41.416904602000045 ], [ 22.952117960000095, 41.427704976000086 ], [ 22.954598429000072, 41.43240753200007 ], [ 22.953358195000135, 41.438195293000035 ], [ 22.947570435000074, 41.448375549000104 ], [ 22.946226848000094, 41.453233135000119 ], [ 22.943599338000126, 41.523201176000072 ], [ 22.943022909000035, 41.538550924000106 ], [ 22.947880493000071, 41.555139059000112 ], [ 22.948707316000082, 41.560978495000086 ], [ 22.946433553000077, 41.567748108000046 ], [ 22.936925090000074, 41.578910218000061 ], [ 22.9337211510001, 41.584594625000108 ], [ 22.932067505000049, 41.597952983000141 ], [ 22.932997681000103, 41.612344869000054 ], [ 22.936098266000045, 41.626168315000115 ], [ 22.94085249800014, 41.637640483000041 ], [ 22.945813436000094, 41.641076966000071 ], [ 22.961523071000073, 41.644487611000073 ], [ 22.967000773000052, 41.647045594000076 ], [ 22.970101359000097, 41.65203236900004 ], [ 22.976612590000059, 41.66655344600008 ], [ 22.985434528000098, 41.677197757000073 ], [ 22.998626750000142, 41.693115133000106 ], [ 23.00958215300011, 41.716369528000115 ], [ 23.008858683000113, 41.739933980000018 ], [ 22.991185344000115, 41.760992127000037 ], [ 22.98053999800004, 41.764738668000064 ], [ 22.956872192000105, 41.765668844000118 ], [ 22.945916788000119, 41.769337870000101 ], [ 22.939715617000047, 41.776701762000101 ], [ 22.918321573000128, 41.814348043000052 ], [ 22.907676229000117, 41.848583679000058 ], [ 22.901371704000013, 41.860417582000053 ], [ 22.896720825000045, 41.864448344000067 ], [ 22.88504195200008, 41.869150899000033 ], [ 22.88208830500011, 41.871618275000088 ], [ 22.880804484000123, 41.872690735000077 ], [ 22.878220662000047, 41.88026133300005 ], [ 22.878634073000057, 41.895014954000146 ], [ 22.877083781000124, 41.902042949000077 ], [ 22.866335083000109, 41.924883932000085 ], [ 22.858893677000083, 41.947879944000107 ], [ 22.857136678000103, 41.971883647000141 ], [ 22.85475956200014, 41.98263234500007 ], [ 22.846904744000113, 41.99348439500011 ], [ 22.846594686000032, 41.993639425000055 ], [ 22.845767863000106, 42.006868592000046 ], [ 22.845621159000132, 42.007407729000079 ], [ 22.843700806000044, 42.014465027000114 ], [ 22.838223104000065, 42.019477641000066 ], [ 22.82695764200011, 42.025084534000086 ], [ 22.821273234000046, 42.025368754000084 ], [ 22.805977010000106, 42.021389669000087 ], [ 22.79894901500009, 42.021234640000046 ], [ 22.791094198000053, 42.025808004000083 ], [ 22.787683553000136, 42.03257761600014 ], [ 22.785306437000088, 42.0391405230001 ], [ 22.780862264000064, 42.043171286000103 ], [ 22.770630330000103, 42.043998108000039 ], [ 22.725051717000099, 42.04247365400002 ], [ 22.718437134000112, 42.044463196000066 ], [ 22.713992961000116, 42.048623149000093 ], [ 22.710272258000089, 42.052989808000092 ], [ 22.705724731000146, 42.055935364000078 ], [ 22.675855753000036, 42.060612081000045 ], [ 22.627176665000036, 42.079126592000108 ], [ 22.617771443000066, 42.082703756000058 ], [ 22.531058390000112, 42.129109193000062 ], [ 22.510181112000026, 42.144792990000042 ], [ 22.506938534000142, 42.148927276000052 ], [ 22.494678182000115, 42.16455922500009 ], [ 22.481449015000123, 42.193317160000106 ], [ 22.443621867000047, 42.214426982000134 ], [ 22.345023234000053, 42.31343902600014 ], [ 22.364143514000148, 42.320983785000095 ], [ 22.405794718000067, 42.321552226000051 ], [ 22.423984822000108, 42.325893047000136 ], [ 22.438454223000036, 42.340052388000089 ], [ 22.454370565000147, 42.376768494000146 ], [ 22.46977014100014, 42.391702983000101 ], [ 22.485066365000108, 42.397154846000092 ], [ 22.497572062000103, 42.399196065000041 ], [ 22.508837525000075, 42.40493215 ], [ 22.519482870000047, 42.420926005000041 ], [ 22.533125448000078, 42.45759043400011 ], [ 22.536536092000091, 42.478390198000056 ], [ 22.532505330000106, 42.493402202000141 ], [ 22.532505330000106, 42.493557231000096 ], [ 22.524857218000108, 42.507664897000012 ], [ 22.512144816000074, 42.51918874200004 ], [ 22.481449015000123, 42.535621846000112 ], [ 22.429669230000059, 42.571407776000029 ], [ 22.425328410000077, 42.572854716000023 ], [ 22.428842407000047, 42.592775981000045 ], [ 22.441318219000038, 42.632891463000107 ], [ 22.444552042000083, 42.64328969400006 ], [ 22.449202921000051, 42.667965190000075 ], [ 22.442071573000106, 42.681685282000103 ], [ 22.468116496000107, 42.718323873000145 ], [ 22.481449015000123, 42.727677307000107 ], [ 22.482585897000035, 42.730674541000013 ], [ 22.482895955000117, 42.733775126000069 ], [ 22.482585897000035, 42.736824036000087 ], [ 22.481449015000123, 42.739821269000089 ], [ 22.46656620300007, 42.748528748000069 ], [ 22.453130331000125, 42.763592428000067 ], [ 22.429359172000062, 42.806122131000109 ], [ 22.425845174000102, 42.80984283500004 ], [ 22.427395467000053, 42.813615214000038 ], [ 22.430446174000025, 42.81707659300011 ], [ 22.436800578000089, 42.82428639800014 ], [ 22.445482218000052, 42.830177511000045 ], [ 22.470907023000052, 42.840125224000047 ], [ 22.481449015000123, 42.846739807000063 ], [ 22.497055298000078, 42.86441314700005 ], [ 22.506046997000112, 42.870123393000085 ], [ 22.519792928000129, 42.870355937000056 ], [ 22.537569621000074, 42.868340556000106 ], [ 22.544494262000057, 42.871389466000039 ], [ 22.544785162000068, 42.871706438000075 ], [ 22.549971965000054, 42.877358093000055 ], [ 22.563614542000039, 42.884282735000056 ], [ 22.590899699000147, 42.886892395000046 ], [ 22.666243937000047, 42.871932068000092 ], [ 22.696629680000086, 42.877409770000071 ], [ 22.727015422000136, 42.886892395000046 ], [ 22.738797648000059, 42.897382711 ], [ 22.73957861800011, 42.898857543000105 ], [ 22.74551558400006, 42.910069275000069 ], [ 22.763188924000076, 42.958645121000046 ], [ 22.769390096000052, 42.971280009000083 ], [ 22.776418091000068, 42.979729106000093 ], [ 22.788096964000147, 42.984896749000086 ], [ 22.815795532000067, 42.989702657000095 ], [ 22.828817993000115, 42.993449198000093 ], [ 22.828921346000129, 42.993449198000093 ], [ 22.829024699000058, 42.993500875000024 ], [ 22.829024699000058, 42.993655905000054 ], [ 22.842253865000146, 43.007505188000039 ], [ 22.884215128000051, 43.036650696000038 ], [ 22.889486124000086, 43.044376323000051 ], [ 22.896720825000045, 43.062721457000123 ], [ 22.901681763000113, 43.069749451000035 ], [ 22.910156698000094, 43.075278829000041 ], [ 22.927106568000113, 43.081144105000135 ], [ 22.935271443000119, 43.085562439000029 ], [ 22.955631958000055, 43.108274232000014 ], [ 22.974028768000068, 43.141192118000049 ], [ 22.984570760000111, 43.174626771000135 ], [ 22.982901935000143, 43.187317919000094 ], [ 22.981366822000069, 43.19899220800005 ], [ 22.964727010000047, 43.20441823400003 ], [ 22.915531046000069, 43.212247213000069 ], [ 22.897754353000039, 43.220334574000049 ], [ 22.88380171700004, 43.23059234700014 ], [ 22.857343384000046, 43.256947327 ], [ 22.833158814000086, 43.274646505000106 ], [ 22.82695764200011, 43.28139027900005 ], [ 22.823857056000065, 43.289296773000103 ], [ 22.820756469000116, 43.307538554000047 ], [ 22.817139119000046, 43.315496724000099 ], [ 22.804530070000112, 43.328984274000078 ], [ 22.733009888000083, 43.381513367000139 ], [ 22.724343132000087, 43.386060131000107 ], [ 22.719367309000063, 43.388670553000082 ], [ 22.702934204000087, 43.394044902000047 ], [ 22.693219035000055, 43.394871725000087 ], [ 22.674202108000088, 43.39414825500009 ], [ 22.664693644000096, 43.396732077000081 ], [ 22.658926066000106, 43.401295034000071 ], [ 22.656528768000101, 43.403191631000141 ], [ 22.645366658000057, 43.420296529000098 ], [ 22.63782190000012, 43.426368511000135 ], [ 22.628520141000081, 43.428254700000139 ], [ 22.606919393000112, 43.42740203800011 ], [ 22.596274048000112, 43.42915903800008 ], [ 22.586765584000119, 43.434430033000126 ], [ 22.572709595000106, 43.448150127000048 ], [ 22.565784953000048, 43.453343608000068 ], [ 22.53260868400011, 43.464841614000079 ], [ 22.518862752000075, 43.474246725000057 ], [ 22.509354288000111, 43.49334116600005 ], [ 22.49064742000013, 43.540883485000052 ], [ 22.478451783000111, 43.559228617000116 ], [ 22.477624959000082, 43.564163717000071 ], [ 22.478658488000065, 43.569176331000051 ], [ 22.481449015000123, 43.574111430000073 ], [ 22.48268925000005, 43.576695252000093 ], [ 22.483102661000061, 43.579279073000095 ], [ 22.48268925000005, 43.581733704000044 ], [ 22.481449015000123, 43.584136658 ], [ 22.478141723000107, 43.587573141000036 ], [ 22.477108194000039, 43.591293844000063 ], [ 22.478141723000107, 43.594911194000133 ], [ 22.481449015000123, 43.598528545000107 ], [ 22.481759074000109, 43.598941956000033 ], [ 22.481965780000053, 43.599458720000058 ], [ 22.481759074000109, 43.599975485000101 ], [ 22.481449015000123, 43.600647278000082 ], [ 22.47380090300004, 43.612997946000036 ], [ 22.472870728000089, 43.635942282000087 ], [ 22.466256144000084, 43.649119772000063 ], [ 22.455920858000098, 43.656406149000134 ], [ 22.426465291000085, 43.668214213000056 ], [ 22.41395959500008, 43.676663310000038 ], [ 22.404864543000116, 43.68717946400011 ], [ 22.396906372000046, 43.699400940000118 ], [ 22.390498495000116, 43.712449240000069 ], [ 22.386054321000103, 43.725497538000099 ], [ 22.385847616000063, 43.733817444000067 ], [ 22.389568319000148, 43.750508932000116 ], [ 22.38853479000008, 43.758286235000128 ], [ 22.362593221000026, 43.780842998000139 ], [ 22.349467407000077, 43.807921448000116 ], [ 22.354738403000084, 43.829703065000018 ], [ 22.367554159000065, 43.852750753000095 ], [ 22.377062622000068, 43.883524068000042 ], [ 22.379026326000087, 43.913496399000081 ], [ 22.382023560000107, 43.918560690000078 ], [ 22.39194543500011, 43.931867371000095 ], [ 22.394529256000112, 43.936337382 ], [ 22.396803019000117, 43.951943665000044 ], [ 22.397319783000057, 43.980934144000116 ], [ 22.399593546000091, 43.993336487000079 ], [ 22.411789184000099, 44.006927389000083 ], [ 22.434320109000112, 44.013955384000099 ], [ 22.465885257000139, 44.017624140000066 ], [ 22.481449015000123, 44.019433085000088 ], [ 22.503669882000054, 44.019898173000087 ], [ 22.514935343000019, 44.030285136000117 ], [ 22.522583455000103, 44.044702861000133 ], [ 22.534158976000128, 44.057156881000111 ], [ 22.554622844000107, 44.062427877000061 ], [ 22.575190064000083, 44.061394348000078 ], [ 22.592966757000113, 44.063926494000071 ], [ 22.604748982000018, 44.079377747000052 ], [ 22.604645630000107, 44.088162740000143 ], [ 22.598134399000116, 44.109298401000103 ], [ 22.597100871000038, 44.119065247000037 ], [ 22.599064575000085, 44.130330709000106 ], [ 22.609399861000099, 44.159941305000046 ], [ 22.607952921000106, 44.159992981000073 ], [ 22.605989217000058, 44.163145244000106 ], [ 22.604852335000146, 44.168467916000083 ], [ 22.606195923000115, 44.174565735000044 ], [ 22.608573039000078, 44.175857646000082 ], [ 22.624799438000082, 44.189396872000145 ], [ 22.63999231000011, 44.207328593000028 ], [ 22.648777303000088, 44.213994853000145 ], [ 22.691640373000098, 44.228434539 ], [ 22.906435995000095, 44.122889303000079 ], [ 22.942609497000035, 44.111468811000094 ], [ 22.988084757000081, 44.10702463800007 ], [ 23.008306709000095, 44.100446413000071 ], [ 23.03097619600004, 44.093072002000071 ], [ 23.040071248000089, 44.062324524000132 ], [ 23.023018025000084, 44.031628723000097 ], [ 22.988084757000081, 44.017676087000098 ], [ 22.96627730300014, 44.015557353000105 ], [ 22.926486450000141, 44.006152243000059 ], [ 22.905815877000123, 44.003981832000079 ], [ 22.885868774000102, 43.994525045000103 ], [ 22.874706665000076, 43.972045797000106 ], [ 22.850522095000088, 43.896985779 ], [ 22.851038859000141, 43.874351502000053 ], [ 22.863441203, 43.855412089000112 ], [ 22.888762655000079, 43.839521587000092 ], [ 22.919561808000054, 43.834224752000068 ] ]
;
lon lat name dim1 dim2 dim3
22.9811111 42.8497222 aldomirovci, slivnica 0.0470588 0.764706 0.239216
23.217 43.7 asparuhovo, lom 0.372549 0.843137 0.686275
27.8833333 43.1666667 asparuhovo, prov 0.960784 0.886275 0.647059
23.6833333 41.95 babjak, razl 0.568627 0.694118 0.976471
24.867 41.95 bachkovo, asgr 0.627451 0.411765 0.505882
22.76083 42.28028 bagrenci, kjust 0.188235 0.752941 0.643137
27.733 42.1 balgari, carev 0.615686 0.580392 0.670588
22.7286 42.7222 banishte, brezn 0.054902 0.784314 0.278431
23.5 41.8394444 bansko, razl 0.580392 0.709804 0.976471
24.4833333 43.25 beglezh, luk 0.737255 0.870588 0.780392
25.1166667 43.65 belene, svisht 0.87451 0.952941 0.607843
23.2333333 41.65 belica, razl 0.568627 0.745098 0.952941
23.08333 41.98333 bistrica, blgr 0.309804 0.760784 0.807843
22.9622222 42.6166667 bogdanov dol, pern 0.282353 0.8 0.611765
26.733 42.3 borisovo, elh 0.886275 1 0.784314
23.3780556 43.0325 bov, svog 0.27451 0.737255 0.698039
27.4333333 42.05 brashljan, mtarn 0.65098 0.52549 0.643137
23.13333 42.9666 buchin prohod, god 0.258824 0.792157 0.592157
23.1 41.63334 caparevo, sand 0.388235 0.831373 0.929412
22.53028 42.34833 cerovica, kjust 0.258824 0.780392 0.721569
24.683 41.733 chepelare, asgr 0.592157 0.196078 0.490196
24.4 42.267 chernogorovo, paz 0.607843 0.85098 0.764706
27.65 42.45 chernomorec, bs 0.894118 0.811765 0.74902
23.03333 42.41667 chukovec, radom 0.180392 0.756863 0.643137
24.28333 43.15 dermanci, luk 0.529412 0.807843 0.792157
24.1666667 43.3166667 devenci, luk 0.588235 0.811765 0.768627
25.71667 41.35 devesilica, krgr 0.568627 0.301961 0.482353
25.483 43.217 dichin, vtarn 0.952941 0.921569 0.572549
25.7 41.8833333 dinevo, hask 0.784314 0.494118 0.658824
22.9136111 43.2847222 diva slatina, mont 0.14902 0.784314 0.313725
26.9333333 43.2333333 divdjadovo, shum 0.968627 0.866667 0.658824
23.4833333 41.9666667 dobarsko, razl 0.596078 0.717647 1
26.31667 42.15 dobroselec, topgr 0.886275 0.968627 0.721569
23.2833333 42.8166667 dobroslavci, sof 0.247059 0.772549 0.6
23.683 41.583 dobrotino, gd 0.776471 0.615686 0.952941
23.8833333 43.1833333 dolna beshovica, vrach 0.407843 0.811765 0.666667
23.117 42.433 dolna dikanja, radom 0.215686 0.772549 0.686275
22.5255556 42.6705556 dolna melna, tran 0.121569 0.807843 0.223529
23.017 43.55 dolna riksa, mont 0.376471 0.854902 0.709804
25.7 43.5166667 dolna srudena, bel 0.921569 0.901961 0.6
23.5 42.7 dolni bogrov, sof 0.337255 0.737255 0.729412
24.2833 42.3667 dolno levski, pan 0.552941 0.901961 0.694118
24.13333 42.03333 dorkovo, velgr 0.580392 0.439216 0.490196
26.1583333 41.5022222 drabishna, ivgr 0.792157 0.427451 0.65098
25.733 43.067 dragizhevo, vtarn 0.901961 0.890196 0.627451
26.5666667 42.6166667 dragodanovo, sliv 0.890196 0.901961 0.756863
26.867 43.117 dragoevo, presl 0.992157 0.894118 0.682353
22.5 42.61666 dragojchinci, kjust 0.0784314 0.764706 0.27451
22.745 42.623 elov dol, pk 0.164706 0.792157 0.482353
25.4 42.6666667 enina, kaz 0.909804 0.870588 0.654902
24.7166667 41.6333333 ezerovo, parvom 0.658824 0.65098 0.639216
23.6 43.517 furen, vrach 0.380392 0.8 0.662745
23.9166667 43.3166667 gabare, bslat 0.462745 0.686275 0.596078
23.633 42.583 gabra, elpel 0.298039 0.772549 0.74902
24.283 43.01 galata, tetev 0.627451 0.819608 0.74902
25.5166667 42.9833333 ganchovec, drjan 0.878431 0.886275 0.698039
23.81667 41.6 garmen, gd 0.686275 0.533333 0.666667
26.91 44.117 garvan, sil 0.952941 0.898039 0.647059
23 41.45 gega, petr 0.431373 0.823529 0.921569
23.81667 43.7 glozhene, orjah 0.45098 0.8 0.658824
23.8 42.61666 golema rakovica, elpel 0.364706 0.756863 0.701961
23 42.9333333 golemo malovo, sliven 0.137255 0.772549 0.270588
27.55 42.9166667 golica, varn 0.901961 0.811765 0.690196
24.4666667 42.9666667 goljama zheljazna, tet 0.721569 0.843137 0.713725
26.0333 42.6833 goljamo shivachevo, sl 0.952941 0.92549 0.74902
25.13333 42.95 gorna rosica, sevl 0.913725 0.890196 0.65098
25.433 42.933 gorni varpishta, drjan 0.858824 0.960784 0.752941
23.4833333 42.25 govedarci, sam 0.298039 0.772549 0.741176
22.7519444 44.0288889 gradec, vd 0.305882 0.819608 0.592157
25.8 41.8833333 huhla, ivgr 0.752941 0.419608 0.662745
24.68333 41.86666 hvojna, asgr 0.635294 0.435294 0.419608
27.4167 42.2167 indzhe vojvoda, mtarn 0.647059 0.443137 0.635294
27.017 43.133 ivanski, shum 0.960784 0.878431 0.658824
25.3166667 42.3 izvorovo, harm 0.85098 0.72549 0.737255
25.283 41.75 javorovo, asgr 0.607843 0.423529 0.494118
27.2333333 44.083333 kalipetrovo, sil 0.929412 0.882353 0.619608
24.7333 42.35 kalojanovo, plov 0.843137 0.976471 0.647059
25.35 43.383 karaisen, pavl 0.952941 0.933333 0.619608
27.2 42.65 karanovo, ajt 0.886275 0.858824 0.733333
27.183 43.3 kaspichan, np 0.960784 0.854902 0.654902
25.1667 42.3833 kolju marinovo, chirp 0.811765 0.811765 0.682353
22.844 42.733 konska, brezn 0 0.780392 0.278431
22.9136111 43.3311111 kopilovci, mont 0.145098 0.784314 0.254902
24.35 42.63334 koprivshtica, pird 0.517647 0.862745 0.788235
26 42.55 korten, nzag 0.882353 0.901961 0.65098
23.81667 42.26667 kostenec, iht 0.341176 0.788235 0.827451
23.33333 42.45 kovachevci, sam 0.239216 0.764706 0.611765
27.5666667 42.8333333 kozichino, pom 0.894118 0.807843 0.690196
25.083 43.133 kramolin, sevl 0.937255 0.92549 0.545098
25.017 42.85 kravenik, sevl 0.878431 1 0.741176
23.7 43.1166667 kreta, vrach 0.521569 0.733333 0.8
26.3333333 43.65 krivnja, razgr 0.952941 0.909804 0.639216
23.3 41.483 levunovo, sand 0.384314 0.827451 0.945098
23.517 43.333 liljache, vr 0.4 0.843137 0.807843
23.75 43.03333 lipnica, botgr 0.32549 0.756863 0.682353
25.9666667 42.35 ljubenova mahala, nzag 0.894118 0.882353 0.662745
22.817 42.5 lobosh, rad 0.254902 0.784314 0.607843
23.483 42.6 lozen, sof 0.384314 0.807843 0.717647
26.633 42.133 malomirovo, elh 0.843137 0.929412 0.807843
23.1833 42.6 marchaevo, sof 0.239216 0.756863 0.603922
23.35 41.433 marikostinovo, petr 0.482353 0.811765 0.968627
27.233 43.2 markovo, shum 0.921569 0.870588 0.670588
25.783 43.05 merdanja, vtarn 0.913725 0.913725 0.619608
25.5 42.1333333 merichleri, chirp 0.878431 0.67451 0.741176
25.35 43.2 mihalci, pavl 0.929412 0.898039 0.588235
22.686 43.888 milchina laka, kul 0.368627 0.827451 0.607843
24.7833333 41.6666667 momchilovci, smol 0.572549 0.0509804 0.462745
24.7 42.5 momina banja, pl 0.772549 0.8 0.74902
23.967 42.217 momina klisura, pz 0.521569 0.713725 0.835294
26.15 41.85 momkovo, svgr 0.772549 0.74902 0.705882
24.5 41.617 mugla, dev 0.454902 0.168627 0.435294
26.1 43.85 nikolovo\lipnik\, rus 0.945098 0.937255 0.607843
25.417 41.833 nikolovo, hask 0.745098 0.556863 0.647059
22.87111 42.67944 noevci, brezn 0.129412 0.827451 0.411765
23.717 41.417 nova lovcha, gd 0.686275 0.509804 0.666667
25.7166667 42.0166667 nova nadezhda, hs 0.921569 0.560784 0.662745
25.367 43.067 novoselo, trojan 0.886275 0.882353 0.67451
26.817 42.7 ognen, karn 0.909804 0.866667 0.768627
26.133 42.45 omarchevo, nzag 0.894118 0.894118 0.662745
25.7 42.2166667 opan, stzag 0.901961 0.815686 0.717647
26.3833333 43.55 osenec, razgr 1 0.960784 0.627451
24.183 42.5 panagjurishte, gd 0.611765 0.807843 0.67451
25.48333 43.25 paskalevec, pavl 0.921569 0.894118 0.623529
24.7 41.8666667 pavelsko, asgr 0.639216 0.396078 0.439216
22.774 42.177 pelatikovo, kjust 0.243137 0.737255 0.686275
24.4833333 43.3166667 petarnica, plev 0.611765 0.729412 0.701961
26.6833333 43.2166667 pevec, targ 0.992157 0.894118 0.686275
25.683 42.967 plakovo, vt 0.870588 0.858824 0.619608
26.85 42.833 podvis, karn 0.878431 0.831373 0.72549
26.717 44.05 pozharevo, tutr 0.960784 0.901961 0.678431
22.6 43.717 rabisha, belgr 0.176471 0.8 0.352941
23.967 43.167 radovene, vr 0.478431 0.792157 0.788235
23.45 43.417 rakevo, vr 0.352941 0.807843 0.694118
22.47639 43.76611 rakovica, kul 0.337255 0.827451 0.596078
22.487 42.822 rani lug, tryn 0.0431373 0.792157 0.243137
22.957 43.014 razboishte, god 0.172549 0.807843 0.286275
22.5547222 42.3944444 ruzhinci, belgr 0.317647 0.811765 0.588235
26.3 43.483 sadina, pop 0.929412 0.886275 0.615686
23.3 42.3 saparevo, dup 0.266667 0.764706 0.752941
24.95 42.2666667 sekirovo, plov 0.878431 0.952941 0.533333
23.2333333 41.8166667 senokos, blgr 0.360784 0.807843 0.886275
23.1833 41.5167 sestrino, petr 0.407843 0.811765 0.929412
25.3333333 42.7166667 shipka, kaz 0.854902 0.854902 0.627451
24.583 41.683 shiroka laka, dev 0.72549 0.12549 0.482353
23.5166667 42.4 shiroki dol, sam 0.25098 0.752941 0.709804
27.5333333 43.3833333 shtipsko, prov 0.921569 0.85098 0.654902
26.317 42.483 skobelevo, sliv 0.941176 0.968627 0.643137
24.867 41.633 slaveino, smol 0.619608 0 0.458824
24.867 43.467 slavjanovo, plev 0.8 0.862745 0.694118
23.1 42.15 smochevo, dupn 0.384314 0.65098 0.686275
23.95 42.633 smolsko, pird 0.45098 0.811765 0.705882
24.583 41.65 solishta, dev 0.698039 0.14902 0.45098
25.66667 42.25 sredec, zlgr 0.666667 0.372549 0.52549
22.5669444 43.5461111 stakevci, blgr. 0.168627 0.811765 0
25.65 41.7666667 stambolovo, hask 0.862745 0.498039 0.619608
25.6833333 43.4833333 starmen, bel 0.894118 0.890196 0.623529
27.5166667 42.0333333 stoilovo, mt 0.631373 0.545098 0.639216
26.6833333 42.6 straldzha, jamb 0.929412 0.905882 0.74902
24.683 42.233 stroevo, plov 0.8 0.807843 0.72549
25.181 43.192 suhindol, vtarn 0.913725 0.894118 0.592157
23.08333 41.83333 sushica, blgr 0.341176 0.803922 0.878431
26.1833 42.15 svetlina, topgr 0.909804 0.886275 0.709804
25.9333333 42.0333333 svirkovo, harm 0.8 0.592157 0.690196
25.5 41.3 tihomir, krgr 0.533333 0.0705882 0.419608
25.8666667 42.2666667 tihomirovo, stzag 0.894118 0.890196 0.639216
26.433 42.65 topolchane, sliv 0.894118 0.882353 0.772549
25 43.4833333 trancovica, nik 0.862745 0.984314 0.658824
24.4666667 43.5166667 trastenik, plev 0.521569 0.913725 0.709804
24.7833333 41.5666667 ustovo, sm 0.54902 0.180392 0.431373
24.9 43.65 vabel, nik 0.913725 0.909804 0.65098
24.067 41.6 vaklinovo, gd 0.619608 0.509804 0.639216
26.017 41.7 valche pole, svgr 0.666667 0.580392 0.627451
26.633339 43 varbica, presl 0.968627 0.894118 0.694118
22.646 43.543 varbovo, blgr 0.188235 0.835294 0.141176
26.533 42.81667 vardun, targ 0.929412 0.882353 0.686275
24.13333 42.15 varvara, paz 0.447059 0.752941 0.733333
24.38333 42.88334 vasiljovo, tetev 0.505882 0.843137 0.67451
22.94278 42.66611 velkovci, pk 0.215686 0.8 0.52549
22.8161111 44.0958333 vinarovo, vid 0.329412 0.835294 0.592157
23.07 43.483 vinishte, mont 0.321569 0.811765 0.6
24.8 43.283 vladinja, lov 0.866667 0.894118 0.635294
26.9 42.083 voden, elh 0.568627 0.768627 0.921569
24.75 42.567 vojnjagovo, karl 0.854902 0.937255 0.745098
23.75 42.883 vrachesh, botgr 0.337255 0.756863 0.678431
25.2166667 42.9166667 vranilovci, gabr 0.878431 0.894118 0.67451
27.2 42.817 vresovo, ajt 0.878431 0.843137 0.729412
24.6 41.783 zabardo, asgr 0.603922 0.2 0.454902
27.5666667 42.1 zabernovo, mt 0.654902 0.560784 0.705882
23.2425 43.2961111 zamfirovo, berk 0.317647 0.85098 0.658824
23.2630556 43.1761111 zanozhene, berk 0.286275 0.764706 0.698039
25.2333333 42.95 zdravkovec, gabr 0.878431 0.894118 0.678431
22.5619444 42.8375 zelenigrad, tran 0.101961 0.784314 0.184314
25.05 41.53333 zhaltusha, ard 0.513725 0.235294 0.47451
22.8 43.88028 zheglica, vid 0.34902 0.807843 0.576471
23.38333 42.98333 zhelen, svog 0.337255 0.784314 0.713725
27.0167 42.15 zheljazkovo, sred 0.631373 0.768627 0.921569
26.46667 42.83333 zheravna, kot 0.937255 0.882353 0.768627
d3 = function() {
var π = Math.PI, ε = 1e-6, d3 = {
version: "3.0.8"
}, d3_radians = π / 180, d3_degrees = 180 / π, d3_document = document, d3_window = window;
function d3_target(d) {
return d.target;
}
function d3_source(d) {
return d.source;
}
var d3_format_decimalPoint = ".", d3_format_thousandsSeparator = ",", d3_format_grouping = [ 3, 3 ];
if (!Date.now) Date.now = function() {
return +new Date();
};
try {
d3_document.createElement("div").style.setProperty("opacity", 0, "");
} catch (error) {
var d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;
d3_style_prototype.setProperty = function(name, value, priority) {
d3_style_setProperty.call(this, name, value + "", priority);
};
}
function d3_class(ctor, properties) {
try {
for (var key in properties) {
Object.defineProperty(ctor.prototype, key, {
value: properties[key],
enumerable: false
});
}
} catch (e) {
ctor.prototype = properties;
}
}
var d3_array = d3_arraySlice;
function d3_arrayCopy(pseudoarray) {
var i = -1, n = pseudoarray.length, array = [];
while (++i < n) array.push(pseudoarray[i]);
return array;
}
function d3_arraySlice(pseudoarray) {
return Array.prototype.slice.call(pseudoarray);
}
try {
d3_array(d3_document.documentElement.childNodes)[0].nodeType;
} catch (e) {
d3_array = d3_arrayCopy;
}
var d3_arraySubclass = [].__proto__ ? function(array, prototype) {
array.__proto__ = prototype;
} : function(array, prototype) {
for (var property in prototype) array[property] = prototype[property];
};
d3.map = function(object) {
var map = new d3_Map();
for (var key in object) map.set(key, object[key]);
return map;
};
function d3_Map() {}
d3_class(d3_Map, {
has: function(key) {
return d3_map_prefix + key in this;
},
get: function(key) {
return this[d3_map_prefix + key];
},
set: function(key, value) {
return this[d3_map_prefix + key] = value;
},
remove: function(key) {
key = d3_map_prefix + key;
return key in this && delete this[key];
},
keys: function() {
var keys = [];
this.forEach(function(key) {
keys.push(key);
});
return keys;
},
values: function() {
var values = [];
this.forEach(function(key, value) {
values.push(value);
});
return values;
},
entries: function() {
var entries = [];
this.forEach(function(key, value) {
entries.push({
key: key,
value: value
});
});
return entries;
},
forEach: function(f) {
for (var key in this) {
if (key.charCodeAt(0) === d3_map_prefixCode) {
f.call(this, key.substring(1), this[key]);
}
}
}
});
var d3_map_prefix = "\0", d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
function d3_identity(d) {
return d;
}
function d3_true() {
return true;
}
function d3_functor(v) {
return typeof v === "function" ? v : function() {
return v;
};
}
d3.functor = d3_functor;
d3.rebind = function(target, source) {
var i = 1, n = arguments.length, method;
while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
return target;
};
function d3_rebind(target, source, method) {
return function() {
var value = method.apply(source, arguments);
return value === source ? target : value;
};
}
d3.ascending = function(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
};
d3.descending = function(a, b) {
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
};
d3.mean = function(array, f) {
var n = array.length, a, m = 0, i = -1, j = 0;
if (arguments.length === 1) {
while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j;
} else {
while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j;
}
return j ? m : undefined;
};
d3.median = function(array, f) {
if (arguments.length > 1) array = array.map(f);
array = array.filter(d3_number);
return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined;
};
d3.min = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
while (++i < n) if ((b = array[i]) != null && a > b) a = b;
} else {
while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
}
return a;
};
d3.max = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
while (++i < n) if ((b = array[i]) != null && b > a) a = b;
} else {
while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
}
return a;
};
d3.extent = function(array, f) {
var i = -1, n = array.length, a, b, c;
if (arguments.length === 1) {
while (++i < n && ((a = c = array[i]) == null || a != a)) a = c = undefined;
while (++i < n) if ((b = array[i]) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
} else {
while (++i < n && ((a = c = f.call(array, array[i], i)) == null || a != a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
}
return [ a, c ];
};
d3.random = {
normal: function(µ, σ) {
var n = arguments.length;
if (n < 2) σ = 1;
if (n < 1) µ = 0;
return function() {
var x, y, r;
do {
x = Math.random() * 2 - 1;
y = Math.random() * 2 - 1;
r = x * x + y * y;
} while (!r || r > 1);
return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);
};
},
logNormal: function() {
var random = d3.random.normal.apply(d3, arguments);
return function() {
return Math.exp(random());
};
},
irwinHall: function(m) {
return function() {
for (var s = 0, j = 0; j < m; j++) s += Math.random();
return s / m;
};
}
};
function d3_number(x) {
return x != null && !isNaN(x);
}
d3.sum = function(array, f) {
var s = 0, n = array.length, a, i = -1;
if (arguments.length === 1) {
while (++i < n) if (!isNaN(a = +array[i])) s += a;
} else {
while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
}
return s;
};
d3.quantile = function(values, p) {
var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;
return e ? v + e * (values[h] - v) : v;
};
d3.shuffle = function(array) {
var m = array.length, t, i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m], array[m] = array[i], array[i] = t;
}
return array;
};
d3.transpose = function(matrix) {
return d3.zip.apply(d3, matrix);
};
d3.zip = function() {
if (!(n = arguments.length)) return [];
for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {
for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) {
zip[j] = arguments[j][i];
}
}
return zips;
};
function d3_zipLength(d) {
return d.length;
}
d3.bisector = function(f) {
return {
left: function(a, x, lo, hi) {
if (arguments.length < 3) lo = 0;
if (arguments.length < 4) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (f.call(a, a[mid], mid) < x) lo = mid + 1; else hi = mid;
}
return lo;
},
right: function(a, x, lo, hi) {
if (arguments.length < 3) lo = 0;
if (arguments.length < 4) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (x < f.call(a, a[mid], mid)) hi = mid; else lo = mid + 1;
}
return lo;
}
};
};
var d3_bisector = d3.bisector(function(d) {
return d;
});
d3.bisectLeft = d3_bisector.left;
d3.bisect = d3.bisectRight = d3_bisector.right;
d3.nest = function() {
var nest = {}, keys = [], sortKeys = [], sortValues, rollup;
function map(array, depth) {
if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;
var i = -1, n = array.length, key = keys[depth++], keyValue, object, valuesByKey = new d3_Map(), values, o = {};
while (++i < n) {
if (values = valuesByKey.get(keyValue = key(object = array[i]))) {
values.push(object);
} else {
valuesByKey.set(keyValue, [ object ]);
}
}
valuesByKey.forEach(function(keyValue, values) {
o[keyValue] = map(values, depth);
});
return o;
}
function entries(map, depth) {
if (depth >= keys.length) return map;
var a = [], sortKey = sortKeys[depth++], key;
for (key in map) {
a.push({
key: key,
values: entries(map[key], depth)
});
}
if (sortKey) a.sort(function(a, b) {
return sortKey(a.key, b.key);
});
return a;
}
nest.map = function(array) {
return map(array, 0);
};
nest.entries = function(array) {
return entries(map(array, 0), 0);
};
nest.key = function(d) {
keys.push(d);
return nest;
};
nest.sortKeys = function(order) {
sortKeys[keys.length - 1] = order;
return nest;
};
nest.sortValues = function(order) {
sortValues = order;
return nest;
};
nest.rollup = function(f) {
rollup = f;
return nest;
};
return nest;
};
d3.keys = function(map) {
var keys = [];
for (var key in map) keys.push(key);
return keys;
};
d3.values = function(map) {
var values = [];
for (var key in map) values.push(map[key]);
return values;
};
d3.entries = function(map) {
var entries = [];
for (var key in map) entries.push({
key: key,
value: map[key]
});
return entries;
};
d3.permute = function(array, indexes) {
var permutes = [], i = -1, n = indexes.length;
while (++i < n) permutes[i] = array[indexes[i]];
return permutes;
};
d3.merge = function(arrays) {
return Array.prototype.concat.apply([], arrays);
};
function d3_collapse(s) {
return s.trim().replace(/\s+/g, " ");
}
d3.range = function(start, stop, step) {
if (arguments.length < 3) {
step = 1;
if (arguments.length < 2) {
stop = start;
start = 0;
}
}
if ((stop - start) / step === Infinity) throw new Error("infinite range");
var range = [], k = d3_range_integerScale(Math.abs(step)), i = -1, j;
start *= k, stop *= k, step *= k;
if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);
return range;
};
function d3_range_integerScale(x) {
var k = 1;
while (x * k % 1) k *= 10;
return k;
}
d3.requote = function(s) {
return s.replace(d3_requote_re, "\\$&");
};
var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
d3.round = function(x, n) {
return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);
};
d3.xhr = function(url, mimeType, callback) {
var xhr = {}, dispatch = d3.dispatch("progress", "load", "error"), headers = {}, response = d3_identity, request = new (d3_window.XDomainRequest && /^(http(s)?:)?\/\//.test(url) ? XDomainRequest : XMLHttpRequest)();
"onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {
request.readyState > 3 && respond();
};
function respond() {
var s = request.status;
!s && request.responseText || s >= 200 && s < 300 || s === 304 ? dispatch.load.call(xhr, response.call(xhr, request)) : dispatch.error.call(xhr, request);
}
request.onprogress = function(event) {
var o = d3.event;
d3.event = event;
try {
dispatch.progress.call(xhr, request);
} finally {
d3.event = o;
}
};
xhr.header = function(name, value) {
name = (name + "").toLowerCase();
if (arguments.length < 2) return headers[name];
if (value == null) delete headers[name]; else headers[name] = value + "";
return xhr;
};
xhr.mimeType = function(value) {
if (!arguments.length) return mimeType;
mimeType = value == null ? null : value + "";
return xhr;
};
xhr.response = function(value) {
response = value;
return xhr;
};
[ "get", "post" ].forEach(function(method) {
xhr[method] = function() {
return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));
};
});
xhr.send = function(method, data, callback) {
if (arguments.length === 2 && typeof data === "function") callback = data, data = null;
request.open(method, url, true);
if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*";
if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);
if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);
if (callback != null) xhr.on("error", callback).on("load", function(request) {
callback(null, request);
});
request.send(data == null ? null : data);
return xhr;
};
xhr.abort = function() {
request.abort();
return xhr;
};
d3.rebind(xhr, dispatch, "on");
if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType,
mimeType = null;
return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));
};
function d3_xhr_fixCallback(callback) {
return callback.length === 1 ? function(error, request) {
callback(error == null ? request : null);
} : callback;
}
d3.text = function() {
return d3.xhr.apply(d3, arguments).response(d3_text);
};
function d3_text(request) {
return request.responseText;
}
d3.json = function(url, callback) {
return d3.xhr(url, "application/json", callback).response(d3_json);
};
function d3_json(request) {
return JSON.parse(request.responseText);
}
d3.html = function(url, callback) {
return d3.xhr(url, "text/html", callback).response(d3_html);
};
function d3_html(request) {
var range = d3_document.createRange();
range.selectNode(d3_document.body);
return range.createContextualFragment(request.responseText);
}
d3.xml = function() {
return d3.xhr.apply(d3, arguments).response(d3_xml);
};
function d3_xml(request) {
return request.responseXML;
}
var d3_nsPrefix = {
svg: "http://www.w3.org/2000/svg",
xhtml: "http://www.w3.org/1999/xhtml",
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace",
xmlns: "http://www.w3.org/2000/xmlns/"
};
d3.ns = {
prefix: d3_nsPrefix,
qualify: function(name) {
var i = name.indexOf(":"), prefix = name;
if (i >= 0) {
prefix = name.substring(0, i);
name = name.substring(i + 1);
}
return d3_nsPrefix.hasOwnProperty(prefix) ? {
space: d3_nsPrefix[prefix],
local: name
} : name;
}
};
d3.dispatch = function() {
var dispatch = new d3_dispatch(), i = -1, n = arguments.length;
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
return dispatch;
};
function d3_dispatch() {}
d3_dispatch.prototype.on = function(type, listener) {
var i = type.indexOf("."), name = "";
if (i > 0) {
name = type.substring(i + 1);
type = type.substring(0, i);
}
return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);
};
function d3_dispatch_event(dispatch) {
var listeners = [], listenerByName = new d3_Map();
function event() {
var z = listeners, i = -1, n = z.length, l;
while (++i < n) if (l = z[i].on) l.apply(this, arguments);
return dispatch;
}
event.on = function(name, listener) {
var l = listenerByName.get(name), i;
if (arguments.length < 2) return l && l.on;
if (l) {
l.on = null;
listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
listenerByName.remove(name);
}
if (listener) listeners.push(listenerByName.set(name, {
on: listener
}));
return dispatch;
};
return event;
}
d3.format = function(specifier) {
var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "", basePrefix = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, suffix = "", integer = false;
if (precision) precision = +precision.substring(1);
if (zfill || fill === "0" && align === "=") {
zfill = fill = "0";
align = "=";
if (comma) width -= Math.floor((width - 1) / 4);
}
switch (type) {
case "n":
comma = true;
type = "g";
break;
case "%":
scale = 100;
suffix = "%";
type = "f";
break;
case "p":
scale = 100;
suffix = "%";
type = "r";
break;
case "b":
case "o":
case "x":
case "X":
if (basePrefix) basePrefix = "0" + type.toLowerCase();
case "c":
case "d":
integer = true;
precision = 0;
break;
case "s":
scale = -1;
type = "r";
break;
}
if (basePrefix === "#") basePrefix = "";
if (type == "r" && !precision) type = "g";
type = d3_format_types.get(type) || d3_format_typeDefault;
var zcomma = zfill && comma;
return function(value) {
if (integer && value % 1) return "";
var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign;
if (scale < 0) {
var prefix = d3.formatPrefix(value, precision);
value = prefix.scale(value);
suffix = prefix.symbol;
} else {
value *= scale;
}
value = type(value, precision);
if (!zfill && comma) value = d3_format_group(value);
var length = basePrefix.length + value.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : "";
if (zcomma) value = d3_format_group(padding + value);
if (d3_format_decimalPoint) value.replace(".", d3_format_decimalPoint);
negative += basePrefix;
return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + suffix;
};
};
var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/;
var d3_format_types = d3.map({
b: function(x) {
return x.toString(2);
},
c: function(x) {
return String.fromCharCode(x);
},
o: function(x) {
return x.toString(8);
},
x: function(x) {
return x.toString(16);
},
X: function(x) {
return x.toString(16).toUpperCase();
},
g: function(x, p) {
return x.toPrecision(p);
},
e: function(x, p) {
return x.toExponential(p);
},
f: function(x, p) {
return x.toFixed(p);
},
r: function(x, p) {
return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));
}
});
function d3_format_precision(x, p) {
return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);
}
function d3_format_typeDefault(x) {
return x + "";
}
var d3_format_group = d3_identity;
if (d3_format_grouping) {
var d3_format_groupingLength = d3_format_grouping.length;
d3_format_group = function(value) {
var i = value.lastIndexOf("."), f = i >= 0 ? "." + value.substring(i + 1) : (i = value.length,
""), t = [], j = 0, g = d3_format_grouping[0];
while (i > 0 && g > 0) {
t.push(value.substring(i -= g, i + g));
g = d3_format_grouping[j = (j + 1) % d3_format_groupingLength];
}
return t.reverse().join(d3_format_thousandsSeparator || "") + f;
};
}
var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix);
d3.formatPrefix = function(value, precision) {
var i = 0;
if (value) {
if (value < 0) value *= -1;
if (precision) value = d3.round(value, d3_format_precision(value, precision));
i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);
i = Math.max(-24, Math.min(24, Math.floor((i <= 0 ? i + 1 : i - 1) / 3) * 3));
}
return d3_formatPrefixes[8 + i / 3];
};
function d3_formatPrefix(d, i) {
var k = Math.pow(10, Math.abs(8 - i) * 3);
return {
scale: i > 8 ? function(d) {
return d / k;
} : function(d) {
return d * k;
},
symbol: d
};
}
var d3_ease_default = function() {
return d3_identity;
};
var d3_ease = d3.map({
linear: d3_ease_default,
poly: d3_ease_poly,
quad: function() {
return d3_ease_quad;
},
cubic: function() {
return d3_ease_cubic;
},
sin: function() {
return d3_ease_sin;
},
exp: function() {
return d3_ease_exp;
},
circle: function() {
return d3_ease_circle;
},
elastic: d3_ease_elastic,
back: d3_ease_back,
bounce: function() {
return d3_ease_bounce;
}
});
var d3_ease_mode = d3.map({
"in": d3_identity,
out: d3_ease_reverse,
"in-out": d3_ease_reflect,
"out-in": function(f) {
return d3_ease_reflect(d3_ease_reverse(f));
}
});
d3.ease = function(name) {
var i = name.indexOf("-"), t = i >= 0 ? name.substring(0, i) : name, m = i >= 0 ? name.substring(i + 1) : "in";
t = d3_ease.get(t) || d3_ease_default;
m = d3_ease_mode.get(m) || d3_identity;
return d3_ease_clamp(m(t.apply(null, Array.prototype.slice.call(arguments, 1))));
};
function d3_ease_clamp(f) {
return function(t) {
return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
};
}
function d3_ease_reverse(f) {
return function(t) {
return 1 - f(1 - t);
};
}
function d3_ease_reflect(f) {
return function(t) {
return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));
};
}
function d3_ease_quad(t) {
return t * t;
}
function d3_ease_cubic(t) {
return t * t * t;
}
function d3_ease_cubicInOut(t) {
if (t <= 0) return 0;
if (t >= 1) return 1;
var t2 = t * t, t3 = t2 * t;
return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
}
function d3_ease_poly(e) {
return function(t) {
return Math.pow(t, e);
};
}
function d3_ease_sin(t) {
return 1 - Math.cos(t * π / 2);
}
function d3_ease_exp(t) {
return Math.pow(2, 10 * (t - 1));
}
function d3_ease_circle(t) {
return 1 - Math.sqrt(1 - t * t);
}
function d3_ease_elastic(a, p) {
var s;
if (arguments.length < 2) p = .45;
if (arguments.length) s = p / (2 * π) * Math.asin(1 / a); else a = 1, s = p / 4;
return function(t) {
return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * π / p);
};
}
function d3_ease_back(s) {
if (!s) s = 1.70158;
return function(t) {
return t * t * ((s + 1) * t - s);
};
}
function d3_ease_bounce(t) {
return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
}
d3.event = null;
function d3_eventCancel() {
d3.event.stopPropagation();
d3.event.preventDefault();
}
function d3_eventSource() {
var e = d3.event, s;
while (s = e.sourceEvent) e = s;
return e;
}
function d3_eventDispatch(target) {
var dispatch = new d3_dispatch(), i = 0, n = arguments.length;
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
dispatch.of = function(thiz, argumentz) {
return function(e1) {
try {
var e0 = e1.sourceEvent = d3.event;
e1.target = target;
d3.event = e1;
dispatch[e1.type].apply(thiz, argumentz);
} finally {
d3.event = e0;
}
};
};
return dispatch;
}
d3.transform = function(string) {
var g = d3_document.createElementNS(d3.ns.prefix.svg, "g");
return (d3.transform = function(string) {
g.setAttribute("transform", string);
var t = g.transform.baseVal.consolidate();
return new d3_transform(t ? t.matrix : d3_transformIdentity);
})(string);
};
function d3_transform(m) {
var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
if (r0[0] * r1[1] < r1[0] * r0[1]) {
r0[0] *= -1;
r0[1] *= -1;
kx *= -1;
kz *= -1;
}
this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;
this.translate = [ m.e, m.f ];
this.scale = [ kx, ky ];
this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;
}
d3_transform.prototype.toString = function() {
return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
};
function d3_transformDot(a, b) {
return a[0] * b[0] + a[1] * b[1];
}
function d3_transformNormalize(a) {
var k = Math.sqrt(d3_transformDot(a, a));
if (k) {
a[0] /= k;
a[1] /= k;
}
return k;
}
function d3_transformCombine(a, b, k) {
a[0] += k * b[0];
a[1] += k * b[1];
return a;
}
var d3_transformIdentity = {
a: 1,
b: 0,
c: 0,
d: 1,
e: 0,
f: 0
};
d3.interpolate = function(a, b) {
var i = d3.interpolators.length, f;
while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;
return f;
};
d3.interpolateNumber = function(a, b) {
b -= a;
return function(t) {
return a + b * t;
};
};
d3.interpolateRound = function(a, b) {
b -= a;
return function(t) {
return Math.round(a + b * t);
};
};
d3.interpolateString = function(a, b) {
var m, i, j, s0 = 0, s1 = 0, s = [], q = [], n, o;
d3_interpolate_number.lastIndex = 0;
for (i = 0; m = d3_interpolate_number.exec(b); ++i) {
if (m.index) s.push(b.substring(s0, s1 = m.index));
q.push({
i: s.length,
x: m[0]
});
s.push(null);
s0 = d3_interpolate_number.lastIndex;
}
if (s0 < b.length) s.push(b.substring(s0));
for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) {
o = q[i];
if (o.x == m[0]) {
if (o.i) {
if (s[o.i + 1] == null) {
s[o.i - 1] += o.x;
s.splice(o.i, 1);
for (j = i + 1; j < n; ++j) q[j].i--;
} else {
s[o.i - 1] += o.x + s[o.i + 1];
s.splice(o.i, 2);
for (j = i + 1; j < n; ++j) q[j].i -= 2;
}
} else {
if (s[o.i + 1] == null) {
s[o.i] = o.x;
} else {
s[o.i] = o.x + s[o.i + 1];
s.splice(o.i + 1, 1);
for (j = i + 1; j < n; ++j) q[j].i--;
}
}
q.splice(i, 1);
n--;
i--;
} else {
o.x = d3.interpolateNumber(parseFloat(m[0]), parseFloat(o.x));
}
}
while (i < n) {
o = q.pop();
if (s[o.i + 1] == null) {
s[o.i] = o.x;
} else {
s[o.i] = o.x + s[o.i + 1];
s.splice(o.i + 1, 1);
}
n--;
}
if (s.length === 1) {
return s[0] == null ? q[0].x : function() {
return b;
};
}
return function(t) {
for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t);
return s.join("");
};
};
d3.interpolateTransform = function(a, b) {
var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale;
if (ta[0] != tb[0] || ta[1] != tb[1]) {
s.push("translate(", null, ",", null, ")");
q.push({
i: 1,
x: d3.interpolateNumber(ta[0], tb[0])
}, {
i: 3,
x: d3.interpolateNumber(ta[1], tb[1])
});
} else if (tb[0] || tb[1]) {
s.push("translate(" + tb + ")");
} else {
s.push("");
}
if (ra != rb) {
if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;
q.push({
i: s.push(s.pop() + "rotate(", null, ")") - 2,
x: d3.interpolateNumber(ra, rb)
});
} else if (rb) {
s.push(s.pop() + "rotate(" + rb + ")");
}
if (wa != wb) {
q.push({
i: s.push(s.pop() + "skewX(", null, ")") - 2,
x: d3.interpolateNumber(wa, wb)
});
} else if (wb) {
s.push(s.pop() + "skewX(" + wb + ")");
}
if (ka[0] != kb[0] || ka[1] != kb[1]) {
n = s.push(s.pop() + "scale(", null, ",", null, ")");
q.push({
i: n - 4,
x: d3.interpolateNumber(ka[0], kb[0])
}, {
i: n - 2,
x: d3.interpolateNumber(ka[1], kb[1])
});
} else if (kb[0] != 1 || kb[1] != 1) {
s.push(s.pop() + "scale(" + kb + ")");
}
n = q.length;
return function(t) {
var i = -1, o;
while (++i < n) s[(o = q[i]).i] = o.x(t);
return s.join("");
};
};
d3.interpolateRgb = function(a, b) {
a = d3.rgb(a);
b = d3.rgb(b);
var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;
return function(t) {
return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));
};
};
d3.interpolateHsl = function(a, b) {
a = d3.hsl(a);
b = d3.hsl(b);
var h0 = a.h, s0 = a.s, l0 = a.l, h1 = b.h - h0, s1 = b.s - s0, l1 = b.l - l0;
if (h1 > 180) h1 -= 360; else if (h1 < -180) h1 += 360;
return function(t) {
return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t) + "";
};
};
d3.interpolateLab = function(a, b) {
a = d3.lab(a);
b = d3.lab(b);
var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;
return function(t) {
return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + "";
};
};
d3.interpolateHcl = function(a, b) {
a = d3.hcl(a);
b = d3.hcl(b);
var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;
if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
return function(t) {
return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + "";
};
};
d3.interpolateArray = function(a, b) {
var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;
for (i = 0; i < n0; ++i) x.push(d3.interpolate(a[i], b[i]));
for (;i < na; ++i) c[i] = a[i];
for (;i < nb; ++i) c[i] = b[i];
return function(t) {
for (i = 0; i < n0; ++i) c[i] = x[i](t);
return c;
};
};
d3.interpolateObject = function(a, b) {
var i = {}, c = {}, k;
for (k in a) {
if (k in b) {
i[k] = d3_interpolateByName(k)(a[k], b[k]);
} else {
c[k] = a[k];
}
}
for (k in b) {
if (!(k in a)) {
c[k] = b[k];
}
}
return function(t) {
for (k in i) c[k] = i[k](t);
return c;
};
};
var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
function d3_interpolateByName(name) {
return name == "transform" ? d3.interpolateTransform : d3.interpolate;
}
d3.interpolators = [ d3.interpolateObject, function(a, b) {
return b instanceof Array && d3.interpolateArray(a, b);
}, function(a, b) {
return (typeof a === "string" || typeof b === "string") && d3.interpolateString(a + "", b + "");
}, function(a, b) {
return (typeof b === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) : b instanceof d3_Color) && d3.interpolateRgb(a, b);
}, function(a, b) {
return !isNaN(a = +a) && !isNaN(b = +b) && d3.interpolateNumber(a, b);
} ];
function d3_uninterpolateNumber(a, b) {
b = b - (a = +a) ? 1 / (b - a) : 0;
return function(x) {
return (x - a) * b;
};
}
function d3_uninterpolateClamp(a, b) {
b = b - (a = +a) ? 1 / (b - a) : 0;
return function(x) {
return Math.max(0, Math.min(1, (x - a) * b));
};
}
function d3_Color() {}
d3_Color.prototype.toString = function() {
return this.rgb() + "";
};
d3.rgb = function(r, g, b) {
return arguments.length === 1 ? r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : d3_rgb(~~r, ~~g, ~~b);
};
function d3_rgb(r, g, b) {
return new d3_Rgb(r, g, b);
}
function d3_Rgb(r, g, b) {
this.r = r;
this.g = g;
this.b = b;
}
var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color();
d3_rgbPrototype.brighter = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
var r = this.r, g = this.g, b = this.b, i = 30;
if (!r && !g && !b) return d3_rgb(i, i, i);
if (r && r < i) r = i;
if (g && g < i) g = i;
if (b && b < i) b = i;
return d3_rgb(Math.min(255, Math.floor(r / k)), Math.min(255, Math.floor(g / k)), Math.min(255, Math.floor(b / k)));
};
d3_rgbPrototype.darker = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return d3_rgb(Math.floor(k * this.r), Math.floor(k * this.g), Math.floor(k * this.b));
};
d3_rgbPrototype.hsl = function() {
return d3_rgb_hsl(this.r, this.g, this.b);
};
d3_rgbPrototype.toString = function() {
return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
};
function d3_rgb_hex(v) {
return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);
}
function d3_rgb_parse(format, rgb, hsl) {
var r = 0, g = 0, b = 0, m1, m2, name;
m1 = /([a-z]+)\((.*)\)/i.exec(format);
if (m1) {
m2 = m1[2].split(",");
switch (m1[1]) {
case "hsl":
{
return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);
}
case "rgb":
{
return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));
}
}
}
if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b);
if (format != null && format.charAt(0) === "#") {
if (format.length === 4) {
r = format.charAt(1);
r += r;
g = format.charAt(2);
g += g;
b = format.charAt(3);
b += b;
} else if (format.length === 7) {
r = format.substring(1, 3);
g = format.substring(3, 5);
b = format.substring(5, 7);
}
r = parseInt(r, 16);
g = parseInt(g, 16);
b = parseInt(b, 16);
}
return rgb(r, g, b);
}
function d3_rgb_hsl(r, g, b) {
var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;
if (d) {
s = l < .5 ? d / (max + min) : d / (2 - max - min);
if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;
h *= 60;
} else {
s = h = 0;
}
return d3_hsl(h, s, l);
}
function d3_rgb_lab(r, g, b) {
r = d3_rgb_xyz(r);
g = d3_rgb_xyz(g);
b = d3_rgb_xyz(b);
var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);
return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
}
function d3_rgb_xyz(r) {
return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);
}
function d3_rgb_parseNumber(c) {
var f = parseFloat(c);
return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
}
var d3_rgb_names = d3.map({
aliceblue: "#f0f8ff",
antiquewhite: "#faebd7",
aqua: "#00ffff",
aquamarine: "#7fffd4",
azure: "#f0ffff",
beige: "#f5f5dc",
bisque: "#ffe4c4",
black: "#000000",
blanchedalmond: "#ffebcd",
blue: "#0000ff",
blueviolet: "#8a2be2",
brown: "#a52a2a",
burlywood: "#deb887",
cadetblue: "#5f9ea0",
chartreuse: "#7fff00",
chocolate: "#d2691e",
coral: "#ff7f50",
cornflowerblue: "#6495ed",
cornsilk: "#fff8dc",
crimson: "#dc143c",
cyan: "#00ffff",
darkblue: "#00008b",
darkcyan: "#008b8b",
darkgoldenrod: "#b8860b",
darkgray: "#a9a9a9",
darkgreen: "#006400",
darkgrey: "#a9a9a9",
darkkhaki: "#bdb76b",
darkmagenta: "#8b008b",
darkolivegreen: "#556b2f",
darkorange: "#ff8c00",
darkorchid: "#9932cc",
darkred: "#8b0000",
darksalmon: "#e9967a",
darkseagreen: "#8fbc8f",
darkslateblue: "#483d8b",
darkslategray: "#2f4f4f",
darkslategrey: "#2f4f4f",
darkturquoise: "#00ced1",
darkviolet: "#9400d3",
deeppink: "#ff1493",
deepskyblue: "#00bfff",
dimgray: "#696969",
dimgrey: "#696969",
dodgerblue: "#1e90ff",
firebrick: "#b22222",
floralwhite: "#fffaf0",
forestgreen: "#228b22",
fuchsia: "#ff00ff",
gainsboro: "#dcdcdc",
ghostwhite: "#f8f8ff",
gold: "#ffd700",
goldenrod: "#daa520",
gray: "#808080",
green: "#008000",
greenyellow: "#adff2f",
grey: "#808080",
honeydew: "#f0fff0",
hotpink: "#ff69b4",
indianred: "#cd5c5c",
indigo: "#4b0082",
ivory: "#fffff0",
khaki: "#f0e68c",
lavender: "#e6e6fa",
lavenderblush: "#fff0f5",
lawngreen: "#7cfc00",
lemonchiffon: "#fffacd",
lightblue: "#add8e6",
lightcoral: "#f08080",
lightcyan: "#e0ffff",
lightgoldenrodyellow: "#fafad2",
lightgray: "#d3d3d3",
lightgreen: "#90ee90",
lightgrey: "#d3d3d3",
lightpink: "#ffb6c1",
lightsalmon: "#ffa07a",
lightseagreen: "#20b2aa",
lightskyblue: "#87cefa",
lightslategray: "#778899",
lightslategrey: "#778899",
lightsteelblue: "#b0c4de",
lightyellow: "#ffffe0",
lime: "#00ff00",
limegreen: "#32cd32",
linen: "#faf0e6",
magenta: "#ff00ff",
maroon: "#800000",
mediumaquamarine: "#66cdaa",
mediumblue: "#0000cd",
mediumorchid: "#ba55d3",
mediumpurple: "#9370db",
mediumseagreen: "#3cb371",
mediumslateblue: "#7b68ee",
mediumspringgreen: "#00fa9a",
mediumturquoise: "#48d1cc",
mediumvioletred: "#c71585",
midnightblue: "#191970",
mintcream: "#f5fffa",
mistyrose: "#ffe4e1",
moccasin: "#ffe4b5",
navajowhite: "#ffdead",
navy: "#000080",
oldlace: "#fdf5e6",
olive: "#808000",
olivedrab: "#6b8e23",
orange: "#ffa500",
orangered: "#ff4500",
orchid: "#da70d6",
palegoldenrod: "#eee8aa",
palegreen: "#98fb98",
paleturquoise: "#afeeee",
palevioletred: "#db7093",
papayawhip: "#ffefd5",
peachpuff: "#ffdab9",
peru: "#cd853f",
pink: "#ffc0cb",
plum: "#dda0dd",
powderblue: "#b0e0e6",
purple: "#800080",
red: "#ff0000",
rosybrown: "#bc8f8f",
royalblue: "#4169e1",
saddlebrown: "#8b4513",
salmon: "#fa8072",
sandybrown: "#f4a460",
seagreen: "#2e8b57",
seashell: "#fff5ee",
sienna: "#a0522d",
silver: "#c0c0c0",
skyblue: "#87ceeb",
slateblue: "#6a5acd",
slategray: "#708090",
slategrey: "#708090",
snow: "#fffafa",
springgreen: "#00ff7f",
steelblue: "#4682b4",
tan: "#d2b48c",
teal: "#008080",
thistle: "#d8bfd8",
tomato: "#ff6347",
turquoise: "#40e0d0",
violet: "#ee82ee",
wheat: "#f5deb3",
white: "#ffffff",
whitesmoke: "#f5f5f5",
yellow: "#ffff00",
yellowgreen: "#9acd32"
});
d3_rgb_names.forEach(function(key, value) {
d3_rgb_names.set(key, d3_rgb_parse(value, d3_rgb, d3_hsl_rgb));
});
d3.hsl = function(h, s, l) {
return arguments.length === 1 ? h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : d3_hsl(+h, +s, +l);
};
function d3_hsl(h, s, l) {
return new d3_Hsl(h, s, l);
}
function d3_Hsl(h, s, l) {
this.h = h;
this.s = s;
this.l = l;
}
var d3_hslPrototype = d3_Hsl.prototype = new d3_Color();
d3_hslPrototype.brighter = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return d3_hsl(this.h, this.s, this.l / k);
};
d3_hslPrototype.darker = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return d3_hsl(this.h, this.s, k * this.l);
};
d3_hslPrototype.rgb = function() {
return d3_hsl_rgb(this.h, this.s, this.l);
};
function d3_hsl_rgb(h, s, l) {
var m1, m2;
h = h % 360;
if (h < 0) h += 360;
s = s < 0 ? 0 : s > 1 ? 1 : s;
l = l < 0 ? 0 : l > 1 ? 1 : l;
m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
m1 = 2 * l - m2;
function v(h) {
if (h > 360) h -= 360; else if (h < 0) h += 360;
if (h < 60) return m1 + (m2 - m1) * h / 60;
if (h < 180) return m2;
if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
return m1;
}
function vv(h) {
return Math.round(v(h) * 255);
}
return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
}
d3.hcl = function(h, c, l) {
return arguments.length === 1 ? h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l) : h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : d3_hcl(+h, +c, +l);
};
function d3_hcl(h, c, l) {
return new d3_Hcl(h, c, l);
}
function d3_Hcl(h, c, l) {
this.h = h;
this.c = c;
this.l = l;
}
var d3_hclPrototype = d3_Hcl.prototype = new d3_Color();
d3_hclPrototype.brighter = function(k) {
return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.darker = function(k) {
return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.rgb = function() {
return d3_hcl_lab(this.h, this.c, this.l).rgb();
};
function d3_hcl_lab(h, c, l) {
return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
}
d3.lab = function(l, a, b) {
return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b);
};
function d3_lab(l, a, b) {
return new d3_Lab(l, a, b);
}
function d3_Lab(l, a, b) {
this.l = l;
this.a = a;
this.b = b;
}
var d3_lab_K = 18;
var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
var d3_labPrototype = d3_Lab.prototype = new d3_Color();
d3_labPrototype.brighter = function(k) {
return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.darker = function(k) {
return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.rgb = function() {
return d3_lab_rgb(this.l, this.a, this.b);
};
function d3_lab_rgb(l, a, b) {
var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;
x = d3_lab_xyz(x) * d3_lab_X;
y = d3_lab_xyz(y) * d3_lab_Y;
z = d3_lab_xyz(z) * d3_lab_Z;
return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));
}
function d3_lab_hcl(l, a, b) {
return d3_hcl(Math.atan2(b, a) / π * 180, Math.sqrt(a * a + b * b), l);
}
function d3_lab_xyz(x) {
return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
}
function d3_xyz_lab(x) {
return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
}
function d3_xyz_rgb(r) {
return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));
}
function d3_selection(groups) {
d3_arraySubclass(groups, d3_selectionPrototype);
return groups;
}
var d3_select = function(s, n) {
return n.querySelector(s);
}, d3_selectAll = function(s, n) {
return n.querySelectorAll(s);
}, d3_selectRoot = d3_document.documentElement, d3_selectMatcher = d3_selectRoot.matchesSelector || d3_selectRoot.webkitMatchesSelector || d3_selectRoot.mozMatchesSelector || d3_selectRoot.msMatchesSelector || d3_selectRoot.oMatchesSelector, d3_selectMatches = function(n, s) {
return d3_selectMatcher.call(n, s);
};
if (typeof Sizzle === "function") {
d3_select = function(s, n) {
return Sizzle(s, n)[0] || null;
};
d3_selectAll = function(s, n) {
return Sizzle.uniqueSort(Sizzle(s, n));
};
d3_selectMatches = Sizzle.matchesSelector;
}
var d3_selectionPrototype = [];
d3.selection = function() {
return d3_selectionRoot;
};
d3.selection.prototype = d3_selectionPrototype;
d3_selectionPrototype.select = function(selector) {
var subgroups = [], subgroup, subnode, group, node;
if (typeof selector !== "function") selector = d3_selection_selector(selector);
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
subgroup.parentNode = (group = this[j]).parentNode;
for (var i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroup.push(subnode = selector.call(node, node.__data__, i));
if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
} else {
subgroup.push(null);
}
}
}
return d3_selection(subgroups);
};
function d3_selection_selector(selector) {
return function() {
return d3_select(selector, this);
};
}
d3_selectionPrototype.selectAll = function(selector) {
var subgroups = [], subgroup, node;
if (typeof selector !== "function") selector = d3_selection_selectorAll(selector);
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i)));
subgroup.parentNode = node;
}
}
}
return d3_selection(subgroups);
};
function d3_selection_selectorAll(selector) {
return function() {
return d3_selectAll(selector, this);
};
}
d3_selectionPrototype.attr = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") {
var node = this.node();
name = d3.ns.qualify(name);
return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);
}
for (value in name) this.each(d3_selection_attr(value, name[value]));
return this;
}
return this.each(d3_selection_attr(name, value));
};
function d3_selection_attr(name, value) {
name = d3.ns.qualify(name);
function attrNull() {
this.removeAttribute(name);
}
function attrNullNS() {
this.removeAttributeNS(name.space, name.local);
}
function attrConstant() {
this.setAttribute(name, value);
}
function attrConstantNS() {
this.setAttributeNS(name.space, name.local, value);
}
function attrFunction() {
var x = value.apply(this, arguments);
if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);
}
function attrFunctionNS() {
var x = value.apply(this, arguments);
if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);
}
return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;
}
d3_selectionPrototype.classed = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") {
var node = this.node(), n = (name = name.trim().split(/^|\s+/g)).length, i = -1;
if (value = node.classList) {
while (++i < n) if (!value.contains(name[i])) return false;
} else {
value = node.className;
if (value.baseVal != null) value = value.baseVal;
while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
}
return true;
}
for (value in name) this.each(d3_selection_classed(value, name[value]));
return this;
}
return this.each(d3_selection_classed(name, value));
};
function d3_selection_classedRe(name) {
return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
}
function d3_selection_classed(name, value) {
name = name.trim().split(/\s+/).map(d3_selection_classedName);
var n = name.length;
function classedConstant() {
var i = -1;
while (++i < n) name[i](this, value);
}
function classedFunction() {
var i = -1, x = value.apply(this, arguments);
while (++i < n) name[i](this, x);
}
return typeof value === "function" ? classedFunction : classedConstant;
}
function d3_selection_classedName(name) {
var re = d3_selection_classedRe(name);
return function(node, value) {
if (c = node.classList) return value ? c.add(name) : c.remove(name);
var c = node.className, cb = c.baseVal != null, cv = cb ? c.baseVal : c;
if (value) {
re.lastIndex = 0;
if (!re.test(cv)) {
cv = d3_collapse(cv + " " + name);
if (cb) c.baseVal = cv; else node.className = cv;
}
} else if (cv) {
cv = d3_collapse(cv.replace(re, " "));
if (cb) c.baseVal = cv; else node.className = cv;
}
};
}
d3_selectionPrototype.style = function(name, value, priority) {
var n = arguments.length;
if (n < 3) {
if (typeof name !== "string") {
if (n < 2) value = "";
for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
return this;
}
if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name);
priority = "";
}
return this.each(d3_selection_style(name, value, priority));
};
function d3_selection_style(name, value, priority) {
function styleNull() {
this.style.removeProperty(name);
}
function styleConstant() {
this.style.setProperty(name, value, priority);
}
function styleFunction() {
var x = value.apply(this, arguments);
if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);
}
return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant;
}
d3_selectionPrototype.property = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") return this.node()[name];
for (value in name) this.each(d3_selection_property(value, name[value]));
return this;
}
return this.each(d3_selection_property(name, value));
};
function d3_selection_property(name, value) {
function propertyNull() {
delete this[name];
}
function propertyConstant() {
this[name] = value;
}
function propertyFunction() {
var x = value.apply(this, arguments);
if (x == null) delete this[name]; else this[name] = x;
}
return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant;
}
d3_selectionPrototype.text = function(value) {
return arguments.length ? this.each(typeof value === "function" ? function() {
var v = value.apply(this, arguments);
this.textContent = v == null ? "" : v;
} : value == null ? function() {
this.textContent = "";
} : function() {
this.textContent = value;
}) : this.node().textContent;
};
d3_selectionPrototype.html = function(value) {
return arguments.length ? this.each(typeof value === "function" ? function() {
var v = value.apply(this, arguments);
this.innerHTML = v == null ? "" : v;
} : value == null ? function() {
this.innerHTML = "";
} : function() {
this.innerHTML = value;
}) : this.node().innerHTML;
};
d3_selectionPrototype.append = function(name) {
name = d3.ns.qualify(name);
function append() {
return this.appendChild(d3_document.createElementNS(this.namespaceURI, name));
}
function appendNS() {
return this.appendChild(d3_document.createElementNS(name.space, name.local));
}
return this.select(name.local ? appendNS : append);
};
d3_selectionPrototype.insert = function(name, before) {
name = d3.ns.qualify(name);
function insert() {
return this.insertBefore(d3_document.createElementNS(this.namespaceURI, name), d3_select(before, this));
}
function insertNS() {
return this.insertBefore(d3_document.createElementNS(name.space, name.local), d3_select(before, this));
}
return this.select(name.local ? insertNS : insert);
};
d3_selectionPrototype.remove = function() {
return this.each(function() {
var parent = this.parentNode;
if (parent) parent.removeChild(this);
});
};
d3_selectionPrototype.data = function(value, key) {
var i = -1, n = this.length, group, node;
if (!arguments.length) {
value = new Array(n = (group = this[0]).length);
while (++i < n) {
if (node = group[i]) {
value[i] = node.__data__;
}
}
return value;
}
function bind(group, groupData) {
var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;
if (key) {
var nodeByKeyValue = new d3_Map(), dataByKeyValue = new d3_Map(), keyValues = [], keyValue;
for (i = -1; ++i < n; ) {
keyValue = key.call(node = group[i], node.__data__, i);
if (nodeByKeyValue.has(keyValue)) {
exitNodes[i] = node;
} else {
nodeByKeyValue.set(keyValue, node);
}
keyValues.push(keyValue);
}
for (i = -1; ++i < m; ) {
keyValue = key.call(groupData, nodeData = groupData[i], i);
if (node = nodeByKeyValue.get(keyValue)) {
updateNodes[i] = node;
node.__data__ = nodeData;
} else if (!dataByKeyValue.has(keyValue)) {
enterNodes[i] = d3_selection_dataNode(nodeData);
}
dataByKeyValue.set(keyValue, nodeData);
nodeByKeyValue.remove(keyValue);
}
for (i = -1; ++i < n; ) {
if (nodeByKeyValue.has(keyValues[i])) {
exitNodes[i] = group[i];
}
}
} else {
for (i = -1; ++i < n0; ) {
node = group[i];
nodeData = groupData[i];
if (node) {
node.__data__ = nodeData;
updateNodes[i] = node;
} else {
enterNodes[i] = d3_selection_dataNode(nodeData);
}
}
for (;i < m; ++i) {
enterNodes[i] = d3_selection_dataNode(groupData[i]);
}
for (;i < n; ++i) {
exitNodes[i] = group[i];
}
}
enterNodes.update = updateNodes;
enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;
enter.push(enterNodes);
update.push(updateNodes);
exit.push(exitNodes);
}
var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);
if (typeof value === "function") {
while (++i < n) {
bind(group = this[i], value.call(group, group.parentNode.__data__, i));
}
} else {
while (++i < n) {
bind(group = this[i], value);
}
}
update.enter = function() {
return enter;
};
update.exit = function() {
return exit;
};
return update;
};
function d3_selection_dataNode(data) {
return {
__data__: data
};
}
d3_selectionPrototype.datum = function(value) {
return arguments.length ? this.property("__data__", value) : this.property("__data__");
};
d3_selectionPrototype.filter = function(filter) {
var subgroups = [], subgroup, group, node;
if (typeof filter !== "function") filter = d3_selection_filter(filter);
for (var j = 0, m = this.length; j < m; j++) {
subgroups.push(subgroup = []);
subgroup.parentNode = (group = this[j]).parentNode;
for (var i = 0, n = group.length; i < n; i++) {
if ((node = group[i]) && filter.call(node, node.__data__, i)) {
subgroup.push(node);
}
}
}
return d3_selection(subgroups);
};
function d3_selection_filter(selector) {
return function() {
return d3_selectMatches(this, selector);
};
}
d3_selectionPrototype.order = function() {
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {
if (node = group[i]) {
if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
next = node;
}
}
}
return this;
};
d3_selectionPrototype.sort = function(comparator) {
comparator = d3_selection_sortComparator.apply(this, arguments);
for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);
return this.order();
};
function d3_selection_sortComparator(comparator) {
if (!arguments.length) comparator = d3.ascending;
return function(a, b) {
return !a - !b || comparator(a.__data__, b.__data__);
};
}
d3_selectionPrototype.on = function(type, listener, capture) {
var n = arguments.length;
if (n < 3) {
if (typeof type !== "string") {
if (n < 2) listener = false;
for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
return this;
}
if (n < 2) return (n = this.node()["__on" + type]) && n._;
capture = false;
}
return this.each(d3_selection_on(type, listener, capture));
};
function d3_selection_on(type, listener, capture) {
var name = "__on" + type, i = type.indexOf(".");
if (i > 0) type = type.substring(0, i);
function onRemove() {
var wrapper = this[name];
if (wrapper) {
this.removeEventListener(type, wrapper, wrapper.$);
delete this[name];
}
}
function onAdd() {
var node = this, args = d3_array(arguments);
onRemove.call(this);
this.addEventListener(type, this[name] = wrapper, wrapper.$ = capture);
wrapper._ = listener;
function wrapper(e) {
var o = d3.event;
d3.event = e;
args[0] = node.__data__;
try {
listener.apply(node, args);
} finally {
d3.event = o;
}
}
}
return listener ? onAdd : onRemove;
}
d3_selectionPrototype.each = function(callback) {
return d3_selection_each(this, function(node, i, j) {
callback.call(node, node.__data__, i, j);
});
};
function d3_selection_each(groups, callback) {
for (var j = 0, m = groups.length; j < m; j++) {
for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
if (node = group[i]) callback(node, i, j);
}
}
return groups;
}
d3_selectionPrototype.call = function(callback) {
var args = d3_array(arguments);
callback.apply(args[0] = this, args);
return this;
};
d3_selectionPrototype.empty = function() {
return !this.node();
};
d3_selectionPrototype.node = function() {
for (var j = 0, m = this.length; j < m; j++) {
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
var node = group[i];
if (node) return node;
}
}
return null;
};
d3_selectionPrototype.transition = function() {
var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], subgroup, node, transition = Object.create(d3_transitionInherit);
transition.time = Date.now();
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) d3_transitionNode(node, i, id, transition);
subgroup.push(node);
}
}
return d3_transition(subgroups, id);
};
var d3_selectionRoot = d3_selection([ [ d3_document ] ]);
d3_selectionRoot[0].parentNode = d3_selectRoot;
d3.select = function(selector) {
return typeof selector === "string" ? d3_selectionRoot.select(selector) : d3_selection([ [ selector ] ]);
};
d3.selectAll = function(selector) {
return typeof selector === "string" ? d3_selectionRoot.selectAll(selector) : d3_selection([ d3_array(selector) ]);
};
function d3_selection_enter(selection) {
d3_arraySubclass(selection, d3_selection_enterPrototype);
return selection;
}
var d3_selection_enterPrototype = [];
d3.selection.enter = d3_selection_enter;
d3.selection.enter.prototype = d3_selection_enterPrototype;
d3_selection_enterPrototype.append = d3_selectionPrototype.append;
d3_selection_enterPrototype.insert = d3_selectionPrototype.insert;
d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
d3_selection_enterPrototype.node = d3_selectionPrototype.node;
d3_selection_enterPrototype.select = function(selector) {
var subgroups = [], subgroup, subnode, upgroup, group, node;
for (var j = -1, m = this.length; ++j < m; ) {
upgroup = (group = this[j]).update;
subgroups.push(subgroup = []);
subgroup.parentNode = group.parentNode;
for (var i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i));
subnode.__data__ = node.__data__;
} else {
subgroup.push(null);
}
}
}
return d3_selection(subgroups);
};
function d3_transition(groups, id) {
d3_arraySubclass(groups, d3_transitionPrototype);
groups.id = id;
return groups;
}
var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit = {
ease: d3_ease_cubicInOut,
delay: 0,
duration: 250
};
d3_transitionPrototype.call = d3_selectionPrototype.call;
d3_transitionPrototype.empty = d3_selectionPrototype.empty;
d3_transitionPrototype.node = d3_selectionPrototype.node;
d3.transition = function(selection) {
return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition();
};
d3.transition.prototype = d3_transitionPrototype;
function d3_transitionNode(node, i, id, inherit) {
var lock = node.__transition__ || (node.__transition__ = {
active: 0,
count: 0
}), transition = lock[id];
if (!transition) {
var time = inherit.time;
transition = lock[id] = {
tween: new d3_Map(),
event: d3.dispatch("start", "end"),
time: time,
ease: inherit.ease,
delay: inherit.delay,
duration: inherit.duration
};
++lock.count;
d3.timer(function(elapsed) {
var d = node.__data__, ease = transition.ease, event = transition.event, delay = transition.delay, duration = transition.duration, tweened = [];
return delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time), 1;
function start(elapsed) {
if (lock.active > id) return stop();
lock.active = id;
event.start.call(node, d, i);
transition.tween.forEach(function(key, value) {
if (value = value.call(node, d, i)) {
tweened.push(value);
}
});
if (!tick(elapsed)) d3.timer(tick, 0, time);
return 1;
}
function tick(elapsed) {
if (lock.active !== id) return stop();
var t = (elapsed - delay) / duration, e = ease(t), n = tweened.length;
while (n > 0) {
tweened[--n].call(node, e);
}
if (t >= 1) {
stop();
event.end.call(node, d, i);
return 1;
}
}
function stop() {
if (--lock.count) delete lock[id]; else delete node.__transition__;
return 1;
}
}, 0, time);
return transition;
}
}
d3_transitionPrototype.select = function(selector) {
var id = this.id, subgroups = [], subgroup, subnode, node;
if (typeof selector !== "function") selector = d3_selection_selector(selector);
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);