Simulacion

Server Farm Inc. (SFI) necesita actualizar sus servidores. La gerencia de la compañía ha identificado las siguientes dos opciones: (1) cambiar a una plataforma basada en Windows desde su plataforma actual basada en Unix, o (2) quedarse con una plataforma basada en Unix. Es una práctica estándar en SFI utilizar una distribución triangular para modelar costos inciertos.

En este sentido, la compañía estima que si migra a Windows, el nuevo hardware del servidor podría costar desde $ 100,000 hasta $ 200,000. La mejor estimación del grupo técnico es que los costos de hardware serán de $ 125,000 si se busca la opción de Windows. Del mismo modo, la mejor estimación de la compañía con respecto al costo de actualizar y convertir su software a Windows es de $ 300,000 con un rango de $ 275,000 a $ 500,000.

Finalmente, si la empresa se convierte a Windows, se estima que los costos de capacitación de los empleados oscilarán entre $ 9,000 y $ 15,000, con la mejor estimación de $ 10,000.

Si la compañía se queda con Unix, el nuevo hardware del servidor probablemente costará $ 100,000, pero podría costar entre $ 80,000 y $ 210,000. Se espera que los costos de conversión y actualización de software sean de $ 300,000 pero podrían ser de entre $ 250,000 y $ 525,000.

Los costos de capacitación de los empleados serán entre $ 8,000 y $ 17,500, con una mejor estimación de $ 10,000. Desarrolle un modelo para simular esta situación utilizando Excel o Algún Software de Simulación y responda las siguientes preguntas.

¿Cuál es el costo esperado de cada proyecto?

Primero comenzamos por resumir los datos que tenemos

Proyecto 1: Cambiar a Windows

Rubro Costo Minimo Costo Maximo Costo Esperado
Nuevo Hardware $100,000 $200,000 $125,000
Software $275,000 $500,000 $300,000
Capacitacion $ 9,000 $ 15,000 $ 10,000
Total $384,000 $715,000 $435000

Proyecto 2: Utilizar Unix

Rubro Costo Minimo Costo Maximo Costo Esperado
Nuevo Hardware $80,000 $210,000 $100,000
Software $250,000 $525,000 $300,000
Capacitacion $ 8,000 $ 17,500 $ 10,000
Total $338,000 $752,500 $410,000

El costo esperado para el proyecto 1 es de $435,000 mientras que el del proyecto 2 es de $410,000.

¿Cuál es la probabilidad de que el costo de cada proyecto supere los $ 575,000

Para esto vamos a definir una funcion que nos ayude a estimar el costo de cada proyecto

costo_proyecto(1,c(100000,200000), c(275000,500000), c(9000,15000))
[1] 589593.3

Ahora usando esa funcion simulemos 1000 el resultado:

simulacion_proyecto_1 <- sapply(1:1000, costo_proyecto, hardware_cost=c(100000,200000), software_cost=c(275000,500000), capacitacion_cost=c(9000,15000))
simulacion_proyecto_1
   [1] 571065.6 536201.5 508149.5 554431.1 560400.9 535349.7 566023.1 509997.8 479564.0 519237.7 629544.2 514772.8 504771.1 425005.9 564689.9 623430.9 677054.9
  [18] 528994.3 469599.0 591776.1 599799.1 509827.3 489358.9 432614.8 597088.4 512420.7 519020.4 505741.0 480389.6 490131.2 556659.5 454426.6 663490.1 467260.4
  [35] 639611.7 456548.7 615111.8 504919.2 570122.9 568478.1 545732.3 603425.2 600314.4 480481.5 421215.7 602745.7 491731.2 499935.7 633280.5 492229.4 537074.4
  [52] 607129.8 650050.1 483149.4 568718.8 677920.0 606298.4 636822.4 500330.8 609704.4 605111.8 538019.9 435560.7 620381.9 546871.3 586848.3 512766.1 466885.9
  [69] 632217.4 549021.2 679155.0 627216.6 472322.3 558758.5 560738.9 441576.9 685892.1 557621.7 467587.8 633928.7 613270.9 607632.3 465873.1 477294.4 471138.1
  [86] 549580.9 597130.0 637755.1 549812.4 674859.7 533742.2 527639.1 466783.7 651215.4 473174.9 668768.3 513776.6 417347.7 661276.1 490227.1 557735.4 564769.7
 [103] 666215.8 575715.7 525261.1 526406.7 596393.7 657519.6 596452.6 511046.1 568929.8 491612.0 559409.8 672456.6 516128.0 526592.3 430189.5 487398.1 420162.0
 [120] 611952.3 526943.3 431912.9 518083.5 449751.3 432530.3 557964.6 620718.0 408521.4 424313.0 628899.9 510945.4 548234.3 450616.7 503184.5 639631.8 517997.6
 [137] 528123.1 501799.2 643647.4 512382.4 470845.8 481692.4 526361.5 649996.9 620418.1 424472.8 625611.8 611865.8 534880.5 563288.5 520338.1 483092.3 646893.5
 [154] 458458.7 498798.7 424527.3 516440.7 451485.9 542693.7 470121.7 593266.0 649992.6 447833.5 630511.2 566582.4 546116.1 638512.1 593701.3 500249.7 711091.7
 [171] 479719.4 512892.6 615547.4 424401.6 587255.4 450460.9 556160.2 588834.4 569007.5 566936.3 451165.5 517320.3 649063.7 454780.2 500150.7 676773.8 538574.5
 [188] 415735.0 554289.1 502284.2 487789.8 643923.7 453552.2 530110.7 541850.8 523021.2 478464.5 459788.6 607354.4 560037.0 620760.0 583260.2 458037.9 571150.3
 [205] 413486.1 483103.4 641556.4 489431.7 428925.1 590793.6 474249.1 659931.1 610222.7 577290.5 487992.6 537718.4 588939.1 523776.6 523608.1 457483.5 534179.1
 [222] 499867.6 466900.0 644962.2 626636.2 498880.7 462727.2 616145.4 483192.6 589341.6 614087.1 460404.5 500043.6 565995.9 475312.7 508666.9 594720.6 618853.0
 [239] 413527.6 485138.7 551765.7 605787.5 633460.7 532608.2 526517.6 621511.4 516683.8 492644.0 472958.0 606726.9 557816.2 402520.1 525064.8 563123.7 451926.0
 [256] 518526.2 593154.9 600547.3 488236.8 477804.7 584918.1 543200.9 431488.1 533037.8 623047.1 521081.3 656045.4 469072.4 598287.4 504767.8 451256.7 544449.7
 [273] 565878.1 615333.8 496726.7 629498.3 452741.8 603511.2 571024.1 501351.0 478738.9 643974.2 474879.1 545259.1 612040.8 516721.4 506042.8 570507.6 573457.9
 [290] 582902.3 603079.0 521385.0 542136.9 620753.5 484579.9 514920.6 486124.0 530602.5 567257.5 663310.4 612852.2 450127.9 593532.6 492604.8 524024.2 675305.4
 [307] 445730.9 493800.5 671924.6 473125.3 468094.9 488167.1 524419.3 580391.9 596111.4 596888.4 696447.9 558528.8 567680.9 581267.3 659814.3 467704.2 599276.6
 [324] 579649.6 525550.7 649028.2 553561.9 433842.8 519670.2 639428.8 635770.7 664539.9 612891.4 547786.7 580501.6 663174.0 450059.4 588041.8 505882.0 472432.5
 [341] 486086.0 654581.7 531212.3 554351.6 593085.2 502031.6 515402.0 566712.5 423371.4 659530.2 469330.8 574292.3 690686.1 594149.2 469077.5 554641.5 650428.7
 [358] 606805.7 605667.8 531864.7 495807.7 696031.0 684579.8 412593.1 472681.9 561696.0 435251.9 641547.0 574745.4 447867.8 625033.8 670765.6 430956.9 561203.9
 [375] 653996.9 548795.5 617068.3 489252.5 510535.9 657993.0 478130.9 655440.8 448003.6 551735.0 570847.4 423391.0 473607.4 684173.4 508612.0 532916.2 575583.1
 [392] 407250.0 433005.0 518523.7 547673.6 598300.7 558888.9 519846.0 688176.5 466760.9 512462.7 681637.6 468494.9 539557.2 620460.4 486143.1 522827.1 566507.0
 [409] 578123.3 542521.2 515245.2 509259.4 526740.3 554869.9 488806.1 516103.8 523326.3 673356.7 534059.1 471331.8 569069.0 576800.8 423696.1 501547.4 661163.6
 [426] 485663.0 493513.0 486417.2 598709.6 478416.3 442499.1 582702.7 546063.7 621272.1 542925.2 545856.6 544565.4 514272.2 467911.4 508240.6 600991.2 559482.7
 [443] 626198.4 559718.1 532794.2 575278.5 630870.6 567829.9 587631.9 685781.7 526340.4 579523.9 464163.7 603674.6 488021.3 521984.8 532570.6 439785.3 565015.6
 [460] 516181.9 454936.5 470109.2 475547.1 550262.8 535676.6 505588.9 664866.1 630078.2 599228.1 539399.4 709382.4 463710.2 534414.7 573008.4 498192.8 544204.7
 [477] 524079.5 612516.4 555775.6 577446.6 616245.3 464166.3 477423.1 578708.3 592668.5 476961.4 512390.5 592980.8 435174.5 639300.0 568521.9 645485.8 519565.5
 [494] 666056.7 527138.2 565107.5 631325.8 582805.5 646611.9 529349.0 652832.2 642473.3 671207.6 582963.2 617791.3 579158.0 629569.1 523644.9 461206.1 568619.8
 [511] 604602.5 468112.5 545945.7 704451.5 624800.7 562822.5 626331.8 480556.8 541814.9 625399.8 519467.3 552552.7 542252.9 581459.1 444118.1 512813.0 443818.5
 [528] 563299.3 453065.1 535939.7 639478.1 485546.6 682369.2 560875.6 469663.7 461149.4 494747.0 580258.9 703382.6 502061.8 523877.5 552899.8 523459.8 679552.9
 [545] 529643.1 519188.9 539212.5 442364.4 658761.4 564294.6 609639.6 667635.8 569241.5 607472.2 583206.2 452926.1 603595.6 520359.7 621511.7 493491.5 562897.9
 [562] 542061.5 570373.7 625931.5 480094.8 656379.4 497316.1 562470.4 661637.5 567344.1 591279.9 476900.8 660745.4 577952.9 546524.6 417698.8 476748.6 581200.6
 [579] 522461.6 448819.1 496001.0 534892.6 518293.4 600779.3 482657.8 542853.9 640604.0 513512.9 417493.3 674282.2 571974.4 400914.0 536093.4 583315.0 530416.7
 [596] 557995.5 496083.3 561862.4 613161.3 441557.2 632462.5 487653.9 552753.7 568652.8 662156.0 533432.1 612678.4 586128.9 590527.4 593117.7 516379.7 621102.5
 [613] 485275.0 627257.6 538283.7 575770.2 439988.0 490760.4 492007.3 463032.3 570010.0 606975.7 636536.3 455386.1 467708.8 545432.2 521340.8 578377.3 572324.9
 [630] 606989.6 584397.0 493216.2 527094.7 489634.8 523448.6 609016.8 531834.7 551506.5 604635.7 642797.1 657584.5 555058.0 465018.9 451177.9 627283.2 633838.8
 [647] 627555.7 601267.5 583338.9 425755.1 439056.6 594932.7 675466.5 432443.5 553600.3 539179.8 472284.0 522734.5 657594.1 473275.0 506475.6 477957.6 500268.7
 [664] 588699.5 558360.8 525169.4 580975.9 590233.8 496041.7 561253.0 629273.2 644472.4 582204.9 643800.7 558731.8 593970.2 589572.8 622360.6 437548.1 456118.1
 [681] 573178.6 490969.0 526722.3 576747.3 438773.2 599324.2 633868.4 471235.6 549083.9 471607.1 521502.7 644297.2 480362.1 499922.8 568695.3 466796.8 500354.7
 [698] 601043.4 407693.8 573973.3 570190.1 513343.8 650793.0 464185.7 625113.3 633252.0 533703.0 661589.6 545673.3 637194.1 510178.5 595765.5 577918.5 643596.7
 [715] 556339.8 493511.3 598832.5 702925.3 512897.8 528016.1 488382.8 519418.8 571205.1 486467.3 506000.4 524577.1 579092.1 490072.1 546355.9 553887.4 587031.6
 [732] 507069.6 545287.8 611713.1 629771.1 502586.2 534101.8 452748.6 538178.5 604937.1 463152.8 613945.8 604177.0 610179.6 586597.4 538479.4 539065.0 507006.3
 [749] 698396.7 448110.0 467958.8 548569.1 638902.6 567358.2 646457.5 660380.2 443941.5 630457.6 545789.8 529033.8 648824.7 445623.3 643600.6 526913.7 443312.0
 [766] 683438.7 511811.0 467919.7 654088.3 579991.2 635754.2 499327.0 624902.5 426423.8 580009.9 637916.5 578176.1 602692.8 661541.1 659425.8 551656.4 549188.8
 [783] 510596.2 606264.9 688063.3 546689.7 539417.3 606939.7 547084.8 615961.2 646415.1 535342.0 520009.4 520975.5 578172.4 690786.4 557856.3 587385.9 470172.5
 [800] 530066.7 476905.8 526509.7 548596.9 468786.4 429096.0 462824.1 510713.2 445584.7 465638.6 487564.9 534799.2 495146.6 623260.6 449752.1 634680.2 582361.6
 [817] 578363.0 577315.8 494576.5 499267.4 545182.1 410867.5 446801.4 631933.7 540861.1 446851.7 436275.8 598882.7 531379.5 600558.4 626057.8 502511.3 628618.6
 [834] 485295.7 637708.8 508888.4 582195.1 532852.7 449061.2 603130.4 454134.3 443186.2 509733.3 585047.1 478512.9 524443.6 503912.8 467625.0 482206.3 547159.0
 [851] 477405.9 491427.0 499940.6 613815.8 564442.3 451477.8 661085.6 514710.3 696356.8 543211.5 587241.1 475191.8 561422.3 445376.8 528501.1 539163.7 581286.4
 [868] 573727.5 675486.3 490047.2 564988.0 502488.1 499874.5 606346.5 650288.5 628967.0 427488.5 400055.0 603079.4 629602.0 596772.9 557676.6 437227.4 644984.9
 [885] 445500.2 650103.3 495696.9 622219.4 532349.9 540509.2 566823.6 673311.6 542974.0 640889.2 631191.1 575307.7 420112.3 510865.3 587781.4 546376.2 483227.7
 [902] 636101.0 635694.7 488830.2 530115.2 470320.8 567656.2 497056.9 534660.5 641557.3 590014.4 523118.4 451703.2 573951.9 671834.7 632792.7 514172.7 565885.4
 [919] 462739.9 507126.6 544103.7 446626.1 585085.2 544565.8 522875.2 550355.1 428045.2 675434.2 580288.4 599396.4 638674.8 547327.2 644573.0 542819.7 558808.8
 [936] 613634.5 702535.9 523271.0 458467.8 644466.8 665668.0 539427.4 587803.7 494891.5 599437.8 599132.1 578117.6 685971.8 623205.4 624394.2 673215.4 576331.6
 [953] 461240.6 461452.0 534239.5 604427.0 487503.6 484382.4 608378.8 545945.5 665519.1 622881.0 575695.1 487166.8 479632.2 550970.4 616602.3 564208.5 533729.8
 [970] 477120.7 608475.3 619145.0 569299.6 635870.9 462422.5 602579.7 647546.3 691443.4 512284.2 673749.9 575354.8 501451.0 685192.3 651097.2 466013.7 668736.8
 [987] 486144.1 563779.5 647171.0 671890.1 615467.7 530944.9 558730.4 486899.3 563558.8 521691.5 485182.7 480358.9 535738.4 542832.8

