From dev-return-23979-archive-asf-public=cust-asf.ponee.io@spark.apache.org Mon Feb 5 22:57:16 2018 Return-Path: X-Original-To: archive-asf-public@eu.ponee.io Delivered-To: archive-asf-public@eu.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by mx-eu-01.ponee.io (Postfix) with ESMTP id 58590180647 for ; Mon, 5 Feb 2018 22:57:16 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 47FBB160C4B; Mon, 5 Feb 2018 21:57:16 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id E911B160C3B for ; Mon, 5 Feb 2018 22:57:14 +0100 (CET) Received: (qmail 29671 invoked by uid 500); 5 Feb 2018 21:57:13 -0000 Mailing-List: contact dev-help@spark.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@spark.apache.org Received: (qmail 29660 invoked by uid 99); 5 Feb 2018 21:57:12 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 05 Feb 2018 21:57:12 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 413AB18015C for ; Mon, 5 Feb 2018 21:57:12 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.3 X-Spam-Level: * X-Spam-Status: No, score=1.3 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=2, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=palantirtech.onmicrosoft.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id UdQPZ3WneVEp for ; Mon, 5 Feb 2018 21:57:10 +0000 (UTC) Received: from mx0a-00153501.pphosted.com (mx0a-00153501.pphosted.com [67.231.148.48]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id A1C675F33F for ; Mon, 5 Feb 2018 21:57:09 +0000 (UTC) Received: from pps.filterd (m0131697.ppops.net [127.0.0.1]) by mx0a-00153501.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w15LriB5025988; Mon, 5 Feb 2018 13:56:46 -0800 Authentication-Results: palantir.com; spf=softfail smtp.mailfrom=mcheah@palantir.com Received: from mxw1.palantir.com (mxw2.palantir.com [66.70.54.22]) by mx0a-00153501.pphosted.com with ESMTP id 2fwbtpjn05-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 05 Feb 2018 13:56:46 -0800 Received: from EXDR01-WEST.YOJOE.local (10.160.10.135) by EX03-WEST.YOJOE.local (10.160.10.136) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 5 Feb 2018 13:56:45 -0800 Received: from NAM01-BY2-obe.outbound.protection.outlook.com (216.32.181.177) by mxw3.palantir.com (10.160.10.135) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 5 Feb 2018 13:56:45 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=palantirtech.onmicrosoft.com; s=selector1-palantir-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=p1BRuBWw6yCIZGOJeTMCWUw0VdrX8xOC8ZX4OH6Q834=; b=aKfruyKKYwi93G1MAZ3iNhg8vuNZDs7Y7gBVaPvegBiaOOJPMjHW4AReqpfR5H5FXTdhGY2Tz7aKaHhmhGH+TaGHuY268qLwz0zGRXu30O3PpG+u9lliX0RrGj/mj8gGvggYgCXjhEW63JAfNv/zuE5rZpsUIP+RhT1+PTwB6Lw= Received: from MWHPR18MB1503.namprd18.prod.outlook.com (10.173.243.21) by MWHPR18MB1214.namprd18.prod.outlook.com (10.175.6.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.464.11; Mon, 5 Feb 2018 21:56:43 +0000 Received: from MWHPR18MB1503.namprd18.prod.outlook.com ([10.173.243.21]) by MWHPR18MB1503.namprd18.prod.outlook.com ([10.173.243.21]) with mapi id 15.20.0464.015; Mon, 5 Feb 2018 21:56:42 +0000 From: Matt Cheah To: Mark Hamstra CC: "dev@spark.apache.org" , Anirudh Ramanathan , Ilan Filonenko , Erik , Marcelo Vanzin Subject: Re: Spark on Kubernetes Builder Pattern Design Document Thread-Topic: Spark on Kubernetes Builder Pattern Design Document Thread-Index: AQHTnsbBc+g/59U9L0eij5jP0qANHKOWV0MA//99e4A= Date: Mon, 5 Feb 2018 21:56:42 +0000 Message-ID: References: <1ADB6D11-5A12-42F6-A2CD-A102AF3647AD@palantir.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [206.188.26.36] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;MWHPR18MB1214;7:MUtFdMrtmXQaa/J8c9ewYhTp87kUyy4XMAVNrvliQIXwZCECVm4eSdG8ZGYGQAzp3Xy2aZmrBznmfWdkr/k6xFd6FKfVg6pTgChhCtKmJULPNobcpRzBLL8Gzw4o2itGa64X6BW4LhngT/Mk4UsqDvuHtn3uphSiT2FxNpno5k+c8RWMrsKMoGFmky3biMHvnO2sI8kklCmF5+RXYYWZutqQx7NYmjcak5HD1wKKcPJmavX+y+Mc87TmtZZXCj/f x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 89cb789d-cc29-4ee0-6d52-08d56ce357c7 x-microsoft-antispam: UriScan:(274809879029318);BCL:0;PCL:0;RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(3008032)(2017052603307)(7153060)(49563074)(7193020);SRVR:MWHPR18MB1214; x-ms-traffictypediagnostic: MWHPR18MB1214: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(134217032509453)(10436049006162)(166708455590820)(57809966217671)(211936372134217)(153496737603132)(274809879029318)(21748063052155)(119230021023882); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(102415395)(6040501)(2401047)(8121501046)(5005006)(10201501046)(3231101)(2400082)(944501161)(3002001)(93006095)(93001095)(6041288)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(6072148)(201708071742011);SRVR:MWHPR18MB1214;BCL:0;PCL:0;RULEID:;SRVR:MWHPR18MB1214; x-forefront-prvs: 0574D4712B x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(39860400002)(39380400002)(376002)(396003)(346002)(199004)(189003)(53754006)(2906002)(3660700001)(606006)(99936001)(26005)(77096007)(8656006)(36756003)(6246003)(102836004)(3280700002)(99286004)(6436002)(14454004)(966005)(54896002)(6306002)(316002)(82746002)(478600001)(54906003)(66066001)(97736004)(53936002)(6512007)(575784001)(6486002)(86362001)(2950100002)(6916009)(186003)(229853002)(6116002)(3846002)(410100003)(236005)(33656002)(81166006)(8936002)(81156014)(68736007)(8676002)(83716003)(5660300001)(105586002)(2900100001)(59450400001)(6506007)(53546011)(25786009)(4326008)(76176011)(106356001)(7736002);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR18MB1214;H:MWHPR18MB1503.namprd18.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; received-spf: None (protection.outlook.com: palantir.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: bTesLcYnIMrGtzsvv0bF1lg67brpS/cHhIKMp5S3EBTHOZ+HNnP/I3GxKUolcWmpvHDrUX4dl0ZGhbjkiJfhIg== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="B_3600683801_1584133828" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 89cb789d-cc29-4ee0-6d52-08d56ce357c7 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Feb 2018 21:56:42.6825 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 76463010-5dd7-40c7-b509-7ce28ba39430 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR18MB1214 X-OriginatorOrg: palantir.com X-Proofpoint-SPF-Result: softfail X-Proofpoint-SPF-Record: v=spf1 include:spf-00153501.pphosted.com include:fspf0.palantir.com ~all X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-02-05_05:,, signatures=0 --B_3600683801_1584133828 Content-type: multipart/alternative; boundary="B_3600683801_656421482" --B_3600683801_656421482 Content-type: text/plain; charset="UTF-8" Content-transfer-encoding: quoted-printable I think in this case, the original design that was proposed before the docu= ment was implemented on the Spark on K8s fork, that we took some time to bui= ld separately before proposing that the fork be merged into the main line. =20 Specifically, the timeline of events was: =20 We started building Spark on Kubernetes on a fork and was prepared to merge= our work directly into master, Discussion on https://issues.apache.org/jira/browse/SPARK-18278 led us to m= ove down the path of working on a fork first. We would harden the fork, have= the fork become used more widely to prove its value and robustness in pract= ice. See https://github.com/apache-spark-on-k8s/spark On said fork, we made the original design decisions to use a step-based bui= lder pattern for the driver but not the same design for the executors. This = original discussion was made among the collaborators of the fork, as much of= the work on the fork in general was not done on the mailing list. We eventually decided to merge the fork into the main line, and got the fee= dback in the corresponding PRs. =20 Therefore the question may less so be with this specific design, but whethe= r or not the overarching approach we took - building Spark on K8s on a fork = first before merging into mainline =E2=80=93 was the correct one in the first plac= e. There=E2=80=99s also the issue that the work done on the fork was isolated from= the dev mailing list. Moving forward as we push our work into mainline Spar= k, we aim to be transparent with the Spark community via the Spark mailing l= ist and Spark JIRA tickets. We=E2=80=99re specifically aiming to deprecate the for= k and migrate all the work done on the fork into the main line. =20 -Matt Cheah =20 From: Mark Hamstra Date: Monday, February 5, 2018 at 1:44 PM To: Matt Cheah Cc: "dev@spark.apache.org" , "ramanathana@google.com"= , Ilan Filonenko , Erik , Marcelo Vanzin Subject: Re: Spark on Kubernetes Builder Pattern Design Document =20 That's good, but you should probably stop and consider whether the discussi= ons that led up to this document's creation could have taken place on this d= ev list -- because if they could have, then they probably should have as par= t of the whole spark-on-k8s project becoming part of mainline spark developm= ent, not a separate fork.=20 =20 On Mon, Feb 5, 2018 at 1:17 PM, Matt Cheah wrote: Hi everyone, =20 While we were building the Spark on Kubernetes integration, we realized tha= t some of the abstractions we introduced for building the driver application= in spark-submit, and building executor pods in the scheduler backend, could= be improved for better readability and clarity. We received feedback in thi= s pull request[github.com] in particular. In response to this feedback, we=E2=80= =99ve put together a design document that proposes a possible refactor to addr= ess the given feedback. =20 You may comment on the proposed design at this link: https://docs.google.co= m/document/d/1XPLh3E2JJ7yeJSDLZWXh_lUcjZ1P0dy9QeUEyxIlfak/edit#[docs.google.= com] =20 I hope that we can have a productive discussion and continue improving the = Kubernetes integration further. =20 Thanks, =20 -Matt Cheah =20 --B_3600683801_656421482 Content-type: text/html; charset="UTF-8" Content-transfer-encoding: quoted-printable

I think in this case, the original d= esign that was proposed before the document was implemented on the Spark on = K8s fork, that we took some time to build separately before proposing that t= he fork be merged into the main line.

=  

Specifically, the timeline of events was:=

 

  1. We started building Spark on Kubernetes on a fork and wa= s prepared to merge our work directly into master,
  2. Discussion = on https://issue= s.apache.org/jira/browse/SPARK-18278 led us to move down the path of wor= king on a fork first. We would harden the fork, have the fork become used mo= re widely to prove its value and robustness in practice. See https://github.= com/apache-spark-on-k8s/spark
  3. On said fork, we made the origin= al design decisions to use a step-based builder pattern for the driver but n= ot the same design for the executors. This original discussion was made amon= g the collaborators of the fork, as much of the work on the fork in general = was not done on the mailing list.
  4. We eventually decided to mer= ge the fork into the main line, and got the feedback in the corresponding PR= s.

 

Therefore the question may less so be with this specific design, but w= hether or not the overarching approach we took - building Spark on K8s on a = fork first before merging into mainline =E2=80=93 was the correct one in the first= place. There=E2=80=99s also the issue that the work done on the fork was isolated= from the dev mailing list. Moving forward as we push our work into mainline= Spark, we aim to be transparent with the Spark community via the Spark mail= ing list and Spark JIRA tickets. We=E2=80=99re specifically aiming to deprecate th= e fork and migrate all the work done on the fork into the main line.

 

-Matt Chea= h

 

From: Mark Hamstra <mark@clearstorydata.com&= gt;
Date: Monday, February 5, 2018 at 1:44 PM
To: Matt C= heah <mcheah@palantir.com>
Cc: "dev@spark.apache.org&qu= ot; <dev@spark.apache.org>, "ramanathana@google.com" <ram= anathana@google.com>, Ilan Filonenko <if56@cornell.edu>, Erik <e= je@redhat.com>, Marcelo Vanzin <vanzin@cloudera.com>
Subject:= Re: Spark on Kubernetes Builder Pattern Design Document

 

That's good, but you should probably stop and consider whether th= e discussions that led up to this document's creation could have taken place= on this dev list -- because if they could have, then they probably should h= ave as part of the whole spark-on-k8s project becoming part of mainline spar= k development, not a separate fork. 

 

On Mon, Feb 5, 2018 a= t 1:17 PM, Matt Cheah <mcheah@palantir.com> wrote:

Hi everyone,

 

While we were building the Spark on Kubernetes integration, we = realized that some of the abstractions we introduced for building the driver= application in spark-submit, and building executor pods in the scheduler ba= ckend, could be improved for better readability and clarity. We received fee= dback in this pull request[github.com] in = particular. In response to this feedback, we=E2=80=99ve put together a design docu= ment that proposes a possible refactor to address the given feedback.

 

You may comment on the proposed design at t= his link: https://docs.google.com/document/d/1XPLh3E2JJ7yeJSDLZWXh_lUcjZ1P0= dy9QeUEyxIlfak/edit#[docs.google.com]

 <= /p>

I hope that we can have a productive discussion and continue improving = the Kubernetes integration further.

 

T= hanks,

 <= /p>

-Matt Cheah

 

--B_3600683801_656421482-- --B_3600683801_1584133828 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MIIRlQYJKoZIhvcNAQcCoIIRhjCCEYICAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHAaCC D14wggVNMIIENaADAgECAhACF2X8ZyyKwIiphAHAVrY6MA0GCSqGSIb3DQEBCwUAMGUxCzAJ BgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2Vy dC5jb20xJDAiBgNVBAMTG0RpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBDQTAeFw0xNzA3MjUw MDAwMDBaFw0yMDA3MjQxMjAwMDBaMHAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y bmlhMRIwEAYDVQQHEwlQYWxvIEFsdG8xIzAhBgNVBAoTGlBhbGFudGlyIFRlY2hub2xvZ2ll cyBJbmMuMRMwEQYDVQQDEwpNYXR0IENoZWFoMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAvg0TwcqjJxYL1AKm1f5LkxUSMu6K9YlZ4P524pT3fS43/7VS3Rn8SOiA7iJ+5oWz t+g2VtykWZ1mUsapWaKSY0LkARVWCP30VsEq5UobkRrWlLRSo4W4tXLy0qBZJ+M/svvDzHZS j42ftFKvOaEr4dNz7rqhiH++Nqj9oq2qNJ0bX+LvZneGTP6meBrVTp1B8FHClOZG83ZaeQMf ShlfAA+sHT2gr3NuTgeuqbbOLnXg4ItQ/fQWt9ga3s/U5dGYwU98LFhVXMDbqwesne2qdutU RBcLToSlZsqBPRtJa1goiY44eWWCEdJEJtr6Ypr7zZ6eiuaE9N+HLecVA0dHyQIDAQABo4IB 7DCCAegwHwYDVR0jBBgwFoAU5wIjgABP2Ne8lAvZP3Q5STI8inkwHQYDVR0OBBYEFEVcOLwl 2swb2Y1x1N4Mi8LVmmHnMAwGA1UdEwEB/wQCMAAwHgYDVR0RBBcwFYETbWNoZWFoQHBhbGFu dGlyLmNvbTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwME MEMGA1UdIAQ8MDowOAYKYIZIAYb9bAQBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5k aWdpY2VydC5jb20vQ1BTMIGIBgNVHR8EgYAwfjA9oDugOYY3aHR0cDovL2NybDMuZGlnaWNl cnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3VyZWRJRENBLWcyLmNybDA9oDugOYY3aHR0cDovL2Ny bDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3VyZWRJRENBLWcyLmNybDB5BggrBgEF BQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEF BQcwAoY3aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3VyZWRJ RENBLmNydDANBgkqhkiG9w0BAQsFAAOCAQEAC1ZgZ7Llh8sFV1Nrsla695/ZnYuOgvBf/z3Q QBEwLkUny08fSDTseubp70MuB1xROFIPgrwPMGJ8OIiqDV4Y9nHeEvm+afBydwMuXwuWSxPG YQ4/oIXe3jWX1SlNqLX7Q+CquGp1ZVG/AtOOLX+32xQN2fNPwbYJdu5Wd0F4j9axCOFWa5KC 2DGN0sza4EQI8XlFszWIWLgVdyzUMfJnHaL5RoNX8/+GJZXg/+JySt14XTQDufYGY4NwNIKY 9XpxZlyVsUegoNfXOZ/kE5Qs6e+LMpSNNhCTDoHU2AB1SJODpprmMMWf6v6P28s0d8+Y4G7G +OUK8+ABEI87l9eI0DCCBk4wggU2oAMCAQICEASueWBmZpAaucV/pmxb3M0wDQYJKoZIhvcN AQELBQAwZTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQ d3d3LmRpZ2ljZXJ0LmNvbTEkMCIGA1UEAxMbRGlnaUNlcnQgQXNzdXJlZCBJRCBSb290IENB MB4XDTEzMTEwNTEyMDAwMFoXDTI4MTEwNTEyMDAwMFowZTELMAkGA1UEBhMCVVMxFTATBgNV BAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEkMCIGA1UEAxMb RGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEA3PgRIz9qte/AJ3kbLQWHohBDMd8O1BUbT3ekIs4+jHDwvgeO3ScqvAEdtiwKyt1p WB9B7WoFH9pjeFkeIiwr+Lp+yTU7VvEffEJ+JbAjGcZFONc9RPkgfGCuHLBaGAS+jzv3qfCU mqYMY0m2QRdTQDK9T+ZQelAfJUXo8Ymvzf9e/1Dz8BcR/73FifW9YrnY+45FBIVtmc3FSE39 JqsCNkXqNtdfauIagkEK3OnZ9ZEXjsYhrTg8E+Yef2ac1U3ZRtr2z1KnfTskw7TBUTXGm+vU 737kewPhRL16CzfgT8uCig1xGOSm4IksG/OyczzBsJKeGH29q33FfQihLMKfcwIDAQABo4IC +DCCAvQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwNAYIKwYBBQUHAQEE KDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wgYEGA1UdHwR6MHgw OqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RD QS5jcmwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ RFJvb3RDQS5jcmwwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIIBswYDVR0gBIIB qjCCAaYwggGiBgpghkgBhv1sAAIEMIIBkjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGln aWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIAQQBuAHkAIAB1AHMAZQAgAG8A ZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAIABjAG8AbgBzAHQAaQB0AHUA dABlAHMAIABhAGMAYwBlAHAAdABhAG4AYwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMA ZQByAHQAIABDAFAALwBDAFAAUwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAA UABhAHIAdAB5ACAAQQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQA IABsAGkAYQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUALjAdBgNV HQ4EFgQU5wIjgABP2Ne8lAvZP3Q5STI8inkwHwYDVR0jBBgwFoAUReuir/SSy4IxLVGLp6ch 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 2rPdr7EAabajVvXjpT9OCW9OxrKV6Ww= --B_3600683801_1584133828--