Ero sivun ”Joensuun keskustan liikennemalli J1” versioiden välillä
(Liikennemallin kommentointia lisätty) |
(→Data) |
||
(16 välissä olevaa versiota 4 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
{{muuttuja|moderator=smxb}} | {{muuttuja|moderator=smxb}} | ||
[[Luokka:Sisältää R-koodia]] | |||
== Rajaus == | == Rajaus == | ||
Liikennemalli J1 on yksinkertaistettu | Liikennemalli J1 on yksinkertaistettu versio Helsingin seudun joukkoliikennemallista. Malli J1 on rajattu Joensuun ydinkeskustaan 9*13-korttelin hilaan. Mallia J1 käytetään osana 31.10.2011 Joensuussa järjestettävää Eracedu-koulutustapahtumaa. | ||
'''Mallia voi kokeilla klikkaamalla otsikon 'Kaava' alta löytyvää 'Aja koodi' -näppäintä. Oman liikenneratkaisusi voit syöttää sisään vastaamalla kysymyksiin otsikon 'Data' alla. Jo syötetyt liikennesuunnitelmat otsikon 'Näytä tähänastiset ehdotukset' alla olevaa 'Aja koodi'-näppäintä painamalla''' | |||
== Määritelmä == | == Määritelmä == | ||
=== Data === | === Data === | ||
{{vastusta|#: |Laskenta ei toimi, koska obs-sarake on poistettu tietokantataulusta. Koodin päivittämiseksi pitäisi tehdä: | |||
* Palauttaa obs tai luoda vastaava uusi indeksi, esim. Ehdotus (myös vanhoihin syötteisiin!). | |||
* Tarkistaa, että koodeissa on oikea series_id: 3636. | |||
* Analyysikoodi on kirjoitettu hyödyntämättä ovariableja. Pitäisikö se miettiä kokonaan uusiksi? | |||
* Lopussa oleva terveysvaikutuslaskenta pitäisi toteuttaa uusimman [[:op_en:HIA|HIA]]-laskennan mukaisesti. | |||
* Olisiko tässä helpompi hyödyntää location-parametria käyttöliitymässä? | |||
|--[[Käyttäjä:Jouni|Jouni Tuomisto]] 7. lokakuuta 2013 kello 09.07 (EEST)}} | |||
Mitä muutoksia haluaisit tehdä Joensuun liikennejärjestelyihin? Katso karttaa ja vastaa kysymyksiin. | Mitä muutoksia haluaisit tehdä Joensuun liikennejärjestelyihin? Katso karttaa ja vastaa kysymyksiin. | ||
[[Image:Gpick_shakki.png|450px|right|Joensuun keskusta]] | |||
<rcode variables=" | <rcode variables=" | ||
Rivi 19: | Rivi 30: | ||
|name:mihin.y|description:Loppupisteen y-koordinaatti|type:selection|options:'A';A;'B';B;'C';C;'D';D;'E';E;'F';F;'G';G;'H';H;'I';I;'J';J;'K';K;'L';L;'M';M | |name:mihin.y|description:Loppupisteen y-koordinaatti|type:selection|options:'A';A;'B';B;'C';C;'D';D;'E';E;'F';F;'G';G;'H';H;'I';I;'J';J;'K';K;'L';L;'M';M | ||
|name:lisäys|description:Mitä haluat lisätä tälle välille?|type:selection|options:'Pyörätie';Pyörätie;'Kävelykatu';Kävelykatu | |name:lisäys|description:Mitä haluat lisätä tälle välille?|type:selection|options:'Pyörätie';Pyörätie;'Kävelykatu';Kävelykatu | ||
|name:suunnitelma|description:Voit antaa omalle suunnitelmallesi nimen, jolloin yksittäiset ehdotukset käsitellään kokonaisuutena. | |name:suunnitelma|description:Voit antaa omalle suunnitelmallesi nimen, jolloin yksittäiset ehdotukset käsitellään kokonaisuutena (eli kaikki samannimiset suunnitelmat yhdistetään yhdeksi kokonaissuunnitelmaksi). Voit myöhemmin palata mihin tahansa tietokannasta löytyvään suunnitelmaan ja simuloida sen tunnusluvut kirjoittamalla sen nimen alla olevaan kenttään ja painamalla 'Aja koodi'-näppäintä. Vastaavasti uusi liikennesuunnitelma talletetaan tietokantaan kirjoittamalla suunnitelmasi nimi alla olevaan kenttään heittomerkkien väliin ja valitsemalla yllä olevista valikoista liikenneratkaisusi koordinaatit ja tietyyppi.|default:'suunnitelma Joensuu 3' | ||
"> | "> | ||
library( | library(OpasnetUtils) | ||
Obs <- max( | oprint(opbase.data("Op_fi2681", series_id = 3636)) | ||
Obs <- max(opbase.data("Op_fi2681", series_id = 3636)[,"obs"])+1 | |||
data <- data.frame( | data <- data.frame( | ||
obs = rep(Obs, 6), | obs = rep(Obs, 6), | ||
Rivi 28: | Rivi 40: | ||
Result = c(mistä.x, mistä.y, mihin.x, mihin.y, lisäys, suunnitelma)) | Result = c(mistä.x, mistä.y, mihin.x, mihin.y, lisäys, suunnitelma)) | ||
opbase.upload( | opbase.upload(input = data, ident = "Op_fi2681", acttype = 5, who = wiki_username, unit = "-") | ||
cat("Kiitos ehdotuksestasi!") | cat("Kiitos ehdotuksestasi!") | ||
Rivi 41: | Rivi 53: | ||
Muuttujan tulokset on ilmaistu useissa yksiköissä (liikennesuorite, CO2-päästöt, pienhiukkaspäästöt, DALYt) | Muuttujan tulokset on ilmaistu useissa yksiköissä (liikennesuorite, CO2-päästöt, pienhiukkaspäästöt, DALYt) | ||
=== | === Liikenneskenaarion vaikutukset nykytilanteeseen (BAU) verrattuna === | ||
<rcode graphics="1"> | |||
library(xtable) | |||
# Luetaan liikennemaarat Opasnet Base-tietokannasta, muuttujasta Op_fi2681: | # Luetaan liikennemaarat Opasnet Base-tietokannasta, muuttujasta Op_fi2681: | ||
# | # | ||
library( | library(OpasnetUtils) | ||
risteykset <- | risteykset <- opbase.data("Op_fi2681", series_id = 2953) # TARKISTA SERIES!!! | ||
# | # | ||
# Muutetaan tekstitulokset numeroiksi. Jostain syystä Länteen tallentui tekstinä. | # Muutetaan tekstitulokset numeroiksi. Jostain syystä Länteen tallentui tekstinä. | ||
Rivi 56: | Rivi 68: | ||
risteykset <- risteykset[, c(1,2,4,5,3)] | risteykset <- risteykset[, c(1,2,4,5,3)] | ||
colnames(risteykset) <- c("Risteys","Pohjoiseen","Itään","Etelään","Länteen") | colnames(risteykset) <- c("Risteys","Pohjoiseen","Itään","Etelään","Länteen") | ||
# Eristetaan risteyspisteet omaan vektoriin: | |||
# | |||
risteyspisteet <- risteykset[[1]]; dim(risteyspisteet)<-c(9,13) | |||
# Muodostetaan ylimaaraiset rivit ja sarakkeet lahinaapuritaulukointia varten | |||
# (ita-lansi -suunnassa reunapisteiden nimena "AA" ja pohjois-etela -suunnassa "BB", nurkissa "XX"): | |||
# | # | ||
# Luetaan liikennesuunnitelma tietokannasta | test3 <- c(1:(15*11)); dim(test3) <- c(11,15); test3 <- test3*0; | ||
test3[2:10,2:14]<-as.character(risteyspisteet); test3[1:11,1] <- "AA"; test3[1:11,15] <- "AA"; test3[1,2:14] <- "BB"; test3[11,2:14] <- "BB"; | |||
test3[1,1] <- "XX"; test3[1,15] <- "XX"; test3[11,1] <- "XX"; test3[11,15] <- "XX"; | |||
# Luetaan myos liikennesuunnitelma tietokannasta | |||
liikennesuunnitelmat <- op_baseGetData("opasnet_base", "Op_fi2681") | liikennesuunnitelmat <- op_baseGetData("opasnet_base", "Op_fi2681") | ||
# | # | ||
Rivi 92: | Rivi 117: | ||
# Puretaan listarakenne unlist-komennolla: | # Puretaan listarakenne unlist-komennolla: | ||
liikennesuunnitelmalista <- unlist(liikennesuunnitelmalista) | liikennesuunnitelmalista <- unlist(liikennesuunnitelmalista) | ||
# | |||
# Eristetaan x- ja y-koordinaatit liikennesuunnitelmalista-muuttujasta: | |||
# | |||
apu.lkm <- length(liikennesuunnitelmalista)/6 | |||
polku.apu <- list(1:apu.lkm); for(i in 1:apu.lkm) {polku.apu[[i]] <- liikennesuunnitelmalista[((i-1)*6+2):((i-1)*6+5)]} | |||
# Maaritetaan polku-muuttuja: | |||
polku <- list(1:apu.lkm) | |||
# | |||
# LUUPPI ALKAA | |||
# | |||
for(m in 1:apu.lkm) { | |||
# Maaritetaan lahtopiste | |||
apu.x <- c(1:9); lahto.x <- sum(as.numeric(apu.x == polku.apu[[m]][1])*c(1:9)); | |||
apu.y <- c("A","B","C","D","E","F","G","H","I","J","K","L","M"); lahto.y <- sum(as.numeric(apu.y == polku.apu[[m]][2])*c(1:13)); | |||
# | |||
# Maaritetaan loppupiste | |||
loppu.x <- sum(as.numeric(apu.x == polku.apu[[m]][3])*c(1:9)); | |||
loppu.y <- sum(as.numeric(apu.y == polku.apu[[m]][4])*c(1:13)); | |||
# | |||
# Maaritetaan onko muutos x- vai y-suuntaan: | |||
if(loppu.x - lahto.x == 0) muutos.x <- 0 else muutos.x <- 1; | |||
if(loppu.y - lahto.y == 0) muutos.y <- 0 else muutos.y <- 1; | |||
# | |||
# Maaritetaan muutoksen maara | |||
ero.x <- loppu.x - lahto.x; ero.y <- loppu.y - lahto.y; | |||
# | |||
# Maaritellaan pituudet jos jompikumpi siirtymista on nolla: | |||
if(muutos.x == 0 & muutos.y > 0) alipolku <- c(1:(abs(ero.y)+1)); | |||
if(muutos.y == 0 & muutos.x > 0) alipolku <- c(1:(abs(ero.x)+1)); | |||
if(muutos.x == 0 & muutos.y == 0) alipolku <- 0; | |||
# | |||
# Muodostetaan vektori nimelta alipolku johon ladataan koordinaatteja pisteesta (lahto.x, lahto.y) alkaen pisteeseen | |||
# (loppu.x, loppu.y) asti, ilmaistuna polun koordinaateissa, jotka on talletettu taulukkoon test3: | |||
# | |||
for(x in lahto.x:loppu.x) {for(y in lahto.y:loppu.y) { if(muutos.x == 0 & muutos.y == 0) alipolku <- "XX" else alipolku[[muutos.y*y + muutos.x*x]] <- test3[11*y + x + 1] }} | |||
# | |||
polku[[m]] <- alipolku | |||
} | |||
# | |||
# LUUPPI PAATTYY | |||
# | |||
# | # Poistetaan polusta moninkertaiset alkiot ja elementti "XX" seka elementit "1"..."15", joita ilmestyy | ||
# tayte-elementeiksi R:ssa kun vektorin sijoitukset eivat jatku indeksiin 1 asti. Lopuksi poistetaan NA't komennolla na.exclude: | |||
# | # | ||
# polku # tulostus | |||
polku <- unique(unlist(polku)); | |||
polku <- polku[polku !=c("XX")]; polku <- polku[polku !=c("1")]; polku <- polku[polku !=c("2")]; polku <- polku[polku !=c("3")]; | |||
polku <- polku[polku !=c("4")]; polku <- polku[polku !=c("5")]; polku <- polku[polku !=c("6")]; polku <- polku[polku !=c("7")]; | |||
polku <- polku[polku !=c("8")]; polku <- polku[polku !=c("9")]; polku <- polku[polku !=c("10")]; polku <- polku[polku !=c("11")]; | |||
polku <- polku[polku !=c("12")]; polku <- polku[polku !=c("13")]; polku <- polku[polku !=c("14")]; polku <- polku[polku !=c("15")]; | |||
polku <- as.character(na.exclude(polku)) | |||
# polku # tulostus | |||
# | # Poluksi maaritellaan pistejoukko vertekseja, esim: | ||
# ( | # | ||
#polku<-c("E9","E8","F8","F7","F6","F5","F4","G4","G3","G2","G1") | |||
# | |||
# Tutkittavia vaihtoehtoja: | |||
# | |||
# suunnitelma Joensuu 1: | |||
#polku <- c("F1","F2","F3","F4","F5","F6","F7","F8","F8") | |||
# | |||
# suunnitelma Joensuu 2: | |||
#polku <- c("H1","H2","H3","H4","H5","H6","H7","H8","H9") | |||
# | |||
# suunnitelma Joensuu 3 | |||
#polku <- c("L1","L2","L3","L4","L5","L6","L7") | |||
# | |||
# suunnitelma Joensuu 4 (vrt. suunnitelma Joensuu 1): | |||
#polku <- c("A5","B5","C5","D5","E5","F5","G5","H4","I4","J4","K4","L4","M4") | |||
# | # | ||
# suunnitelma Joensuu 5 (vrt. samaan polkuun kun siirtokerroin 0.1 (Pyörätie )-> 1.0 (Kävelykatu) (suunnitelma Joensuu 6)) | |||
#polku <- c("A7","B7","C7","D7","E7","F7","G7","H7","I7","I6","I5","I4","I3","I2","I1") | |||
# | # | ||
# | # suunnitelma Joensuu 7 | ||
#polku <- c("L1","L2","L3","L4","L5","L6","L7","A1","B1","C1","D1","D2","D3","D4") | |||
# | # | ||
polku<-c(" | # suunnitelma Joensuu 8 | ||
#polku <- c("H1","H2","H3","H4","H5","H6","H7","H8","H9","L1","L2","L3","L4","L5","L6","L7","A1","B1","C1") | |||
# Maaritellaan lahinaapurilista kaikille polun pisteille: | # Maaritellaan lahinaapurilista kaikille polun pisteille: | ||
Rivi 178: | Rivi 270: | ||
# lahinaapuriristeyksiin): | # lahinaapuriristeyksiin): | ||
# | # | ||
if(liikennesuunnitelmalista[[1]] == "Pyörätie") siirtokerroin <- 0.1; | |||
if(liikennesuunnitelmalista[[1]] == "Kävelykatu") siirtokerroin <- 1.0; | |||
# | |||
# STAND ALONE-koodissa ylla olevat 2 rivia on kommentoitava pois ja KORVATTAVA RIVILLA | |||
#siirtokerroin <- 0.1 # Pyörätie | |||
#siirtokerroin <- 1.0 # Kävelykatu | |||
# | |||
jaettava <- siirtokerroin*num_polun_liikennemaara; | |||
# Jotta kokonaisliikennesuorite ei olisi sailyva suure maaritetaan jaettava-muuttuja uudella tavalla. | # Jotta kokonaisliikennesuorite ei olisi sailyva suure maaritetaan jaettava-muuttuja uudella tavalla. | ||
Rivi 204: | Rivi 303: | ||
# | # | ||
jaettava_per_risteys <- list(1:length(lahinaapuri_risteykset)); | jaettava_per_risteys <- list(1:length(lahinaapuri_risteykset)); | ||
for(i in 1:length(lahinaapuri_risteykset)) {jaettava_per_risteys[[i]] <- painokertoimet[[i]]*jaettava_rotate | for(i in 1:length(lahinaapuri_risteykset)) {jaettava_per_risteys[[i]] <- painokertoimet[[i]]*jaettava} | ||
# jaettava_rotate tai jaettava | |||
# Viela pitaa vahentaa 'jaettava' jokaisesta risteyksesta polku-muuttujassa ja lisata | # Viela pitaa vahentaa 'jaettava' jokaisesta risteyksesta polku-muuttujassa ja lisata | ||
Rivi 330: | Rivi 430: | ||
# Esitetaan tulokset skenaario kerrallaan: | # Esitetaan tulokset skenaario kerrallaan: | ||
# | # | ||
print("SKENAARIO: BAU (= NYKYTILANNE)"); print("Kokonaisliikennemaarä (autoa/vrk)"); kokonaisliikennemaara; print("Liikennesuorite (km/vrk)"); liikennesuorite; print("Hiilidioksidijalanjälki (1000 kg/v)"); paastot.co2/1000 | #print("SKENAARIO: BAU (= NYKYTILANNE)"); print("Kokonaisliikennemaarä (autoa/vrk)"); kokonaisliikennemaara; print("Liikennesuorite (km/vrk)"); liikennesuorite; print("Hiilidioksidijalanjälki (1000 kg/v)"); paastot.co2/1000 | ||
tuloste <- data.frame(Suure = c("Skenaario", "Kokonaisliikennemäärä", "Liikennesuorite", "Hiilidioksidijalanjälki"), Yksikkö = c("", "autoa/vrk", "km/vrk", "1000 kg/v"), Arvo = c("Nykytilanne (BAU)", kokonaisliikennemaara, liikennesuorite, paastot.co2/1000)) | |||
print(xtable(tuloste), type='html') | |||
# | # | ||
print("SKENAARIO: KÄYTTÄJÄN TEKEMÄ LIIKENNESUUNNITELMA (risteykset lueteltu alla)"); polku; print("Kokonaisliikennemäärä (autoa/vrk)"); kokonaisliikennemaara2; print("Liikennesuorite (km/vrk)"); liikennesuorite2; print(" | #print("SKENAARIO: KÄYTTÄJÄN TEKEMÄ LIIKENNESUUNNITELMA (risteykset lueteltu alla)"); polku; print("Kokonaisliikennemäärä (autoa/vrk)"); kokonaisliikennemaara2; print("Liikennesuorite (km/vrk)"); liikennesuorite2; print("Hinta-arvio toteutuksesta (1000 €) = Raha"); ero.hinta.pk; print("MUUTOS hiilidioksidijalanjäljessä (1000 kg/v) = Luonto"); ero.paastot.co2; print("MUUTOS pienhiukkaspäästöjen aiheuttamien sairauspäivien lukumäärässä tuhatta herk. henkeä kohden (lkm/v) = Terveys"); spv.ero.henkilo | ||
tuloste <- data.frame(Suure = c("Skenaario", "Polku", "Kokonaisliikennemäärä", "Liikennesuorite", "Hinta-arvio toteutuksesta = Raha", "MUUTOS hiilidioksidijalanjäljessä = Luonto", "MUUTOS pienhiukkaspäästöjen aiheuttamien sairauspäivien lukumäärässä tuhatta herk. henkeä kohden = Terveys"), Yksikkö = c("", "", "autoa/vrk", "km/vrk", "1000 €", "1000 kg/v", "lkm/v"), Arvo = c("KÄYTTÄJÄN TEKEMÄ LIIKENNESUUNNITELMA", paste(polku, collapse = ", "), kokonaisliikennemaara2, liikennesuorite2, ero.hinta.pk, ero.paastot.co2, spv.ero.henkilo)) | |||
print(xtable(tuloste), type = 'html') | |||
# | # | ||
plotResults <- c(ero.hinta.pk,ero.paastot.co2,spv.ero.henkilo) | plotResults <- c(ero.hinta.pk,ero.paastot.co2,spv.ero.henkilo) | ||
plotResults_num <- as.numeric(plotResults < 0) | plotResults_num <- as.numeric(plotResults < 0) | ||
colorbar <- c(" | colorbar <- c("red","red","red") | ||
colorbar[which(plotResults_num == 1)] <- " | colorbar[which(plotResults_num == 1)] <- "green" | ||
barplot(plotResults, col=colorbar) | barplot(plotResults, col=colorbar, names.arg=c("Raha","Luonto","Terveys"), cex.axis=1.7, cex.names=1.7) | ||
#barplot(plotResults, col=colorbar, names.arg=c("Kustannus (1000 euroa)","Ero CO2-päästö vs BAU (1000 kg/v)","Ero sairaspäivissä/(1000 henk. v) vs BAU")) | |||
</rcode> | </rcode> | ||
Rivi 348: | Rivi 456: | ||
<rcode> | <rcode> | ||
library( | library(OpasnetUtils) | ||
library(xtable) | library(xtable) | ||
data <- | data <- opbase.data("Op_fi2681")[, -c(1,4)] | ||
data <- reshape(data, timevar = "Parameter", idvar = "obs", direction = "wide") | data <- reshape(data, timevar = "Parameter", idvar = "obs", direction = "wide") | ||
colnames(data) <- c("obs", "lisäys", "mihin.x", "mihin.y", "mistä.x", "mistä.y", "suunnitelma") | colnames(data) <- c("obs", "lisäys", "mihin.x", "mihin.y", "mistä.x", "mistä.y", "suunnitelma") | ||
Rivi 359: | Rivi 467: | ||
== Katso myös == | == Katso myös == | ||
* [[Osallistuva_kaupunkisuunnittelu_-_Eracedu_2011]] | |||
* [[Helsingin seudun liikennemalli]] | * [[Helsingin seudun liikennemalli]] | ||
* [http://www.viddler.com/explore/otavanopisto/videos/312/ Video liikennemallin ja liikennepelin esittelystä] (Otavan opiston paja 8.9.2011) | * [http://www.viddler.com/explore/otavanopisto/videos/312/ Video liikennemallin ja liikennepelin esittelystä] (Otavan opiston paja 8.9.2011) | ||
Rivi 368: | Rivi 475: | ||
<references/> | <references/> | ||
==Aiheeseen liittyviä tiedostoja== | ==Aiheeseen liittyviä tiedostoja== | ||
Rivi 373: | Rivi 481: | ||
{{mfiles}} | {{mfiles}} | ||
{{eracedu}} | |||
Nykyinen versio 7. lokakuuta 2013 kello 06.07
Moderaattori:smxb (katso kaikki)
Sivun edistymistä ei ole arvioitu. Arvostuksen määrää ei ole arvioitu (ks. peer review). |
Lisää dataa
|
Rajaus
Liikennemalli J1 on yksinkertaistettu versio Helsingin seudun joukkoliikennemallista. Malli J1 on rajattu Joensuun ydinkeskustaan 9*13-korttelin hilaan. Mallia J1 käytetään osana 31.10.2011 Joensuussa järjestettävää Eracedu-koulutustapahtumaa.
Mallia voi kokeilla klikkaamalla otsikon 'Kaava' alta löytyvää 'Aja koodi' -näppäintä. Oman liikenneratkaisusi voit syöttää sisään vastaamalla kysymyksiin otsikon 'Data' alla. Jo syötetyt liikennesuunnitelmat otsikon 'Näytä tähänastiset ehdotukset' alla olevaa 'Aja koodi'-näppäintä painamalla
Määritelmä
Data
⇤#: Laskenta ei toimi, koska obs-sarake on poistettu tietokantataulusta. Koodin päivittämiseksi pitäisi tehdä:
- Palauttaa obs tai luoda vastaava uusi indeksi, esim. Ehdotus (myös vanhoihin syötteisiin!).
- Tarkistaa, että koodeissa on oikea series_id: 3636.
- Analyysikoodi on kirjoitettu hyödyntämättä ovariableja. Pitäisikö se miettiä kokonaan uusiksi?
- Lopussa oleva terveysvaikutuslaskenta pitäisi toteuttaa uusimman HIA-laskennan mukaisesti.
- Olisiko tässä helpompi hyödyntää location-parametria käyttöliitymässä?
--Jouni Tuomisto 7. lokakuuta 2013 kello 09.07 (EEST)
Mitä muutoksia haluaisit tehdä Joensuun liikennejärjestelyihin? Katso karttaa ja vastaa kysymyksiin.
![Joensuun keskusta](/images/thumb/3/34/Gpick_shakki.png/450px-Gpick_shakki.png)
Kausaliteetti
- Ylävirtamuuttujia ei ole.
Yksikkö
Muuttujan tulokset on ilmaistu useissa yksiköissä (liikennesuorite, CO2-päästöt, pienhiukkaspäästöt, DALYt)
Liikenneskenaarion vaikutukset nykytilanteeseen (BAU) verrattuna
Tulokset
Näytä tähänastiset ehdotukset
Katso myös
- Osallistuva_kaupunkisuunnittelu_-_Eracedu_2011
- Helsingin seudun liikennemalli
- Video liikennemallin ja liikennepelin esittelystä (Otavan opiston paja 8.9.2011)
Viitteet
Aiheeseen liittyviä tiedostoja
<mfanonymousfilelist></mfanonymousfilelist>
![]() |
![]() |