Ya tenemos todos los costos calculados, ahora veamos cuantos de ellos son mayores a $575000

sum(simulacion_proyecto_1 > 575000)/1000
[1] 0.374

Como vemos 374 de 1000 son mayores a $575000 por lo que la probabilidad de que el proyecto cueste mas de esto es del 37.4%. Ahora repitamos el proceso para el proyecto 2:

simulacion_proyecto_2 <- sapply(1:1000, costo_proyecto, hardware_cost=c(80000,210000), software_cost=c(250000,525000), capacitacion_cost=c(8000,17500))
sum(simulacion_proyecto_2 > 575000)/1000
[1] 0.369

Para el proyecto 2 la probabilidad es de 36.9%

¿Qué proyecto consideraría el más arriesgado?

Para determinar esto, veamos cual es la media y desviacion estandard del proyecto 1:

mean(simulacion_proyecto_1)
[1] 550357.5
sd(simulacion_proyecto_1)
[1] 69919.31

Vemos que la media es de $550,357.5 con una desviacion estandard de $69,919.31. Ahora veamos el proyecto 2

mean(simulacion_proyecto_2)
[1] 543404
sd(simulacion_proyecto_2)
[1] 88713.89

Vemos que la media es de $543,404 con una desviacion estandard de $88,713.89. De esto podemos concluir que si bien la media de costo parece favorecer al proyecto 2, su desviacion estandard es mas alta, lo que indica una mayor volatilidad en el proyecto, por lo que consideramos que el proyecto 2 es el mas arriesgado.

