<?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>76455</bug_id>
          
          <creation_ts>2012-01-17 07:50:41 -0800</creation_ts>
          <short_desc>Web Inspector: Refactor JavaScriptOutlineDialog: extract FilteredItemSelectionDialog and reuse DialogDelegate.</short_desc>
          <delta_ts>2012-01-17 11:00:31 -0800</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>537100</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-17 07:50:41 -0800</bug_when>
    <thetext>JavaScriptOutlineDialog should be based on Dialog/DialogDelegate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537109</commentid>
    <comment_count>1</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-17 08:06:33 -0800</bug_when>
    <thetext>Refactor JavaScriptOutlineDialog: extract FilteredItemSelectionDialog and reuse DialogDelegate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537164</commentid>
    <comment_count>2</comment_count>
      <attachid>122779</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-17 09:49:47 -0800</bug_when>
    <thetext>Created attachment 122779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537195</commentid>
    <comment_count>3</comment_count>
      <attachid>122779</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-01-17 10:47:53 -0800</bug_when>
    <thetext>Comment on attachment 122779
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=122779&amp;action=review

&gt; Source/WebCore/inspector/front-end/FilteredItemSelectionDialog.js:38
&gt; +    WebInspector.DialogDelegate.call(this);

It&apos;s a bit confusing that the FilteredItemSelectionDialog is itself a dialog delegate not a dialog descendant.

&gt; Source/WebCore/inspector/front-end/FilteredItemSelectionDialog.js:213
&gt; +    _filterFunctions: function()

_filterFunctions -&gt; _filterItems

