<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>115850</bug_id>
          
          <creation_ts>2013-05-09 01:08:38 -0700</creation_ts>
          <short_desc>Web Inspector: Remove Memory Distribution and Memory Snapshots Panels</short_desc>
          <delta_ts>2013-05-12 20:06:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>114998</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Seokju Kwon">seokju</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>886694</commentid>
    <comment_count>0</comment_count>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2013-05-09 01:08:38 -0700</bug_when>
    <thetext>Removed the Memory Instrumentation Code after r148921.


Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:363: WARNING - MemoryAgent.getProcessMemoryDistribution is never defined MemoryAgent.getProcessMemoryDistribution(true,didReceiveMemorySnapshot.bind(profileHeader));

Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:363: WARNING - Property getProcessMemoryDistribution never defined on MemoryAgent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886698</commentid>
    <comment_count>1</comment_count>
      <attachid>201171</attachid>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2013-05-09 01:28:48 -0700</bug_when>
    <thetext>Created attachment 201171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886699</commentid>
    <comment_count>2</comment_count>
      <attachid>201171</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-09 01:33:44 -0700</bug_when>
    <thetext>Comment on attachment 201171
Patch

Attachment 201171 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/300081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886700</commentid>
    <comment_count>3</comment_count>
      <attachid>201171</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-09 01:34:35 -0700</bug_when>
    <thetext>Comment on attachment 201171
Patch

Attachment 201171 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/418450</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886701</commentid>
    <comment_count>4</comment_count>
      <attachid>201172</attachid>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2013-05-09 01:36:20 -0700</bug_when>
    <thetext>Created attachment 201172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886863</commentid>
    <comment_count>5</comment_count>
      <attachid>201172</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-09 08:16:17 -0700</bug_when>
    <thetext>Comment on attachment 201172
Patch

Clearing flags on attachment: 201172

Committed r149807: &lt;http://trac.webkit.org/changeset/149807&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886864</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-09 08:16:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886968</commentid>
    <comment_count>7</comment_count>
      <attachid>201172</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-05-09 11:20:19 -0700</bug_when>
    <thetext>Comment on attachment 201172
Patch

I think there may be some layout tests that can be removed as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888072</commentid>
    <comment_count>8</comment_count>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2013-05-12 20:06:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 201172 [details])
&gt; I think there may be some layout tests that can be removed as well.

@Joseph Pecoraro Thanks! I will file a new patch for it. :-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201171</attachid>
            <date>2013-05-09 01:28:48 -0700</date>
            <delta_ts>2013-05-09 01:36:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115850-20130509172750.patch</filename>
            <type>text/plain</type>
            <size>37947</size>
            <attacher name="Seokju Kwon">seokju</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTYzZWRhNTZjYmVjODVi
YzI0NWY2MWZjMGIzNGJlMTE0NzFjNWM3OS4uNTZhN2E1MWVjMmU0Mzg4NTZjMjI0MzMzYTgyN2Y0
ZjFlNGU5Y2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTA1LTA5ICBTZW9r
anUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBSZW1vdmUgTWVtb3J5IERpc3RyaWJ1dGlvbiBhbmQgTWVtb3J5IFNuYXBzaG90cyBQYW5lbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTg1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQg
dGhlIE1lbW9yeSBJbnN0cnVtZW50YXRpb24gQ29kZSBhZnRlciByMTQ4OTIxLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaW5zcGVjdG9y
L2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0
aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHBl
cmltZW50c1NldHRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdz
U2NyZWVuLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuX3Bh
bmVsRGVzY3JpcHRvcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvbmF0aXZlTWVt
b3J5UHJvZmlsZXIuY3NzOiBSZW1vdmVkLgorCiAyMDEzLTA1LTA4ICBSb2IgQnVpcyAgPHJidWlz
QHJpbS5jb20+CiAKICAgICAgICAgRml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MgKG1pc2NlbGxh
bmVvdXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkK
aW5kZXggZmVjYWVhNGU4MDQ4YmM3NmYyMjIwNjFmOWM0Nzc1MTZjNDdlYTAzMy4uNzc3OWI0ZTIy
ZWJiMjc3N2UzMzQxOGViNTI1MmE0MTM3MThlN2MwZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtMzUxLDcgKzM1MSw2IEBAIG1vZHVsZXMg
PSBbCiAgICAgICAgICAgICAiSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIsCiAgICAg
ICAgICAgICAiSlNIZWFwU25hcHNob3QuanMiLAogICAgICAgICAgICAgIk5hdGl2ZUhlYXBTbmFw
c2hvdC5qcyIsCi0gICAgICAgICAgICAiTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzIiwKICAg
ICAgICAgICAgICJQcm9maWxlRGF0YUdyaWRUcmVlLmpzIiwKICAgICAgICAgICAgICJQcm9maWxl
c1BhbmVsLmpzIiwKICAgICAgICAgICAgICJQcm9maWxlc1BhbmVsRGVzY3JpcHRvci5qcyIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9y
eVNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0
aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
ODVhYzFlOTc2MDM0NjQzYWMzZDhkNzAwMjUzMzNjMmVjOGFhYzMwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCisrKyAvZGV2L251bGwKQEAgLTEs
NzEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5WaWV3fQotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZUhlYWRl
cn0gcHJvZmlsZQotICovCi1XZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3ID0g
ZnVuY3Rpb24ocHJvZmlsZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwot
ICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygibmF0aXZlTWVtb3J5UHJvZmlsZXIuY3NzIik7
Ci0KLSAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygibmF0aXZlLXNuYXBzaG90LXZpZXci
KTsKLSAgICB0aGlzLl9jb250YWlubWVudERhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5OYXRp
dmVTbmFwc2hvdERhdGFHcmlkKHByb2ZpbGUpOwotICAgIHRoaXMuX2NvbnRhaW5tZW50RGF0YUdy
aWQuc2hvdyh0aGlzLmVsZW1lbnQpOwotfQotCi1XZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5U25h
cHNob3RWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5WaWV3
LnByb3RvdHlwZQotfQotCi0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLkRhdGFHcmlkfQotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5
UHJvZmlsZUhlYWRlcn0gcHJvZmlsZQotICovCi1XZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RE
YXRhR3JpZCA9IGZ1bmN0aW9uKHByb2ZpbGUpCi17Ci0gICAgdmFyIGNvbHVtbnMgPSBbCi0gICAg
ICAgIHtpZDogIm5hbWUiLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPYmplY3QiKSwg
d2lkdGg6ICIyMDBweCIsIGRpc2Nsb3N1cmU6IHRydWUsIHNvcnRhYmxlOiB0cnVlfSwKLSAgICAg
ICAge2lkOiAic2l6ZSIsIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNpemUiKSwgc29y
dGFibGU6IHRydWUsIHNvcnQ6IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5PcmRlci5EZXNjZW5kaW5n
fSwKLSAgICBdOwotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMp
OwotICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxlOwotICAgIHRoaXMuX3RvdGFsTm9kZSA9IG5l
dyBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3ROb2RlKHByb2ZpbGUuX21lbW9yeUJsb2NrLCBw
cm9maWxlKTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dOYXRpdmVTbmFwc2hv
dFVuaW5zdHJ1bWVudGVkU2l6ZS5nZXQoKSkgewotICAgICAgICB0aGlzLnNldFJvb3ROb2RlKG5l
dyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKG51bGwsIHRydWUpKTsKLSAgICAgICAgdGhpcy5y
b290Tm9kZSgpLmFwcGVuZENoaWxkKHRoaXMuX3RvdGFsTm9kZSkKLSAgICAgICAgdGhpcy5fdG90
YWxOb2RlLmV4cGFuZCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMuc2V0Um9vdE5vZGUo
dGhpcy5fdG90YWxOb2RlKTsKLSAgICAgICAgdGhpcy5fdG90YWxOb2RlLnBvcHVsYXRlKCk7Ci0g
ICAgfQotICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnRzLlNvcnRpbmdDaGFuZ2VkLCB0aGlzLnNvcnRpbmdDaGFuZ2VkLmJpbmQodGhpcyksIHRoaXMp
OwotfQotCi1XZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3REYXRhR3JpZC5wcm90b3R5cGUgPSB7
Ci0gICAgc29ydGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBleHBh
bmRlZE5vZGVzID0ge307Ci0gICAgICAgIHRoaXMuX3RvdGFsTm9kZS5fc3RvcmVTdGF0ZShleHBh
bmRlZE5vZGVzKTsKLSAgICAgICAgdGhpcy5fdG90YWxOb2RlLnJlbW92ZUNoaWxkcmVuKCk7Ci0g
ICAgICAgIHRoaXMuX3RvdGFsTm9kZS5wb3B1bGF0ZSgpOwotICAgICAgICB0aGlzLl90b3RhbE5v
ZGUuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0gICAgICAgIHRoaXMuX3RvdGFsTm9k
ZS5fcmVzdG9yZVN0YXRlKGV4cGFuZGVkTm9kZXMpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBAcGFyYW0ge01lbW9yeUFnZW50Lk1lbW9yeUJsb2NrfSBub2RlQQotICAgICAqIEBwYXJhbSB7
TWVtb3J5QWdlbnQuTWVtb3J5QmxvY2t9IG5vZGVCCi0gICAgICovCi0gICAgX3NvcnRpbmdGdW5j
dGlvbjogZnVuY3Rpb24obm9kZUEsIG5vZGVCKQotICAgIHsKLSAgICAgICAgdmFyIHNvcnRDb2x1
bW5JZGVudGlmaWVyID0gdGhpcy5zb3J0Q29sdW1uSWRlbnRpZmllcigpOwotICAgICAgICB2YXIg
c29ydEFzY2VuZGluZyA9IHRoaXMuaXNTb3J0T3JkZXJBc2NlbmRpbmcoKTsKLSAgICAgICAgdmFy
IGZpZWxkMSA9IG5vZGVBW3NvcnRDb2x1bW5JZGVudGlmaWVyXTsKLSAgICAgICAgdmFyIGZpZWxk
MiA9IG5vZGVCW3NvcnRDb2x1bW5JZGVudGlmaWVyXTsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZp
ZWxkMSA8IGZpZWxkMiA/IC0xIDogKGZpZWxkMSA+IGZpZWxkMiA/IDEgOiAwKTsKLSAgICAgICAg
aWYgKCFzb3J0QXNjZW5kaW5nKQotICAgICAgICAgICAgcmVzdWx0ID0gLXJlc3VsdDsKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlCi19Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZX0KLSAqIEBwYXJhbSB7TWVtb3J5QWdlbnQuTWVt
b3J5QmxvY2t9IG5vZGVEYXRhCi0gKi8KLVdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdE5vZGUg
PSBmdW5jdGlvbihub2RlRGF0YSwgcHJvZmlsZSkKLXsKLSAgICB0aGlzLl9ub2RlRGF0YSA9IG5v
ZGVEYXRhOwotICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxlOwotICAgIHZhciB2aWV3UHJvcGVy
dGllcyA9IFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVzLl9mb3JNZW1vcnlC
bG9jayhub2RlRGF0YSk7Ci0gICAgdmFyIGRhdGEgPSB7IG5hbWU6IHZpZXdQcm9wZXJ0aWVzLl9k
ZXNjcmlwdGlvbiwgc2l6ZTogdGhpcy5fbm9kZURhdGEuc2l6ZSB9OwotICAgIHZhciBoYXNDaGls
ZHJlbiA9IHRoaXMuX2FkZENoaWxkcmVuRnJvbUdyYXBoKCk7Ci0gICAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZS5jYWxsKHRoaXMsIGRhdGEsIGhhc0NoaWxkcmVuKTsKLX0KLQotV2ViSW5zcGVj
dG9yLk5hdGl2ZVNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQG92
ZXJyaWRlCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbHVtbklkZW50aWZpZXIKLSAgICAgKiBA
cmV0dXJuIHtFbGVtZW50fQotICAgICAqLwotICAgIGNyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbHVt
bklkZW50aWZpZXIpCi0gICAgewotICAgICAgICB2YXIgY2VsbCA9IGNvbHVtbklkZW50aWZpZXIg
PT09ICJzaXplIiA/Ci0gICAgICAgICAgICB0aGlzLl9jcmVhdGVTaXplQ2VsbChjb2x1bW5JZGVu
dGlmaWVyKSA6Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5jcmVhdGVDZWxsLmNhbGwodGhpcywgY29sdW1uSWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVy
biBjZWxsOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge09iamVjdH0gZXhwYW5k
ZWROb2RlcwotICAgICAqLwotICAgIF9zdG9yZVN0YXRlOiBmdW5jdGlvbihleHBhbmRlZE5vZGVz
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBleHBhbmRlZE5vZGVzW3RoaXMudWlkKCldID0gdHJ1ZTsKLSAgICAgICAgZm9y
ICh2YXIgaSBpbiB0aGlzLmNoaWxkcmVuKQotICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpXS5f
c3RvcmVTdGF0ZShleHBhbmRlZE5vZGVzKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBh
cmFtIHtPYmplY3R9IGV4cGFuZGVkTm9kZXMKLSAgICAgKi8KLSAgICBfcmVzdG9yZVN0YXRlOiBm
dW5jdGlvbihleHBhbmRlZE5vZGVzKQotICAgIHsKLSAgICAgICAgaWYgKCFleHBhbmRlZE5vZGVz
W3RoaXMudWlkKCldKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLmV4cGFuZCgp
OwotICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMuY2hpbGRyZW4pCi0gICAgICAgICAgICB0aGlz
LmNoaWxkcmVuW2ldLl9yZXN0b3JlU3RhdGUoZXhwYW5kZWROb2Rlcyk7Ci0gICAgfSwKLQotICAg
IC8qKgotICAgICAqIEByZXR1cm4ge3N0cmluZ30KLSAgICAgKi8KLSAgICB1aWQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fdWlkKQotICAgICAgICAgICAgdGhpcy5fdWlk
ID0gKCF0aGlzLnBhcmVudCB8fCAhdGhpcy5wYXJlbnQudWlkID8gIiIgOiB0aGlzLnBhcmVudC51
aWQoKSB8fCAiIikgKyAiLyIgKyB0aGlzLl9ub2RlRGF0YS5uYW1lOwotICAgICAgICByZXR1cm4g
dGhpcy5fdWlkOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29s
dW1uSWRlbnRpZmllcgotICAgICAqIEByZXR1cm4ge0VsZW1lbnR9Ci0gICAgICovCi0gICAgX2Ny
ZWF0ZVNpemVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAg
dmFyIG5vZGUgPSB0aGlzOwotICAgICAgICB2YXIgdmlld1Byb3BlcnRpZXMgPSBudWxsOwotICAg
ICAgICB2YXIgZGltbWVkID0gZmFsc2U7Ci0gICAgICAgIHdoaWxlICghdmlld1Byb3BlcnRpZXMg
fHwgdmlld1Byb3BlcnRpZXMuX2ZpbGxTdHlsZSA9PT0gImluaGVyaXQiKSB7Ci0gICAgICAgICAg
ICB2aWV3UHJvcGVydGllcyA9IFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVz
Ll9mb3JNZW1vcnlCbG9jayhub2RlLl9ub2RlRGF0YSk7Ci0gICAgICAgICAgICBpZiAodmlld1By
b3BlcnRpZXMuX2ZpbGxTdHlsZSA9PT0gImluaGVyaXQiKQotICAgICAgICAgICAgICAgIGRpbW1l
ZCA9IHRydWU7Ci0gICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YXIgc2l6ZUtCID0gdGhpcy5fbm9kZURhdGEuc2l6ZSAvIDEwMjQ7Ci0gICAgICAg
IHZhciB0b3RhbFNpemUgPSB0aGlzLl9wcm9maWxlLl9tZW1vcnlCbG9jay5zaXplOwotICAgICAg
ICB2YXIgcGVyY2VudGFnZSA9IHRoaXMuX25vZGVEYXRhLnNpemUgLyB0b3RhbFNpemUgICogMTAw
OwotCi0gICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAg
ICAgICAgY2VsbC5jbGFzc05hbWUgPSBjb2x1bW5JZGVudGlmaWVyICsgIi1jb2x1bW4iOwotCi0g
ICAgICAgIHZhciB0ZXh0RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
ICAgIHRleHREaXYudGV4dENvbnRlbnQgPSBOdW1iZXIud2l0aFRob3VzYW5kc1NlcGFyYXRvcihz
aXplS0IudG9GaXhlZCgwKSkgKyAiXHUyMDA5IiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygiS0Ii
KTsKLSAgICAgICAgdGV4dERpdi5jbGFzc05hbWUgPSAic2l6ZS10ZXh0IjsKLSAgICAgICAgY2Vs
bC5hcHBlbmRDaGlsZCh0ZXh0RGl2KTsKLQotICAgICAgICB2YXIgYmFyRGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGJhckRpdi5jbGFzc05hbWUgPSAic2l6ZS1i
YXIiOwotICAgICAgICBiYXJEaXYuc3R5bGUud2lkdGggPSBwZXJjZW50YWdlICsgIiUiOwotICAg
ICAgICBiYXJEaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdmlld1Byb3BlcnRpZXMuX2ZpbGxT
dHlsZTsKLSAgICAgICAgLy8gZmlsbGVyRGl2IGRpc3BsYWNlcyBwZXJjZW50YWdlIHRleHQgb3V0
IG9mIHRoZSBiYXIgdmlzaWJsZSBhcmVhIGlmIGl0IGRvZXNuJ3QgZml0LgotICAgICAgICB2YXIg
ZmlsbGVyRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGZpbGxl
ckRpdi5jbGFzc05hbWUgPSAicGVyY2VudC10ZXh0IgotICAgICAgICBiYXJEaXYuYXBwZW5kQ2hp
bGQoZmlsbGVyRGl2KTsKLSAgICAgICAgdmFyIHBlcmNlbnREaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICAgICAgcGVyY2VudERpdi50ZXh0Q29udGVudCA9IHBlcmNlbnRh
Z2UudG9GaXhlZCgxKSArICIlIjsKLSAgICAgICAgcGVyY2VudERpdi5jbGFzc05hbWUgPSAicGVy
Y2VudC10ZXh0IgotICAgICAgICBiYXJEaXYuYXBwZW5kQ2hpbGQocGVyY2VudERpdik7Ci0KLSAg
ICAgICAgdmFyIGJhckhvbGRlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgICAgICBpZiAoZGltbWVkKQotICAgICAgICAgICAgYmFySG9sZGVyRGl2LmNsYXNzTmFtZSA9
ICJkaW1tZWQiOwotICAgICAgICBiYXJIb2xkZXJEaXYuYXBwZW5kQ2hpbGQoYmFyRGl2KTsKLSAg
ICAgICAgY2VsbC5hcHBlbmRDaGlsZChiYXJIb2xkZXJEaXYpOwotCi0gICAgICAgIHJldHVybiBj
ZWxsOwotICAgIH0sCi0KLSAgICBwb3B1bGF0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh0
aGlzLl9wb3B1bGF0ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX3BvcHVs
YXRlZCA9IHRydWU7Ci0gICAgICAgIGlmICh0aGlzLl9ub2RlRGF0YS5jaGlsZHJlbikKLSAgICAg
ICAgICAgIHRoaXMuX2FkZENoaWxkcmVuKCk7Ci0gICAgfSwKLQotICAgIF9hZGRDaGlsZHJlbjog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fbm9kZURhdGEuY2hpbGRyZW4uc29ydCh0
aGlzLmRhdGFHcmlkLl9zb3J0aW5nRnVuY3Rpb24uYmluZCh0aGlzLmRhdGFHcmlkKSk7Ci0KLSAg
ICAgICAgZm9yICh2YXIgbm9kZSBpbiB0aGlzLl9ub2RlRGF0YS5jaGlsZHJlbikgewotICAgICAg
ICAgICAgdmFyIG5vZGVEYXRhID0gdGhpcy5fbm9kZURhdGEuY2hpbGRyZW5bbm9kZV07Ci0gICAg
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dOYXRpdmVTbmFwc2hvdFVuaW5z
dHJ1bWVudGVkU2l6ZS5nZXQoKSB8fCBub2RlRGF0YS5uYW1lICE9PSAiT3RoZXIiKQotICAgICAg
ICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hv
dE5vZGUobm9kZURhdGEsIHRoaXMuX3Byb2ZpbGUpKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAg
ICBfYWRkQ2hpbGRyZW5Gcm9tR3JhcGg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBt
ZW1vcnlCbG9jayA9IHRoaXMuX25vZGVEYXRhOwotICAgICAgICBpZiAobWVtb3J5QmxvY2suY2hp
bGRyZW4pCi0gICAgICAgICAgICAgcmV0dXJuIG1lbW9yeUJsb2NrLmNoaWxkcmVuLmxlbmd0aCA+
IDA7Ci0gICAgICAgIGlmIChtZW1vcnlCbG9jay5uYW1lID09PSAiSW1hZ2UiKSB7Ci0gICAgICAg
ICAgICB0aGlzLl9hZGRJbWFnZURldGFpbHMoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgX2FkZEltYWdl
RGV0YWlsczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBTbmFwc2hvdFByb3h5fSBwcm94eQotICAgICAgICAg
Ki8KLSAgICAgICAgZnVuY3Rpb24gZGlkTG9hZChwcm94eSkKLSAgICAgICAgewotICAgICAgICAg
ICAgZnVuY3Rpb24gZGlkUmVjZWl2ZUltYWdlcyhyZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fbm9kZURhdGEuY2hpbGRyZW4gPSByZXN1bHQ7Ci0gICAgICAgICAg
ICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZENo
aWxkcmVuKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm94eS5pbWFnZXMoZGlkUmVj
ZWl2ZUltYWdlcy5iaW5kKHRoaXMpKTsKLQotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3Byb2Zp
bGUubG9hZChkaWRMb2FkLmJpbmQodGhpcykpOwotICAgIH0sCi0KLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlCi19Ci0KLQotLyoqCi0gKiBAY29uc3Ry
dWN0b3IKLSAqIEBpbXBsZW1lbnRzIHtNZW1vcnlBZ2VudC5EaXNwYXRjaGVyfQotICovCi1XZWJJ
bnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyID0gZnVuY3Rpb24oKQotewotICAgIEluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJNZW1vcnlEaXNwYXRjaGVyKHRoaXMpOwotICAgIHRoaXMuX2N1
cnJlbnRQcm9maWxlSGVhZGVyID0gbnVsbDsKLX0KLQotV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50
RGlzcGF0Y2hlci5pbnN0YW5jZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAoIVdlYkluc3BlY3Rv
ci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuX2luc3RhbmNlKQotICAgICAgICBXZWJJbnNwZWN0b3Iu
TWVtb3J5QWdlbnREaXNwYXRjaGVyLl9pbnN0YW5jZSA9IG5ldyBXZWJJbnNwZWN0b3IuTWVtb3J5
QWdlbnREaXNwYXRjaGVyKCk7Ci0gICAgcmV0dXJuIFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERp
c3BhdGNoZXIuX2luc3RhbmNlOwotfQotCi1XZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRj
aGVyLnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAb3ZlcnJpZGUKLSAgICAgKiBAcGFy
YW0ge01lbW9yeUFnZW50LkhlYXBTbmFwc2hvdENodW5rfSBjaHVuawotICAgICAqLwotICAgIGFk
ZE5hdGl2ZVNuYXBzaG90Q2h1bms6IGZ1bmN0aW9uKGNodW5rKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX2N1cnJlbnRQcm9maWxlSGVhZGVyKQotICAgICAgICAgICAgdGhpcy5fY3VycmVudFBy
b2ZpbGVIZWFkZXIuYWRkTmF0aXZlU25hcHNob3RDaHVuayhjaHVuayk7Ci0gICAgfSwKLQotICAg
IF9vblJlbW92ZVByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAg
aWYgKGV2ZW50LmRhdGEgPT09IHRoaXMuX2N1cnJlbnRQcm9maWxlSGVhZGVyKQotICAgICAgICAg
ICAgdGhpcy5fY3VycmVudFByb2ZpbGVIZWFkZXIgPSBudWxsOwotICAgIH0KLX07Ci0KLQotLyoq
Ci0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGV9
Ci0gKiBAcGFyYW0ge3N0cmluZ30gaWQKLSAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCi0gKi8KLVdl
Ykluc3BlY3Rvci5OYXRpdmVQcm9maWxlVHlwZUJhc2UgPSBmdW5jdGlvbihwcm9maWxlSGVhZGVy
Q29uc3RydWN0b3IsIGlkLCBuYW1lKQotewotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5j
YWxsKHRoaXMsIGlkLCBuYW1lKTsKLSAgICB0aGlzLl9wcm9maWxlSGVhZGVyQ29uc3RydWN0b3Ig
PSBwcm9maWxlSGVhZGVyQ29uc3RydWN0b3I7Ci0gICAgdGhpcy5fbmV4dFByb2ZpbGVVaWQgPSAx
OwotICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuRXZl
bnRzLlJlbW92ZVByb2ZpbGVIZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIucHJvdG90eXBlLl9vblJlbW92ZVByb2ZpbGVI
ZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5NZW1vcnlBZ2Vu
dERpc3BhdGNoZXIuaW5zdGFuY2UoKSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5OYXRpdmVQcm9maWxl
VHlwZUJhc2UucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBvdmVycmlkZQotICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgaXNJbnN0YW50UHJvZmlsZTogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIC8qKgotICAg
ICAqIEBvdmVycmlkZQotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgYnV0
dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5N
ZW1vcnlBZ2VudERpc3BhdGNoZXIuaW5zdGFuY2UoKS5fY3VycmVudFByb2ZpbGVIZWFkZXIpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIHByb2ZpbGVIZWFkZXIgPSBu
ZXcgdGhpcy5fcHJvZmlsZUhlYWRlckNvbnN0cnVjdG9yKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU25hcHNob3QgJWQiLCB0aGlzLl9uZXh0UHJvZmlsZVVpZCksIHRoaXMuX25leHRQcm9m
aWxlVWlkKTsKLSAgICAgICAgKyt0aGlzLl9uZXh0UHJvZmlsZVVpZDsKLSAgICAgICAgcHJvZmls
ZUhlYWRlci5pc1RlbXBvcmFyeSA9IHRydWU7Ci0gICAgICAgIHRoaXMuYWRkUHJvZmlsZShwcm9m
aWxlSGVhZGVyKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlci5p
bnN0YW5jZSgpLl9jdXJyZW50UHJvZmlsZUhlYWRlciA9IHByb2ZpbGVIZWFkZXI7Ci0gICAgICAg
IHByb2ZpbGVIZWFkZXIubG9hZChmdW5jdGlvbigpIHsgfSk7Ci0KLQotICAgICAgICAvKioKLSAg
ICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSBlcnJvcgotICAgICAgICAgKiBAcGFyYW0gez9NZW1v
cnlBZ2VudC5NZW1vcnlCbG9ja30gbWVtb3J5QmxvY2sKLSAgICAgICAgICogQHBhcmFtIHtPYmpl
Y3Q9fSBncmFwaE1ldGFJbmZvcm1hdGlvbgotICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24g
ZGlkUmVjZWl2ZU1lbW9yeVNuYXBzaG90KGVycm9yLCBtZW1vcnlCbG9jaywgZ3JhcGhNZXRhSW5m
b3JtYXRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMgPT09
IFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuaW5zdGFuY2UoKS5fY3VycmVudFBy
b2ZpbGVIZWFkZXIpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0
Y2hlci5pbnN0YW5jZSgpLl9jdXJyZW50UHJvZmlsZUhlYWRlciA9IG51bGw7Ci0gICAgICAgICAg
ICB0aGlzLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QoZXJyb3IsIG1lbW9yeUJsb2NrLCBncmFw
aE1ldGFJbmZvcm1hdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgTWVtb3J5QWdlbnQuZ2V0UHJv
Y2Vzc01lbW9yeURpc3RyaWJ1dGlvbih0cnVlLCBkaWRSZWNlaXZlTWVtb3J5U25hcHNob3QuYmlu
ZChwcm9maWxlSGVhZGVyKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAg
LyoqCi0gICAgICogQG92ZXJyaWRlCi0gICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlByb2Zp
bGVIZWFkZXJ9IHByb2ZpbGUKLSAgICAgKi8KLSAgICByZW1vdmVQcm9maWxlOiBmdW5jdGlvbihw
cm9maWxlKQotICAgIHsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3Bh
dGNoZXIuaW5zdGFuY2UoKS5fY3VycmVudFByb2ZpbGVIZWFkZXIgPT09IHByb2ZpbGUpCi0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyLmluc3RhbmNlKCkuX2N1
cnJlbnRQcm9maWxlSGVhZGVyID0gbnVsbDsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVU
eXBlLnByb3RvdHlwZS5yZW1vdmVQcm9maWxlLmNhbGwodGhpcywgcHJvZmlsZSk7Ci0gICAgfSwK
LQotICAgIC8qKgotICAgICAqIEBvdmVycmlkZQotICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gdGl0
bGUKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KLSAgICAgKi8K
LSAgICBjcmVhdGVUZW1wb3JhcnlQcm9maWxlOiBmdW5jdGlvbih0aXRsZSkKLSAgICB7Ci0gICAg
ICAgIHRpdGxlID0gdGl0bGUgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdHRpbmdc
dTIwMjYiKTsKLSAgICAgICAgcmV0dXJuIG5ldyB0aGlzLl9wcm9maWxlSGVhZGVyQ29uc3RydWN0
b3IodGhpcywgdGl0bGUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAb3ZlcnJpZGUKLSAg
ICAgKiBAcGFyYW0ge1Byb2ZpbGVyQWdlbnQuUHJvZmlsZUhlYWRlcn0gcHJvZmlsZQotICAgICAq
IEByZXR1cm4ge1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyfQotICAgICAqLwotICAgIGNyZWF0
ZVByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IHRo
aXMuX3Byb2ZpbGVIZWFkZXJDb25zdHJ1Y3Rvcih0aGlzLCBwcm9maWxlLnRpdGxlLCAtMSk7Ci0g
ICAgfSwKLQotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnByb3RvdHlw
ZQotfQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5O
YXRpdmVQcm9maWxlVHlwZUJhc2V9Ci0gKi8KLVdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFBy
b2ZpbGVUeXBlID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5OYXRpdmVQcm9maWxl
VHlwZUJhc2UuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVh
ZGVyLCAgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlRha2UgTmF0aXZlIEhlYXAgU25hcHNob3QiKSk7Ci19Ci0KLVdl
Ykluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCA9ICJOQVRJVkVfU05B
UFNIT1QiOwotCi1XZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZS5wcm90b3R5
cGUgPSB7Ci0gICAgZ2V0IGJ1dHRvblRvb2x0aXAoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQ2FwdHVyZSBuYXRpdmUgaGVhcCBncmFwaC4iKTsKLSAgICB9
LAotCi0gICAgZ2V0IHRyZWVJdGVtVGl0bGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiTkFUSVZFIFNOQVBTSE9UIik7Ci0gICAgfSwKLQotICAgIGdldCBk
ZXNjcmlwdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJOYXRpdmUgbWVtb3J5IHNuYXBzaG90IHByb2ZpbGVzIHNob3cgbmF0aXZlIGhlYXAgZ3JhcGgu
Iik7Ci0gICAgfSwKLQotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk5hdGl2ZVByb2ZpbGVU
eXBlQmFzZS5wcm90b3R5cGUKLX0KLQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVu
ZHMge1dlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlcn0KLSAqIEBwYXJhbSB7IVdlYkluc3Bl
Y3Rvci5Qcm9maWxlVHlwZX0gdHlwZQotICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlCi0gKiBAcGFy
YW0ge251bWJlcj19IHVpZAotICovCi1XZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxl
SGVhZGVyID0gZnVuY3Rpb24odHlwZSwgdGl0bGUsIHVpZCkKLXsKLSAgICBXZWJJbnNwZWN0b3Iu
SGVhcFByb2ZpbGVIZWFkZXIuY2FsbCh0aGlzLCB0eXBlLCB0aXRsZSwgdWlkLCAwKTsKLSAgICB0
aGlzLl9zdHJpbmdzID0gW107Ci0gICAgdGhpcy5fbm9kZXMgPSBbXTsKLSAgICB0aGlzLl9lZGdl
cyA9IFtdOwotICAgIHRoaXMuX2Jhc2VUb1JlYWxOb2RlSWQgPSBbXTsKLX0KLQotV2ViSW5zcGVj
dG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0g
ICAgICogQG92ZXJyaWRlCi0gICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWx9IHByb2ZpbGVzUGFuZWwKLSAgICAgKi8KLSAgICBjcmVhdGVWaWV3OiBmdW5jdGlvbihwcm9m
aWxlc1BhbmVsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZl
SGVhcFNuYXBzaG90Vmlldyhwcm9maWxlc1BhbmVsLCB0aGlzKTsKLSAgICB9LAotCi0gICAgc3Rh
cnRTbmFwc2hvdFRyYW5zZmVyOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzbmFw
c2hvdENvbnN0cnVjdG9yTmFtZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJO
YXRpdmVIZWFwU25hcHNob3QiOwotICAgIH0sCi0KLSAgICBzbmFwc2hvdFByb3h5Q29uc3RydWN0
b3I6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuTmF0aXZl
SGVhcFNuYXBzaG90UHJveHk7Ci0gICAgfSwKLQotICAgIGFkZE5hdGl2ZVNuYXBzaG90Q2h1bms6
IGZ1bmN0aW9uKGNodW5rKQotICAgIHsKLSAgICAgICAgdGhpcy5fc3RyaW5ncyA9IHRoaXMuX3N0
cmluZ3MuY29uY2F0KGNodW5rLnN0cmluZ3MpOwotICAgICAgICB0aGlzLl9ub2RlcyA9IHRoaXMu
X25vZGVzLmNvbmNhdChjaHVuay5ub2Rlcyk7Ci0gICAgICAgIHRoaXMuX2VkZ2VzID0gdGhpcy5f
ZWRnZXMuY29uY2F0KGNodW5rLmVkZ2VzKTsKLSAgICAgICAgdGhpcy5fYmFzZVRvUmVhbE5vZGVJ
ZCA9IHRoaXMuX2Jhc2VUb1JlYWxOb2RlSWQuY29uY2F0KGNodW5rLmJhc2VUb1JlYWxOb2RlSWQp
OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0gez9zdHJpbmd9IGVycm9yCi0gICAg
ICogQHBhcmFtIHs/TWVtb3J5QWdlbnQuTWVtb3J5QmxvY2t9IG1lbW9yeUJsb2NrCi0gICAgICog
QHBhcmFtIHtPYmplY3Q9fSBncmFwaE1ldGFJbmZvcm1hdGlvbgotICAgICAqLwotICAgIF9kaWRS
ZWNlaXZlTWVtb3J5U25hcHNob3Q6IGZ1bmN0aW9uKGVycm9yLCBtZW1vcnlCbG9jaywgZ3JhcGhN
ZXRhSW5mb3JtYXRpb24pCi0gICAgewotICAgICAgICB2YXIgbWV0YUluZm9ybWF0aW9uID0gLyoq
IEB0eXBle0hlYXBTbmFwc2hvdE1ldGFpbmZvfSAqLyAoZ3JhcGhNZXRhSW5mb3JtYXRpb24pOwot
ICAgICAgICB0aGlzLmlzVGVtcG9yYXJ5ID0gZmFsc2U7Ci0KLSAgICAgICAgdmFyIGVkZ2VGaWVs
ZENvdW50ID0gbWV0YUluZm9ybWF0aW9uLmVkZ2VfZmllbGRzLmxlbmd0aDsKLSAgICAgICAgdmFy
IG5vZGVGaWVsZENvdW50ID0gbWV0YUluZm9ybWF0aW9uLm5vZGVfZmllbGRzLmxlbmd0aDsKLSAg
ICAgICAgdmFyIG5vZGVJZEZpZWxkT2Zmc2V0ID0gbWV0YUluZm9ybWF0aW9uLm5vZGVfZmllbGRz
LmluZGV4T2YoImlkIik7Ci0gICAgICAgIHZhciB0b05vZGVJZEZpZWxkT2Zmc2V0ID0gbWV0YUlu
Zm9ybWF0aW9uLmVkZ2VfZmllbGRzLmluZGV4T2YoInRvX25vZGUiKTsKLQotICAgICAgICB2YXIg
YmFzZVRvUmVhbE5vZGVJZE1hcCA9IHt9OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX2Jhc2VUb1JlYWxOb2RlSWQubGVuZ3RoOyBpICs9IDIpCi0gICAgICAgICAgICBiYXNlVG9S
ZWFsTm9kZUlkTWFwW3RoaXMuX2Jhc2VUb1JlYWxOb2RlSWRbaV1dID0gdGhpcy5fYmFzZVRvUmVh
bE5vZGVJZFtpICsgMV07Ci0KLSAgICAgICAgdmFyIG5vZGVJZDJOb2RlSW5kZXggPSB7fTsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IG5vZGVJZEZpZWxkT2Zmc2V0OyBpIDwgdGhpcy5fbm9kZXMubGVu
Z3RoOyBpICs9IG5vZGVGaWVsZENvdW50KQotICAgICAgICAgICAgbm9kZUlkMk5vZGVJbmRleFt0
aGlzLl9ub2Rlc1tpXV0gPSBpIC0gbm9kZUlkRmllbGRPZmZzZXQ7Ci0KLSAgICAgICAgLy8gVHJh
bnNsYXRlIG5vZGVJZCB0byBub2RlSW5kZXguCi0gICAgICAgIHZhciBlZGdlcyA9IHRoaXMuX2Vk
Z2VzOwotICAgICAgICBmb3IgKHZhciBpID0gdG9Ob2RlSWRGaWVsZE9mZnNldDsgaSA8IGVkZ2Vz
Lmxlbmd0aDsgaSArPSBlZGdlRmllbGRDb3VudCkgewotICAgICAgICAgICAgaWYgKGVkZ2VzW2ld
IGluIGJhc2VUb1JlYWxOb2RlSWRNYXApCi0gICAgICAgICAgICAgICAgZWRnZXNbaV0gPSBiYXNl
VG9SZWFsTm9kZUlkTWFwW2VkZ2VzW2ldXTsKLSAgICAgICAgICAgIGVkZ2VzW2ldID0gbm9kZUlk
Mk5vZGVJbmRleFtlZGdlc1tpXV07Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgaGVhcFNuYXBz
aG90ID0gewotICAgICAgICAgICAgInNuYXBzaG90IjogewotICAgICAgICAgICAgICAgICJtZXRh
IjogbWV0YUluZm9ybWF0aW9uLAotICAgICAgICAgICAgICAgIG5vZGVfY291bnQ6IHRoaXMuX25v
ZGVzLmxlbmd0aCAvIG5vZGVGaWVsZENvdW50LAotICAgICAgICAgICAgICAgIGVkZ2VfY291bnQ6
IHRoaXMuX2VkZ2VzLmxlbmd0aCAvIGVkZ2VGaWVsZENvdW50LAotICAgICAgICAgICAgICAgIHJv
b3RfaW5kZXg6IHRoaXMuX25vZGVzLmxlbmd0aCAtIG5vZGVGaWVsZENvdW50Ci0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgbm9kZXM6IHRoaXMuX25vZGVzLAotICAgICAgICAgICAgZWRnZXM6
IHRoaXMuX2VkZ2VzLAotICAgICAgICAgICAgc3RyaW5nczogdGhpcy5fc3RyaW5ncwotICAgICAg
ICB9OwotCi0gICAgICAgIHZhciBjaHVuayA9IEpTT04uc3RyaW5naWZ5KGhlYXBTbmFwc2hvdCk7
Ci0gICAgICAgIHRoaXMudHJhbnNmZXJDaHVuayhjaHVuayk7Ci0gICAgICAgIHRoaXMuZmluaXNo
SGVhcFNuYXBzaG90KCk7Ci0gICAgfSwKLQotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkhl
YXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZQotfQotCi0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0g
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXd9Ci0gKiBAcGFyYW0geyFX
ZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0gcGFyZW50Ci0gKiBAcGFyYW0geyFXZWJJbnNwZWN0
b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVhZGVyfSBwcm9maWxlCi0gKi8KLVdlYkluc3BlY3Rv
ci5OYXRpdmVIZWFwU25hcHNob3RWaWV3ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQotewot
ICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxlOwotICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RWaWV3LmNhbGwodGhpcywgcGFyZW50LCBwcm9maWxlKTsKLX0KLQotCi1XZWJJbnNwZWN0b3Iu
TmF0aXZlSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IHByb2ZpbGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2ZpbGU7Ci0gICAgfSwKLQotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlCi19OwotCi0KLS8q
KgotICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk5hdGl2ZVByb2Zp
bGVUeXBlQmFzZX0KLSAqLwotV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlID0g
ZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5OYXRpdmVQcm9maWxlVHlwZUJhc2UuY2Fs
bCh0aGlzLCBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZUhlYWRlciwgV2ViSW5zcGVj
dG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDYXB0dXJlIE5hdGl2ZSBNZW1vcnkgRGlzdHJpYnV0aW9uIikpOwotfQotCi1XZWJJbnNwZWN0
b3IuTmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUuVHlwZUlkID0gIk5BVElWRV9NRU1PUllfRElTVFJJ
QlVUSU9OIjsKLQotV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLnByb3RvdHlw
ZSA9IHsKLSAgICBnZXQgYnV0dG9uVG9vbHRpcCgpCi0gICAgewotICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDYXB0dXJlIG5hdGl2ZSBtZW1vcnkgZGlzdHJpYnV0aW9uLiIp
OwotICAgIH0sCi0KLSAgICBnZXQgdHJlZUl0ZW1UaXRsZSgpCi0gICAgewotICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNRU1PUlkgRElTVFJJQlVUSU9OIik7Ci0gICAgfSwK
LQotICAgIGdldCBkZXNjcmlwdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJOYXRpdmUgbWVtb3J5IHNuYXBzaG90IHByb2ZpbGVzIHNob3cgbWVtb3J5
IGRpc3RyaWJ1dGlvbiBhbW9uZyBicm93c2VyIHN1YnN5c3RlbXMiKTsKLSAgICB9LAotCi0gICAg
X19wcm90b19fOiBXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5cGVCYXNlLnByb3RvdHlwZQot
fQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5OYXRp
dmVTbmFwc2hvdFByb2ZpbGVIZWFkZXJ9Ci0gKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuUHJvZmls
ZVR5cGV9IHR5cGUKLSAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZQotICogQHBhcmFtIHtudW1iZXI9
fSB1aWQKLSAqLwotV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVIZWFkZXIgPSBmdW5j
dGlvbih0eXBlLCB0aXRsZSwgdWlkKQotewotICAgIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hv
dFByb2ZpbGVIZWFkZXIuY2FsbCh0aGlzLCB0eXBlLCB0aXRsZSwgdWlkKTsKLQotICAgIC8qKgot
ICAgICAqIEB0eXBlIHtNZW1vcnlBZ2VudC5NZW1vcnlCbG9ja30KLSAgICAgKi8KLSAgICB0aGlz
Ll9tZW1vcnlCbG9jayA9IG51bGw7Ci19Ci0KLVdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9m
aWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAb3ZlcnJpZGUKLSAgICAg
Ki8KLSAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQodGhp
cywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdCAlZCIpLCAiaGVhcC1zbmFwc2hvdC1z
aWRlYmFyLXRyZWUtaXRlbSIpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAb3ZlcnJpZGUK
LSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwcm9maWxlc1BhbmVs
Ci0gICAgICovCi0gICAgY3JlYXRlVmlldzogZnVuY3Rpb24ocHJvZmlsZXNQYW5lbCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVNuYXBzaG90Vmll
dyh0aGlzKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQG92ZXJyaWRlCi0gICAgICovCi0g
ICAgX3VwZGF0ZVNuYXBzaG90U3RhdHVzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJ
bnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fdXBkYXRlU25h
cHNob3RTdGF0dXMuY2FsbCh0aGlzKTsKLSAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0
aXRsZSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKC8qKiBAdHlwZXtudW1iZXJ9ICovICh0aGlzLl9t
ZW1vcnlCbG9jay5zaXplKSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBvdmVycmlkZQot
ICAgICAqIEBwYXJhbSB7P3N0cmluZ30gZXJyb3IKLSAgICAgKiBAcGFyYW0gez9NZW1vcnlBZ2Vu
dC5NZW1vcnlCbG9ja30gbWVtb3J5QmxvY2sKLSAgICAgKiBAcGFyYW0ge09iamVjdD19IGdyYXBo
TWV0YUluZm9ybWF0aW9uCi0gICAgICovCi0gICAgX2RpZFJlY2VpdmVNZW1vcnlTbmFwc2hvdDog
ZnVuY3Rpb24oZXJyb3IsIG1lbW9yeUJsb2NrLCBncmFwaE1ldGFJbmZvcm1hdGlvbikKLSAgICB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVIZWFkZXIucHJvdG90
eXBlLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QuY2FsbCh0aGlzLCBlcnJvciwgbWVtb3J5Qmxv
Y2ssIGdyYXBoTWV0YUluZm9ybWF0aW9uKTsKLSAgICAgICAgaWYgKG1lbW9yeUJsb2NrLnNpemUg
JiYgbWVtb3J5QmxvY2suY2hpbGRyZW4pIHsKLSAgICAgICAgICAgIHZhciBrbm93blNpemUgPSAw
OwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZW1vcnlCbG9jay5jaGlsZHJlbi5s
ZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIHZhciBzaXplID0gbWVtb3J5QmxvY2suY2hp
bGRyZW5baV0uc2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAoc2l6ZSkKLSAgICAgICAgICAgICAg
ICAgICAga25vd25TaXplICs9IHNpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIg
b3RoZXJTaXplID0gbWVtb3J5QmxvY2suc2l6ZSAtIGtub3duU2l6ZTsKLQotICAgICAgICAgICAg
aWYgKG90aGVyU2l6ZSkgewotICAgICAgICAgICAgICAgIG1lbW9yeUJsb2NrLmNoaWxkcmVuLnB1
c2goewotICAgICAgICAgICAgICAgICAgICBuYW1lOiAiT3RoZXIiLAotICAgICAgICAgICAgICAg
ICAgICBzaXplOiBvdGhlclNpemUKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICB0aGlzLl9tZW1vcnlCbG9jayA9IG1lbW9yeUJsb2NrOwotICAg
IH0sCi0KLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVI
ZWFkZXIucHJvdG90eXBlCi19Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge3N0
cmluZ30gZmlsbFN0eWxlCi0gKiBAcGFyYW0ge3N0cmluZ30gbmFtZQotICogQHBhcmFtIHtzdHJp
bmd9IGRlc2NyaXB0aW9uCi0gKi8KLVdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0
aWVzID0gZnVuY3Rpb24oZmlsbFN0eWxlLCBuYW1lLCBkZXNjcmlwdGlvbikKLXsKLSAgICB0aGlz
Ll9maWxsU3R5bGUgPSBmaWxsU3R5bGU7Ci0gICAgdGhpcy5fbmFtZSA9IG5hbWU7Ci0gICAgdGhp
cy5fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKLX0KLQotLyoqCi0gKiBAdHlwZSB7T2JqZWN0
LjxzdHJpbmcsIFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVzPn0KLSAqLwot
V2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX3N0YW5kYXJkQmxvY2tzID0g
bnVsbDsKLQotV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxp
emUgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQ
cm9wZXJ0aWVzLl9zdGFuZGFyZEJsb2NrcykKLSAgICAgICAgcmV0dXJuOwotICAgIFdlYkluc3Bl
Y3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVzLl9zdGFuZGFyZEJsb2NrcyA9IHt9OwotICAg
IGZ1bmN0aW9uIGFkZEJsb2NrKGZpbGxTdHlsZSwgbmFtZSwgZGVzY3JpcHRpb24pCi0gICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IuTWVtb3J5QmxvY2tWaWV3UHJvcGVydGllcy5fc3RhbmRhcmRC
bG9ja3NbbmFtZV0gPSBuZXcgV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMo
ZmlsbFN0eWxlLCBuYW1lLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoZGVzY3JpcHRpb24pKTsKLSAg
ICB9Ci0gICAgYWRkQmxvY2soImhzbCggIDAsICAwJSwgIDYwJSkiLCAiUHJvY2Vzc1ByaXZhdGVN
ZW1vcnkiLCAiVG90YWwiKTsKLSAgICBhZGRCbG9jaygiaHNsKCAgMCwgIDAlLCAgODAlKSIsICJP
d25lcnNUeXBlUGxhY2Vob2xkZXIiLCAiT3duZXJzVHlwZVBsYWNlaG9sZGVyIik7Ci0gICAgYWRk
QmxvY2soImhzbCggIDAsICAwJSwgIDYwJSkiLCAiT3RoZXIiLCAiT3RoZXIiKTsKLSAgICBhZGRC
bG9jaygiaHNsKDIyMCwgODAlLCAgNzAlKSIsICJJbWFnZSIsICJJbWFnZXMiKTsKLSAgICBhZGRC
bG9jaygiaHNsKDEwMCwgNjAlLCAgNTAlKSIsICJKU0hlYXAiLCAiSmF2YVNjcmlwdCBoZWFwIik7
Ci0gICAgYWRkQmxvY2soImhzbCggOTAsIDQwJSwgIDgwJSkiLCAiSlNFeHRlcm5hbFJlc291cmNl
cyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHJlc291cmNlcyIpOwotICAgIGFkZEJsb2NrKCJoc2wo
IDkwLCA2MCUsICA4MCUpIiwgIkNTUyIsICJDU1MiKTsKLSAgICBhZGRCbG9jaygiaHNsKCAgMCwg
NTAlLCAgNjAlKSIsICJET00iLCAiRE9NIik7Ci0gICAgYWRkQmxvY2soImhzbCggIDAsIDgwJSwg
IDYwJSkiLCAiV2ViSW5zcGVjdG9yIiwgIkluc3BlY3RvciBkYXRhIik7Ci0gICAgYWRkQmxvY2so
ImhzbCggMzYsIDkwJSwgIDUwJSkiLCAiUmVzb3VyY2VzIiwgIlJlc291cmNlcyIpOwotICAgIGFk
ZEJsb2NrKCJoc2woIDQwLCA4MCUsICA4MCUpIiwgIkdseXBoQ2FjaGUiLCAiR2x5cGggY2FjaGUg
cmVzb3VyY2VzIik7Ci0gICAgYWRkQmxvY2soImhzbCggMzUsIDgwJSwgIDgwJSkiLCAiRE9NU3Rv
cmFnZUNhY2hlIiwgIkRPTSBzdG9yYWdlIGNhY2hlIik7Ci0gICAgYWRkQmxvY2soImhzbCggNjAs
IDgwJSwgIDYwJSkiLCAiUmVuZGVyVHJlZSIsICJSZW5kZXIgdHJlZSIpOwotICAgIGFkZEJsb2Nr
KCJoc2woIDIwLCA4MCUsICA1MCUpIiwgIk1hbGxvY1dhc3RlIiwgIk1lbW9yeSBhbGxvY2F0b3Ig
d2FzdGUiKTsKLX0KLQotV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2Zv
ck1lbW9yeUJsb2NrID0gZnVuY3Rpb24obWVtb3J5QmxvY2spCi17Ci0gICAgV2ViSW5zcGVjdG9y
Lk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxpemUoKTsKLSAgICB2YXIgcmVzdWx0
ID0gV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX3N0YW5kYXJkQmxvY2tz
W21lbW9yeUJsb2NrLm5hbWVdOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTWVtb3J5QmxvY2tWaWV3UHJvcGVydGll
cygiaW5oZXJpdCIsIG1lbW9yeUJsb2NrLm5hbWUsIG1lbW9yeUJsb2NrLm5hbWUpOwotfQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwu
anMKaW5kZXggNzdkOGNkOGE1ZTRmOTlhMjBiYzEyYjBjNTIzNDRiMmI5NmE3NTMxYS4uMmEzZjA0
NGZjZGNkZDIzMDhmZGFjNzYyMmQ5MjM1MWVlMjM5ZTJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtNDA4LDEwICs0
MDgsNiBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUp
CiAgICAgICAgICAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlVHlwZSgpKTsKICAgICAgICAgaWYgKENhcGFiaWxpdGllcy5oZWFw
UHJvZmlsZXJQcmVzZW50KQogICAgICAgICAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOwotICAgICAgICBpZiAo
IVdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmlzV29ya2VyRnJvbnRlbmQoKSAmJiBXZWJJbnNw
ZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5uYXRpdmVNZW1vcnlTbmFwc2hvdHMuaXNFbmFibGVk
KCkpIHsKLSAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3Bl
Y3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOwotICAgICAgICAgICAgdGhpcy5fcmVn
aXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBl
KCkpOwotICAgICAgICB9CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIu
aXNXb3JrZXJGcm9udGVuZCgpICYmIFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLmNh
bnZhc0luc3BlY3Rpb24uaXNFbmFibGVkKCkpCiAgICAgICAgICAgICB0aGlzLl9yZWdpc3RlclBy
b2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUoKSk7CiAgICAgfQpA
QCAtMTQxOSwzNCArMTQxNSw2IEBAIFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlclBhbmVsLnBy
b3RvdHlwZSA9IHsKIH0KIAogCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dl
Ykluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfQotICovCi1XZWJJbnNwZWN0b3IuTWVtb3J5Q2hhcnRQ
cm9maWxlclBhbmVsID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlc1Bh
bmVsLmNhbGwodGhpcywgIm1lbW9yeS1jaGFydC1wcm9maWxlciIsIG5ldyBXZWJJbnNwZWN0b3Iu
TmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUoKSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5NZW1vcnlDaGFy
dFByb2ZpbGVyUGFuZWwucHJvdG90eXBlID0gewotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
LlByb2ZpbGVzUGFuZWwucHJvdG90eXBlCi19Ci0KLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0KLSAqLwotV2ViSW5zcGVjdG9y
Lk5hdGl2ZU1lbW9yeVByb2ZpbGVyUGFuZWwgPSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVzUGFuZWwuY2FsbCh0aGlzLCAibWVtb3J5LXNuYXBzaG90LXByb2ZpbGVyIiwg
bmV3IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOwotfQotCi1XZWJJ
bnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUKLX0KLQotCiBpbXBv
cnRTY3JpcHQoIlByb2ZpbGVEYXRhR3JpZFRyZWUuanMiKTsKIGltcG9ydFNjcmlwdCgiQm90dG9t
VXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIik7CiBpbXBvcnRTY3JpcHQoIkNQVVByb2ZpbGVWaWV3
LmpzIik7CkBAIC0xNDYxLDcgKzE0MjksNiBAQCBpbXBvcnRTY3JpcHQoIkhlYXBTbmFwc2hvdFZp
ZXcuanMiKTsKIGltcG9ydFNjcmlwdCgiSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIp
OwogaW1wb3J0U2NyaXB0KCJKU0hlYXBTbmFwc2hvdC5qcyIpOwogaW1wb3J0U2NyaXB0KCJOYXRp
dmVIZWFwU25hcHNob3QuanMiKTsKLWltcG9ydFNjcmlwdCgiTmF0aXZlTWVtb3J5U25hcHNob3RW
aWV3LmpzIik7CiBpbXBvcnRTY3JpcHQoIlByb2ZpbGVMYXVuY2hlclZpZXcuanMiKTsKIGltcG9y
dFNjcmlwdCgiVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMiKTsKIGltcG9ydFNjcmlwdCgi
Q2FudmFzUHJvZmlsZVZpZXcuanMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDE0ODliMTRlNmJhYzBjMWU2Y2NhYWVkNjg5NTIzNDdm
MjQyZTYyZjYuLmNlODY2Y2M4NmVlZmMwYWEzMTgwNGVjMGQ0N2VlMjkyMTcwNDMxOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtMTEy
LDcgKzExMiw2IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0aW9uKCkKICAgICB0aGlz
Lmdlb2xvY2F0aW9uT3ZlcnJpZGUgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImdlb2xvY2F0aW9uT3Zl
cnJpZGUiLCAiIik7CiAgICAgdGhpcy5kZXZpY2VPcmllbnRhdGlvbk92ZXJyaWRlID0gdGhpcy5j
cmVhdGVTZXR0aW5nKCJkZXZpY2VPcmllbnRhdGlvbk92ZXJyaWRlIiwgIiIpOwogICAgIHRoaXMu
c2hvd0hlYXBTbmFwc2hvdE9iamVjdHNIaWRkZW5Qcm9wZXJ0aWVzID0gdGhpcy5jcmVhdGVTZXR0
aW5nKCJzaG93SGVhcFNuYXBzaG90T2JqZWN0c0hpZGRlblByb3BlcnRpZXMiLCBmYWxzZSk7Ci0g
ICAgdGhpcy5zaG93TmF0aXZlU25hcHNob3RVbmluc3RydW1lbnRlZFNpemUgPSB0aGlzLmNyZWF0
ZVNldHRpbmcoInNob3dOYXRpdmVTbmFwc2hvdFVuaW5zdHJ1bWVudGVkU2l6ZSIsIGZhbHNlKTsK
ICAgICB0aGlzLnNlYXJjaEluQ29udGVudFNjcmlwdHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNl
YXJjaEluQ29udGVudFNjcmlwdHMiLCBmYWxzZSk7CiAgICAgdGhpcy50ZXh0RWRpdG9ySW5kZW50
ID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJ0ZXh0RWRpdG9ySW5kZW50IiwgIiAgICAiKTsKICAgICB0
aGlzLmxhc3REb2NrU3RhdGUgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImxhc3REb2NrU3RhdGUiLCAi
Iik7CkBAIC0yMTcsNyArMjE2LDYgQEAgV2ViSW5zcGVjdG9yLkV4cGVyaW1lbnRzU2V0dGluZ3Mg
PSBmdW5jdGlvbigpCiAKICAgICAvLyBBZGQgY3VycmVudGx5IHJ1bm5pbmcgZXhwZXJpbWVudHMg
aGVyZS4KICAgICB0aGlzLnNuaXBwZXRzU3VwcG9ydCA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQo
InNuaXBwZXRzU3VwcG9ydCIsICJTbmlwcGV0cyBzdXBwb3J0Iik7Ci0gICAgdGhpcy5uYXRpdmVN
ZW1vcnlTbmFwc2hvdHMgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJuYXRpdmVNZW1vcnlTbmFw
c2hvdHMiLCAiTmF0aXZlIG1lbW9yeSBwcm9maWxpbmciKTsKICAgICB0aGlzLm5hdGl2ZU1lbW9y
eVRpbWVsaW5lID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgibmF0aXZlTWVtb3J5VGltZWxpbmUi
LCAiTmF0aXZlIG1lbW9yeSB0aW1lbGluZSIpOwogICAgIHRoaXMuZmlsZVN5c3RlbUluc3BlY3Rp
b24gPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJmaWxlU3lzdGVtSW5zcGVjdGlvbiIsICJGaWxl
U3lzdGVtIGluc3BlY3Rpb24iKTsKICAgICB0aGlzLmNhbnZhc0luc3BlY3Rpb24gPSB0aGlzLl9j
cmVhdGVFeHBlcmltZW50KCJjYW52YXNJbnNwZWN0aW9uICIsICJDYW52YXMgaW5zcGVjdGlvbiIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
c1NjcmVlbi5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NT
Y3JlZW4uanMKaW5kZXggZmFiMGViYTk5ZmU0NjYwZmZlMzVmMjQyM2ZiZmJhNWJlY2Q2NmE1ZS4u
N2E3MjIyODgxNTA4NTE4ZTAwZTJjMzM0YzM5MTU3MmY5MTg3ZjZlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCkBAIC0z
NTgsOCArMzU4LDYgQEAgV2ViSW5zcGVjdG9yLkdlbmVyaWNTZXR0aW5nc1RhYiA9IGZ1bmN0aW9u
KCkKIAogICAgIHAgPSB0aGlzLl9hcHBlbmRTZWN0aW9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UHJvZmlsZXIiKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRp
bmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IG9iamVjdHMnIGhpZGRlbiBwcm9wZXJ0aWVz
IiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93SGVhcFNuYXBzaG90T2JqZWN0c0hpZGRlblBy
b3BlcnRpZXMpKTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3MubmF0
aXZlTWVtb3J5U25hcHNob3RzLmlzRW5hYmxlZCgpKQotICAgICAgICBwLmFwcGVuZENoaWxkKHRo
aXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdW5p
bnN0cnVtZW50ZWQgbmF0aXZlIG1lbW9yeSIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd05h
dGl2ZVNuYXBzaG90VW5pbnN0cnVtZW50ZWRTaXplKSk7CiAKICAgICBwID0gdGhpcy5fYXBwZW5k
U2VjdGlvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lIikpOwogICAgIHZhciBjaGVj
a2JveCA9IHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkxpbWl0IG51bWJlciBvZiBjYXB0dXJlZCBKUyBzdGFjayBmcmFtZXMiKSwgV2ViSW5zcGVjdG9y
LnNldHRpbmdzLnRpbWVsaW5lTGltaXRTdGFja0ZyYW1lc0ZsYWcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDViMGMxMzY4Nzk0ZTNiZmMy
OTM2ZmJlZjE1NmMyOWUwYjMwOTZhOGQuLjQ4YzliZTIzNDc3YTEyYWFkMzcxNDVhMTQ0ZDU5NWE3
NThhMWNmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMKQEAgLTEyMiw3ICsxMjIsNiBAQAogICAgIDxmaWxlPk5hdGl2ZUJyZWFrcG9pbnRzU2lk
ZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+TmF0aXZlSGVhcFNuYXBzaG90LmpzPC9maWxl
PgogICAgIDxmaWxlPk5hdGl2ZU1lbW9yeUdyYXBoLmpzPC9maWxlPgotICAgIDxmaWxlPk5hdGl2
ZU1lbW9yeVNuYXBzaG90Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5OYXZpZ2F0b3JPdmVybGF5
Q29udHJvbGxlci5qczwvZmlsZT4KICAgICA8ZmlsZT5OYXZpZ2F0b3JWaWV3LmpzPC9maWxlPgog
ICAgIDxmaWxlPk5ldHdvcmtJdGVtVmlldy5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBjZjI4OGNlNjM0YTAwMjgx
ZDFmMjNhYWI1YjUzNGYzZDRjYzFmZDE3Li41YjQyZjljOWU4NDMwYTRlMWY5MGU4MDViNjM4Y2Q0
NDNlNmI3OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuY3NzCkBAIC01NDYsMjIgKzU0Niw2IEBAIGJvZHkuZG9jay10by1ib3R0b20gLnRv
b2xiYXItaXRlbS5jYW52YXMtcHJvZmlsZXIgLnRvb2xiYXItaWNvbiB7CiAgICAgYmFja2dyb3Vu
ZC1wb3NpdGlvbi14OiAtMTIwcHg7CiB9CiAKLS50b29sYmFyLWl0ZW0ubWVtb3J5LWNoYXJ0LXBy
b2ZpbGVyIC50b29sYmFyLWljb24gewotICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogLTE2MHB4
OwotfQotCi1ib2R5LmRvY2stdG8tYm90dG9tIC50b29sYmFyLWl0ZW0ubWVtb3J5LWNoYXJ0LXBy
b2ZpbGVyIC50b29sYmFyLWljb24gewotICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogLTEyMHB4
OwotfQotCi0udG9vbGJhci1pdGVtLm1lbW9yeS1zbmFwc2hvdC1wcm9maWxlciAudG9vbGJhci1p
Y29uIHsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0xNjBweDsKLX0KLQotYm9keS5kb2Nr
LXRvLWJvdHRvbSAudG9vbGJhci1pdGVtLm1lbW9yeS1zbmFwc2hvdC1wcm9maWxlciAudG9vbGJh
ci1pY29uIHsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0xMjBweDsKLX0KLQogLnRvb2xi
YXItaXRlbS5hdWRpdHMgLnRvb2xiYXItaWNvbiB7CiAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi14
OiAtMTkycHg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCmluZGV4IDU2OTQ3YWM0NjVlZjgxZDE3MTFiY2VkODg3NmExZDM5MWEzYWRjMTUu
LjkyZjBkNjMwYmI3NmIwN2NkMDFkNWMwMmFkYzJhYTYwMWY3NmM1ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC01NiwxMCArNTYs
NiBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewogICAgICAgICAgICAgICAgIGFsbFByb2ZpbGVycy5w
dXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJoZWFwLXByb2ZpbGVyIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJIZWFwIFByb2ZpbGVyIiksICJIZWFwUHJvZmlsZXJQYW5lbCIs
ICJQcm9maWxlc1BhbmVsLmpzIikpOwogICAgICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuV29y
a2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkgJiYgV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRz
U2V0dGluZ3MuY2FudmFzSW5zcGVjdGlvbi5pc0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICBh
bGxQcm9maWxlcnMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiY2FudmFz
LXByb2ZpbGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYW52YXMgUHJvZmlsZXIiKSwgIkNh
bnZhc1Byb2ZpbGVyUGFuZWwiLCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKLSAgICAgICAgICAgIGlm
ICghV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIuaXNXb3JrZXJGcm9udGVuZCgpICYmIFdlYklu
c3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLm5hdGl2ZU1lbW9yeVNuYXBzaG90cy5pc0VuYWJs
ZWQoKSkgewotICAgICAgICAgICAgICAgIGFsbFByb2ZpbGVycy5wdXNoKG5ldyBXZWJJbnNwZWN0
b3IuUGFuZWxEZXNjcmlwdG9yKCJtZW1vcnktY2hhcnQtcHJvZmlsZXIiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIk1lbW9yeSBEaXN0cmlidXRpb24iKSwgIk1lbW9yeUNoYXJ0UHJvZmlsZXJQYW5l
bCIsICJQcm9maWxlc1BhbmVsLmpzIikpOwotICAgICAgICAgICAgICAgIGFsbFByb2ZpbGVycy5w
dXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJtZW1vcnktc25hcHNob3QtcHJv
ZmlsZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1lbW9yeSBTbmFwc2hvdHMiKSwgIk5hdGl2
ZU1lbW9yeVByb2ZpbGVyUGFuZWwiLCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKLSAgICAgICAgICAg
IH0KICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYmluZChhbGxEZXNjcmlwdG9y
cywgYWxsRGVzY3JpcHRvcnMuaW5kZXhPZihwcm9maWxlcyksIDEpLmFwcGx5KG51bGwsIGFsbFBy
b2ZpbGVycyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9uYXRpdmVNZW1vcnlQcm9maWxlci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL25hdGl2ZU1lbW9yeVByb2ZpbGVyLmNzcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZWIyZWU0NWJkYjI5NDJkMjIyNGE1YmQ2YmFjZDJlNTFkZmNmZWY4
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25hdGl2ZU1lbW9yeVByb2ZpbGVyLmNzcworKysg
L2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLm1lbW9yeS1waWUtY2hhcnQtY29udGFpbmVyIHsK
LSAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7Ci0gICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjog
Y29sdW1uOwotfQotCi0ubWVtb3J5LXBpZS1jaGFydCB7Ci0gICAgLXdlYmtpdC1mbGV4OiAxOwot
fQotCi0ubWVtb3J5LWJsb2Nrcy1saXN0IC5zd2F0Y2ggewotICAgIGJhY2tncm91bmQtaW1hZ2U6
IG5vbmU7Ci19Ci0KLS5tZW1vcnktYmxvY2tzLWxpc3QgewotICAgIHBhZGRpbmc6IDFweDsKLSAg
ICBmb250LXNpemU6IDExcHg7Ci19Ci0KLS5tZW1vcnktYmxvY2tzLWxpc3QgLml0ZW0gewotICAg
IG1hcmdpbjogMTBweDsKLX0KLQotLm5hdGl2ZS1zbmFwc2hvdC12aWV3IHsKLSAgICBkaXNwbGF5
OiBub25lOwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwot
ICAgIHRvcDogMDsKLSAgICBsZWZ0OiAwOwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTogMDsK
LX0KLQotLm5hdGl2ZS1zbmFwc2hvdC12aWV3LnZpc2libGUgewotICAgIGRpc3BsYXk6IGJsb2Nr
OwotfQotCi0ubmF0aXZlLXNuYXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB7Ci0gICAgcG9zaXRpb246
IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBsZWZ0OiAwOwotICAgIHJpZ2h0OiAwOwotICAg
IGJvdHRvbTogMDsKLSAgICBib3JkZXI6IG5vbmU7Ci19Ci0KLS5uYXRpdmUtc25hcHNob3Qtdmll
dyAuZGF0YS1ncmlkIHRkIHsKLSAgICBoZWlnaHQ6IDE0cHg7Ci0gICAgcGFkZGluZzogMXB4IDRw
eDsKLX0KLQotLm5hdGl2ZS1zbmFwc2hvdC12aWV3IC5kYXRhLWdyaWQgZGl2LnNpemUtdGV4dCB7
Ci0gICAgZmxvYXQ6IGxlZnQ7Ci0gICAgdGV4dC1hbGlnbjogcmlnaHQ7Ci0gICAgd2lkdGg6IDcw
cHg7Ci0gICAgcGFkZGluZy1yaWdodDogNXB4OwotfQotCi0ubmF0aXZlLXNuYXBzaG90LXZpZXcg
LmRhdGEtZ3JpZCAuZGltbWVkIGRpdi5zaXplLWJhciB7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTog
LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShoc2xh
KDAsIDEwMCUsIDEwMCUsIDAuNykpLCB0byhoc2xhKDAsIDEwMCUsIDEwMCUsIDAuNSkpKTsKLSAg
ICBjb2xvcjogaHNsYSgwLCAwJSwgMCUsIDAuNSk7Ci19Ci0KLS5uYXRpdmUtc25hcHNob3Qtdmll
dyAuZGF0YS1ncmlkIGRpdi5zaXplLWJhciB7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAg
IGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVm
dCBib3R0b20sIGZyb20ocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpKSwgdG8ocmdiYSgxOTIsIDE5
MiwgMTkyLCAwKSkpOwotICAgIGhlaWdodDogMTRweDsKLSAgICBib3JkZXItcmFkaXVzOiAycHg7
Ci0gICAgY29sb3I6IGJsYWNrOwotICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7Ci0gICAgbWluLXdp
ZHRoOiAxcHg7Ci19Ci0KLS5uYXRpdmUtc25hcHNob3QtdmlldyAuZGF0YS1ncmlkIGRpdi5wZXJj
ZW50LXRleHQgewotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLX0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201172</attachid>
            <date>2013-05-09 01:36:20 -0700</date>
            <delta_ts>2013-05-09 11:20:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115850-20130509173523.patch</filename>
            <type>text/plain</type>
            <size>38235</size>
            <attacher name="Seokju Kwon">seokju</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTYzZWRhNTZjYmVjODVi
YzI0NWY2MWZjMGIzNGJlMTE0NzFjNWM3OS4uNTZhN2E1MWVjMmU0Mzg4NTZjMjI0MzMzYTgyN2Y0
ZjFlNGU5Y2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTA1LTA5ICBTZW9r
anUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBSZW1vdmUgTWVtb3J5IERpc3RyaWJ1dGlvbiBhbmQgTWVtb3J5IFNuYXBzaG90cyBQYW5lbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTg1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQg
dGhlIE1lbW9yeSBJbnN0cnVtZW50YXRpb24gQ29kZSBhZnRlciByMTQ4OTIxLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaW5zcGVjdG9y
L2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0
aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHBl
cmltZW50c1NldHRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdz
U2NyZWVuLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuX3Bh
bmVsRGVzY3JpcHRvcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvbmF0aXZlTWVt
b3J5UHJvZmlsZXIuY3NzOiBSZW1vdmVkLgorCiAyMDEzLTA1LTA4ICBSb2IgQnVpcyAgPHJidWlz
QHJpbS5jb20+CiAKICAgICAgICAgRml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MgKG1pc2NlbGxh
bmVvdXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkK
aW5kZXggZmVjYWVhNGU4MDQ4YmM3NmYyMjIwNjFmOWM0Nzc1MTZjNDdlYTAzMy4uNzc3OWI0ZTIy
ZWJiMjc3N2UzMzQxOGViNTI1MmE0MTM3MThlN2MwZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtMzUxLDcgKzM1MSw2IEBAIG1vZHVsZXMg
PSBbCiAgICAgICAgICAgICAiSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIsCiAgICAg
ICAgICAgICAiSlNIZWFwU25hcHNob3QuanMiLAogICAgICAgICAgICAgIk5hdGl2ZUhlYXBTbmFw
c2hvdC5qcyIsCi0gICAgICAgICAgICAiTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzIiwKICAg
ICAgICAgICAgICJQcm9maWxlRGF0YUdyaWRUcmVlLmpzIiwKICAgICAgICAgICAgICJQcm9maWxl
c1BhbmVsLmpzIiwKICAgICAgICAgICAgICJQcm9maWxlc1BhbmVsRGVzY3JpcHRvci5qcyIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9y
eVNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0
aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
ODVhYzFlOTc2MDM0NjQzYWMzZDhkNzAwMjUzMzNjMmVjOGFhYzMwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCisrKyAvZGV2L251bGwKQEAgLTEs
NzEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5WaWV3fQotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZUhlYWRl
cn0gcHJvZmlsZQotICovCi1XZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3ID0g
ZnVuY3Rpb24ocHJvZmlsZSkKLXsKLSAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwot
ICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZENTUygibmF0aXZlTWVtb3J5UHJvZmlsZXIuY3NzIik7
Ci0KLSAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygibmF0aXZlLXNuYXBzaG90LXZpZXci
KTsKLSAgICB0aGlzLl9jb250YWlubWVudERhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5OYXRp
dmVTbmFwc2hvdERhdGFHcmlkKHByb2ZpbGUpOwotICAgIHRoaXMuX2NvbnRhaW5tZW50RGF0YUdy
aWQuc2hvdyh0aGlzLmVsZW1lbnQpOwotfQotCi1XZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5U25h
cHNob3RWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5WaWV3
LnByb3RvdHlwZQotfQotCi0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLkRhdGFHcmlkfQotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5
UHJvZmlsZUhlYWRlcn0gcHJvZmlsZQotICovCi1XZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RE
YXRhR3JpZCA9IGZ1bmN0aW9uKHByb2ZpbGUpCi17Ci0gICAgdmFyIGNvbHVtbnMgPSBbCi0gICAg
ICAgIHtpZDogIm5hbWUiLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPYmplY3QiKSwg
d2lkdGg6ICIyMDBweCIsIGRpc2Nsb3N1cmU6IHRydWUsIHNvcnRhYmxlOiB0cnVlfSwKLSAgICAg
ICAge2lkOiAic2l6ZSIsIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNpemUiKSwgc29y
dGFibGU6IHRydWUsIHNvcnQ6IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5PcmRlci5EZXNjZW5kaW5n
fSwKLSAgICBdOwotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMp
OwotICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxlOwotICAgIHRoaXMuX3RvdGFsTm9kZSA9IG5l
dyBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3ROb2RlKHByb2ZpbGUuX21lbW9yeUJsb2NrLCBw
cm9maWxlKTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dOYXRpdmVTbmFwc2hv
dFVuaW5zdHJ1bWVudGVkU2l6ZS5nZXQoKSkgewotICAgICAgICB0aGlzLnNldFJvb3ROb2RlKG5l
dyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKG51bGwsIHRydWUpKTsKLSAgICAgICAgdGhpcy5y
b290Tm9kZSgpLmFwcGVuZENoaWxkKHRoaXMuX3RvdGFsTm9kZSkKLSAgICAgICAgdGhpcy5fdG90
YWxOb2RlLmV4cGFuZCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMuc2V0Um9vdE5vZGUo
dGhpcy5fdG90YWxOb2RlKTsKLSAgICAgICAgdGhpcy5fdG90YWxOb2RlLnBvcHVsYXRlKCk7Ci0g
ICAgfQotICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnRzLlNvcnRpbmdDaGFuZ2VkLCB0aGlzLnNvcnRpbmdDaGFuZ2VkLmJpbmQodGhpcyksIHRoaXMp
OwotfQotCi1XZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3REYXRhR3JpZC5wcm90b3R5cGUgPSB7
Ci0gICAgc29ydGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBleHBh
bmRlZE5vZGVzID0ge307Ci0gICAgICAgIHRoaXMuX3RvdGFsTm9kZS5fc3RvcmVTdGF0ZShleHBh
bmRlZE5vZGVzKTsKLSAgICAgICAgdGhpcy5fdG90YWxOb2RlLnJlbW92ZUNoaWxkcmVuKCk7Ci0g
ICAgICAgIHRoaXMuX3RvdGFsTm9kZS5wb3B1bGF0ZSgpOwotICAgICAgICB0aGlzLl90b3RhbE5v
ZGUuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0gICAgICAgIHRoaXMuX3RvdGFsTm9k
ZS5fcmVzdG9yZVN0YXRlKGV4cGFuZGVkTm9kZXMpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBAcGFyYW0ge01lbW9yeUFnZW50Lk1lbW9yeUJsb2NrfSBub2RlQQotICAgICAqIEBwYXJhbSB7
TWVtb3J5QWdlbnQuTWVtb3J5QmxvY2t9IG5vZGVCCi0gICAgICovCi0gICAgX3NvcnRpbmdGdW5j
dGlvbjogZnVuY3Rpb24obm9kZUEsIG5vZGVCKQotICAgIHsKLSAgICAgICAgdmFyIHNvcnRDb2x1
bW5JZGVudGlmaWVyID0gdGhpcy5zb3J0Q29sdW1uSWRlbnRpZmllcigpOwotICAgICAgICB2YXIg
c29ydEFzY2VuZGluZyA9IHRoaXMuaXNTb3J0T3JkZXJBc2NlbmRpbmcoKTsKLSAgICAgICAgdmFy
IGZpZWxkMSA9IG5vZGVBW3NvcnRDb2x1bW5JZGVudGlmaWVyXTsKLSAgICAgICAgdmFyIGZpZWxk
MiA9IG5vZGVCW3NvcnRDb2x1bW5JZGVudGlmaWVyXTsKLSAgICAgICAgdmFyIHJlc3VsdCA9IGZp
ZWxkMSA8IGZpZWxkMiA/IC0xIDogKGZpZWxkMSA+IGZpZWxkMiA/IDEgOiAwKTsKLSAgICAgICAg
aWYgKCFzb3J0QXNjZW5kaW5nKQotICAgICAgICAgICAgcmVzdWx0ID0gLXJlc3VsdDsKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlCi19Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZX0KLSAqIEBwYXJhbSB7TWVtb3J5QWdlbnQuTWVt
b3J5QmxvY2t9IG5vZGVEYXRhCi0gKi8KLVdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdE5vZGUg
PSBmdW5jdGlvbihub2RlRGF0YSwgcHJvZmlsZSkKLXsKLSAgICB0aGlzLl9ub2RlRGF0YSA9IG5v
ZGVEYXRhOwotICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxlOwotICAgIHZhciB2aWV3UHJvcGVy
dGllcyA9IFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVzLl9mb3JNZW1vcnlC
bG9jayhub2RlRGF0YSk7Ci0gICAgdmFyIGRhdGEgPSB7IG5hbWU6IHZpZXdQcm9wZXJ0aWVzLl9k
ZXNjcmlwdGlvbiwgc2l6ZTogdGhpcy5fbm9kZURhdGEuc2l6ZSB9OwotICAgIHZhciBoYXNDaGls
ZHJlbiA9IHRoaXMuX2FkZENoaWxkcmVuRnJvbUdyYXBoKCk7Ci0gICAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZS5jYWxsKHRoaXMsIGRhdGEsIGhhc0NoaWxkcmVuKTsKLX0KLQotV2ViSW5zcGVj
dG9yLk5hdGl2ZVNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQG92
ZXJyaWRlCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbHVtbklkZW50aWZpZXIKLSAgICAgKiBA
cmV0dXJuIHtFbGVtZW50fQotICAgICAqLwotICAgIGNyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbHVt
bklkZW50aWZpZXIpCi0gICAgewotICAgICAgICB2YXIgY2VsbCA9IGNvbHVtbklkZW50aWZpZXIg
PT09ICJzaXplIiA/Ci0gICAgICAgICAgICB0aGlzLl9jcmVhdGVTaXplQ2VsbChjb2x1bW5JZGVu
dGlmaWVyKSA6Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5jcmVhdGVDZWxsLmNhbGwodGhpcywgY29sdW1uSWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVy
biBjZWxsOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge09iamVjdH0gZXhwYW5k
ZWROb2RlcwotICAgICAqLwotICAgIF9zdG9yZVN0YXRlOiBmdW5jdGlvbihleHBhbmRlZE5vZGVz
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBleHBhbmRlZE5vZGVzW3RoaXMudWlkKCldID0gdHJ1ZTsKLSAgICAgICAgZm9y
ICh2YXIgaSBpbiB0aGlzLmNoaWxkcmVuKQotICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpXS5f
c3RvcmVTdGF0ZShleHBhbmRlZE5vZGVzKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBh
cmFtIHtPYmplY3R9IGV4cGFuZGVkTm9kZXMKLSAgICAgKi8KLSAgICBfcmVzdG9yZVN0YXRlOiBm
dW5jdGlvbihleHBhbmRlZE5vZGVzKQotICAgIHsKLSAgICAgICAgaWYgKCFleHBhbmRlZE5vZGVz
W3RoaXMudWlkKCldKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLmV4cGFuZCgp
OwotICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMuY2hpbGRyZW4pCi0gICAgICAgICAgICB0aGlz
LmNoaWxkcmVuW2ldLl9yZXN0b3JlU3RhdGUoZXhwYW5kZWROb2Rlcyk7Ci0gICAgfSwKLQotICAg
IC8qKgotICAgICAqIEByZXR1cm4ge3N0cmluZ30KLSAgICAgKi8KLSAgICB1aWQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fdWlkKQotICAgICAgICAgICAgdGhpcy5fdWlk
ID0gKCF0aGlzLnBhcmVudCB8fCAhdGhpcy5wYXJlbnQudWlkID8gIiIgOiB0aGlzLnBhcmVudC51
aWQoKSB8fCAiIikgKyAiLyIgKyB0aGlzLl9ub2RlRGF0YS5uYW1lOwotICAgICAgICByZXR1cm4g
dGhpcy5fdWlkOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29s
dW1uSWRlbnRpZmllcgotICAgICAqIEByZXR1cm4ge0VsZW1lbnR9Ci0gICAgICovCi0gICAgX2Ny
ZWF0ZVNpemVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQotICAgIHsKLSAgICAgICAg
dmFyIG5vZGUgPSB0aGlzOwotICAgICAgICB2YXIgdmlld1Byb3BlcnRpZXMgPSBudWxsOwotICAg
ICAgICB2YXIgZGltbWVkID0gZmFsc2U7Ci0gICAgICAgIHdoaWxlICghdmlld1Byb3BlcnRpZXMg
fHwgdmlld1Byb3BlcnRpZXMuX2ZpbGxTdHlsZSA9PT0gImluaGVyaXQiKSB7Ci0gICAgICAgICAg
ICB2aWV3UHJvcGVydGllcyA9IFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVz
Ll9mb3JNZW1vcnlCbG9jayhub2RlLl9ub2RlRGF0YSk7Ci0gICAgICAgICAgICBpZiAodmlld1By
b3BlcnRpZXMuX2ZpbGxTdHlsZSA9PT0gImluaGVyaXQiKQotICAgICAgICAgICAgICAgIGRpbW1l
ZCA9IHRydWU7Ci0gICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2YXIgc2l6ZUtCID0gdGhpcy5fbm9kZURhdGEuc2l6ZSAvIDEwMjQ7Ci0gICAgICAg
IHZhciB0b3RhbFNpemUgPSB0aGlzLl9wcm9maWxlLl9tZW1vcnlCbG9jay5zaXplOwotICAgICAg
ICB2YXIgcGVyY2VudGFnZSA9IHRoaXMuX25vZGVEYXRhLnNpemUgLyB0b3RhbFNpemUgICogMTAw
OwotCi0gICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAg
ICAgICAgY2VsbC5jbGFzc05hbWUgPSBjb2x1bW5JZGVudGlmaWVyICsgIi1jb2x1bW4iOwotCi0g
ICAgICAgIHZhciB0ZXh0RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
ICAgIHRleHREaXYudGV4dENvbnRlbnQgPSBOdW1iZXIud2l0aFRob3VzYW5kc1NlcGFyYXRvcihz
aXplS0IudG9GaXhlZCgwKSkgKyAiXHUyMDA5IiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygiS0Ii
KTsKLSAgICAgICAgdGV4dERpdi5jbGFzc05hbWUgPSAic2l6ZS10ZXh0IjsKLSAgICAgICAgY2Vs
bC5hcHBlbmRDaGlsZCh0ZXh0RGl2KTsKLQotICAgICAgICB2YXIgYmFyRGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGJhckRpdi5jbGFzc05hbWUgPSAic2l6ZS1i
YXIiOwotICAgICAgICBiYXJEaXYuc3R5bGUud2lkdGggPSBwZXJjZW50YWdlICsgIiUiOwotICAg
ICAgICBiYXJEaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdmlld1Byb3BlcnRpZXMuX2ZpbGxT
dHlsZTsKLSAgICAgICAgLy8gZmlsbGVyRGl2IGRpc3BsYWNlcyBwZXJjZW50YWdlIHRleHQgb3V0
IG9mIHRoZSBiYXIgdmlzaWJsZSBhcmVhIGlmIGl0IGRvZXNuJ3QgZml0LgotICAgICAgICB2YXIg
ZmlsbGVyRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGZpbGxl
ckRpdi5jbGFzc05hbWUgPSAicGVyY2VudC10ZXh0IgotICAgICAgICBiYXJEaXYuYXBwZW5kQ2hp
bGQoZmlsbGVyRGl2KTsKLSAgICAgICAgdmFyIHBlcmNlbnREaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICAgICAgcGVyY2VudERpdi50ZXh0Q29udGVudCA9IHBlcmNlbnRh
Z2UudG9GaXhlZCgxKSArICIlIjsKLSAgICAgICAgcGVyY2VudERpdi5jbGFzc05hbWUgPSAicGVy
Y2VudC10ZXh0IgotICAgICAgICBiYXJEaXYuYXBwZW5kQ2hpbGQocGVyY2VudERpdik7Ci0KLSAg
ICAgICAgdmFyIGJhckhvbGRlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgICAgICBpZiAoZGltbWVkKQotICAgICAgICAgICAgYmFySG9sZGVyRGl2LmNsYXNzTmFtZSA9
ICJkaW1tZWQiOwotICAgICAgICBiYXJIb2xkZXJEaXYuYXBwZW5kQ2hpbGQoYmFyRGl2KTsKLSAg
ICAgICAgY2VsbC5hcHBlbmRDaGlsZChiYXJIb2xkZXJEaXYpOwotCi0gICAgICAgIHJldHVybiBj
ZWxsOwotICAgIH0sCi0KLSAgICBwb3B1bGF0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh0
aGlzLl9wb3B1bGF0ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX3BvcHVs
YXRlZCA9IHRydWU7Ci0gICAgICAgIGlmICh0aGlzLl9ub2RlRGF0YS5jaGlsZHJlbikKLSAgICAg
ICAgICAgIHRoaXMuX2FkZENoaWxkcmVuKCk7Ci0gICAgfSwKLQotICAgIF9hZGRDaGlsZHJlbjog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fbm9kZURhdGEuY2hpbGRyZW4uc29ydCh0
aGlzLmRhdGFHcmlkLl9zb3J0aW5nRnVuY3Rpb24uYmluZCh0aGlzLmRhdGFHcmlkKSk7Ci0KLSAg
ICAgICAgZm9yICh2YXIgbm9kZSBpbiB0aGlzLl9ub2RlRGF0YS5jaGlsZHJlbikgewotICAgICAg
ICAgICAgdmFyIG5vZGVEYXRhID0gdGhpcy5fbm9kZURhdGEuY2hpbGRyZW5bbm9kZV07Ci0gICAg
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dOYXRpdmVTbmFwc2hvdFVuaW5z
dHJ1bWVudGVkU2l6ZS5nZXQoKSB8fCBub2RlRGF0YS5uYW1lICE9PSAiT3RoZXIiKQotICAgICAg
ICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hv
dE5vZGUobm9kZURhdGEsIHRoaXMuX3Byb2ZpbGUpKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAg
ICBfYWRkQ2hpbGRyZW5Gcm9tR3JhcGg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBt
ZW1vcnlCbG9jayA9IHRoaXMuX25vZGVEYXRhOwotICAgICAgICBpZiAobWVtb3J5QmxvY2suY2hp
bGRyZW4pCi0gICAgICAgICAgICAgcmV0dXJuIG1lbW9yeUJsb2NrLmNoaWxkcmVuLmxlbmd0aCA+
IDA7Ci0gICAgICAgIGlmIChtZW1vcnlCbG9jay5uYW1lID09PSAiSW1hZ2UiKSB7Ci0gICAgICAg
ICAgICB0aGlzLl9hZGRJbWFnZURldGFpbHMoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgX2FkZEltYWdl
RGV0YWlsczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBTbmFwc2hvdFByb3h5fSBwcm94eQotICAgICAgICAg
Ki8KLSAgICAgICAgZnVuY3Rpb24gZGlkTG9hZChwcm94eSkKLSAgICAgICAgewotICAgICAgICAg
ICAgZnVuY3Rpb24gZGlkUmVjZWl2ZUltYWdlcyhyZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fbm9kZURhdGEuY2hpbGRyZW4gPSByZXN1bHQ7Ci0gICAgICAgICAg
ICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZENo
aWxkcmVuKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm94eS5pbWFnZXMoZGlkUmVj
ZWl2ZUltYWdlcy5iaW5kKHRoaXMpKTsKLQotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3Byb2Zp
bGUubG9hZChkaWRMb2FkLmJpbmQodGhpcykpOwotICAgIH0sCi0KLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlCi19Ci0KLQotLyoqCi0gKiBAY29uc3Ry
dWN0b3IKLSAqIEBpbXBsZW1lbnRzIHtNZW1vcnlBZ2VudC5EaXNwYXRjaGVyfQotICovCi1XZWJJ
bnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyID0gZnVuY3Rpb24oKQotewotICAgIEluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJNZW1vcnlEaXNwYXRjaGVyKHRoaXMpOwotICAgIHRoaXMuX2N1
cnJlbnRQcm9maWxlSGVhZGVyID0gbnVsbDsKLX0KLQotV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50
RGlzcGF0Y2hlci5pbnN0YW5jZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAoIVdlYkluc3BlY3Rv
ci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuX2luc3RhbmNlKQotICAgICAgICBXZWJJbnNwZWN0b3Iu
TWVtb3J5QWdlbnREaXNwYXRjaGVyLl9pbnN0YW5jZSA9IG5ldyBXZWJJbnNwZWN0b3IuTWVtb3J5
QWdlbnREaXNwYXRjaGVyKCk7Ci0gICAgcmV0dXJuIFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERp
c3BhdGNoZXIuX2luc3RhbmNlOwotfQotCi1XZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRj
aGVyLnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAb3ZlcnJpZGUKLSAgICAgKiBAcGFy
YW0ge01lbW9yeUFnZW50LkhlYXBTbmFwc2hvdENodW5rfSBjaHVuawotICAgICAqLwotICAgIGFk
ZE5hdGl2ZVNuYXBzaG90Q2h1bms6IGZ1bmN0aW9uKGNodW5rKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX2N1cnJlbnRQcm9maWxlSGVhZGVyKQotICAgICAgICAgICAgdGhpcy5fY3VycmVudFBy
b2ZpbGVIZWFkZXIuYWRkTmF0aXZlU25hcHNob3RDaHVuayhjaHVuayk7Ci0gICAgfSwKLQotICAg
IF9vblJlbW92ZVByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAg
aWYgKGV2ZW50LmRhdGEgPT09IHRoaXMuX2N1cnJlbnRQcm9maWxlSGVhZGVyKQotICAgICAgICAg
ICAgdGhpcy5fY3VycmVudFByb2ZpbGVIZWFkZXIgPSBudWxsOwotICAgIH0KLX07Ci0KLQotLyoq
Ci0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGV9
Ci0gKiBAcGFyYW0ge3N0cmluZ30gaWQKLSAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCi0gKi8KLVdl
Ykluc3BlY3Rvci5OYXRpdmVQcm9maWxlVHlwZUJhc2UgPSBmdW5jdGlvbihwcm9maWxlSGVhZGVy
Q29uc3RydWN0b3IsIGlkLCBuYW1lKQotewotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5j
YWxsKHRoaXMsIGlkLCBuYW1lKTsKLSAgICB0aGlzLl9wcm9maWxlSGVhZGVyQ29uc3RydWN0b3Ig
PSBwcm9maWxlSGVhZGVyQ29uc3RydWN0b3I7Ci0gICAgdGhpcy5fbmV4dFByb2ZpbGVVaWQgPSAx
OwotICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuRXZl
bnRzLlJlbW92ZVByb2ZpbGVIZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIucHJvdG90eXBlLl9vblJlbW92ZVByb2ZpbGVI
ZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5NZW1vcnlBZ2Vu
dERpc3BhdGNoZXIuaW5zdGFuY2UoKSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5OYXRpdmVQcm9maWxl
VHlwZUJhc2UucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBvdmVycmlkZQotICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgaXNJbnN0YW50UHJvZmlsZTogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIC8qKgotICAg
ICAqIEBvdmVycmlkZQotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgYnV0
dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5N
ZW1vcnlBZ2VudERpc3BhdGNoZXIuaW5zdGFuY2UoKS5fY3VycmVudFByb2ZpbGVIZWFkZXIpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIHByb2ZpbGVIZWFkZXIgPSBu
ZXcgdGhpcy5fcHJvZmlsZUhlYWRlckNvbnN0cnVjdG9yKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU25hcHNob3QgJWQiLCB0aGlzLl9uZXh0UHJvZmlsZVVpZCksIHRoaXMuX25leHRQcm9m
aWxlVWlkKTsKLSAgICAgICAgKyt0aGlzLl9uZXh0UHJvZmlsZVVpZDsKLSAgICAgICAgcHJvZmls
ZUhlYWRlci5pc1RlbXBvcmFyeSA9IHRydWU7Ci0gICAgICAgIHRoaXMuYWRkUHJvZmlsZShwcm9m
aWxlSGVhZGVyKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlci5p
bnN0YW5jZSgpLl9jdXJyZW50UHJvZmlsZUhlYWRlciA9IHByb2ZpbGVIZWFkZXI7Ci0gICAgICAg
IHByb2ZpbGVIZWFkZXIubG9hZChmdW5jdGlvbigpIHsgfSk7Ci0KLQotICAgICAgICAvKioKLSAg
ICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSBlcnJvcgotICAgICAgICAgKiBAcGFyYW0gez9NZW1v
cnlBZ2VudC5NZW1vcnlCbG9ja30gbWVtb3J5QmxvY2sKLSAgICAgICAgICogQHBhcmFtIHtPYmpl
Y3Q9fSBncmFwaE1ldGFJbmZvcm1hdGlvbgotICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24g
ZGlkUmVjZWl2ZU1lbW9yeVNuYXBzaG90KGVycm9yLCBtZW1vcnlCbG9jaywgZ3JhcGhNZXRhSW5m
b3JtYXRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMgPT09
IFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuaW5zdGFuY2UoKS5fY3VycmVudFBy
b2ZpbGVIZWFkZXIpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0
Y2hlci5pbnN0YW5jZSgpLl9jdXJyZW50UHJvZmlsZUhlYWRlciA9IG51bGw7Ci0gICAgICAgICAg
ICB0aGlzLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QoZXJyb3IsIG1lbW9yeUJsb2NrLCBncmFw
aE1ldGFJbmZvcm1hdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgTWVtb3J5QWdlbnQuZ2V0UHJv
Y2Vzc01lbW9yeURpc3RyaWJ1dGlvbih0cnVlLCBkaWRSZWNlaXZlTWVtb3J5U25hcHNob3QuYmlu
ZChwcm9maWxlSGVhZGVyKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAg
LyoqCi0gICAgICogQG92ZXJyaWRlCi0gICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlByb2Zp
bGVIZWFkZXJ9IHByb2ZpbGUKLSAgICAgKi8KLSAgICByZW1vdmVQcm9maWxlOiBmdW5jdGlvbihw
cm9maWxlKQotICAgIHsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3Bh
dGNoZXIuaW5zdGFuY2UoKS5fY3VycmVudFByb2ZpbGVIZWFkZXIgPT09IHByb2ZpbGUpCi0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyLmluc3RhbmNlKCkuX2N1
cnJlbnRQcm9maWxlSGVhZGVyID0gbnVsbDsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVU
eXBlLnByb3RvdHlwZS5yZW1vdmVQcm9maWxlLmNhbGwodGhpcywgcHJvZmlsZSk7Ci0gICAgfSwK
LQotICAgIC8qKgotICAgICAqIEBvdmVycmlkZQotICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gdGl0
bGUKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KLSAgICAgKi8K
LSAgICBjcmVhdGVUZW1wb3JhcnlQcm9maWxlOiBmdW5jdGlvbih0aXRsZSkKLSAgICB7Ci0gICAg
ICAgIHRpdGxlID0gdGl0bGUgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdHRpbmdc
dTIwMjYiKTsKLSAgICAgICAgcmV0dXJuIG5ldyB0aGlzLl9wcm9maWxlSGVhZGVyQ29uc3RydWN0
b3IodGhpcywgdGl0bGUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAb3ZlcnJpZGUKLSAg
ICAgKiBAcGFyYW0ge1Byb2ZpbGVyQWdlbnQuUHJvZmlsZUhlYWRlcn0gcHJvZmlsZQotICAgICAq
IEByZXR1cm4ge1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyfQotICAgICAqLwotICAgIGNyZWF0
ZVByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IHRo
aXMuX3Byb2ZpbGVIZWFkZXJDb25zdHJ1Y3Rvcih0aGlzLCBwcm9maWxlLnRpdGxlLCAtMSk7Ci0g
ICAgfSwKLQotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnByb3RvdHlw
ZQotfQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5O
YXRpdmVQcm9maWxlVHlwZUJhc2V9Ci0gKi8KLVdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFBy
b2ZpbGVUeXBlID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5OYXRpdmVQcm9maWxl
VHlwZUJhc2UuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVh
ZGVyLCAgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlRha2UgTmF0aXZlIEhlYXAgU25hcHNob3QiKSk7Ci19Ci0KLVdl
Ykluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCA9ICJOQVRJVkVfU05B
UFNIT1QiOwotCi1XZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZS5wcm90b3R5
cGUgPSB7Ci0gICAgZ2V0IGJ1dHRvblRvb2x0aXAoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQ2FwdHVyZSBuYXRpdmUgaGVhcCBncmFwaC4iKTsKLSAgICB9
LAotCi0gICAgZ2V0IHRyZWVJdGVtVGl0bGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiTkFUSVZFIFNOQVBTSE9UIik7Ci0gICAgfSwKLQotICAgIGdldCBk
ZXNjcmlwdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJOYXRpdmUgbWVtb3J5IHNuYXBzaG90IHByb2ZpbGVzIHNob3cgbmF0aXZlIGhlYXAgZ3JhcGgu
Iik7Ci0gICAgfSwKLQotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk5hdGl2ZVByb2ZpbGVU
eXBlQmFzZS5wcm90b3R5cGUKLX0KLQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVu
ZHMge1dlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlcn0KLSAqIEBwYXJhbSB7IVdlYkluc3Bl
Y3Rvci5Qcm9maWxlVHlwZX0gdHlwZQotICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlCi0gKiBAcGFy
YW0ge251bWJlcj19IHVpZAotICovCi1XZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxl
SGVhZGVyID0gZnVuY3Rpb24odHlwZSwgdGl0bGUsIHVpZCkKLXsKLSAgICBXZWJJbnNwZWN0b3Iu
SGVhcFByb2ZpbGVIZWFkZXIuY2FsbCh0aGlzLCB0eXBlLCB0aXRsZSwgdWlkLCAwKTsKLSAgICB0
aGlzLl9zdHJpbmdzID0gW107Ci0gICAgdGhpcy5fbm9kZXMgPSBbXTsKLSAgICB0aGlzLl9lZGdl
cyA9IFtdOwotICAgIHRoaXMuX2Jhc2VUb1JlYWxOb2RlSWQgPSBbXTsKLX0KLQotV2ViSW5zcGVj
dG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0g
ICAgICogQG92ZXJyaWRlCi0gICAgICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWx9IHByb2ZpbGVzUGFuZWwKLSAgICAgKi8KLSAgICBjcmVhdGVWaWV3OiBmdW5jdGlvbihwcm9m
aWxlc1BhbmVsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZl
SGVhcFNuYXBzaG90Vmlldyhwcm9maWxlc1BhbmVsLCB0aGlzKTsKLSAgICB9LAotCi0gICAgc3Rh
cnRTbmFwc2hvdFRyYW5zZmVyOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCi0KLSAgICBzbmFw
c2hvdENvbnN0cnVjdG9yTmFtZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJO
YXRpdmVIZWFwU25hcHNob3QiOwotICAgIH0sCi0KLSAgICBzbmFwc2hvdFByb3h5Q29uc3RydWN0
b3I6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuTmF0aXZl
SGVhcFNuYXBzaG90UHJveHk7Ci0gICAgfSwKLQotICAgIGFkZE5hdGl2ZVNuYXBzaG90Q2h1bms6
IGZ1bmN0aW9uKGNodW5rKQotICAgIHsKLSAgICAgICAgdGhpcy5fc3RyaW5ncyA9IHRoaXMuX3N0
cmluZ3MuY29uY2F0KGNodW5rLnN0cmluZ3MpOwotICAgICAgICB0aGlzLl9ub2RlcyA9IHRoaXMu
X25vZGVzLmNvbmNhdChjaHVuay5ub2Rlcyk7Ci0gICAgICAgIHRoaXMuX2VkZ2VzID0gdGhpcy5f
ZWRnZXMuY29uY2F0KGNodW5rLmVkZ2VzKTsKLSAgICAgICAgdGhpcy5fYmFzZVRvUmVhbE5vZGVJ
ZCA9IHRoaXMuX2Jhc2VUb1JlYWxOb2RlSWQuY29uY2F0KGNodW5rLmJhc2VUb1JlYWxOb2RlSWQp
OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0gez9zdHJpbmd9IGVycm9yCi0gICAg
ICogQHBhcmFtIHs/TWVtb3J5QWdlbnQuTWVtb3J5QmxvY2t9IG1lbW9yeUJsb2NrCi0gICAgICog
QHBhcmFtIHtPYmplY3Q9fSBncmFwaE1ldGFJbmZvcm1hdGlvbgotICAgICAqLwotICAgIF9kaWRS
ZWNlaXZlTWVtb3J5U25hcHNob3Q6IGZ1bmN0aW9uKGVycm9yLCBtZW1vcnlCbG9jaywgZ3JhcGhN
ZXRhSW5mb3JtYXRpb24pCi0gICAgewotICAgICAgICB2YXIgbWV0YUluZm9ybWF0aW9uID0gLyoq
IEB0eXBle0hlYXBTbmFwc2hvdE1ldGFpbmZvfSAqLyAoZ3JhcGhNZXRhSW5mb3JtYXRpb24pOwot
ICAgICAgICB0aGlzLmlzVGVtcG9yYXJ5ID0gZmFsc2U7Ci0KLSAgICAgICAgdmFyIGVkZ2VGaWVs
ZENvdW50ID0gbWV0YUluZm9ybWF0aW9uLmVkZ2VfZmllbGRzLmxlbmd0aDsKLSAgICAgICAgdmFy
IG5vZGVGaWVsZENvdW50ID0gbWV0YUluZm9ybWF0aW9uLm5vZGVfZmllbGRzLmxlbmd0aDsKLSAg
ICAgICAgdmFyIG5vZGVJZEZpZWxkT2Zmc2V0ID0gbWV0YUluZm9ybWF0aW9uLm5vZGVfZmllbGRz
LmluZGV4T2YoImlkIik7Ci0gICAgICAgIHZhciB0b05vZGVJZEZpZWxkT2Zmc2V0ID0gbWV0YUlu
Zm9ybWF0aW9uLmVkZ2VfZmllbGRzLmluZGV4T2YoInRvX25vZGUiKTsKLQotICAgICAgICB2YXIg
YmFzZVRvUmVhbE5vZGVJZE1hcCA9IHt9OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX2Jhc2VUb1JlYWxOb2RlSWQubGVuZ3RoOyBpICs9IDIpCi0gICAgICAgICAgICBiYXNlVG9S
ZWFsTm9kZUlkTWFwW3RoaXMuX2Jhc2VUb1JlYWxOb2RlSWRbaV1dID0gdGhpcy5fYmFzZVRvUmVh
bE5vZGVJZFtpICsgMV07Ci0KLSAgICAgICAgdmFyIG5vZGVJZDJOb2RlSW5kZXggPSB7fTsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IG5vZGVJZEZpZWxkT2Zmc2V0OyBpIDwgdGhpcy5fbm9kZXMubGVu
Z3RoOyBpICs9IG5vZGVGaWVsZENvdW50KQotICAgICAgICAgICAgbm9kZUlkMk5vZGVJbmRleFt0
aGlzLl9ub2Rlc1tpXV0gPSBpIC0gbm9kZUlkRmllbGRPZmZzZXQ7Ci0KLSAgICAgICAgLy8gVHJh
bnNsYXRlIG5vZGVJZCB0byBub2RlSW5kZXguCi0gICAgICAgIHZhciBlZGdlcyA9IHRoaXMuX2Vk
Z2VzOwotICAgICAgICBmb3IgKHZhciBpID0gdG9Ob2RlSWRGaWVsZE9mZnNldDsgaSA8IGVkZ2Vz
Lmxlbmd0aDsgaSArPSBlZGdlRmllbGRDb3VudCkgewotICAgICAgICAgICAgaWYgKGVkZ2VzW2ld
IGluIGJhc2VUb1JlYWxOb2RlSWRNYXApCi0gICAgICAgICAgICAgICAgZWRnZXNbaV0gPSBiYXNl
VG9SZWFsTm9kZUlkTWFwW2VkZ2VzW2ldXTsKLSAgICAgICAgICAgIGVkZ2VzW2ldID0gbm9kZUlk
Mk5vZGVJbmRleFtlZGdlc1tpXV07Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgaGVhcFNuYXBz
aG90ID0gewotICAgICAgICAgICAgInNuYXBzaG90IjogewotICAgICAgICAgICAgICAgICJtZXRh
IjogbWV0YUluZm9ybWF0aW9uLAotICAgICAgICAgICAgICAgIG5vZGVfY291bnQ6IHRoaXMuX25v
ZGVzLmxlbmd0aCAvIG5vZGVGaWVsZENvdW50LAotICAgICAgICAgICAgICAgIGVkZ2VfY291bnQ6
IHRoaXMuX2VkZ2VzLmxlbmd0aCAvIGVkZ2VGaWVsZENvdW50LAotICAgICAgICAgICAgICAgIHJv
b3RfaW5kZXg6IHRoaXMuX25vZGVzLmxlbmd0aCAtIG5vZGVGaWVsZENvdW50Ci0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgbm9kZXM6IHRoaXMuX25vZGVzLAotICAgICAgICAgICAgZWRnZXM6
IHRoaXMuX2VkZ2VzLAotICAgICAgICAgICAgc3RyaW5nczogdGhpcy5fc3RyaW5ncwotICAgICAg
ICB9OwotCi0gICAgICAgIHZhciBjaHVuayA9IEpTT04uc3RyaW5naWZ5KGhlYXBTbmFwc2hvdCk7
Ci0gICAgICAgIHRoaXMudHJhbnNmZXJDaHVuayhjaHVuayk7Ci0gICAgICAgIHRoaXMuZmluaXNo
SGVhcFNuYXBzaG90KCk7Ci0gICAgfSwKLQotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkhl
YXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZQotfQotCi0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0g
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXd9Ci0gKiBAcGFyYW0geyFX
ZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0gcGFyZW50Ci0gKiBAcGFyYW0geyFXZWJJbnNwZWN0
b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVhZGVyfSBwcm9maWxlCi0gKi8KLVdlYkluc3BlY3Rv
ci5OYXRpdmVIZWFwU25hcHNob3RWaWV3ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQotewot
ICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxlOwotICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RWaWV3LmNhbGwodGhpcywgcGFyZW50LCBwcm9maWxlKTsKLX0KLQotCi1XZWJJbnNwZWN0b3Iu
TmF0aXZlSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IHByb2ZpbGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2ZpbGU7Ci0gICAgfSwKLQotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlCi19OwotCi0KLS8q
KgotICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk5hdGl2ZVByb2Zp
bGVUeXBlQmFzZX0KLSAqLwotV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlID0g
ZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5OYXRpdmVQcm9maWxlVHlwZUJhc2UuY2Fs
bCh0aGlzLCBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZUhlYWRlciwgV2ViSW5zcGVj
dG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDYXB0dXJlIE5hdGl2ZSBNZW1vcnkgRGlzdHJpYnV0aW9uIikpOwotfQotCi1XZWJJbnNwZWN0
b3IuTmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUuVHlwZUlkID0gIk5BVElWRV9NRU1PUllfRElTVFJJ
QlVUSU9OIjsKLQotV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLnByb3RvdHlw
ZSA9IHsKLSAgICBnZXQgYnV0dG9uVG9vbHRpcCgpCi0gICAgewotICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDYXB0dXJlIG5hdGl2ZSBtZW1vcnkgZGlzdHJpYnV0aW9uLiIp
OwotICAgIH0sCi0KLSAgICBnZXQgdHJlZUl0ZW1UaXRsZSgpCi0gICAgewotICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNRU1PUlkgRElTVFJJQlVUSU9OIik7Ci0gICAgfSwK
LQotICAgIGdldCBkZXNjcmlwdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJOYXRpdmUgbWVtb3J5IHNuYXBzaG90IHByb2ZpbGVzIHNob3cgbWVtb3J5
IGRpc3RyaWJ1dGlvbiBhbW9uZyBicm93c2VyIHN1YnN5c3RlbXMiKTsKLSAgICB9LAotCi0gICAg
X19wcm90b19fOiBXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5cGVCYXNlLnByb3RvdHlwZQot
fQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5OYXRp
dmVTbmFwc2hvdFByb2ZpbGVIZWFkZXJ9Ci0gKiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuUHJvZmls
ZVR5cGV9IHR5cGUKLSAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZQotICogQHBhcmFtIHtudW1iZXI9
fSB1aWQKLSAqLwotV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVIZWFkZXIgPSBmdW5j
dGlvbih0eXBlLCB0aXRsZSwgdWlkKQotewotICAgIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hv
dFByb2ZpbGVIZWFkZXIuY2FsbCh0aGlzLCB0eXBlLCB0aXRsZSwgdWlkKTsKLQotICAgIC8qKgot
ICAgICAqIEB0eXBlIHtNZW1vcnlBZ2VudC5NZW1vcnlCbG9ja30KLSAgICAgKi8KLSAgICB0aGlz
Ll9tZW1vcnlCbG9jayA9IG51bGw7Ci19Ci0KLVdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9m
aWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAb3ZlcnJpZGUKLSAgICAg
Ki8KLSAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQodGhp
cywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdCAlZCIpLCAiaGVhcC1zbmFwc2hvdC1z
aWRlYmFyLXRyZWUtaXRlbSIpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAb3ZlcnJpZGUK
LSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfSBwcm9maWxlc1BhbmVs
Ci0gICAgICovCi0gICAgY3JlYXRlVmlldzogZnVuY3Rpb24ocHJvZmlsZXNQYW5lbCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVNuYXBzaG90Vmll
dyh0aGlzKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQG92ZXJyaWRlCi0gICAgICovCi0g
ICAgX3VwZGF0ZVNuYXBzaG90U3RhdHVzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJ
bnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fdXBkYXRlU25h
cHNob3RTdGF0dXMuY2FsbCh0aGlzKTsKLSAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0
aXRsZSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKC8qKiBAdHlwZXtudW1iZXJ9ICovICh0aGlzLl9t
ZW1vcnlCbG9jay5zaXplKSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBvdmVycmlkZQot
ICAgICAqIEBwYXJhbSB7P3N0cmluZ30gZXJyb3IKLSAgICAgKiBAcGFyYW0gez9NZW1vcnlBZ2Vu
dC5NZW1vcnlCbG9ja30gbWVtb3J5QmxvY2sKLSAgICAgKiBAcGFyYW0ge09iamVjdD19IGdyYXBo
TWV0YUluZm9ybWF0aW9uCi0gICAgICovCi0gICAgX2RpZFJlY2VpdmVNZW1vcnlTbmFwc2hvdDog
ZnVuY3Rpb24oZXJyb3IsIG1lbW9yeUJsb2NrLCBncmFwaE1ldGFJbmZvcm1hdGlvbikKLSAgICB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVIZWFkZXIucHJvdG90
eXBlLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QuY2FsbCh0aGlzLCBlcnJvciwgbWVtb3J5Qmxv
Y2ssIGdyYXBoTWV0YUluZm9ybWF0aW9uKTsKLSAgICAgICAgaWYgKG1lbW9yeUJsb2NrLnNpemUg
JiYgbWVtb3J5QmxvY2suY2hpbGRyZW4pIHsKLSAgICAgICAgICAgIHZhciBrbm93blNpemUgPSAw
OwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZW1vcnlCbG9jay5jaGlsZHJlbi5s
ZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIHZhciBzaXplID0gbWVtb3J5QmxvY2suY2hp
bGRyZW5baV0uc2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAoc2l6ZSkKLSAgICAgICAgICAgICAg
ICAgICAga25vd25TaXplICs9IHNpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIg
b3RoZXJTaXplID0gbWVtb3J5QmxvY2suc2l6ZSAtIGtub3duU2l6ZTsKLQotICAgICAgICAgICAg
aWYgKG90aGVyU2l6ZSkgewotICAgICAgICAgICAgICAgIG1lbW9yeUJsb2NrLmNoaWxkcmVuLnB1
c2goewotICAgICAgICAgICAgICAgICAgICBuYW1lOiAiT3RoZXIiLAotICAgICAgICAgICAgICAg
ICAgICBzaXplOiBvdGhlclNpemUKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICB0aGlzLl9tZW1vcnlCbG9jayA9IG1lbW9yeUJsb2NrOwotICAg
IH0sCi0KLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVI
ZWFkZXIucHJvdG90eXBlCi19Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge3N0
cmluZ30gZmlsbFN0eWxlCi0gKiBAcGFyYW0ge3N0cmluZ30gbmFtZQotICogQHBhcmFtIHtzdHJp
bmd9IGRlc2NyaXB0aW9uCi0gKi8KLVdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0
aWVzID0gZnVuY3Rpb24oZmlsbFN0eWxlLCBuYW1lLCBkZXNjcmlwdGlvbikKLXsKLSAgICB0aGlz
Ll9maWxsU3R5bGUgPSBmaWxsU3R5bGU7Ci0gICAgdGhpcy5fbmFtZSA9IG5hbWU7Ci0gICAgdGhp
cy5fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKLX0KLQotLyoqCi0gKiBAdHlwZSB7T2JqZWN0
LjxzdHJpbmcsIFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVzPn0KLSAqLwot
V2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX3N0YW5kYXJkQmxvY2tzID0g
bnVsbDsKLQotV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxp
emUgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQ
cm9wZXJ0aWVzLl9zdGFuZGFyZEJsb2NrcykKLSAgICAgICAgcmV0dXJuOwotICAgIFdlYkluc3Bl
Y3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVzLl9zdGFuZGFyZEJsb2NrcyA9IHt9OwotICAg
IGZ1bmN0aW9uIGFkZEJsb2NrKGZpbGxTdHlsZSwgbmFtZSwgZGVzY3JpcHRpb24pCi0gICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IuTWVtb3J5QmxvY2tWaWV3UHJvcGVydGllcy5fc3RhbmRhcmRC
bG9ja3NbbmFtZV0gPSBuZXcgV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMo
ZmlsbFN0eWxlLCBuYW1lLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoZGVzY3JpcHRpb24pKTsKLSAg
ICB9Ci0gICAgYWRkQmxvY2soImhzbCggIDAsICAwJSwgIDYwJSkiLCAiUHJvY2Vzc1ByaXZhdGVN
ZW1vcnkiLCAiVG90YWwiKTsKLSAgICBhZGRCbG9jaygiaHNsKCAgMCwgIDAlLCAgODAlKSIsICJP
d25lcnNUeXBlUGxhY2Vob2xkZXIiLCAiT3duZXJzVHlwZVBsYWNlaG9sZGVyIik7Ci0gICAgYWRk
QmxvY2soImhzbCggIDAsICAwJSwgIDYwJSkiLCAiT3RoZXIiLCAiT3RoZXIiKTsKLSAgICBhZGRC
bG9jaygiaHNsKDIyMCwgODAlLCAgNzAlKSIsICJJbWFnZSIsICJJbWFnZXMiKTsKLSAgICBhZGRC
bG9jaygiaHNsKDEwMCwgNjAlLCAgNTAlKSIsICJKU0hlYXAiLCAiSmF2YVNjcmlwdCBoZWFwIik7
Ci0gICAgYWRkQmxvY2soImhzbCggOTAsIDQwJSwgIDgwJSkiLCAiSlNFeHRlcm5hbFJlc291cmNl
cyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHJlc291cmNlcyIpOwotICAgIGFkZEJsb2NrKCJoc2wo
IDkwLCA2MCUsICA4MCUpIiwgIkNTUyIsICJDU1MiKTsKLSAgICBhZGRCbG9jaygiaHNsKCAgMCwg
NTAlLCAgNjAlKSIsICJET00iLCAiRE9NIik7Ci0gICAgYWRkQmxvY2soImhzbCggIDAsIDgwJSwg
IDYwJSkiLCAiV2ViSW5zcGVjdG9yIiwgIkluc3BlY3RvciBkYXRhIik7Ci0gICAgYWRkQmxvY2so
ImhzbCggMzYsIDkwJSwgIDUwJSkiLCAiUmVzb3VyY2VzIiwgIlJlc291cmNlcyIpOwotICAgIGFk
ZEJsb2NrKCJoc2woIDQwLCA4MCUsICA4MCUpIiwgIkdseXBoQ2FjaGUiLCAiR2x5cGggY2FjaGUg
cmVzb3VyY2VzIik7Ci0gICAgYWRkQmxvY2soImhzbCggMzUsIDgwJSwgIDgwJSkiLCAiRE9NU3Rv
cmFnZUNhY2hlIiwgIkRPTSBzdG9yYWdlIGNhY2hlIik7Ci0gICAgYWRkQmxvY2soImhzbCggNjAs
IDgwJSwgIDYwJSkiLCAiUmVuZGVyVHJlZSIsICJSZW5kZXIgdHJlZSIpOwotICAgIGFkZEJsb2Nr
KCJoc2woIDIwLCA4MCUsICA1MCUpIiwgIk1hbGxvY1dhc3RlIiwgIk1lbW9yeSBhbGxvY2F0b3Ig
d2FzdGUiKTsKLX0KLQotV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2Zv
ck1lbW9yeUJsb2NrID0gZnVuY3Rpb24obWVtb3J5QmxvY2spCi17Ci0gICAgV2ViSW5zcGVjdG9y
Lk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxpemUoKTsKLSAgICB2YXIgcmVzdWx0
ID0gV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX3N0YW5kYXJkQmxvY2tz
W21lbW9yeUJsb2NrLm5hbWVdOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTWVtb3J5QmxvY2tWaWV3UHJvcGVydGll
cygiaW5oZXJpdCIsIG1lbW9yeUJsb2NrLm5hbWUsIG1lbW9yeUJsb2NrLm5hbWUpOwotfQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwu
anMKaW5kZXggNzdkOGNkOGE1ZTRmOTlhMjBiYzEyYjBjNTIzNDRiMmI5NmE3NTMxYS4uMmEzZjA0
NGZjZGNkZDIzMDhmZGFjNzYyMmQ5MjM1MWVlMjM5ZTJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtNDA4LDEwICs0
MDgsNiBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKG5hbWUsIHR5cGUp
CiAgICAgICAgICAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlVHlwZSgpKTsKICAgICAgICAgaWYgKENhcGFiaWxpdGllcy5oZWFw
UHJvZmlsZXJQcmVzZW50KQogICAgICAgICAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOwotICAgICAgICBpZiAo
IVdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmlzV29ya2VyRnJvbnRlbmQoKSAmJiBXZWJJbnNw
ZWN0b3IuZXhwZXJpbWVudHNTZXR0aW5ncy5uYXRpdmVNZW1vcnlTbmFwc2hvdHMuaXNFbmFibGVk
KCkpIHsKLSAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3Bl
Y3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOwotICAgICAgICAgICAgdGhpcy5fcmVn
aXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBl
KCkpOwotICAgICAgICB9CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIu
aXNXb3JrZXJGcm9udGVuZCgpICYmIFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLmNh
bnZhc0luc3BlY3Rpb24uaXNFbmFibGVkKCkpCiAgICAgICAgICAgICB0aGlzLl9yZWdpc3RlclBy
b2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUoKSk7CiAgICAgfQpA
QCAtMTQxOSwzNCArMTQxNSw2IEBAIFdlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlclBhbmVsLnBy
b3RvdHlwZSA9IHsKIH0KIAogCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dl
Ykluc3BlY3Rvci5Qcm9maWxlc1BhbmVsfQotICovCi1XZWJJbnNwZWN0b3IuTWVtb3J5Q2hhcnRQ
cm9maWxlclBhbmVsID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlc1Bh
bmVsLmNhbGwodGhpcywgIm1lbW9yeS1jaGFydC1wcm9maWxlciIsIG5ldyBXZWJJbnNwZWN0b3Iu
TmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUoKSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5NZW1vcnlDaGFy
dFByb2ZpbGVyUGFuZWwucHJvdG90eXBlID0gewotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
LlByb2ZpbGVzUGFuZWwucHJvdG90eXBlCi19Ci0KLQotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbH0KLSAqLwotV2ViSW5zcGVjdG9y
Lk5hdGl2ZU1lbW9yeVByb2ZpbGVyUGFuZWwgPSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVzUGFuZWwuY2FsbCh0aGlzLCAibWVtb3J5LXNuYXBzaG90LXByb2ZpbGVyIiwg
bmV3IFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOwotfQotCi1XZWJJ
bnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUKLX0KLQotCiBpbXBv
cnRTY3JpcHQoIlByb2ZpbGVEYXRhR3JpZFRyZWUuanMiKTsKIGltcG9ydFNjcmlwdCgiQm90dG9t
VXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIik7CiBpbXBvcnRTY3JpcHQoIkNQVVByb2ZpbGVWaWV3
LmpzIik7CkBAIC0xNDYxLDcgKzE0MjksNiBAQCBpbXBvcnRTY3JpcHQoIkhlYXBTbmFwc2hvdFZp
ZXcuanMiKTsKIGltcG9ydFNjcmlwdCgiSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIp
OwogaW1wb3J0U2NyaXB0KCJKU0hlYXBTbmFwc2hvdC5qcyIpOwogaW1wb3J0U2NyaXB0KCJOYXRp
dmVIZWFwU25hcHNob3QuanMiKTsKLWltcG9ydFNjcmlwdCgiTmF0aXZlTWVtb3J5U25hcHNob3RW
aWV3LmpzIik7CiBpbXBvcnRTY3JpcHQoIlByb2ZpbGVMYXVuY2hlclZpZXcuanMiKTsKIGltcG9y
dFNjcmlwdCgiVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMiKTsKIGltcG9ydFNjcmlwdCgi
Q2FudmFzUHJvZmlsZVZpZXcuanMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDE0ODliMTRlNmJhYzBjMWU2Y2NhYWVkNjg5NTIzNDdm
MjQyZTYyZjYuLmNlODY2Y2M4NmVlZmMwYWEzMTgwNGVjMGQ0N2VlMjkyMTcwNDMxOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtMTEy
LDcgKzExMiw2IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0aW9uKCkKICAgICB0aGlz
Lmdlb2xvY2F0aW9uT3ZlcnJpZGUgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImdlb2xvY2F0aW9uT3Zl
cnJpZGUiLCAiIik7CiAgICAgdGhpcy5kZXZpY2VPcmllbnRhdGlvbk92ZXJyaWRlID0gdGhpcy5j
cmVhdGVTZXR0aW5nKCJkZXZpY2VPcmllbnRhdGlvbk92ZXJyaWRlIiwgIiIpOwogICAgIHRoaXMu
c2hvd0hlYXBTbmFwc2hvdE9iamVjdHNIaWRkZW5Qcm9wZXJ0aWVzID0gdGhpcy5jcmVhdGVTZXR0
aW5nKCJzaG93SGVhcFNuYXBzaG90T2JqZWN0c0hpZGRlblByb3BlcnRpZXMiLCBmYWxzZSk7Ci0g
ICAgdGhpcy5zaG93TmF0aXZlU25hcHNob3RVbmluc3RydW1lbnRlZFNpemUgPSB0aGlzLmNyZWF0
ZVNldHRpbmcoInNob3dOYXRpdmVTbmFwc2hvdFVuaW5zdHJ1bWVudGVkU2l6ZSIsIGZhbHNlKTsK
ICAgICB0aGlzLnNlYXJjaEluQ29udGVudFNjcmlwdHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNl
YXJjaEluQ29udGVudFNjcmlwdHMiLCBmYWxzZSk7CiAgICAgdGhpcy50ZXh0RWRpdG9ySW5kZW50
ID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJ0ZXh0RWRpdG9ySW5kZW50IiwgIiAgICAiKTsKICAgICB0
aGlzLmxhc3REb2NrU3RhdGUgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImxhc3REb2NrU3RhdGUiLCAi
Iik7CkBAIC0yMTcsNyArMjE2LDYgQEAgV2ViSW5zcGVjdG9yLkV4cGVyaW1lbnRzU2V0dGluZ3Mg
PSBmdW5jdGlvbigpCiAKICAgICAvLyBBZGQgY3VycmVudGx5IHJ1bm5pbmcgZXhwZXJpbWVudHMg
aGVyZS4KICAgICB0aGlzLnNuaXBwZXRzU3VwcG9ydCA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQo
InNuaXBwZXRzU3VwcG9ydCIsICJTbmlwcGV0cyBzdXBwb3J0Iik7Ci0gICAgdGhpcy5uYXRpdmVN
ZW1vcnlTbmFwc2hvdHMgPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJuYXRpdmVNZW1vcnlTbmFw
c2hvdHMiLCAiTmF0aXZlIG1lbW9yeSBwcm9maWxpbmciKTsKICAgICB0aGlzLm5hdGl2ZU1lbW9y
eVRpbWVsaW5lID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgibmF0aXZlTWVtb3J5VGltZWxpbmUi
LCAiTmF0aXZlIG1lbW9yeSB0aW1lbGluZSIpOwogICAgIHRoaXMuZmlsZVN5c3RlbUluc3BlY3Rp
b24gPSB0aGlzLl9jcmVhdGVFeHBlcmltZW50KCJmaWxlU3lzdGVtSW5zcGVjdGlvbiIsICJGaWxl
U3lzdGVtIGluc3BlY3Rpb24iKTsKICAgICB0aGlzLmNhbnZhc0luc3BlY3Rpb24gPSB0aGlzLl9j
cmVhdGVFeHBlcmltZW50KCJjYW52YXNJbnNwZWN0aW9uICIsICJDYW52YXMgaW5zcGVjdGlvbiIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
c1NjcmVlbi5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NT
Y3JlZW4uanMKaW5kZXggZmFiMGViYTk5ZmU0NjYwZmZlMzVmMjQyM2ZiZmJhNWJlY2Q2NmE1ZS4u
N2E3MjIyODgxNTA4NTE4ZTAwZTJjMzM0YzM5MTU3MmY5MTg3ZjZlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCkBAIC0z
NTgsOCArMzU4LDYgQEAgV2ViSW5zcGVjdG9yLkdlbmVyaWNTZXR0aW5nc1RhYiA9IGZ1bmN0aW9u
KCkKIAogICAgIHAgPSB0aGlzLl9hcHBlbmRTZWN0aW9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UHJvZmlsZXIiKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRp
bmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IG9iamVjdHMnIGhpZGRlbiBwcm9wZXJ0aWVz
IiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93SGVhcFNuYXBzaG90T2JqZWN0c0hpZGRlblBy
b3BlcnRpZXMpKTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3MubmF0
aXZlTWVtb3J5U25hcHNob3RzLmlzRW5hYmxlZCgpKQotICAgICAgICBwLmFwcGVuZENoaWxkKHRo
aXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdW5p
bnN0cnVtZW50ZWQgbmF0aXZlIG1lbW9yeSIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd05h
dGl2ZVNuYXBzaG90VW5pbnN0cnVtZW50ZWRTaXplKSk7CiAKICAgICBwID0gdGhpcy5fYXBwZW5k
U2VjdGlvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lIikpOwogICAgIHZhciBjaGVj
a2JveCA9IHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkxpbWl0IG51bWJlciBvZiBjYXB0dXJlZCBKUyBzdGFjayBmcmFtZXMiKSwgV2ViSW5zcGVjdG9y
LnNldHRpbmdzLnRpbWVsaW5lTGltaXRTdGFja0ZyYW1lc0ZsYWcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDViMGMxMzY4Nzk0ZTNiZmMy
OTM2ZmJlZjE1NmMyOWUwYjMwOTZhOGQuLmRjZTIwYzVkNTdkODBlZWMzODc2ZGZiYzllYTc2YTY1
N2Y0OWZhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMKQEAgLTEyMiw3ICsxMjIsNiBAQAogICAgIDxmaWxlPk5hdGl2ZUJyZWFrcG9pbnRzU2lk
ZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+TmF0aXZlSGVhcFNuYXBzaG90LmpzPC9maWxl
PgogICAgIDxmaWxlPk5hdGl2ZU1lbW9yeUdyYXBoLmpzPC9maWxlPgotICAgIDxmaWxlPk5hdGl2
ZU1lbW9yeVNuYXBzaG90Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5OYXZpZ2F0b3JPdmVybGF5
Q29udHJvbGxlci5qczwvZmlsZT4KICAgICA8ZmlsZT5OYXZpZ2F0b3JWaWV3LmpzPC9maWxlPgog
ICAgIDxmaWxlPk5ldHdvcmtJdGVtVmlldy5qczwvZmlsZT4KQEAgLTI1OCw3ICsyNTcsNiBAQAog
ICAgIDxmaWxlPmluc3BlY3Rvci5jc3M8L2ZpbGU+CiAgICAgPGZpbGU+aW5zcGVjdG9yQ29tbW9u
LmNzczwvZmlsZT4KICAgICA8ZmlsZT5pbnNwZWN0b3JTeW50YXhIaWdobGlnaHQuY3NzPC9maWxl
PgotICAgIDxmaWxlPm5hdGl2ZU1lbW9yeVByb2ZpbGVyLmNzczwvZmlsZT4KICAgICA8ZmlsZT5u
YXZpZ2F0b3JWaWV3LmNzczwvZmlsZT4KICAgICA8ZmlsZT5uZXR3b3JrTG9nVmlldy5jc3M8L2Zp
bGU+CiAgICAgPGZpbGU+bmV0d29ya1BhbmVsLmNzczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBjZjI4OGNlNjM0YTAw
MjgxZDFmMjNhYWI1YjUzNGYzZDRjYzFmZDE3Li41YjQyZjljOWU4NDMwYTRlMWY5MGU4MDViNjM4
Y2Q0NDNlNmI3OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuY3NzCkBAIC01NDYsMjIgKzU0Niw2IEBAIGJvZHkuZG9jay10by1ib3R0b20g
LnRvb2xiYXItaXRlbS5jYW52YXMtcHJvZmlsZXIgLnRvb2xiYXItaWNvbiB7CiAgICAgYmFja2dy
b3VuZC1wb3NpdGlvbi14OiAtMTIwcHg7CiB9CiAKLS50b29sYmFyLWl0ZW0ubWVtb3J5LWNoYXJ0
LXByb2ZpbGVyIC50b29sYmFyLWljb24gewotICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogLTE2
MHB4OwotfQotCi1ib2R5LmRvY2stdG8tYm90dG9tIC50b29sYmFyLWl0ZW0ubWVtb3J5LWNoYXJ0
LXByb2ZpbGVyIC50b29sYmFyLWljb24gewotICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogLTEy
MHB4OwotfQotCi0udG9vbGJhci1pdGVtLm1lbW9yeS1zbmFwc2hvdC1wcm9maWxlciAudG9vbGJh
ci1pY29uIHsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0xNjBweDsKLX0KLQotYm9keS5k
b2NrLXRvLWJvdHRvbSAudG9vbGJhci1pdGVtLm1lbW9yeS1zbmFwc2hvdC1wcm9maWxlciAudG9v
bGJhci1pY29uIHsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0xMjBweDsKLX0KLQogLnRv
b2xiYXItaXRlbS5hdWRpdHMgLnRvb2xiYXItaWNvbiB7CiAgICAgYmFja2dyb3VuZC1wb3NpdGlv
bi14OiAtMTkycHg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzCmluZGV4IDU2OTQ3YWM0NjVlZjgxZDE3MTFiY2VkODg3NmExZDM5MWEzYWRj
MTUuLjkyZjBkNjMwYmI3NmIwN2NkMDFkNWMwMmFkYzJhYTYwMWY3NmM1ZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC01NiwxMCAr
NTYsNiBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewogICAgICAgICAgICAgICAgIGFsbFByb2ZpbGVy
cy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJoZWFwLXByb2ZpbGVyIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWFwIFByb2ZpbGVyIiksICJIZWFwUHJvZmlsZXJQYW5l
bCIsICJQcm9maWxlc1BhbmVsLmpzIikpOwogICAgICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3Iu
V29ya2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkgJiYgV2ViSW5zcGVjdG9yLmV4cGVyaW1l
bnRzU2V0dGluZ3MuY2FudmFzSW5zcGVjdGlvbi5pc0VuYWJsZWQoKSkKICAgICAgICAgICAgICAg
ICBhbGxQcm9maWxlcnMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiY2Fu
dmFzLXByb2ZpbGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYW52YXMgUHJvZmlsZXIiKSwg
IkNhbnZhc1Byb2ZpbGVyUGFuZWwiLCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKLSAgICAgICAgICAg
IGlmICghV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIuaXNXb3JrZXJGcm9udGVuZCgpICYmIFdl
Ykluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLm5hdGl2ZU1lbW9yeVNuYXBzaG90cy5pc0Vu
YWJsZWQoKSkgewotICAgICAgICAgICAgICAgIGFsbFByb2ZpbGVycy5wdXNoKG5ldyBXZWJJbnNw
ZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJtZW1vcnktY2hhcnQtcHJvZmlsZXIiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk1lbW9yeSBEaXN0cmlidXRpb24iKSwgIk1lbW9yeUNoYXJ0UHJvZmlsZXJQ
YW5lbCIsICJQcm9maWxlc1BhbmVsLmpzIikpOwotICAgICAgICAgICAgICAgIGFsbFByb2ZpbGVy
cy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJtZW1vcnktc25hcHNob3Qt
cHJvZmlsZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1lbW9yeSBTbmFwc2hvdHMiKSwgIk5h
dGl2ZU1lbW9yeVByb2ZpbGVyUGFuZWwiLCAiUHJvZmlsZXNQYW5lbC5qcyIpKTsKLSAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYmluZChhbGxEZXNjcmlw
dG9ycywgYWxsRGVzY3JpcHRvcnMuaW5kZXhPZihwcm9maWxlcyksIDEpLmFwcGx5KG51bGwsIGFs
bFByb2ZpbGVycyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9uYXRpdmVNZW1vcnlQcm9maWxlci5jc3MgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25hdGl2ZU1lbW9yeVByb2ZpbGVyLmNzcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWIyZWU0NWJkYjI5NDJkMjIyNGE1YmQ2YmFjZDJlNTFkZmNm
ZWY4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25hdGl2ZU1lbW9yeVByb2ZpbGVyLmNzcwor
KysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLm1lbW9yeS1waWUtY2hhcnQtY29udGFpbmVy
IHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7Ci0gICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlv
bjogY29sdW1uOwotfQotCi0ubWVtb3J5LXBpZS1jaGFydCB7Ci0gICAgLXdlYmtpdC1mbGV4OiAx
OwotfQotCi0ubWVtb3J5LWJsb2Nrcy1saXN0IC5zd2F0Y2ggewotICAgIGJhY2tncm91bmQtaW1h
Z2U6IG5vbmU7Ci19Ci0KLS5tZW1vcnktYmxvY2tzLWxpc3QgewotICAgIHBhZGRpbmc6IDFweDsK
LSAgICBmb250LXNpemU6IDExcHg7Ci19Ci0KLS5tZW1vcnktYmxvY2tzLWxpc3QgLml0ZW0gewot
ICAgIG1hcmdpbjogMTBweDsKLX0KLQotLm5hdGl2ZS1zbmFwc2hvdC12aWV3IHsKLSAgICBkaXNw
bGF5OiBub25lOwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci0gICAgcG9zaXRpb246IGFic29sdXRl
OwotICAgIHRvcDogMDsKLSAgICBsZWZ0OiAwOwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTog
MDsKLX0KLQotLm5hdGl2ZS1zbmFwc2hvdC12aWV3LnZpc2libGUgewotICAgIGRpc3BsYXk6IGJs
b2NrOwotfQotCi0ubmF0aXZlLXNuYXBzaG90LXZpZXcgLmRhdGEtZ3JpZCB7Ci0gICAgcG9zaXRp
b246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICBsZWZ0OiAwOwotICAgIHJpZ2h0OiAwOwot
ICAgIGJvdHRvbTogMDsKLSAgICBib3JkZXI6IG5vbmU7Ci19Ci0KLS5uYXRpdmUtc25hcHNob3Qt
dmlldyAuZGF0YS1ncmlkIHRkIHsKLSAgICBoZWlnaHQ6IDE0cHg7Ci0gICAgcGFkZGluZzogMXB4
IDRweDsKLX0KLQotLm5hdGl2ZS1zbmFwc2hvdC12aWV3IC5kYXRhLWdyaWQgZGl2LnNpemUtdGV4
dCB7Ci0gICAgZmxvYXQ6IGxlZnQ7Ci0gICAgdGV4dC1hbGlnbjogcmlnaHQ7Ci0gICAgd2lkdGg6
IDcwcHg7Ci0gICAgcGFkZGluZy1yaWdodDogNXB4OwotfQotCi0ubmF0aXZlLXNuYXBzaG90LXZp
ZXcgLmRhdGEtZ3JpZCAuZGltbWVkIGRpdi5zaXplLWJhciB7Ci0gICAgYmFja2dyb3VuZC1pbWFn
ZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSho
c2xhKDAsIDEwMCUsIDEwMCUsIDAuNykpLCB0byhoc2xhKDAsIDEwMCUsIDEwMCUsIDAuNSkpKTsK
LSAgICBjb2xvcjogaHNsYSgwLCAwJSwgMCUsIDAuNSk7Ci19Ci0KLS5uYXRpdmUtc25hcHNob3Qt
dmlldyAuZGF0YS1ncmlkIGRpdi5zaXplLWJhciB7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwot
ICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwg
bGVmdCBib3R0b20sIGZyb20ocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpKSwgdG8ocmdiYSgxOTIs
IDE5MiwgMTkyLCAwKSkpOwotICAgIGhlaWdodDogMTRweDsKLSAgICBib3JkZXItcmFkaXVzOiAy
cHg7Ci0gICAgY29sb3I6IGJsYWNrOwotICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7Ci0gICAgbWlu
LXdpZHRoOiAxcHg7Ci19Ci0KLS5uYXRpdmUtc25hcHNob3QtdmlldyAuZGF0YS1ncmlkIGRpdi5w
ZXJjZW50LXRleHQgewotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLX0K
</data>

          </attachment>
      

    </bug>

</bugzilla>