¿Qué proyecto recomendaría que emprenda SFI? ¿Por qué?

Si analizamos los numeros la probabilidad de que cueste mas de $575,000 en ambos proyectos es casi la misma, consideramos que es menos arriesgado el proyecto 1 por lo que es el proyecto que recomendamos.

LS0tCnRpdGxlOiAiU2ltdWxhY2lvbiBkZSBNb250ZWNhcmxvIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgojIyBTaW11bGFjaW9uCgpTZXJ2ZXIgRmFybSBJbmMuIChTRkkpIG5lY2VzaXRhIGFjdHVhbGl6YXIgc3VzIHNlcnZpZG9yZXMuIExhIGdlcmVuY2lhIGRlIGxhIGNvbXBhw7HDrWEgaGEgaWRlbnRpZmljYWRvIGxhcyBzaWd1aWVudGVzIGRvcyBvcGNpb25lczogKDEpIGNhbWJpYXIgYSB1bmEgcGxhdGFmb3JtYSBiYXNhZGEgZW4gV2luZG93cyBkZXNkZSBzdSBwbGF0YWZvcm1hIGFjdHVhbCBiYXNhZGEgZW4gVW5peCwgbyAoMikgcXVlZGFyc2UgY29uIHVuYSBwbGF0YWZvcm1hIGJhc2FkYSBlbiBVbml4LiBFcyB1bmEgcHLDoWN0aWNhIGVzdMOhbmRhciBlbiBTRkkgdXRpbGl6YXIgdW5hIGRpc3RyaWJ1Y2nDs24gdHJpYW5ndWxhciBwYXJhIG1vZGVsYXIgY29zdG9zIGluY2llcnRvcy4gCgpFbiBlc3RlIHNlbnRpZG8sIGxhIGNvbXBhw7HDrWEgZXN0aW1hIHF1ZSBzaSBtaWdyYSBhIFdpbmRvd3MsIGVsIG51ZXZvIGhhcmR3YXJlIGRlbCBzZXJ2aWRvciBwb2Ryw61hIGNvc3RhciBkZXNkZSAkIDEwMCwwMDAgaGFzdGEgJCAyMDAsMDAwLiBMYSBtZWpvciBlc3RpbWFjacOzbiBkZWwgZ3J1cG8gdMOpY25pY28gZXMgcXVlIGxvcyBjb3N0b3MgZGUgaGFyZHdhcmUgc2Vyw6FuIGRlICQgMTI1LDAwMCBzaSBzZSBidXNjYSBsYSBvcGNpw7NuIGRlIFdpbmRvd3MuIERlbCBtaXNtbyBtb2RvLCBsYSBtZWpvciBlc3RpbWFjacOzbiBkZSBsYSBjb21wYcOxw61hIGNvbiByZXNwZWN0byBhbCBjb3N0byBkZSBhY3R1YWxpemFyIHkgY29udmVydGlyIHN1IHNvZnR3YXJlIGEgV2luZG93cyBlcyBkZSAkIDMwMCwwMDAgY29uIHVuIHJhbmdvIGRlICQgMjc1LDAwMCBhICQgNTAwLDAwMC4KCkZpbmFsbWVudGUsIHNpIGxhIGVtcHJlc2Egc2UgY29udmllcnRlIGEgV2luZG93cywgc2UgZXN0aW1hIHF1ZSBsb3MgY29zdG9zIGRlIGNhcGFjaXRhY2nDs24gZGUgbG9zIGVtcGxlYWRvcyBvc2NpbGFyw6FuIGVudHJlICQgOSwwMDAgeSAkIDE1LDAwMCwgY29uIGxhIG1lam9yIGVzdGltYWNpw7NuIGRlICQgMTAsMDAwLgoKU2kgbGEgY29tcGHDscOtYSBzZSBxdWVkYSBjb24gVW5peCwgZWwgbnVldm8gaGFyZHdhcmUgZGVsIHNlcnZpZG9yIHByb2JhYmxlbWVudGUgY29zdGFyw6EgJCAxMDAsMDAwLCBwZXJvIHBvZHLDrWEgY29zdGFyIGVudHJlICQgODAsMDAwIHkgJCAyMTAsMDAwLiBTZSBlc3BlcmEgcXVlIGxvcyBjb3N0b3MgZGUgY29udmVyc2nDs24geSBhY3R1YWxpemFjacOzbiBkZSBzb2Z0d2FyZSBzZWFuIGRlICQgMzAwLDAwMCBwZXJvIHBvZHLDrWFuIHNlciBkZSBlbnRyZSAkIDI1MCwwMDAgeSAkIDUyNSwwMDAuCgpMb3MgY29zdG9zIGRlIGNhcGFjaXRhY2nDs24gZGUgbG9zIGVtcGxlYWRvcyBzZXLDoW4gZW50cmUgJCA4LDAwMCB5ICQgMTcsNTAwLCBjb24gdW5hIG1lam9yIGVzdGltYWNpw7NuIGRlICQgMTAsMDAwLiBEZXNhcnJvbGxlIHVuIG1vZGVsbyBwYXJhIHNpbXVsYXIgZXN0YSBzaXR1YWNpw7NuIHV0aWxpemFuZG8gRXhjZWwgbyBBbGfDum4gU29mdHdhcmUgZGUgU2ltdWxhY2nDs24geSByZXNwb25kYSBsYXMgc2lndWllbnRlcyBwcmVndW50YXMuCgojIyMgwr9DdcOhbCBlcyBlbCBjb3N0byBlc3BlcmFkbyBkZSBjYWRhIHByb3llY3RvPwoKUHJpbWVybyBjb21lbnphbW9zIHBvciByZXN1bWlyIGxvcyBkYXRvcyBxdWUgdGVuZW1vcwoKIyMjIyBQcm95ZWN0byAxOiBDYW1iaWFyIGEgV2luZG93cwoKfCBSdWJybyB8IENvc3RvIE1pbmltbyB8IENvc3RvIE1heGltbyB8IENvc3RvIEVzcGVyYWRvIHwKfDotLS0tLS18Oi0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tOnwKfCBOdWV2byBIYXJkd2FyZSB8ICQxMDAsMDAwIHwgJDIwMCwwMDAgfCAkMTI1LDAwMCB8CnwgU29mdHdhcmUgfCAkMjc1LDAwMCB8ICQ1MDAsMDAwIHwgJDMwMCwwMDAgfAp8IENhcGFjaXRhY2lvbiB8ICQgOSwwMDAgfCAkIDE1LDAwMCB8ICQgMTAsMDAwIHwKfCAqKlRvdGFsKiogfCoqJDM4NCwwMDAqKiB8ICoqJDcxNSwwMDAqKiB8ICoqJDQzNTAwMCoqIHwKCiMjIyMgUHJveWVjdG8gMjogVXRpbGl6YXIgVW5peAoKfCBSdWJybyB8IENvc3RvIE1pbmltbyB8IENvc3RvIE1heGltbyB8IENvc3RvIEVzcGVyYWRvIHwKfDotLS0tLS18Oi0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tOnwKfCBOdWV2byBIYXJkd2FyZSB8ICQ4MCwwMDAgfCAkMjEwLDAwMCB8ICQxMDAsMDAwIHwKfCBTb2Z0d2FyZSB8ICQyNTAsMDAwIHwgJDUyNSwwMDAgfCAkMzAwLDAwMCB8CnwgQ2FwYWNpdGFjaW9uIHwgJCA4LDAwMCB8ICQgMTcsNTAwIHwgJCAxMCwwMDAgfAp8ICoqVG90YWwqKiB8KiokMzM4LDAwMCoqIHwgKiokNzUyLDUwMCoqIHwgKiokNDEwLDAwMCoqIHwKCkVsIGNvc3RvIGVzcGVyYWRvIHBhcmEgZWwgcHJveWVjdG8gMSBlcyBkZSAqKiQ0MzUsMDAwKiogbWllbnRyYXMgcXVlIGVsIGRlbCBwcm95ZWN0byAyIGVzIGRlICoqJDQxMCwwMDAqKi4KCiMjIyDCv0N1w6FsIGVzIGxhIHByb2JhYmlsaWRhZCBkZSBxdWUgZWwgY29zdG8gZGUgY2FkYSBwcm95ZWN0byBzdXBlcmUgbG9zICQgNTc1LDAwMAoKUGFyYSBlc3RvIHZhbW9zIGEgZGVmaW5pciB1bmEgZnVuY2lvbiBxdWUgbm9zIGF5dWRlIGEgZXN0aW1hciBlbCBjb3N0byBkZSBjYWRhIHByb3llY3RvCgpgYGB7cn0KY29zdG9fcHJveWVjdG8gPC0gZnVuY3Rpb24oeCwgaGFyZHdhcmVfY29zdCwgc29mdHdhcmVfY29zdCwgY2FwYWNpdGFjaW9uX2Nvc3QpewogIGhhcmR3YXJlIDwtIHJ1bmlmKDEsIGhhcmR3YXJlX2Nvc3RbMV0sIGhhcmR3YXJlX2Nvc3RbMl0pICAKICBzb2Z0d2FyZSA8LSBydW5pZigxLCBzb2Z0d2FyZV9jb3N0WzFdLCBzb2Z0d2FyZV9jb3N0WzJdKSAgCiAgY2FwYWNpdGFjaW9uIDwtIHJ1bmlmKDEsIGNhcGFjaXRhY2lvbl9jb3N0WzFdLCBjYXBhY2l0YWNpb25fY29zdFsyXSkgIAogIHJldHVybiAoaGFyZHdhcmUrc29mdHdhcmUrY2FwYWNpdGFjaW9uKQp9Cgpjb3N0b19wcm95ZWN0bygxLGMoMTAwMDAwLDIwMDAwMCksIGMoMjc1MDAwLDUwMDAwMCksIGMoOTAwMCwxNTAwMCkpCgpgYGAKCkFob3JhIHVzYW5kbyBlc2EgZnVuY2lvbiBzaW11bGVtb3MgMTAwMCBlbCByZXN1bHRhZG86CgpgYGB7cn0Kc2ltdWxhY2lvbl9wcm95ZWN0b18xIDwtIHNhcHBseSgxOjEwMDAsIGNvc3RvX3Byb3llY3RvLCBoYXJkd2FyZV9jb3N0PWMoMTAwMDAwLDIwMDAwMCksIHNvZnR3YXJlX2Nvc3Q9YygyNzUwMDAsNTAwMDAwKSwgY2FwYWNpdGFjaW9uX2Nvc3Q9Yyg5MDAwLDE1MDAwKSkKc2ltdWxhY2lvbl9wcm95ZWN0b18xCgpgYGAKWWEgdGVuZW1vcyB0b2RvcyBsb3MgY29zdG9zIGNhbGN1bGFkb3MsIGFob3JhIHZlYW1vcyBjdWFudG9zIGRlIGVsbG9zIHNvbiBtYXlvcmVzIGEgJDU3NTAwMApgYGB7cn0Kc3VtKHNpbXVsYWNpb25fcHJveWVjdG9fMSA+IDU3NTAwMCkvMTAwMApgYGAKQ29tbyB2ZW1vcyAzNzQgZGUgMTAwMCBzb24gbWF5b3JlcyBhICQ1NzUwMDAgcG9yIGxvIHF1ZSBsYSBwcm9iYWJpbGlkYWQgZGUgcXVlIGVsIHByb3llY3RvIGN1ZXN0ZSBtYXMgZGUgZXN0byBlcyBkZWwgMzcuNCUuIEFob3JhIHJlcGl0YW1vcyBlbCBwcm9jZXNvIHBhcmEgZWwgcHJveWVjdG8gMjoKCmBgYHtyfQpzaW11bGFjaW9uX3Byb3llY3RvXzIgPC0gc2FwcGx5KDE6MTAwMCwgY29zdG9fcHJveWVjdG8sIGhhcmR3YXJlX2Nvc3Q9Yyg4MDAwMCwyMTAwMDApLCBzb2Z0d2FyZV9jb3N0PWMoMjUwMDAwLDUyNTAwMCksIGNhcGFjaXRhY2lvbl9jb3N0PWMoODAwMCwxNzUwMCkpCnN1bShzaW11bGFjaW9uX3Byb3llY3RvXzIgPiA1NzUwMDApLzEwMDAKCmBgYApQYXJhIGVsIHByb3llY3RvIDIgbGEgcHJvYmFiaWxpZGFkIGVzIGRlIDM2LjklCgojIyMgwr9RdcOpIHByb3llY3RvIGNvbnNpZGVyYXLDrWEgZWwgbcOhcyBhcnJpZXNnYWRvPwoKUGFyYSBkZXRlcm1pbmFyIGVzdG8sIHZlYW1vcyBjdWFsIGVzIGxhIG1lZGlhIHkgZGVzdmlhY2lvbiBlc3RhbmRhcmQgZGVsIHByb3llY3RvIDE6CgpgYGB7cn0KbWVhbihzaW11bGFjaW9uX3Byb3llY3RvXzEpCnNkKHNpbXVsYWNpb25fcHJveWVjdG9fMSkKYGBgCgpWZW1vcyBxdWUgbGEgbWVkaWEgZXMgZGUgJDU1MCwzNTcuNSBjb24gdW5hIGRlc3ZpYWNpb24gZXN0YW5kYXJkIGRlICQ2OSw5MTkuMzEuIEFob3JhIHZlYW1vcyBlbCBwcm95ZWN0byAyCmBgYHtyfQptZWFuKHNpbXVsYWNpb25fcHJveWVjdG9fMikKc2Qoc2ltdWxhY2lvbl9wcm95ZWN0b18yKQpgYGAKVmVtb3MgcXVlIGxhIG1lZGlhIGVzIGRlICQ1NDMsNDA0IGNvbiB1bmEgZGVzdmlhY2lvbiBlc3RhbmRhcmQgZGUgJDg4LDcxMy44OS4gRGUgZXN0byBwb2RlbW9zIGNvbmNsdWlyIHF1ZSBzaSBiaWVuIGxhIG1lZGlhIGRlIGNvc3RvIHBhcmVjZSBmYXZvcmVjZXIgYWwgcHJveWVjdG8gMiwgc3UgZGVzdmlhY2lvbiBlc3RhbmRhcmQgZXMgbWFzIGFsdGEsIGxvIHF1ZSBpbmRpY2EgdW5hIG1heW9yIHZvbGF0aWxpZGFkIGVuIGVsIHByb3llY3RvLCBwb3IgbG8gcXVlIGNvbnNpZGVyYW1vcyBxdWUgZWwgcHJveWVjdG8gMiBlcyBlbCBtYXMgYXJyaWVzZ2Fkby4KCiMjIyDCv1F1w6kgcHJveWVjdG8gcmVjb21lbmRhcsOtYSBxdWUgZW1wcmVuZGEgU0ZJPyDCv1BvciBxdcOpPwoKU2kgYW5hbGl6YW1vcyBsb3MgbnVtZXJvcyBsYSBwcm9iYWJpbGlkYWQgZGUgcXVlIGN1ZXN0ZSBtYXMgZGUgJDU3NSwwMDAgZW4gYW1ib3MgcHJveWVjdG9zIGVzIGNhc2kgbGEgbWlzbWEsIGNvbnNpZGVyYW1vcyBxdWUgZXMgbWVub3MgYXJyaWVzZ2FkbyBlbCBwcm95ZWN0byAxIHBvciBsbyBxdWUgZXMgZWwgcHJveWVjdG8gcXVlIHJlY29tZW5kYW1vcy4KCg==