&gt; Source/WebCore/inspector/front-end/FilteredItemSelectionDialog.js:431
&gt; +WebInspector.FilteredItemSelectionDialogDelegate.prototype = {

Maybe SelectionDialogContentProvider?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537204</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-17 11:00:31 -0800</bug_when>
    <thetext>Committed r105171: &lt;http://trac.webkit.org/changeset/105171&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122779</attachid>
            <date>2012-01-17 09:49:47 -0800</date>
            <delta_ts>2012-01-17 10:47:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76455-20120117214944.patch</filename>
            <type>text/plain</type>
            <size>55527</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjEwYWY0MzgyODE0NDhl
NjU2ZTg3MjU4NzdiYmE3NTI4NmYxNTNkMy4uOTM2ZTRlYThiMGRlMjQ5NjFiOTUzZGNkN2JjMDYw
NzA0ZDM5OTQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcyIEBACiAyMDEyLTAxLTE3ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlZmFjdG9yIEphdmFTY3JpcHRPdXRsaW5lRGlhbG9nOiBleHRyYWN0IEZpbHRlcmVkSXRl
bVNlbGVjdGlvbkRpYWxvZyBhbmQgcmV1c2UgRGlhbG9nRGVsZWdhdGUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjQ1NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5zaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RpYWxv
Zy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EaWFsb2cpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRpYWxvZy5wcm90b3R5cGUuX2hpZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5wcm90b3R5cGUucG9zaXRpb24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5wcm90b3R5cGUu
Zm9jdXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxv
Zy5wcm90b3R5cGUud2lsbEhpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRl
bVNlbGVjdGlvbkRpYWxvZy5wcm90b3R5cGUub25FbnRlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLnByb3RvdHlwZS5nZXQgX2l0ZW1zTG9hZGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cucHJv
dG90eXBlLl9jcmVhdGVJdGVtRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsdGVy
ZWRJdGVtU2VsZWN0aW9uRGlhbG9nLnByb3RvdHlwZS5faGlkZUl0ZW1FbGVtZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cucHJvdG90eXBlLl9p
dGVtRWxlbWVudFZpc2libGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRlbVNl
bGVjdGlvbkRpYWxvZy5wcm90b3R5cGUuX3Nob3dJdGVtRWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLnByb3RvdHlwZS5fY2hlY2tJdGVt
QXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5w
cm90b3R5cGUuX2NyZWF0ZVNlYXJjaFJlZ0V4cCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmls
dGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLnByb3RvdHlwZS5fZmlsdGVyRnVuY3Rpb25zKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cucHJvdG90eXBl
Ll9vbktleURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlv
bkRpYWxvZy5wcm90b3R5cGUuX3NjaGVkdWxlRmlsdGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cucHJvdG90eXBlLl91cGRhdGVTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5wcm90
b3R5cGUuX29uTW91c2VNb3ZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWx0ZXJlZEl0ZW1T
ZWxlY3Rpb25EaWFsb2cucHJvdG90eXBlLl9vblNjcm9sbCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLnByb3RvdHlwZS5faGlnaGxpZ2h0SXRlbXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5wcm90
b3R5cGUuX2NsZWFySGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWx0ZXJlZEl0
ZW1TZWxlY3Rpb25EaWFsb2cucHJvdG90eXBlLl9jbGVhckVsZW1lbnRIaWdobGlnaHQuY2hhbmdl
cy50aGlzLl9lbGVtZW50SGlnaGxpZ2h0Q2hhbmdlcy5nZXQgaWYpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5wcm90b3R5cGUuX2NsZWFyRWxlbWVu
dEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsdGVyZWRJdGVtU2VsZWN0aW9u
RGlhbG9nLnByb3RvdHlwZS5faGlnaGxpZ2h0SXRlbS5nZXQgdmFyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cucHJvdG90eXBlLl9oaWdobGlnaHRJ
dGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cu
cHJvdG90eXBlLl9pdGVtRWxlbWVudEluVmlld3BvcnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZ0RlbGVnYXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2dEZWxlZ2F0ZS5wcm90b3R5cGUuaXRlbVRp
dGxlQXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxv
Z0RlbGVnYXRlLnByb3RvdHlwZS5pdGVtS2V5QXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZ0RlbGVnYXRlLnByb3RvdHlwZS5pdGVtc0NvdW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2dEZWxlZ2F0
ZS5wcm90b3R5cGUucmVxdWVzdEl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWx0ZXJl
ZEl0ZW1TZWxlY3Rpb25EaWFsb2dEZWxlZ2F0ZS5wcm90b3R5cGUuc2VsZWN0SXRlbSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdE91dGxpbmVEaWFsb2cpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLmRpZEFkZENodW5rKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5pbnN0YWxsKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5fc2hvdyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSmF2YVNjcmlwdE91dGxpbmVEaWFsb2cuY3JlYXRlU2hvcnRjdXQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLnByb3RvdHlwZS5pdGVt
VGl0bGVBdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdE91dGxpbmVEaWFsb2cu
cHJvdG90eXBlLml0ZW1LZXlBdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdE91
dGxpbmVEaWFsb2cucHJvdG90eXBlLml0ZW1zQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLnByb3RvdHlwZS5yZXF1ZXN0SXRlbXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLnByb3RvdHlwZS5zZWxlY3RJ
dGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5wcm90
b3R5cGUuX2FwcGVuZEl0ZW1FbGVtZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9m
aWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuY3NzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9qYXZhU2NyaXB0T3V0bGluZURpYWxvZy5jc3MuCisgICAg
ICAgICguanMtb3V0bGluZS1kaWFsb2cgPiBpbnB1dCk6CisgICAgICAgICguanMtb3V0bGluZS1k
aWFsb2cgPiBkaXYucHJvZ3Jlc3MpOgorICAgICAgICAoLmpzLW91dGxpbmUtZGlhbG9nID4gZGl2
LmNvbnRhaW5lcik6CisgICAgICAgICguanMtb3V0bGluZS1kaWFsb2cgPiAuY29udGFpbmVyID4g
ZGl2Lml0ZW0pOgorICAgICAgICAoLmpzLW91dGxpbmUtZGlhbG9nID4gLmNvbnRhaW5lciA+IGRp
di5pdGVtLnNlbGVjdGVkKToKKyAgICAgICAgKC5qcy1vdXRsaW5lLWRpYWxvZyA+IC5jb250YWlu
ZXIgPiBkaXYuaXRlbSA+IHNwYW4uaGlnaGxpZ2h0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sOgorCisyMDEyLTAxLTE3ICBWc2V2b2xvZCBWbGFzb3YgIDx2
c2V2aWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERpYWxvZ3Mgc3R5
bGUgYW5kIERpYWxvZ0RlbGVnYXRlIGludGVyZmFjZSBmaXhlcy4KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NDQ5CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCBkOGE1MjNmYTU3YTQ0NzE0M2E2YzllZWEyNTE1NDhhMjRhZTUxOGIyLi42YWYzZGExMTRlYzJl
OWI1ZjRjMzdhOWQ4MzUzMjFkMDdmZTBjODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02NDY4LDYg
KzY0NjgsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFu
ZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUmVnaXN0
cnlTdHViLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNl
cnZlci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWx0ZXJlZEl0ZW1T
ZWxlY3Rpb25EaWFsb2cuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9u
dFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFs
b2cuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMnLApA
QCAtNjQ4Niw3ICs2NDg3LDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0lu
amVjdGVkRmFrZVdvcmtlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlw
dEZvcm1hdHRlci5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2Ny
aXB0T3V0bGluZURpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9K
YXZhU2NyaXB0U291cmNlRnJhbWUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvS2V5Ym9hcmRTaG9ydGN1dC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9NZXRyaWNzU2lkZWJhclBhbmUuanMnLApAQCAtNjU4MSw5ICs2NTgxLDkgQEAKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2F1ZGl0c1BhbmVsLmNzcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9kYXRhR3JpZC5jc3MnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvZWxlbWVudHNQYW5lbC5jc3MnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvZmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmNzcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9oZWFwUHJvZmlsZXIuY3NzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3RvckNvbW1vbi5jc3MnLAotICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvamF2YVNjcmlwdE91dGxpbmVEaWFsb2cuY3NzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL25ldHdvcmtMb2dWaWV3LmNzcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL3BhbmVsRW5hYmxlclZpZXcuY3NzJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZTc3YzFmZjEyYjQ0MzRmZGI5Yzhl
MzhmNmIwODFmZmZhODg4MjMxZC4uZGEyOGQyMzNkZWRkOTg4NWRmZjY2NGUzYmE5ZTE5ZmJlZjNi
NWY4MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTcxOTIxLDYgKzcxOTIxLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZpbHRlcmVkSXRlbVNl
bGVjdGlvbkRpYWxvZy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcZmlsdGVyZWRJdGVtU2VsZWN0aW9u
RGlhbG9nLmNzcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRm9udFZpZXcuanMiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CkBAIC03MjAyNSwxNCArNzIwMzMsNiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxKYXZhU2Ny
aXB0T3V0bGluZURpYWxvZy5qcyIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQotCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcamF2YVNjcmlwdE91dGxpbmVE
aWFsb2cuY3NzIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxKYXZhU2NyaXB0U291cmNlRnJhbWUuanMiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Y29tcGlsZS1mcm9udC1lbmQuc2ggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1m
cm9udC1lbmQuc2gKaW5kZXggZDcwM2VmMGQwNjY1MTgyOTczNGZkYTFmZGIxNzYxYWQ4NTM2MjBm
YS4uZjQ4NWNhOWM1ZjgxYWNiZGFiZjZlZGY5N2M0YmQzMTU3ODhjNjlhOCAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaApAQCAtMTE4LDkgKzExOCw5
IEBAIGphdmEgLWphciB+L2Nsb3N1cmUvY29tcGlsZXIuamFyIC0tc3VtbWFyeV9kZXRhaWxfbGV2
ZWwgMyAtLWNvbXBpbGF0aW9uX2xldmVsIFNJCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9ET01QcmVzZW50YXRpb25VdGlscy5qcyBcCiAgICAgICAgIC0t
anMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2
ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzIFwKICAg
ICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0dvVG9MaW5lRGlh
bG9nLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0phdmFTY3JpcHRDb250ZXh0TWFuYWdlci5qcyBcCi0gICAgICAgIC0tanMgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5qcyBcCiAgICAg
ICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQb3BvdmVy
SGVscGVyLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RpYWxvZy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGlhbG9nLmpzCmluZGV4IDBhOTQ2Nzkz
YWI0NzJiM2I5MTk3YmZmM2RkODgwZjk3NmE3ZDNjOTMuLjA1YTEyZGQwYmZiYTIwNTdjZDQ1NjE1
MzExOWE0ZmFjZTRlNzllNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGlhbG9nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGlhbG9nLmpzCkBAIC01Nyw3ICs1Nyw2IEBAIFdlYkluc3BlY3Rvci5EaWFsb2cgPSBmdW5j
dGlvbihyZWxhdGl2ZVRvRWxlbWVudCwgZGVsZWdhdGUpCiAgICAgZGVsZWdhdGUuZWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJkaWFsb2ctY29udGVudHMiKTsKICAgICB0aGlzLl9lbGVtZW50LmFwcGVu
ZENoaWxkKGRlbGVnYXRlLmVsZW1lbnQpOwogCi0gICAgdGhpcy5fZGVsZWdhdGUud2FzU2hvd24o
KTsKICAgICB0aGlzLl9wb3NpdGlvbigpOwogICAgIHRoaXMuX3dpbmRvd1Jlc2l6ZUhhbmRsZXIg
PSB0aGlzLl9wb3NpdGlvbi5iaW5kKHRoaXMpOwogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJyZXNpemUiLCB0aGlzLl93aW5kb3dSZXNpemVIYW5kbGVyLCB0cnVlKTsKQEAgLTEwMiw3ICsx
MDEsNyBAQCBXZWJJbnNwZWN0b3IuRGlhbG9nLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
ZGVsZWdhdGUud2lsbEhpZGUoKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0Q3VycmVudEZv
Y3VzRWxlbWVudCh0aGlzLl9wcmV2aW91c0ZvY3VzRWxlbWVudCk7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5EaWFsb2cuX2luc3RhbmNlID0gbnVsbDsKKyAgICAgICAgZGVsZXRlIFdlYkluc3BlY3Rv
ci5EaWFsb2cuX2luc3RhbmNlOwogICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRo
aXMuX2dsYXNzUGFuZUVsZW1lbnQpOwogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5l
cigicmVzaXplIiwgdGhpcy5fd2luZG93UmVzaXplSGFuZGxlciwgdHJ1ZSk7CiAgICAgfSwKQEAg
LTE0OCw4ICsxNDcsMTAgQEAgV2ViSW5zcGVjdG9yLkRpYWxvZ0RlbGVnYXRlID0gZnVuY3Rpb24o
KQogfQogCiBXZWJJbnNwZWN0b3IuRGlhbG9nRGVsZWdhdGUucHJvdG90eXBlID0gewotICAgIHdh
c1Nob3duOiBmdW5jdGlvbigpIHsgfSwKLQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7RWxlbWVu
dH0gZWxlbWVudAorICAgICAqIEBwYXJhbSB7RWxlbWVudH0gcmVsYXRpdmVUb0VsZW1lbnQKKyAg
ICAgKi8KICAgICBwb3NpdGlvbjogZnVuY3Rpb24oZWxlbWVudCwgcmVsYXRpdmVUb0VsZW1lbnQp
CiAgICAgewogICAgICAgICB2YXIgb2Zmc2V0ID0gcmVsYXRpdmVUb0VsZW1lbnQub2Zmc2V0UmVs
YXRpdmVUb1dpbmRvdyh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MjRlMWY0ZmFkYjg5NzgwODhmOGU5ODdmY2MyZmVkMGI1ZGNhODZkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWx0ZXJl
ZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanMKQEAgLTAsMCArMSw1ODQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5EaWFsb2dEZWxlZ2F0ZX0KKyAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZ0RlbGVnYXRlfSBkZWxl
Z2F0ZQorICovCitXZWJJbnNwZWN0b3IuRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nID0gZnVu
Y3Rpb24oZGVsZWdhdGUpCit7CisgICAgV2ViSW5zcGVjdG9yLkRpYWxvZ0RlbGVnYXRlLmNhbGwo
dGhpcyk7CisKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9w
ZW4oIkdFVCIsICJmaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuY3NzIiwgZmFsc2UpOworICAg
IHhoci5zZW5kKG51bGwpOworCisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJqcy1vdXRsaW5lLWRp
YWxvZyI7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlz
Ll9vbktleURvd24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9vbk1vdXNlTW92ZS5iaW5kKHRoaXMpLCBmYWxz
ZSk7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fb25D
bGljay5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdmFyIHN0eWxlRWxlbWVudCA9IHRoaXMuZWxl
bWVudC5jcmVhdGVDaGlsZCgic3R5bGUiKTsKKyAgICBzdHlsZUVsZW1lbnQudHlwZSA9ICJ0ZXh0
L2NzcyI7CisgICAgc3R5bGVFbGVtZW50LnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsK
KworICAgIHRoaXMuX3ByZXZpb3VzSW5wdXRMZW5ndGggPSAwOworICAgIHRoaXMuX2l0ZW1FbGVt
ZW50cyA9IFtdOworICAgIHRoaXMuX2VsZW1lbnRJbmRleGVzID0gbmV3IE1hcCgpOworICAgIHRo
aXMuX2VsZW1lbnRIaWdobGlnaHRDaGFuZ2VzID0gbmV3IE1hcCgpOworCisgICAgdGhpcy5fcHJv
bXB0RWxlbWVudCA9IHRoaXMuZWxlbWVudC5jcmVhdGVDaGlsZCgiaW5wdXQiLCAibW9ub3NwYWNl
Iik7CisgICAgdGhpcy5fcHJvbXB0RWxlbWVudC50eXBlID0gInRleHQiOworICAgIHRoaXMuX3By
b21wdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJzcGVsbGNoZWNrIiwgImZhbHNlIik7CisKKyAgICB0
aGlzLl9wcm9ncmVzc0VsZW1lbnQgPSB0aGlzLmVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIsICJw
cm9ncmVzcyIpOworCisgICAgdGhpcy5faXRlbUVsZW1lbnRzQ29udGFpbmVyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5faXRlbUVsZW1lbnRzQ29udGFpbmVyLmNs
YXNzTmFtZSA9ICJjb250YWluZXIgbW9ub3NwYWNlIjsKKyAgICB0aGlzLl9pdGVtRWxlbWVudHND
b250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fb25TY3JvbGwuYmluZCh0
aGlzKSwgZmFsc2UpOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pdGVtRWxl
bWVudHNDb250YWluZXIpOworCisgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAg
IHRoaXMuX2RlbGVnYXRlLnJlcXVlc3RJdGVtcyh0aGlzLl9pdGVtc0xvYWRlZC5iaW5kKHRoaXMp
KTsKK30KKworV2ViSW5zcGVjdG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5wcm90b3R5
cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50CisgICAgICog
QHBhcmFtIHtFbGVtZW50fSByZWxhdGl2ZVRvRWxlbWVudAorICAgICAqLworICAgIHBvc2l0aW9u
OiBmdW5jdGlvbihlbGVtZW50LCByZWxhdGl2ZVRvRWxlbWVudCkKKyAgICB7CisgICAgICAgIGNv
bnN0IG1pbldpZHRoID0gNTAwOworICAgICAgICBjb25zdCBtaW5IZWlnaHQgPSAyMDQ7CisgICAg
ICAgIHZhciB3aWR0aCA9IE1hdGgubWF4KHJlbGF0aXZlVG9FbGVtZW50Lm9mZnNldFdpZHRoICog
MiAvIDMsIG1pbldpZHRoKTsKKyAgICAgICAgdmFyIGhlaWdodCA9IE1hdGgubWF4KHJlbGF0aXZl
VG9FbGVtZW50Lm9mZnNldEhlaWdodCAqIDIgLyAzLCBtaW5IZWlnaHQpOworCisgICAgICAgIHRo
aXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoICsgInB4IjsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJweCI7CisKKyAgICAgICAgY29uc3Qgc2hhZG93
UGFkZGluZyA9IDEwOworICAgICAgICBlbGVtZW50LnBvc2l0aW9uQXQoCisgICAgICAgICAgICAg
ICAgcmVsYXRpdmVUb0VsZW1lbnQudG90YWxPZmZzZXRMZWZ0KCkgKyBNYXRoLm1heChyZWxhdGl2
ZVRvRWxlbWVudC5vZmZzZXRXaWR0aCAtIHdpZHRoIC0gc2hhZG93UGFkZGluZywgc2hhZG93UGFk
ZGluZyksCisgICAgICAgICAgICAgICAgcmVsYXRpdmVUb0VsZW1lbnQudG90YWxPZmZzZXRUb3Ao
KSArIE1hdGgubWF4KChyZWxhdGl2ZVRvRWxlbWVudC5vZmZzZXRIZWlnaHQgLSBoZWlnaHQpIC8g
MiArIHNoYWRvd1BhZGRpbmcsIHNoYWRvd1BhZGRpbmcpKTsKKyAgICB9LAorCisgICAgZm9jdXM6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5zZXRDdXJyZW50Rm9jdXNF
bGVtZW50KHRoaXMuX3Byb21wdEVsZW1lbnQpOworICAgIH0sCisKKyAgICB3aWxsSGlkZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lzSGlkaW5nKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB0aGlzLl9pc0hpZGluZyA9IHRydWU7CisgICAgICAgIGlmICh0aGlz
Ll9maWx0ZXJUaW1lcikKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9maWx0ZXJUaW1l
cik7CisgICAgfSwKKworICAgIG9uRW50ZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2RlbGVnYXRlLnNlbGVjdEl0ZW0odGhpcy5fZWxlbWVudEluZGV4ZXMuZ2V0KHRoaXMuX3Nl
bGVjdGVkRWxlbWVudCkpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gaW5kZXgKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY2h1bmtMZW5ndGgKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gY2h1bmtJbmRleAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjaHVua0NvdW50
CisgICAgICovCisgICAgX2l0ZW1zTG9hZGVkOiBmdW5jdGlvbihpbmRleCwgY2h1bmtMZW5ndGgs
IGNodW5rSW5kZXgsIGNodW5rQ291bnQpCisgICAgeworICAgICAgICB2YXIgZnJhZ21lbnQgPSBk
b2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIHZhciBjYW5kaWRhdGVJ
dGVtID0gdGhpcy5fc2VsZWN0ZWRFbGVtZW50OworICAgICAgICBmb3IgKHZhciBpID0gaW5kZXg7
IGkgPCBpbmRleCArIGNodW5rTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBpdGVtRWxl
bWVudCA9IHRoaXMuX2NyZWF0ZUl0ZW1FbGVtZW50KGksIHRoaXMuX2RlbGVnYXRlLml0ZW1UaXRs
ZUF0KGkpKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jaGVja0l0ZW1BdChpLCB0aGlzLl9wcm9t
cHRFbGVtZW50LnZhbHVlKSkgeworICAgICAgICAgICAgICAgIGlmICghY2FuZGlkYXRlSXRlbSkK
KyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlSXRlbSA9IGl0ZW1FbGVtZW50OworICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5faGlkZUl0ZW1FbGVtZW50KGl0ZW1F
bGVtZW50KTsKKyAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGl0ZW1FbGVtZW50KTsK
KyAgICAgICAgfQorICAgICAgICB0aGlzLl9pdGVtRWxlbWVudHNDb250YWluZXIuYXBwZW5kQ2hp
bGQoZnJhZ21lbnQpOworICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oY2FuZGlkYXRlSXRl
bSk7CisKKyAgICAgICAgaWYgKGNodW5rSW5kZXggPT09IGNodW5rQ291bnQpCisgICAgICAgICAg
ICB0aGlzLl9wcm9ncmVzc0VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gIiI7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgY29sb3IgPSAicmdiKDY2LCAxMjksIDIzNSki
OworICAgICAgICAgICAgY29uc3QgcGVyY2VudCA9ICgoY2h1bmtJbmRleCAvIGNodW5rQ291bnQp
ICogMTAwKSArICIlIjsKKyAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzRWxlbWVudC5zdHlsZS5i
YWNrZ3JvdW5kSW1hZ2UgPSAiLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgIiArIGNvbG9y
ICsgIiwgIiArIGNvbG9yICsgIiAiICsgcGVyY2VudCArICIsICB0cmFuc3BhcmVudCAiICsgcGVy
Y2VudCArICIpIjsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gaW5kZXgKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUKKyAgICAgKi8KKyAg
ICBfY3JlYXRlSXRlbUVsZW1lbnQ6IGZ1bmN0aW9uKGluZGV4LCB0aXRsZSkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9pdGVtRWxlbWVudHNbaW5kZXhdKQorICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2l0ZW1FbGVtZW50c1tpbmRleF07CisKKyAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGl0ZW1FbGVtZW50LmNsYXNzTmFt
ZSA9ICJpdGVtIjsKKyAgICAgICAgaXRlbUVsZW1lbnQudGV4dENvbnRlbnQgPSB0aXRsZTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudEluZGV4ZXMucHV0KGl0ZW1FbGVtZW50LCBpbmRleCk7CisgICAg
ICAgIHRoaXMuX2l0ZW1FbGVtZW50cy5wdXNoKGl0ZW1FbGVtZW50KTsKKworICAgICAgICByZXR1
cm4gaXRlbUVsZW1lbnQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RWxlbWVu
dH0gaXRlbUVsZW1lbnQKKyAgICAgKi8KKyAgICBfaGlkZUl0ZW1FbGVtZW50OiBmdW5jdGlvbihp
dGVtRWxlbWVudCkKKyAgICB7CisgICAgICAgIGl0ZW1FbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RWxlbWVudH0gaXRlbUVs
ZW1lbnQKKyAgICAgKi8KKyAgICBfaXRlbUVsZW1lbnRWaXNpYmxlOiBmdW5jdGlvbihpdGVtRWxl
bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBpdGVtRWxlbWVudC5zdHlsZS5kaXNwbGF5ICE9
PSAibm9uZSI7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RWxlbWVudH0gaXRl
bUVsZW1lbnQKKyAgICAgKi8KKyAgICBfc2hvd0l0ZW1FbGVtZW50OiBmdW5jdGlvbihpdGVtRWxl
bWVudCkKKyAgICB7CisgICAgICAgIGl0ZW1FbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgICAgICovCisg
ICAgX2NoZWNrSXRlbUF0OiBmdW5jdGlvbihpbmRleCwgcXVlcnkpCisgICAgeworICAgICAgICBp
ZiAoIXF1ZXJ5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHZhciByZWdFeHAg
PSB0aGlzLl9jcmVhdGVTZWFyY2hSZWdFeHAocXVlcnkpOworICAgICAgICB2YXIga2V5ID0gdGhp
cy5fZGVsZWdhdGUuaXRlbUtleUF0KGluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlZ0V4cC50ZXN0
KGtleSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gcXVlcnkK
KyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0dsb2JhbAorICAgICAqLworICAgIF9jcmVhdGVT
ZWFyY2hSZWdFeHA6IGZ1bmN0aW9uKHF1ZXJ5LCBpc0dsb2JhbCkKKyAgICB7CisgICAgICAgIHZh
ciB0cmltbWVkUXVlcnkgPSBxdWVyeS50cmltKCk7CisgICAgICAgIHZhciByZWdFeHBTdHJpbmcg
PSB0cmltbWVkUXVlcnkuZXNjYXBlRm9yUmVnRXhwKCkucmVwbGFjZSgvXFxcKi9nLCAiLioiKS5y
ZXBsYWNlKC8oPyFeKShbQS1aXSkvZywgIlteQS1aXSokMSIpOworICAgICAgICB2YXIgaXNTdWZm
aXggPSAocXVlcnkuY2hhckF0KHF1ZXJ5Lmxlbmd0aCAtIDEpID09PSAiICIpOworICAgICAgICBp
ZiAoaXNTdWZmaXgpCisgICAgICAgICAgICByZWdFeHBTdHJpbmcgKz0gIiQiOworICAgICAgICBy
ZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJpbmcsICh0cmltbWVkUXVlcnkgPT09IHRyaW1tZWRR
dWVyeS50b0xvd2VyQ2FzZSgpID8gImkiIDogIiIpICsgKGlzR2xvYmFsID8gImciIDogIiIpKTsK
KyAgICB9LAorCisgICAgX2ZpbHRlckZ1bmN0aW9uczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgZGVsZXRlIHRoaXMuX2ZpbHRlclRpbWVyOworCisgICAgICAgIHZhciBxdWVyeSA9IHRoaXMu
X3Byb21wdEVsZW1lbnQudmFsdWU7CisgICAgICAgIHZhciBjaGFyc0FkZGVkID0gdGhpcy5fcHJl
dmlvdXNJbnB1dExlbmd0aCA8IHF1ZXJ5Lmxlbmd0aDsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNJ
bnB1dExlbmd0aCA9IHF1ZXJ5Lmxlbmd0aDsKKyAgICAgICAgcXVlcnkgPSBxdWVyeS50cmltKCk7
CisKKyAgICAgICAgdmFyIGZpcnN0RWxlbWVudDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLl9pdGVtRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBpdGVt
RWxlbWVudCA9IHRoaXMuX2l0ZW1FbGVtZW50c1tpXTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKHRoaXMuX2l0ZW1FbGVtZW50VmlzaWJsZShpdGVtRWxlbWVudCkpIHsgCisgICAgICAg
ICAgICAgICAgaWYgKCF0aGlzLl9jaGVja0l0ZW1BdChpLCBxdWVyeSkpCisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2hpZGVJdGVtRWxlbWVudChpdGVtRWxlbWVudCk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKCFjaGFyc0FkZGVkICYmIHRoaXMuX2NoZWNrSXRlbUF0KGksIHF1ZXJ5KSkKKyAg
ICAgICAgICAgICAgICB0aGlzLl9zaG93SXRlbUVsZW1lbnQoaXRlbUVsZW1lbnQpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoIWZpcnN0RWxlbWVudCAmJiB0aGlzLl9pdGVtRWxlbWVu
dFZpc2libGUoaXRlbUVsZW1lbnQpKQorICAgICAgICAgICAgICAgIGZpcnN0RWxlbWVudCA9IGl0
ZW1FbGVtZW50OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKGZp
cnN0RWxlbWVudCk7CisgICAgICAgIGlmIChxdWVyeSkgeworICAgICAgICAgICAgdGhpcy5faGln
aGxpZ2h0SXRlbXMocXVlcnkpOworICAgICAgICAgICAgdGhpcy5fcXVlcnkgPSBxdWVyeTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2NsZWFySGlnaGxpZ2h0KCk7CisgICAg
ICAgICAgICBkZWxldGUgdGhpcy5fcXVlcnk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX29u
S2V5RG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBmdW5jdGlvbiBuZXh0SXRl
bShpdGVtRWxlbWVudCwgaXNQYWdlU2Nyb2xsLCBmb3J3YXJkKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgc2Nyb2xsSXRlbXNMZWZ0ID0gaXNQYWdlU2Nyb2xsICYmIHRoaXMuX3Jvd3NQZXJW
aWV3cG9ydCA/IHRoaXMuX3Jvd3NQZXJWaWV3cG9ydCA6IDE7CisgICAgICAgICAgICB2YXIgY2Fu
ZGlkYXRlID0gaXRlbUVsZW1lbnQ7CisgICAgICAgICAgICB2YXIgbGFzdFZpc2libGVDYW5kaWRh
dGUgPSBjYW5kaWRhdGU7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgY2FuZGlk
YXRlID0gZm9yd2FyZCA/IGNhbmRpZGF0ZS5uZXh0U2libGluZyA6IGNhbmRpZGF0ZS5wcmV2aW91
c1NpYmxpbmc7CisgICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzUGFnZVNjcm9sbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsYXN0VmlzaWJsZUNhbmRpZGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gZm9yd2FyZCA/IHRoaXMuX2l0ZW1FbGVtZW50
c0NvbnRhaW5lci5maXJzdENoaWxkIDogdGhpcy5faXRlbUVsZW1lbnRzQ29udGFpbmVyLmxhc3RD
aGlsZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pdGVt
RWxlbWVudFZpc2libGUoY2FuZGlkYXRlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgbGFzdFZpc2libGVDYW5kaWRhdGUgPSBjYW5kaWRhdGU7CisgICAg
ICAgICAgICAgICAgLS1zY3JvbGxJdGVtc0xlZnQ7CisgICAgICAgICAgICB9IHdoaWxlIChzY3Jv
bGxJdGVtc0xlZnQgJiYgY2FuZGlkYXRlICE9PSB0aGlzLl9zZWxlY3RlZEVsZW1lbnQpOworCisg
ICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGlz
UGFnZVNjcm9sbCA9IGZhbHNlOworCisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEVsZW1lbnQp
IHsKKyAgICAgICAgICAgIHZhciBjYW5kaWRhdGU7CisgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50
LmtleUNvZGUpIHsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQuS2V5cy5Eb3duLmNvZGU6CisgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gbmV4dEl0ZW0u
Y2FsbCh0aGlzLCB0aGlzLl9zZWxlY3RlZEVsZW1lbnQsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuS2V5cy5VcC5jb2RlOgorICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IG5leHRJdGVt
LmNhbGwodGhpcywgdGhpcy5fc2VsZWN0ZWRFbGVtZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5LZXlzLlBhZ2VEb3duLmNvZGU6CisgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0g
bmV4dEl0ZW0uY2FsbCh0aGlzLCB0aGlzLl9zZWxlY3RlZEVsZW1lbnQsIHRydWUsIHRydWUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXlzLlBhZ2VVcC5jb2RlOgorICAgICAgICAgICAgICAgIGNhbmRpZGF0
ZSA9IG5leHRJdGVtLmNhbGwodGhpcywgdGhpcy5fc2VsZWN0ZWRFbGVtZW50LCB0cnVlLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChjYW5kaWRhdGUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24o
Y2FuZGlkYXRlKTsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGlmIChldmVudC5rZXlJZGVudGlmaWVyICE9PSAiU2hpZnQiICYmIGV2ZW50LmtleUlkZW50aWZp
ZXIgIT09ICJDdHJsIiAmJiBldmVudC5rZXlJZGVudGlmaWVyICE9PSAiTWV0YSIgJiYgZXZlbnQu
a2V5SWRlbnRpZmllciAhPT0gIkxlZnQiICYmIGV2ZW50LmtleUlkZW50aWZpZXIgIT09ICJSaWdo
dCIpCisgICAgICAgICAgICB0aGlzLl9zY2hlZHVsZUZpbHRlcigpOworICAgIH0sCisKKyAgICBf
c2NoZWR1bGVGaWx0ZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9maWx0
ZXJUaW1lcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fZmlsdGVyVGltZXIg
PSBzZXRUaW1lb3V0KHRoaXMuX2ZpbHRlckZ1bmN0aW9ucy5iaW5kKHRoaXMpLCAwKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtFbGVtZW50fSBuZXdTZWxlY3RlZEVsZW1lbnQK
KyAgICAgKi8KKyAgICBfdXBkYXRlU2VsZWN0aW9uOiBmdW5jdGlvbihuZXdTZWxlY3RlZEVsZW1l
bnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRFbGVtZW50ID09PSBuZXdTZWxl
Y3RlZEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLl9zZWxl
Y3RlZEVsZW1lbnQpCisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQucmVtb3ZlU3R5
bGVDbGFzcygic2VsZWN0ZWQiKTsKKworICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSBu
ZXdTZWxlY3RlZEVsZW1lbnQ7CisgICAgICAgIGlmIChuZXdTZWxlY3RlZEVsZW1lbnQpIHsKKyAg
ICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzZWxlY3RlZCIpOwor
ICAgICAgICAgICAgbmV3U2VsZWN0ZWRFbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFs
c2UpOworICAgICAgICAgICAgaWYgKCF0aGlzLl9pdGVtSGVpZ2h0KSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5faXRlbUhlaWdodCA9IG5ld1NlbGVjdGVkRWxlbWVudC5vZmZzZXRIZWlnaHQ7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fcm93c1BlclZpZXdwb3J0ID0gTWF0aC5mbG9vcih0aGlzLl9p
dGVtRWxlbWVudHNDb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gdGhpcy5faXRlbUhlaWdodCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX29uQ2xpY2s6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVu
Y2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIml0ZW0iKTsKKyAgICAgICAgaWYgKCFpdGVtRWxl
bWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9u
KGl0ZW1FbGVtZW50KTsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2VsZWN0SXRlbSh0aGlzLl9l
bGVtZW50SW5kZXhlcy5nZXQodGhpcy5fc2VsZWN0ZWRFbGVtZW50KSk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5EaWFsb2cuaGlkZSgpOworICAgIH0sCisKKyAgICBfb25Nb3VzZU1vdmU6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0
LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIml0ZW0iKTsKKyAgICAgICAgaWYgKCFpdGVt
RWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0
aW9uKGl0ZW1FbGVtZW50KTsKKyAgICB9LAorCisgICAgX29uU2Nyb2xsOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fcXVlcnkpCisgICAgICAgICAgICB0aGlzLl9oaWdobGln
aHRJdGVtcyh0aGlzLl9xdWVyeSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2Ns
ZWFySGlnaGxpZ2h0KCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
PX0gcXVlcnkKKyAgICAgKi8KKyAgICBfaGlnaGxpZ2h0SXRlbXM6IGZ1bmN0aW9uKHF1ZXJ5KQor
ICAgIHsKKyAgICAgICAgdmFyIHJlZ2V4ID0gdGhpcy5fY3JlYXRlU2VhcmNoUmVnRXhwKHF1ZXJ5
LCB0cnVlKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9kZWxlZ2F0ZS5pdGVt
c0NvdW50KCk7ICsraSkgeworICAgICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gdGhpcy5faXRl
bUVsZW1lbnRzW2ldOworICAgICAgICAgICAgaWYgKHRoaXMuX2l0ZW1FbGVtZW50VmlzaWJsZShp
dGVtRWxlbWVudCkgJiYgdGhpcy5faXRlbUVsZW1lbnRJblZpZXdwb3J0KGl0ZW1FbGVtZW50KSkK
KyAgICAgICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRJdGVtKGl0ZW1FbGVtZW50LCByZWdleCk7
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2NsZWFySGlnaGxpZ2h0OiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2RlbGVnYXRlLml0ZW1zQ291
bnQoKTsgKytpKQorICAgICAgICAgICAgdGhpcy5fY2xlYXJFbGVtZW50SGlnaGxpZ2h0KHRoaXMu
X2l0ZW1FbGVtZW50c1tpXSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RWxl
bWVudH0gaXRlbUVsZW1lbnQKKyAgICAgKi8KKyAgICBfY2xlYXJFbGVtZW50SGlnaGxpZ2h0OiBm
dW5jdGlvbihpdGVtRWxlbWVudCkKKyAgICB7CisgICAgICAgIHZhciBjaGFuZ2VzID0gdGhpcy5f
ZWxlbWVudEhpZ2hsaWdodENoYW5nZXMuZ2V0KGl0ZW1FbGVtZW50KQorICAgICAgICBpZiAoY2hh
bmdlcykgeworICAgICAgICAgICAgcmV2ZXJ0RG9tQ2hhbmdlcyhjaGFuZ2VzKTsKKyAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnRIaWdobGlnaHRDaGFuZ2VzLnJlbW92ZShpdGVtRWxlbWVudCk7Cisg
ICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtFbGVtZW50fSBpdGVt
RWxlbWVudAorICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleAorICAgICAqLworICAgIF9oaWdo
bGlnaHRJdGVtOiBmdW5jdGlvbihpdGVtRWxlbWVudCwgcmVnZXgpCisgICAgeworICAgICAgICB0
aGlzLl9jbGVhckVsZW1lbnRIaWdobGlnaHQoaXRlbUVsZW1lbnQpOworCisgICAgICAgIHZhciBr
ZXkgPSB0aGlzLl9kZWxlZ2F0ZS5pdGVtS2V5QXQodGhpcy5fZWxlbWVudEluZGV4ZXMuZ2V0KGl0
ZW1FbGVtZW50KSk7CisgICAgICAgIHZhciByYW5nZXMgPSBbXTsKKworICAgICAgICB2YXIgbWF0
Y2g7CisgICAgICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKGtleSkpICE9PSBudWxsKSB7
CisgICAgICAgICAgICByYW5nZXMucHVzaCh7IG9mZnNldDogbWF0Y2guaW5kZXgsIGxlbmd0aDog
cmVnZXgubGFzdEluZGV4IC0gbWF0Y2guaW5kZXggfSk7CisgICAgICAgIH0KKworICAgICAgICB2
YXIgY2hhbmdlcyA9IFtdOworICAgICAgICBoaWdobGlnaHRSYW5nZXNXaXRoU3R5bGVDbGFzcyhp
dGVtRWxlbWVudCwgcmFuZ2VzLCAiaGlnaGxpZ2h0IiwgY2hhbmdlcyk7CisKKyAgICAgICAgaWYg
KGNoYW5nZXMubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudEhpZ2hsaWdodENoYW5n
ZXMucHV0KGl0ZW1FbGVtZW50LCBjaGFuZ2VzKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtFbGVtZW50fSBpdGVtRWxlbWVudAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Cisg
ICAgICovCisgICAgX2l0ZW1FbGVtZW50SW5WaWV3cG9ydDogZnVuY3Rpb24oaXRlbUVsZW1lbnQp
CisgICAgeworICAgICAgICBpZiAoaXRlbUVsZW1lbnQub2Zmc2V0VG9wICsgdGhpcy5faXRlbUhl
aWdodCA8IHRoaXMuX2l0ZW1FbGVtZW50c0NvbnRhaW5lci5zY3JvbGxUb3ApCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChpdGVtRWxlbWVudC5vZmZzZXRUb3AgPiB0aGlz
Ll9pdGVtRWxlbWVudHNDb250YWluZXIuc2Nyb2xsVG9wICsgdGhpcy5faXRlbUhlaWdodCAqICh0
aGlzLl9yb3dzUGVyVmlld3BvcnQgKyAxKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRmlsdGVyZWRJdGVt
U2VsZWN0aW9uRGlhbG9nLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGlhbG9n
RGVsZWdhdGUucHJvdG90eXBlOworCisvKioKKyAqIEBpbnRlcmZhY2UKKyAqLworV2ViSW5zcGVj
dG9yLkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZ0RlbGVnYXRlID0gZnVuY3Rpb24oKQorewor
fQorCitXZWJJbnNwZWN0b3IuRmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nRGVsZWdhdGUucHJv
dG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpdGVtSW5kZXgKKyAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgaXRlbVRpdGxlQXQ6IGZ1bmN0aW9u
KGl0ZW1JbmRleCkgeyB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGl0ZW1J
bmRleAorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBpdGVtS2V5QXQ6IGZ1
bmN0aW9uKGl0ZW1JbmRleCkgeyB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVy
fQorICAgICAqLworICAgIGl0ZW1zQ291bnQ6IGZ1bmN0aW9uKCkgeyB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXIpfSBj
YWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RJdGVtczogZnVuY3Rpb24oY2FsbGJhY2spIHsg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpdGVtSW5kZXgKKyAgICAgKi8K
KyAgICBzZWxlY3RJdGVtOiBmdW5jdGlvbihpdGVtSW5kZXgpIHsgfQorfTsKKworLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuRmlsdGVyZWRJdGVtU2Vs
ZWN0aW9uRGlhbG9nRGVsZWdhdGV9CisgKi8KK1dlYkluc3BlY3Rvci5KYXZhU2NyaXB0T3V0bGlu
ZURpYWxvZyA9IGZ1bmN0aW9uKHBhbmVsLCB2aWV3KQoreworICAgIFdlYkluc3BlY3Rvci5GaWx0
ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2dEZWxlZ2F0ZS5jYWxsKHRoaXMpOworCisgICAgdGhpcy5f
ZnVuY3Rpb25JdGVtcyA9IFtdOworCisgICAgdGhpcy5fcGFuZWwgPSBwYW5lbDsKKyAgICB0aGlz
Ll92aWV3ID0gdmlldzsKK30KKworLyoqCisgKiBAcGFyYW0ge3tjaHVuaywgaW5kZXgsIHRvdGFs
LCBpZH19IGRhdGEKKyAqLworV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLmRp
ZEFkZENodW5rID0gZnVuY3Rpb24oZGF0YSkKK3sKKyAgICB2YXIgaW5zdGFuY2UgPSBXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdE91dGxpbmVEaWFsb2cuX2luc3RhbmNlOworICAgIGlmICghaW5zdGFu
Y2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChkYXRhLmlkICE9PSBpbnN0YW5jZS5fdmll
dy51aVNvdXJjZUNvZGUuaWQpCisgICAgICAgIHJldHVybjsKKworICAgIGluc3RhbmNlLl9hcHBl
bmRJdGVtRWxlbWVudHMoZGF0YS5jaHVuaywgZGF0YS5pbmRleCwgZGF0YS50b3RhbCk7Cit9LAor
CitXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdE91dGxpbmVEaWFsb2cuaW5zdGFsbCA9IGZ1bmN0aW9u
KHBhbmVsLCB2aWV3R2V0dGVyKQoreworICAgIGZ1bmN0aW9uIHNob3dKYXZhU2NyaXB0T3V0bGlu
ZURpYWxvZygpCisgICAgeworICAgICAgICAgdmFyIHZpZXcgPSB2aWV3R2V0dGVyKCk7CisgICAg
ICAgICBpZiAodmlldykKKyAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdE91dGxp
bmVEaWFsb2cuX3Nob3cocGFuZWwsIHZpZXcpOworICAgIH0KKworICAgIHZhciBqYXZhU2NyaXB0
T3V0bGluZVNob3J0Y3V0ID0gV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLmNy
ZWF0ZVNob3J0Y3V0KCk7CisgICAgcGFuZWwucmVnaXN0ZXJTaG9ydGN1dChqYXZhU2NyaXB0T3V0
bGluZVNob3J0Y3V0LmtleSwgc2hvd0phdmFTY3JpcHRPdXRsaW5lRGlhbG9nKTsKK30KKworV2Vi
SW5zcGVjdG9yLkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLl9zaG93ID0gZnVuY3Rpb24ocGFuZWws
IHNvdXJjZVZpZXcpCit7CisgICAgaWYgKFdlYkluc3BlY3Rvci5EaWFsb2cuY3VycmVudEluc3Rh
bmNlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXNvdXJjZVZpZXcgfHwgIXNvdXJjZVZp
ZXcuY2FuSGlnaGxpZ2h0TGluZSgpKQorICAgICAgICByZXR1cm47CisgICAgV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLl9pbnN0YW5jZSA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdE91dGxpbmVEaWFsb2cocGFuZWwsIHNvdXJjZVZpZXcpOworCisgICAgdmFyIGZpbHRl
cmVkSXRlbVNlbGVjdGlvbkRpYWxvZyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsdGVyZWRJdGVtU2Vs
ZWN0aW9uRGlhbG9nKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5faW5zdGFu
Y2UpOworICAgIFdlYkluc3BlY3Rvci5EaWFsb2cuc2hvdyhzb3VyY2VWaWV3LmVsZW1lbnQsIGZp
bHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZyk7Cit9CisKK1dlYkluc3BlY3Rvci5KYXZhU2NyaXB0
T3V0bGluZURpYWxvZy5jcmVhdGVTaG9ydGN1dCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoV2Vi
SW5zcGVjdG9yLmlzTWFjKCkpCisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5tYWtlRGVzY3JpcHRvcigibyIsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVycy5NZXRhKTsKKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQubWFrZURlc2NyaXB0b3IoIm8iLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2Rp
ZmllcnMuQ3RybCk7Cit9CisKK1dlYkluc3BlY3Rvci5KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5w
cm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGl0ZW1JbmRleAor
ICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBpdGVtVGl0bGVBdDogZnVuY3Rp
b24oaXRlbUluZGV4KQorICAgIHsKKyAgICAgICAgdmFyIGZ1bmN0aW9uSXRlbSA9IHRoaXMuX2Z1
bmN0aW9uSXRlbXNbaXRlbUluZGV4XTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uSXRlbS5uYW1l
ICsgKGZ1bmN0aW9uSXRlbS5hcmd1bWVudHMgPyBmdW5jdGlvbkl0ZW0uYXJndW1lbnRzIDogIiIp
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gaXRlbUluZGV4Cisg
ICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGl0ZW1LZXlBdDogZnVuY3Rpb24o
aXRlbUluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Z1bmN0aW9uSXRlbXNbaXRl
bUluZGV4XS5uYW1lOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtudW1iZXJ9
CisgICAgICovCisgICAgaXRlbXNDb3VudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2Z1bmN0aW9uSXRlbXMubGVuZ3RoOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcil9IGNhbGxi
YWNrCisgICAgICovCisgICAgcmVxdWVzdEl0ZW1zOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIHRoaXMuX2l0ZW1zQWRkZWRDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICB0
aGlzLl9wYW5lbC5yZXF1ZXN0VmlzaWJsZVNjcmlwdE91dGxpbmUoKTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGl0ZW1JbmRleAorICAgICAqLworICAgIHNlbGVj
dEl0ZW06IGZ1bmN0aW9uKGl0ZW1JbmRleCkKKyAgICB7CisgICAgICAgIHZhciBsaW5lTnVtYmVy
ID0gdGhpcy5fZnVuY3Rpb25JdGVtc1tpdGVtSW5kZXhdLmxpbmU7CisgICAgICAgIGlmICghaXNO
YU4obGluZU51bWJlcikgJiYgbGluZU51bWJlciA+PSAwKQorICAgICAgICAgICAgdGhpcy5fdmll
dy5oaWdobGlnaHRMaW5lKGxpbmVOdW1iZXIpOworICAgICAgICBkZWxldGUgV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLl9pbnN0YW5jZTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtBcnJheS48T2JqZWN0Pn0gY2h1bmsKKyAgICAgKiBAcGFyYW0ge251bWJl
cn0gY2h1bmtJbmRleAorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjaHVua0NvdW50CisgICAgICov
CisgICAgX2FwcGVuZEl0ZW1FbGVtZW50czogZnVuY3Rpb24oY2h1bmssIGNodW5rSW5kZXgsIGNo
dW5rQ291bnQpCisgICAgeworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9mdW5jdGlvbkl0ZW1z
Lmxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaHVuay5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgdGhpcy5fZnVuY3Rpb25JdGVtcy5wdXNoKGNodW5rW2ldKTsKKyAgICAg
ICAgfQorICAgICAgICB0aGlzLl9pdGVtc0FkZGVkQ2FsbGJhY2soaW5kZXgsIGNodW5rLmxlbmd0
aCwgY2h1bmtJbmRleCwgY2h1bmtDb3VudCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdE91dGxpbmVEaWFsb2cucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5G
aWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2dEZWxlZ2F0ZS5wcm90b3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRPdXRsaW5lRGlh
bG9nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0T3V0
bGluZURpYWxvZy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM3ZjQ1NWJhNTZk
ZTY1MDMxOWI4YWNiNWU1ZmM4ZGRjMmVjMjIwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ph
dmFTY3JpcHRPdXRsaW5lRGlhbG9nLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTEwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0v
KioKLSAqIEBjb25zdHJ1Y3RvcgotICovCi1XZWJJbnNwZWN0b3IuSmF2YVNjcmlwdE91dGxpbmVE
aWFsb2cgPSBmdW5jdGlvbihwYW5lbCwgdmlldykKLXsKLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7Ci0gICAgeGhyLm9wZW4oIkdFVCIsICJqYXZhU2NyaXB0T3V0bGluZURpYWxv
Zy5jc3MiLCBmYWxzZSk7Ci0gICAgeGhyLnNlbmQobnVsbCk7Ci0KLSAgICB0aGlzLl9lbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFz
c05hbWUgPSAianMtb3V0bGluZS1kaWFsb2ciOwotICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX29uS2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0g
ICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9vbk1v
dXNlTW92ZS5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX29uQ2xpY2suYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHZh
ciBzdHlsZUVsZW1lbnQgPSB0aGlzLl9lbGVtZW50LmNyZWF0ZUNoaWxkKCJzdHlsZSIpOwotICAg
IHN0eWxlRWxlbWVudC50eXBlID0gInRleHQvY3NzIjsKLSAgICBzdHlsZUVsZW1lbnQudGV4dENv
bnRlbnQgPSB4aHIucmVzcG9uc2VUZXh0OwotCi0gICAgdGhpcy5fY2xvc2VLZXlzID0gWwotICAg
ICAgICBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkVudGVyLmNvZGUsCi0gICAg
ICAgIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUsCi0gICAgXTsK
LSAgICB0aGlzLl9pdGVtRWxlbWVudHMgPSBbXTsKLSAgICB0aGlzLl9wcmV2aW91c0lucHV0TGVu
Z3RoID0gMDsKLSAgICB0aGlzLl92aXNpYmxlRWxlbWVudHMgPSBbXTsKLQotICAgIHZhciBkaWFs
b2dXaW5kb3cgPSB0aGlzLl9lbGVtZW50OwotICAgIHRoaXMuX2JvdW5kQmx1ckhhbmRsZXIgPSB0
aGlzLl9vbkJsdXIuYmluZCh0aGlzKTsKLQotICAgIHRoaXMuX3Byb21wdEVsZW1lbnQgPSBkaWFs
b2dXaW5kb3cuY3JlYXRlQ2hpbGQoImlucHV0IiwgIm1vbm9zcGFjZSIpOwotICAgIHRoaXMuX3By
b21wdEVsZW1lbnQudHlwZSA9ICJ0ZXh0IjsKLSAgICB0aGlzLl9wcm9tcHRFbGVtZW50LnNldEF0
dHJpYnV0ZSgic3BlbGxjaGVjayIsICJmYWxzZSIpOwotICAgIHRoaXMuX3Byb21wdEVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2JvdW5kQmx1ckhhbmRsZXIsIGZhbHNlKTsK
LQotICAgIGZ1bmN0aW9uIG9uTW91c2VEb3duKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKGV2
ZW50LnRhcmdldCA9PT0gdGhpcy5fcHJvbXB0RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNl
bGZXaXRoQ2xhc3MoIml0ZW0iKTsKLSAgICAgICAgaWYgKCFpdGVtRWxlbWVudCkgewotICAgICAg
ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUHJldmVudCBibHVyIGxpc3RlbmVy
IGZyb20gcHJlbWF0dXJlbHkgY2xvc2luZyB0aGUgZGlhbG9nIHdoZW4gYW4gaXRlbSBpcyBjbGlj
a2VkLgotICAgICAgICB0aGlzLl9wcm9tcHRFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJs
dXIiLCB0aGlzLl9ib3VuZEJsdXJIYW5kbGVyLCBmYWxzZSk7Ci0gICAgfQotICAgIHRoaXMuX2Vs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgb25Nb3VzZURvd24uYmluZCh0aGlz
KSwgZmFsc2UpOwotCi0gICAgdGhpcy5fcHJvZ3Jlc3NFbGVtZW50ID0gZGlhbG9nV2luZG93LmNy
ZWF0ZUNoaWxkKCJkaXYiLCAicHJvZ3Jlc3MiKTsKLQotICAgIHRoaXMuX2Z1bmN0aW9uSXRlbUNv
bnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2Z1bmN0
aW9uSXRlbUNvbnRhaW5lci5jbGFzc05hbWUgPSAiY29udGFpbmVyIG1vbm9zcGFjZSI7Ci0gICAg
dGhpcy5fZnVuY3Rpb25JdGVtQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRo
aXMuX29uU2Nyb2xsLmJpbmQodGhpcyksIGZhbHNlKTsKLQotICAgIHRoaXMuX3BhbmVsID0gcGFu
ZWw7Ci0gICAgdGhpcy5fdmlldyA9IHZpZXc7Ci0KLSAgICB0aGlzLl9wYW5lbC5yZXF1ZXN0Vmlz
aWJsZVNjcmlwdE91dGxpbmUoKTsKLSAgICB0aGlzLl9yZXNpemVXaW5kb3coKTsKLQotICAgIHRo
aXMuX3ByZXZpb3VzRm9jdXNFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1l
bnQoKTsKLSAgICBXZWJJbnNwZWN0b3Iuc2V0Q3VycmVudEZvY3VzRWxlbWVudCh0aGlzLl9wcm9t
cHRFbGVtZW50KTsKLQotICAgIHRoaXMuX2hpZ2hsaWdodGVyID0gbmV3IFdlYkluc3BlY3Rvci5K
YXZhU2NyaXB0T3V0bGluZURpYWxvZy5NYXRjaEhpZ2hsaWdodGVyKHRoaXMpOwotfQotCi0vKioK
LSAqIEBwYXJhbSB7e2NodW5rLCBpbmRleCwgdG90YWwsIGlkfX0gZGF0YQotICovCi1XZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdE91dGxpbmVEaWFsb2cuZGlkQWRkQ2h1bmsgPSBmdW5jdGlvbihkYXRh
KQotewotICAgIHZhciBpbnN0YW5jZSA9IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0T3V0bGluZURp
YWxvZy5faW5zdGFuY2U7Ci0gICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKGRhdGEuaWQgIT09IGluc3RhbmNlLl92aWV3LnVpU291cmNlQ29kZS5pZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaW5zdGFuY2UuX2FwcGVuZEl0ZW1FbGVtZW50cyhkYXRhLmNodW5r
KTsKLQotICAgIGlmIChkYXRhLmluZGV4ID09PSBkYXRhLnRvdGFsKSB7Ci0gICAgICAgIGluc3Rh
bmNlLl9wcm9ncmVzc0VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gIiI7Ci0gICAgICAg
IGluc3RhbmNlLl9maWx0ZXJGdW5jdGlvbnMoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBjb25z
dCBjb2xvciA9ICJyZ2IoNjYsIDEyOSwgMjM1KSI7Ci0gICAgICAgIGNvbnN0IHBlcmNlbnQgPSAo
KGRhdGEuaW5kZXggLyBkYXRhLnRvdGFsKSAqIDEwMCkgKyAiJSI7Ci0gICAgICAgIGluc3RhbmNl
Ll9wcm9ncmVzc0VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gIi13ZWJraXQtbGluZWFy
LWdyYWRpZW50KGxlZnQsICIgKyBjb2xvciArICIsICIgKyBjb2xvciArICIgIiArIHBlcmNlbnQg
KyAiLCAgdHJhbnNwYXJlbnQgIiArIHBlcmNlbnQgKyAiKSI7Ci0gICAgfQotfSwKLQotV2ViSW5z
cGVjdG9yLkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLmluc3RhbGwgPSBmdW5jdGlvbihwYW5lbCwg
dmlld0dldHRlcikKLXsKLSAgICBmdW5jdGlvbiBzaG93SmF2YVNjcmlwdE91dGxpbmVEaWFsb2co
KQotICAgIHsKLSAgICAgICAgIHZhciB2aWV3ID0gdmlld0dldHRlcigpOwotICAgICAgICAgaWYg
KHZpZXcpCi0gICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRPdXRsaW5lRGlhbG9n
Ll9zaG93KHBhbmVsLCB2aWV3KTsKLSAgICB9Ci0KLSAgICB2YXIgamF2YVNjcmlwdE91dGxpbmVT
aG9ydGN1dCA9IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5jcmVhdGVTaG9y
dGN1dCgpOwotICAgIHBhbmVsLnJlZ2lzdGVyU2hvcnRjdXQoamF2YVNjcmlwdE91dGxpbmVTaG9y
dGN1dC5rZXksIHNob3dKYXZhU2NyaXB0T3V0bGluZURpYWxvZyk7Ci19Ci0KLVdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5fc2hvdyA9IGZ1bmN0aW9uKHBhbmVsLCBzb3VyY2VW
aWV3KQotewotICAgIGlmICghc291cmNlVmlldyB8fCAhc291cmNlVmlldy5jYW5IaWdobGlnaHRM
aW5lKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRP
dXRsaW5lRGlhbG9nLl9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuOwotICAgIFdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5faW5zdGFuY2UgPSBuZXcgV2ViSW5zcGVjdG9yLkph
dmFTY3JpcHRPdXRsaW5lRGlhbG9nKHBhbmVsLCBzb3VyY2VWaWV3KTsKLX0KLQotV2ViSW5zcGVj
dG9yLkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLmNyZWF0ZVNob3J0Y3V0ID0gZnVuY3Rpb24oKQot
ewotICAgIGlmIChXZWJJbnNwZWN0b3IuaXNNYWMoKSkKLSAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VEZXNjcmlwdG9yKCJvIiwgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLk1ldGEpOwotICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5tYWtlRGVzY3JpcHRvcigibyIsIFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0Lk1vZGlmaWVycy5DdHJsKTsKLX0KLQotV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRP
dXRsaW5lRGlhbG9nLnByb3RvdHlwZSA9IHsKLSAgICBfcmVzaXplV2luZG93OiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICBjb25zdCBtaW5XaWR0aCA9IDUwMDsKLSAgICAgICAgY29uc3QgbWlu
SGVpZ2h0ID0gMjA0OwotICAgICAgICBjb25zdCB0b3RhbFdpZHRoRGVsdGEgPSA0MDsKLSAgICAg
ICAgY29uc3QgdG90YWxIZWlnaHREZWx0YSA9IDc4OwotICAgICAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2Z1bmN0aW9uSXRlbUNvbnRhaW5lcik7Ci0gICAgICAgIHZhciB3aWR0
aCA9IE1hdGgubWF4KHRoaXMuX3ZpZXcuZWxlbWVudC5vZmZzZXRXaWR0aCAqIDIgLyAzLCBtaW5X
aWR0aCk7Ci0gICAgICAgIHZhciBoZWlnaHQgPSBNYXRoLm1heCh0aGlzLl92aWV3LmVsZW1lbnQu
b2Zmc2V0SGVpZ2h0ICogMiAvIDMsIG1pbkhlaWdodCk7Ci0KLSAgICAgICAgY29uc3Qgc2hhZG93
UGFkZGluZyA9IDEwOwotICAgICAgICB0aGlzLl9lbGVtZW50LnBvc2l0aW9uQXQoCi0gICAgICAg
ICAgICAgICAgdGhpcy5fdmlldy5lbGVtZW50LnRvdGFsT2Zmc2V0TGVmdCgpICsgTWF0aC5tYXgo
dGhpcy5fdmlldy5lbGVtZW50Lm9mZnNldFdpZHRoIC0gd2lkdGggLSBzaGFkb3dQYWRkaW5nLCBz
aGFkb3dQYWRkaW5nKSwKLSAgICAgICAgICAgICAgICB0aGlzLl92aWV3LmVsZW1lbnQudG90YWxP
ZmZzZXRUb3AoKSArIE1hdGgubWF4KCh0aGlzLl92aWV3LmVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0g
aGVpZ2h0KSAvIDIgKyBzaGFkb3dQYWRkaW5nLCBzaGFkb3dQYWRkaW5nKSk7Ci0gICAgICAgIHRo
aXMuX2VsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICJweCI7Ci0gICAgICAgIHRoaXMuX2Vs
ZW1lbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgInB4IjsKLQotICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpOwotICAgIH0sCi0KLSAgICBfYXBwZW5kSXRl
bUVsZW1lbnRzOiBmdW5jdGlvbihjaHVuaykKLSAgICB7Ci0gICAgICAgIHZhciByZWdFeHA7Ci0g
ICAgICAgIGlmICh0aGlzLl9wcm9tcHRFbGVtZW50LnZhbHVlKQotICAgICAgICAgICAgcmVnRXhw
ID0gdGhpcy5fY3JlYXRlU2VhcmNoUmVnRXhwKHRoaXMuX3Byb21wdEVsZW1lbnQudmFsdWUpOwot
ICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7
Ci0gICAgICAgIHZhciBjYW5kaWRhdGVJdGVtID0gdGhpcy5fc2VsZWN0ZWRFbGVtZW50OwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNodW5rLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICB2YXIgaXNWaXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIHZhciBlbnRyeSA9IGNodW5rW2ld
OwotICAgICAgICAgICAgdmFyIGZ1bmN0aW9uSXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgICAgICAgICAgZnVuY3Rpb25JdGVtLmNsYXNzTmFtZSA9ICJpdGVtIjsKLSAg
ICAgICAgICAgIGZ1bmN0aW9uSXRlbS5fdGV4dCA9IGVudHJ5Lm5hbWU7Ci0gICAgICAgICAgICBm
dW5jdGlvbkl0ZW0uX2FyZ3VtZW50cyA9IChlbnRyeS5hcmd1bWVudHMgPyBlbnRyeS5hcmd1bWVu
dHMgOiAiIik7Ci0gICAgICAgICAgICBmdW5jdGlvbkl0ZW0udGV4dENvbnRlbnQgPSBmdW5jdGlv
bkl0ZW0uX3RleHQgKyBmdW5jdGlvbkl0ZW0uX2FyZ3VtZW50czsKLSAgICAgICAgICAgIGlmIChy
ZWdFeHAgJiYgIXJlZ0V4cC50ZXN0KGZ1bmN0aW9uSXRlbS5fdGV4dCkpIHsKLSAgICAgICAgICAg
ICAgICBmdW5jdGlvbkl0ZW0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICAgICAgICAgICAg
ICBpc1Zpc2libGUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZ1bmN0aW9u
SXRlbS5fbGluZSA9IGVudHJ5LmxpbmU7Ci0gICAgICAgICAgICB0aGlzLl9pdGVtRWxlbWVudHMu
cHVzaChmdW5jdGlvbkl0ZW0pOwotICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVJdGVtICYmIGlz
VmlzaWJsZSkKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGVJdGVtID0gZnVuY3Rpb25JdGVtOwot
ICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZnVuY3Rpb25JdGVtKTsKLSAgICAgICAg
ICAgIHRoaXMuX3Zpc2libGVFbGVtZW50cy5wdXNoKGZ1bmN0aW9uSXRlbSk7Ci0gICAgICAgIH0K
LSAgICAgICAgdGhpcy5fZnVuY3Rpb25JdGVtQ29udGFpbmVyLmFwcGVuZENoaWxkKGZyYWdtZW50
KTsKLSAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKGNhbmRpZGF0ZUl0ZW0pOwotICAgIH0s
Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0dsb2JhbAotICAgICAqLwot
ICAgIF9jcmVhdGVTZWFyY2hSZWdFeHA6IGZ1bmN0aW9uKHF1ZXJ5LCBpc0dsb2JhbCkKLSAgICB7
Ci0gICAgICAgIHZhciB0cmltbWVkUXVlcnkgPSBxdWVyeS50cmltKCk7Ci0gICAgICAgIHZhciBy
ZWdFeHBTdHJpbmcgPSB0cmltbWVkUXVlcnkuZXNjYXBlRm9yUmVnRXhwKCkucmVwbGFjZSgvXFxc
Ki9nLCAiLioiKS5yZXBsYWNlKC8oPyFeKShbQS1aXSkvZywgIlteQS1aXSokMSIpOwotICAgICAg
ICB2YXIgaXNTdWZmaXggPSAocXVlcnkuY2hhckF0KHF1ZXJ5Lmxlbmd0aCAtIDEpID09PSAiICIp
OwotICAgICAgICBpZiAoaXNTdWZmaXgpCi0gICAgICAgICAgICByZWdFeHBTdHJpbmcgKz0gIiQi
OwotICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJpbmcsICh0cmltbWVkUXVlcnkg
PT09IHRyaW1tZWRRdWVyeS50b0xvd2VyQ2FzZSgpID8gImkiIDogIiIpICsgKGlzR2xvYmFsID8g
ImciIDogIiIpKTsKLSAgICB9LAotCi0gICAgX2ZpbHRlckZ1bmN0aW9uczogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbHRlclRpbWVyOwotCi0gICAgICAgIHZhciBx
dWVyeSA9IHRoaXMuX3Byb21wdEVsZW1lbnQudmFsdWU7Ci0gICAgICAgIHZhciBjaGFyc0FkZGVk
ID0gdGhpcy5fcHJldmlvdXNJbnB1dExlbmd0aCA8IHF1ZXJ5Lmxlbmd0aDsKLSAgICAgICAgdGhp
cy5fcHJldmlvdXNJbnB1dExlbmd0aCA9IHF1ZXJ5Lmxlbmd0aDsKLSAgICAgICAgaWYgKCFxdWVy
eS50cmltKCkpIHsKLSAgICAgICAgICAgIHRoaXMuX3Zpc2libGVFbGVtZW50cyA9IFtdOwotICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9pdGVtRWxlbWVudHMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX2l0ZW1FbGVtZW50c1tp
XTsKLSAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgICAgICAg
ICAgICAgICB0aGlzLl92aXNpYmxlRWxlbWVudHMucHVzaChlbGVtZW50KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbih0aGlzLl9mdW5jdGlvbkl0ZW1D
b250YWluZXIuZmlyc3RDaGlsZCk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fcXVlcnk7Ci0g
ICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRlci5jbGVhckhpZ2hsaWdodCgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fcXVlcnkgPSBxdWVyeTsKLSAg
ICAgICAgdmFyIHJlZ0V4cCA9IHRoaXMuX2NyZWF0ZVNlYXJjaFJlZ0V4cChxdWVyeSk7Ci0gICAg
ICAgIHZhciBmaXJzdEVsZW1lbnQ7Ci0gICAgICAgIHZhciBuZXdWaXNpYmxlRWxlbWVudHMgPSBb
XTsKLSAgICAgICAgaWYgKGNoYXJzQWRkZWQpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGhpcy5fdmlzaWJsZUVsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGVsZW1lbnQgPSB0aGlzLl92aXNpYmxlRWxlbWVudHNbaV07Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlZ0V4cC50ZXN0KGVsZW1lbnQuX3RleHQpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghZmlyc3RFbGVtZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RFbGVtZW50
ID0gZWxlbWVudDsKLSAgICAgICAgICAgICAgICAgICAgbmV3VmlzaWJsZUVsZW1lbnRzLnB1c2go
ZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVs
ZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHRoaXMuX3Zpc2libGVFbGVtZW50cyA9IG5ld1Zpc2libGVFbGVtZW50czsKLSAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZVNlbGVjdGlvbihmaXJzdEVsZW1lbnQpOwotICAgICAgICAgICAgdGhpcy5f
aGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Vmlld3BvcnRJdGVtcyhxdWVyeSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2l0
ZW1FbGVtZW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlz
Ll9pdGVtRWxlbWVudHNbaV07Ci0gICAgICAgICAgICBpZiAocmVnRXhwLnRlc3QoZWxlbWVudC5f
dGV4dCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWZpcnN0RWxlbWVudCkKLSAgICAgICAgICAg
ICAgICAgICAgZmlyc3RFbGVtZW50ID0gZWxlbWVudDsKLSAgICAgICAgICAgICAgICBlbGVtZW50
LnN0eWxlLmRpc3BsYXkgPSAiIjsKLSAgICAgICAgICAgICAgICBuZXdWaXNpYmxlRWxlbWVudHMu
cHVzaChlbGVtZW50KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGVsZW1l
bnQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl92aXNp
YmxlRWxlbWVudHMgPSBuZXdWaXNpYmxlRWxlbWVudHM7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVNl
bGVjdGlvbihmaXJzdEVsZW1lbnQpOwotICAgICAgICB0aGlzLl9oaWdobGlnaHRlci5oaWdobGln
aHRWaWV3cG9ydEl0ZW1zKHF1ZXJ5KTsKLSAgICB9LAotCi0gICAgX3NlbGVjdEZpcnN0SXRlbTog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHNlbGVjdGVkRWxlbWVudDsKLSAgICAgICAg
Zm9yICh2YXIgY2hpbGQgPSB0aGlzLl9mdW5jdGlvbkl0ZW1Db250YWluZXIuZmlyc3RDaGlsZDsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmcpIHsKLSAgICAgICAgICAgIGlmIChjaGls
ZC5zdHlsZS5kaXNwbGF5ICE9PSAibm9uZSIpIHsKLSAgICAgICAgICAgICAgICBzZWxlY3RlZEVs
ZW1lbnQgPSBjaGlsZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oc2VsZWN0ZWRFbGVtZW50KTsK
LSAgICB9LAotCi0gICAgX2hpZGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlz
Ll9pc0hpZGluZykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5faXNIaWRpbmcg
PSB0cnVlOwotICAgICAgICBpZiAodGhpcy5fZmlsdGVyVGltZXIpCi0gICAgICAgICAgICBjbGVh
clRpbWVvdXQodGhpcy5fZmlsdGVyVGltZXIpOwotICAgICAgICB0aGlzLl9lbGVtZW50LnBhcmVu
dEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudCk7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5faW5zdGFuY2UgPSBudWxsOwotCi0gICAgICAgIFdl
Ykluc3BlY3Rvci5zZXRDdXJyZW50Rm9jdXNFbGVtZW50KHRoaXMuX3ByZXZpb3VzRm9jdXNFbGVt
ZW50KTsKLSAgICB9LAotCi0gICAgX29uQmx1cjogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAg
ICAgICB0aGlzLl9oaWRlKCk7Ci0gICAgfSwKLQotICAgIF9vbktleURvd246IGZ1bmN0aW9uKGV2
ZW50KQotICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0LktleXMuVGFiLmNvZGUpIHsKLSAgICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBwcmV2aW91c0l0ZW0oaXRlbUVsZW1lbnQsIGlzUGFnZVNjcm9sbCkKLSAgICAgICAg
ewotICAgICAgICAgICAgdmFyIHNjcm9sbEl0ZW1zTGVmdCA9IGlzUGFnZVNjcm9sbCAmJiB0aGlz
Ll9yb3dzUGVyVmlld3BvcnQgPyB0aGlzLl9yb3dzUGVyVmlld3BvcnQgOiAxOwotICAgICAgICAg
ICAgdmFyIGNhbmRpZGF0ZSA9IGl0ZW1FbGVtZW50OwotICAgICAgICAgICAgdmFyIGxhc3RWaXNp
YmxlQ2FuZGlkYXRlID0gY2FuZGlkYXRlOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAg
ICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5wcmV2aW91c1NpYmxpbmc7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFjYW5kaWRhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFnZVNjcm9s
bCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmlzaWJsZUNhbmRpZGF0ZTsK
LSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlk
YXRlID0gdGhpcy5fZnVuY3Rpb25JdGVtQ29udGFpbmVyLmxhc3RDaGlsZDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5zdHlsZS5kaXNwbGF5ID09PSAi
bm9uZSIpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGxh
c3RWaXNpYmxlQ2FuZGlkYXRlID0gY2FuZGlkYXRlOwotICAgICAgICAgICAgICAgIC0tc2Nyb2xs
SXRlbXNMZWZ0OwotICAgICAgICAgICAgfSB3aGlsZSAoc2Nyb2xsSXRlbXNMZWZ0ICYmIGNhbmRp
ZGF0ZSAhPT0gdGhpcy5fc2VsZWN0ZWRFbGVtZW50KTsKLQotICAgICAgICAgICAgcmV0dXJuIGNh
bmRpZGF0ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIG5leHRJdGVtKGl0ZW1FbGVt
ZW50LCBpc1BhZ2VTY3JvbGwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzY3JvbGxJdGVt
c0xlZnQgPSBpc1BhZ2VTY3JvbGwgJiYgdGhpcy5fcm93c1BlclZpZXdwb3J0ID8gdGhpcy5fcm93
c1BlclZpZXdwb3J0IDogMTsKLSAgICAgICAgICAgIHZhciBjYW5kaWRhdGUgPSBpdGVtRWxlbWVu
dDsKLSAgICAgICAgICAgIHZhciBsYXN0VmlzaWJsZUNhbmRpZGF0ZSA9IGNhbmRpZGF0ZTsKLSAg
ICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUubmV4
dFNpYmxpbmc7Ci0gICAgICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzUGFnZVNjcm9sbCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsYXN0VmlzaWJsZUNhbmRpZGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gdGhpcy5fZnVuY3Rpb25JdGVtQ29udGFpbmVy
LmZpcnN0Q2hpbGQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjYW5k
aWRhdGUuc3R5bGUuZGlzcGxheSA9PT0gIm5vbmUiKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICBsYXN0VmlzaWJsZUNhbmRpZGF0ZSA9IGNhbmRpZGF0ZTsK
LSAgICAgICAgICAgICAgICAtLXNjcm9sbEl0ZW1zTGVmdDsKLSAgICAgICAgICAgIH0gd2hpbGUg
KHNjcm9sbEl0ZW1zTGVmdCAmJiBjYW5kaWRhdGUgIT09IHRoaXMuX3NlbGVjdGVkRWxlbWVudCk7
Ci0KLSAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7Ci0gICAgICAgIH0KLQotICAgICAgICB2
YXIgZGVsdGEgPSAxOwotICAgICAgICB2YXIgaXNQYWdlU2Nyb2xsID0gZmFsc2U7Ci0KLSAgICAg
ICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuS2V5cy5VcC5jb2RlOgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0LktleXMuUGFnZVVwLmNvZGU6Ci0gICAgICAgICAgICBpZiAoIXRoaXMu
X3NlbGVjdGVkRWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBp
ZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5Q
YWdlVXAuY29kZSkKLSAgICAgICAgICAgICAgICBpc1BhZ2VTY3JvbGwgPSB0cnVlOwotCi0gICAg
ICAgICAgICB2YXIgY2FuZGlkYXRlID0gcHJldmlvdXNJdGVtLmNhbGwodGhpcywgdGhpcy5fc2Vs
ZWN0ZWRFbGVtZW50LCBpc1BhZ2VTY3JvbGwpOwotICAgICAgICAgICAgdGhpcy5fdXBkYXRlU2Vs
ZWN0aW9uKGNhbmRpZGF0ZSk7Ci0gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQuS2V5cy5Eb3duLmNvZGU6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQuS2V5cy5QYWdlRG93bi5jb2RlOgotICAgICAgICAgICAgaWYgKCF0aGlzLl9z
ZWxlY3RlZEVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYg
KGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuUGFn
ZURvd24uY29kZSkKLSAgICAgICAgICAgICAgICBpc1BhZ2VTY3JvbGwgPSB0cnVlOwotCi0gICAg
ICAgICAgICB2YXIgY2FuZGlkYXRlID0gbmV4dEl0ZW0uY2FsbCh0aGlzLCB0aGlzLl9zZWxlY3Rl
ZEVsZW1lbnQsIGlzUGFnZVNjcm9sbCk7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rp
b24oY2FuZGlkYXRlKTsKLSAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9
PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5FbnRlci5jb2RlKQotICAgICAg
ICAgICAgdGhpcy5faGlnaGxpZ2h0RnVuY3Rpb25MaW5lKCk7Ci0KLSAgICAgICAgaWYgKHRoaXMu
X2Nsb3NlS2V5cy5pbmRleE9mKGV2ZW50LmtleUNvZGUpID49IDApIHsKLSAgICAgICAgICAgIHRo
aXMuX2hpZGUoKTsKLSAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICAgICAgfSBlbHNlIGlmIChldmVudC5r
ZXlJZGVudGlmaWVyICE9PSAiU2hpZnQiICYmIGV2ZW50LmtleUlkZW50aWZpZXIgIT09ICJDdHJs
IiAmJiBldmVudC5rZXlJZGVudGlmaWVyICE9PSAiTWV0YSIgJiYgZXZlbnQua2V5SWRlbnRpZmll
ciAhPT0gIkxlZnQiICYmIGV2ZW50LmtleUlkZW50aWZpZXIgIT09ICJSaWdodCIpCi0gICAgICAg
ICAgICB0aGlzLl9zY2hlZHVsZUZpbHRlcigpOwotICAgIH0sCi0KLSAgICBfc2NoZWR1bGVGaWx0
ZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9maWx0ZXJUaW1lcikKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fZmlsdGVyVGltZXIgPSBzZXRUaW1lb3V0
KHRoaXMuX2ZpbHRlckZ1bmN0aW9ucy5iaW5kKHRoaXMpLCAwKTsKLSAgICB9LAotCi0gICAgX3Vw
ZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24obmV3U2VsZWN0ZWRFbGVtZW50KQotICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9PT0gbmV3U2VsZWN0ZWRFbGVtZW50KQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRFbGVtZW50KQotICAg
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInNlbGVjdGVk
Iik7Ci0KLSAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gbmV3U2VsZWN0ZWRFbGVtZW50
OwotICAgICAgICBpZiAobmV3U2VsZWN0ZWRFbGVtZW50KSB7Ci0gICAgICAgICAgICBuZXdTZWxl
Y3RlZEVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2VsZWN0ZWQiKTsKLSAgICAgICAgICAgIG5ld1Nl
bGVjdGVkRWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKLSAgICAgICAgICAg
IGlmICghdGhpcy5faXRlbUhlaWdodCkgewotICAgICAgICAgICAgICAgIHRoaXMuX2l0ZW1IZWln
aHQgPSBuZXdTZWxlY3RlZEVsZW1lbnQub2Zmc2V0SGVpZ2h0OwotICAgICAgICAgICAgICAgIHRo
aXMuX3Jvd3NQZXJWaWV3cG9ydCA9IE1hdGguZmxvb3IodGhpcy5fZnVuY3Rpb25JdGVtQ29udGFp
bmVyLm9mZnNldEhlaWdodCAvIHRoaXMuX2l0ZW1IZWlnaHQpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfSwKLQotICAgIF9vbkNsaWNrOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0g
ICAgICAgIHZhciBpdGVtRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aENsYXNzKCJpdGVtIik7Ci0gICAgICAgIGlmICghaXRlbUVsZW1lbnQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbihpdGVtRWxlbWVudCk7Ci0g
ICAgICAgIHRoaXMuX2hpZ2hsaWdodEZ1bmN0aW9uTGluZSgpOwotICAgICAgICB0aGlzLl9oaWRl
KCk7Ci0gICAgfSwKLQotICAgIF9vbk1vdXNlTW92ZTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewot
ICAgICAgICB2YXIgaXRlbUVsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2Vs
ZldpdGhDbGFzcygiaXRlbSIpOwotICAgICAgICBpZiAoIWl0ZW1FbGVtZW50KQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24oaXRlbUVsZW1lbnQpOwot
ICAgIH0sCi0KLSAgICBfb25TY3JvbGw6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0
aGlzLl9xdWVyeSkKLSAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVyLmhpZ2hsaWdodFZpZXdw
b3J0SXRlbXModGhpcy5fcXVlcnkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9o
aWdobGlnaHRlci5jbGVhckhpZ2hsaWdodCgpOwotICAgIH0sCi0KLSAgICBfaGlnaGxpZ2h0RnVu
Y3Rpb25MaW5lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgbGluZU51bWJlciA9IHRo
aXMuX3NlbGVjdGVkRWxlbWVudC5fbGluZTsKLSAgICAgICAgaWYgKCFpc05hTihsaW5lTnVtYmVy
KSAmJiBsaW5lTnVtYmVyID49IDApCi0gICAgICAgICAgICB0aGlzLl92aWV3LmhpZ2hsaWdodExp
bmUobGluZU51bWJlcik7Ci0gICAgfQotfQotCi0vKioKLSogQGNvbnN0cnVjdG9yCi0qLwotV2Vi
SW5zcGVjdG9yLkphdmFTY3JpcHRPdXRsaW5lRGlhbG9nLk1hdGNoSGlnaGxpZ2h0ZXIgPSBmdW5j
dGlvbihkaWFsb2cpCi17Ci0gICAgdGhpcy5fZGlhbG9nID0gZGlhbG9nOwotfQotCi1XZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdE91dGxpbmVEaWFsb2cuTWF0Y2hIaWdobGlnaHRlci5wcm90b3R5cGUg
PSB7Ci0gICAgaGlnaGxpZ2h0Vmlld3BvcnRJdGVtczogZnVuY3Rpb24ocXVlcnkpCi0gICAgewot
ICAgICAgICB2YXIgcmVnZXggPSB0aGlzLl9kaWFsb2cuX2NyZWF0ZVNlYXJjaFJlZ0V4cChxdWVy
eSwgdHJ1ZSk7Ci0gICAgICAgIHZhciByYW5nZSA9IHRoaXMuX3ZpZXdwb3J0Um93UmFuZ2UoKTsK
LSAgICAgICAgdmFyIHZpc2libGVFbGVtZW50cyA9IHRoaXMuX2RpYWxvZy5fdmlzaWJsZUVsZW1l
bnRzOwotICAgICAgICBmb3IgKHZhciBpID0gcmFuZ2VbMF07IGkgPCByYW5nZVsxXTsgKytpKQot
ICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0SXRlbSh2aXNpYmxlRWxlbWVudHNbaV0sIHJlZ2V4
KTsKLSAgICB9LAotCi0gICAgY2xlYXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHZhciByYW5nZSA9IHRoaXMuX3ZpZXdwb3J0Um93UmFuZ2UoKTsKLSAgICAgICAgdmFyIHZp
c2libGVFbGVtZW50cyA9IHRoaXMuX2RpYWxvZy5fdmlzaWJsZUVsZW1lbnRzOwotICAgICAgICBm
b3IgKHZhciBpID0gcmFuZ2VbMF07IGkgPCByYW5nZVsxXTsgKytpKSB7Ci0gICAgICAgICAgICB2
YXIgZWxlbWVudCA9IHZpc2libGVFbGVtZW50c1tpXTsKLSAgICAgICAgICAgIGlmIChlbGVtZW50
Ll9kb21DaGFuZ2VzKSB7Ci0gICAgICAgICAgICAgICAgcmV2ZXJ0RG9tQ2hhbmdlcyhlbGVtZW50
Ll9kb21DaGFuZ2VzKTsKLSAgICAgICAgICAgICAgICBkZWxldGUgZWxlbWVudC5fZG9tQ2hhbmdl
czsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfaGlnaGxpZ2h0SXRl
bTogZnVuY3Rpb24oZWxlbWVudCwgcmVnZXgpCi0gICAgewotICAgICAgICBpZiAoZWxlbWVudC5f
ZG9tQ2hhbmdlcykgewotICAgICAgICAgICAgcmV2ZXJ0RG9tQ2hhbmdlcyhlbGVtZW50Ll9kb21D
aGFuZ2VzKTsKLSAgICAgICAgICAgIGRlbGV0ZSBlbGVtZW50Ll9kb21DaGFuZ2VzOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFyIHRleHQgPSBlbGVtZW50Ll90ZXh0OwotICAgICAgICB2YXIgcmFu
Z2VzID0gW107Ci0KLSAgICAgICAgdmFyIG1hdGNoOwotICAgICAgICB3aGlsZSAoKG1hdGNoID0g
cmVnZXguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHsKLSAgICAgICAgICAgIHJhbmdlcy5wdXNoKHsg
b2Zmc2V0OiBtYXRjaC5pbmRleCwgbGVuZ3RoOiByZWdleC5sYXN0SW5kZXggLSBtYXRjaC5pbmRl
eCB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjaGFuZ2VzID0gW107Ci0gICAgICAgIGhp
Z2hsaWdodFJhbmdlc1dpdGhTdHlsZUNsYXNzKGVsZW1lbnQsIHJhbmdlcywgImhpZ2hsaWdodCIs
IGNoYW5nZXMpOwotCi0gICAgICAgIGlmIChjaGFuZ2VzLmxlbmd0aCkKLSAgICAgICAgICAgIGVs
ZW1lbnQuX2RvbUNoYW5nZXMgPSBjaGFuZ2VzOwotICAgIH0sCi0KLSAgICBfdmlld3BvcnRSb3dS
YW5nZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGRpYWxvZyA9IHRoaXMuX2RpYWxv
ZzsKLSAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSBNYXRoLmZsb29yKGRpYWxvZy5fZnVuY3Rpb25J
dGVtQ29udGFpbmVyLnNjcm9sbFRvcCAvIGRpYWxvZy5faXRlbUhlaWdodCk7Ci0gICAgICAgIHZh
ciBlbmRJbmRleCA9IE1hdGgubWluKGRpYWxvZy5fdmlzaWJsZUVsZW1lbnRzLmxlbmd0aCwgc3Rh
cnRJbmRleCArIGRpYWxvZy5fcm93c1BlclZpZXdwb3J0ICsgMSk7Ci0gICAgICAgIHJldHVybiBb
c3RhcnRJbmRleCwgZW5kSW5kZXhdOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA4N2M0NmFmODViYjRlN2JjNTg0Mzg2YjM0
MmEzYmQ5ZTA3ODU4Mzc5Li5iMjc4MGQ5OGM2YmI3ZDU5Zjc5NTQwMzc5YzUyNmM2YjM5NGE1MDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBA
IC01Niw2ICs1Niw3IEBACiAgICAgPGZpbGU+RXh0ZW5zaW9uUGFuZWwuanM8L2ZpbGU+CiAgICAg
PGZpbGU+RXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzPC9maWxlPgogICAgIDxmaWxlPkV4dGVuc2lv
blNlcnZlci5qczwvZmlsZT4KKyAgICA8ZmlsZT5GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cu
anM8L2ZpbGU+CiAgICAgPGZpbGU+Rm9udFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+R29Ub0xp
bmVEaWFsb2cuanM8L2ZpbGU+CiAgICAgPGZpbGU+SEFSRW50cnkuanM8L2ZpbGU+CkBAIC03NSw3
ICs3Niw2IEBACiAgICAgPGZpbGU+SW5zcGVjdG9yVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5K
YXZhU2NyaXB0Q29udGV4dE1hbmFnZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+SmF2YVNjcmlwdEZv
cm1hdHRlci5qczwvZmlsZT4KLSAgICA8ZmlsZT5KYXZhU2NyaXB0T3V0bGluZURpYWxvZy5qczwv
ZmlsZT4KICAgICA8ZmlsZT5KYXZhU2NyaXB0U291cmNlRnJhbWUuanM8L2ZpbGU+CiAgICAgPGZp
bGU+S2V5Ym9hcmRTaG9ydGN1dC5qczwvZmlsZT4KICAgICA8ZmlsZT5NZXRyaWNzU2lkZWJhclBh
bmUuanM8L2ZpbGU+CkBAIC0xNjIsMTQgKzE2MiwxNCBAQAogICAgIDxmaWxlPlVnbGlmeUpTL3Bh
cnNlLWpzLmpzPC9maWxlPgogICAgIDxmaWxlPmF1ZGl0c1BhbmVsLmNzczwvZmlsZT4KICAgICA8
ZmlsZT5kYXRhR3JpZC5jc3M8L2ZpbGU+Ci0gICAgPGZpbGU+ZWxlbWVudHNQYW5lbC5jc3M8L2Zp
bGU+CiAgICAgPGZpbGU+ZGlhbG9nLmNzczwvZmlsZT4KKyAgICA8ZmlsZT5lbGVtZW50c1BhbmVs
LmNzczwvZmlsZT4KKyAgICA8ZmlsZT5maWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuY3NzPC9m
aWxlPgogICAgIDxmaWxlPmhlYXBQcm9maWxlci5jc3M8L2ZpbGU+CiAgICAgPGZpbGU+aGVscFNj
cmVlbi5jc3M8L2ZpbGU+CiAgICAgPGZpbGU+aW5zcGVjdG9yLmNzczwvZmlsZT4KICAgICA8Zmls
ZT5pbnNwZWN0b3JDb21tb24uY3NzPC9maWxlPgogICAgIDxmaWxlPmluc3BlY3RvclN5bnRheEhp
Z2hsaWdodC5jc3M8L2ZpbGU+Ci0gICAgPGZpbGU+amF2YVNjcmlwdE91dGxpbmVEaWFsb2cuY3Nz
PC9maWxlPgogICAgIDxmaWxlPm5ldHdvcmtMb2dWaWV3LmNzczwvZmlsZT4KICAgICA8ZmlsZT5u
ZXR3b3JrUGFuZWwuY3NzPC9maWxlPgogICAgIDxmaWxlPnBhbmVsRW5hYmxlclZpZXcuY3NzPC9m
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9maWx0
ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9maWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuY3NzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZWQ1
ODBlZmNkNWI1Yjc5NjhiODc0ZGJjYTRiOTEyYjhlYTZhZjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2ZpbHRlcmVkSXRlbVNlbGVjdGlvbkRp
YWxvZy5jc3MKQEAgLTAsMCArMSw0MSBAQAorLmpzLW91dGxpbmUtZGlhbG9nID4gaW5wdXQgewor
ICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDI0cHg7
Cit9CisKKy5qcy1vdXRsaW5lLWRpYWxvZyA+IGRpdi5wcm9ncmVzcyB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHRvcDogMzVweDsKKyAgICBsZWZ0OiAxMHB4OworICAgIHJpZ2h0OiAx
MHB4OworICAgIGhlaWdodDogMnB4OworfQorCisuanMtb3V0bGluZS1kaWFsb2cgPiBkaXYuY29u
dGFpbmVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAzOHB4OworICAgIGJv
dHRvbTogMTBweDsKKyAgICBsZWZ0OiAxMHB4OworICAgIHJpZ2h0OiAxMHB4OworICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDE4NywgMTg3LCAxODcpOwor
ICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworfQorCisuanMtb3V0bGluZS1kaWFsb2cgPiAu
Y29udGFpbmVyID4gZGl2Lml0ZW0geworICAgIHBhZGRpbmc6IDJweDsKKyAgICB3aGl0ZS1zcGFj
ZTogbm93cmFwOworICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOworICAgIG92ZXJmbG93OiBo
aWRkZW47CisgICAgY29sb3I6IHJnYigxMDUsIDEwNSwgMTA1KTsKK30KKworLmpzLW91dGxpbmUt
ZGlhbG9nID4gLmNvbnRhaW5lciA+IGRpdi5pdGVtLnNlbGVjdGVkIHsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMjI0LCAyMjQsIDIyNCk7Cit9CisKKy5qcy1vdXRsaW5lLWRpYWxvZyA+IC5j
b250YWluZXIgPiBkaXYuaXRlbSA+IHNwYW4uaGlnaGxpZ2h0IHsKKyAgICBjb2xvcjogYmxhY2s7
CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA0ZTEyYWU0MzI3YzRhYWM1ZWNiNzMw
Y2QzMDRkZDExYzdlMDE4YjcxLi43NmM0NTRiZmZkOTdlNDAwNmFhNjdiYjU4OGJkYmJjODM1NjZj
ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwKQEAgLTExMyw3ICsxMTMsNiBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRleHRWaWV3ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUZyYW1lLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJjZVZpZXcuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkphdmFT
Y3JpcHRPdXRsaW5lRGlhbG9nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJKYXZhU2NyaXB0U291cmNlRnJhbWUuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNwbGl0Vmlldy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGFiYmVkRWRpdG9y
Q29udGFpbmVyLmpzIj48L3NjcmlwdD4KQEAgLTE4MSw2ICsxODAsNyBAQCBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkhlbHBTY3JlZW4uanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRpYWxvZy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iR29Ub0xp
bmVEaWFsb2cuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IkZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2V0dGluZ3NTY3JlZW4uanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNob3J0Y3V0c1Nj
cmVlbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iSEFSRW50cnkuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9qYXZhU2NyaXB0T3V0bGluZURpYWxvZy5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2phdmFTY3JpcHRPdXRsaW5lRGlhbG9nLmNzcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg4MmY4YTAwNDdkNDk1YjVhMjI0NTcxMGEwOGIy
YzhlOTE5NjA0Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2phdmFTY3JpcHRPdXRsaW5lRGlh
bG9nLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS5qcy1vdXRsaW5lLWRpYWxv
ZyB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMjAlOwotICAgIGxlZnQ6IDIw
JTsKLSAgICB6LWluZGV4OiAxOTAwOwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci0KLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB3aGl0ZXNtb2tlOwotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICAg
IC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBi
b3JkZXItcmFkaXVzOiAxMHB4OwotICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyYXk7Ci0gICAgLXdl
YmtpdC1ib3gtc2hhZG93OiByZ2IoNDAsNDAsNDApIDBweCAwcHggNTBweDsKLQotICAgIGZvbnQt
c2l6ZTogMTFweDsKLSAgICBmb250LWZhbWlseTogJ0x1Y2lkYSBHcmFuZGUnLCBzYW5zLXNlcmlm
OwotfQotCi0uanMtb3V0bGluZS1kaWFsb2cgPiBpbnB1dCB7Ci0gICAgZm9udC1zaXplOiAxMXB4
OwotICAgIHdpZHRoOiAxMDAlOwotICAgIGhlaWdodDogMjRweDsKLX0KLQotLmpzLW91dGxpbmUt
ZGlhbG9nID4gZGl2LnByb2dyZXNzIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9w
OiAzNXB4OwotICAgIGxlZnQ6IDEwcHg7Ci0gICAgcmlnaHQ6IDEwcHg7Ci0gICAgaGVpZ2h0OiAy
cHg7Ci19Ci0KLS5qcy1vdXRsaW5lLWRpYWxvZyA+IGRpdi5jb250YWluZXIgewotICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDM4cHg7Ci0gICAgYm90dG9tOiAxMHB4OwotICAgIGxl
ZnQ6IDEwcHg7Ci0gICAgcmlnaHQ6IDEwcHg7Ci0gICAgb3ZlcmZsb3cteTogYXV0bzsKLSAgICBi
b3JkZXI6IDFweCBzb2xpZCByZ2IoMTg3LCAxODcsIDE4Nyk7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogd2hpdGU7Ci19Ci0KLS5qcy1vdXRsaW5lLWRpYWxvZyA+IC5jb250YWluZXIgPiBkaXYuaXRl
bSB7Ci0gICAgcGFkZGluZzogMnB4OwotICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci0gICAgdGV4
dC1vdmVyZmxvdzogZWxsaXBzaXM7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICBjb2xvcjog
cmdiKDEwNSwgMTA1LCAxMDUpOwotfQotCi0uanMtb3V0bGluZS1kaWFsb2cgPiAuY29udGFpbmVy
ID4gZGl2Lml0ZW0uc2VsZWN0ZWQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMjQsIDIy
NCwgMjI0KTsKLX0KLQotLmpzLW91dGxpbmUtZGlhbG9nID4gLmNvbnRhaW5lciA+IGRpdi5pdGVt
ID4gc3Bhbi5oaWdobGlnaHQgewotICAgIGNvbG9yOiBibGFjazsKLSAgICBmb250LXdlaWdodDog
Ym9sZDsKLX0K
</data>
<flag name="review"
          id="123658"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>